無料のサーバー 1 台で動く
Render の無料プラン(512MB RAM / 0.1 CPU)を想定して、軽さを最優先に作っています。起動直後のメモリは約 35MiB です。
ハッカソンのための小さな Workers ホスティング
Kanzume は、Workers 向けに書いたコード(export default { fetch } と wrangler.jsonc)を書き換えずに動かせるセルフホスト環境です。Render の無料プランに置けて、GitHub Actions からは URL と Token の 2 つだけでデプロイできます。
Render の無料プラン(512MB RAM / 0.1 CPU)を想定して、軽さを最優先に作っています。起動直後のメモリは約 35MiB です。
fetch ハンドラ・KV・R2・静的アセットを wrangler の設定どおりに使えます。あとから wrangler deploy でほかへ移すときも、コードはそのままです。
GitHub Actions にステップを 1 つ足すだけです。wrangler でのバンドルも Action が引き受けるので、ほかのサービスのアカウントは要りません。
パスキーでログインし、デプロイ履歴・ビルドログ・デプロイ中のコード・リクエストごとのログやエラーを確認できます。メンバーはチーム ID で参加します。
リポジトリを fork して、Render の New > Blueprint で選ぶだけです(render.yaml が Docker の無料 Web Service を作ります)。自分のサーバーなら Docker で動かせます。
docker build -t kanzume .
docker run -d -p 8080:8080 -v kanzume-data:/data kanzume
/_admin/kanzume を開き、環境変数 KANZUME_SETUP_TOKEN を入力して最初のパスキーを登録します。2 人目以降は、設定に出るチーム ID を入力して登録します。
管理画面の設定に出ている値を、デプロイしたいリポジトリの Variables(KANZUME_URL)と Secrets(KANZUME_TOKEN)に登録します。
あとは main に push するたびにデプロイされます。
name: Deploy to Kanzume
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: kazukingzz/Kanzume/action@main
with:
url: ${{ vars.KANZUME_URL }}
token: ${{ secrets.KANZUME_TOKEN }}
まだ何もデプロイしていない Kanzume なら、管理画面に GitHub の public リポジトリの URL を貼るだけでもデプロイできます。このページのソースは examples/worker にあります。
| fetch ハンドラ | ○ | ES Modules 形式。オブジェクトと WorkerEntrypoint の両方 |
|---|---|---|
| KV | ○ | get / put / delete / list、metadata、expirationTtl |
| R2 | ○ | get / put / head / delete / list、range、httpMetadata |
| Static Assets | ○ | html_handling / not_found_handling / run_worker_first |
| nodejs_compat | △ | buffer・crypto・stream・util など。fs や net は使えない |
| D1・Durable Objects・Cron・Queues | × | 今は対応していません |
Worker は 1 台のサーバーの中で動かすので、デプロイできる人(Token とチーム ID を持つ人)は信頼する前提です。詳しくは README を見てください。