[Cloudflare] Akkoma にベーシック認証を設定する

Hitoshi Arakawa | 2024/01/17 Wed 04:36

以前 Cloudflare にベーシック認証を設定する方法について書いた。

Cloudflare にベーシック認証を設定する|荒川仁志
https://note.com/hitoshiarakawa/n/n0c64cf9f7aa9

僕がやりたいのは Akkoma にベーシック認証を設定することだ。非公開のサイトを作る場合、Akkoma では参加者にアカウントを作ってもらえばいいが、年寄りの家族にそれをしてもらうのは難しい。単に閲覧できる状態になればいいだけなので、パスワード入力のみでアクセスできるようにしたい。

冒頭の投稿内で紹介した記事に従って実際に Akkoma にベーシック認証を設定してみたら、予想以上に苦労したのでその方法をメモしておく。

Akkoma は Cloudflare Tunnel を使って公開している。

環境:
・VMware vSphere Hypervisor 7.0U3g(英語環境)
・Ubuntu Server 22.04.3
・Docker
・Cloudflare Tunnel

(1)Akkoma の Admin FE において、「Settingss>Frontend>Redirect root no login」を / にしておく。

これは非ログインユーザーがトップページにアクセスしたときにリダイレクトされるページだが、デフォルトの「/main/public」のままにしていると、リダイレクトによってベーシック認証でのログインなしに投稿が見えてしまう。非公開にしたいサイトなのでこれを避けたい。Akkoma は https://{ドメイン名}/ のようなトップページにアクセスするとただの空白ページなので、そこにリダイレクトするように / と設定した。

もちろんこのままだと、家族がアクセスしても空白ページになってしまう。https://example.com/main/public のように、/main/public を末尾に付けて家族にはサイトアドレスを教えよう。

(2)以下のページに従い、Cloudflare にベーシック認証を設定する。

Cloudflareでベーシック認証を設定してみた | Tesoro Memo(テゾーロ メモ)
https://blog.tesoro-crea.biz/259/

対象の URL は example.com/* とすればいいのかとおもったが、実際にそう設定すると Akkoma のアカウントからログアウトしてしまい、再びログインできないという事態が起きたりした。

いろいろ試して分かったのは、以下の URL を個別に登録することだった。

  • https://example.com/notice/*
  • https://example.com/main/*
  • https://example.com/users/*
  • https://example.com/lists
  • https://example.com/about
  • https://example.com/bookmarks
  • https://example.com/{ユーザー名}/*
  • https://example.com/{ユーザー名}
  • https://example.com/login
  • https://example.com/search*
  • https://example.com/password-reset
  • https://example.com/announcements

要するに Akkoma の画面上からのクリックでアクセスできるページはすべて個別に登録する必要があるということだ。でないと、ベーシック認証が通ってない状態で例えば https://example.com/about に行き、画面上のクリックで https://example.com/main/public にアクセスすると投稿が見えてしまう。1のリダイレクト同様に、ベーシック認証の抜け道のようなものだ。だから個別に URL を登録することで回避するしかない。

(ひょっとしてあれこれ試す過程でおかしくなったのかもしれないので、実際は example.com/* のみでもうまくいくのかもしれない。)

これで、どういう URL でアクセスしてもベーシック認証のダイアログが出てくるようになった。

Amazon.co.jp: サイバーセキュリティの教科書 eBook : Tom Kranz, Smoky、IPUSIRON, IPUSIRON: Kindleストア
https://amzn.to/3RZqSAi