本記事では、Akamai Connected Cloud(旧:linode) のオブジェクトストレージで静的サイトホスティングをする手順を日本語で解説します。
今回は Vite + React のアプリケーションをホストする流れを紹介します。
前提
aws S3 のようにコンソールポチポチで、簡単に静的サイトホスティングの設定をすることはできません。
CLI からバケットやオブジェクトに対して、設定を変更するコマンドを叩く必要があり、設定状態に関してもコンソールから確認することはできません。
バケットに独自ドメイン振る時には、自分で証明書発行&管理しないといけないので、手間があります。
上記を見るとデメリットばかりですが、メリットはあります。
- 安い。
- 標準で https の通信が可能
以上です。
公式ドキュメント
日本語のドキュメントがないのと、若干内容が古いまま放置されているので注意が必要です。
必要なもの
- オブジェクトストレージ(バケット)
作成済みとして扱い、リージョンは大阪(jp-osa-1)を想定します。
- 該当バケットへのアクセスキー
作成済みとして扱います。
こちらは HomeBrew を利用したインストールから解説します。
- Node.js
インストール済みを想定し、Version 23.6.0 を想定します。
s3cmd のインストールから設定まで
- インストール
brew install s3cmd
- 設定ファイル作成
s3cmd --configure
- 対話式ウィザードの入力内容
Access Key:
→ {アクセスキー}
Secret Key:
→ {シークレットキー}
Default Region [US]:
→ US
S3 Endpoint [s3.amazonaws.com]:
→ jp-osa-1.linodeobjects.com
DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]:
→ %(bucket)s.jp-osa-1.linodeobjects.com
Encryption password:
→ {Enter を入力}
Path to GPG program:
→ {Enter を入力}
Use HTTPS protocol [Yes]:
→Yes
HTTP Proxy server name:
→ {Enter を入力}
Test access with supplied credentials? [Y/n]
→ n
Save settings? [y/N]
→ y
- 設定ファイルを変更:リージョンを日本(jp-osa-1)
vi .s3cfgで、website_endpointの値を以下のように修正
website_endpoint = %(bucket)s.website-jp-osa-1.linodeobjects.com/
静的サイト用の設定実施
- ウェブサイトホスティングの設定
s3cmd ws-create --ws-index=index.html --ws-error=404.html s3://{設定したバケットLabel}
この設定で該当バケットは、基本 index.html を参照し、参照する内容がない場合には 404.html を参照する設定になります。
- 設定が反映されているかの確認
s3cmd ws-info s3://{設定したバケットLabel}
→ リターンされる値
Bucket s3://{設定したバケットLabel}/: Website configuration
Website endpoint: http://{設定したバケットLabel}.website-jp-osa-1.linodeobjects.com/
Index document: index.html
Error document: 404.html
React プロジェクトの用意
- プロジェクトのセットアップ
npm create vite@latest host-apps -- --template react
- ライブラリのインストールとプロジェクトのビルド
npm install && npm run build && cd dist
ビルドされたファイルがある`dist`ディレクトリからデフォルトの vite + React アプリをバケットに Push します。
バケットにファイルをアップロードし、公開設定にする
- ファイルのアップロード
s3cmd put --recursive . s3://{設定したバケットLabel}
- ファイル自体の公開設定の変更
s3cmd setacl s3://{設定したバケットLabel} --acl-public --recursive
- CSS を明示的に設定変更
s3cmd modify --mime-type='text/css' s3://{設定したバケットLabel}/assets/{cssファイル}
これで静的サイトホスティングの設定は完了です。
アクセス用 URL
https://{設定したバケットLabel}.website-jp-osa-1.linodeobjects.com
最後に
最初は公式ドキュメントにある Hugo を利用しようとしましたが、ドキュメントの内容が古く Hugo 自体でエラーが発生し苦労しました。。。
メガクラウドのサービスより難易度が高めですが、ランニングコストが安いのが魅力なのでぜひチャレンジいただけると財布が幸せになると思います。
以上、どなたかの参考になれば幸いです。