31
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

月500円な自分専用Gitlabを構築する

Last updated at Posted at 2015-05-03

はじめに

自分専用のGitサーバがあれば便利ですよね。
今回はIDCFクラウドの500円VMにGitlabを構築する方法を紹介します。

やること

IDCFクラウドのVMにGitlabを構築します。
ついでにバックアップをIDCFクラウドのオブジェクトストレージにとるようにします。
また、GitlabにはGithubのアカウントでシングルサインオンできるようにします。

  • IDCFクラウドでVM作成
  • クラウドのネットワーク設定
  • オブジェクトストレージAPIキー取得
  • Githubのアプリケーション登録
  • Itamaeでプロビジョニング

準備

次のものを用意しておいてください。

  • IDCFクラウドのアカウント
  • Rubyが実行できる環境

IDCFクラウドのアカウント登録等はめちゃ楽ガイドというのがわかりやすいらしいです。

RubyはGitlabの構築にItamaeを使うので必要になります。

他にも以下のものがあるとGoodです。

  • Githubのアカウント
  • SSL証明書
  • ドメイン

今回、SSL証明書はStartSSLの無料のものを使用しました。

参考: 無料のSSL証明書StartSSLを活用する

仮想マシン作成

では早速、仮想マシンを作成します。

IDCFクラウドのWebコンソールにログインして、GUIでポチポチ進めていきます。

p01.png

今回は以下のVMを作成します。

  • VMタイプ: light.S1
  • イメージ: CentOS 7.0 64-bit
  • ボリューム: Root 15G
  • SSH鍵: 適当なログインできるもの
  • VM name: 適当に

しばらく待つとVMができます。

ネットワーク設定

ネットワーク設定を行います。
今回は無料のソースIPを使用します。

左メニューの「IPアドレス」をクリックして、VMを作成したゾーンと同じゾーンのソースIPをクリックします。

p02.png

IPの設定画面が出てくるので、まずはファイアウォールを設定します。
SSHとHTTPSのポートを解放しましょう。HTTPSを使わない方は、HTTP(80番)を解放してください。

p03.png

次に、ポートフォワードを設定します。
先ほど解放したSSHとHTTPSのポートを、Gitlab用VMへ転送するように設定します。

HTTPS、SSHともに任意のポートで構いませんが、次のことに気をつけてください

  • HTTPSはプライベートポートとパブリックポートが一致するように
  • SSHのプライベートポートは必ず22番に

p04.png

オブジェクトストレージAPIキー取得

では次にバックアップ用をオブジェクトストレージにとるため、オブストのAPIキーを取得します。

左上のメニューから「オブジェクトストレージ」をクリックしてください。

p05.png

初めての方は契約画面っぽいのが出てくると思いますが、従量(10Tパックじゃない方)を選択してください。
50GBまでは無料になります。

まずは「APIユーザー追加」をクリックします。

P06.png

適当なユーザ名を入力して、「OK」をクリックしてください。

p07.png

そうするとAPIキーとシークレットキーが表示されます。
この2つのキーはあとで使います。

p08.png

Githubのアプリケーション登録

ここでは、GithubのアカウントでGitlabにシングルサインオンできるようにGithubへアプリケーションの登録を行います。
シングルサインオンが必要ない場合はスキップしてください。

まず、GithubにログインしてSettingsのApplicationsに行きます。
そして、「Register new application」をクリックしてください。

p09.png

登録フォームのHomepage URLとAuthentication callback URLにGitlabのURLを入力してください。
特にドメインなどなければ、https://210.xxx.xxx.xxx/のようなIPアドレスでも構いません。
この場合、ネットワーク設定で設定したIPがここに入ります。

p10.png

登録が完了したら、このようにClient IDとClient Secretが表示されます。
これらはあとで使います。

p11.png

Itamaeでプロビジョニング

ではでは、いよいよGitlabの構築を行います。
ここからはコマンドでの操作になります。

まず、Gitlab用のレシピをGithubからクローンします。

git clone https://github.com/nownabe-infra/gitlab.git

次に、bundle installします。

cd gitlab
bundle install --path vendor/bundle

node.ymlに色々と設定を書いていきます。
まずはサンプルファイルをコピーしましょう。

cp node.yml.sample node.yml

node.ymlを編集します。

node.yml
base:
  users:
    nownabe: # CentOSに作成するユーザ名
      github_user: nownabe # Githubのユーザ名(公開鍵を取得する)
      groups: wheel        # sudoできるように
      password: $6$...     # パスワードハッシュ(作り方は後述)

  mailto:
    root: nownabe@foobar.baz # rootユーザ宛のメールを転送するアドレス

gitlab:
  external_url: https://gitlab.foobar.baz  # GitlabのURL。HTTPSを使わない場合はhttp://にする
  gitlab_rails:
    time_zone: "Asia/Tokyo"
    omniauth_enabled: true                   # omniauthはシングルサインオンのための設定です
    omniauth_allow_single_sign_on: true      # 必要ない場合はまるっと削除してください
    omniauth_block_auto_created_users: true  # サンプルではGithub連携になっています
    omniauth_providers:                      # GoogleやTwitterとも連携できるようになってます。
      -                                      # https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/integration/omniauth.md
        name: github
        app_id: YOUR_CLIENT_ID         # Githubで取得したClient ID
        app_secret: YOUR_CLIENT_SECRET # Githubで取得したClient Secret
        url: https://github.com/
        args: { scope: "user:email" }
  nginx:
    redirect_http_to_https: true    # HTTPSを使わない場合は削除
    redirect_http_to_https_port: 80 # HTTPSを使わない場合は削除
  backup:
    access_key: YOUR_API_KEY    # オブジェクトストレージのAPIキー
    secret_key: YOUR_SECRET_KEY # オブジェクトストレージのシークレットキー
    bucket: YOUR_BUCKET         # バックアップを保存するバケット名
    exipre: 7                   # バックアップを保存する日数

パスワードハッシュは、次のコマンドで生成できます。

bundle exec rake itamae:mkpasswd

HTTPSを使用する場合、証明書と秘密鍵をそれぞれ、ssl/gitlab.crtssl/gitlab.keyに置いてください。

node.ymlの準備ができたら、まずはDry runします。
IPには設定したソースIP、ポートは設定したSSHのポートを指定します。

bundle exec itamae ssh -h ${YOUR_IP} -p ${YOUR_PORT} -u root -y node.yml recipe.rb --dry-run

問題がなさそうなら、実際にItamaeでプロビジョンします。

bundle exec itamae ssh -h ${YOUR_IP} -p ${YOUR_PORT} -u root -y node.yml recipe.rb

Gitlabログイン

プロビジョニングが終わりGitlabのURLにアクセスすると、こんな画面が出てきます。

p12.png

Sign inしろってことなので、Sign in with Githubをクリックして、Githubのアカウントでサインインします。
すると、次はこんなメッセージが表示されます。

スクリーンショット 2015-05-03 13.28.22.png

誰かが勝手にアカウントを作成してサインインできないように、Gitlabにサインインするには管理者での有効化が必要になっています。
なので、管理者でサインインして有効化しましょう。
管理者のアカウントは、

  • Username: root
  • Password: 5iveL!fe

です。
初期パスワードを変更して再度サインインを求められるので、ユーザ名rootと新しいパスワードでサインインし直します。

サインインできたら、右上の「Admin Area」、左メニューの「Users」、「Blocked」と辿ります。
するとGithubでシングルサインオンしたユーザが表示されるので、「Unblock」をクリックしてください。

p13.png

これでアカウントが有効化されたので、rootユーザはサインアウトして、もう1度Sign in with Githubしてみましょう。

無事にサインインできたでしょうか?

これで500円Gitlabの完成です!

p14.png

おまけ

バックアップも問題なければとれていると思います。
オブストのコンパネで確認してみてください。

p15.png

31
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?