--- sidebar_position: 3 title: Docker description: Run qui in Docker with compose or standalone. --- import CodeBlock from '@theme/CodeBlock'; import DockerCompose from '!!raw-loader!@site/../distrib/docker/docker-compose.yml'; import DockerComposePostgres from '!!raw-loader!@site/../distrib/docker/docker-compose.postgres.yml'; import LocalFilesystemDocker from "../_partials/_local-filesystem-docker.mdx"; # Docker ## Docker Compose {DockerCompose} ```bash docker compose up -d ``` ## Docker Compose (Postgres) {DockerComposePostgres} ```bash docker compose -f docker-compose.postgres.yml up -d ``` ## Standalone ```bash docker run -d \ -p 7476:7476 \ -v $(pwd)/config:/config \ ghcr.io/autobrr/qui:latest ``` ## Local Filesystem Access ## Unraid Our release workflow builds multi-architecture images (`linux/amd64`, `linux/arm64`, and friends) and publishes them to `ghcr.io/autobrr/qui`, so the container should work on Unraid out of the box. ### Deploy from the Docker tab 1. Open **Docker → Add Container** 2. Set **Name** to `qui` 3. Set **Repository** to `ghcr.io/autobrr/qui:latest` 4. Keep the default **Network Type** (`bridge` works for most setups) 5. Add a port mapping: **Host port** `7476` → **Container port** `7476` 6. Add a path mapping: **Container Path** `/config` → **Host Path** `/mnt/user/appdata/qui` 7. Enable **Advanced View** (top right) 8. Set **Icon URL** to `https://raw.githubusercontent.com/autobrr/qui/main/web/public/icon.png` 9. Set **WebUI** to `http://[IP]:[PORT:7476]` 10. Set **Extra Parameters** to `--user="99:100"` (if you ran qui without this before you will need to change the ownership for the config and hardlink folders to `nobody`) 11. (Optional) add environment variables for advanced settings (e.g., `QUI__BASE_URL`, `QUI__LOG_LEVEL`, `TZ`) 12. Click **Apply** to pull the image and start the container The `/config` mount stores `config.toml`, logs, tracker icon cache, and other runtime assets. If you use the default SQLite engine, `qui.db` is stored there too. Point it at your preferred appdata share so settings persist across upgrades. If the app logs to stdout, check logs via Docker → qui → Logs; if it writes to files, they'll be under `/config`. ### Updating - Use Unraid's **Check for Updates** action to pull a newer `latest` image - If you pinned a specific version tag, edit the repository field to the new tag when you're ready to upgrade - Restart the container if needed after the image update so the new binary is loaded ## Updating ```bash docker compose pull && docker compose up -d ```