Dev · KYC不要
Gitea をオフショアVPSでホスト
no-KYCで暗号資産決済のVPS上に、自分だけの軽量なセルフホスト型Gitフォージを構築し、すべてのリポジトリ、issue、CIパイプラインをサードパーティのクラウドから切り離しておきましょう。
概要
Giteaは、Go言語で書かれたセルフホスト型のGitサービスです。GitHub/GitLabの軽量な代替として、リポジトリ、プルリクエスト、issue、wiki、リリース、Actions(CI/CD)を提供します。単一のバイナリまたはDockerイメージとして配布され、メモリ使用量も小さいため、ソースコードを完全に自分たちで管理したいチームに最適です。
オフショアでホストする理由
ソースコードはチームが保有する中でも最も機密性の高いデータの一つです。身元を明かさないオフショアVPSでホストすることで、大手コードホスティングプラットフォームのデータ保持・削除ポリシーの手の届かない場所に置くことができます。no-KYCで暗号資産決済を行えば、プロジェクトのインフラが企業の身元情報に紐づくことはなく、無制限帯域幅のおかげでクローン、CI実行、リリースのダウンロードが従量制の思わぬ制限を受けることもありません。
デプロイ
実際に動作するリファレンス構成
これを新しいChainVPSインスタンスにコピーしてください。プレースホルダーを置き換えてから起動します。
# docker-compose.yml — Gitea + PostgreSQL on Ubuntu 24.04
# 1) apt install docker.io docker-compose-v2
# 2) put this file in /opt/gitea and run: docker compose up -d
# 3) open http://SERVER_IP:3000 to finish the web installer
services:
server:
image: gitea/gitea:1.22
container_name: gitea
restart: always
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=CHANGE_ME_STRONG_DB_PW
# correct clone URLs — set to your domain once DNS is ready:
- GITEA__server__DOMAIN=git.example.com
- GITEA__server__ROOT_URL=https://git.example.com/
- GITEA__server__SSH_PORT=222
- GITEA__service__DISABLE_REGISTRATION=true
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000" # web UI — front with a TLS reverse proxy in production
- "222:22" # git-over-SSH (host 222 -> container 22)
depends_on:
- db
networks:
- gitea
db:
image: postgres:16
container_name: gitea-db
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=CHANGE_ME_STRONG_DB_PW
- POSTGRES_DB=gitea
volumes:
- ./postgres:/var/lib/postgresql/data
networks:
- gitea
networks:
gitea:
external: false
ファイアウォール
開放するポート
| ポート | プロトコル | 用途 |
|---|---|---|
| 3000 | TCP | Gitea WebUIおよびHTTP git — 本番環境ではTLSリバースプロキシ(Caddy/Nginx)の背後に置いてください |
| 222 | TCP | Git-over-SSH(ホストポートをコンテナの22番にマッピング) — SSH鍵によるclone/pushに使用 |
| 443 | TCP | ドメインと証明書の準備が整った後、リバースプロキシ経由のHTTPS用 |
| 22 | TCP | 管理用のホストSSH — Giteaの222番ポートとは別のポートにし、鍵認証のみにしてください |
適正サイジング
必要なプラン
VPS Nano/Small (1-2 vCPU, 2 GB RAM)
個人開発者や少人数のユーザー、数十件のリポジトリ、CIなし。Giteaのアイドル時メモリ使用量は150-200MB程度です。
VPS Pro (2-4 vCPU, 4-8 GB RAM)
小規模チーム、活発なプルリクエスト、さらにCI用のGitea Actionsランナーを1〜2台。大きなリリース成果物用にストレージボリュームを追加してください。
Dedicated(またはリポジトリ用のStorage VPS)
多数の同時ユーザー、大規模なmonorepo、CIの高い同時実行数、あるいはLFSを多用するメディア。専有CPUによりclone/pack処理を高速に保ち、リポジトリ/LFSデータ用にはStorageプランを組み合わせてください。
最適なロケーション: プライバシー重視のロケーションを選びましょう — スイス(CH)とアイスランド(IS)はソースコードにとって最も強固なデータ保護体制を提供し、オランダ(NL)、ルーマニア(RO)、モルドバ(MD)、ルクセンブルク(LU)も確かなオフショアの選択肢です。gitの往復通信は遅延の影響を受けやすいため、clone/pushのレイテンシを抑えるにはコントリビューターに最も近いリージョンを選んでください。
セキュリティを固める
セキュリティ強化チェックリスト
- ポート3000を生のままインターネットに公開しないでください — GiteaはTLSリバースプロキシ(Caddyの自動HTTPS、またはNginx + certbot)の前段に置き、GITEA__server__ROOT_URLをhttpsドメインに設定して、クローンURLが正しくなるようにしてください。
- 管理者アカウントを作成したら、すぐにDISABLE_REGISTRATION=true(composeにはすでに設定済み)にして、誰も自己登録できないようにしてください。ユーザーは手動または管理パネル経由で招待します。
- git-over-SSHはポート222のまま維持し、ホスト自体のsshdは別のポートにして、両方とも鍵認証のみ(PasswordAuthentication no)にしてください。Giteaはauthorized_keysを内部で管理するため、手動で編集しないでください。
- すべてのアカウントで2FAを有効にし、管理者には必須にしてください。DBパスワードは環境変数から、パーミッション600のDocker secretまたは.envファイルへ移してください。
- ./gitea(リポジトリ、設定、LFS)とgiteaデータベースのpg_dumpを定期的にバックアップし、イメージはlatestではなくバージョンタグ(gitea/gitea:1.22)に固定して、アップグレードを意図的に行えるようにしてください — メジャーバージョンを上げる前にリリースノートを読んでください。
質問
ホスティング Gitea — FAQ
別サービスなしでCI/CDを実行できますか?
はい。Giteaには組み込みのActions(GitHub Actions互換)があります。有効化した上で、ランナーコンテナ(gitea/act_runner)をインスタンスに登録してください。本格的なCI負荷がある場合は、ビルドがWebサービスのリソースを奪わないよう、Mediumプラン以上を使用してください。
SQLite、MySQL、それともPostgreSQL?
SQLiteは軽量な単一ユーザーには十分で、DBコンテナも不要です。チーム利用や今後の成長を見込む場合は、composeに示した通りPostgreSQLを使用してください — 同時実行性能がはるかに優れており、pg_dumpでのバックアップも簡単です。
GitHub/GitLabからリポジトリを移行するにはどうすればよいですか?
Gitea組み込みの移行ツールは、issue・PR・リリース・wikiを含めてURL指定でリポジトリをインポートできます。プライベートリポジトリやメタデータを取得するには、移行フォームに移行元プラットフォームのトークンを追加してください。
大容量ファイル(Git LFS)には対応していますか?
はい、LFSはネイティブにサポートされており、/data以下に保存されます。大容量のバイナリやメディアをホストする場合は、./giteaをStorage VPSのボリュームに配置し、ディスク容量を見込んでおいてください — LFSオブジェクトはすぐに容量を消費します。
no-KYCホストでもコードのプライバシーは守られますか?
リポジトリは選択したオフショア法域内にあるVPSのディスク上に完全に保管され、サードパーティにミラーされることはありません。登録を無効のままにし、HTTPS + SSH鍵を使用し、2FAを有効にして、暗号化したオフボックスバックアップを取ることで、完全な管理下に置けます。
セルフホストをもっと見る