GitLabをインストールする方法(registry、pages)
概要
GitLab omnibusをLinuxにインストールしました。その際に、GitLabのregistryやpagesも使えるようにしたので、その設定方法についても含めて、インストール方法を説明します。
環境
- Debian 11.6
- GitLab 15.8.0
GitLabについて
GitLabは、GitHubのようなGitのリポジトリをホスティングできるソフトウェアです。GitLab.comという、GitLab社が公式に提供しているWebサービスもありますが、自分自身でサーバーを用意してGitLabをインストールして使うこともできます。このようなインストール可能なものをGitLab omnibusと呼ぶ場合もあります。
GitLabにはいくつかエディションがあり、それによって無料であったり有料であったりします。私が利用しているのは、無料で利用できるGitLabのCoreエディションです。
そのため、ここでは無料版のGitLabをインストールする方法について紹介します。
GitLabのインストール
公式で提供されているパッケージを利用すると、GitLabを簡単にインストールできます。今回もこのパッケージを利用してインストールします。
基本的には、公式サイトに書かれている情報を参考にインストールすればうまくいきます。私はDebianにインストールしたので、Debianへインストールする方法について次に載せます。同じaptパッケージを利用しているUbuntuも同様の方法でインストール可能です。
最初に必要なパッケージをインストールします。
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates perl
次に、GitLabのパッケージのリポジトリを登録します。
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
最後にGitLabをインストールします。GitLabのパッケージ名はgitlab-eeです。
sudo apt install gitlab-ee
これで、GitLabのインストールは終わりです。
GitLabの設定
実際にGitLabを動作させるには、いくつかの設定が必要です。設定ファイルは/etc/gitlab/gitlab.rb
にあるので、それを編集します。
最低限、編集する場所はexternal_urlです。GitLabにアクセスするためのドメインを指定します。
external_url 'https://gitlab.example.com'
HTTPSによる接続を受け付けるため、httpsを先頭につけています。GitLabでは自動でLet’s Encryptを利用してHTTPS接続可能にするため、設定前には、DNSを修正してドメインからGitLabを動かすサーバーを指し示すようにしておきます。
GitLabの最低限の機能を利用するだけであれば、これで設定は終わりです。私の場合はこのほかに、メールの設定もしました。メール設定をすることで、GitLabで何かした際にメールが送られるようになります。私は、メールの送信サーバーとしてGmailを利用しているので、それについての設定例を次に載せました。
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "メールアドレス"
gitlab_rails['smtp_password'] = "パスワード"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "plain"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
さらに、GitLabの機能であるGitLab Registryを利用するために設定を修正しました。GitLab Registryは、Dockerのイメージを管理できるサービスです。Docker Hubのようなサービスといえば分かりやすいかもしれません。registry_external_urlにGitLabとは別のドメインをURLとして指定する必要があります。
registry_external_url 'https://registry.example.com'
さらに、GitLab Pagesを利用できるようにします。GitLab PagesはGitLab上でHTML等をホスティングし、Webサイトを構築できるサービスです。GitHubでいうところのGitHub Pagesのようなサービスです。
Webサイト毎にサブドメインを設定できるようにしたり、そのドメインにHTTPSを設定できるようにしたり、細かい設定が可能です。今回は、指定したドメインのワイルドカードでHTTPS接続できるように設定しました。https://<namespace>.pages.example.com/<project_slug>
のようにアクセスできます。
pages_external_url 'https://pages.example.com'
gitlab_pages['enable'] = true
pages_nginx['redirect_http_to_https'] = true
pages_nginx['ssl_certificate'] = '/etc/gitlab/ssl/pages.example.com.crt'
pages_nginx['ssl_certificate_key'] = '/etc/gitlab/ssl/pages.example.com.key'
pages_external_urlには、GitLabやGitLab Registryとは異なるドメインを指定します。さらに、HTTPS接続できるようにssl_certificateやssl_certificate_keyで、ワイルドカードに対応した証明書を指定してします。もしもHTTPS接続をしない場合は、1行目と2行目のみ記述すれば大丈夫です。
これで、設定は終わりです。
GitLabの実行
設定を反映させます。サーバーで次のコマンドを実行します。
sudo gitlab-ctl reconfigure
これで、external_urlに設定したURLで、GitLabにアクセス可能です。
GitLabでは、最初から管理者のアカウントが用意されています。このアカウントは、アカウント名がrootでパスワードはサーバー上のファイルに記述されています。次のコマンドなどで確認可能です。
cat /etc/gitlab/initial_root_password
rootアカウントでログインした後は、新しくアカウントを作成したり、rootアカウントを修正して自分用のアカウントにしたりして使いやすいように設定しましょう。
これで、GitLabのインストールは終わりです。GitLab RegistryやGitLab Pagesが有効かどうかは、GitLabの管理者用メニューから確認可能です。Featuresのところの、「Container Registry」や「Gitlab Pages」にチェックがあれば設定されています。
さいごに
GitLabのインストールでは、自動でLet’s Encryptを利用して、HTTPS通信可能にしてくれるなど、かなり楽に設定可能になっています。
しかし、設定のためのgitlab.rbファイルのサイズがとても大きく、設定する場所が分かりにくいとも思いました。
GitLabをインストールして動かす際の参考になれば嬉しいです。