Use this profile for team-style deployment with JWT auth mode and PostgreSQL backing services.
- Docker Engine
- Docker Compose
- Git
Windows users: Use WSL2 or Git Bash. The
maketargets require a Unix-like shell.
git clone https://github.com/rmusser01/tldw_server.git
cd tldw_server
cp tldw_Server_API/Config_Files/.env.example tldw_Server_API/Config_Files/.envConfigure multi-user mode in .env:
AUTH_MODE=multi_userGenerate and set the required secrets (run each command, paste the output into .env):
python -c "import secrets; print(secrets.token_urlsafe(32))"
# Paste output as: JWT_SECRET_KEY=<output>
python -c "import secrets; print(secrets.token_urlsafe(32))"
# Paste output as: MCP_JWT_SECRET=<output>
python -c "import secrets; print(secrets.token_urlsafe(32))"
# Paste output as: MCP_API_KEY_SALT=<output>Note:
JWT_SECRET_KEYis for the main auth system.MCP_JWT_SECRETandMCP_API_KEY_SALTare for the MCP subsystem. All three must be unique values.
Set the Postgres connection URL (see Postgres Options below):
DATABASE_URL=postgresql://tldw_user:your_password@postgres:5432/tldw_usersOption A: Use the bundled Postgres from docker-compose (recommended for getting started):
The default docker-compose.yml includes a Postgres service. Set DATABASE_URL to point to it:
DATABASE_URL=postgresql://tldw_user:TestPassword123!@postgres:5432/tldw_usersOption B: Use an external Postgres instance:
Point DATABASE_URL to your existing database:
DATABASE_URL=postgresql://your_user:your_pass@your-host:5432/your_dbEnsure the database exists and the user has CREATE TABLE permissions.
For full variable details and hardening, see:
Docs/User_Guides/Server/Multi-User_Postgres_Setup.mdDocs/Deployment/First_Time_Production_Setup.md
docker compose --env-file tldw_Server_API/Config_Files/.env -f Dockerfiles/docker-compose.yml up -d --buildcurl -sS http://127.0.0.1:8000/health
curl -sS http://127.0.0.1:8000/docs > /dev/null && echo "docs-ok"
curl -sS http://127.0.0.1:8000/api/v1/config/quickstart- If speech is part of day-one setup, continue with First-Time Audio Setup: CPU Systems or First-Time Audio Setup: GPU/Accelerated Systems after this profile is running.
- If startup fails, verify
DATABASE_URLpoints to reachable Postgres. - Confirm Postgres credentials and network access from containers.
- Check logs:
docker compose -f Dockerfiles/docker-compose.yml logs --tail=200. - If port 8000 is already in use, stop the conflicting process or change the host port mapping in docker-compose.
- Browse the API docs at http://127.0.0.1:8000/docs
- Create the first admin user — follow the multi-user setup guide at
Docs/User_Guides/Server/Multi-User_Postgres_Setup.md - Configure LLM providers — add provider API keys to
.envand restart containers - Add the WebUI — add the WebUI compose overlay:
docker compose --env-file tldw_Server_API/Config_Files/.env \ -f Dockerfiles/docker-compose.yml \ -f Dockerfiles/docker-compose.webui.yml up -d --build