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.