Skip to main content

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

FieldTypeRequiredDescription
versionstringYesSpec version (currently "1.0")
stackkitstringYesStackKit to use (base-kit, ha-kit, modern-homelab)
metaobjectYesMetadata about your homelab
nodesarrayYesServer definitions
servicesarray/objectYesServices to deploy

Meta section

meta:
  name: my-homelab          # Required: unique name
  domain: home.example.com  # Required: base domain
  email: you@example.com    # Optional: for Let's Encrypt
FieldTypeRequiredDescription
namestringYesUnique homelab identifier (alphanumeric, hyphens)
domainstringYesBase domain for services
emailstringNoEmail 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

FieldTypeRequiredDescription
namestringYesUnique node identifier
typestringYesNode type: hypervisor, docker, bare-metal
connectionobjectYesHow to reach this node
resourcesobjectNoResource constraints

Connection fields

FieldTypeRequiredDescription
hoststringYesIP address or hostname
portintNoSSH port (default: 22)
userstringNoSSH user (default: root)
ssh_keystringNoPath 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:
kombify validate
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