導入
GitLabは、主にGitリポジトリのホスティングを目的としたオープンソースアプリケーションで、課題追跡などの開発関連機能も備えています。独自のインフラストラクチャでホスティングできるように設計されており、開発チームの内部リポジトリとして、ユーザーとのコミュニケーションのための公開手段として、あるいはコントリビューターが独自のプロジェクトをホスティングするための手段として、柔軟に展開できます。.
GitLabプロジェクトでは、インストールメカニズムを使用して、ハードウェア上に少なくとも1つのGitLabインスタンスを作成できます。このガイドでは、UbuntuサーバーにGitLab Community Editionをインストールして設定する方法を説明します。.
前提条件
- 権限を持つ非ルートユーザーでUbuntuを実行しているサーバー
須藤そしてアクティブファイアウォール。. - CPUに4つのコア
- メモリ用4GB RAM
- サーバーを指すドメイン名
ステップ1 – 依存関係のインストール
GitLabをインストールする前に、インストール中および継続的に使用するソフトウェアをインストールすることが重要です。必要なソフトウェアは、Ubuntuのデフォルトのパッケージリポジトリからインストールできます。.
まず、ローカル パッケージ リストを更新します。
sudo apt update次に、次のコマンドを入力して依存関係をインストールします。
sudo apt install ca-certificates curl openssh-server postfix tzdata perlこれらのソフトウェアの一部は既にインストールされている可能性があります。Postfixをインストールするには、プロンプトが表示されたら「インターネットサイト」を選択してください。次のページでサーバーのドメイン名を入力し、システムのメール送信方法を設定してください。.
依存関係をインストールしたので、GitLab をインストールする準備が整いました。.
ステップ2 – GitLabをインストールする
依存関係があるにもかかわらず、GitLab をインストールできます。このプロセスでは、インストールスクリプトを使用して、システムに GitLab リポジトリを設定します。.
まず、/tmp フォルダに入ります。
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を設定する前に、ファイアウォールルールがWebトラフィックを許可できるほど十分に設定されていることを確認する必要があります。前提条件にリンクされているガイドに従っている場合は、ufwファイアウォールが既に有効になっているはずです。.
次のコマンドを実行して、アクティブなファイアウォールの現在のステータスを表示します。
sudo ufw statusOutput
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)現在のルールではSSHトラフィックは通過できますが、他のサービスへのアクセスは制限されています。GitLabはWebアプリケーションであるため、HTTPアクセスを許可する必要があります。また、Let's Encryptから無料のTLS/SSL証明書をリクエストして有効化するGitLabの機能を使用するため、HTTPSアクセスも許可してください。.
HTTPおよびHTTPSのポートマッピングプロトコルは/etc/servicesファイルで参照できるため、名前を指定してトラフィックを許可できます。OpenSSHトラフィックをまだ有効にしていない場合は、以下の手順で許可する必要があります。
sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSHufw ステータスを再度確認して、少なくとも次の 2 つのサービスにアクセスできることを確認します。
sudo ufw statusOutput
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.rbexternal_url の設定行を探してください。ドメインに合わせて更新し、http を https に変更して、Let's Encrypt 証明書で保護されたサイトにユーザーを自動的にリダイレクトするようにしてください。
...
## 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'] = ['[email protected]']
変更を加えたら、ファイルを保存して閉じます。nanoを使用している場合は、 Ctrl+X、 それから はい その後 入力 やれよ。.
GitLab を再構成するには、次のコマンドを実行します。
sudo gitlab-ctl reconfigureこれにより、GitLabはサーバーに関する情報を使用して初期化されます。これは完全に自動化されたプロセスであるため、リクエストに応答する必要はありません。また、このプロセスにより、ドメインのLet's Encrypt証明書も設定されます。.
ステップ5 – Webインターフェース経由で初期設定を実行する
GitLab を実行すると、Web インターフェースを介してアプリケーションの初期構成を実行できます。.
初めてログインする
Web ブラウザで GitLab サーバーのドメイン名にアクセスします。
https://your_domain初めてアクセスすると、ログイン ページが表示されます。
GitLabは安全な初期パスワードを生成します。このパスワードは、管理者権限を持つsudoユーザーとしてアクセスできるフォルダに保存されます。
sudo nano /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.ログインページで、次のように入力します。
- ユーザー名: root
- パスワード: [/etc/gitlab/initial_root_password に記載されているパスワード]
以下の値を各フィールドに入力し、「サインイン」ボタンをクリックします。アプリにログインし、プロジェクトの追加を開始するよう求めるランディングページにリダイレクトされます。
これで、GitLab インスタンスを微調整できます。.
パスワードを更新する
ログイン後、まず最初に行うべきことの一つは、パスワードの変更です。変更するには、ナビゲーションバーの右上にあるアイコンをクリックし、「プロフィールの編集」を選択してください。
次にユーザー設定ページに移動します。左側のナビゲーションバーで「パスワード」を選択し、生成されたGitLabパスワードを安全なものに変更します。更新が完了したら「パスワードを保存」ボタンをクリックします。
パスワードが変更されたことを通知するメッセージが表示され、ログインページに戻ります。新しいパスワードを入力して、GitLabインスタンスに再度ログインしてください。

プロフィール設定を調整する
GitLabは適切なデフォルト設定をいくつか選択していますが、ソフトウェアを使い始めると通常は適切ではありません。必要な変更を行うには、ナビゲーションバーの右上隅にあるユーザーアイコンをクリックし、「プロフィールの編集」を選択してください。.
「管理者」と「[email protected]」という名前とメールアドレスを、より具体的な名前とメールアドレスに設定できます。選択した名前は他のユーザーに表示されます。メールアドレスは、デフォルトのアバター、通知、インターフェースを通じたGitアクションなどを識別するために使用されます。
更新が完了したら、下部にある「プロフィール設定を更新」ボタンをクリックしてください。変更を確認するため、パスワードの入力を求められます。入力したメールアドレスに確認メールが送信されます。メールの指示に従ってアカウントを確認し、GitLabで使用できるようにします。.
アカウント名を変更する
次に、左側のナビゲーション バーで [アカウント] を選択します。
ここで二要素認証を有効にし、ユーザー名を変更できます。デフォルトでは、最初の管理者アカウントの名前は「root」です。これはよく使われるアカウント名なので、別の名前に変更することをお勧めします。管理者権限はそのまま保持されます。変更されるのはアカウント名のみです。「root」を希望のユーザー名に置き換えてください。
「ユーザー名を更新」ボタンをクリックして変更を確定してください。変更の確認を求められます。次回GitLabにログインする際は、新しいユーザー名を必ず使用してください。.
アカウントにSSHキーを追加する
GitでSSHキーを有効にすると、GitLabプロジェクトとやり取りできるようになります。そのためには、SSH公開鍵をGitLabアカウントに追加する必要があります。.
左側のナビゲーション バーで、SSH キーを選択します。
ローカル コンピューターに SSH キー ペアを既に作成している場合は、次のように入力して公開キーを表示できます。
cat ~/.ssh/id_rsa.pubOutput
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 キー ペアを生成できます。
[environment local]
ssh-keygenデフォルトを受け入れ、オプションでキーをローカルで保護するためのパスワードを入力します。
Output
[environment local]
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 [email protected]
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.pubOutput
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktopこのテキストブロックをGitLabインスタンスの「キー」テキストボックスに貼り付けます。わかりやすいタイトルを付けて、「キーを追加」ボタンをクリックします。.
GitLab アカウントの資格情報を提供しなくても、ローカル マシンから GitLab プロジェクトとリポジトリを管理できるようになりました。.
ステップ6 – 公開登録を制限または無効化する
現在の設定では、GitLabのサンプルランディングページにアクセスした誰でもアカウントを登録できてしまいます。公開プロジェクトをホストしたい場合は、この設定で十分かもしれません。しかし、多くの場合、より制限された設定が望ましいでしょう。.
開始するには、上部のナビゲーション バーにあるハンバーガー メニューをクリックして管理セクションに移動し、ドロップダウン メニューから [管理者] を選択します。
左側のナビゲーション バーから [設定] を選択します。
GitLabインスタンスのグローバル設定が表示されます。ここでは、新規ユーザーのサインアップ方法やアクセスレベルに影響するいくつかの設定を行うことができます。.
登録を無効にする
登録を完全に無効にしたい場合は、「登録制限」セクションに移動し、「展開」を押してオプションを表示します。.
次に、「サインアップを有効にする」オプションのチェックを外します。
変更を加えた後は、「変更を保存」ボタンをクリックしてください。GitLabのランディングページからサインアップセクションが削除されました。.
ドメインによる登録制限
ドメインに関連付けられたメールアドレスを提供する組織の一員としてGitLabを利用している場合は、サインアップを完全に無効にするのではなく、ドメインごとにサインアップを制限することができます。「サインアップ制限」セクションで、「サインアップ時に確認メールを送信する」チェックボックスをオンにすると、ユーザーはメールアドレスを確認した後でのみログインできるようになります。.
次に、登録するドメインをホワイトリストに追加します。1行に1ドメインずつ追加してください。ワイルドカードドメインを指定するには、アスタリスク「*」を使用できます。
完了したら、「変更を保存」ボタンをクリックします。これで、GitLabのランディングページからサインアップセクションが削除されました。.
プロジェクト作成を制限する
デフォルトでは、新規ユーザーは最大10件のプロジェクトを作成できます。外部からの新規ユーザーにプロジェクトの閲覧と投稿を許可しつつ、新規プロジェクトの作成権限を制限したい場合は、「アカウント設定と制限」セクションで設定できます。.
内部的には、デフォルトのプロジェクト制限を 0 に変更して、新しいユーザーによるプロジェクトの作成を完全に無効にすることができます。
新規ユーザーは引き続き手動でプロジェクトに追加でき、他のユーザーが作成した社内プロジェクトまたは公開プロジェクトにアクセスできます。更新後は、「変更を保存」ボタンをクリックしてください。新規ユーザーはアカウントを作成できるようになりますが、プロジェクトを作成することはできません。.
Let's Encrypt証明書の更新
GitLabはデフォルトで、4日ごとに深夜0時以降、external_urlに基づいて正確な分にLet's Encrypt証明書を更新するスケジュールタスクを設定しています。この設定は/etc/gitlab/gitlab.rbファイルで変更できます。.
例えば、7日目の12:30に更新したい場合は、そのように設定できます。まず、設定ファイルを開きます。
sudo nano /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はプラットフォームに機能やアップデートを継続的に追加していますので、プロジェクトのホームページをチェックして、重要な開発や発表に関する最新情報を常に把握しておきましょう。.























