GitHub vs GitLab — 選び方と GitLab セルフホスト入門
この記事でわかること
- GitHub と GitLab の違いがわかる
- それぞれのメリット・デメリットがわかる
- GitLab をセルフホストする理由がわかる
- Ubuntu で GitLab を立ち上げる手順がわかる
まず知っておきたい用語
| 用語 | 意味 |
|---|---|
| Git | コードの変更履歴を管理するツール。複数人で同じコードを編集できる |
| CI/CD | コードの変更を自動的にテストし、本番環境にデプロイする仕組み |
| DevOps | 開発(Development)と運用(Operations)を連携させる取り組み |
| DevSecOps | DevOps にセキュリティ(Security)を組み込んだもの |
| OSS | ソフトウェアのソースコードが公開されており、誰でも自由に利用・修正できるもの |
| SAST | ソースコードを自動的に解析し、脆弱性を見つける技術 |
| DAST | 実際にアプリケーションを動かして脆弱性を検出する技術 |
| セルフホスト | クラウドサービスを使わず、自前のサーバーでソフトウェアを動かすこと |
まず結論
| GitHub | GitLab | |
|---|---|---|
| 提供元 | Microsoft | GitLab Inc. |
| タイプ | クラウド中心 | クラウド + セルフホスト |
| 主な強み | コミュニティ・OSS・Copilot | 統合DevSecOps・セルフホスト |
| CI/CD | GitHub Actions | GitLab CI(内蔵) |
| セキュリティ | 有料アドオン | プラン別に内蔵 |
| AI | Copilot(IDE連携) | GitLab Duo |
| 無料枠 | 無制限リポジトリ | 無制限リポジトリ |
| セルフホスト | Enterprise Server(有料) | Community Edition(無料) |
一言で言うと:
- GitHub = 「世界中の開発者が集まる巨大的コミュニティ」
- GitLab = 「開発から運用までを1つの画面で完結させるプラットフォーム」
それぞれの特徴を詳しく
GitHub とは
GitHub は世界最大のソフトウェア開発プラットフォームです。1億人以上の開発者に利用されており、OSS プロジェクトの殆どが GitHub で公開されています。
得意なこと
- オープンソースコミュニティ(世界最大級)
- GitHub Copilot(AI コード補完)
- 多くの外部サービスとの連携
- 直感的でわかりやすい UI
不得意なこと
- セルフホストは有料(Enterprise Server)
- CI/CD は外部アクションに依存しやすい
- セキュリティ機能は別売りアドオン
GitLab とは
GitLab は「ソフトウェア開発のライフサイクル全体」を1つのプラットフォームでカバーする DevOps プラットフォームです。コード管理から CI/CD、セキュリティスキャン、デプロイまで、すべてが内蔵されています。
得意なこと
- CI/CD が標準内蔵(別ツール不要)
- セルフホストが無料で利用可能
- セキュリティ機能が充実
- 1つの画面で開発全体を管理
不得意なこと
- 多機能ゆえに UI がやや複雑
- コミュニティは GitHub より小規模
- 学習コストが若干高い
メリット・デメリットまとめ
GitHub
| メリット | デメリット |
|---|---|
| 世界最大の開発者コミュニティ | セルフホストは有料 Enterprise のみ |
| GitHub Copilot が強力 | セキュリティは別アドオンが必要 |
| 外部サービスとの連携が豊富 | CI/CD がサードパーティに依存しやすい |
| 直感的で使いやすい UI | データが Microsoft のクラウド上 |
| 無料枠が手厚い | — |
GitLab
| メリット | デメリット |
|---|---|
| CI/CD・セキュリティが標準内蔵 | UI がやや複雑 |
| セルフホストが無料(Community Edition) | コミュニティが GitHub より小規模 |
| 1つのプラットフォームで完結 | 有料プランは割高($29/月〜) |
| データの自己管理が可能 | 学習コストが若干高い |
| コードがトレーニングに使われない | — |
用途別おすすめ
| 場面 | おすすめ |
|---|---|
| オープンソースプロジェクトを始めたい | GitHub(コミュニティが圧倒的) |
| 会社のコードを外部に出したくない | GitLab(セルフホスト無料) |
| CI/CD を簡単に始めたい | GitLab(内蔵済み) |
| AI コード補完を使いたい | GitHub(Copilot が最強) |
| セキュリティ要件が厳しい | GitLab(SAST/DAST 内蔵) |
| 既存のツールと連携したい | GitHub(マーケットプレイス) |
| 開発から運用まで一元管理したい | GitLab(All-in-One) |
GitLab をセルフホストする理由
「なぜわざわざ自前サーバーで動かすの?」と思うかもしれませんが、明確なメリットがあります。
1. データの完全自己管理
GitLab をセルフホストすると、コード・Issue・CI/CD のログ・ユーザー情報のすべてが自分のサーバー内に残ります。
- 金融・医療など機密情報を取り扱う組織
- 法律やコンプライアンスでデータの海外移送が禁止されている場合
- セキュリティポリシー上、外部サービスが使えない場合
2. コストの削減
GitHub Enterprise Server は ユーザー1人あたり月額21ドル からです。一方、GitLab Community Edition は 完全無料 でユーザー数無制限です。
| GitHub Enterprise Server | GitLab Community Edition | |
|---|---|---|
| 料金 | $21/ユーザー/月〜 | 無料 |
| ユーザー数制限 | なし | なし |
| 機能 | 高度なセキュリティ | CI/CD・Issue・Registry すべて内蔵 |
3. カスタマイズの自由度
GitLab の設定ファイル(gitlab.rb)を編集すれば、ほぼすべての機能をカスタマイズできます。メールサーバーの変更、LDAP 認証の統合、バックアップ方法の変更など、自社環境に合わせた運用が可能です。
4. エアギャップ環境対応
エアギャップ(Air Gap)とは、インターネットから完全に切断された環境のことです。軍事施設、工場の生産ライン、研究施設など、外部ネットワークに接続できない場所でも、GitLab を導入して開発環境を構築できます。GitHub ではこれは困難です。
Ubuntu で GitLab をセルフホストする方法
ここでは最も簡単な Omnibus パッケージ を使った方法を紹介します。Omnibus とは「すべて入り」という意味で、PostgreSQL・Redis・Nginx などをすべて1つのパッケージにまとめた、GitLab 公式のインストーラーです。
セットアップ前に必要なもの
| 項目 | 推奨仕様 |
|---|---|
| OS | Ubuntu 22.04 LTS または 24.04 LTS |
| RAM | 最低 4GB(推奨 8GB) |
| ストレージ | 最低 50GB |
| ドメイン | gitlab.example.com のようなドメイン名 |
| ポート | 80(HTTP)、443(HTTPS)、22(SSH)が開放されていること |
ステップ 1: システムの更新
sudo apt update && sudo apt upgrade -y
ステップ 2: 必要なパッケージのインストール
sudo apt install -y curl openssh-server ca-certificates perl
- curl: リポジトリスクリプトのダウンロードに使用
- openssh-server: SSH 接続に使用
- ca-certificates: SSL/TLS 証明書の確認に使用
- perl: GitLab の設定スクリプトに使用
ステップ 3: GitLab のリポジトリを追加
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
このスクリプトは自動的に以下の作業を行います:
- GitLab の GPG キーをダウンロード
- APT リポジトリを追加
- ソースリストを更新
ステップ 4: ファイアウォールの設定
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw enable
ステップ 5: GitLab のインストール
sudo EXTERNAL_URL="https://gitlab.example.com" apt install -y gitlab-ce
重要: gitlab.example.com を実際のドメイン名に変更してください。ドメインの DNS が設定されていない場合、SSL 証明書の自動取得に失敗します。
インストールには 10〜15分 かかります。最後に自動的に gitlab-ctl reconfigure(設定の適用)が実行され、さらに 5〜10分 かかります。
ステップ 6: 初期パスワードの確認
sudo cat /etc/gitlab/initial_root_password
表示された password: の行が初期パスワードです。このファイルは24時間後に自動的に削除される ため、忘れないうちにパスワードを変更してください。
ステップ 7: ブラウザからアクセス
https://gitlab.example.com にアクセスし、以下の認証情報でログインします:
| 項目 | 値 |
|---|---|
| ユーザー名 | root |
| パスワード | ステップ6で取得したパスワード |
ログインしたら、まず パスワードを変更 してください。
ステップ 8: メール設定(オプション)
GitLab からメール通知(パスワードリセット、MR 通知など)を送るには、Postfix または SMTP リレーの設定が必要です。
sudo vim /etc/gitlab/gitlab.rb
以下を追記(例:Gmail の SMTP を使う場合):
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "your-email@gmail.com"
gitlab_rails['smtp_password'] = "your-app-password"
gitlab_rails['smtp_domain'] = "gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
設定変更後は再設定を実行:
sudo gitlab-ctl reconfigure
よくある質問
Q: メモリが足りない場合は?
GitLab は最低 4GB の RAM が必要ですが、8GB 未満では動作が重くなることがあります。メモリが足りない場合は、Swap ファイルを設定して対応できます:
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Q: バックアップはどう取るか?
sudo gitlab-rake gitlab:backup:create
デフォルトでは /var/opt/gitlab/backups に保存されます。定期的にこのコマンドを実行するか、cron で自動化しましょう。
Q: アップデート方法は?
sudo apt update
sudo apt install gitlab-ce
これで新しいバージョンにアップデートされます。アップデート前には必ずバックアップを取ってください。
Q: HTTPS を使いたい場合は?
EXTERNAL_URL を https:// で指定すれば、Let’s Encrypt の証明書が自動的に取得されます。既にインストール済みの場合は、gitlab.rb を編集して再設定してください:
sudo vim /etc/gitlab/gitlab.rb
external_url 'https://gitlab.example.com'
sudo gitlab-ctl reconfigure
まとめ
- GitHub はコミュニティと Copilot が魅力的。OSS や個人開発には最適
- GitLab は CI/CD・セキュリティが内蔵済み。企業の本番環境やセルフホストに強い
- セルフホストは GitLab Community Edition が無料で高機能
- Ubuntu でのセットアップは Omnibus パッケージ で約20分で完了
- 用途に応じて使い分けるのが最も効果的