Self-hosted deployment
Run Tenelix on your own infrastructure as a Docker stack.
Self-hosted Tenelix runs as a Docker Compose stack on customer infrastructure. It's the same application we run in our own cloud, configured through environment variables.
What you provide
- A Linux server (or VM) with Docker installed
- PostgreSQL 18 instance (Docker or managed)
- A domain name (Caddy obtains and renews the TLS certificate for you)
- Optional: an S3-compatible object store — files default to a local volume
What we ship
tenelix-selfhosted/
├── docker-compose.yml # App + Caddy + postgres
├── docker-compose.prod.yml # Production overrides
├── .env.example # Pre-configured for self-hosted
├── Caddyfile # Reverse proxy + automatic TLS
└── docs/
└── SELF_HOSTED_GUIDE.md # Customer-facing setup guide
Key environment variables
APP_ENV=production
APP_URL=https://emr.customerclinic.com
DEPLOYMENT_MODE=self_hosted
DB_HOST=tenelix-db
DB_DATABASE=tenelix
DB_USERNAME=tenelix
DB_PASSWORD=<customer-set>
# File storage defaults to a local volume on your server.
FILESYSTEM_DISK=local
Cache, queue, and sessions run on the database — the same as our cloud —
so there is no Redis to operate. Files live on a local volume by default;
point FILESYSTEM_DISK at an S3-compatible store only if you want one.
Caddy terminates TLS on your domain automatically.
Updates
Self-hosted customers receive:
- A security update channel
- Optional remote upgrade assistance
- Backup and DR runbooks included with the stack
Enterprise contracts include a named success engineer who coordinates upgrades.