GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu18.04LTSにDockerを使用してGitlabサーバーをインストールする方法

GitlabCEまたはCommunityEditionは、Gitリポジトリをホストするために使用されるオープンソースアプリケーションです。 Gitリポジトリをセルフホスティングすると、データを完全に制御できると同時に、自分とチームメンバーに使いやすいインターフェースを提供できます。

このガイドでは、Gitlabの無料サービスであるCommunityEditionを使用してGitリポジトリをインストールする方法について説明します。マージ承認、ロードマップ、ポートフォリオ管理、ディザスタリカバリ、コンテナスキャンなどの高度な機能が必要な場合は、EnterpriseEditionへのアップグレードを選択できます。

前提条件
  • root以外のsudoユーザーがいるUbuntu18.04ベースのサーバー。
  • 100人のユーザーをサポートするGitlabCEの指定されたハードウェア要件に従って、最低2つのCPUコアと8GBのRAMを備えたVPSが必要です。 RAMの代わりにスワップスペースを使用することもできますが、アプリケーションの実行速度が低下するため、お勧めしません。
ステップ1-依存関係のインストール

Gitlabをインストールする前に、Gitlabが正しく実行するために必要な特定のソフトウェアがサーバーにあることを確認する必要があります。次のコマンドを実行して、依存関係をインストールします。

$ sudo apt update
$ sudo apt install ca-certificates curl openssh-server ufw apt-transport-https -y

上記のソフトウェアの一部は、プリインストールされている場合があります。

ステップ2-システムのSSHポートを変更する

Gitlabは、SSH経由でリポジトリをプッシュするためにポート22を使用します。サーバーのSSHもその上で実行されているため、競合が発生します。それについて行くには2つの方法があります。システムへの接続に使用するSSHポートを変更するか、GitlabがSSHに使用するポートを変更することができます。このチュートリアルでは、サーバー自体のSSHポートを変更します。

これを行うには、/ etc / ssh/sshd_configファイルを編集する必要があります。 nanoテキストエディタでファイルを開きます。

$ sudo nano /etc/ssh/sshd_config

次の行を見つけて、 22を変更します 6622へ その前の#を削除します。任意のポートを選択できます。

# Port 22

Ctrl + Xを押してファイルを閉じ、Yを押して変更を保存します。

SSHサービスを再起動します。

$ sudo systemctl restart sshd

現在のSSHセッションを閉じ、ポート6622で新しいSSHセッションを作成して、サーバーに再度接続します。

$ ssh [email protected] -p 6622
ステップ3-ファイアウォールの構成

前のステップでは、ufw(Uncomplicated Firewall)をインストールしました。 Gitlabのインストールに進む前に、Gitlabを構成する必要があります。

ロックアウトされないように、SSHと作成したポートを有効にします。

$ sudo ufw allow OpenSSH
$ sudo ufw allow 6622

ufwファイアウォールを有効にします。

$ sudo ufw enable

また、Gitlabを動作させるにはhttpとhttpsを有効にする必要があります。

$ sudo ufw allow http
$ sudo ufw allow https

ファイアウォールのステータスを確認してください。

$ sudo ufw status

次のような出力が表示されます。

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
6622                       ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
6622 (v6)                  ALLOW       Anywhere (v6)      
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             
ステップ4-Dockerをインストールする

DockerのGPGキーをシステムに追加します。

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

ダウンロードしたキーのフィンガープリントを確認します。

$ sudo apt-key fingerprint 0EBFCD88

次のような出力が表示されます。

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <[email protected]>
sub   rsa4096 2017-02-22 [S]

Dockerリポジトリを追加します。

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

パッケージデータベースを更新します。

$ sudo apt update

Docker-CEをインストールします。 CEはDockerのコミュニティエディションです。

$ sudo apt install docker-ce -y

Dockerをインストールする必要があります。実行されていることを確認してください。

$ sudo systemctl status docker

出力は次のようになります。

? docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-10-11 21:10:31 UTC; 32s ago
     Docs: https://docs.docker.com
 Main PID: 19128 (dockerd)
    Tasks: 12
   CGroup: /system.slice/docker.service
           ??19128 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

qを押して終了します。

制限されたLinuxユーザーアカウントをdockerグループに追加して、sudoなしでdockerを実行できるようにします。

sudo usermod -aG docker $USER

$ USER 変数は、現在ログインしているユーザーを選択してDockerグループに追加します。 $ USERを置き換えます 現在そのユーザーでログインしていない場合は、実際のユーザー名を使用します。

追加したユーザーに切り替えます。すでにログインしている場合でも、権限を再読み込みするには、再度ログインする必要があります。

$ su - ${USER}

組み込みの「HelloWorld」プログラムを実行して、すべてが正常に実行されていることを確認します。

$ docker run hello-world

Dockerがインストールされ、正しく機能していることを示す次の出力が表示されます。

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
ステップ5-DockerComposeをインストールする

この手順をスキップして続行することは可能ですが、Docker Composeをインストールすると、特に複数のサーバーで実行する場合に、Gitlabの実行がはるかに簡単になります。

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

このチュートリアルを書いている時点では、1.24.1がDockerComposeの現在の安定したリリースです。最新のリリースバージョンは、Githubページから確認できます。

DockerComposeバイナリに実行可能ファイルのアクセス許可を適用します。

$ sudo chmod +x /usr/local/bin/docker-compose

DockerComposeにコマンド補完を追加します。

$ sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose

インストールが成功したかどうかを確認します。

$ docker-compose --version

次の出力が出力されます。

docker-compose version 1.24.1, build 4667896b
ステップ6-Gitlabをインストールする

DockerhubからGitlabのDockerイメージをダウンロードします。このイメージには、Dockerを実行するために必要なすべてのもの(nginx、PostgreSQL、Redisなど)が含まれています。次のコマンドを実行してイメージをダウンロードします。

$ docker pull gitlab/gitlab-ee:latest

このチュートリアルはCommunityEditionのインストールに関するものですが、GitlabのEnterpriseEditionイメージを取得します。これは、ライセンスを入力してアップグレードしない限り、EnterpriseEditionはCommunityEditionとまったく同じように動作するためです。 CommunityEditionのインストールをEnterpriseEditionにアップグレードすると、さらに複雑になります。

完全な画像をダウンロードするには少し時間がかかります。ジョブが終了したら、次のコマンドを実行して、現在システムにあるすべてのイメージを確認できます。

$ docker images

出力は次のようになります。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gitlab/gitlab-ee    latest              4bacb2356d28        4 days ago          1.87GB
hello-world         latest              fce289e99eb9        9 months ago        1.84kB
ステップ7-Gitlabを実行する

この時点で、1つのコマンドですべてのオプションを指定することでGitlabコンテナーをすぐに実行できますが、コンテナーを実行する必要があるたびに、これらの変数を指定する必要があります。 Docker Composeを使用すると、構成を.ymlファイルに保存して、コンテナーの実行と起動に使用できるため、このプロセスが簡単になります。

docker-compose.ymlを作成します。

$ nano docker-compose.yml

次のコードを貼り付けます。

web:
  image: 'gitlab/gitlab-ee:latest'
  container_name: 'gitlab-howtoforge-tutorial'
  restart: always
  hostname: 'gitlab.example.com'
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'https://gitlab.example.com'
      gitlab_rails['smtp_enable'] = true
	  gitlab_rails['smtp_address'] = "smtp.gmail.com"
      gitlab_rails['smtp_port'] = 587
      gitlab_rails['smtp_user_name'] = "[email protected]"
      gitlab_rails['smtp_password'] = "app-password"
      gitlab_rails['smtp_domain'] = "smtp.gmail.com"
      gitlab_rails['smtp_authentication'] = "login"
      gitlab_rails['smtp_enable_starttls_auto'] = true
      gitlab_rails['smtp_tls'] = false
      gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
      # Add any other gitlab.rb configuration here, each on its own line
  ports:
    - '80:80'
    - '443:443'
    - '22:22'
    - '587:587'
  volumes:
    - '/srv/gitlab/config:/etc/gitlab'
    - '/srv/gitlab/logs:/var/log/gitlab'
    - '/srv/gitlab/data:/var/opt/gitlab'

上記の各オプションの意味を見てみましょう。

  • 画像 Dockerhub上のGitlabのDockerイメージの場所を指します。
  • container_name Dockerネットワーク内でコンテナーを参照するときに使用するために、Dockerコンテナーにラベルを適用できます。
  • ホスト名 コンテナの内部ホスト名、またはこの場合はGitlabがインストールされるURLを定義します。
  • 再起動 コンテナの再起動ポリシーを指定します。 常にに設定しました つまり、コンテナが終了すると、自動的に再起動されます。
  • 環境 変数GITLAB_OMNIBUS_CONFIGを提供します これにより、Gitlabの構成設定を入力できます。この場合、Gitlabが使用することになっている外部URLを提供しました。
  • ボリューム 永続データを格納するためにサーバーにマウントされるディレクトリを定義します。 3つのボリューム/ディレクトリには、アプリケーションデータ、ログファイル、および構成ファイルが格納されます。セミコロンの左側の値はサーバー上のローカルディレクトリであり、右側の値はコンテナ内のディレクトリです。
  • 公開 ポートまたはポートの範囲をホストに公開するようにコンテナに指示します。 Gitlabにはポート22(SSH)、80(HTTP)、443(HTTPS)、および587(SMPT-MSA)が必要なため、ここでそれらを指定しました。 Gitlabでサーバー上で非標準のポートを使用する場合(おそらく使用できないため)、最初にホストポートを指定し、次にコンテナポートを指定します。たとえば、サーバーはすでにSSH(22)ポートを使用しているため、Gitlabに別のポート(たとえば3333)を介してSSHを使用するように指示できます。次に 22:22を変更します。 上記のファイルで3333:22 。また、 GITLAB_OMNIBUS_CONFIGの下にgitlab_rails['gitlab_shell_ssh_port']=3333という行を追加する必要があります 上記。
  • external_url Gitlabがインストールされるドメインを指します。 Let'sEncryptSSL証明書を自動的にインストールするhttpsを選択しました。
  • メールの送信にGmailを使用するようにGitlabを構成するための構成も追加しました。サードパーティのSMTPメールサービスを使用できます。 Gitlabのドキュメントには、さまざまなSMTPサービスを構成する方法に関する詳細なガイドがあります。

docker-compose.ymlと同じディレクトリにいることを確認してください。次のコマンドを実行してGitlabを起動します。

$ docker-compose up -d

次のようなものが表示されます。

Creating gitlab-howtoforge-tutorial ... done

ブラウザからGitlabにアクセスできるようになるまで、さらに数分かかります。次のコマンドを使用して、起動プロセスの詳細を確認できます。

$ docker logs -f gitlab-howtoforge-tutorial

ログ監視プロセスを終了するには、Ctrl+Cを押します。

ブラウザにGitlabサイトをロードします。コンテナの起動後すぐにロードしようとすると、502エラーが発生します。その場合は、さらに数分待ってからもう一度お試しください。

すべて問題がなければ、ブラウザに次のページが表示されます。

ステップ8-Gitlabを構成する

Gitlabの管理者パスワードのパスワードを入力します。次にログイン画面が表示されます。 ルートを使用する ログインするために選択したユーザー名とパスワードとして。

SMTPを構成する

する前にSMTP設定を有効にする必要があります Gitlabプロファイルを構成する

右上隅のユーザーアイコンをクリックして、ドロップダウンメニューを表示し、設定を選択します。

プロファイル設定ページに移動します。ここにあなたの名前とEメールを追加してください。更新するには、メールアドレスを確認する必要があります。必要に応じて、ここに自分自身に関する情報を追加することもできます。

プロファイル設定の更新をクリックします 終わったら。

ユーザー名の変更

次に、ユーザー名を rootから変更する必要があります ルートはかなり一般的な推測可能なユーザー名であるため、他の何かに。 アカウントをクリックします 左側のサイドバーにあります。

ユーザーを保持したいユーザー名に変更します。 ユーザー名の更新をクリックします 終わる。セキュリティを強化するために、ここで2要素認証も有効にする必要があります。

パブリックサインアップを制限する

デフォルトでは、Gitlabのインストールにより誰でもサインアップできます。それが望ましくない場合は、無効にする必要があります。トップバーのレンチのようなアイコンをクリックして、管理領域にアクセスします。

設定を調整するには、設定をクリックします 左側のサイドバーにあります。

ここで、登録の制限まで下にスクロールします 展開をクリックします ボタン。 サインアップを有効にするのチェックを外します ボックスをクリックし、変更を保存をクリックします 終了したら。

管理インターフェースを介して、引き続き新しいユーザーを追加できます。

SSHキーを追加

最後のステップは、SSHキーを追加することです。 SSHキーをお持ちの場合は、次のコマンドをスキップできます。持っていない場合は、次のコマンドを使用して作成できます。

$ ssh-keygen

このコマンドは、Mac OS、Linux、およびWindows上のGit Bash/WSLに共通です。デフォルトを受け入れ、パスフレーズフィールドを空白のままにします。

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/gitlab
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in gitlab.
Your public key has been saved in gitlab.pub.
The key fingerprint is:
SHA256:6dNGAPyd8JAkHAikYOW2PsFjGlzBBpwy4XQ9RQgVwK8 [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|+*OB=*O=..       |
|B+o+o+oo+        |
|oo.+. ...= .     |
|. + ..  .o+      |
| o *.   S .      |
|  =Eo  . o       |
| . o    o o      |
|    .    o       |
|                 |
+----[SHA256]-----+

次のコマンドで公開鍵を表示できます

$ cat ~/.ssh/gitlab.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUf64YH7uJimFWVJSy/mgYiLRqBxVB6JJMTxZZ96DwExoINhWVRhQAgMgExBWGpUCpWXhLcNuIM+EfFRtCq+YYyLC+GlHsNdnLgecGgop72p8BEi8UckgCiCSuMrWCMAOFh5NKs2YHpF7bOUjXQRVvGujLuV1UBof7SXQ/za7e3aybNiH3KpA6oWSSmpqnOt8rZT54IjLnVFUSLx7ZxWDVW1bO29mI8NjWwzZGLAtNIkJQEOqVo8nhVkroFHvBTrZnUsmr5oFOWG++LPqED9EUSPTpO8PNnogYT3xsVncBMMAEt0pPE7ATmstQc161SEtqAUa98Qb0RRKqCKcKStOp [email protected]

プロファイルの設定領域に戻り、サイドバーからSSHキーにアクセスします。

表示されたボックスにSSHキーを貼り付け、キーの追加をクリックします 続行します。

これで、Gitlabクレデンシャルを提供しなくても、リポジトリを作成してコミットできます。

ステップ9-最初のプロジェクトを作成する

Gitlabの各リポジトリはプロジェクトに属しています。プロジェクトには、リポジトリ、課題追跡システム、マージリクエスト、Wiki、継続的インテグレーションと継続的デリバリー(CI / CD)パイプライン、およびその他の多くの機能が含まれます。

最初のリポジトリを作成するには、[プロジェクトの作成]をクリックします 。

[新しいプロジェクト]ページに移動します。プロジェクト名を入力します。プロジェクトスラッグを別のものに変更できます。必要に応じてプロジェクトの説明を入力し、必要に応じてプロジェクトの表示を変更します。 READMEファイルを使用してリポジトリを初期化できます。完了したら、[プロジェクトの作成]をクリックします 。

空白のREADME.mdファイルが1つだけあるリポジトリページに移動します。

リポジトリが稼働しているので、コマンドラインから変更ログを追加してみましょう。

コンピューターで次のコマンドを入力して、CHANGELOGファイルを作成し、リポジトリにプッシュバックします。コンピューターにGitがインストールされていることを確認してください。

リポジトリのクローンを作成します。 SSHまたはHTTPSのいずれかを使用してクローンを作成できます。

SSHを使用してクローンを作成します。

$ git clone [email protected]:user/howtoforge-test.git

またはHTTPSを使用してクローンを作成します。

$ git clone https://gitlab.example.com/user/howtoforge-test.git

残りのコマンドを入力して、CHANGELOGを作成してプッシュします。

$ cd howtoforge-test
$ touch CHANGELOG  # Or create the file in your editor and enter a project description
$ git add CHANGELOG
$ git commit -m "add Changelog"
$ git push -u origin master
ステップ10-Gitlabコンテナを管理する

実行中のすべてのコンテナーを表示するには、次のコマンドを実行します。

$ docker-ps

Gitlabコンテナーを停止するには、次のコマンドを実行します。

$ docker stop gitlab-howtoforge-tutorial

コンテナを再開するには、次のコマンドを使用します。

$ docker start gitlab-howtoforge-tutorial

コンテナを削除したい場合は、次のコマンドで削除できます。

$ docker container rm gitlab-howtoforge-tutorial
ステップ11-Gitlabをアップグレードする

Gitlabを最新バージョンにアップグレードする場合は、既存のコンテナーを停止して削除し、最新のイメージをプルしてから、コンテナーを再作成する必要があります。

$ docker stop gitlab-howtoforge-tutorial
$ docker rm gitlab-howtoforge-tutorial
$ docker pull gitlab/gitlab-ee:latest
$ docker-compose up -d

また、質問する前に、コンテナを削除してもデータは安全です。

これで、Dockerを使用してUbuntu18.04サーバーでGitlabをセットアップする方法についてのチュートリアルは終了です。ご不明な点がございましたら、下のコメント欄に投稿してください。


Ubuntu
  1. Ubuntu16.04にDockerをインストールする方法

  2. Ubuntu18.04および16.04LTSにRabbitMQサーバーをインストールする方法

  3. Ubuntu18.04および16.04LTSにGitlabサーバーをインストールする方法

  1. Ubuntu18.04にDockerをインストールする方法

  2. Ubuntu20.04LTSにXrdpサーバーをインストールする方法

  3. Ubuntu20.04LTSにDockerをインストールする方法

  1. Ubuntu20.04にDockerをインストールする方法

  2. Ubuntu 22.04 /20.04LTSにDockerをインストールする方法

  3. Ubuntu18.04LTSにNginxを使用してHTTPGitサーバーをインストールする方法