Docker VPS

Docker Engine with the Compose and Buildx plugins, installed from Docker's own repository on your server's first boot. You bring the compose.yaml.

Who it suits

People who run their projects in containers, or want to: a Compose stack, a few self-hosted tools, a box for building images. If you'd rather click through a dashboard than write Compose files, Coolify runs on top of Docker and does that for you.

Which plan

Budget (2 GB of memory) is enough for Docker itself and a couple of small containers. Every container adds its own memory on top, so size for the stack you'll run: a database plus an app usually wants Standard (4 GB), and building images on the server is the hungriest job of all.

What we install

Docker Engine with the Buildx and Compose plugins, from Docker's official package repository, enabled at boot. On a release Docker's repository doesn't carry yet, you get the distribution's own Docker packages instead (docker.io, or moby-engine on Fedora).

$ apt Debian family (apt)
  • ca-certificates
  • curl
  • docker-ce
  • docker-ce-cli
  • containerd.io
  • docker-buildx-plugin
  • docker-compose-plugin
$ dnf Red Hat family (dnf)
  • docker-ce
  • docker-ce-cli
  • containerd.io
  • docker-buildx-plugin
  • docker-compose-plugin

From order to ready

  1. Server ready. We email you when the server is running, and you can log in with SSH. The installer starts on that same first boot.
  2. Installer running. It logs to /var/log/vps9-setup.log; tail -f it to watch.
  3. Application ready. This can be minutes after SSH works. The installer writes its exit code to /var/lib/vps9-setup.exit; a value of 0 means installation succeeded. Docker is ready when docker info answers and docker compose version prints a version. Nothing is running yet and no ports are published.

What you still do

  1. Log in with SSH.
  2. Run docker run --rm hello-world to check it works.
  3. Put your project's compose.yaml on the server and run docker compose up -d.

Exposure and security

Docker itself listens on no network port; its socket is local and root-only. Ports you publish later with -p 8080:80 are open to the internet even when ufw says otherwise, because Docker writes its own firewall rules. Bind anything that sits behind a proxy to 127.0.0.1: and use the panel firewall for the rest.

Backups and upgrades

Docker's packages update with the rest of the system (apt upgrade or dnf upgrade). Your images don't: run docker compose pull and docker compose up -d when you choose to. Copy your compose files and named volumes off the server on a schedule. We run the hardware, the network and the first-boot install; after that, Docker is yours to run, and we don't manage or update it for you. Off-site backups of the whole disk are an optional paid add-on; they copy the disk as it is at one moment, so keep the app's own backups as well.

Ready when you are

Order a server