Skip to main content
Docker runs programs in isolated “boxes” (containers): inside the box sits the program itself and everything it needs. You don’t have to install libraries by hand and match up versions — grab a ready-made image, run it, and it works. Delete the container and your system stays clean. Instead of a dozen commands from a how-to, it’s usually one or two, and the service is already running. On a Lumi server you’re root by default (the IP and password are on the server card in the bot), and the default image is Ubuntu 22.04, so the official script below installs with no extra steps.
Commands are current as of writing. Before installing, check the official site docs.docker.com — the syntax changes from time to time.

Installation

1

Download the official script

The fastest way is the official script. It detects your system (Ubuntu or Debian) on its own and installs the latest Docker:
curl -fsSL https://get.docker.com -o get-docker.sh
2

Run the script

sh get-docker.sh
If you want more control over the process, install Docker from the official repository. It’s a longer route, but it gives you precise control over where the packages come from. Full instructions for Ubuntu and Debian are on docs.docker.com.
3

Check that everything works

docker run hello-world
Docker downloads a tiny test image and runs it. If you see the message Hello from Docker!, the installation went through.

Basic commands

Run a container in the background with port mapping (external port 8080 → port 80 inside the container):
docker run -d -p 8080:80 nginx
Here -d is detached (background) mode, -p is the port mapping, and nginx is the image name.
docker ps
By name or ID from docker ps:
docker logs CONTAINER_NAME
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME
docker images

Docker Compose

When a service needs several containers (an app + a database, for example) or just a long startup command with a pile of parameters that’s awkward to keep in your head, Docker Compose lets you describe it all in a single compose.yaml file and bring it up with one command.
In the current version, Docker Compose is built into Docker as a plugin and is invoked via docker compose (no hyphen). The old standalone docker-compose utility (with a hyphen) is deprecated — it’s not present in new installations.
Example compose.yaml — a web server on port 8080:
services:
  web:
    image: nginx
    ports:
      - "8080:80"
    restart: unless-stopped
Put the file in its own folder, change into it, and bring the service up in the background:
docker compose up -d
Stop and remove everything described in the file:
docker compose down
If a container maps a port to the outside (the -p flag or a ports block), that port becomes reachable from the internet. Open only the ports you actually need in the firewall, and password-protect any control panels. Firewall setup: Firewall (ufw).
Lumi handles the server and network; software setup is on you. Network or port issues — @lumisup_robot.

Where to next

n8n

No-code process automation — runs via Docker.

Your own LLM

A neural net on your server via Ollama.