# Docker Self-Hosting Run OpenSEO locally with Docker. In Docker mode, OpenSEO uses `AUTH_MODE=local_noauth` (no auth checks, local admin user `admin@localhost`). The default `compose.yaml` uses the published GHCR image: - `ghcr.io/every-app/open-seo:latest` ## Prerequisites - Docker Desktop (or Docker Engine + Docker Compose) ## Quickstart ```bash cp .env.example .env docker compose up -d ``` Set `DATAFORSEO_API_KEY` in `.env`, then open `http://localhost:` (default `3001`). Docker Compose passes `.env` values into the container, and `compose.yaml` enables `CLOUDFLARE_INCLUDE_PROCESS_ENV=true` so the Cloudflare Vite runtime can read them as Worker bindings during local self-hosting. Optional env values: - `PORT` (defaults to `3001`) - `AUTH_MODE=local_noauth` (already set in compose) - `OPEN_SEO_IMAGE` (defaults to `ghcr.io/every-app/open-seo:latest`) ## Pin to a specific image tag Set `OPEN_SEO_IMAGE` in `.env` and restart: ```bash OPEN_SEO_IMAGE=ghcr.io/every-app/open-seo:v1.2.3 docker compose up -d ``` ## Build your own image locally If you are testing local code changes, build and run a local tag: ```bash docker build -f Dockerfile.selfhost -t open-seo:local . OPEN_SEO_IMAGE=open-seo:local docker compose up -d ``` ## Common commands - Restart service after env changes: ```bash docker compose up -d open-seo ``` - Pull latest published image and restart: ```bash docker compose pull && docker compose up -d ``` - Stop: ```bash docker compose down ``` - Stop and remove volumes: ```bash docker compose down -v ```