Ubuntu20.04でDockerを使用してGiteaをインストールする方法

Giteaは、Gitサーバーをセルフホスティングするための無料のオープンソースソフトウェアパッケージです。 また、バグトラッキング、Wiki、コードレビューなどのコラボレーション機能も提供します。 Giteaは、Goで記述されたコミュニティ主導の軽量コードソリューションです。

開発者は、作業時にコードの変更を中央リポジトリに定期的にマージする必要があります。 自分でホストおよび管理するチーム用のプライベート中央リポジトリが必要になる場合があります。 この目的でGiteaを使用できます。 これは、GitHub、Bitbucketなどに似ています。

このチュートリアルでは、 Dockerを使用してGiteaをインストールする オン Ubuntu 20.04

前提条件

  • Ubuntu20.04でインストールされたノード
  • のユーザー sudo 特権

ステップ1:UbuntuにDockerをインストールする

Giteaは、DockerハブからDockerイメージの最新の安定バージョンを提供します。 ソース、バイナリ、およびパッケージとしてインストールできます。 ここでは、Dockerイメージとしてデプロイしています。

Dockerをインストールするには、いくつかの前提条件をインストールする必要があります。

$ sudo apt install apt-transport-https ca-certificates curl software-properties-common

次に、DockerリポジトリのGPキーを追加しましょう。

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

次に、DockerをAPTソースに追加します。 キャッシュが自動的に更新されます。

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

次に、次のコマンドを使用してdockerをインストールします。

$ sudo apt install docker-ce

ユーザーをdockerグループに追加して、dockerコマンドを使用せずに使用できるようにします。 sudo 特権:

$ sudo usermod -aG docker username

ステップ2:Nginxdockerを実行する

HTTPSを有効にするには、Nginx、Apache2、CaddyなどのTLSターミネーションプロキシを使用できます。 この例では、Nginxリバースプロキシとして独立したコンテナを実行します。

$ docker run -d --name nginx -p 80:80 -p 443:443 -v /etc/nginx/htpasswd:/etc/nginx/htpasswd -v /etc/nginx/vhost.d:/etc/nginx/vhost.d:ro -v /etc/nginx/certs:/etc/nginx/certs -v /var/run/docker.sock:/tmp/docker.sock:ro etopian/nginx-proxy

証明書を統合するときに、すべてのデフォルトのHTTPトラフィックをHTTPSにリダイレクトするのに役立ちます。 証明書を統合するためにマップされたボリュームに注意する必要があります。 /etc/nginx/certs

次に、ファイアウォールのポート80と443を開きます。

$ sudo ufw allow 80,443/tcp

また、UFWをまだ有効にしていない場合は、有効にする前に必ずsshを開いてください。

$ sudo ufw allow 'OpenSSH'

まだ有効になっていない場合は、UFWを有効にします

$ sudo ufw enable

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

ステップ3:MySQLdockerを実行する

Giteaには、データを保存するためのデータベースが必要です。 Giteaは、MySQL / MariaDB、PostgreSQL、SQLite、およびMSSQLをサポートしています。 ここでは、すべてのデータを保持するためにMySQLコンテナを実行します。

$ docker run -d --name mysql-gitea -e MYSQL_ROOT_PASSWORD=o$su876HG@zvsRt3BT -v /opt/docker-volume/mysql-gitea:/var/lib/mysql mysql:5.7

コンテナが実行されているかどうかを確認できます

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d41fec8b0e4 mysql:5.7 "docker-entrypoint.s…" 2 hours ago Up 2 hours 3306/tcp, 33060/tcp mysql-gitea
ec9d83a3944e etopian/nginx-proxy "forego start -r" 3 days ago Up 24 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx

Giteaはデフォルトで、ポート3000で接続をリッスンし、HTTPおよびHTTPSポートでリバーサープロキシをリッスンします。 ファイアウォールを使用している場合は、GiteaWebインターフェイスにアクセスするためにポートが開いていることを確認してください。

後で必要になるため、IPアドレスなどのMySQLコンテナの詳細を見てみましょう。

$ docker inspect mysql-gitea

[
{
"Id": "6d41fec8b0e4b6ca465444d5cfea11913decddfd7586f4796702463cf08897fe",
"Created": "2021-10-21T23:48:20.709365573Z",
...
...
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "3f0b32613606db9e0761af15b7fa5d7f7c3b86f4d3b4668d574c579b9468915f",
"EndpointID": "f029fc1797c70d090da19d30cb31ca34c1b6baf4537a807397e931f87262f867",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:03",
"DriverOpts": null
}
...
...

それでは、MySQLコンテナに接続しましょう

$ docker container exec -it mysql-gitea bash

次に、MySQLコマンドラインにアクセスします

# mysql -u root -po$su876HG@zvsRt3BT

次に、Giteaのデータベースとユーザーを作成します

mysql> CREATE USER 'gitea-user'@'%' IDENTIFIED BY '34@zv$TKji@s097BB';

mysql> CREATE DATABASE giteadb;

mysql> GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea-user'@'%';

mysql> FLUSH PRIVILEGES;

mysql> exit;

コンテナも終了します

# exit;

ステップ4:SSL証明書を構成する

安全なドメイン名でGiteaにアクセスするには、SSL証明書をNginxフォルダーにコピーする必要があります。 無料のLet’sEncrypt証明書または認証局からの証明書を使用できます。

証明書をコピーする

$ cp gitea.websitefortesting.com.crt /etc/nginx/certs/

キーをコピーします

$ cp gitea.websitefortesting.com.key /etc/nginx/certs/

ステップ5:Giteadockerを実行する

Giteaを実行するには、以前に起動されたMySQLコンテナに関するいくつかの情報を示す必要があります。

  • mysqlであるデータベースのタイプ
  • mysqlコンテナのアドレスIP
  • データベースの名前
  • データベースのユーザー名
  • データベースユーザーのパスワード
  • giteaが使用するポート

$ docker run -d --name gitea-selfhosted -v /opt/docker-volume/gitea-selfhosted:/data -p 3000:3000 -e VIRTUAL_HOST=gitea.websitefortesting.com -e VIRTUAL_PORT=3000 -e USER_UID=1001 -e USER_GID=1001 -e DB_TYPE=mysql -e DB_HOST=172.17.0.3:3306 -e DB_NAME=giteadb -e DB_USER=gitea-user -e DB_PASSWD=34@zv$TKji@s097BB gitea/gitea:1.8

実行されているかどうかを確認できます

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
321b870a0735 gitea/gitea:1.8 "/usr/bin/entrypoint…" 11 seconds ago Up 10 seconds 22/tcp, 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp gitea-selfhosted
6d41fec8b0e4 mysql:5.7 "docker-entrypoint.s…" 2 hours ago Up 3 minutes 3306/tcp, 33060/tcp mysql-gitea
ec9d83a3944e etopian/nginx-proxy "forego start -r" 3 days ago Up 29 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx

これで、URLhttps://giteadomain.comを使用してGiteaにアクセスしてみることができます。

次に、インストールプロセスを続行するために、「サインイン」に移動します。 サイトのタイトルなどの情報をパーソナライズできます。

GiteaWebインターフェースデータベース設定

必要な場所にドメイン名を必ず指定してください。 管理者アカウントの情報も示してください

GiteaWebインターフェイスドメインと admin アカウント設定

インストール後、ログインします

Giteaダッシュボード

新しいリポジトリを作成できます

新しいリポジトリを作成する

最初のリポジトリがあります

Giteaの最初のレポ

結論

これで、Ubuntu20.04にDockerを使用してGiteaをインストールするためのすべての手順がわかりました。これはコードのプライベート中央リポジトリです。 必要に応じて管理できるようになります。