Configuration

Complete reference for the .lift.json configuration file including server connection, domain, Docker network, Traefik, scaling, and rate limiting options.

Configuration

Lift stores project configuration in a .lift.json file in your project root. This file is automatically added to .gitignore during lift init because it may contain server connection details.

Full Configuration Reference

{
  "appName": "my-app",              // Required. Lowercase, hyphens allowed
  "server": {
    "host": "1.2.3.4",              // Required. IP or hostname
    "port": 22,                      // Default: 22
    "privateKey": "~/.ssh/id_ed25519"  // Path to SSH key
  },
  "user": "onelift",                // Default: "onelift"
  "domain": "app.example.com",      // Optional. Enables HTTPS via Traefik
  "network": "onelift",             // Docker network. Default: "onelift"
  "entrypoint": "websecure",        // Traefik entrypoint. Default: "websecure"
  "port": 3000,                      // App port inside container. Default: 3000
  "expose": true,                    // Publish port to host. Auto-enabled when no domain
  "branch": "main",                  // Deploy branch. Default: "main"
  "replicas": 1,                     // Number of containers. Default: 1
  "rateLimit": {                     // Optional. Traefik rate limiting
    "average": 100,                  // Requests per second
    "burst": 50                      // Max burst size
  }
}

Configuration Fields

FieldTypeDefaultDescription
appNamestring-Application name (required). Lowercase letters, numbers, hyphens only.
server.hoststring-Server IP address or hostname (required).
server.portnumber22SSH port number.
server.privateKeystring-Path to SSH private key. Supports ~ expansion. Omit for SSH agent.
userstring"onelift"SSH username for server connection.
domainstring-Domain name for HTTPS. Enables Traefik with Let's Encrypt.
networkstring"onelift"Docker network name. Use an existing network when integrating with an external reverse proxy.
entrypointstring"websecure"Traefik entrypoint name. Some setups use "https" instead.
portnumber3000Application port inside the container.
exposebooleanfalsePublish port to the host. Must be true when deploying without a domain, otherwise health checks will fail. When a domain is configured, Traefik handles routing internally and this field is ignored.
branchstring"main"Default branch for production deploys.
replicasnumber1Number of container replicas for horizontal scaling.
rateLimitobject-Traefik rate limit. Set average (req/s) and burst.

Security Note: .lift.json contains server connection details. Always keep it in .gitignore. Lift adds it automatically during init.