無料のオンプレミスGitサーバーを選ぶなら - Giteaが勝者です!
優れたオープンソースのGitサーバーを選ぶのは難しいです
プロジェクトをオープンクラウドのGitプロバイダーから移行し、ローカルで内部のGitサーバーを自社でホストすることを検討していますか?
サーバーの選択
自分のGitサーバーを運用するというのは、それほど難しくないですよね?
今や、選択肢が非常に限られている無料のGitサーバーの中から選ぶことになります。 Bonobo Gogs vs Gitea vs Gitlab.
Bonoboは無料ですが、Windows専用でLinux版はありません。
Gitlabは機能が豊富ですが、リソースを多く消費します。これは手を動かして体験する必要があります。商用製品ですが、 無料版もあります 。
Gogsは非常に軽量で、試してみたところよく動作しましたが、コンテナレジストリがありません。
比較では、私にとってはGiteaが有利です。
GiteaとPostgreSQLをDockerで構築
https://docs.gitea.com/next/installation/install-with-docker
cd ~
mkdir gitea
cd gitea
docker-compose.yml:
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
depends_on:
- db
db:
image: postgres:14
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
networks:
- gitea
volumes:
- ./postgres:/var/lib/postgresql/data
その後、
docker-compose up -d
を実行してください。
http://localhost:3000/にアクセスしてください。
停止するには、
docker-compose down
を実行してください。
ボリュームは残ります。
リソース使用量
コンテナは260MBのRAMと少しのCPUを使用しています。
Dockerイメージの合計サイズは583MBです。 そのうち422MBはpostgres:14イメージです。 リソースが制限されている場合は、postgres:14-alpineイメージが239MBで使用可能かもしれません。
PS. 10以上のリポジトリをGiteaに移行した後、フォークやクローンを行うと、Giteaコンテナだけでも420MBのRAMを使用しています。 今後も注意が必要です。
2つのリポジトリを同期する
https://docs.gitea.com/next/usage/repo-mirror
プッシュとプルが可能です。
プル
- トップ右の「Create…」メニューから「New Migration」を選択してください。
- リモートリポジトリサービスを選択してください。
- リポジトリURLを入力してください。
- リポジトリに認証が必要な場合は、認証情報を入力してください。
- 「This repository will be a mirror」というチェックボックスをオンにしてください。
- 「Migrate repository」を選択して設定を保存してください。
リポジトリは、リモートリポジトリから定期的にミラーリングされます。 リポジトリの設定で「Synchronize Now」を選択することで、同期を強制できます。
既存のリポジトリにプルミラーリングを設定することはできません。 リポジトリが作成された後は、プルミラーリングに変換することはできません。
HTTPS設定
SSL設定についてはこちらに詳しい情報があります: https://docs.gitea.com/next/administration/https-setup
しかし、今はこの方法を試してみましょう(Giteaサイトから取得):
内蔵サーバーを使用する
HTTPSを有効にする前に、有効なSSL/TLS証明書を確保してください。評価やテストには、自己署名証明書を使用できます。 以下のコマンドを実行して、自己署名証明書を生成してください。
gitea cert --host [HOST]
サーバーにApacheやnginxを使用している場合は、リバースプロキシガイドを確認することをお勧めします。
Giteaの内蔵HTTPSサポートを使用するには、app.iniファイルを変更する必要があります:
[server]
PROTOCOL = https
ROOT_URL = https://git.example.com:3000/
HTTP_PORT = 3000
CERT_FILE = cert.pem
KEY_FILE = key.pem
証明書が第三者の証明機関によって署名されている場合(つまり、自己署名されていない場合)、cert.pemには証明書チェーンを含める必要があります。証明書はcert.pemの最初のエントリに、中間証明書は順序に従って続く必要があります(存在する場合)。ルート証明書は含まれなくても構いません、なぜなら接続クライアントはすでに信頼関係を確立するためにそれを持っている必要があります。設定値についての詳細は、Config Cheat Sheetを参照してください。
CERT_FILEまたはKEY_FILEフィールドのファイルパスは、相対パスの場合はGITEA_CUSTOM環境変数に相対するものである必要があります。絶対パスでも構いません。
HTTPリダイレクトの設定 Giteaサーバーは1つのポートしか聞けません。HTTPリクエストをHTTPSポートにリダイレクトするには、HTTPリダイレクトサービスを有効にする必要があります:
[server]
REDIRECT_OTHER_PORT = true
; リダイレクトサービスがリスンするポート
PORT_TO_REDIRECT = 3080
Dockerを使用している場合は、このポートがdocker-compose.ymlファイルに設定されていることを確認してください。
リバースプロキシを使用する
この投稿: Gitea-sslでは、ApacheをTLS終端リバースプロキシとして設定しています。
今後の課題
SSH設定: https://docs.gitea.com/next/installation/install-with-docker
バックアップと復元のテスト。