5-Minute Quickstart
End-to-end, on a fresh Linux VPS with Docker installed and a domain pointing at it.
-
Install SimpleDeploy.
Terminal window curl -fsSL https://vazra.github.io/apt-repo/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/vazra.gpgecho "deb [signed-by=/usr/share/keyrings/vazra.gpg arch=$(dpkg --print-architecture)] https://vazra.github.io/apt-repo stable main" | sudo tee /etc/apt/sources.list.d/vazra.listsudo apt update && sudo apt install simpledeployTerminal window sudo mkdir -p /etc/simpledeploy /var/lib/simpledeploycurl -fsSL https://raw.githubusercontent.com/vazra/simpledeploy/main/deploy/docker-compose.example.yml \| sudo tee /etc/simpledeploy/docker-compose.ymlUses
network_mode: hostso Caddy binds 80/443 on the host directly. See Install via Docker.Terminal window curl -L https://github.com/vazra/simpledeploy/releases/latest/download/simpledeploy_linux_amd64.tar.gz | tar xzsudo mv simpledeploy /usr/local/bin/Terminal window brew install vazra/tap/simpledeploymacOS is for the remote CLI client. Run the server on Linux.
-
Generate the config.
Terminal window sudo simpledeploy init --config /etc/simpledeploy/config.yamlsudo vim /etc/simpledeploy/config.yamlSet three things:
domain: manage.example.comtls:mode: autoemail: you@example.commaster_secret: "PASTE_RANDOM_STRING_HERE"Generate the master secret:
Terminal window openssl rand -hex 32 -
Start the server.
Terminal window sudo systemctl enable --now simpledeploysudo systemctl status simpledeployTerminal window cd /etc/simpledeploy && sudo docker compose up -dsudo docker compose logs -f simpledeployDrop the systemd unit at
/etc/systemd/system/simpledeploy.service, then:Terminal window sudo systemctl daemon-reloadsudo systemctl enable --now simpledeploy -
Create the admin user.
Open
https://manage.example.com/in a browser. The setup wizard greets you and asks for a username and password. That account is the first super-admin.Prefer the CLI? See Create the admin.
-
Deploy your first app.
Drop a compose file in
/etc/simpledeploy/apps/whoami/docker-compose.yml:services:web:image: traefik/whoamiports:- "80"labels:simpledeploy.domain: "whoami.example.com"simpledeploy.port: "80"restart: unless-stoppedThe reconciler picks it up within a few seconds. Or push it explicitly:
Terminal window simpledeploy apply -f docker-compose.yml --name whoami -
Visit your domain.
Open
https://whoami.example.com/. Caddy provisioned a Let’s Encrypt cert, the reverse proxy is routing, the container is serving. Done.