Run your own Convocados instance using Docker, Fly.io, or any Node.js host.
The project includes a production-ready Dockerfile.
docker build -t convocados . docker run -d \
--name convocados \
-p 3000:3000 \
-v convocados-data:/data \
-e DATABASE_URL="file:/data/convocados.db" \
-e NODE_ENV=production \
convocados The app will be available at http://localhost:3000. The -v flag mounts a named volume so your database persists across restarts.
Convocados is deployed on Fly.io by default. To deploy your own instance:
curl -L https://fly.io/install.sh | sh
fly auth login fly launch This reads the existing fly.toml and creates your app. Accept the defaults or customize the region.
fly volumes create football_data --region cdg --size 1 fly secrets set DATABASE_URL="file:/data/convocados.db"
fly secrets set VAPID_PUBLIC_KEY="your-vapid-public-key"
fly secrets set VAPID_PRIVATE_KEY="your-vapid-private-key"
fly secrets set VAPID_SUBJECT="mailto:you@example.com" fly deploy git clone https://github.com/Cabeda/Convocados.git
cd Convocados
npm ci
npx prisma generate
npm run build
DATABASE_URL="file:./convocados.db" npm run start The start script runs prisma migrate deploy automatically before starting the server.
| Variable | Required | Description |
|---|---|---|
DATABASE_URL | Yes | SQLite connection string, e.g. file:/data/convocados.db |
PORT | No | Server port (default 3000) |
NODE_ENV | No | Set to production for production builds |
VAPID_PUBLIC_KEY | No* | VAPID public key for push notifications |
VAPID_PRIVATE_KEY | No* | VAPID private key for push notifications |
VAPID_SUBJECT | No* | VAPID subject (mailto: or URL) |
* Required only if you want push notifications.
npx web-push generate-vapid-keys to create a new key pair.
Convocados uses SQLite via Prisma. The database file is created automatically on first run.
Migrations are applied by prisma migrate deploy which runs as part of the start script.
The app exposes GET /api/health which returns 200 OK when the server is running. Use this for load balancer or orchestrator health checks.