Guide · For administrators
Installation
One command
On a clean Debian 12 or 13 or Ubuntu 22.04 or 24.04 server (x86_64), as root:
curl -fsSL https://koavm.com/install.sh | sudo bash -s -- --domain vm.yourdomain.com --email you@yourdomain.com
The script:
- downloads the latest stable version and checks Prime Software's signature and the binary's SHA-256 (if they don't match it stops);
- creates the
koavmsystem user, the data folder/var/lib/koavmand the binary/usr/local/bin/koavm(keeping the previous version askoavm.prev); - creates the
koavmservice (restricted: it only writes to its own folder) and thekoavm-updateservice, which installs the updates requested from the panel; - on the first installation it creates the first administrator with the given email and prints the panel's address and the password.
With --domain the panel requests its HTTPS certificate from Let's Encrypt on its own: the name must already point to the server and ports 80 and 443 must be open. You can give several names separated by commas. Without a domain the panel listens over HTTP on port 8080: only for testing.
Sign in at https://vm.yourdomain.com/admin and change the password from Account › Change password. The panel starts on the free trial (30 days, 1 node and 5 VPSs, every feature): see License.
The public key the script uses to check versions is Qy8Qnz5WmH1yb5tL9KBB1Q0teUZI4eI3zWfnl3iULQ8= (ed25519, the same as in the panel): before running it you can download the script and check that RELEASE_PUB contains it.
Running the same command again updates the panel to the latest version without touching the data (updates are usually done from the panel, see Updates).
By hand
curl -fsSL https://koavm.com/releases/koavm-latest-linux-amd64.gz | gunzip > koavm
curl -fsSLO https://koavm.com/releases/install.sh
sudo bash install.sh ./koavm vm.yourdomain.com
sudo -u koavm koavm user add --data /var/lib/koavm --email you@example.com --name "Your name" --role admin
koavm-latest is always the latest stable version; each one stays downloadable as koavm-VERSION-linux-amd64.gz. The last command creates an administrator and prints the password.
A demo panel
koavm demo starts a complete trial panel without servers: 4 nodes and 13 VPSs simulated in memory, with customers, backups, snapshots, charts for the last 24 hours and traffic for the last month. Use it to let people who are not customers yet try the panel (it is the demo on demo.koavm.com).
koavm demo --data /var/lib/koavm-demo --accounts /etc/koavm-demo/accounts --listen 127.0.0.1:8098 --reset 3h --domain demo.yourdomain.com
- The accounts file has one line per account:
admin email password Nameorclient email password Name. The panel shows the demo administrator the first customer's login, so the customer area can be tried too. - In the demo you can create, start, stop, resize and move VPSs between nodes, take backups and snapshots, use private networks, firewalls, load balancers, routers, DNS and the text console. Settings, license, updates, adding and removing nodes, passwords, API keys, team and providers stay locked; 60 VPSs at most.
- After
--reset(3 hours by default) the program exits and the service starts it again from scratch (Restart=always): every visitor finds the demo as it was at the start. The--datafolder is emptied at every start, so never use the one of a real panel (the command stops if it is not empty and not a demo folder). - The demo opens no outside connections and sends no email: put it behind nginx or Caddy with HTTPS, passing the visitor's address in
X-Real-IP.
Where things are
| What | Where |
|---|---|
| Binary | /usr/local/bin/koavm (previous: koavm.prev) |
| Data and database | /var/lib/koavm (koavm.db) |
| Startup options | /etc/default/koavm (KOAVM_ARGS=--domain vm.yourdomain.com) |
| Log | journalctl -u koavm |
| Database copies before updates | /var/lib/koavm/koavm-prima-VERSION.db |
Back up /var/lib/koavm together with the server backups: it holds the database, the certificate the panel uses to talk to the nodes and the panel's SSH key.