Cómo instalar Openproject en Docker; Sistema de gestión de proyectos open source

OpenProject | Project Management | Docker

OpenProject: Sistema de gestión de proyectos open source en Docker

Gestiona proyectos con metodologías ágiles, clásicas o híbridas. Diagramas de Gantt, tableros Kanban, gestión de tiempo y costes, todo autohospedado.

¿Qué es OpenProject?

OpenProject es un sistema de gestión de proyectos open source potente y completo para la colaboración de equipos independiente de ubicación. Soporta metodologías clásicas, ágiles e híbridas, ofreciendo gestión de tareas, diagramas de Gantt, tableros Kanban, seguimiento de tiempo y costes, wikis, foros y mucho más.

Disponible como Community Edition (totalmente gratuita bajo licencia GNU GPL v3) y como Enterprise Edition (con funciones adicionales de pago), OpenProject es usado por más de 8 millones de usuarios en todo el mundo, desde startups hasta grandes corporaciones y administraciones públicas.

Filosofía del proyecto: OpenProject te da control total sobre tus datos de proyecto. Todo se ejecuta en tu infraestructura, sin dependencias cloud, sin límites artificiales de usuarios o proyectos.

Características principales

Gestión de proyectos

Diagramas de Gantt

Planificación visual con dependencias, hitos, rutas críticas y líneas base.

Tableros Kanban/Ágil

Workflows personalizables, sprints, backlogs, burndown charts y velocidad de equipo.

Gestión de tareas

Work packages con tipos personalizables, estados, prioridades y asignaciones.

Seguimiento de tiempo

Registro de horas trabajadas por tarea, proyecto y usuario con informes detallados.

Gestión de costes

Presupuestos, costes planificados vs reales, tasas por usuario y reporting financiero.

Roadmaps

Hojas de ruta visuales con múltiples proyectos y dependencias inter-proyecto.

Colaboración

Wikis por proyecto

Documentación colaborativa con historial de versiones y sintaxis Markdown.

Foros de discusión

Comunicación estructurada por tema con notificaciones por email.

Calendario de equipo

Vista calendario con todas las tareas, hitos y reuniones del proyecto.

Gestión de documentos

Repositorio centralizado de archivos con versionado y control de acceso.

Notificaciones

Alertas configurables por email, in-app y webhooks para cambios en tareas.

Menciones y watchlists

Etiqueta usuarios con @ y sigue work packages de interés.

Integraciones

Repositorios Git

Integración con GitHub, GitLab, Bitbucket. Vincular commits a work packages.

API REST completa

Automatiza y extiende OpenProject con integraciones personalizadas.

Nextcloud

Vincula archivos de Nextcloud directamente a work packages.

LDAP / SAML / OAuth

Single Sign-On con Active Directory, Google, Azure AD, Keycloak, etc.

Requisitos del sistema

  • Docker y Docker Compose instalados
  • Al menos 4 GB de RAM disponible (8 GB recomendado para producción)
  • 4 cores de CPU (mínimo 2 cores)
  • Espacio en disco: 10-20 GB para imágenes, base de datos y archivos
  • Sistema operativo: Linux (Ubuntu, Debian, CentOS, RHEL)

Instalación con Docker Compose

Paso 1: Clonar el repositorio oficial

git clone https://github.com/opf/openproject-docker-compose.git \ --depth=1 \ --branch=stable/17 \ openproject cd openproject

Paso 2: Crear y editar el archivo .env

cp .env.example .env nano .env

Edita las siguientes variables según tu entorno:

# Puerto para acceder a OpenProject PORT=8080 # Tag de la imagen Docker (versión) TAG=17 # Ruta donde se guardan los assets/archivos subidos OPDATA=/var/openproject/assets # Contraseña de PostgreSQL POSTGRES_PASSWORD=tu-contraseña-segura # Habilitar HTTPS (false para primera instalación) OPENPROJECT_HTTPS=false

Paso 3: Crear directorio para assets y establecer permisos

sudo mkdir -p /var/openproject/assets sudo chown 1000:1000 -R /var/openproject/assets

Paso 4: Iniciar los contenedores

OPENPROJECT_HTTPS=false docker compose up -d --build --pull always
OPENPROJECT_HTTPS=false deshabilita HTTPS para el primer inicio. En producción, usa un reverse proxy con TLS y elimina esta variable.

Paso 5: Ver logs y esperar

docker compose logs -f web

Espera hasta ver el mensaje de Puma indicando que el servidor web está listo. La primera carga puede tardar varios minutos mientras se inicializa la base de datos.

Paso 6: Acceder a OpenProject

Abre tu navegador y ve a: http://localhost:8080

Credenciales por defecto:

  • Usuario: admin
  • Contraseña: admin
Importante: Cambia la contraseña de admin inmediatamente después del primer login.

Arquitectura de contenedores

El setup de Docker Compose incluye varios servicios:

  • db: PostgreSQL 13 para almacenamiento de datos
  • cache: Memcached para caché de sesiones y objetos
  • proxy: Nginx como proxy inverso interno
  • web: Aplicación Rails (Puma) que sirve la interfaz web
  • worker: Procesos background para jobs asíncronos (emails, notificaciones)
  • cron: Tareas programadas (limpieza, sincronización, recordatorios)
  • seeder: Inicialización de base de datos (solo primera ejecución)

Personalización avanzada

Crear docker-compose.override.yml

Para personalizaciones que persistan entre actualizaciones:

nano docker-compose.override.yml

Ejemplo de override para cambiar puertos o añadir volúmenes:

services: proxy: ports: - "9090:80" # Cambiar puerto externo web: volumes: - ./custom-config:/custom # Montar configuración personalizada environment: - OPENPROJECT_SOME__SETTING=custom_value

Variables de entorno importantes

Añádelas en docker-compose.override.yml bajo x-op-app -> environment:

  • OPENPROJECT_HOST__NAME: Dominio de tu instancia (ej: projects.tudominio.com)
  • OPENPROJECT_HTTPS: true si usas reverse proxy con TLS
  • OPENPROJECT_DEFAULT__LANGUAGE: Idioma por defecto (es, en, de, etc.)
  • OPENPROJECT_EMAIL__DELIVERY__METHOD: smtp para envío de emails
  • OPENPROJECT_SMTP__ADDRESS: Servidor SMTP
  • OPENPROJECT_SMTP__PORT: Puerto SMTP (587 para TLS)
  • OPENPROJECT_SMTP__AUTHENTICATION: plain o login
  • OPENPROJECT_SMTP__USER__NAME: Usuario SMTP
  • OPENPROJECT_SMTP__PASSWORD: Contraseña SMTP

Ejemplo: Configurar SMTP con Gmail

x-op-app: &app environment: OPENPROJECT_EMAIL__DELIVERY__METHOD: smtp OPENPROJECT_SMTP__ADDRESS: smtp.gmail.com OPENPROJECT_SMTP__PORT: 587 OPENPROJECT_SMTP__DOMAIN: gmail.com OPENPROJECT_SMTP__AUTHENTICATION: plain OPENPROJECT_SMTP__ENABLE__STARTTLS__AUTO: true OPENPROJECT_SMTP__USER__NAME: tu-email@gmail.com OPENPROJECT_SMTP__PASSWORD: tu-app-password

Configurar reverse proxy (Producción)

Nginx

server { listen 443 ssl http2; server_name projects.tudominio.com; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; client_max_body_size 200M; # Permitir subidas grandes location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; # Para WebSocket (colaboración en tiempo real) proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }

Caddy

projects.tudominio.com { reverse_proxy localhost:8080 }

Actualizar variables de entorno para HTTPS

En tu .env o docker-compose.override.yml:

OPENPROJECT_HTTPS=true OPENPROJECT_HOST__NAME=projects.tudominio.com

Reinicia los contenedores:

docker compose down docker compose up -d

Gestión y mantenimiento

Ver logs

# Logs de todos los servicios docker compose logs -f # Logs solo del servicio web docker compose logs -f web # Logs del worker docker compose logs -f worker

Reiniciar servicios

# Reiniciar todo docker compose restart # Reiniciar solo el servicio web docker compose restart web

Detener OpenProject

docker compose down

Actualizar a la última versión

# Obtener últimos cambios del repositorio git pull # Actualizar imágenes docker compose pull # Recrear contenedores con nuevas imágenes docker compose up -d
Importante: Las migraciones de base de datos se ejecutan automáticamente al iniciar después de actualizar.

Backup de la base de datos

# Crear backup docker compose exec db pg_dump -U postgres openproject > openproject-backup-$(date +%Y%m%d).sql # Restaurar backup cat openproject-backup-20260430.sql | docker compose exec -T db psql -U postgres openproject

Backup completo (base de datos + archivos)

# Crear backup docker compose exec db pg_dump -U postgres openproject | gzip > db-backup.sql.gz tar czf assets-backup.tar.gz /var/openproject/assets # Restaurar zcat db-backup.sql.gz | docker compose exec -T db psql -U postgres openproject tar xzf assets-backup.tar.gz -C /

Resetear o eliminar datos

Eliminar todos los datos y empezar de cero

docker compose down -v

El flag -v elimina los volúmenes Docker (base de datos y assets).

Atención: Esto eliminará TODOS los datos de proyectos, usuarios, work packages, etc. sin posibilidad de recuperación.

Probar Enterprise Edition

Puedes probar todas las funcionalidades Enterprise durante 14 días gratuitamente en tu instalación Community:

  1. Inicia sesión como administrador
  2. Ve a Administración → Información
  3. Haz clic en Request trial license
  4. Rellena el formulario (nombre, email, empresa)
  5. Recibirás un token de Enterprise por email
  6. Pégalo en Administración → Enterprise Edition

Las funcionalidades Enterprise incluyen:

  • Tableros personalizables avanzados
  • Gestión de recursos y capacidad
  • Plantillas de proyectos
  • Vistas de calendario personalizables
  • Integración con Nextcloud
  • 2FA con TOTP
  • Workflows personalizados
  • Y mucho más

Casos de uso

  • Desarrollo de software: Gestión ágil con sprints, backlogs, integración Git y seguimiento de bugs
  • Gestión de proyectos tradicional: Diagramas de Gantt, dependencias, rutas críticas y reportes de progreso
  • Equipos distribuidos: Colaboración remota con wikis, foros, calendarios compartidos y notificaciones
  • Administración pública: Control total de datos, cumplimiento GDPR, sin vendor lock-in
  • Departamentos de TI: Gestión de tickets, incidencias, cambios y proyectos de infraestructura
  • Agencias creativas: Planificación de campañas, seguimiento de tiempo, gestión de recursos
  • Construcción e ingeniería: Planificación detallada, seguimiento de costes, gestión de documentos

Comentarios

Entradas populares de este blog

NAS SYNOLOGY DSM 7.1 en VMware ESXI - Guía instalación y configuración Synology DSM 7.1 en VMWARE

Solución al error: «user is not in the sudoers file» en Debian

Comando "NET USE", uso, parámetros y algunos ejemplos de uso