Deploy furvoley
Furvoley is a full-stack management CRM for sports clubs.
portal
Just deployed
Postgres-9NHM
Just deployed
/var/lib/postgresql/data
crm-mt
Just deployed
Deploy and Host Furvoley on Railway
Furvoley is a full-stack management CRM for sports clubs. It handles members and squads, recurring dues through Stripe Connect, double-entry accounting and invoicing, events with convocations and attendance, a club store, a member portal, and WhatsApp automations — all from a single Next.js app backed by PostgreSQL.
About Hosting Furvoley
Furvoley ships as a Dockerized Next.js 16 app that needs a PostgreSQL database, a stable public URL, and a handful of secrets. The start script runs prisma db push and bootstraps the admin user on every boot, so the schema converges without a manual migration step. Stripe webhooks self-register from the public URL the first time the CRM is opened, and a scheduled job calls /api/jobs/billing to issue recurring dues. Optional extras add moving parts: a mounted volume to persist the Hermes WhatsApp agent session, and a second service running the same image as a central portal when you host several clubs from one deployment.
Common Use Cases
- A volleyball or amateur sports club managing members, squads, coaches and monthly dues from one panel instead of spreadsheets
- An academy or federation charging recurring fees with Stripe Connect while keeping compliant invoicing and double-entry accounting
- A multi-club operator hosting several clubs from a single deployment, with a central login portal and one isolated database per club
Dependencies for Furvoley Hosting
- A PostgreSQL database (accessed with Prisma 7 via
@prisma/adapter-pg) - A Stripe account (secret key; Stripe Connect for per-club payouts)
- An ApiWass API key — optional, only for the WhatsApp CRM and messaging flows
- An LLM provider key, Ollama Cloud or DeepSeek — optional, only for the Hermes agent
- A Railway volume mounted at
/root/.hermes— optional, persists the WhatsApp session
Deployment Dependencies
Implementation Details
Minimum environment variables for a single-club deployment:
| Variable | Purpose |
|---|---|
DATABASE_URL | Connection string from the Railway PostgreSQL service |
NEXTAUTH_SECRET | Session signing secret (openssl rand -base64 32) |
NEXTAUTH_URL / NEXT_PUBLIC_APP_URL | Your public Railway URL |
STRIPE_SECRET_KEY | Payments; webhooks are auto-created from the public URL |
ADMIN_EMAIL / ADMIN_PASSWORD | Admin account, re-synced on every boot |
CRON_SECRET | Bearer token guarding /api/jobs/billing |
Build and start are plain npm scripts — no custom Railway config needed:
"build": "prisma generate && next build",
"start": "node scripts/start-with-db-sync.cjs"
To host multiple clubs, deploy the same image a second time with PORTAL_CENTRAL_HOST=true, PORTAL_ADMIN_PASSWORD and PORTAL_SSO_SECRET. That service becomes the central login and provisions one tenant_ database per club, while the CRM service runs with MULTITENANT=true.
Why Deploy Furvoley on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying Furvoley on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Template Content
portal
carbollo/furvoley-adminPostgres-9NHM
ghcr.io/railwayapp-templates/postgres-ssl:18PGDATA
pgdata
PGPORT
pg port
POSTGRES_DB
Database
POSTGRES_USER
user
SSL_CERT_DAYS
ssl certificado dias de caducidad
RAILWAY_DEPLOYMENT_DRAINING_SECONDS
draining seconds
crm-mt
carbollo/furvoley-admin