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グループに追加して、sudo権限なしでdockerコマンドを使用できるようにします。
$ 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
これで、URL https://giteadomain.com
を使用してGiteaにアクセスしてみることができます。次に、インストールプロセスを続行するために、「サインイン」に移動します。サイトのタイトルなど、いくつかの情報をパーソナライズできます。
必要な場所にドメイン名を必ず指定してください。管理者アカウントの情報も示してください
インストール後、ログインします
新しいリポジトリを作成できます
最初のリポジトリがあります
結論
これで、Ubuntu20.04にDockerを使用してGiteaをインストールするためのすべての手順がわかりました。これはコードのプライベート中央リポジトリです。必要に応じて管理できるようになります。