Skip to content

Configuration ​

Slipway can be configured through environment variables and the dashboard settings.

Server Configuration ​

Environment Variables ​

The installer persists server settings in /etc/slipway/.env. Prefer rerunning the installer with explicit environment overrides because it also keeps Docker bindings and active firewall rules consistent.

VariableDescriptionDefault
PORTInternal Slipway application port1337
NODE_ENVEnvironment modeproduction
SLIPWAY_URLPublic URL of your Slipway instanceDetected
SLIPWAY_INGRESSpublic or cloudflare-tunnelpublic
SLIPWAY_PROXY_HOSTHost interface for CaddyMode-dependent
SLIPWAY_DASHBOARD_HOSTHost interface for the dashboard port127.0.0.1
SLIPWAY_APP_PORT_HOSTHost interface for allocated app ports127.0.0.1
SESSION_SECRETSession-signing secretGenerated
DATA_ENCRYPTION_KEYEncryption key for stored credentialsGenerated

Explicit direct app access ​

bash
curl -fsSL https://raw.githubusercontent.com/sailscastshq/slipway/main/install.sh -o /tmp/install-slipway.sh
sudo env SLIPWAY_APP_PORT_HOST=0.0.0.0 bash /tmp/install-slipway.sh

Public boundary

0.0.0.0 means every server interface. It is an explicit opt-in, not a safer replacement for Caddy. Read Ingress and Firewall before opening the app port range at your VPS provider.

Dashboard Settings ​

Access settings at Dashboard → Settings.

Instance Settings ​

SettingDescription
Instance NameDisplay name for your Slipway server
Instance URLPublic URL for webhooks and links
Allow SignupsEnable/disable new user registration

Default Project Settings ​

SettingDescriptionDefault
Default EnvironmentInitial environment for new projectsproduction
Health Check TimeoutTime to wait for health checks30s
Deploy TimeoutMaximum deployment time10m

Security Settings ​

SettingDescriptionDefault
Session TimeoutAuto-logout after inactivity24h
Require 2FAEnforce two-factor authenticationfalse
IP AllowlistRestrict dashboard access by IPDisabled

Project Configuration ​

Projects can be configured via the CLI or dashboard:

Via CLI ​

bash
slipway project:update myapp \
  --auto-deploy=true \
  --auto-deploy-branch=main \
  --health-check-path=/health

Via Dashboard ​

  1. Go to your project
  2. Click Settings
  3. Configure options
  4. Click Save

Project Options ​

OptionDescriptionDefault
auto-deployEnable webhook-triggered deploysfalse
auto-deploy-branchBranch to deploy frommain
health-check-pathURL path for health checks/
health-check-timeoutHealth check timeout30s
deploy-timeoutMaximum deploy time10m

App Configuration (config/slipway.js) ​

sails-hook-slipway is zero-config when deployed by Slipway. Create config/slipway.js only when the app needs identity or telemetry behavior overrides:

javascript
// config/slipway.js
module.exports.slipway = {
  bridge: {
    loginPath: '/login',
    identity: {
      model: 'user',
      sessionKey: 'userId',
      emailAttribute: 'email',
      nameAttribute: 'fullName',
      emailStatusAttribute: 'emailStatus',
      verifiedEmailStatuses: ['verified', 'confirmed']
    }
  },

  lookout: {
    enabled: true,
    captureQueries: true,
    captureExceptions: true,
    slowQueryThreshold: 100
  }
}

Enable the app-local /bridge route from the app's Bridge access page and redeploy. Slipway injects its app-scoped credential; never commit it to config/slipway.js. Read Bridge app-local access for the invitation and custom identity-helper flow.

Docker Configuration ​

Network Configuration ​

Slipway uses a Docker network named slipway:

bash
# Create network (done by install.sh)
docker network create slipway

All apps and services are attached to this network for internal communication.

Volume Configuration ​

Slipway data is stored in Docker volumes:

VolumePurposeDefault Path
slipway-dataDatabase and config/app/data
slipway-certsSSL certificates/data (Caddy)

Resource Limits ​

Set resource limits for Slipway:

bash
docker run -d \
  --name slipway \
  --memory=512m \
  --cpus=1 \
  ...

Caddy Configuration ​

Caddy is configured via Docker labels on containers. Slipway sets these automatically:

javascript
// Labels set by Slipway when deploying
{
  'caddy': 'myapp.example.com',
  'caddy.reverse_proxy': '{{upstreams 1337}}'
}

Custom Caddy Settings ​

For advanced Caddy configuration, you can modify the Caddy container directly:

bash
# Access Caddy config
docker exec slipway-proxy cat /etc/caddy/Caddyfile

Backup Configuration ​

Automatic Backups ​

Configure in Dashboard → Settings → Backups:

SettingDescriptionDefault
EnabledEnable automatic backupstrue
ScheduleBackup frequencyDaily at 2 AM
RetentionNumber of backups to keep7
StorageWhere to store backupsLocal

Manual Backup ​

bash
# Backup Slipway data
docker exec slipway tar -czf /tmp/backup.tar.gz /app/data
docker cp slipway:/tmp/backup.tar.gz ./slipway-backup.tar.gz

Logging Configuration ​

Log Level ​

Set via environment variable:

bash
-e LOG_LEVEL=debug  # silly, verbose, info, debug, warn, error

Log Retention ​

Configure in Dashboard → Settings → Logs:

SettingDescriptionDefault
App LogsRetention period7 days
Build LogsRetention period30 days
Deploy LogsRetention period30 days

Email Configuration ​

For email notifications (password reset, alerts):

bash
-e MAIL_TRANSPORT=smtp \
-e SMTP_HOST=smtp.gmail.com \
-e SMTP_PORT=587 \
-e [email protected] \
-e SMTP_PASS=your-app-password \
-e MAIL_FROM="Slipway <[email protected]>"

Or use Resend:

bash
-e MAIL_TRANSPORT=resend \
-e RESEND_API_KEY=re_xxx \
-e MAIL_FROM="Slipway <[email protected]>"

What's Next? ​

All open source projects are released under the MIT License.