Ubuntu18.04にGitLabをインストールして設定する方法

イントロダクション

GitLabは、主にGitリポジトリをホストするために使用されるオープンソースアプリケーションであり、課題追跡などの追加の開発関連機能も備えています。GitLabは自分自身のインフラストラクチャを使用してホストされるように設計されており、開発チームの内部リポジトリストアとして、ユーザーとのパブリックなインターフェースとして、または貢献者が自分自身のプロジェクトをホストする手段としての柔軟性を提供しています。

以下の文章を日本語で言い換えると、以下のようになります:
「GitLabプロジェクトでは、最小限のインストールメカニズムを使用して、独自のハードウェア上にGitLabのインスタンスを作成することができます。このガイドでは、Ubuntu 18.04サーバーにGitLab Community Editionをインストールし、設定する方法を学ぶことができます。」

前提条件

このチュートリアルに従うためには、次のものが必要です:

  • An Ubuntu 18.04 server with a non-root sudo user and basic firewall. To set this up, follow our Ubuntu 18.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のデフォルトのパッケージリポジトリからインストールできます。

最初に、ローカルのパッケージインデックスを更新してください。

  1. sudo apt update

 

次に、このコマンドを入力して依存関係をインストールしてください。

  1. sudo apt install ca-certificates curl openssh-server postfix tzdata perl

 

おそらく、すでにこのソフトウェアの一部がインストールされているかもしれません。郵便配送でインターネットサイトを選択してください。次の画面で、サーバーのドメイン名を入力し、システムがメールを送信する方法を設定してください。

いま依存関係をインストールできたので、GitLabをインストールする準備が整いました。

ステップ2 — GitLabのインストール

依存関係が整っていると、GitLabをインストールすることができます。このプロセスでは、インストールスクリプトを使用してシステムをGitLabリポジトリで設定します。

最初に、/tmpディレクトリに移動してください。

  1. cd /tmp

 

その後、インストールスクリプトをダウンロードしてください。

  1. curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

 

ダウンロードされたスクリプトが実行するアクションについて安心できるように、遠慮なくスクリプトを検査してください。また、スクリプトのホストされたバージョンはGitLabのインストール手順で見つけることもできます。

  1. less /tmp/script.deb.sh

 

スクリプトの安全性に満足したら、インストーラーを実行してください。

  1. sudo bash /tmp/script.deb.sh

 

以下のように日本語で言い換えます(1つのオプション):
スクリプトはサーバーを設定し、GitLabが管理するリポジトリを使用できるようにします。これにより、他のシステムパッケージに使用しているパッケージ管理ツールでGitLabを管理することができます。これが完了したら、実際のGitLabアプリケーションをaptでインストールできます。

  1. sudo apt install gitlab-ce

 

以下は日本語での一つの言い方です:「これにより、必要なコンポーネントがシステムにインストールされ、完了までに時間がかかる場合があります。」

ステップ3 – ファイアウォールのルールを調整する

GitLabを設定する前に、ファイアウォールルールがウェブトラフィックを許可するだけの柔軟性があることを確認する必要があります。前提条件としてリンクされているガイドに従っていれば、既に有効なufwファイアウォールがあるはずです。

現在アクティブなファイアウォールの状態を確認するには、次のコマンドを実行してください。

  1. sudo ufw status

 

Output

Status: active To Action From — —— —- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

現在のルールでは、SSHトラフィックを通過させることができますが、他のサービスへのアクセスは制限されています。GitLabはWebアプリケーションなので、HTTPアクセスを許可する必要があります。また、GitLabが自動的にLet’s Encryptから無料のTLS/SSL証明書を取得して有効化する機能を利用するため、HTTPSアクセスも許可してください。

HTTPとHTTPSのためのポートマッピングのプロトコルは、/etc/servicesファイルに利用できますので、そのトラフィックを名前で許可することができます。もし既にOpenSSHのトラフィックが有効にされていない場合は、そのトラフィックを許可する必要があります。

  1. sudo ufw allow http
  2. sudo ufw allow https
  3. sudo ufw allow OpenSSH

 

少なくともこれら2つのサービスにアクセスを許可したことを確認するために、再度ufwの状態を確認できます。

  1. sudo ufw status

 

Output

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のウェブインターフェースにアクセスできることを示しています。

ステップ4 – GitLabの設定ファイルを編集する

アプリケーションを使用する前に、設定ファイルを更新し、再構成コマンドを実行する必要があります。最初に、好きなテキストエディタでGitLabの設定ファイルを開きます。この例ではnanoを使用しています。

  1. sudo nano /etc/gitlab/gitlab.rb

 

外部URLの設定行を検索してください。それをドメインに合わせて更新し、httpをhttpsに変更してください。これにより、Let’s Encrypt証明書で保護されたサイトに自動的にユーザーがリダイレクトされるようにしてください。

「/etc/gitlab/gitlab.rb」というファイルを日本語で言い換えると、「/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プロジェクトがドメインに問題がある場合に連絡するために使用する電子メールアドレスのリストを定義します。問題が発生する可能性があるため、これをアンコメントして記入することが推奨されます。

以下の内容を日本語で言い換えます(1つのオプションのみ):
「/etc/gitlab/gitlab.rb」
letsencrypt['contact_emails'] = ['sammy@example.com']

変更を完了したら、ファイルを保存して閉じてください。nanoを使用している場合は、CTRL+X、Y、ENTERを押すことでこれを行うことができます。

GitLabを再設定するために、次のコマンドを実行してください。

  1. sudo gitlab-ctl reconfigure

 

次のように日本語で言い換えます:
サーバーに関する情報を元に、GitLabの初期化が行われます。これは完全に自動化されたプロセスであり、追加の確認の必要はありません。また、ドメインのためにLet’s Encrypt証明書も自動で設定されます。

ステップ5 – ウェブインターフェースを通じた初期設定の実行

GitLabを実行している場合、ウェブインターフェースを通じてアプリケーションの初期設定を行うことができます。

初めてログインする

ウェブブラウザで自分のGitLabサーバーのドメイン名を訪れてください。

https://your_domain

最初の訪問時には、ログインページでお出迎えされます。 (Saisho no hōmon j

GitLab initial login page

GitLabは、あなたのために初期の安全なパスワードを生成します。それは管理者のsudoユーザーとしてアクセスできるフォルダに保存されています。

  1. sudo nano /etc/gitlab/initial_root_password

 

/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.

あなたは今、GitLabのインスタンスを微調整することができます。

パスワードの更新

ログイン後に行うべき最初のことの一つは、パスワードを変更することです。この変更を行うためには、ナビゲーションバーの右上隅にあるアイコンをクリックし、「プロフィールの編集」を選択してください。

Click on the user icon and select 'Edit Profile' to enter the Settings page

その後、ユーザー設定ページに入ります。左側のナビゲーションバーから「パスワード」を選択し、GitLabで生成されたパスワードを安全なパスワードに変更し、更新が完了したら「保存」ボタンをクリックしてください。

The Password setting is in the left navigation bar. You can update your password from here.

パスワードが変更されたことを通知するメッセージと共にログイン画面に戻されます。GitLabインスタンスに再ログインするために、新しいパスワードを入力してください。

After changing your password, you'll be asked to log back in with your updated password.

プロフィール設定の調整

GitLabはいくつかの妥当なデフォルト値を選択しますが、通常はソフトウェアの使用を開始するとこれらは適切ではありません。

必要な修正を行うには、ナビゲーションバーの右上にあるユーザーアイコンをクリックし、プロフィールの編集を選択してください。

「Administrator」と「admin@example.com」という名前とメールアドレスをより正確なものに変更することができます。選択した名前は他のユーザーに表示され、メールアドレスはデフォルトのアバター検出、通知、インターフェースを通じたGitのアクションなどに使用されます。

Update your Name and Email within the Edit Profile settings

更新内容が完了したら、下部にある「プロフィール設定を更新する」ボタンをクリックしてください。変更を確定するためにパスワードの入力が求められます。

アドレスを提供された方には、確認メールが送信されます。メール内の指示に従って、アカウントを確認し、GitLabを利用できるようにしてください。

アカウント名の変更を行う

次に、左のナビゲーションバーで「アカウント」を選択してください。

GitLab Account selection in the left navigation bar

ここでは、二段階認証を有効化し、ユーザー名を変更することができます。最初の管理アカウントはデフォルトで「root」という名前が付けられていますが、セキュリティ上、この名前を別のものに変更する方が安全です。管理権限は引き続き持っていますが、変更されるのは名前だけです。お好みのユーザー名で「root」を置き換えてください。

Change your username from 'root' into something you prefer.

変更を行うために「ユーザー名の更新」ボタンをクリックしてください。その後、変更を確認するように求められます。

次回GitLabにログインする際は、新しいユーザー名を使用することを忘れずにお願いします。

アカウントにSSHキーを追加する。

GitとSSHキーを使用してGitLabのプロジェクトと対話することができます。これを行うには、SSHの公開鍵をGitLabアカウントに追加する必要があります。

左側のナビゲーションバーで、「SSHキー」を選択してください。

The SSH Keys page where you can enter your SSH public key.

もしすでにローカルコンピュータ上でSSHキーペアが作成されている場合、次のコマンドを入力することで公開鍵を表示することができます。

  1. cat ~/.ssh/id_rsa.pub

 

Output

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

このテキストをコピーして、GitLabインスタンス内のキーテキストボックスに入力してください。

もし違ったメッセージが表示される場合、まだマシンにSSHキーペアが設定されていません。

Output

cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory

もしその場合、以下のコマンドを入力することでSSHキーペアを作成することができます。

  1. ssh-keygen

 

デフォルトを受け入れ、オプションでパスワードを指定して鍵をローカルに保護してください。

Output

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]—–+

これを持っていると、前の例のようにこのコマンドを入力することで、自分の公開鍵を表示することができます。

  1. cat ~/.ssh/id_rsa.pub

 

Output

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

左のナビゲーションバーから「設定」を選択してください。

Select 'Settings' from the administrative navigation bar

あなたはGitLabのインスタンスのグローバル設定に移動します。ここでは、新しいユーザーが登録できるかどうかやアクセスレベルに影響を与える設定を調整できます。

新規登録の無効化

もし、完全に新規登録を無効にしたい場合は、「新規登録制限」セクションまでスクロールし、展開ボタンを押してオプションを表示してください。

サインアップの有効化チェックボックスを選択解除してください。

GitLab deselect sign-ups enabled

変更を行った後に必ず「保存」ボタンをクリックしてください。

GitLabのランディングページから、サインアップセクションが削除されました。

ドメインによる登録制限

もしドメインに関連するメールアドレスを提供する組織でGitLabを使用している場合、アカウント作成を完全に無効化する代わりに、ドメインによるサインアップの制限が可能です。

サインアップ制限のセクションで、サインアップ時に確認メールを送信するボックスを選択してください。これにより、ユーザーはメールの確認後にのみログインできます。

次に、登録ボックスのホワイトリスト化されたドメインにあなたのドメイン(または複数のドメイン)を1行に1つずつ追加してください。ワイルドカードドメインを指定するためには「*」を使用することができます。

Restrict sign-ups by domain

作業が終わったら、保存ボタンをクリックしてください。

GitLabのランディングページから、サインアップセクションが現在削除されました。

プロジェクトの作成制限

デフォルトでは、新しいユーザーは最大10件のプロジェクトを作成できます。外部の新規ユーザーに対しては可視性と参加を許可したいが、新規プロジェクトの作成に制限を加えたい場合は、「アカウントおよび制限設定」セクションでそれを行うことができます。

内部で、デフォルトのプロジェクト数制限を0に変更することで、新しいユーザーがプロジェクトを作成できないように完全に無効化することができます。

From the 'Account and limit' setting, you can set project limits to zero

新しいユーザーは手動でプロジェクトに追加することができ、他のユーザーが作成した内部または公開されたプロジェクトにアクセスすることができます。

アップデート後には、変更を保存するために「保存」ボタンをクリックしてください。

新しいユーザーはアカウントを作成できますが、プロジェクトを作成することはできません。

Let’s Encryptの証明書を更新する

デフォルトでは、GitLabはLet’s Encrypt証明書を毎四日の深夜に、external_urlに基づいた正確な分に更新するためのスケジュールされたタスクが設定されています。これらの設定は/etc/gitlab/gitlab.rbファイルで変更することができます。

たとえば、毎週7日目の12時30分に更新したい場合、それを設定することができます。最初に、設定ファイルに移動してください。

  1. sudo nano /etc/gitlab/gitlab.rb

 

その後、ファイル内で次の行を見つけて、#を削除し、以下の内容で更新してください。

「/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 に設定することで、自動更新も無効にできます。

以下の文を日本語で書き換える(オプション1つで十分):
/etc/gitlab/gitlab.rb
...
letsencrypt['auto_renew'] = false
...

自動更新が行われているため、サービスの中断を心配する必要はありません。

結論

あなたは現在、独自のサーバー上で動作しているGitLabインスタンスを持っています。新しいプロジェクトのインポートや作成、チームの適切なアクセスレベルの設定を開始することができます。GitLabは定期的に機能を追加し、プラットフォームを更新していますので、改善点や重要なお知らせを把握するためにプロジェクトのホームページをチェックしてください。

コメントを残す 0

Your email address will not be published. Required fields are marked *