[ { "key": "general", "title": "General", "required": true, "vars": [ { "name": "service_name", "description": "Service name", "type": "str" }, { "name": "container_name", "description": "Container name", "type": "str" }, { "name": "container_timezone", "description": "Container timezone (e.g., Europe/Berlin)", "type": "str", "default": "UTC" }, { "name": "user_uid", "description": "User UID for container process", "type": "int", "default": 1000 }, { "name": "user_gid", "description": "User GID for container process", "type": "int", "default": 1000 }, { "name": "restart_policy", "description": "Container restart policy", "type": "enum", "options": ["unless-stopped", "always", "on-failure", "no"], "default": "unless-stopped" } ] }, { "key": "network", "title": "Network", "toggle": "network_enabled", "vars": [ { "name": "network_enabled", "description": "Enable custom network block", "type": "bool", "default": false }, { "name": "network_name", "description": "Docker network name", "type": "str", "default": "bridge" }, { "name": "network_external", "description": "Use existing Docker network", "type": "bool", "default": true } ] }, { "key": "ports", "title": "Ports", "toggle": "ports_enabled", "vars": [ { "name": "ports_enabled", "description": "Expose ports via 'ports' mapping", "type": "bool", "default": true } ] }, { "key": "traefik", "title": "Traefik", "toggle": "traefik_enabled", "description": "Traefik routes external traffic to your service.", "vars": [ { "name": "traefik_enabled", "description": "Enable Traefik reverse proxy integration", "type": "bool", "default": false }, { "name": "traefik_network", "description": "Traefik network name", "type": "str", "default": "traefik" }, { "name": "traefik_host", "description": "Domain name for your service (e.g., app.example.com)", "type": "str" }, { "name": "traefik_entrypoint", "description": "HTTP entrypoint (non-TLS)", "type": "str", "default": "web" } ] }, { "key": "traefik_tls", "title": "Traefik TLS/SSL", "toggle": "traefik_tls_enabled", "needs": "traefik", "description": "Enable HTTPS/TLS for Traefik with certificate management.", "vars": [ { "name": "traefik_tls_enabled", "description": "Enable HTTPS/TLS", "type": "bool", "default": true }, { "name": "traefik_tls_entrypoint", "description": "TLS entrypoint", "type": "str", "default": "websecure" }, { "name": "traefik_tls_certresolver", "description": "Traefik certificate resolver name", "type": "str", "default": "cloudflare" } ] }, { "key": "swarm", "title": "Docker Swarm", "toggle": "swarm_enabled", "description": "Deploy service in Docker Swarm mode with replicas.", "vars": [ { "name": "swarm_enabled", "description": "Enable Docker Swarm mode", "type": "bool", "default": false }, { "name": "swarm_replicas", "description": "Number of replicas in Swarm", "type": "int", "default": 1 }, { "name": "swarm_placement_mode", "description": "Swarm placement mode", "type": "enum", "options": ["global", "replicated"], "default": "replicated" }, { "name": "swarm_placement_host", "description": "Limit placement to specific node", "type": "str" } ] }, { "key": "database", "title": "Database", "toggle": "database_enabled", "description": "Connect to external database (PostgreSQL or MySQL)", "vars": [ { "name": "database_enabled", "description": "Enable external database integration", "type": "bool", "default": false }, { "name": "database_type", "description": "Database type", "type": "enum", "options": ["postgres", "mysql"], "default": "postgres" }, { "name": "database_external", "description": "Use an external database server?", "extra": "skips creation of internal database container", "type": "bool", "default": false }, { "name": "database_host", "description": "Database host", "type": "str", "default": "database" }, { "name": "database_port", "description": "Database port", "type": "int" }, { "name": "database_name", "description": "Database name", "type": "str" }, { "name": "database_user", "description": "Database user", "type": "str" }, { "name": "database_password", "description": "Database password", "type": "str", "default": "", "sensitive": true, "autogenerated": true } ] } ]