Self-Hosting Elixium (Beta)
Beta Access Required
Self-hosted deployment is available for enterprise customers. Contact [email protected] for registry credentials and your deployment package.
Run the entire Elixium stack on your own infrastructure. Deploy via Docker Compose or Kubernetes with a single configuration flag. Built for air-gapped environments, compliance requirements, and total data sovereignty.
Prerequisites
- Docker 20.10+ and Docker Compose 2.0+
- 4 CPU cores and 8GB RAM minimum
- 20GB disk space for images and data
- Enterprise license (contact sales for beta access)
Quick Start
# Step 1: Authenticate to Docker registry
$ docker login ghcr.io
Username: [provided by sales team]
Password: [provided by sales team]
# Step 2: Extract deployment package
$ tar -xzf elixium-self-hosted.tar.gz
$ cd elixium-self-hosted
# Step 3: Configure environment
$ cp .env.example .env
$ nano .env # Set passwords (look for CHANGE_ME)
# Step 4: Initialize and start
$ ./scripts/init.sh
✓ Keycloak realm imported
✓ MinIO buckets created
✓ Database migrations complete
✓ AI provider configured
# Step 5: Access Elixium
$ open http://localhost:3000
🔐 Default Credentials
- Elixium: admin / admin (bundled Keycloak realm only — change on first login)
- Keycloak Admin: admin / [your KEYCLOAK_ADMIN_PASSWORD]
- MinIO Console: [your MINIO_ROOT_USER] / [your MINIO_ROOT_PASSWORD]
Included Services
| Service | Port | Purpose |
|---|---|---|
| Elixium App | 3000 | Web application |
| Elixium API | 3001 | Backend API |
| Keycloak | 8080 | Authentication & SSO |
| MinIO | 9000 / 9001 | Object storage (API / Console) |
| PostgreSQL | 5432 | Database |
| nginx | 80 / 443 | Reverse proxy & TLS termination |
Architecture
Self-hosted Elixium runs the same application as the cloud version. A single configuration flag switches all service providers to their self-hosted equivalents:
| Capability | Cloud | Self-Hosted |
|---|---|---|
| Authentication | Firebase Auth | Keycloak (OIDC) |
| Database | Cloud SQL (PostgreSQL) | PostgreSQL |
| File Storage | Google Cloud Storage | MinIO (S3-compatible) |
| AI | Google Gemini | Gemini (default), OpenAI, Azure OpenAI, or Ollama (external GPU) |
Configuration
The deployment uses a single ELIXIUM_MODE flag to control all services:
# Self-hosted mode — one flag controls the entire stack ELIXIUM_MODE=local # Required: License key (provided after purchase) ELIXIUM_LICENSE_KEY=<your-license-key> # Required: Set secure passwords POSTGRES_PASSWORD=<your-secure-password> KEYCLOAK_ADMIN_PASSWORD=<your-secure-password> KEYCLOAK_CLIENT_SECRET=<your-secure-secret> MINIO_ROOT_PASSWORD=<your-secure-password> # Optional: Pin image version (recommended for production) ELIXIUM_VERSION=latest # Optional: AI provider (gemini, openai, azure-openai, ollama) AI_PROVIDER=gemini GOOGLE_AI_API_KEY=<your-api-key> # Or use Ollama (requires external GPU host) # AI_PROVIDER=ollama # OLLAMA_HOST=http://gpu-host:11434
Bring Your Own Infrastructure
Already running Keycloak, PostgreSQL, or S3-compatible storage? Point Elixium at your existing services instead of using the bundled stack:
# Use your own Keycloak instance KEYCLOAK_URL=https://sso.yourcompany.com KEYCLOAK_CLIENT_SECRET=<your-client-secret> # Use your own PostgreSQL DATABASE_URL=postgresql://user:[email protected]/elixium # Use your own S3-compatible storage (Wasabi, DigitalOcean Spaces, etc.) MINIO_ENDPOINT=s3.yourcompany.com MINIO_PORT=443 MINIO_ACCESS_KEY=<your-access-key> MINIO_SECRET_KEY=<your-secret-key>
Troubleshooting
Check Service Health
docker compose ps docker compose logs -f app docker compose logs -f api
Run E2E Validation
The included test suite validates all services, authentication, and AI connectivity:
./scripts/test-e2e.sh
Reset Everything
docker compose down -v # WARNING: Deletes all data ./scripts/init.sh
Enterprise Support
Need help with deployment, custom integrations, or have questions? Our enterprise support team is here to help.
