Compose generator

Build your stack.

Pick what you want. Dependencies get added automatically, secrets are generated in your browser, and you get a complete set of files ready to deploy. Nothing is uploaded anywhere — this all runs locally on this page.

Choose your modules

Click to add or remove. Required dependencies are pulled in for you and shown in amber — qBittorrent will always bring Gluetun with it.

Storage

Where things live on your server. The layout choice below matters more than it looks — it decides whether finished downloads are moved instantly or copied, using twice the disk.

Run id on your server. On Docker Desktop, leave at 1000.
The group id that should own your files.
An IANA name, like America/New_York. Detected from your browser.

Connection

Credentials

Secrets

Generated in your browser with crypto.getRandomValues — the same source of randomness your browser uses for HTTPS. They never leave this page, and stay masked on screen until you choose to reveal one.

Review

A last check before the files are written.

    Your files

    Copy each one, or download them. Put them all in the same folder and run docker compose up -d — or paste the Compose and environment files into an Arcane project.

    
    
    Secrets are hidden on screen. The dots stand in for real values so nothing leaks into a screenshot or over your shoulder. Copy and Download always give you the real file.

    Where do these files go?

    Downloading them is half the job. Here is where they actually go — start with the first if you would rather not open a terminal.

    No terminal needed

    Paste it straight into Arcane

    The easiest route, and the one to use if the command line makes you uneasy

    Arcane can create the whole project for you from the browser. You never touch a folder, a text editor or a terminal — you copy from this page and paste into Arcane.

    1. In Arcane, open Projects and choose New Project.
    2. Name it — media is fine.
    3. Come back here, open the docker-compose.yml tab above and press Copy. Paste it into Arcane's Compose editor.
    4. Open the .env tab, press Copy, and paste that into the project's environment field. This is where your secrets go, so Arcane holds them rather than a file you have to manage.
    5. Press Deploy.

    Arcane pulls the images and starts everything. The first run takes a few minutes. After that you start, stop, update and read logs from the same page.

    Copy gives you the real values. The dots on screen are only there so secrets do not end up in a screenshot — what lands on your clipboard is the genuine file.
    If you selected Caddy, this route needs one extra step. The Compose file mounts ./Caddyfile from the project folder, so that file has to exist on disk beside it. Pasting only the Compose and environment text leaves nothing to mount and Caddy will not start. Use the project folder or Git Sync route below instead, or add the Caddyfile to the project directory afterwards.
    One thing still needs a terminal, once. Installing Docker and starting Arcane itself. The quickstart walks through it with commands you can copy and paste. After Arcane is running, everything above is clicking.
    1

    Arcane, via a project folder

    If you prefer files on disk

    Arcane shows any folder in its projects directory as a project. Make a folder, put the files in it, and it appears in the UI ready to deploy.

    cd /opt/stacks          # your Arcane projects dir
    mkdir media
    # put docker-compose.yml and .env inside

    Refresh Arcane's Projects page and it is there. Press deploy.

    Mount paths must match. If your stacks live at /opt/stacks, mount them into Arcane as /opt/stacks:/opt/stacks — the same path on both sides. Compose files use relative paths and break if the two differ.
    2

    Arcane, via Git Sync

    Best if you want history and rollbacks

    Arcane has GitOps built in. Keep your Compose file in a repository, point Arcane at it, and pushing a change redeploys the stack.

    # in a new, PRIVATE repository
    git init
    git add docker-compose.yml .env.example .gitignore README.md
    git commit -m "Initial stack"
    git push

    Then in Arcane: Projects → Git Sync, give it the repository URL, a branch, and the path to the compose file inside the repo.

    Your secrets stay out of git — by design. The generated .gitignore already excludes .env, and Git Sync only pulls the compose file itself, not sibling files. So set your real values in Arcane instead: Customization → Variables for values shared across projects, or the project's own .env in Arcane. Commit .env.example so you have a record of which variables exist.
    3

    Arcane, via its API

    One command, if you tick the deploy script above

    The generator can include deploy-to-arcane.sh, which creates the project in Arcane and starts it.

    bash deploy-to-arcane.sh

    It asks for your Arcane URL and API key. The key is typed in with the input hidden, and is never written to a file or an environment variable.

    Create the key in Arcane under Settings → API Keys. The script finds your environment, uploads the Compose and env content, and deploys.

    Grant three permissions, not full access. Arcane keys are scoped, so give the key only:
    environments:read   projects:create   projects:deploy
    Run bash deploy-to-arcane.sh --permissions to list what your instance actually offers, and the script names the missing one if a call is refused.
    The key stays on your machine. This runs locally rather than from this page — an unrestricted Arcane key is root-equivalent on that host, and no website should ever ask you to paste one in.
    4

    Straight from a terminal

    No Arcane needed

    Put every file in one folder and bring it up.

    mkdir -p ~/media-server && cd ~/media-server
    # put the generated files here
    docker compose up -d
    docker compose logs -f

    Keep .env beside docker-compose.yml — Compose reads it automatically from the same directory.

    generator build 2026-09-09