Deploy on Slipway ​
This page covers deploying a Boring Stack app on Slipway.
Recommended for self-hosting
Slipway is the recommended self-hosting option in these docs. It detects the app's Sails setup, Dockerfile, database, and Redis configuration.
It also provides push-to-deploy, automatic SSL, preview environments, database management, and background job monitoring on the same server.
Install Slipway ​
Run the install script on your server (a VPS, dedicated server, or any Linux machine with Docker):
curl -fsSL https://raw.githubusercontent.com/sailscastshq/slipway/main/install.sh | bashOnce installed, open your Slipway dashboard and complete the setup wizard.
INFO
See the full server installation guide and system requirements in the Slipway docs.
Create a project ​
In your Slipway dashboard, create a new project. This gives you a production environment and a place to manage your app's deployments, services, and domains.
Follow the deployment checklist ​
Once your project is created, link it to your local codebase using the Slipway CLI:
slipway link <project>Slipway reads your app's package.json and generates a deployment checklist tailored to your app. It detects what your app actually needs and tells you exactly what's missing:
- Database required — Slipway sees
sails-postgresql(orsails-mysql,sails-mongo) in your dependencies and warns you if no database service is running - Redis required — Slipway detects
@sailshq/connect-redisand warns you if Redis isn't set up for session storage - SESSION_SECRET missing — warns you if your app doesn't have a secure session secret, with a one-click Generate button to create one
Each checklist item comes with an actionable button — Add database, Add Redis, Generate — so you can fix issues directly from the checklist without hunting through settings. Once everything is configured, the checklist shows a green "Environment is configured correctly" status.
Deployment checklist
Slipway inspects the app and reports missing services or environment variables so you can fix them from the checklist.
Connect your GitHub repo ​
- Go to Settings > Git and connect your GitHub account
- Navigate to your project's app settings and click Connect Repository
- Select the repository containing your Boring Stack app
- Choose the branch to deploy from (e.g.
main)
Once connected, Slipway generates a deploy key and webhook automatically — every push to your configured branch triggers a deployment.
INFO
See the Git integration guide and auto-deploy docs for more details on push-to-deploy configuration.
Add a database ​
In your project's environment, click Add Service and select the database you need. Slipway supports PostgreSQL, MySQL, and MongoDB as one-click services.
Automatic DATABASE_URL
When you create a database service, Slipway automatically sets DATABASE_URL as an environment variable on the app.
Add Redis ​
Click Add Service and select Redis. Slipway creates a Redis container and automatically injects REDIS_URL into your app's environment.
Set up database adapter ​
Depending on the database you chose, set up that adapter in config/env/production.js:
module.exports = {
datastores: {
default: {
adapter: 'sails-postgresql',
url: process.env.DATABASE_URL
}
}
}module.exports = {
datastores: {
default: {
adapter: 'sails-mysql',
url: process.env.DATABASE_URL
}
}
}module.exports = {
datastores: {
default: {
adapter: 'sails-mongo',
url: process.env.DATABASE_URL
}
}
}WARNING
Don't forget to install the adapter if you haven't already. See the database docs for more info.
Set up Redis ​
Set up the Redis adapter in config/env/production.js:
module.exports = {
session: {
secret: process.env.SESSION_SECRET,
adapter: '@sailshq/connect-redis',
url: process.env.REDIS_URL
}
}Set environment variables ​
Add any additional environment variables your app needs. You can set them in two places:
- Environment page — in your project's environment settings, manage all env vars for that environment
- App settings — set app-specific env vars that override environment-level ones
The only variable you need to add manually is:
SESSION_SECRET: A unique production session secret to override the one inconfig/session.js
INFO
DATABASE_URL and REDIS_URL are already set automatically when you created the database and Redis services. See the environment variables guide for more on how Slipway manages env vars.
Additional environment variables
Depending on the template you're using, you may need to set additional environment variables. For example, the Ascent template requires additional configuration for authentication, teams, and billing features.
Set up a custom domain ​
In your environment settings, add your custom domain. Slipway handles SSL certificates automatically via Caddy — your app will be served over HTTPS with zero configuration.
Deploy ​
Push to your configured branch and Slipway takes care of the rest — it clones your repo, builds the Docker image from your Dockerfile, runs health checks, and switches traffic with zero downtime.
You can also trigger a deployment manually from the dashboard or with the Slipway CLI:
slipway slideDockerfile included
The Boring Stack templates come with a production-ready Dockerfile, so you don't need to create one manually. Slipway detects and uses it automatically.
After the build finishes, Slipway deploys the app to the configured domain.
What you get with Slipway ​
Slipway also provides operational tools for the deployed app:
- Push-to-deploy — automatic deployments from GitHub on every push
- Preview environments — automatic environments for pull requests
- Custom domains & SSL — HTTPS via Caddy with automatic certificate management
- Helm — a production REPL to query your Waterline models and run helpers live
- Bridge — an auto-generated admin interface for browsing and editing your data
- Dock — a database management console with SQL editor, table browser, and migrations
- Quest — monitor and manage your sails-hook-quest background jobs
- Content — a visual editor for sails-content markdown collections
- Lookout — real-time observability with request tracing, exceptions, and metrics
- Rollbacks — one-click rollback to any previous deployment
- Notifications — get alerted on deployment status, container issues, and more