Same proxy as netlify/functions/ai.mjs, rebuilt as a standalone Bun service on
the CVM host so AI calls stop spending Netlify compute/bandwidth credits and
the sats-paid Routstr key lives on our box.
- ai-proxy/server.ts: Bun.serve on 127.0.0.1:8787 — NIP-98 + Pro gate, model
allowlist, per-IP throttle, /api/ai + /api/ai/status. Own tsconfig
(typecheck:ai in npm test); eslint-ignored like cvm-server.
- ai-proxy/{package.json,.env.example,skatespots-ai.service,Caddyfile,DEPLOY.md}.
- scripts/deploy-ai-proxy.sh (npm run deploy:ai): scp + bun install + unit +
restart, mirroring deploy-cvm.sh.
- Client: one place decides the AI base, src/lib/sasquatchAi.ts (also the NIP-98
u tag). Defaults unchanged (/api/ai on Netlify); set VITE_SASQUATCH_AI_BASE to
move it. Fully reversible.
Deployed and verified on the host: /api/ai/status returns the live Routstr
balance. Public TLS (DNS + Caddy) is the remaining step before switching the app
over, so no client behaviour changes yet.
18 lines
915 B
Caddyfile
18 lines
915 B
Caddyfile
# Caddyfile for the AI proxy host.
|
|
#
|
|
# Replace the site address with the DNS name you point at this server (for
|
|
# example ai.skate-spots.org). Caddy obtains a Let's Encrypt certificate
|
|
# automatically via the HTTP-01 challenge, so ports 80 and 443 must be reachable
|
|
# from the internet (open them in the provider firewall too, not just ufw).
|
|
#
|
|
# Install + run:
|
|
# sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
|
# curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
|
# curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
|
# sudo apt update && sudo apt install -y caddy
|
|
# sudo cp Caddyfile /etc/caddy/Caddyfile && sudo systemctl reload caddy
|
|
|
|
ai.skate-spots.org {
|
|
encode gzip
|
|
reverse_proxy 127.0.0.1:8787
|
|
}
|