ホーム 記事一覧

GitHub vs GitLab — 選び方と GitLab セルフホスト入門

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

このスクリプトは自動的に以下の作業を行います:

  1. GitLab の GPG キーをダウンロード
  2. APT リポジトリを追加
  3. ソースリストを更新

ステップ 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分で完了
  • 用途に応じて使い分けるのが最も効果的

おすすめの書籍

GitLab が好きな方におすすめ

GitHub が好きな方におすすめ