Requirements

Docker (or compatible runtime). Supported architectures: linux/amd64 and linux/arm64. Image on Docker Hub: averichev/cms.

Docker

The image includes Nginx and VerunaCMS. On startup the container fetches the latest binary from the update manifest and serves on port 80.

docker run -d \
  --name veruna-cms \
  -p 8080:80 \
  -v veruna-cms-data:/opt/veruna/data \
  averichev/cms:latest

CMS is available at http://localhost:8080. Data is stored in the veruna-cms-data volume. Use --restart unless-stopped for production.

Check with curl: curl -sI http://localhost:8080 — expect HTTP/1.1 200 OK (or 301/302). Status code only: curl -s -o /dev/null -w "%{http_code}" http://localhost:8080200, 301, or 302.

Docker Compose

services:
  cms:
    image: averichev/cms:latest
    container_name: veruna-cms
    ports:
      - "8080:80"
    volumes:
      - veruna-cms-data:/opt/veruna/data
    environment:
      - MANIFEST_URL=https://cms.veruna.tech/release/manifest.json
    restart: unless-stopped

volumes:
  veruna-cms-data:

Run with docker compose up -d.

Environment variables

VariableDefaultDescription
MANIFEST_URLhttps://cms.veruna.tech/release/manifest.jsonUpdate manifest URL. The container downloads the CMS binary from this URL on each start.
CMS_PORT20921Internal port the CMS backend listens on (Nginx proxies to it). Usually no need to change.