AppsConsole
Production
Deploy the Console to Railway.
Railway service
- Add a service → Docker Image →
ghcr.io/yannickarmspach/sherpa-console:latest - Add ghcr.io registry credentials (GitHub username + PAT with
read:packages) - Set the port to
3001
See Deploy for the build & push workflow.
Environment variables
SUPABASE_URL=https://xxxxx.supabase.co
SUPABASE_ANON_KEY=eyJ...
SUPABASE_SERVICE_ROLE_KEY=eyJ...
LEMONSQUEEZY_API_KEY=
LEMONSQUEEZY_WEBHOOK_SECRET=
LEMONSQUEEZY_STORE_ID=
LEMONSQUEEZY_VARIANT_ID=
WORKER_SECRET=<generate a random secret>Domain
Set up a custom domain (e.g. console.sherpa.dev). Update the Supabase auth redirect URLs to match.
LemonSqueezy webhook
In the LemonSqueezy dashboard → Settings → Webhooks:
| Setting | Value |
|---|---|
| URL | https://your-console-domain.com/api/webhooks/lemonsqueezy |
| Secret | A random string (set as LEMONSQUEEZY_WEBHOOK_SECRET) |
| Events | subscription_created, subscription_updated, subscription_cancelled |
Payment flow
- User creates an instance in the Console
- Console redirects to LemonSqueezy checkout (with
instance_id+user_idin custom data) - User completes payment
- LemonSqueezy webhook → Console creates subscription + provision job
- Worker provisions Railway instance
- Instance status updated back to Console
For detailed LemonSqueezy setup (store, products, API keys, local testing), see the LemonSqueezy integration guide.