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/
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 config

Environment variables

KillTheHost reads a handful of environment variables at startup. Any variable can be set in a .env file next to launch.sh.

VariableDefaultPurpose
KTH_PORT5000Port the control panel binds to on localhost.
KTH_DATA_DIR./dataAbsolute or relative path to the state directory.
KTH_LOG_LEVELinfoOne of debug, info, warn, error.
CF_API_TOKENCloudflare API token for tunnel management.
NAMECHEAP_API_USERNamecheap API username.
NAMECHEAP_API_KEYNamecheap 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:

.env
KTH_PORT=5173
KTH_LOG_LEVEL=debug

Secrets

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:

bash
# 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

bash
$./launch.sh --stop --prune
$cd .. && rm -rf KillTheHost

The --prune flag removes the docker images and volumes associated with KillTheHost but leaves your other containers alone.