公式ヘルプによると GitHub Pages は元リポジトリがプライベートであっても構わず公開される とのことですが、具体的な挙動がよくわからなかったので調べてみました。
(その1) docs/ 配下以外に置いたファイルは見える?
Ans: 見えない
GitHub Pages の設定を master branch の docs folder にしている場合、docs フォルダ以外に置いたファイルはウェブサイトから見えるのか、という話です。
+ repo
+ docs
- index.html
- image_public.jpg
- image_private.jpg ← たとえばこれは見えちゃうのか?
見えないようです。公開されるのはあくまで docs 配下であって、docs 内に含まれない repo/image_private.jpg などは見えません。
(その2) プライベートリポジトリ内ファイルの permalink はどう見える?
Ans: URL にトークンが付く。
まず Raw へのリンクそのまま(下記)では 404 Not Found になります。なので仮にユーザー名、リポジトリ名、ファイル名がバレたとしても第三者がアクセスすることはできません。
https://raw.githubusercontent.com/stakiran/a_private_repo/master/readme.md
次に、権限のある人(基本的には本人でしょう)が GitHub ウェブサイト等から Raw にアクセスした場合ですが、以下のようにトークン付き URL が発行されます。
https://raw.githubusercontent.com/stakiran/a_private_repo/master/readme.md?token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
この トークン付き URL が permalink になっている と考えられます(※1)。つまりトークン付き URL がバレたら中身を見られるということです。
※1 仕様としてどうなっているかはいまいちわかりません。どなたかソース等ご存知だったら教えてください
(おまけ) トークン付き URL の挙動
トークン付き URL の挙動についても調べてみました。
- 挙動1: 有効期限は無いっぽい?
- 発行した URL に一日置いてアクセスしても普通に開けました
- 挙動2: トークン付き URL は認証ユーザーでなくても開ける
- いったんログアウトして開いてみたら普通に開けました
- 挙動3: トークンは発行される毎に微妙に異なっている
挙動3については、発行した URL ならどれでも開けます。つまり10回生成したら10個分の permalink が存在することになります。
(その3) 作った GitHub Pages は被リンクされる?
Ans: されない
たとえば GitHub Gist だと、(Secret Gistで無ければ)作成した Gist はトップページに新着として表示されます。こういう仕組みがあると Google 等に引っかかっちゃいますよね。その辺どうなってんのという話です。
試しにプライベートリポジトリで GitHub Pages を作ってみましたが、公開してから二週間経った後でも Google からは辿れません(ヒット件数ゼロ)。この事から(いささか乱暴ですが)辿れるようなページから勝手にリンクされることはない、と言えそうです。
つまり、GitHub Pages はプライベートでも公開はされるが 誰にも存在を知られていなければ事実上プライベートなのでは と言えるかもしれません。実際 Secret Gist も同じアイデアです。ただ GitHub Pages の場合、URL が https://(USERNAME).github.io/(REPONAME)/
と単純なので、リポジトリ名さえばれてしまえば直打ちで見られちゃいます
(その4) 支払い忘れ等で有料プランが無効になったら GitHub Pages はどうなる?
Ans: わかりません(ご存知でしたら教えてください)
まずリポジトリについては、再び有料プランを契約するまでは一切アクセスできなくなります。clone もできませんし Web からも見えません。
一方で GitHub Pages については、すいません調べてません。有料プランの有効無効にかかわらずアクセスはできる気はするんですが、どうなんでしょうね。ご存知の方、いたら教えてください
おわりに
半分ネタみたいなものですが、プライベートリポジトリで GitHub Pages を運用した時の挙動について調べてみました。参考になれば(?)幸いです。
間違いや他にも面白いネタ等ありましたら、ぜひ教えてください