Introduction
Configuration
Where KillTheHost stores state, how to change the panel port, and how to back everything up or move it to a new machine.
Directory layout
Everything KillTheHost produces lives inside the repository clone. The layout is intentionally flat so you can bind-mount, back up, or rsync the whole thing.
KillTheHost/├─ launch.sh # Linux / macOS entry point├─ launch.bat # Windows entry point├─ src/ # launcher + programs (python)│ ├─ launcher/│ ├─ php_mngr/│ ├─ db_3ngin3/│ ├─ mail_srvr/│ └─ stax_mngr/├─ docker/ # compose files + service Dockerfiles└─ data/ # <- your state lives here ├─ projects/ # php projects, docker stacks, etc. ├─ databases/ # all 5 engines’ volumes ├─ mail/ # maildir, dkim keys ├─ cloudflare/ # tunnel credentials └─ config.json # panel-level configEnvironment variables
KillTheHost reads a handful of environment variables at startup. Any variable can be set in a .env file next to launch.sh.
| Variable | Default | Purpose |
|---|---|---|
KTH_PORT | 5000 | Port the control panel binds to on localhost. |
KTH_DATA_DIR | ./data | Absolute or relative path to the state directory. |
KTH_LOG_LEVEL | info | One of debug, info, warn, error. |
CF_API_TOKEN | — | Cloudflare API token for tunnel management. |
NAMECHEAP_API_USER | — | Namecheap API username. |
NAMECHEAP_API_KEY | — | Namecheap API key. See Domain Sync. |
Panel port
If :5000 is already in use — e.g. by a macOS AirPlay receiver — set KTH_PORT before launching:
KTH_PORT=5173KTH_LOG_LEVEL=debugSecrets
API tokens and integration credentials are stored encrypted in ./data/config.json once you save them in the control panel. Nothing is ever transmitted anywhere except the service you configured (Cloudflare, Namecheap, etc.).
Data & backups
Because every service writes into ./data/, a full backup is a single tarball:
# Stop services first so the databases are flushed$./launch.sh --stop$tar -czf killthehost-$(date +%F).tar.gz data/To restore on a new machine, clone the repository, drop the data/ directory in place, and run ./launch.sh as usual.
Uninstall
$./launch.sh --stop --prune$cd .. && rm -rf KillTheHostThe --prune flag removes the docker images and volumes associated with KillTheHost but leaves your other containers alone.