Instalación de Seafile: Sincronización y Compartición de Archivos
Seafile es una plataforma de almacenamiento en la nube self-hosted con sincronización de archivos entre dispositivos, versiones, cifrado de extremo a extremo de bibliotecas y soporte para WebDAV y grupos colaborativos. Diseñado para alto rendimiento con grandes bibliotecas, Seafile es la alternativa privada a Dropbox o Google Drive más eficiente disponible para Linux. Esta guía cubre la instalación completa de Seafile Community Edition en Linux.
Requisitos Previos
- Ubuntu 20.04+, Debian 11+ o CentOS 8+
- Docker y Docker Compose instalados
- Mínimo 2 GB de RAM (4 GB recomendados)
- Almacenamiento para los archivos de usuario
- Puerto 80 y 443 disponibles (o proxy inverso)
- Dominio con DNS configurado (recomendado)
Instalación con Docker Compose
# Crear directorio de instalación
mkdir -p ~/seafile && cd ~/seafile
# Crear el archivo docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '3'
services:
db:
image: mariadb:10.11
container_name: seafile-mysql
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=db_dev
- MYSQL_LOG_CONSOLE=true
- MARIADB_AUTO_UPGRADE=1
volumes:
- ./mysql/db:/var/lib/mysql
memcached:
image: memcached:1.6.18
container_name: seafile-memcached
restart: unless-stopped
entrypoint: memcached -m 256
seafile:
image: seafileltd/seafile-mc:10.0-latest
container_name: seafile
restart: unless-stopped
ports:
- "80:80"
# - "443:443" # Descomentar si no usas proxy inverso
volumes:
- ./seafile-data:/shared
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=db_dev
- TIME_ZONE=Europe/Madrid
- [email protected]
- SEAFILE_ADMIN_PASSWORD=contrasena-admin-segura
- SEAFILE_SERVER_LETSENCRYPT=false # true si quieres LE automático
- SEAFILE_SERVER_HOSTNAME=seafile.tu-dominio.com
depends_on:
- db
- memcached
EOF
# Crear directorios para datos
mkdir -p ~/seafile/{mysql,seafile-data}
# Iniciar los servicios
docker compose up -d
# Ver el progreso de inicio (la primera vez tarda varios minutos)
docker compose logs -f seafile
Configuración Inicial
Acceder al panel web en http://TU-SERVIDOR o http://seafile.tu-dominio.com:
- Iniciar sesión con el email y contraseña de administrador configurados
- El panel de administración está en
http://TU-SERVIDOR/sys/
Configuración básica del servidor:
# Acceder al archivo de configuración de Seafile
# Los archivos de configuración están en:
ls ~/seafile/seafile-data/seafile/conf/
# Editar configuración principal
docker exec -it seafile cat /opt/seafile/conf/seahub_settings.py
Configurar el almacenamiento de cuotas por usuario:
# Desde el panel de administración del sistema:
# Sistema > Configuración > Cuota de almacenamiento por defecto
# O via Django shell
docker exec -it seafile /opt/seafile/seafile-server-latest/seahub.sh python-env python3 seahub/manage.py set_user_quota --quota 5 --user [email protected]
Configuración del Cliente de Sincronización
Descargar el cliente de Seafile para el sistema operativo:
- Linux:
seadrive-fuseo cliente gráfico - Windows/macOS: Desde seafile.com/download
# Instalar el cliente de Seafile en Linux (Ubuntu/Debian)
sudo apt install -y apt-transport-https
echo "deb [arch=amd64] https://linux-clients.seafile.com/seafile-deb/$(lsb_release -cs)/ stable main" | \
sudo tee /etc/apt/sources.list.d/seafile.list
wget https://linux-clients.seafile.com/seafile.asc | sudo apt-key add -
sudo apt update
sudo apt install -y seafile-gui
# O instalar el cliente de línea de comandos (seaf-cli)
sudo apt install -y seafile-cli
# Inicializar seaf-cli
seaf-cli init -d ~/Seafile
# Iniciar el daemon
seaf-cli start
# Conectar al servidor
seaf-cli config -k server_host -v https://seafile.tu-dominio.com
seaf-cli sync -l LIBRARY_ID -s https://seafile.tu-dominio.com -d ~/Seafile/mi-biblioteca -u [email protected] -p contrasena
Cifrado de Bibliotecas
Seafile soporta cifrado de extremo a extremo de bibliotecas individuales:
# Crear una biblioteca cifrada desde el panel web:
# Inicio > Crear biblioteca cifrada
# Introducir una contraseña de cifrado (¡NO SE PUEDE RECUPERAR SIN ESTA CONTRASEÑA!)
# El cifrado usa AES-256 en modo CBC
# Los archivos se cifran antes de subir al servidor
# El servidor no tiene acceso al contenido en texto claro
# Nota: Las bibliotecas cifradas NO soportan búsqueda de texto
# ni vista previa en el servidor
WebDAV
Seafile incluye soporte WebDAV para acceso desde cualquier cliente compatible:
# La URL WebDAV es:
# https://seafile.tu-dominio.com/seafdav/
# Montar WebDAV en Linux con davfs2
sudo apt install -y davfs2
# Crear punto de montaje
sudo mkdir -p /mnt/seafile
# Montar el servidor Seafile via WebDAV
sudo mount -t davfs https://seafile.tu-dominio.com/seafdav/ /mnt/seafile
# Introducir usuario y contraseña cuando se pida
# Montaje permanente en /etc/fstab
echo "https://seafile.tu-dominio.com/seafdav/ /mnt/seafile davfs user,uid=$(id -u),gid=$(id -g) 0 0" | sudo tee -a /etc/fstab
# Guardar credenciales WebDAV
echo "https://seafile.tu-dominio.com/seafdav/ [email protected] contrasena" | sudo tee -a /etc/davfs2/secrets
Gestión de Usuarios y Grupos
# Crear usuarios desde el panel de administración
# Admin > Sistema > Usuarios > Agregar usuario
# Crear grupos para colaboración
# El panel de grupos está en: Inicio > Crear grupo
# Compartir biblioteca con grupo
# Clic en la biblioteca > Compartir > Compartir con grupo
# Gestión de usuarios via CLI (Django manage.py)
docker exec -it seafile /opt/seafile/seafile-server-latest/seahub.sh python-env \
python3 seahub/manage.py createadmin [email protected] --password=contrasena2
# Listar usuarios
docker exec -it seafile /opt/seafile/seafile-server-latest/seahub.sh python-env \
python3 seahub/manage.py listuser
# Desactivar un usuario
docker exec -it seafile /opt/seafile/seafile-server-latest/seahub.sh python-env \
python3 seahub/manage.py disableuser [email protected]
Versionado de Archivos
# Seafile guarda el historial de versiones de los archivos automáticamente
# Para ver el historial de un archivo:
# Clic en el archivo > Historial de versiones
# Configurar cuántas versiones mantener (en seahub_settings.py):
# KEEP_REVISIONS_OF_DAY = 7 # Mantener versiones del últimos 7 días
# Para gestionar el historial de versiones desde el panel admin:
# Sistema > Gestión de archivos eliminados/historial
# Ver el espacio usado por versiones anteriores
docker exec -it seafile df -h /opt/seafile/seafile-data/
Integración LDAP
Configurar autenticación con LDAP/Active Directory:
# Editar la configuración de Seafile
docker exec -it seafile nano /opt/seafile/conf/seahub_settings.py
# Agregar configuración LDAP al final de seahub_settings.py
ENABLE_LDAP = True
LDAP_SERVER_URL = 'ldap://tu-servidor-ldap:389'
LDAP_BASE_DN = 'ou=users,dc=tu-dominio,dc=com'
LDAP_ADMIN_DN = 'cn=admin,dc=tu-dominio,dc=com'
LDAP_ADMIN_PASSWORD = 'contrasena-ldap'
LDAP_LOGIN_ATTR = 'mail'
LDAP_USERNAME_ATTR = 'uid'
LDAP_FILTER = 'memberOf=cn=seafile-users,ou=groups,dc=tu-dominio,dc=com'
# Reiniciar Seafile para aplicar la configuración LDAP
docker compose restart seafile
Proxy Inverso con Nginx
# Configuración de Nginx para Seafile con SSL
sudo tee /etc/nginx/sites-available/seafile << 'EOF'
server {
listen 80;
server_name seafile.tu-dominio.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name seafile.tu-dominio.com;
ssl_certificate /etc/letsencrypt/live/seafile.tu-dominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/seafile.tu-dominio.com/privkey.pem;
# Tamaño máximo de archivo (ajustar según necesidad)
client_max_body_size 10G;
proxy_request_buffering off;
location / {
proxy_pass http://127.0.0.1:80;
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 https;
proxy_read_timeout 36000s;
proxy_connect_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
# Actualizar SEAFILE_SERVER_HOSTNAME en docker-compose.yml y reiniciar
docker compose down && docker compose up -d
Solución de Problemas
Seafile no inicia:
# Ver logs del contenedor
docker compose logs seafile --tail 50
# Verificar que la base de datos está accesible
docker compose logs db --tail 20
# Comprobar los logs internos de Seafile
docker exec seafile cat /opt/seafile/logs/seahub.log | tail -30
docker exec seafile cat /opt/seafile/logs/seafile.log | tail -30
El cliente no puede sincronizar:
# Verificar la URL del servidor (debe incluir http:// o https://)
# Comprobar que el puerto está accesible
curl -I https://seafile.tu-dominio.com
# Ver los logs del daemon del cliente
cat ~/.ccnet/logs/seafile.log | tail -30
Problemas de cuota de espacio:
# Ver el espacio usado por usuario desde el panel admin
# Sistema > Usuarios > filtrar por cuota
# Aumentar la cuota global
# Sistema > Configuración > Cuota de almacenamiento por defecto (en GB)
Conclusión
Seafile ofrece una sincronización de archivos eficiente y segura con menor overhead que Nextcloud para cargas de trabajo que priorizan la transferencia de archivos. Su cifrado de extremo a extremo de bibliotecas individuales y soporte para WebDAV lo hace versátil para entornos donde la privacidad de los datos es crítica, tanto para uso personal como empresarial.


