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:

  1. 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.
  2. 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.
  3. 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.