¿Cómo instalar Seafile Community Edition 13?
Hace un par de meses he venido pensando en montar mi propia nube, en este post dejaré una guía de como hacer esto.
Configuración Docker
Lo primero es crear un directorio donde se almacenará la información de los volúmenes, la idea es que dentro de este directorio este todo lo relacionado con este servicio (base de datos, configuraciones, etc):
cd /tu/ruta/
mkdir seafile
Lo que hice fue seguir la guía oficial e ir probando, mi objetivo era subir la versión más simple posible. La manera oficial muestra que toca descargar varios archivos yaml pero yo preferí mejor tenerlo solo en uno y dejar sólo las variables necesarias.
De este ejemplo debes cambiar:
- Ruta donde estarán los volúmenes
- Las Contraseñas
- Email y contraseña tu cuenta de admin
- Zona horaria
- Dominio o IP
- JWT token, se puede crear ejecutando
pwgen -s 40 1
services:
db:
image: mariadb:10.11
container_name: seafile-mysql
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=cambiame
- MYSQL_LOG_CONSOLE=true
- MARIADB_AUTO_UPGRADE=1
volumes:
- "/cambiame/seafile/db:/var/lib/mysql"
networks:
- seafile-net
healthcheck:
test:
[
"CMD",
"/usr/local/bin/healthcheck.sh",
"--connect",
"--mariadbupgrade",
"--innodb_initialized",
]
interval: 20s
start_period: 30s
timeout: 5s
retries: 10
redis:
image: redis
container_name: seafile-redis
restart: unless-stopped
command:
- /bin/sh
- -c
- redis-server --requirepass "cambiame"
environment:
- REDIS_PASSWORD=cambiame
networks:
- seafile-net
seafile:
image: seafileltd/seafile-mc:13.0-latest
container_name: seafile
restart: unless-stopped
ports:
- "7024:80"
volumes:
- /cambiame/seafile/data:/shared
environment:
- SEAFILE_MYSQL_DB_HOST=db
- SEAFILE_MYSQL_DB_PORT=3306
- SEAFILE_MYSQL_DB_USER=seafile
- SEAFILE_MYSQL_DB_PASSWORD=cambiame
- INIT_SEAFILE_MYSQL_ROOT_PASSWORD=cambiame
- SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
- SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
- SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db
- TIME_ZONE=cambiame
- INIT_SEAFILE_ADMIN_EMAIL=cambiame
- INIT_SEAFILE_ADMIN_PASSWORD=cambiame
- SEAFILE_SERVER_HOSTNAME=cambiame
- SEAFILE_SERVER_PROTOCOL=https
- SITE_ROOT=/
- NON_ROOT=false
- JWT_PRIVATE_KEY=cambiame
- SEAFILE_LOG_TO_STDOUT=false
- CACHE_PROVIDER=redis
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=cambiame
- ENABLE_NOTIFICATION_SERVER=false
- INNER_NOTIFICATION_SERVER_URL=http://notification-server:8083
- ENABLE_SEAFILE_AI=false
- MD_FILE_COUNT_LIMIT=100000
depends_on:
db:
condition: service_healthy
redis:
condition: service_started
networks:
- seafile-net
# onlyoffice:
# image: onlyoffice/documentserver:8.1.0.1
# restart: unless-stopped
# container_name: seafile-onlyoffice
# ports:
# - "6233:80"
# environment:
# - JWT_ENABLED=true
# - JWT_SECRET=cambiame
# volumes:
# - /cambiame/seafile/onlyoffice/logs:/var/log/onlyoffice
# - /cambiame/seafile/onlyoffice/data:/var/www/onlyoffice/Data
# - /cambiame/seafile/onlyoffice/lib:/var/lib/onlyoffice
networks:
seafile-net:
name: seafile-net
seafile.yaml de ejemplo
OnlyOffice
Para habilitar OnlyOffice lo único que necesitas hacer es eliminar los comentarios del ejemplo anterior. Al ingresar al servidor deberías ver una pantalla similar a esta:

Luego de instalarlo, es necesario ir a la carpeta de configuración de Seafile y apuntar a tu dominio de office, ejemplo:
...
ENABLE_ONLYOFFICE = True
ONLYOFFICE_APIJS_URL = 'https://tu-dominio.com/web-apps/apps/api/documents/api.js'
ONLYOFFICE_JWT_SECRET = '...'
Archivo: /tu/directorio/data/seafile/conf/seahub_settings.py
Para configurar el email debes añadir tu configuración al archivo seahub_settings.py
...
EMAIL_USE_TLS = True # ó EMAIL_USE_SSL
EMAIL_HOST = 'smtp.dominio.com'
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'tupass'
EMAIL_PORT = 465
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
Archivo: /tu/directorio/data/seafile/conf/seahub_settings.py
Seguridad
Si tu deseo es publicarlo a internet, sugeriría que consideres usar CloudFlare Zero para añadir una capa extra de seguridad en la instalación.
Troubleshooting
Si tienes inconvenientes con la configuración con caddy, te sugiero usar Nginx Proxy Manager. De tal forma que tengas dos dominios:
- Dominio 1: tunube.tudominio.com
- Dominio 2: tuoffice.tudominio.com
De esta forma, tu cloud (dominio 1) enviará consultas a tu office (dominio 2).
Conclusiones
- La interfaz me parece rápida, estable y funcional
- Hay ciertos bugs menores con estilos CSS en donde a veces no se puede ver lo que se escribe en algunos menús como cambiar el nombre de un archivo.
- En la funcionalidad básica de markdown es necesario guardar manualmente, no tiene autoguardado
- El cliente en MacOS funciona sin problemas
- No hay forma de exportar todos los datos de un usuario, tocaría seleccionar y darle "download", me genera duda que pasaría si hay muchos archivos o si los archivos pesan mucho 🤔.
- Los archivos no se guardan en texto plano, por lo que vi, se usa git para versionar.
- Si creas librerías cifradas no podrás usar OnlyOffice.
- Tanto el subdominio de tu nube como el dominio de onlyoffice, deben tener certificados SSL