Desplegar
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.
Edición Community
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.
Usa las credenciales de los logs. Se te pedirá que cambies tu contraseña en el primer inicio de sesión.
Configuración → Configuración LLM. Compatible con OpenAI, Anthropic, Gemini y cualquier endpoint compatible con OpenAI.
Añade una conexión, activa las tablas que quieres exponer, luego abre el panel y empieza a chatear.
Configuración
Variables de entorno
Configura estas variables en tu archivo .env, junto al archivo Compose.
| Variable | Descripción | Por 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 |
Edición Enterprise
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.
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.
Dominio propio
HTTPS con tu propio dominio
Ottoch incluye Caddy, que gestiona HTTPS automáticamente a través de Let's Encrypt.
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.
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.
Copia de seguridad y restauración
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.
Actualizaciones
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
¿Preguntas? ¿Necesitas una licencia enterprise?
Estaremos encantados de ayudarte a configurarlo.