Documentation Index
Fetch the complete documentation index at: https://docs.kombify.io/llms.txt
Use this file to discover all available pages before exploring further.
The kombination.yaml file is the central configuration for your kombify deployment. This reference documents all available fields and their valid values.
Top-level fields
| Field | Type | Required | Description |
|---|
version | string | Yes | Spec version (currently "1.0") |
stackkit | string | Yes | StackKit to use (base-kit, ha-kit, modern-homelab) |
meta | object | Yes | Metadata about your homelab |
nodes | array | Yes | Server definitions |
services | array/object | Yes | Services to deploy |
meta:
name: my-homelab # Required: unique name
domain: home.example.com # Required: base domain
email: you@example.com # Optional: for Let's Encrypt
| Field | Type | Required | Description |
|---|
name | string | Yes | Unique homelab identifier (alphanumeric, hyphens) |
domain | string | Yes | Base domain for services |
email | string | No | Email for TLS certificate generation |
Nodes section
nodes:
- name: server-1
type: hypervisor
connection:
host: 192.168.1.100
user: root
ssh_key: ~/.ssh/id_ed25519
resources:
cpu: 4
memory: 16384
Node fields
| Field | Type | Required | Description |
|---|
name | string | Yes | Unique node identifier |
type | string | Yes | Node type: hypervisor, docker, bare-metal |
connection | object | Yes | How to reach this node |
resources | object | No | Resource constraints |
Connection fields
| Field | Type | Required | Description |
|---|
host | string | Yes | IP address or hostname |
port | int | No | SSH port (default: 22) |
user | string | No | SSH user (default: root) |
ssh_key | string | No | Path to SSH private key |
Services section
Services can be specified as a simple list or as detailed objects:
# Simple: enable with defaults
services:
- traefik
- immich
- authelia
# Detailed: customize per service
services:
traefik:
enabled: true
config:
dashboard: true
log_level: INFO
immich:
enabled: true
config:
upload_limit: 10GB
Environment variables
Services support environment variable overrides:
services:
immich:
enabled: true
env:
UPLOAD_LOCATION: /data/photos
DB_PASSWORD: "${DOPPLER_IMMICH_DB_PASSWORD}"
Never hardcode secrets in your kombination.yaml. Use Doppler references or environment variable substitution.
Validation
Validate your spec before deployment:
The validator checks:
- Required fields are present
- Types match the CUE schema
- Node connections are reachable
- Service dependencies are satisfied
- No port conflicts exist
Example: Complete spec
version: "1.0"
stackkit: base-kit
meta:
name: family-cloud
domain: home.example.com
email: admin@example.com
nodes:
- name: main-server
type: docker
connection:
host: 192.168.1.100
user: deploy
ssh_key: ~/.ssh/id_ed25519
services:
traefik:
enabled: true
config:
dashboard: true
authelia:
enabled: true
immich:
enabled: true
config:
upload_limit: 50GB
homepage:
enabled: true