Debian 12 または 11 に GitLab をインストールする方法

GitLab は、バージョン管理、継続的インテグレーション、デプロイメント、プロジェクト管理のための幅広い機能を提供する包括的な DevOps プラットフォームです。DevOps ライフサイクルのさまざまな段階を 1 つのアプリケーションに統合し、チームが共同で効率的に作業できるようにします。GitLab Community Edition (CE) は GitLab のオープンソース バージョンであり、リポジトリの管理、問題の追跡、CI/CD パイプラインの自動化のための強力なツールを提供します。

Debian 12 または 11 に GitLab CE をインストールするには、公式の GitLab Bash スクリプトを使用して GitLab CE APT リポジトリをセットアップし、ソフトウェアをインストールして構成します。このガイドでは、プロセス全体を順を追って説明し、Debian システムに堅牢な GitLab をセットアップできるようにします。

Gitlab をインストールする前に Debian を更新する

Debian オペレーティング システムを最新の状態に保つことは、システムの安定性とセキュリティを維持するために不可欠です。Debian システム上の既存のパッケージがすべて最新の状態であることを確認するには、更新を実行して最新のセキュリティ更新とバグ修正を提供し、システムの安定性と信頼性を確保することをお勧めします。

次のコマンドを実行すると、Debian オペレーティング システムを簡単に更新できます。

sudo apt update && sudo apt upgrade 

GitLabに必要なパッケージをインストールする

GitLab のすべての依存関係がインストールされていることを確認することは、インストール プロセスの重要なステップです。これらの依存関係は、GitLab が正しく機能するために必要なコンポーネントです。幸いなことに、これらの依存関係のインストールは簡単なプロセスです。

ターミナルを開いて次のコマンドを実行すると簡単にインストールできます。

sudo apt install curl ca-certificates apt-transport-https tzdata perl

GitLab CE APTリポジトリをインポートする

デフォルトでは、GitLab は Debian のデフォルト リポジトリでは利用できません。つまり、GitLab をインストールするには手動でリポジトリを作成する必要があります。ただし、GitLab ではこのプロセスを支援する APT スクリプトが提供されており、ユーザーはプラットフォームを簡単にインストールできます。このスクリプトを使用すると、GitLab リポジトリを作成でき、標準の APT パッケージ マネージャーを使用して GitLab をインストールできます。

スクリプトをダウンロードするには、ターミナルで次のコマンドを入力します。

curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

このコマンドを実行すると、スクリプトが GitLab リポジトリをダウンロードして Debian システムに追加します。また、パッケージ リストも更新され、標準の APT パッケージ マネージャーを使用して GitLab をインストールできるようになります。

APTコマンドでGitLabのインストールを完了する

次のステップは GitLab をインストールすることです。スクリプトは既に「apt update」コマンドを使用して、新しく作成および変更されたリポジトリを同期していることを覚えておいてください。それが完了したら、次のコマンドを実行してインストール コマンドを実行できます。

sudo apt install gitlab-ce

このコマンドは、GitLab の無料かつオープンソースのバージョンである GitLab Community Edition (CE) をインストールします。インターネットの速度とシステムの仕様によっては、インストール プロセスに時間がかかる場合があります。

Debian で GitLab のインストールが成功した場合の出力例:

GitLabを設定する

Debian で GitLab を構成するには、いくつかの手順を慎重に実行する必要があります。このセクションでは、ホスト名の構成、ファイアウォールの設定、電子メール設定の構成など、プロセスを段階的に説明します。

ホスト名を設定する

GitLab インスタンスにアクセスするには、GitLab サーバーのホスト名を設定することが重要です。覚えやすくアクセスしやすい名前を選択してください。ホスト名を設定するには、次の手順に従います。

テキスト エディターを使用して GitLab 構成ファイルを開きます。

sudo nano /etc/gitlab/gitlab.rb

external_url 設定を見つけて、サンプル URL を希望のホスト名に置き換えます。

external_url 'https://gitlab.example.com'

ファイルを保存してテキスト エディターを終了します。

次に、変更を適用するために GitLab を再構成します。

sudo gitlab-ctl reconfigure

Gitlab 用の UFW ファイアウォールを設定する

GitLab はデフォルトで、HTTP にポート 80、HTTPS にポート 443 を使用します。これらのポートのトラフィックを許可し、GitLab インスタンスにアクセスできるようにファイアウォールを構成することが重要です。

ファイアウォールを設定するには、次の手順に従います。

まず、UFW ファイアウォールをインストールします。これは、Debian ではデフォルトでインストールされていないため、次のコマンドでインストールします。

sudo apt install ufw

次に、インストールが完了したら、次のコマンドで UFW ファイアウォールを有効にします。

sudo ufw enable

テキスト エディターを使用してファイアウォール構成ファイルを開きます。

sudo nano /etc/ufw/applications.d/gitlab

次の行をコピーしてファイルに貼り付けます。

[GitLab]
title=GitLab
description=GitLab application
ports=80,443/tcp

ファイルを保存してテキスト エディターを終了します。

ファイアウォールで GitLab アプリケーションを有効にします。

sudo ufw app update GitLab
sudo ufw allow GitLab

メール設定を構成する

GitLab は、電子メール通知を使用して、新しい問題、マージ リクエスト、コメントなどのプロジェクト アクティビティについてユーザーに通知します。

電子メール設定を構成するには、次の手順に従います。

テキスト エディターを使用して GitLab 構成ファイルを開きます。

sudo nano /etc/gitlab/gitlab.rb

gitlab_rails['smtp_enable']設定を見つけてtrueに設定します。

gitlab_rails['smtp_enable'] = true

Gmail などのメール プロバイダーの SMTP サーバー設定を構成するには、ファイルに次の行を追加します。

gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "example@gmail.com"
gitlab_rails['smtp_password'] = "your_password"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true

ファイルを保存してテキスト エディターを終了します。

変更を適用するには、GitLab を再構成します。

sudo gitlab-ctl reconfigure

「gitlab-ctl reconfigure」コマンドを実行した後、ターミナル出力が次のメッセージで終わることに注意することが重要です。

Notes:
Default admin account has been configured with following details:
Username: root
Password: You didn't opt-in to print initial root password to STDOUT.
Password stored to /etc/gitlab/initial_root_password. This file will be cleaned up in first reconfigure run after 24 hours.

ルート (GitLab) パスワードを表示するには、ターミナルで次のコマンドを実行します。

sudo cat /etc/gitlab/initial_root_password

このコマンドを実行すると、ターミナルにルート パスワードが表示されます。このパスワードを安全に保管し、権限のないユーザーと共有しないようにすることが重要です。

ルート パスワードをリセットする必要がある場合は、次のコマンドを使用できます。

sudo gitlab-rake "gitlab:password:reset[root]"

このコマンドを実行すると、ルート パスワードがランダムな文字列にリセットされ、ターミナル出力に表示されます。ルート パスワードをリセットすると、既存のアクセス トークンと個人用アクセス トークンがすべて無効になるため、ユーザーはパスワードをリセットした後で新しいアクセス トークンを作成する必要があることに注意してください。

セキュリティ上の理由から、初期設定後できるだけ早くルート パスワードを強力で一意のものに変更し、デフォルトのパスワードを使用しないことをお勧めします。ルート パスワードを変更するには、GitLab Web インターフェースにログインし、「ユーザー設定」>「アカウント」に移動して、「パスワードの変更」オプションを選択します。

GitLab ユーザーインターフェースにアクセスする

バックエンドの設定が完了したら、GitLab にログインしてアクセスします。これを行うには、設定ファイルで GitLab に割り当てられたドメイン パスを開きます。

https://gitlab.example.com

次に、ユーザー名「root」とインストール時に取得したパスワードを使用して GitLab にログインします。前のセクションのパスワードのプリントアウトで述べたように、ガイドのパスワードは画像の「4zB2mbBLCcRLRAkv3qHfmSZULJ/6ocJNe2XK8zNx9nU=」でした。

ルート アカウントとして正常にログインし、デフォルトのランディング ページが表示されます。

追加のヒント

以下は、GitLab ユーザー インターフェースに初めてログインするときのセキュリティ保護、カスタマイズ、その他の一般的な初回のヒントに関する推奨事項です。

  • デフォルトのパスワードを変更します: GitLab インスタンスのセキュリティを強化するには、ルート ユーザーのデフォルト パスワードを変更することが重要です。デフォルトのユーザー名とパスワードを使用して GitLab にログインし、「ユーザー設定」>「パスワード」に移動して、新しいパスワードを入力します。
  • 2要素認証(2FA)を設定します。 ログイン プロセスに、携帯電話に送信されたコードやアプリによって生成されたコードなどの認証要素を追加することは、2FA によって提供される追加のセキュリティ レイヤーです。GitLab で 2FA を有効にするには、「ユーザー設定」>「アカウント」>「2 要素認証」に移動し、指示に従います。
  • プロジェクトを作成します。 GitLab で新しいプロジェクトを作成するには、「プロジェクト」ページに移動し、「新しいプロジェクト」ボタンをクリックします。空のプロジェクトを作成することも、Git リポジトリから既存のプロジェクトをインポートすることもできます。
  • ユーザー インターフェイスをカスタマイズします。 GitLab では、テーマの変更、カスタム ロゴの追加、ナビゲーション バーの構成など、いくつかのカスタマイズ オプションを使用できます。「管理エリア」>「設定」に移動し、適切なオプションを選択してユーザー インターフェイスをカスタマイズします。
  • アクセス制御を構成します。 GitLab の強力なアクセス制御機能を使用すると、プロジェクトにアクセスできるユーザーとそのユーザーが実行できる操作を制御できます。「プロジェクト設定」>「メンバー」に移動し、異なるアクセス レベルのメンバーを追加または削除して、アクセス制御を構成します。
  • GitLab CI/CD を使用する: GitLab の強力な CI/CD 機能は、コードのテストとデプロイメントを自動化します。プロジェクトのルート ディレクトリに「.gitlab-ci.yml」ファイルを作成し、パイプラインのステージとジョブを定義することで、CI/CD パイプラインを構成します。
  • GitLab Runner をセットアップします。 GitLab Runner は、CI/CD ジョブを実行し、その結果を GitLab に送り返す軽量エージェントです。GitLab ドキュメントの指示に従って、Debian システムに GitLab Runner をインストールして構成してください。
  • GitLab インスタンスをバックアップします。 ハードウェア障害やその他の災害が発生した場合にデータが失われないように、GitLab インスタンスを定期的にバックアップしてください。ターミナルで「gitlab-rake gitlab:backup:create」コマンドを実行して、GitLab インスタンスをバックアップします。

GitLab 自動バックアップ用の Cronjob を作成する

Debian で GitLab の自動バックアップ用の cronjob を設定することは、データの安全性とセキュリティを確保するために不可欠です。cronjob は、GitLab インスタンスのバックアップを実行するために特定の間隔で自動的に実行されるスケジュールされたタスクです。Debian で GitLab の自動バックアップ用の cronjob を作成するには、次の手順に従ってください。

Gitlab バックアップ スクリプトを作成する

最初のステップは、GitLab インスタンスのバックアップを実行するためのバックアップ スクリプトを作成することです。次の手順に従います。

テキスト エディターを使用して、バックアップ スクリプト用の新しいファイルを作成します。次に例を示します。

sudo nano /usr/local/bin/gitlab-backup.sh

次のコードをファイルに貼り付けます。

#!/bin/bash

BACKUP_DIR=/var/opt/gitlab/backups
TIMESTAMP=$(date +%s)

sudo gitlab-rake gitlab:backup:create

sudo cp ${BACKUP_DIR}/$(ls -t ${BACKUP_DIR} | head -1) ${BACKUP_DIR}/gitlab_backup_${TIMESTAMP}.tar
  • ファイルを保存してテキスト エディターを終了します。

このスクリプトは、gitlab-rake gitlab:backup:create コマンドを実行して、GitLab インスタンスのバックアップを生成します。バックアップを作成した後、最新のバックアップをファイル名にタイムスタンプが付いた新しいファイルに複製します。

権限と所有権の設定

次のステップは、cronjob がバックアップ スクリプトを実行できるように、バックアップ スクリプトに適切な権限と所有権を確立することです。次の手順に従います。

バックアップ スクリプトの所有者を GitLab に関連付けられているユーザーに設定します。

sudo chown git:git /usr/local/bin/gitlab-backup.sh

実行を有効にするには、バックアップ スクリプトの権限を設定します。

sudo chmod +x /usr/local/bin/gitlab-backup.sh

Cronジョブの作成

次のステップは、バックアップ スクリプトを定期的に実行するようにスケジュールする cronjob を作成することです。次の手順に従います。

GitLab ユーザーの crontab 構成ファイルを開くには、次の手順に従います。

sudo crontab -u git -e

バックアップ スクリプトを毎日午前 1 時に実行するようにスケジュールするには、GitLab ユーザーの crontab 構成ファイルに次の行を追加します。

0 1 * * * /path/to/backup/script.sh

ファイルを保存してテキスト エディターを終了します。

この cronjob は毎日午前 1 時にバックアップ スクリプトを自動的に実行し、ファイル名にタイムスタンプが付いた新しいバックアップ ファイルを作成します。

Cronジョブのテスト

バックアップ スクリプトを手動で実行し、バックアップ ファイルがエラーなしで生成されることを確認することで、cronjob 機能が正しく機能していることを検証できます。このテストを実行するには、ターミナルで次のコマンドを入力します。

sudo /usr/local/bin/gitlab-backup.sh

このコマンドは、ディレクトリ「/var/opt/gitlab/backups」に新しいバックアップ ファイルを生成します。ファイル名には、バックアップが作成された日時を示すタイムスタンプが含まれます。

GitLab ターミナルコマンド

GitLab-ctl は、Debian で GitLab を管理するためのコマンドライン ツールです。GitLab サービスの開始、停止、再起動、管理などを行うためのターミナル コマンドのセットを提供します。ここでは、GitLab-ctl ターミナル コマンドの詳細なセクションと、説明付きのコマンド例と出力を示します。

GitLab サービスの開始と停止

GitLab サービスを開始および停止するには、次のコマンドを使用します。

すべての GitLab サービスを開始します。

sudo gitlab-ctl start

すべての GitLab サービスを停止します。

sudo gitlab-ctl stop

すべての GitLab サービスを再起動します。

sudo gitlab-ctl restart

GitLab サービスを再読み込みします:

sudo gitlab-ctl reload

これらのコマンドは、すべての GitLab サービスを開始、停止、再起動、または再読み込みします。出力には、開始または停止されているサービスと、操作が成功したかどうかが示されます。

GitLabサービスのステータスを確認する

GitLab サービスのステータスを確認するには、次のコマンドを使用します。

sudo gitlab-ctl status

これらのコマンドは、すべての GitLab サービスを開始、停止、再起動、または再読み込みします。コマンドを実行すると、影響を受けるサービスと操作が成功したかどうかが出力に表示されます。

GitLabデータのバックアップと復元

次のコマンドを使用して、GitLab データのバックアップを作成できます。

GitLab データのバックアップを作成します。

sudo gitlab-rake gitlab:backup:create

提供されたコマンドは、リポジトリ、ユーザー データ、構成ファイルなど、すべての GitLab データを含むバックアップ ファイルを作成します。バックアップ ファイルは、ディレクトリ「/var/opt/gitlab/backups」に保存されます。

GitLab データのバックアップを復元します。

sudo gitlab-rake gitlab:backup:restore BACKUP=<backup_file>

このコマンドを使用すると、特定のバックアップ ファイルから GitLab データのバックアップを復元できます。バックアップ ファイルは「var/opt/gitlab/backups」ディレクトリにある必要がありますが、バックアップ ファイルへのフル パスを指定することもできます。

GitLabの設定を確認する

次のコマンドを使用して、GitLab の設定を確認できます。

sudo gitlab-rake gitlab:check

このコマンドは、GitLab 構成内のエラーや警告をスキャンできます。これには、古いバージョン、依存関係の欠落、設定の誤りなどが含まれます。出力には、スキャン結果と検出された問題に関する詳細情報が要約されます。

GitLabログの確認

次のコマンドを使用して GitLab ログを確認する方法は次のとおりです。

GitLab ログを表示します。

sudo gitlab-ctl tail gitlab-rails/production.log

次のコマンドを使用すると、GitLab プロダクション ログの最後の 10 行を表示できます。このログには、ユーザーのアクション、警告、エラーの詳細が記載されています。

GitLab NGINX ログを表示します。

sudo gitlab-ctl tail nginx/gitlab_access.log

このコマンドは、HTTP リクエストと応答に関する詳細を含む GitLab NGINX アクセス ログの最後の 10 行を表示します。

GitLab PostgreSQL ログを表示します。

sudo gitlab-ctl tail postgresql/current

このコマンドは、データベースのクエリとトランザクションに関する情報を含む GitLab PostgreSQL ログの最後の 10 行を表示します。

結論

公式セットアップ スクリプトを使用して Debian システムに GitLab CE を正常にインストールすると、その強力な DevOps 機能を最大限に活用できます。この方法により、最新バージョンが確実に入手でき、更新に簡単にアクセスできます。最新の機能とセキュリティ強化のメリットを享受するには、GitLab インスタンスを定期的に保守および更新してください。GitLab CE が開発プロジェクトに提供するシームレスな統合と共同作業ツールをお楽しみください。

Joshua James

コメントを残す