認証機能付きWebページのセットアップ
1. GitHubリポジトリ作成
任意でリポジトリを作成して、ローカルにpullして作業する。
なお、.gitignoreはNextjsのテンプレートを指定した。
2.VitePress初期セットアップ
macbook に Node.js をインストール
brew install nodeVitePress のインストール
npm install vitepressサイトの初期化
npx vitepress init初期設定を聞かれるので、適宜指定する。
noimasaki@MacBook-Air docs-noimk-com % npx vitepress init
┌ Welcome to VitePress!
│
◇ Where should VitePress initialize the config?
│ ./
│
◇ Site title:
│ docs.noimk.com
│
◇ Site description:
│ A VitePress Site
│
◇ Theme:
│ Default Theme
│
◇ Use TypeScript for config and theme files?
│ Yes
│
◇ Add VitePress npm scripts to package.json?
│ Yes
│
└ Done! Now run npm run docs:dev and start writing.
Tips:
- Make sure to add .vitepress/dist and .vitepress/cache to your .gitignore file.忘れないうちにTipsで出力されたディレクトリを.gitignoreに記述する
# vitepress
.vitepress/dist
.vitepress/cacheここまででVitePressの初期セットアップは完了したので、開発サーバを起動してみて確認してみる。 各種実行スクリプトはpackage.jsonのscriptsで規定されており、デフォルトで規定されているのは、npx vitepress devと同等のスクリプトを実行してくれる下記コマンドにて開発サーバの起動が可能。
npm run docs:dev
この後、Cloudflare Pagesにてビルド設定をする必要があるが、VitePressのビルド関連の設定はデフォルトである以下のままとする。
- Build Command: npm run docs:build
- Output Directory: docs/.vitepress/dist
3. Cloudflare Pages作成
まず、CloudflareからGithubへのアクセス権限を付与する。これによって、GitHubのリポジトリを更新することでCloudFlareが自動的にビルド&デプロイが可能となる。
GitHubにて プロフィール > Settings > Applications > Cloudflare Workers and Pagesからアクセス許可するリポジトリを追加指定する。

Cloudflareにて コンピューティングとAI > Workers & Pages > アプリケーションを作成する に進むと、Workersを作成できる画面となる。 今回はPagesを作成したいため、Looking to deploy Pages? Get started をクリックしてClassic画面?に遷移する。

すでに作成したGitHubのリポジトリからPagesを作成するため、既存の Git リポジトリをインポートするを選択

GitHub側でアクセス許可したリポジトリが見えるので、Pagesにしたいリポジトリを選択し、

ビルド設定を指定して、保存してデプロイ

ここまでで、Cloudflare Pagesは完成し、デプロイされた。 開発プレビュー画面も確認することが可能。
4. カスタムドメインの指定
公開されたページへ、カスタムドメインを割り当てて任意のドメインでアクセスできるようにする。
Pagesプロジェクトから、カスタムドメイン > カスタムドメインを設定

任意のカスタムドメインを指定して、続行

指定したカスタムドメインは開発プレビューへCNAMEされる模様。ドメインをアクティブにするをして完了。

5. Cloudflare Access で docs.noimk.com を認証付きにする
Zero Trust のページから Accessコントロール > アプリケーション > アプリケーションを追加する

アプリケーションの種類は セルフホスト
アプリケーションの構成は以下のように、メールによるOne-time PINを許可する


メインのドメイン名だけでなく、開発プレビューページ用のドメイン名も認証対象としておく。
