Ottoch binnen minuten draaiend krijgen

Docker Compose voor beide edities — Redis zit in de stack. Community-editie is gratis, geen licentie nodig.

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.

4
Open http://localhost en log in

Gebruik de gegevens uit de logs. Je wordt gevraagd je wachtwoord te wijzigen bij de eerste keer inloggen.

5
Voeg je AI-sleutel toe

Instellingen → LLM-configuratie. Ondersteunt OpenAI, Anthropic, Gemini en elk OpenAI-compatibel endpoint.

6
Verbind je database & begin met vragen stellen

Voeg een verbinding toe, activeer de tabellen die je wilt tonen, open dan het dashboard en begin met chatten.

Omgevingsvariabelen

Stel deze in je .env-bestand in, naast het Compose-bestand.

VariabeleBeschrijvingStandaard
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

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.

Vervang 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.
Een enterprise-licentiesleutel is vereist om toegang voor meerdere gebruikers te ontgrendelen. Vraag er hier een aan.

HTTPS met je eigen domein

Ottoch wordt geleverd met Caddy, dat HTTPS automatisch afhandelt via Let's Encrypt.

1
Wijs je domein naar de server

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.

2
Werk je .env bij en herstart

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.

Poorten 80 en 443 moeten openstaan op je firewall voor de uitgifte van Let's Encrypt-certificaten.
Caddy vernieuwt certificaten automatisch voor het verlopen — geen handmatig certificaatbeheer nodig.

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.

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
Alle verbindingen, sessies, LLM-configuratie en gebruikersinstellingen worden in het volume opgeslagen en blijven behouden na de update.
Databasemigraties worden automatisch uitgevoerd bij het starten van de container. Geen handmatige stappen nodig.

Vragen? Een enterprise-licentie nodig?

We helpen je graag op weg.

Licentie aanvragen → Neem contact op