GitLab自宅サーバー構築
Docker CE VPS活用法とSSH設定の完全ガイド
※本記事は2025年1月最新情報に基づいて執筆されています
GitLabとは?自宅サーバー構築のメリット
GitLab CEの特徴
- 完全オープンソース
- CI/CD機能内蔵
- Issue管理
- プロジェクト管理
- コードレビュー機能
自宅サーバーのメリット
- 完全なプライバシー保護
- 長期的なコスト削減
- カスタマイズ自由度
- ストレージ制限なし
- ユーザー数制限なし
なぜGitLab自宅サーバーなのか?
GitHub Enterpriseが月額数万円かかる中、GitLab CEなら完全無料で同等以上の機能を提供。
プライベートリポジトリも無制限、CI/CDパイプラインも自由に構築できます。
GitLab自宅サーバーの具体的メリット
コスト削減効果
GitHub Teams: 月額4ドル/ユーザー
GitLab Premium: 月額19ドル/ユーザー
GitLab CE: 完全無料
セキュリティ
外部サーバーに依存しない
機密コードの完全保護
アクセス制御の完全管理
カスタマイズ性
Runner設定の自由度
バックアップ戦略選択
統合ツール追加可能
GitLab構築に必要な環境とスペック
推奨システム要件
項目 | 最小要件 | 推奨要件 | 本格運用 |
---|---|---|---|
メモリ (RAM) | 4GB | 8GB | 16GB以上 |
CPU | 2コア | 4コア | 8コア以上 |
ストレージ | 50GB | 100GB SSD | 500GB SSD以上 |
ネットワーク | 1Mbps | 10Mbps | 100Mbps以上 |
Docker環境要件
- Docker Engine 20.10以上
- Docker Compose 1.29以上
- Ubuntu 20.04 LTS以上推奨
- root権限またはsudo権限
ネットワーク要件
- 固定IPアドレス(推奨)
- ポート80, 443開放
- SSH用ポート(22または変更後)
- SSL証明書対応ドメイン
Docker CE GitLab構築手順
1
Docker環境セットアップ
最新のDockerとDocker Composeをインストールします:
# Docker公式リポジトリを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker CEインストール
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# ユーザーをdockerグループに追加
sudo usermod -aG docker $USER
newgrp docker
2
GitLab Docker Compose設定
GitLab用のディレクトリを作成し、docker-compose.ymlファイルを設定:
# GitLab用ディレクトリ作成
mkdir -p ~/gitlab/{config,logs,data}
cd ~/gitlab
# docker-compose.yml作成
cat << 'EOF' > docker-compose.yml
version: '3.8'
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
hostname: 'your-domain.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://your-domain.com'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
nginx['listen_port'] = 80
nginx['listen_https'] = false
nginx['proxy_set_headers'] = {
'Host' => '$$http_host',
'X-Real-IP' => '$$remote_addr',
'X-Forwarded-For' => '$$proxy_add_x_forwarded_for',
'X-Forwarded-Proto' => 'https',
'X-Forwarded-Ssl' => 'on'
}
# バックアップ設定
gitlab_rails['backup_keep_time'] = 604800
gitlab_rails['backup_path'] = '/var/opt/gitlab/backups'
ports:
- '80:80'
- '2222:22'
volumes:
- './config:/etc/gitlab'
- './logs:/var/log/gitlab'
- './data:/var/opt/gitlab'
shm_size: '256m'
EOF
3
GitLab起動と初期設定
GitLabコンテナを起動し、初期パスワードを取得:
# GitLab起動(初回は10-15分程度要する)
docker-compose up -d
# 起動状況確認
docker-compose logs -f gitlab
# 初期rootパスワード取得
docker exec -it gitlab cat /etc/gitlab/initial_root_password
# GitLab管理コマンド実行例
docker exec -it gitlab gitlab-ctl status
docker exec -it gitlab gitlab-ctl reconfigure
重要: 初期パスワードは24時間後に自動削除されるため、必ず記録して新しいパスワードに変更してください。
4
リバースプロキシ設定(Nginx)
SSL終端用のNginx設定:
# Nginx設定ファイル作成
sudo cat << 'EOF' > /etc/nginx/sites-available/gitlab
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
ssl_prefer_server_ciphers off;
location / {
proxy_pass http://localhost:80;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Ssl on;
}
}
EOF
# 設定有効化
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
SSH設定とセキュリティ強化
SSH基本セキュリティ設定
# SSH設定ファイル編集
sudo nano /etc/ssh/sshd_config
# 推奨設定内容:
Port 2222 # デフォルトポート変更
PermitRootLogin no # root直接ログイン禁止
PasswordAuthentication no # パスワード認証無効
PubkeyAuthentication yes # 公開鍵認証有効
MaxAuthTries 3 # 認証試行回数制限
ClientAliveInterval 300 # セッションタイムアウト
ClientAliveCountMax 2
# 設定適用
sudo systemctl restart sshd
GitLab用SSH鍵設定
1. SSH鍵生成(クライアント側)
# ED25519鍵生成(推奨)
ssh-keygen -t ed25519 -C "your-email@example.com"
# または RSA鍵生成
ssh-keygen -t rsa -b 4096 -C "your-email@example.com"
# 公開鍵表示
cat ~/.ssh/id_ed25519.pub
2. GitLabでの鍵登録
- 1. GitLabにログイン
- 2. User Settings → SSH Keys
- 3. 公開鍵を貼り付け
- 4. Titleを設定して保存
SSH接続テストとGit設定
# SSH接続テスト
ssh -T git@your-domain.com -p 2222
# Git グローバル設定
git config --global user.name "Your Name"
git config --global user.email "your-email@example.com"
# リポジトリクローンテスト
git clone ssh://git@your-domain.com:2222/username/project.git
# SSH設定ファイル(~/.ssh/config)
Host gitlab-home
HostName your-domain.com
Port 2222
User git
IdentityFile ~/.ssh/id_ed25519
Git料金比較とコスト分析
主要Gitサービス料金比較(2025年1月現在)
サービス | 無料プラン | 個人プラン | チームプラン | 年間コスト(5名) |
---|---|---|---|---|
GitLab CE (自宅) | 完全無料 | – | – | ¥0 |
GitHub | パブリックのみ | $4/月 | $4/月・人 | ¥36,000 |
GitLab.com | 5名まで | $19/月 | $19/月・人 | ¥171,000 |
Bitbucket | 5名まで | $3/月 | $6/月・人 | ¥54,000 |
コスト削減効果
¥0 – ¥50,000
¥1,000 – ¥5,000
¥12,000 – ¥60,000
※VPS・電気代・ドメイン代含む
投資回収期間
vs GitHub Teams: 約3-6ヶ月
vs GitLab Premium: 約1-2ヶ月
vs Bitbucket: 約6-12ヶ月
5年間で約100万円以上の削減効果
GitLab構築におすすめのVPSサーバー
VPS選択のポイント
性能重視
CPU性能とメモリ容量がGitLabの快適性を左右
セキュリティ
ファイアウォール機能とバックアップ体制
サポート
日本語サポートと技術支援の充実度
運用・保守のベストプラクティス
定期バックアップ設定
# GitLab バックアップスクリプト
#!/bin/bash
docker exec gitlab gitlab-backup create
# crontab設定(毎日2時にバックアップ)
0 2 * * * /path/to/backup-script.sh
監視・アラート設定
ディスク使用量監視
メモリ使用量チェック
GitLab健全性確認
SSL証明書期限管理
よくある質問(FAQ)
Q: GitLab CEで商用利用は可能ですか?
A: はい、GitLab CEは完全にオープンソースであり、商用利用も無料で可能です。ライセンス制限はありません。
Q: GitLabのアップデートはどうすれば良いですか?
A: docker-compose pull
で最新イメージを取得し、docker-compose up -d
で再起動することでアップデートできます。
Q: 自宅サーバーが落ちた場合のリスクは?
A: 定期的なバックアップとクラウドストレージへの同期により、データ損失リスクを最小限に抑えられます。