docs: deployment templates for Cloudflare Tunnel, Caddy, Fly.io, Render

examples/compose/cloudflared-paired.yml pairs RefBoard with a cloudflared
sidecar reading a TUNNEL_TOKEN env var — no inbound ports needed, suitable
for home / studio servers.

examples/compose/behind-caddy.yml + Caddyfile fronts RefBoard with Caddy
for automatic Let's Encrypt TLS on a public hostname. Caddy 2's
reverse_proxy transparently upgrades Socket.IO WebSockets.

examples/fly.toml deploys to Fly.io using the GHCR image and a persistent
volume mounted at /app/data. STORAGE_BACKEND=fs so the whole stack is one
machine with one disk.

examples/render.yaml is a Render.com Blueprint targeting the same shape
(GHCR image + attached disk + FS storage).

examples/README.md indexes everything and adds notes for Coolify /
Dokploy / CapRover / Railway, which consume the existing compose file
directly without a dedicated template.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Hiren Kangad
2026-05-21 09:51:52 +05:30
co-authored by Claude Opus 4.7
parent 548d0c753a
commit 33d3109136
6 changed files with 244 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
# Render.com Blueprint for RefBoard.
#
# Quick start:
# 1. Push this file to a Git repo (it lives at refboard/examples/render.yaml
# already, but Render's "New Blueprint" expects render.yaml at the repo
# root — copy or symlink it).
# 2. On Render: New > Blueprint > pick your repo. Render parses this file,
# provisions the disk, and starts the service.
# 3. After first deploy: set JWT_SECRET in the service's Environment tab
# (`openssl rand -base64 64`) and re-deploy. Optional but recommended for
# production — without it, RefBoard auto-generates one in SQLite.
#
# State (SQLite + media bytes + JWT secret) lives on the attached 10 GB disk.
services:
- type: web
name: refboard
runtime: image
image:
url: ghcr.io/metalfinger/refboard:latest
plan: starter # bump to standard if you want more RAM / CPU
healthCheckPath: /health
envVars:
- key: NODE_ENV
value: production
- key: PORT
value: "8000"
- key: STORAGE_BACKEND
value: fs
- key: STORAGE_DATA_DIR
value: /app/data/storage
- key: DB_PATH
value: /app/data/refboard.db
- key: MAX_FILE_SIZE_MB
value: "200"
- key: ALLOW_SELF_REGISTRATION
value: "false"
- key: JWT_SECRET
sync: false # set manually in the dashboard
disk:
name: refboard-data
mountPath: /app/data
sizeGB: 10