Octop Docker Setup: Compose, Volumes, and Environment Vars
Octop ships a pre-built Docker image that wraps the full platform — web UI, CLI, IM channels, and the agent runtime — in a single container. Docker Compose is the recommended approach for production and multi-user deployments because it handles volume mounts and environment configuration out of the box. All your data persists in a named volume (or a host bind mount), so upgrades never touch your conversations, agents, or credentials.
Pull and start with Docker Compose
From the root of the cloned repository, start Octop with a single command:
Docker Compose builds the image from source, mounts your host ~/.octop directory into the container at /data/.octop, and starts the server in detached mode.
To pass custom environment variables (API keys, port overrides, etc.), create a docker/.env file before running the command:
Set OCTOP_DATA in docker/.env to choose a custom host directory for all persistent data. This makes it easy to back up or migrate your entire Octop instance by copying a single directory. Set OCTOP_DEFAULT_PASSWORD for the first admin password; omit it to generate a random one.
Or start with a standalone docker run
If you prefer not to use Compose, build the image manually and run the container directly:
The named volume octop-data persists your database, secrets, and agent workspaces across container restarts and upgrades. The image does not include Playwright Chromium. Re-run the installer with --extras browser on the host, or add the browser extra in your image, if you need workbench browser automation.
The HOME=/data environment variable is required so that ~/.octop resolves to /data/.octop inside the container, where the named volume is mounted.
Open the web UI and sign in
Once the container starts, open your browser and navigate to:
Sign in with the username and password in credential.txt. Compose bind-mounts the host ~/.octop to /data/.octop, so both paths are the same file:
Override the username with OCTOP_ADMIN_USERNAME. Bare-metal first-run steps are in Quickstart. Password rules and how to change it are in First-run password.
To verify the container is healthy before opening the web UI, run:
Configure a model provider
Octop ships built-in presets for Tencent Cloud, OpenAI, Anthropic, DeepSeek, Ollama, and many more. Add your first provider directly from the web UI:
Pick a built-in preset, enter your API key, and enable it. You can also pass common API keys as environment variables so they are available to the agent runtime immediately on first boot:
Once the provider is configured, open the Chat section in the web UI and start your first conversation.
First-run password
The entrypoint runs octop init once, only when the volume has no octop.db yet. It writes the URL, username, and password to /data/.octop/credential.txt inside the container (chmod 600). This is not ~/octop-login.txt (that file is for a bare-metal octop init / setup wizard).
A password you set must be at least 8 characters, include a letter and a digit, and must not be a common value such as password123, admin123, or octop123. Set OCTOP_DEFAULT_PASSWORD in docker/.env or with docker run -e.
After you sign in, change the password from the avatar menu (Change password), or run:
Changing the password in the web UI does not rewrite credential.txt — the password you set in the UI wins. Do not leave the generated or bootstrap password on a host that is reachable from the network.
Environment variables
Use these variables to configure Octop's Docker deployment. For Docker Compose, add them to docker/.env. For docker run, pass them with -e KEY=value.
After the first boot, change the password from the avatar menu (Change password). Do not leave the generated or bootstrap password on a host that is reachable from the network.

