Pon Ottoch en marcha en minutos

Docker Compose para ambas ediciones — Redis está incluido en el stack. La edición community es gratuita, no requiere licencia.

Docker Compose — nivel gratuito

Dos servicios: la app y Redis para limitar la tasa de peticiones. SQLite está integrado — no necesitas una base de datos externa.

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. Crea tu archivo compose

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. Crea tu archivo .env

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/

Genera DJANGO_SECRET_KEY:

python -c "import secrets; print(secrets.token_urlsafe(50))"

Genera ENCRYPTION_KEY:

python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

3. Inicia el stack

docker compose up -d
docker compose logs app

Consulta los logs para ver tus credenciales de administrador generadas automáticamente en el primer arranque.

4
Abre http://localhost e inicia sesión

Usa las credenciales de los logs. Se te pedirá que cambies tu contraseña en el primer inicio de sesión.

5
Añade tu clave de IA

Configuración → Configuración LLM. Compatible con OpenAI, Anthropic, Gemini y cualquier endpoint compatible con OpenAI.

6
Conecta tu base de datos y empieza a preguntar

Añade una conexión, activa las tablas que quieres exponer, luego abre el panel y empieza a chatear.

Variables de entorno

Configura estas variables en tu archivo .env, junto al archivo Compose.

VariableDescripciónPor defecto
DJANGO_SECRET_KEY Django secret key — long random string, never reuse across instances Obligatorio
ENCRYPTION_KEY Fernet key — encrypts stored credentials and AI keys at rest Obligatorio
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 vacío
LICENSE_KEY_SALT License validation salt — Enterprise Edition only Solo EE
SENTRY_DSN Sentry DSN for error tracking opcional
EMAIL_HOST / EMAIL_HOST_USER / EMAIL_HOST_PASSWORD SMTP settings for system emails opcional

Docker Compose con PostgreSQL

Tres servicios: Redis, PostgreSQL y la app. Incluye LDAP/Active Directory, RBAC multiusuario, detección de preguntas de seguimiento y activación basada en licencia.

1. Inicia sesión en el registro Enterprise

La imagen EE no es pública — necesitas el usuario y la contraseña del registro que te enviamos al comprar tu licencia.

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. Inicia el stack

docker compose up -d

docker compose pull necesitará de nuevo el inicio de sesión del paso 1 en cualquier máquina donde no se haya ejecutado antes.

Sustituye changeme por una contraseña real de Postgres tanto en el servicio db como en DATABASE_URL.
LICENSE_KEY_SALT debe coincidir con el salt configurado en tu portal de Ottoch. Cada cliente activa su propia clave de licencia.
Se requiere una clave de licencia enterprise para desbloquear el acceso multiusuario. Solicítala aquí.

HTTPS con tu propio dominio

Ottoch incluye Caddy, que gestiona HTTPS automáticamente a través de Let's Encrypt.

1
Apunta tu dominio al servidor

Crea un registro A que apunte tudominio.com a la IP de tu servidor. Un TTL de 300s está bien para la configuración inicial.

2
Actualiza tu .env y reinicia

Configura DJANGO_ALLOWED_HOSTS=tudominio.com y OTTOCH_SITE_URL=https://tudominio.com, luego ejecuta docker compose up -d. Caddy obtiene un certificado HTTPS automáticamente en la primera solicitud.

Los puertos 80 y 443 deben estar abiertos en tu firewall para la emisión de certificados de Let's Encrypt.
Caddy renueva los certificados automáticamente antes de que caduquen — sin gestión manual de certificados.

Mantener tus datos seguros

Edición Community (volumen SQLite)

docker run --rm \
  -v ottoch_data:/data \
  -v $(pwd):/backup \
  alpine \
  tar czf /backup/ottoch-backup.tar.gz /data

Crea ottoch-backup.tar.gz en el directorio actual. Prográmalo con cron o cualquier herramienta de copia de seguridad.

Edición Enterprise (PostgreSQL)

docker compose exec db \
  pg_dump -U ottoch ottoch \
  | gzip > ottoch-$(date +%Y%m%d).sql.gz

pg_dump estándar. Restaura con gunzip | psql.

Mantenerse actualizado

Los datos persisten en volúmenes con nombre. Descarga la nueva imagen y recrea el contenedor — el volumen se conserva.

Edición Community

docker compose pull
docker compose up -d

Edición Enterprise

docker compose pull
docker compose up -d
Todas las conexiones, sesiones, configuración LLM y ajustes de usuario se guardan en el volumen y sobreviven a la actualización.
Las migraciones de base de datos se ejecutan automáticamente al iniciar el contenedor. No se requieren pasos manuales.

¿Preguntas? ¿Necesitas una licencia enterprise?

Estaremos encantados de ayudarte a configurarlo.

Solicitar una licencia → Contáctanos