{ "slug": "infisical-compose", "kind": "compose", "metadata": { "name": "Infisical", "description": "Open-source secrets management platform for teams and homelabs, including PostgreSQL, Redis, SMTP, and Traefik-friendly Docker Compose configuration.", "tags": [ "secrets", "postgresql", "redis", "traefik" ], "icon": { "provider": "selfhst", "id": "infisical", "color": "amber" }, "draft": false, "version": { "name": "v0.158.0", "source_dep_name": "infisical/infisical", "source_dep_version": "v0.158.0" } }, "variables": [ { "name": "general", "title": "General", "items": [ { "name": "service_name", "type": "str", "title": "Service Name", "required": false, "config": { "placeholder": "infisical" } }, { "name": "container_name", "type": "str", "title": "Container Name", "required": false, "description": "Name to use for the container. Leave empty to omit container_name and let Compose generate it.", "config": { "placeholder": "infisical" } }, { "name": "restart_policy", "type": "enum", "title": "Restart Policy", "required": true, "default": "unless-stopped", "description": "Container restart policy.", "config": { "options": [ "unless-stopped", "always", "on-failure", "no" ] } } ] }, { "name": "infisical", "title": "Infisical", "items": [ { "name": "infisical_site_url", "type": "str", "title": "Site URL", "required": true, "default": "https://infisical.home.arpa", "config": { "placeholder": "https://infisical.home.arpa" } }, { "name": "infisical_encryption_key", "type": "secret", "title": "Encryption Key", "required": true, "description": "Infisical ENCRYPTION_KEY. Back this up securely; losing it makes stored secrets unrecoverable.", "config": { "autogenerated": { "length": 32, "characters": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" ] } } }, { "name": "infisical_auth_secret", "type": "secret", "title": "Auth Secret", "required": true, "config": { "autogenerated": { "kind": "base64", "bytes": 32 } } } ] }, { "name": "database", "title": "PostgreSQL", "items": [ { "name": "database_external", "type": "bool", "title": "External PostgreSQL", "required": false, "default": false }, { "name": "database_connection_uri", "type": "secret", "title": "External DB Connection URI", "required": true, "description": "Full PostgreSQL connection URI for external databases. URL-encode special characters in usernames/passwords.", "needs": [ "database_external=true" ], "config": { "placeholder": "postgresql://infisical:password@postgres.example.internal:5432/infisical?sslmode=disable" } }, { "name": "database_user", "type": "str", "title": "Database User", "required": true, "default": "infisical", "needs": [ "database_external=false" ], "config": { "placeholder": "infisical" } }, { "name": "database_password", "type": "secret", "title": "Database Password", "required": true, "description": "PostgreSQL password for the bundled database.", "needs": [ "database_external=false" ], "config": { "autogenerated": { "length": 32, "characters": [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] } } }, { "name": "database_name", "type": "str", "title": "Database Name", "required": true, "default": "infisical", "needs": [ "database_external=false" ], "config": { "placeholder": "infisical" } } ] }, { "name": "redis", "title": "Redis", "items": [ { "name": "redis_external", "type": "bool", "title": "External Redis", "required": false, "default": false }, { "name": "redis_url", "type": "secret", "title": "External Redis URL", "required": true, "description": "Full Redis URL for external Redis, for example redis://:password@redis.example.internal:6379.", "needs": [ "redis_external=true" ], "config": { "placeholder": "redis://:password@redis.example.internal:6379" } }, { "name": "redis_password", "type": "secret", "title": "Redis Password", "required": true, "needs": [ "redis_external=false" ], "config": { "autogenerated": { "length": 32, "characters": [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] } } } ] }, { "name": "ports", "title": "Ports", "items": [ { "name": "ports_http", "type": "str", "title": "HTTP Port", "required": false, "default": "8080", "description": "Host port exposed when Traefik integration is disabled.", "config": { "placeholder": "8080" } } ] }, { "name": "traefik", "title": "Traefik", "toggle": "traefik_enabled", "items": [ { "name": "traefik_enabled", "type": "bool", "title": "Traefik", "required": false, "default": true, "description": "Attach to an external Traefik network and create routing labels." }, { "name": "traefik_host", "type": "str", "title": "Host", "required": true, "default": "infisical", "needs": [ "traefik_enabled=true" ], "config": { "placeholder": "infisical" } }, { "name": "traefik_domain", "type": "str", "title": "Domain", "required": true, "default": "home.arpa", "needs": [ "traefik_enabled=true" ], "config": { "placeholder": "home.arpa" } }, { "name": "traefik_entrypoint", "type": "str", "title": "Entrypoint", "required": true, "default": "web", "description": "Traefik HTTP entrypoint.", "needs": [ "traefik_enabled=true" ], "config": { "placeholder": "web" } }, { "name": "traefik_network", "type": "str", "title": "Network", "required": true, "default": "traefik", "description": "External Docker network used by Traefik.", "needs": [ "traefik_enabled=true" ], "config": { "placeholder": "traefik" } }, { "name": "traefik_tls_enabled", "type": "bool", "title": "TLS", "required": false, "default": true, "description": "Create a TLS router for Traefik.", "needs": [ "traefik_enabled=true" ] }, { "name": "traefik_tls_entrypoint", "type": "str", "title": "TLS Entrypoint", "required": true, "default": "websecure", "description": "Traefik HTTPS entrypoint.", "needs": [ "traefik_enabled=true", "traefik_tls_enabled=true" ], "config": { "placeholder": "websecure" } }, { "name": "traefik_tls_certresolver", "type": "str", "title": "Cert Resolver", "required": true, "default": "cloudflare", "needs": [ "traefik_enabled=true", "traefik_tls_enabled=true" ], "config": { "placeholder": "cloudflare" } } ] }, { "name": "volume", "title": "Volumes", "items": [ { "name": "volume_mode", "type": "enum", "title": "Volume Mode", "required": true, "default": "local", "description": "Storage mode for bundled PostgreSQL and Redis data.", "config": { "options": [ "local", "mount", "nfs" ] } }, { "name": "volume_mount_path", "type": "str", "title": "Mount Path", "required": true, "default": "/data/infisical", "description": "Base host path used when volume mode is mount.", "needs": [ "volume_mode=mount" ], "config": { "placeholder": "/data/infisical" } }, { "name": "volume_nfs_server", "type": "str", "title": "NFS Server", "required": true, "default": "NFS_SERVER", "needs": [ "volume_mode=nfs" ], "config": { "placeholder": "NFS_SERVER" } }, { "name": "volume_nfs_path", "type": "str", "title": "NFS Path", "required": true, "default": "/export/infisical", "description": "NFS export path.", "needs": [ "volume_mode=nfs" ], "config": { "placeholder": "/export/infisical" } }, { "name": "volume_nfs_options", "type": "str", "title": "NFS Options", "required": true, "default": "rw,nolock,soft", "description": "NFS mount options.", "needs": [ "volume_mode=nfs" ], "config": { "placeholder": "rw,nolock,soft" } } ] }, { "name": "email", "title": "Email", "toggle": "email_enabled", "items": [ { "name": "email_enabled", "type": "bool", "title": "SMTP Email", "required": false, "default": false }, { "name": "email_host", "type": "str", "title": "SMTP Host", "required": true, "default": "smtp.home.arpa", "needs": [ "email_enabled=true" ], "config": { "placeholder": "smtp.home.arpa" } }, { "name": "email_port", "type": "int", "title": "SMTP Port", "required": true, "default": 587, "needs": [ "email_enabled=true" ], "config": { "placeholder": "587" } }, { "name": "email_from_address", "type": "str", "title": "From Address", "required": true, "default": "infisical@home.arpa", "needs": [ "email_enabled=true" ], "config": { "placeholder": "infisical@home.arpa" } }, { "name": "email_from_name", "type": "str", "title": "From Name", "required": false, "default": "Infisical", "needs": [ "email_enabled=true" ], "config": { "placeholder": "Infisical" } }, { "name": "email_username", "type": "str", "title": "SMTP Username", "required": true, "default": "", "needs": [ "email_enabled=true" ], "config": { "placeholder": "user@example.com" } }, { "name": "email_password", "type": "secret", "title": "SMTP Password", "required": true, "needs": [ "email_enabled=true" ] }, { "name": "email_secure", "type": "bool", "title": "SMTP Secure", "required": false, "default": false, "needs": [ "email_enabled=true" ] }, { "name": "email_require_tls", "type": "bool", "title": "Require TLS", "required": false, "default": true, "needs": [ "email_enabled=true" ] }, { "name": "email_ignore_tls", "type": "bool", "title": "Ignore TLS", "required": false, "default": false, "needs": [ "email_enabled=true" ] } ] } ] }