Ubuntu 20.04にGitLabをインストールおよび設定する方法
紹介文
GitLabは、主にGitリポジトリをホストするために使用されるオープンソースのアプリケーションであり、イシュートラッキングなどの開発に関連する追加機能も備えています。独自のインフラストラクチャを使用してホストされるように設計されており、開発チームのための内部リポジトリストア、ユーザーとの公開した方法、またはコントリビューターが独自のプロジェクトをホストする手段としての柔軟性を提供しています。
このガイドでは、GitLabプロジェクトによって、Ubuntu 20.04サーバーにGitLab Community Editionをインストールおよび設定する方法を学ぶことができます。最小限のインストールメカニズムを使用して、自分のハードウェア上にGitLabのインスタンスを作成することができます。
前提条件
このチュートリアルに沿って進むためには、次のものが必要です。
- An Ubuntu 20.04 server with a non-root sudo user and basic firewall. To set this up, follow our Ubuntu 20.04 initial server setup guide.
公開されているGitLabのハードウェア要件では、最低限サーバーを使用することをお勧めします。
- 4 cores for your CPU
- 4GB of RAM for memory
一部のスワップスペースをRAMの代わりに使うことで何とか凌ぐことができるかもしれませんが、おすすめはしません。このガイドの以下の例では、これらの最小限のリソースを使用します。
- A domain name pointed at your server. For more information, read our documentation on how to get started with DNS on Silicon Cloud. This tutorial will use your_domain as an example, but be sure to replace this with your actual domain name.
ステップ1 – 依存関係のインストール
GitLabをインストールする前に、インストール中および継続的に使用するソフトウェアをインストールすることが重要です。必要なソフトウェアはUbuntuのデフォルトのパッケージリポジトリからインストールできます。
最初に、ローカルパッケージインデックスを更新してください。
- sudo apt update
その後、このコマンドを入力して依存関係をインストールしてください。
- sudo apt install ca-certificates curl openssh-server postfix tzdata perl
おそらく、既にこのソフトウェアの一部はインストールされているでしょう。ポストフィックスのインストールでは、プロンプトで「インターネットサイト」を選択してください。次の画面では、サーバーのドメイン名を入力し、システムがメールを送信する方法を設定してください。
依存関係がインストールされたので、GitLabをインストールする準備が整いました。
ステップ2 — GitLabのインストール
依存関係が整っている状態で、GitLabをインストールすることができます。このプロセスでは、インストールスクリプトを使用してシステムをGitLabリポジトリで構成します。
最初に、/tmpディレクトリに移動してください。 (Saisho ni, /tmp direkutori ni idō shite kudasai.)
- cd /tmp
その後、インストールスクリプトをダウンロードしてください。
- curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
ダウンロードされたスクリプトを自由に確認してください。それが行うアクションに慣れていることを確認してください。また、GitLabのインストール手順には、スクリプトのホストバージョンもありますので、そちらも参照できます。
- less /tmp/script.deb.sh
スクリプトの安全性に納得したら、インストーラーを実行してください。
- sudo bash /tmp/script.deb.sh
スクリプトは、GitLabが管理するリポジトリを使用するようにサーバーをセットアップします。これにより、他のシステムパッケージに使用しているパッケージ管理ツールを使用してGitLabを管理できます。これが完了すると、aptを使用して実際のGitLabアプリケーションをインストールできます。
- sudo apt install gitlab-ce
システムには必要なコンポーネントがインストールされ、完了までに時間がかかる場合があります。
ステップ3 – ファイアウォールのルールを調整します。
GitLabを設定する前に、ファイアウォールのルールが十分に緩和されていることを確認する必要があります。前提条件でリンクされたガイドに従っていれば、すでにufwファイアウォールが有効になっているはずです。
「実行して、アクティブなファイアウォールの現在の状態を確認してください。」
- sudo ufw status
Status: active To Action From — —— —- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
現在のルールではSSHトラフィックが許可されていますが、他のサービスへのアクセスは制限されています。GitLabはウェブアプリケーションなので、HTTPアクセスを許可する必要があります。また、GitLabはLet’s Encryptから無料のTLS/SSL証明書をリクエストして有効化する機能を利用するため、HTTPSアクセスも許可してください。
HTTPとHTTPSのポートマッピングのためのプロトコルは、/etc/servicesファイルに記載されていますので、名前でそのトラフィックを許可することができます。もし既にOpenSSHのトラフィックを許可していない場合は、そのトラフィックも許可してください。
- sudo ufw allow http
- sudo ufw allow https
- sudo ufw allow OpenSSH
少なくともこれら2つのサービスへのアクセスを許可したことを確認するために、再度ufwの状態を確認できます。
- sudo ufw status
Status: active To Action From — —— —- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6)
この出力は、GitLabのWebインターフェースがアプリケーションを設定するとアクセス可能になっていることを示しています。
ステップ4 – GitLabの設定ファイルの編集
アプリケーションを使用する前に、設定ファイルを更新し、再構成コマンドを実行する必要があります。まず、お好みのテキストエディタでGitLabの設定ファイルを開きます。この例ではnanoを使用しています。
- sudo nano /etc/gitlab/gitlab.rb
外部URLの設定行を検索してください。ドメインに合わせて更新し、httpをhttpsに変更して、Let’s Encrypt証明書で保護されたサイトにユーザーが自動的にリダイレクトされるようにしてください。
「/etc/gitlab/gitlab.rb」
...
## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
##!
##! Note: During installation/upgrades, the value of the environment variable
##! EXTERNAL_URL will be used to populate/replace this value.
##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP
##! address from AWS. For more details, see:
##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
external_url 'https://your_domain'
...
次に、letsencrypt[‘contact_emails’]の設定を見つけてください。nanoを使用している場合は、CTRL+Wを押すことで検索プロンプトを有効にすることができます。プロンプトにletsencrypt[‘contact_emails’]と入力し、ENTERキーを押してください。この設定は、Let’s Encryptプロジェクトがドメインに問題がある場合に連絡するために使用するメールアドレスのリストを定義します。問題が発生した場合に自分自身に通知するために、これをコメント解除して記入することが推奨されています。
letsencrypt['contact_emails'] = ['sammy@example.com']
変更作業が終了したら、ファイルを保存して閉じてください。もしnanoを使用している場合は、CTRL+X、Y、ENTERの順に押すことでこれを行うことができます。
GitLabを再設定するために、以下のコマンドを実行してください。
- sudo gitlab-ctl reconfigure
次の日本語訳の一つを提供します:
このプロセスでは、サーバーに関する情報を基に、GitLabの初期設定を行います。完全に自動化されているため、何のプロンプトにも回答する必要はありません。また、ドメインに対してLet’s Encrypt証明書も自動的に設定されます。
ステップ5 — ウェブインターフェースを通じて初期設定を実行します。
GitLabが実行されている場合、Webインターフェースを通じてアプリケーションの初期設定を行うことができます。
初めてログインする
ウェブブラウザでご利用のGitLabサーバーのドメイン名にアクセスしてください。
https://your_domain
初めての訪問時には、ログインページでお出迎えいたします。
![GitLab initial login page](https://cdn.silicloud.com/blog-img/blog/img/656460ebdaa94e2bdf7b2e26/62-0.png)
GitLabは、あなたのために初期の安全なパスワードを生成します。それは、管理者としてのsudoユーザーとしてアクセスできるフォルダに保存されています。
- sudo nano /etc/gitlab/initial_root_password
「/etc/gitlab/initial_root_password」
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the firs$
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
Password: YOUR_PASSWORD
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
ログインページに戻り、以下の情報を入力してください。
- Username: root
- Password: [the password listed on /etc/gitlab/initial_root_password]
これらの値をフィールドに入力して、「ログイン」ボタンをクリックしてください。それにより、アプリにサインインされ、プロジェクトの追加を開始するように促されるランディングページに移動します。
![Your GitLab dashboard after logging in as root.](https://cdn.silicloud.com/blog-img/blog/img/656460ebdaa94e2bdf7b2e26/70-0.png)
あなたはGitLabインスタンスを細かく調整することができます。
パスワードの更新
ログイン後すぐに行うべきことの一つは、パスワードを変更することです。この変更を行うためには、ナビゲーションバーの右上隅にあるアイコンをクリックし、「プロフィールの編集」を選択してください。
![Click on the user icon and select 'Edit Profile' to enter the Settings page](https://cdn.silicloud.com/blog-img/blog/img/656460ebdaa94e2bdf7b2e26/74-0.png)
その後、ユーザー設定ページに入ります。左側のナビゲーションバーから「パスワード」を選択し、GitLab が生成したパスワードを安全なパスワードに変更してから、更新作業が終了したら「パスワード保存」ボタンをクリックしてください。
![The Password setting is in the left navigation bar. You can update your password from here.](https://cdn.silicloud.com/blog-img/blog/img/656460ebdaa94e2bdf7b2e26/76-0.png)
ログイン画面に戻り、パスワードが変更されたことを通知するメッセージが表示されます。GitLabのインスタンスに再ログインするために新しいパスワードを入力してください。
![After changing your password, you'll be asked to log back in with your updated password.](https://cdn.silicloud.com/blog-img/blog/img/656460ebdaa94e2bdf7b2e26/78-0.png)
プロフィール設定の調整
GitLabはいくつかの合理的なデフォルト値を選択しますが、ソフトウェアの使用を始めると通常は適切ではありません。
必要な修正を行うには、ナビゲーションバーの右上隅にあるユーザーアイコンをクリックし、プロフィールの編集を選択してください。
「管理者」と「admin@example.com」という名前とメールアドレスを、より正確なものに調整することができます。選んだ名前は他のユーザーに表示され、メールアドレスはデフォルトのアバター検出、通知、インターフェースを通じたGitの操作などに使用されます。
![Update your Name and Email within the Edit Profile settings](https://cdn.silicloud.com/blog-img/blog/img/656460ebdaa94e2bdf7b2e26/83-0.png)
更新を終えたら、下部の「プロフィール設定の更新」ボタンをクリックしてください。変更を確認するために、パスワードの入力を求められます。
提供されたアドレスに確認メールが送信されます。メール内の指示に従ってアカウントを確認し、GitLabを使用できるようにしてください。
アカウント名を変更する
次に、左側のナビゲーションバーから「アカウント」を選択してください。
![GitLab Account selection in the left navigation bar](https://cdn.silicloud.com/blog-img/blog/img/656460ebdaa94e2bdf7b2e26/88-0.png)
ここでは、二段階認証を有効にしたり、ユーザー名を変更したりすることができます。最初の管理アカウントのデフォルトの名前は「root」となっていますが、このアカウント名は既知のものですので、別の名前に変更する方が安全です。管理権限は引き続き保持しますが、変わるのは名前だけです。ご希望のユーザー名で「root」を置き換えてください。
![Change your username from 'root' into something you prefer.](https://cdn.silicloud.com/blog-img/blog/img/656460ebdaa94e2bdf7b2e26/90-0.png)
変更を行うために、ユーザー名の更新ボタンをクリックしてください。その後、変更の確認が求められます。
次回GitLabにログインする際は、新しいユーザー名を使用することを忘れないでください。
アカウントにSSHキーを追加する
あなたはGitを使用してGitLabのプロジェクトとやり取りするために、SSHキーを有効にすることができます。これを行うためには、SSH公開鍵をGitLabアカウントに追加する必要があります。
左のナビゲーションバーから、「SSH キー」を選択してください。 (Hidari no nabigeeshon ba kara, “SSH kī” o sentaku shite kudasai.)
![The SSH Keys page where you can enter your SSH public key.](https://cdn.silicloud.com/blog-img/blog/img/656460ebdaa94e2bdf7b2e26/96-0.png)
もしすでにローカルコンピュータ上でSSHキーペアが作成されている場合、公開鍵を表示するには以下を入力してください。
- cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
このテキストをコピーして、GitLabインスタンス内のキーテキストボックスに入力してください。
もし、代わりに別のメッセージが表示される場合、まだマシンにSSHキーペアが設定されていません。
cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory
もし、それが事実なら、次のコマンドを入力することでSSHキーペアを作成することができます。
- ssh-keygen
デフォルトを受け入れ、必要に応じてパスワードを設定してキーをローカルに保護する。
Generating public/private rsa key pair. Enter file in which to save the key (/home/sammy/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/sammy/.ssh/id_rsa. Your public key has been saved in /home/sammy/.ssh/id_rsa.pub. The key fingerprint is: SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 sammy@gitlab.docsthat.work The key’s randomart image is: +—[RSA 2048]—-+ | ..%o==B| | *.E =.| | . ++= B | | ooo.o . | | . S .o . .| | . + .. . o| | + .o.o ..| | o .++o . | | oo=+ | +—-[SHA256]—–+
これがあると、このコマンドを入力することで先ほどの例と同じように公開鍵を表示することができます。
- cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
この文章のブロックを出力に挿入し、GitLabインスタンスの「キーコード」テキストボックスに入力してください。分かりやすいタイトルを付けて、「キーの追加」ボタンをクリックしてください。
現在、GitLabのプロジェクトやリポジトリをローカルマシンから管理できます。GitLabアカウントの認証情報を入力せずに操作できます。
ステップ6:公開サインアップの制限または無効化
現在の設定では、GitLabのランディングページを訪れると誰でもアカウントを作成することが可能です。これは、公開プロジェクトをホストしたい場合には望ましい状態かもしれません。しかし、多くの場合、より制限のある設定が望ましいです。
最初に、トップナビゲーションバーのハンバーガーメニューをクリックして管理エリアに移動し、ドロップダウンから「管理者」を選択します。
![Press the hamburger menu in the top navigation bar and select 'Admin' to proceed](https://cdn.silicloud.com/blog-img/blog/img/656460ebdaa94e2bdf7b2e26/115-0.png)
左側のナビゲーションバーから「設定」を選択してください。
![Select 'Settings' from the administrative navigation bar](https://cdn.silicloud.com/blog-img/blog/img/656460ebdaa94e2bdf7b2e26/117-0.png)
あなたはGitLabインスタンスのグローバル設定に移動されます。ここで、新しいユーザーがサインアップできるかどうかやアクセスレベルに影響を与えるさまざまな設定を調整することができます。
サインアップの無効化
完全にサインアップを無効にする場合は、サインアップ制限のセクションまでスクロールし、オプションを表示するために「拡大」を押してください。
次に、サインアップの有効化チェックボックスを選択解除してください。
![GitLab deselect sign-ups enabled](https://cdn.silicloud.com/blog-img/blog/img/656460ebdaa94e2bdf7b2e26/122-0.png)
変更を行った後、必ず保存ボタンをクリックしてください。
GitLabのランディングページから、サインアップの部分が削除されました。
ドメインによる新規登録の制限
もし組織内でGitLabを使用していて、ドメインに関連付けられたメールアドレスを提供している場合、完全に無効にする代わりに、ドメインによる新規登録の制限ができます。
「サインアップ制限」セクションで、サインアップ時に確認メールを送信するボックスを選択してください。これにより、ユーザーはメールの確認後にのみログインできるようになります。
次に、サインアップボックスのホワイトリストドメインに、あなたのドメインまたは複数のドメインを追加してください。1行に1つのドメインを指定することができます。ワイルドカードドメインを指定するために、アスタリスク「*」を使用することもできます。
![Restrict sign-ups by domain](https://cdn.silicloud.com/blog-img/blog/img/656460ebdaa94e2bdf7b2e26/129-0.png)
作業が完了したら、「変更を保存する」ボタンをクリックしてください。
GitLabのランディングページから、サインアップセクションが現在削除されました。
プロジェクトの作成を制限する
デフォルトでは、新しいユーザーは最大10プロジェクトを作成することができます。外部からの新しいユーザーへの可視性と参加を許可したいが、新しいプロジェクトの作成へのアクセスを制限したい場合は、アカウントと制限設定セクションで設定することができます。
中に入って、既定のプロジェクト制限を0に変更すると、新しいユーザーがプロジェクトを作成することが完全に無効になります。
![From the 'Account and limit' setting, you can set project limits to zero](https://cdn.silicloud.com/blog-img/blog/img/656460ebdaa94e2bdf7b2e26/135-0.png)
新しいユーザーは手動でプロジェクトに追加することができ、他のユーザーが作成した内部または公開プロジェクトにアクセスすることができます。
アップデート後、変更内容を保存するために「保存」ボタンをクリックしてください。
新しいユーザーはアカウントを作成できるようになりますが、プロジェクトを作成することはできません。
Let’s Encrypt証明書の更新
デフォルトでは、GitLabはLet’s Encrypt証明書を毎日の深夜に更新する予定タスクを持っており、その正確な分はexternal_urlに基づいて設定されます。これらの設定は、/etc/gitlab/gitlab.rbファイルで変更することができます。
たとえば、毎週7日目の12時30分に更新したい場合、それを設定できます。まず、設定ファイルに移動してください。
- sudo nano /etc/gitlab/gitlab.rb
その後、ファイル内の次の行を見つけて、# を削除し、以下の内容で更新してください。
「/etc/gitlab/gitlab.rb」
...
################################################################################
# Let's Encrypt integration
################################################################################
# letsencrypt['enable'] = nil
letsencrypt['contact_emails'] = ['sammy@digitalocean'] # This should be an array of email addresses to add as contacts
# letsencrypt['group'] = 'root'
# letsencrypt['key_size'] = 2048
# letsencrypt['owner'] = 'root'
# letsencrypt['wwwroot'] = '/var/opt/gitlab/nginx/www'
# See http://docs.gitlab.com/omnibus/settings/ssl.html#automatic-renewal for more on these settings
letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"
...
letsencrypt[‘auto_renew’]をfalseに設定することで、自動更新も無効にすることができます。
...
letsencrypt['auto_renew'] = false
...
自動更新が設定されていれば、サービスの中断を心配する必要はありません。
結論
あなたは現在、独自のサーバーで使用可能なGitLabインスタンスを持っています。新しいプロジェクトのインポートや作成を始め、チームに適切なアクセスレベルを設定することができます。GitLabは定期的に新機能を追加し、プラットフォームのアップデートも行っているため、改善や重要なお知らせについてはプロジェクトのホームページをチェックして最新情報を確認してください。