k-nrs/servel-skill
Overview
This skill provides a self-hosted deployment platform for Docker Swarm with Vercel-like simplicity. It deploys apps, provisions and manages 45+ infrastructure types (databases, queues, caches, platforms), and automates SSL, backups, secrets, and server operations. The CLI focuses on predictable workflows: zero-downtime rolling updates, preview environments, and smart build detection.
How this skill works
The skill auto-detects project type (servel.yaml, docker-compose, Dockerfile, preset, Nixpacks) and runs smart builds that only rebuild changed parts. It provisions infra (postgres, redis, supabase, etc.), injects connection environment variables, manages Traefik routing and SSL, and exposes commands for logs, exec, backup/restore, and node management. Server and node operations are handled via remote/remote server subcommands and support HA, pinning, scheduling, and capacity planning.
When to use it
- Deploy web apps and APIs to a Docker Swarm cluster
- Provision and link managed infrastructure (databases, caches, platforms) to deployments
- Create short-lived preview/PR environments with TTL and auto-cleanup
- Run backups, restores, and rotate secrets for production infra
- Diagnose routing, SSL, and node capacity or rebalance the cluster
Best practices
- Always deploy with --verbose to see full build output and aid debugging
- Link infrastructure with --link-infra to inject DATABASE_URL/REDIS_URL and avoid leaked credentials
- Use preview deployments for PR testing (servel deploy --preview --ttl) and clean expired previews with cleanup
- Pin critical infra to nodes or labels using --node/--label and schedule drains for maintenance
- Backup infra regularly with servel infra backup and test restores to a staging instance
Example use cases
- Deploy a full-stack app and add a managed Postgres: servel add postgres --name db && servel deploy --link-infra db --verbose
- Create a 24-hour preview for a pull request: servel deploy --verbose --preview --ttl 24h
- Provision supabase platform for auth and storage: servel add supabase --name supa then link to your app
- Run a restore from backup and validate data: servel infra restore db backup.sql.gz then servel infra check mydb
- Rebalance cluster to optimize resource use: servel node balance --dry-run then servel node balance
FAQ
Use @name for infrastructure (eg @mydb), plain name for deployments (eg myapp), and ~name for system services (eg ~traefik).
How do I run one-off SQL against a database?
Use servel infra sql @mydb "SELECT 1" or provide a file: servel infra sql @mydb schema.sql.