Server — Quick Start
Requirements
- Docker and Docker Compose.
- Optional for local dev outside Docker: Go 1.26+, Node 20+, npm.
Steps
-
Clone the repository.
-
Copy the environment file and set
KYPOST_BIND:cp .env.example .envEdit
.envto match your configuration. These choices have significant security implications, so make changes deliberately. The supplied values are sensible starting points, but you must adapt them to your deployment. Read.env.examplefor the complete list and its security notes.TZ=America/New_Yorksets your local time zone, update as needed.SERVER_BASE_URL=sets the address your server is located at.KYPOST_BIND=127.0.0.1publishes the server only on loopback. Use it when an HTTPS proxy such as cloudflared or nginx reaches KyPost on the same host. A proxy running as a container onkypost-netcan instead connect directly tohttp://KyPost-Server:5866without publishing the port.CAPTCHA_PROVIDER=powenables the self-hosted proof-of-work CAPTCHA. Set it tononeto disable CAPTCHA. The default requires TLS except on localhost. -
Create the model cache directory, then build and start the container:
mkdir -p share/ollama/models docker compose up --build -d -
Open the web UI at
http://localhost:5866.Warning, the server serves plain HTTP by default. The session cookie gets the
Secureflag only when the request came over TLS.http://onlocalhostfor one machine is acceptable. For network access, put TLS in front. -
Sign in as
admin. On first start the server writes a generated password tofirst-run-password.txtin the config volume, mode600. Read it, then delete the file:docker compose exec kypost-server cat /kypost/config/first-run-password.txt docker compose exec kypost-server rm /kypost/config/first-run-password.txtTo set your own password, pass
BOOTSTRAP_ADMIN_PASSon first run. You can also passBOOTSTRAP_ADMIN_USER. The password does not appear in container logs. -
Change the password when the UI asks you to. Until you do, the account can reach only the password-change screen.
-
In Config, save IMAP and SMTP settings. Then run IMAP Test.
-
In Tuning, change labels and prompt. Then save.
After setup
- Verify the client IP handling. Sign in and fetch
GET /api/status. The README saysclientIpmust be your own public address andproxyHeadersTrustedmust betrue(orfalsefor direct TLS in KyPost). IfclientIpis a loopback or bridge address, every user shares one lockout key.