GitHub PagesはPrivate Repositoryで使える?公開条件と限定公開の違い【2026】¶
対象 / ポイント
対象: GitHub Pagesのソースを非公開にしたい人、またはサイトを関係者だけに公開したい人。
ポイント:
- 個人アカウントではGitHub Pro、組織ではGitHub Team以上で非公開リポジトリを公開元にできる
- 非公開リポジトリから作っても、通常のPagesサイトはインターネットに公開される
- サイト自体の限定公開にはGitHub Enterprise Cloudの組織とPagesアクセス制御が必要となる
結論:リポジトリの非公開とサイトの限定公開は別機能¶
GitHub Pagesでは、ソースリポジトリの可視性と公開サイトの可視性を 分けて考える必要がある。非公開リポジトリからPagesを生成できても、 サイトまで自動的に非公開になるわけではない。12
| 実現したいこと | 必要な条件 | サイトの可視性 |
|---|---|---|
| 公開リポジトリからサイトを公開 | GitHub Free以上 | 公開 |
| 個人の非公開リポジトリからサイトを公開 | GitHub Pro以上 | 原則公開 |
| 組織の非公開リポジトリからサイトを公開 | GitHub Team以上 | 原則公開 |
| 組織内の関係者だけに公開 | GitHub Enterprise Cloudの組織とPagesアクセス制御 | 非公開 |
GitHub.com上の一般的なブログやドキュメントなら、 「ソースは非公開、完成したサイトは公開」という構成が現実的だ。 社内文書など閲覧者も制限したい用途では、Enterprise Cloudの限定公開条件を確認するか、 認証機能を持つ別のホスティングを選ぶ。
プラン別の利用条件¶
GitHub公式のプラン説明では、GitHub FreeのPagesは公開リポジトリが対象となる。 GitHub Proは個人アカウントの非公開リポジトリ、GitHub Teamは組織の 非公開リポジトリからのPages公開に対応する。1
| 所有者 | プラン | 非公開リポジトリを公開元にできるか |
|---|---|---|
| 個人 | GitHub Free | できない |
| 個人 | GitHub Pro | できる |
| 組織 | GitHub Free for organizations | できない |
| 組織 | GitHub Team | できる |
| 組織 | GitHub Enterprise Cloud | できる。条件を満たすプロジェクトサイトではアクセス制御も可能 |
料金は変更される可能性があるため、契約前にGitHubのプラン比較で確認する。
非公開リポジトリから公開する手順¶
1. 所有者とプランを確認する¶
対象リポジトリが個人所有か組織所有かを確認し、個人ならPro以上、組織ならTeam以上を利用する。 プランを下げて条件を満たさなくなると、Pagesサイトは非公開化ではなく 公開停止になる場合がある。3
2. 公開元を設定する¶
リポジトリの Settings → Pages を開き、Build and deployment で公開方法を選ぶ。GitHub Pagesは次の公開元に対応する。2
- ブランチのルート(
/)または/docsフォルダ - GitHub Actionsのワークフロー
静的HTMLをそのまま置くならブランチ公開、MkDocsなどのビルドが必要なら GitHub Actionsを使うと管理しやすい。具体的な設定は GitHub PagesでMkDocsサイトを公開する手順を参照。
3. 公開URLと可視性を確認する¶
デプロイ完了後、Settings → Pages に表示されるURLをログアウト状態または プライベートブラウズで開く。非公開リポジトリを使っていても閲覧できるなら、 通常の公開Pagesサイトとして正しい動作だ。
限定公開が必要な場合は、Enterprise Cloud組織が所有する非公開または内部リポジトリの プロジェクトサイトでアクセス制御を設定する。組織サイトではこのアクセス制御を 利用できない。4
セキュリティ上の注意¶
ビルド成果物に秘密情報を含めない¶
非公開リポジトリのファイルがそのまま公開されなくても、生成されたHTML、JavaScript、ソースマップ、画像などは公開サイトの閲覧者から取得できる。次の情報をビルド成果物へ埋め込んではならない。
- APIキー、アクセストークン、パスワード
- 社内URLや顧客情報
- 公開を想定していないソースマップや設定値
GitHubも、Pagesサイトはインターネット上で公開されるため機密データを削除するよう案内している。2
JavaScriptだけのパスワード保護は使わない¶
ブラウザ内のJavaScriptでパスワードを照合する方法では、判定コードや保護対象ファイルを 利用者が取得できる。実用的なアクセス制御にはならない。限定公開が必要なら、 GitHubのPagesアクセス制御、または認証を提供するホスティングやゲートウェイを使う。
カスタムドメインを設定する¶
Settings → Pages → Custom domain にドメインを入力し、DNS側に GitHub Pages向けのレコードを設定する。DNS設定後は Enforce HTTPS を有効にする。 ドメインの乗っ取りリスクを減らすため、GitHubでドメインを事前に検証することも 推奨されている。35
設定例やDNS切り替えの考え方は、 GitHub PagesとCloudflareで無料ホスティングする方法も参考になる。
よくあるトラブル¶
非公開リポジトリに変更したら404になった¶
現在のアカウントまたは組織プランが、非公開リポジトリからのPages公開に対応しているか確認する。GitHub Freeでは公開元を非公開にしたまま公開できない。
Actionsは成功したがサイトが更新されない¶
Settings → Pages で公開元がGitHub Actionsになっているか、対象ワークフローが Pagesへデプロイしているかを確認する。複数サイトを管理する場合は 複数のGitHub Pagesを運用する方法も参照。
非公開リポジトリなのに誰でも閲覧できる¶
通常のPagesサイトでは仕様どおりだ。リポジトリの非公開設定はソースへのアクセスを制限するもので、公開サイトへの認証を追加するものではない。
まとめ¶
ソースだけを隠したい場合は、個人ならGitHub Pro、組織ならGitHub Team以上で 非公開リポジトリからPagesを公開できる。一方、閲覧者も限定したい場合は GitHub Enterprise Cloud組織のPagesアクセス制御が必要となる。
最初に「隠したいのはソースか、完成したサイトか」を決めれば、必要なプランと構成を 誤りにくい。自動デプロイまで整える場合は GitHub PagesとMkDocsの自動化ガイドへ進む。