Cómo instalar el almacenamiento en la nube autoalojado Seafile en Debian 12
Seafile es un sistema de alojamiento de archivos de código abierto escrito en el marco web Django. Es un software multiplataforma que ofrece un conjunto de funciones de almacenamiento en la nube y permite a los usuarios almacenar, gestionar y compartir archivos dentro del ecosistema Seafile.
En Seafile, los archivos se almacenan en el servidor central y pueden sincronizarse con clientes a través de múltiples dispositivos y teléfonos móviles. Seafile es una alternativa a los servicios de alojamiento de archivos como Google Drive, Dropbox y Mega.nz. Con Seafile, puedes crear una solución de compartición de archivos para tus aplicaciones privadas en la nube.
Este artículo te guiará en la instalación de Seafile en un servidor Debian 12 con MariaDB como base de datos, Nginx como proxy inverso y HTTPS a través de Letsencrypt y UFW (Uncomplicated Firewall) para asegurar Seafile.
Requisitos previos
Para empezar con esta guía, asegúrate de que tienes los siguientes requisitos:
- Un servidor Debian 12
- Un usuario no root con privilegios de administrador
- Un nombre de dominio apuntando a la dirección IP del servidor
Instalación de dependencias
Seafile está escrito en el framework web Django, que se basa en Python. Para instalar Seafile, debes asegurarte de que Python está instalado. Además, necesitarás dependencias como MariaDB/MySQL como base de datos, Nginx como proxy inverso y Memcached o Redis para la gestión de sesiones y caché. En esta sección, instalarás esos paquetes a través del gestor de paquetes APT.
En primer lugar, ejecuta el siguiente comando para actualizar el índice de paquetes de Debian.
sudo apt update
Ahora ejecuta el siguiente comando para instalar en tu sistema dependencias como Python3, el servidor MariaDB, el servidor web Nginx, Memcached y algunas bibliotecas adicionales.
sudo apt install mariadb-server nginx python3 python3-dev python3-setuptools python3-pip libmariadb-dev-compat ldap-utils libldap2-dev libsasl2-dev python3.11-venv memcached libmemcached-dev
Introduce‘Y’ para confirmar la instalación.
Una vez completada la instalación, comprueba el servidor MariaDB con el siguiente comando.
sudo systemctl is-enabled mariadb sudo systemctl status mariadb
En la siguiente salida, puedes ver que el servidor MariaDB está habilitado y funcionando.
Ahora comprueba el servicio Nginx con el siguiente comando.
sudo systemctl is-enabled nginx sudo systemctl status nginx
Puedes ver a continuación que el servidor web Nginx está en ejecución y habilitado.
Por último, comprueba el servicio Memcached para asegurarte de que se está ejecutando. El servicio Memcached debería estar ejecutándose y habilitado.
sudo systemctl is-enabled memcached sudo systemctl status memcached
Configurar el servidor MariaDB
Ahora que ya has instalado MariaDB, el siguiente paso será configurar y asegurar la implementación del servidor MariaDB. A continuación, crearás un nuevo usuario de MariaDB con varias bases de datos que utilizará Seafile. Asegurarás MariaDB con el comando‘mariadb-secure-installation‘, y utilizarás el cliente‘mariadb‘ para crear nuevos usuarios y bases de datos.
Ejecuta el siguiente comando«mariadb-secure-installation» para proteger la instalación de tu servidor MariaDB.
sudo mariadb-secure-installation
Ahora se te preguntará por las siguientes configuraciones:
- Para la instalación por defecto del servidor MariaDB sin contraseña de root, pulsa ENTER cuando se te pregunte por la contraseña.
- La autenticación local para los usuarios root de MariaDB está asegurada por defecto, introduce‘n‘ cuando se te pregunte si quieres cambiar el método de autenticación a‘unix_socket‘.
- Introduce«Y» para crear una nueva contraseña de root de MariaDB. A continuación, introduce la contraseña segura de tu usuario raíz de MariaDB y repite la operación.
- Cuando se te pida que desactives la autenticación remota para el usuario raíz de MariaDB, introduce«Y» para aceptar.
- Introduce «Y» para eliminar la base de datos predeterminada «test» y el privilegio anónimo.
- Por último, introduce«Y» para confirmar los privilegios de recarga de tablas.
Ahora que has configurado la contraseña raíz de MariaDB y asegurado MariaDB, vas a crear nuevas bases de datos y un usuario para la instalación de Seafile.
Ejecuta el siguiente comando‘mariadb‘ para acceder al servidor MariaDB. Introduce tu contraseña de root de MariaDB cuando se te solicite.
sudo mariadb -u root -p
Crea un nuevo usuario‘seafile‘ con la siguiente consulta. Asegúrate de cambiar la siguiente contraseña por una nueva contraseña segura.
create user 'seafile'@'localhost' identified by 'password';
Ejecuta las siguientes consultas para crear las nuevas bases de datos‘ccnet_db‘,‘seafile_db‘, y‘seahub_db‘.
create database ccnet_db character set = 'utf8'; create database seafile_db character set = 'utf8'; create database seahub_db character set = 'utf8';
A continuación, ejecuta las siguientes consultas para permitir que el usuario‘seafile‘ acceda a las bases de datos Seafile.
GRANT ALL PRIVILEGES ON ccnet_db.* to seafile@localhost; GRANT ALL PRIVILEGES ON seafile_db.* to seafile@localhost; GRANT ALL PRIVILEGES ON seahub_db.* to seafile@localhost;
Ahora comprueba los privilegios del usuario‘seafile‘ para garantizar el acceso y los privilegios a las bases de datos‘ccnet_db‘,‘seafile_db‘ y‘seahub_db‘.
SHOW GRANTS FOR seafile@localhost;
Por último, escribe‘quit‘ para salir del servidor MariaDB.
Instalación de las dependencias de Python
En esta sección, crearás un nuevo usuario del sistema para ejecutar Seafile, crearás un directorio de instalación y un entorno virtual de Python, y luego instalarás las dependencias de Python utilizando el comando‘pip’.
Primero, añade un nuevo usuario‘seafile‘ con el siguiente comando.
sudo adduser seafile
Ahora crea un nuevo directorio de instalación‘/opt/seafile‘ y desplázate a él.
mkdir -p /opt/seafile; cd /opt/seafile
Ejecuta el siguiente comando para crear un entorno virtual Python‘venv‘ y actívalo. Una vez activado, tu shell debería ser como ‘(venv) usuario@nombrehost #‘.
python3 -m venv venv source venv/bin/activate
A continuación, ejecuta el siguiente comando‘pip3‘ para instalar las dependencias de Python para Seafile. Estos paquetes deben instalarse dentro del entorno virtual‘venv‘.
pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* pymysql pillow==10.0.* pylibmc captcha==0.4 markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 psd-tools django-pylibmc django_simple_captcha==0.5.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 lxml python-ldap==3.4.3
Una vez finalizada la instalación, cambia la propiedad del directorio‘/opt/seafile‘ al usuario‘seafile‘ utilizando el comando que aparece a continuación.
sudo chown -R seafile: /opt/seafile
Descarga e instalación de Seafile
Llegados a este punto, ya estás preparado para instalar Seafile. Ahora descargarás el código fuente de Seafile, lo instalarás con MariaDB y Memcached, añadirás el nombre de dominio de Seafile mediante la configuración predeterminada y, a continuación, iniciarás el proceso de Seafile manualmente.
Ejecuta el siguiente comando para iniciar sesión como usuario‘seafile‘ y ve al directorio‘/opt/seafile‘.
su seafile cd /opt/seafile
Descarga el código fuente de Seafile y extráelo utilizando el siguiente comando. En este ejemplo, instalarás Seafile 11, asegúrate de consultar la página de descargas de Seafile para obtener la última versión.
wget https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_11.0.12_x86-64.tar.gz tar xf seafile-server_11.0.12_x86-64.tar.gz
Ahora activa el entorno virtual‘venv‘ con lo siguiente:
source venv/bin/activate
Ve al directorio‘seafile-server-11.0.12‘ y ejecuta el script‘setup-seafile-mysql.sh‘. Con esto, estarás instalando Seafile en tu sistema con MariaDB como base de datos.
cd seafile-server-11.0.12 ./setup-seafile-mysql.sh
Ahora se te pedirán las siguientes configuraciones de Seafile:
- Introduce el nombre de tu servidor Seafile.
- Introduce tu dominio para la instalación de Seafile.
- Introduce‘2‘ para integrar Seafile con las bases de datos y el usuario MySQL/MariaDB existentes.
- Introduce los detalles del host MariaDB, el puerto, el usuario y la contraseña
- Introduce la base de datos para ccnet como‘ccnet_db‘, seafile como‘seafile_db‘, y seahub como‘seahub_db‘
- Pulsa ENTER para confirmar la instalación y completar la configuración
Una vez finalizada la configuración, modificarás la configuración de Seafile para ejecutarlo bajo el proxy inverso Nginx.
Ve al directorio‘/opt/seafile/conf‘ y abre el archivo‘seahub_settings.py‘ con el editor‘nano‘.
cd /opt/seafile/conf nano seahub_settings.py
Añade tu nombre de dominio a la opción‘SERVICE_URL‘ y asegúrate de incluir el‘https‘ al principio.
SERVICE_URL = 'https://seafile.howtoforge.local'
Añade la opción‘FILE_SERVER_ROOT‘ como la siguiente con tu nombre de dominio.
FILE_SERVER_ROOT = 'https://seafile.howtoforge.local/seafhttp'
Por último, añade la opción‘CACHES‘ para integrar Seafile con el sistema de caché Memcached.
CACHES = { 'default': { 'BACKEND': 'django_pylibmc.memcached.PyLibMCCache', 'LOCATION': '127.0.0.1:11211', }, }
Cuando hayas terminado, guarda el archivo y sal del editor.
Ahora vuelve al directorio‘/opt/seafile/seafile-server-latest/‘ y ejecuta los scripts‘seafile.sh‘ y‘seahub.sh’ para ejecutar Seafile.
cd /opt/seafile/seafile-server-latest/
./seafile.sh start ./seahub.sh start
Cuando Seafile se inicie, verás la salida‘Seafile server started‘. También se te pedirá que configures un usuario administrador para Seafile, así que asegúrate de introducir tu nombre de usuario, correo electrónico y contraseña.
Configurar Nginx como proxy inverso
Ahora que Seafile está funcionando con MariaDB y Memcached, el siguiente paso es configurar Nginx como proxy inverso para Seafile. Así que asegúrate de que tienes un nombre de dominio listo y apuntando a la dirección IP de tu servidor.
Crea una nueva configuración de bloque de servidor Nginx‘/etc/nginx/sites-available/seafile‘ con el siguiente editor‘nano‘.
sudo nano /etc/nginx/sites-available/seafile
Introduce la configuración que aparece a continuación y asegúrate de cambiar la opción‘nombre_servidor‘ por tu nombre de dominio.
log_format seafileformat '$http_x_forwarded_for $remote_addr [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $upstream_response_time'; server { listen 80; server_name seafile.howtoforge.local; proxy_set_header X-Forwarded-For $remote_addr; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $http_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-Host $server_name; proxy_read_timeout 1200s; # used for view/edit office files via Office Online Server client_max_body_size 0; access_log /var/log/nginx/seahub.access.log seafileformat; error_log /var/log/nginx/seahub.error.log; } location /seafhttp { rewrite ^/seafhttp(.*)$ $1 break; proxy_pass http://127.0.0.1:8082; client_max_body_size 0; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 36000s; proxy_read_timeout 36000s; proxy_send_timeout 36000s; send_timeout 36000s; access_log /var/log/nginx/seafhttp.access.log seafileformat; error_log /var/log/nginx/seafhttp.error.log; } location /media { root /opt/seafile/seafile-server-latest/seahub; } }
Guarda y sal del archivo cuando hayas terminado.
Ahora ejecuta el siguiente comando para activar el bloque de servidor ‘seafile’ y verificar la sintaxis de tu Nginx. Verás una salida‘syntax is ok – test is successful‘ cuando hayas configurado correctamente Nginx.
sudo ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/ sudo nginx -t
Por último, ejecuta el siguiente comando para reiniciar el servidor web Nginx y aplicar tus cambios.
sudo systemctl restart nginx
Asegurar Seafile con UFW y HTTPS
Después de haber configurado Nginx como proxy inverso, asegurarás Seafile con HTTPS y UFW (Uncomplicated Firewall). Instalarás UFW y Certbot, abrirás servicios como SSH, HTTP y HTTPS, y luego generarás nuevos certificados SSL con Certbot desde Letsencrypt.
Primero, ejecuta el siguiente comando para instalar los paquetes«ufw» y«certbot«.
sudo apt install ufw certbot -y
Ahora ejecuta el siguiente comando para activar los perfiles «OpenSSH» y«Nginx Full». El perfil«OpenSSH» abrirá el puerto SSH predeterminado«22«, y el perfil«Nginx Full» permitirá conexiones HTTP y HTTPS al servidor.
sudo ufw allow OpenSSH sudo ufw allow 'Nginx Full'
A continuación, ejecuta el siguiente comando para iniciar y habilitar UFW. Introduce‘y’ para confirmar, y verás una salida‘El cortafuegos está activo y habilitado al iniciar el sistema‘.
sudo ufw enable
Por último, ya puedes generar certificados SSL y proteger tu instalación de Seafile con el comando‘certbot‘ que aparece a continuación. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico con tu información.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d seafile.howtoforge.local
Una vez completado el proceso, tu Seafile debería estar protegido con HTTPS y tus certificados estarán disponibles en el directorio‘/etc/letsencrypt/live/domain.com‘.
Acceder a Seafile
Abre tu navegador web y visita tu nombre de dominio Seafile, por ejemplo https://seafile.howtoforge.local. Si la instalación se ha realizado correctamente, se te pedirá que accedas a la página de inicio de sesión de Seafile.
Introduce tu dirección de correo electrónico y contraseña de administrador, y haz clic en«Iniciar sesión«.
Si tienes las credenciales de administrador correctas, podrás ver el siguiente panel de Seafile.
Ahora puedes intentar subir archivos a Seafile para asegurarte de que la instalación se ha realizado correctamente.
Conclusión
¡Enhorabuena! Has completado la instalación de Seafile Self-Hosted Cloud Storage en el servidor Debian 12. Has puesto en marcha Seafile con el servidor de base de datos MariDB y Nginx como proxy inverso. También has asegurado Seafile con UFW (Uncomplicated Firewall) y SSL mediante Certbot y Letsencrypt. Ahora que Seafile está instalado, puedes integrar Seafile con otras aplicaciones como el Servidor de Documentos de ONLYOFFICE o LibreOffice Online (Collabora Online).