Quick Start
Status: Complete
Get a working Chatalot instance in 5 minutes using Docker.
How Chatalot is distributed
Chatalot ships as a signed container image (registry.seglamater.app/seglamater/chatalot). Self-hosting customers receive a deployment bundle from Seglamater — a ready-to-run Docker Compose setup that pulls the signed image using your instance's registry credentials, with managed updates. The git clone steps below are for operators with source access; if you have a deployment bundle, follow the instructions it ships with instead.
Prerequisites
Make sure you have Docker and Docker Compose installed. See Requirements for details.
Option A: Interactive Setup (Recommended)
The interactive installer walks you through every option with sensible defaults:
The installer will:
- Check that Docker, Docker Compose, and OpenSSL are installed
- Ask you about registration mode, server port, and optional features
- Generate Ed25519 JWT signing keys
- Create a
.envfile with secure random credentials - Build and start the Docker containers
- Wait for the health check to pass
When it finishes, open http://localhost:8080 in your browser.
Option B: Manual Setup
If you prefer to set things up by hand:
Step 1: Clone the Repository
Step 2: Generate Secrets
This creates:
- secrets/jwt_private.pem -- Ed25519 private key for signing JWTs
- secrets/jwt_public.pem -- Ed25519 public key for verifying JWTs
- .env -- Environment variables with a random database password and TOTP encryption key
Step 3: Start the Containers
The first build takes 5-10 minutes because it compiles the Rust server and WASM crypto module. Subsequent starts are nearly instant.
Tip: On ARM64 systems (Raspberry Pi, Oracle Cloud, etc.), the install script offers a pre-built image that skips the compilation step entirely.
Step 4: Verify It Is Running
Expected response:
Step 5: Create Your Admin Account
- Open
http://localhost:8080in your browser. - Click Register and create your account.
- The first registered user can be promoted to admin. Set
ADMIN_USERNAMEin your.envto your username and restart:
The server will grant admin privileges to that user on startup.
Important: Save your recovery code when it is displayed during registration. It is the only way to reset your password without admin help.
Step 6: Invite Others
By default, registration is set to invite_only. As an admin, you can generate invite codes from the admin panel to share with others.
If you set REGISTRATION_MODE=open during setup, switch to invite-only after your initial users have registered:
What Is Running
After setup, you have two containers:
| Container | Image | Purpose |
|---|---|---|
chatalot-server |
Built from Dockerfile |
Rust API server + Svelte web client |
chatalot-db |
postgres:17 |
PostgreSQL database |
And two Docker volumes:
| Volume | Purpose |
|---|---|
postgres_data |
Database files |
file_storage |
Uploaded files |
Quick Reference
# View logs
docker compose logs -f chatalot
# Stop everything
docker compose down
# Start again
docker compose up -d
# Rebuild after code changes
docker compose up -d --build
# Check resource usage
docker stats chatalot-server chatalot-db
Next Steps
- Configuration -- Customize all environment variables
- TLS and Reverse Proxy -- Set up HTTPS for production
- Cloudflare Tunnel -- Expose your instance publicly without port forwarding
- Security Hardening -- Lock down your production instance