Getting started

Your own server

Run Ghostdock's VMs on a server you own. One command sets it up, or your agent does it for you.

Ghostdock runs on your hardware as happily as on ours. Bring any Linux server: a box in the office, a dedicated machine at your hosting provider, a VPS. Your agent gets the same VMs, the same URLs and the same tools, and the machines, the data and the bill stay yours.

Idle VMs stop by themselves and wake when they are needed, so a server holds far more VMs than it could keep running at once.

Incus, the perfect fit

Ghostdock runs on your server through Incus, the open-source manager for Linux system containers and VMs. Never used it? You don't need to. The setup installs Incus 7.0 LTS for you, gives Ghostdock a project of its own, and leaves everything else on the server alone. You never have to type an incus command.

Why Incus: every Ghostdock VM gets limits that Incus enforces, in a project Ghostdock can never leave. Your own containers, VMs, networks and storage pools stay exactly as they are.

The server needs
SystemDebian 13, Ubuntu 26.04, or Ubuntu 24.04 with its HWE kernel (Linux 6.12 or later), x86-64
Memory2 GiB or more; everything above that is room for VMs
NetworkPorts 80, 443 and 2222 reachable, or a web server of your own in front (the setup handles both)

Already running Incus 7.0 or later on another system? That works too.

Let your agent do it

The easiest way. In Ghostdock, open Providers → Incus, name the server, and copy the prompt it shows into your agent. Or ask an agent that has Ghostdock connected:

Prompt
Connect my server 203.0.113.10 to Ghostdock as an Incus host. You can reach it with
ssh root@203.0.113.10.

The agent reads Ghostdock's host-setup skill. It checks the server first, asks you the few questions that matter in one message (is the server only for Ghostdock, where should VM data live, which domain should VM URLs use), runs the setup, and walks through what is left until your first VM has a URL.

Or run one command

In Ghostdock, open Providers → Incus, name the server, and copy its command. It carries a join token that works once, within an hour:

On your server
curl -fsSL https://ghostdock.ai/incus-host.sh | sudo sh -s -- --app https://ghostdock.ai --token <join token>

The script checks the server, prints its plan, and asks before it changes anything. Run it with --check first to see the plan and change nothing. On a fresh server the whole setup, Incus included, takes about a minute. It is safe to run again after a failure.

The CLI gets you the same command:

Terminal
ghostdock provider connect incus --name office

Then finish in Ghostdock

The script ends with the steps that are left, in order, and a link to the provider's page in Ghostdock, which tracks them:

  1. Firewall: open TCP 80, 443 and 2222 in your hosting provider's firewall or router, if there is one. The server's own firewall is already done; this one Ghostdock can't see.
  2. Connect: Ghostdock checks the server.
  3. Domain: a domain of yours for VM URLs. Ghostdock names the two DNS records to create.
  4. Reach: Ghostdock opens a URL on your server from outside, to prove the way in works.
  5. Default: whether new VMs land on this server unless someone picks another.

Or hand the rest to your agent, as the script suggests: "Finish setting up the Ghostdock provider office." It asks Ghostdock what is left and does each step.

Then create a VM on it like any other:

Terminal
ghostdock vm up --name hello --provider office

Good to know

  • "Ghostdock's router is not running" on the first check of a fresh server: its first image download can take longer than the setup waits. Start it once and check again: sudo incus start ghostdock-router --project ghostdock. Host release 0.4.14 retries by itself.
  • Your other data: the setup never erases or formats a disk. To keep VMs on a ZFS pool of your own, pass --pool-dataset tank/ghostdock; otherwise it offers a pool in a file on the system disk.
  • A server that does other things: --memory-reserve 4GiB keeps that much RAM for them.
  • Folders of the server in VMs: --host-paths /srv/media:ro,/srv/projects lists the only folders VMs may ever mount.
  • Updates: the host updates itself a day after each Ghostdock release, and rolls back if the new release isn't healthy within five minutes. Incus itself stays yours to update.
  • Isolation: VMs on your server share its kernel. Work that needs a hard boundary between strangers belongs on Ghostdock Cloud.
  • Taking it off again: the same script with uninstall removes exactly what it added and disconnects the server. --check shows what it would remove; without it, it asks first. Your VMs go only with --remove-vms, and your data (Disks, snapshots) only with --remove-data; without it, the uninstall keeps them and says what stays. Incus stays unless you add --remove-incus.
On your server
curl -fsSL https://ghostdock.ai/incus-host.sh | sudo sh -s -- uninstall --check

Every option: incus-host.sh --help.

Docker hosts (experimental)

Already running everything on Docker and don't want Incus? Ghostdock can run VMs as containers next to yours, on Docker 28 or later, with Sysbox for systemd and Docker inside VMs. Choose Providers → Docker (experimental), or ghostdock provider connect docker. It works, but Incus is where Ghostdock is at home: stronger limits, snapshots, and a clean line between your things and ours.

Copyright © 2026