api: the API, its panel and the official prefabs;node: the daemon that runs game servers (Add a node).
1. Pick a profile
With
--full, for the api role:
- system updates, then automatic security updates;
fail2banagainst SSH login attempts;ufwfirewall: everything inbound is closed except SSH,80and443(the panel) and8443(nodes);- key-only SSH, if a key is already authorized for root or your user (otherwise SSH is left alone);
- Docker, from Docker’s official repository;
- Caddy, which serves the panel over HTTPS and gets the certificate on its own.
2. Download, read, run
--yes skips the confirmation):
get.kuroctl.com/api serves the script with the api role already chosen;
get.kuroctl.com/install.sh serves it without a role, which you then pass (install.sh api).
Options
The script creates the
kuro system user, writes the configuration to /etc/kuro/, creates the
nodes’ private certificate authority and starts the kuro-api service.
3. Without --full: TLS and firewall
The API listens locally: a reverse proxy publishes it over HTTPS. With
Caddy:
/etc/caddy/Caddyfile
8443/tcp (mTLS): open it in the firewall, from the Internet
or only from your nodes.
With --full, all of this is done. A Caddyfile you already edited is not overwritten: the
script prints the block to add.
4. Create the first admin
https://panel.example.com and sign in.
Everything on one machine
The API and a node can share a machine. Give both roles and the game server port range:Next
Add a node
Enroll a machine to deploy your first servers.

