Implementeren
Ottoch binnen minuten draaiend krijgen
Docker Compose voor beide edities — Redis zit in de stack. Community-editie is gratis, geen licentie nodig.
Community-editie
Docker Compose — gratis tier
Twee services: de app en Redis voor ratelimitering. SQLite is ingebouwd — geen externe database nodig.
Want to try it with sample data first?
Skip writing your own compose file — ottoch-demo bundles the app, Redis, and one of every supported database (PostgreSQL, MySQL, MariaDB, SQL Server, ClickHouse, SQLite), pre-seeded with a shared sample dataset so you can try real queries across engines before connecting anything of your own.
git clone https://github.com/ottochapp/ottoch-demo cd ottoch-demo cp .env.example .env docker compose up -d
1. Maak je compose-bestand
services:
redis:
image: redis:7-alpine
restart: unless-stopped
command: redis-server --save "" --appendonly no --maxmemory 128mb --maxmemory-policy allkeys-lru
app:
image: registry.ottoch.com/ottoch:latest-ce
restart: unless-stopped
depends_on:
- redis
ports:
- "80:80"
- "443:443"
env_file: .env
volumes:
- ottoch_data:/data
volumes:
ottoch_data:
2. Maak je .env-bestand
DJANGO_SECRET_KEY=replace-with-a-long-random-string ENCRYPTION_KEY=replace-with-a-fernet-key REDIS_URL=redis://redis:6379/0 DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1 ADMIN_URL=admin/
Genereer DJANGO_SECRET_KEY:
python -c "import secrets; print(secrets.token_urlsafe(50))"
Genereer ENCRYPTION_KEY:
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
3. Start de stack
docker compose up -d
docker compose logs app
Bekijk de logs voor je automatisch gegenereerde beheerdersgegevens bij de eerste start.
Gebruik de gegevens uit de logs. Je wordt gevraagd je wachtwoord te wijzigen bij de eerste keer inloggen.
Instellingen → LLM-configuratie. Ondersteunt OpenAI, Anthropic, Gemini en elk OpenAI-compatibel endpoint.
Voeg een verbinding toe, activeer de tabellen die je wilt tonen, open dan het dashboard en begin met chatten.
Configuratie
Omgevingsvariabelen
Stel deze in je .env-bestand in, naast het Compose-bestand.
| Variabele | Beschrijving | Standaard |
|---|---|---|
DJANGO_SECRET_KEY |
Django secret key — long random string, never reuse across instances | Verplicht |
ENCRYPTION_KEY |
Fernet key — encrypts stored credentials and AI keys at rest | Verplicht |
REDIS_URL |
Redis connection URL for query rate limiting | redis://redis:6379/0 |
DATABASE_URL |
Database URL — CE uses SQLite by default, EE typically uses PostgreSQL | SQLite |
DJANGO_ALLOWED_HOSTS |
Comma-separated list of allowed host headers — add your domain in production | localhost,127.0.0.1 |
ADMIN_URL |
Path to the Django admin — change to something non-obvious (must end with /) | admin/ |
OTTOCH_SITE_URL |
Public URL of your instance | https://ottoch.com |
OTTOCH_OUTBOUND_IPS |
Comma-separated server outbound IPs, shown to users for firewall setup | leeg |
LICENSE_KEY_SALT |
License validation salt — Enterprise Edition only | Alleen EE |
SENTRY_DSN |
Sentry DSN for error tracking | optioneel |
EMAIL_HOST / EMAIL_HOST_USER / EMAIL_HOST_PASSWORD |
SMTP settings for system emails | optioneel |
Enterprise-editie
Docker Compose met PostgreSQL
Drie services: Redis, PostgreSQL en de app. Inclusief LDAP/Active Directory, multi-user RBAC, vervolgvraagdetectie en licentie-gebaseerde activering.
1. Log in bij de enterprise-registry
De EE-image is niet openbaar — je hebt de registry-gebruikersnaam en het wachtwoord nodig die we je bij aankoop van je licentie hebben gestuurd.
docker login ee-registry.ottoch.com
2. docker-compose.yml
services:
redis:
image: redis:7-alpine
restart: unless-stopped
command: redis-server --save "" --appendonly no --maxmemory 128mb --maxmemory-policy allkeys-lru
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ottoch
POSTGRES_USER: ottoch
POSTGRES_PASSWORD: changeme
volumes:
- pgdata:/var/lib/postgresql/data
app:
image: ee-registry.ottoch.com/ottoch:latest-ee
restart: unless-stopped
depends_on:
- redis
- db
ports:
- "80:80"
- "443:443"
env_file: .env
volumes:
- ottoch_data:/data
volumes:
pgdata:
ottoch_data:
3. .env
DJANGO_SECRET_KEY=replace-with-a-long-random-string ENCRYPTION_KEY=replace-with-a-fernet-key LICENSE_KEY_SALT=replace-with-your-license-salt DATABASE_URL=postgres://ottoch:changeme@db:5432/ottoch REDIS_URL=redis://redis:6379/0 DJANGO_ALLOWED_HOSTS=yourdomain.com ADMIN_URL=your-secret-admin-path/
4. Start de stack
docker compose up -d
docker compose pull heeft opnieuw de login uit stap 1 nodig op elke machine waar het nog niet is uitgevoerd.
changeme door een echt Postgres-wachtwoord in zowel de db-service als DATABASE_URL.
LICENSE_KEY_SALT moet overeenkomen met de salt die in je Ottoch-portal is geconfigureerd. Elke klant activeert zijn eigen licentiesleutel.
Eigen domein
HTTPS met je eigen domein
Ottoch wordt geleverd met Caddy, dat HTTPS automatisch afhandelt via Let's Encrypt.
Maak een A-record aan dat jouwdomein.com naar het IP-adres van je server wijst. Een TTL van 300s is prima voor de eerste installatie.
Stel DJANGO_ALLOWED_HOSTS=jouwdomein.com en OTTOCH_SITE_URL=https://jouwdomein.com in, en voer dan docker compose up -d uit. Caddy verkrijgt automatisch een HTTPS-certificaat bij het eerste verzoek.
Back-up & herstel
Je data veilig houden
Community-editie (SQLite-volume)
docker run --rm \ -v ottoch_data:/data \ -v $(pwd):/backup \ alpine \ tar czf /backup/ottoch-backup.tar.gz /data
Maakt ottoch-backup.tar.gz aan in de huidige map. Plan met cron of een andere back-uptool.
Enterprise-editie (PostgreSQL)
docker compose exec db \ pg_dump -U ottoch ottoch \ | gzip > ottoch-$(date +%Y%m%d).sql.gz
Standaard pg_dump. Herstel met gunzip | psql.
Updates
Up-to-date blijven
Data blijft bewaard in benoemde volumes. Haal de nieuwe image op en maak de container opnieuw aan — het volume blijft behouden.
Community-editie
docker compose pull docker compose up -d
Enterprise-editie
docker compose pull docker compose up -d
Vragen? Een enterprise-licentie nodig?
We helpen je graag op weg.