Self-Hosting Dreamphase
Run a complete Dreamphase stack on your own machine or server. Full control over your data; it never leaves infrastructure you control.
What you'll run
A self-hosted Dreamphase instance is a Docker Compose stack published by GestaltMind. It bundles two coordinated services into a single docker-compose.yml:
- Dreamphase server: serves both the HTTP API and the bundled web UI on the same port
- Database: a self-contained database container that persists your dream journal data on a local volume
You pull the stack, drop in a docker-compose.yml, set a handful of environment variables, and run docker compose up -d. That's it.
Architecture diagram
A diagram showing the two containers (API server with embedded web UI, database), the Docker network that connects them, and the two client paths (mobile app and browser) will appear here.
Device-only vs. self-hosted
Dreamphase is a local-first app. By default, every dream you record lives on the device you record it on; GestaltMind does not host a backend that stores your journal. Self-hosting is the optional second mode: you run the Dreamphase server on infrastructure you control, point your devices at it, and your data lives wherever you put the database. There is nothing in between.
How clients connect to the stack
Once your stack is running, there are three ways to interact with it:
- Dreamphase app: a setting in the app accepts a base URL (e.g.
http://your-host:port) that points it at your stack instead of using device-only mode. - Bundled web UI: the Dreamphase server hosts a browser interface on the same port as the API. Open it in any browser to view and edit data without the app.
- Direct API / database access: the HTTP API and database port are reachable for power users who want to query or script against the stack directly.
Guide sections
Work through the sections in order. Each page builds on the previous one.
Docker Engine, docker-compose v2, and an open port range, everything you need before starting.
Pull the image set, drop in the compose file, and bring the stack up with docker compose up -d.
Ports, database credentials, secrets, and volume mounts for the stack.
Open the bundled browser interface, set your API key, and start recording dreams.
Point the Dreamphase app at your stack URL and verify the connection.
Container won't start, port conflicts, mobile app can't reach the API, and more.