Skip to content

feat(deploy): add Coolify-ready compose file and deployment guide#5373

Open
Bumpfi wants to merge 1 commit into
odysseus-dev:devfrom
Bumpfi:feature/coolify-support
Open

feat(deploy): add Coolify-ready compose file and deployment guide#5373
Bumpfi wants to merge 1 commit into
odysseus-dev:devfrom
Bumpfi:feature/coolify-support

Conversation

@Bumpfi

@Bumpfi Bumpfi commented Jul 9, 2026

Copy link
Copy Markdown

Summary

Deploying Odysseus on Coolify currently fails in three independent ways: Coolify's compose parser mangles the ${APP_DATA_DIR:-./data}/ssh-style bind-mount sources in docker-compose.yml into empty strings (invalid spec: :/app/.ssh:z: empty section between colons); the image is built from source on the server, which takes 10+ minutes and can OOM small VPSes even though CI already publishes a multi-arch image to GHCR; and the 127.0.0.1 host-port bindings are unreachable behind Coolify's Traefik proxy while SearXNG's host port 8080 collides with other stacks. This PR adds a separate, opt-in docker-compose.coolify.yml that fixes all three — pre-built ghcr.io/pewdiepie-archdaemon/odysseus:latest image, named volumes only, no host port bindings, and Coolify magic variables for domain routing (SERVICE_FQDN_ODYSSEUS_7000), a generated admin password, and the CORS origin — plus a step-by-step guide in docs/deploy/coolify.md. docker-compose.yml has a zero-line diff, so nothing changes for existing users.

Related: #3835 addresses some of the same symptoms but does so by changing the existing compose defaults (bind mounts → named volumes, SearXNG port remap), which would affect current deployments. This PR is purely additive and does not conflict with it.

Target branch

  • This PR targets dev, not main.

Linked Issue

Fixes #5384

Type of Change

  • Bug fix (non-breaking — fixes a confirmed issue)
  • New feature (non-breaking — adds new behaviour)
  • Breaking change (changes or removes existing behaviour)
  • Refactor / cleanup (behaviour unchanged)
  • Documentation only
  • CI / tooling / configuration

Checklist

  • I searched open issues and open PRs — this is not a duplicate (closest is fix(docker): resolve searxng crash and coolify data persistence #3835, see Summary for how this differs).
  • This PR targets dev
  • My changes are limited to the scope described above — no unrelated refactors or whitespace changes mixed in.
  • I actually ran the app and verified the change works end-to-end (see How to Test — full stack booted from the new compose file with the published GHCR image).

How to Test

  1. Validate both compose files parse: docker compose -f docker-compose.yml config -q and docker compose -f docker-compose.coolify.yml config -q (the second prints warnings about unset SERVICE_* variables — those are Coolify magic variables, filled in by Coolify at deploy time).
  2. Confirm existing users are unaffected: git diff dev -- docker-compose.yml is empty.
  3. Boot the Coolify stack locally, simulating the two magic variables:
    SERVICE_PASSWORD_ADMIN=testpass123 SERVICE_URL_ODYSSEUS=http://localhost docker compose -f docker-compose.coolify.yml -p coolifytest up -d
  4. Wait for docker compose -p coolifytest ps to show odysseus and searxng as healthy, then verify from inside the network (no host ports are published by design):
    • docker exec coolifytest-odysseus-1 curl -s -o /dev/null -w "%{http_code}" http://localhost:7000/302 (redirect to login)
    • docker exec coolifytest-odysseus-1 curl -s -o /dev/null -w "%{http_code}" "http://searxng:8080/search?q=test&format=json"200
    • login as admin / testpass123 via POST /api/auth/login200
  5. Clean up: docker compose -p coolifytest down -v
  6. Optional, on a real Coolify v4 instance: New → Public Repository → this repo, Build Pack "Docker Compose", Compose Location /docker-compose.coolify.yml, deploy — follows docs/deploy/coolify.md.

Visual / UI changes — REQUIRED if you touched anything that renders

N/A — no UI or rendering changes; compose file and docs only.

@github-actions github-actions Bot added the needs work PR description incomplete — please update before review label Jul 9, 2026
@github-actions github-actions Bot added ready for review Description complete — ready for maintainer review and removed needs work PR description incomplete — please update before review labels Jul 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready for review Description complete — ready for maintainer review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Deploying on Coolify fails: volume interpolation mangled, slow on-server build, unreachable 127.0.0.1 bindings

1 participant