Dirección propia
El estudio recibe una URL HTTPS del tipo nombre.beer-lab.org y acceso administrativo de oTree.
Implementación
Una guía práctica para convertir un proyecto ya revisado en un build probado, desplegarlo en la infraestructura del laboratorio, correr las sesiones y resguardar sus resultados.
Alcance
La secuencia de abajo cubre solamente la implementación técnica y operativa. Úsala como referencia común entre el equipo investigador y el equipo del laboratorio durante programación, validación, sesiones, actualizaciones y retiro.
01 · Infraestructura
Cada experimento aprobado se ejecuta como un servicio independiente administrado por el laboratorio.
El estudio recibe una URL HTTPS del tipo nombre.beer-lab.org y acceso administrativo de oTree.
El laboratorio configura PostgreSQL, credenciales del servicio y copias de seguridad nocturnas.
El equipo del laboratorio despliega, actualiza y retira el servicio a partir de una versión identificable.
localhost.02 · Código
Parte de la plantilla pública y conserva la raíz del repositorio como raíz del proyecto oTree.
mi-experimento/
├── settings.py
├── requirements.txt
├── README.md
├── .gitignore
├── mi_app/
│ ├── __init__.py
│ └── ...
├── _static/ # opcional
└── _templates/ # opcionalNo coloques un segundo proyecto oTree dentro del repositorio. El archivo settings.py debe estar en su raíz.
from os import environ
ADMIN_PASSWORD = environ.get('ADMIN_PASSWORD')
SECRET_KEY = environ.get('SECRET_KEY')
# Conserva aquí SESSION_CONFIGS, SESSION_CONFIG_DEFAULTS y ROOMS.
# El laboratorio proporciona DATABASE_URL al desplegar.DATABASE_URL, DEBUG ni AUTH_LEVEL dentro de settings.py.OTREE_, léelas con environ.get() y documenta su propósito.ROOMS cuando el flujo operativo use códigos o salas permanentes.otree==6.x.y
psycopg2-binary==2.9.10
# añade debajo las demás dependencias realmente utilizadasSustituye 6.x.y por la versión exacta con la que probaste el estudio. No incluyas Procfile, runtime.txt ni Dockerfiles: el servidor construye el runtime.
.venv/
__pycache__/
*.py[cod]
*.sqlite3
.env
.otreezip
.DS_Store
exports/
participant_data/Excluye bases locales, exportaciones, datos de participantes, secretos, entornos virtuales, cachés y binarios grandes. Los videos u otros activos pesados deben acordarse antes del despliegue.
03 · Pruebas
La entrega debe funcionar fuera de la computadora donde fue programada.
python -m venv .venv
# activa el entorno virtual en tu sistema
python -m pip install -r requirements.txt
otree devserverotree testIncluye bots para las rutas principales y para cualquier rama crítica. Una prueba exitosa no sustituye el recorrido manual.
SESSION_CONFIG y, si corresponde, entra mediante cada Room.OTREE_PRODUCTION=1 y revisa que no dependa de datos locales.04 · Paquete técnico
Vincula una versión técnica concreta al expediente del proyecto ya aprobado en el paso 2.
| Dato | Qué informar |
|---|---|
| Versión | Repositorio y tag/commit, o nombre y fecha del ZIP. |
| Subdominio | Nombre neutral de 3 a 15 caracteres: minúsculas, números o guiones; debe comenzar con una letra. |
| Configuraciones | SESSION_CONFIGS, Rooms y flujo que se usará en cada tipo de sesión. |
| Operación | Fechas, número de sesiones, participantes simultáneos previstos y ventana de piloto. |
| Variables | Nombres de variables requeridas y su función. Envía los valores secretos por separado. |
| Acceso | Persona autorizada para recibir la URL administrativa y la contraseña. |
05 · Publicación
El laboratorio construye la versión identificada; el equipo investigador confirma que el resultado se comporta como el build aprobado.
06 · Operación
Usa las herramientas administrativas de oTree como controles operativos, no como sustituto del protocolo de sesión.
Entra por /login, confirma versión, configuración, Room, enlaces, capacidad y personal responsable.
Observa el avance en Monitor, registra incidentes y evita actualizar el servicio mientras haya participantes conectados.
Exporta datos, valida el número de registros y guarda una copia en el repositorio institucional aprobado.
07 · Ciclo de vida
Cada despliegue debe corresponder a una versión recuperable y a una decisión operativa explícita.
| Tipo de cambio | Acción |
|---|---|
| Texto, estilos o lógica sin cambiar modelos | Entrega una nueva versión, documenta el cambio y repite las pruebas afectadas. La base normalmente puede conservarse. |
| Campos o modelos de datos | Coordina una ventana. oTree puede requerir reiniciar la base; exporta todo antes y valida la nueva estructura. |
| Cambio material del estudio | Vuelve al expediente del paso 2 antes de implementar; puede requerir revisión adicional. |
| Fin de recolección | Realiza la exportación final, comprueba los archivos y confirma al laboratorio cuándo retirar el servicio. |
Conserva para cada release: tag o commit, fecha, responsable, resumen de cambios, resultado de pruebas y decisión sobre la base de datos.
08 · Diagnóstico
La mayoría de las fallas de despliegue proviene de dependencias incompletas, diferencias entre Windows y Linux o archivos locales no declarados.
| Síntoma | Revisión recomendada |
|---|---|
| Falla al instalar | Confirma que cada dependencia esté en requirements.txt, con una versión compatible y disponible para Python 3.11. |
TemplateNotFound | Compara exactamente mayúsculas y minúsculas en rutas, templates, imágenes y archivos estáticos. |
| CSS o imágenes no aparecen | Verifica rutas de static y que los archivos estén incluidos en la versión entregada. |
| Un enlace apunta a localhost | Elimina hosts codificados y construye URLs relativas o a partir de la solicitud. |
| No permite iniciar sesión | Confirma que ADMIN_PASSWORD provenga del entorno y que no se haya sobrescrito AUTH_LEVEL. |
| “Database is out of date” | Detén sesiones, exporta datos y coordina el reinicio de la base si cambió el modelo. |
| Archivos desaparecen al actualizar | No escribas resultados al disco del servicio; usa la base y exportaciones controladas. |
Usa esta página como checklist técnico. Si cambia el diseño, la población, el protocolo o cualquier condición aprobada, actualiza primero el expediente del proyecto antes de desplegar.