You need Docker Engine, Docker Compose with --wait support, persistent disk
space, and a reverse proxy that provides HTTPS. The current application
repository requires access while public release preparation continues.
Get the application
git clone https://github.com/UnearthHQ/unearth-chat-app.git cd unearth-chat-app cp .env.example .env.production chmod 600 .env.productionConfigure your installation
Edit
.env.productionusing the configuration reference. Set unique database and Redis passwords, an authentication signing secret, public HTTPS origins, AI credentials and a model, and SMTP or Resend email.Generate each secret separately:
openssl rand -hex 32Build and start the services
docker compose --env-file .env.production -f compose.production.yaml up -d --build --waitCompose starts PostgreSQL and Redis, runs migrations, and then starts the API, worker, and web app. The migration container exits after success. The image is built locally; no published container image is required.
Configure HTTPS routing
Route your app hostname to
http://127.0.0.1:3000and your API hostname tohttp://127.0.0.1:4000. These are the default host ports.Set
WEB_ORIGINandAPI_BASE_URLto the corresponding public HTTPS origins. For sibling hostnames, setAUTH_COOKIE_DOMAINto their shared parent domain. See configuration for same-origin routing.If the proxy runs in a container, give it access to the application network or host ports. Its own
127.0.0.1does not refer to the Docker host.Verify the installation
docker compose --env-file .env.production -f compose.production.yaml ps curl --fail http://127.0.0.1:4000/ready curl --fail http://127.0.0.1:3000/api/readyOpen the public HTTPS app URL, create an account, verify email delivery, and complete onboarding. Readiness checks do not prove that external AI providers or ingestion are working; verify the research flows you enable.
Troubleshooting startup
docker compose --env-file .env.production -f compose.production.yaml logs --tail=100 api worker web
Check the migration service separately if the API or worker is waiting to start:
docker compose --env-file .env.production -f compose.production.yaml logs migrate
Keep PostgreSQL, Redis, and artifact volumes across updates. Do not delete volumes to resolve an application startup error.
For development without the production stack, follow the application local development guide.