Seafile es un sistema de almacenamiento en la nube y alojamiento de archivos de código abierto con funciones avanzadas como sincronización desde múltiples plataformas (sistema multiplataforma), protección de la privacidad con cifrado de archivos integrado y compatibilidad con autenticación de dos factores (TFA), control de versiones, bloqueo de archivos, edición en línea y mucho más. Seafile está escrito en lenguaje de programación C y Python y ofrece características similares como Dropbox, mega.co.nz y otras.
En este tutorial, le mostraré paso a paso cómo instalar y configurar un servidor Seafile con el servidor web Nginx y la base de datos MariaDB. Instalaremos el servidor Seafile en el servidor web Nginx con HTTPS SSL Letsencrypt habilitado, utilizando la última versión de MariaDB en el sistema Ubuntu 20.04.
Requisitos
- Ubuntu 20.04
- Privilegios de raíz
¿Qué haremos?
- Instalar las dependencias de Seafile Python
- Instalar y configurar MariaDB
- Descargar Seafile Server para servidor Linux
- Instalar Seafile Server con MariaDB
- Configurar Seafile con nombre de dominio
- Ejecución de Seafile como un servicio de Systemd
- Generar SSL Letsencrypt y DHPARAM
- Instalar y configurar Nginx como proxy inverso
- Configurar cortafuegos
- Pruebas
Paso 1:instalar las dependencias de Seafile Python
El primer paso que debemos dar antes de instalar seafile server en el sistema es instalar sus dependencias. Seafile es una aplicación basada en python y requiere python 3.x para ejecutarse en el servidor.
Antes de instalar cualquier paquete, debemos actualizar el repositorio de Ubuntu.
sudo apt update
Ahora instale python 3.x con todas las dependencias necesarias para la instalación del servidor seafile usando los comandos apt a continuación.
sudo apt install python3 libpython3.8 python3-setuptools python3-pil python3-ldap python3-urllib3 ffmpeg python3-pip python3-mysqldb python3-memcache python3-requests libmemcached-dev
Después de eso, instale paquetes de python adicionales desde el repositorio de PyPI usando el comando pip a continuación.
pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy psd-tools django-pylibmc django-simple-captcha python3-ldap
Como resultado, se instalaron todas las dependencias de paquetes para Seafile.
Paso 2:instalar y configurar MariaDB
Seafile ofrece soporte para SQLite y el servidor de base de datos MariaDB. Para esta guía, usaremos el servidor de base de datos MariaDB para nuestra instalación. Implementaremos el servidor seafile utilizando la última versión de MariaDB.
Instale el servidor MariaDB usando el comando apt a continuación.
sudo apt install mariadb-server -y
Una vez completada la instalación, inicie el servicio MariaDB y habilítelo para que se inicie cada vez que se inicie el sistema.
systemctl start mariadb
systemctl enable mariadb
El servidor MariaDB está instalado en el sistema Ubuntu, verifíquelo con el siguiente comando.
systemctl status mariadb
El servicio MariaDB está en funcionamiento.
A continuación, debemos configurar la contraseña raíz de MariaDB usando el comando 'mysql_secure_installation'.
mysql_secure_installation
Ahora se le preguntará acerca de la configuración de MariaDB y deberá ingresar su contraseña raíz segura para MariaDB.
Enter current password for root (enter for none): Press Enter
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
A continuación, crearemos una nueva base de datos para el servidor Seafile. Crearemos 3 bases de datos para cada componente de archivo marino y crearemos un nuevo usuario de base de datos. Crearemos un nuevo usuario llamado 'seafile' y tendrá todos los privilegios para las 3 bases de datos 'ccnet-db', 'seafile-db' y 'seahub-db'.
Inicie sesión en el shell de MySQL usando el siguiente comando.
mysql -u root -p
Ahora cree nuevas bases de datos 'ccnet-db', 'seafile-db', 'seahub-db' y cree un nuevo usuario 'seafile'. Luego otorgue los 3 privilegios de base de datos al usuario 'seafile'.
Ejecute las consultas de MySQL a continuación.
create database `ccnet-db` character set = 'utf8';
create database `seafile-db` character set = 'utf8';
create database `seahub-db` character set = 'utf8';
create user 'seafile'@'localhost' identified by '[email protected]';
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;
Se instaló el servidor MariaDB, se configuró la contraseña raíz y se creó la base de datos para la instalación del archivo marino.
Paso 3:descargue Seafile Server para servidor Linux
En este tutorial, el servidor seafile se ejecutará como un servicio en el sistema systemd y se ejecutará bajo un usuario que no sea root.
Cree un nuevo usuario llamado 'ryujin'.
useradd -m -s /bin/bash ryujin
Ahora inicie sesión como usuario 'ryujin' y descargue la última versión del servidor seafile usando wget.
su - ryujin
wget -q https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_7.1.3_x86-64.tar.gz
Extraiga el archivo 'seafile-server.tar.gz' y cambie el nombre del directorio maestro a 'seafile-server'.
tar -xf seafile-server_7.1.3_x86-64.tar.gz
mv seafile-server-*/ seafile-server/
El código fuente del servidor seafile se ha descargado en el directorio '/home/ryujin/seafile-server'.
Paso 4:instalar Seafile Server con MariaDB
En este paso, instalaremos el servidor Seafile utilizando el script de instalación de MariaDB proporcionado por Seafile.
Inicie sesión como usuario 'ryujin' y vaya al directorio 'seafile-server'.
su - ryujin
cd seafile-server/
Ahora ejecute el script 'setup-seafile-mysql.sh'.
./setup-seafile-mysql.sh
El script de instalación realizará la verificación del módulo de python. Asegúrese de que todas las dependencias estén instaladas y luego presione Entrar.
Ahora estará en la configuración de Seafile.
- nombre del servidor:ingrese el nombre de su servidor de archivos marinos, como 'hakase-cloud'.
- nombre de dominio del servidor:escriba el nombre de dominio para su servidor de archivos marinos 'cloud.hakase-labs.io'.
- directorio de datos de Seafile:deje la configuración predeterminada y presione enter.
- puerto del servidor de archivos seafile:déjelo en el puerto predeterminado '8082'.
Ahora para la configuración de la base de datos. Se le pedirán 2 opciones:deje que el script cree la base de datos por usted o use una base de datos existente.
Elija la opción '2' para usar la configuración de la base de datos existente.
- host de la base de datos:host local predeterminado
- puerto de la base de datos:predeterminado en el puerto normal mysql '3306'
- el usuario de la base de datos es 'seafile' con la contraseña '[email protected]'
- base de datos ccnet:'ccnet-db'
- base de datos seafile:'seafile-db'
- base de datos seahub:'seahub-db'
Ahora presione enter nuevamente para confirmar la configuración de nuestro servidor seafile.
Y cuando se complete la instalación, obtendrá el resultado que se muestra a continuación.
La instalación y configuración del servidor seafile se ha completado con éxito. Y el servidor de archivos seafile se ejecutará en el puerto '8082', el servicio seahub se ejecutará en el puerto '8000'.
A continuación, probaremos para ejecutar el servidor seafile y el servidor seahub utilizando el script de inicio.
Como usuario 'ryujin', vaya al directorio '~/seafile-server-latest'.
su - ryujin
cd ~/seafile-server-latest/
Ahora inicie el servidor Seafile ejecutando el siguiente comando.
./seafile.sh start
Luego ejecute el servidor seahub.
./seahub.sh start
La primera vez que ejecute el script de inicio 'seahub.sh', se le pedirá que cree un usuario administrador y una contraseña para el servidor Seafile.
Escriba su correo electrónico y contraseña de administrador, luego presione Entrar.
Y se crearon el usuario administrador y la contraseña; ahora verifique los puertos de servicio seafile y seahub '8082' y '8080' usando el comando netstat.
ss -plnt4
Y verá que el servidor seafile y el servidor seahub están funcionando en el sistema Ubuntu 20.04.
Ahora detenga el servidor seafile y seahub.
./seafile.sh stop
./seahub.sh stop
Paso 5:configurar Seafile con nombre de dominio
Para este tutorial, ejecutaremos Seafile con nuestro nombre de dominio 'seafile.hakase-labs.io'. Para hacer eso, necesitamos editar algunas de las configuraciones de Seafile.
Inicie sesión en el usuario 'ryujin' y vaya al directorio 'conf'.
su - ryujin
cd conf/
Edite la configuración 'ccnet.conf' usando el editor vim.
vim ccnet.conf
en la opción 'SERVICE_URL', cambie el valor con el nombre de dominio y asegúrese de cambiar el protocolo HTTP predeterminado con el protocolo seguro HTTPS como se muestra a continuación.
SERVICE_URL = https://seafile.hakase-labs.io
Guardar y cerrar.
A continuación, edite la configuración 'seafile.conf'.
vim seafile.conf
En la sección '[fileserver]', especifique la dirección IP del 'host' para el servicio seafile. El servicio seafile se ejecutará en la dirección local como se muestra a continuación.
[fileserver]
host = 127.0.0.1
port = 8082
Guardar y cerrar.
Luego, edite 'seahub_settings.py' usando el editor vim.
vim seahub_settings.py
Agregue la opción 'FILE_SERVER_ROOT' como se muestra a continuación al final de la línea.
FILE_SERVER_ROOT = 'https://seafile.hakase-labs.io/seafhttp'
Guardar y cerrar.
Y la configuración de Seafile se ha completado, se ejecutará bajo el nombre de dominio 'seafile.hakase-labs.io'.
Paso 6:ejecutar Seafile como un servicio de Systemd
Después de configurar Seafile con el nombre de dominio, configuraremos seafile y seahub como un servicio systemd.
Vaya al directorio '/etc/systemd/system' y cree un nuevo archivo de servicio para seafile llamado 'seafile.service'.
cd /etc/systemd/system/
vim seafile.service
Pegue la siguiente configuración en él.
[Unit]
Description=Seafile
After=network.target mysql.service nginx.service
[Service]
Type=forking
ExecStart=/home/ryujin/seafile-server-latest/seafile.sh start
ExecStop=/home/ryujin/seafile-server-latest/seafile.sh stop
User=ryujin
Group=ryujin
[Install]
WantedBy=multi-user.target
Guardar y cerrar.
A continuación, cree el archivo de servicio seahub llamado 'seahub.service'.
vim seahub.service
Pegue la siguiente configuración en él.
[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
Type=forking
ExecStart=/home/ryujin/seafile-server-latest/seahub.sh start
ExecStop=/home/ryujin/seafile-server-latest/seahub.sh stop
User=ryujin
Group=ryujin
[Install]
WantedBy=multi-user.target
Guardar y cerrar.
Y se han creado los archivos de servicio seafile y seahub.
A continuación, vuelva a cargar el administrador de systemd y asegúrese de que no haya ningún error.
systemctl daemon-reload
Ahora inicie el servicio seafile y agréguelo al arranque del sistema.
systemctl start seafile
systemctl enable seafile
Después de eso, inicie y habilite el servicio seahub.
systemctl start seahub
systemctl enable seahub
El servicio seafile y seahub están en funcionamiento, verifíquelo con el siguiente comando.
systemctl status seafile seahub
A continuación se muestra el resultado que obtendrá.
Como resultado, se completó la configuración de Seafile y Seahub como un servicio systemd.
Paso 7:generar SSL Letsencrypt y DHPARAM
En este paso generaremos el certificado SSL Letsencrypt y DHPARAM. Usaremos la herramienta certbot para generar el SSL Letsencrypt y usaremos el comando openssl para generar el certificado dhparam.
Para generar SSL Letsencrypt, asegúrese de tener el nombre de dominio real y apuntar a la dirección IP de su servidor.
Instale la herramienta certbot en el sistema Ubuntu usando el comando apt a continuación.
sudo apt install certbot
Después de eso, genere SSL Letsencrypt para el nombre de dominio del archivo marino 'seafile.hakase-labs.io' usando el comando certbot como se muestra a continuación.
certbot certonly --agree-tos --no-eff-email --email [email protected] -d seafile.hakase-labs.io
Una vez que se complete todo el proceso, su certificado estará disponible en el directorio '/etc/letsencrypt/live/seafile.hakase-labs.io'.
Luego, genere el certificado DHPARAM usando el comando openssl como se muestra a continuación.
openssl dhparam -out /etc/nginx/dhparam.pem 2048
El certificado DHAPRAM se generará y estará disponible en '/etc/nginx/dhparam.pem'.
Como resultado, se generó el SSL Letsencrypt para el nombre de dominio Seafile y el certificado DHPARAM.
Paso 8:instalar y configurar Nginx como proxy inverso
En este paso, instalaremos y configuraremos Nginx como proxy inverso para el servicio Seafile. El servidor web Nginx se ejecutará bajo el protocolo seguro HTTPS con el certificado SSL Letsencrypt y DHPARAM generado en la parte superior.
Instale Nginx en el servidor Ubuntu 20.04 con el siguiente comando apt.
sudo apt install nginx -y
Una vez completada toda la instalación, inicie el servicio Nginx y agréguelo al inicio del sistema.
systemctl start nginx
systemctl enable nginx
Y el servicio Nginx está funcionando en el sistema Ubuntu.
A continuación, vaya al directorio '/etc/nginx/sites-available' y cree una nueva configuración de virtualhost 'seafile' usando el editor vim.
cd /etc/nginx/sites-available/
vim seafile
Pegue la siguiente configuración en él.
server {
listen 80;
server_name seafile.hakase-labs.io;
rewrite ^ https://$http_host$request_uri? permanent;
server_tokens off;
}
server {
listen 443 ssl http2;
server_name seafile.hakase-labs.io;
ssl_certificate /etc/letsencrypt/live/seafile.hakase-labs.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/seafile.hakase-labs.io/privkey.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:5m;
ssl_dhparam /etc/nginx/dhparam.pem;
#SSL Security
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
server_tokens off;
ssl_session_tickets off;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://127.0.0.1:8000;
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-Host $server_name;
proxy_read_timeout 1200s;
# used for view/edit office file via Office Online Server
client_max_body_size 0;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
}
location /seafdav {
proxy_pass http://127.0.0.1:8080/seafdav;
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-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 1200s;
client_max_body_size 0;
access_log /var/log/nginx/seafdav.access.log;
error_log /var/log/nginx/seafdav.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;
}
location /media {
root /home/ryujin/seafile-server-latest/seahub;
}
}
Guardar y cerrar.
A continuación, active la configuración de virtualhost para seafile y pruebe la configuración de Nginx.
ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -t
Asegúrese de que no haya ningún error, luego reinicie el servicio Nginx.
systemctl restart nginx
Como resultado, la instalación y configuración de Nginx como proxy inverso para Seafile se completó con éxito.
Paso 9:configurar el cortafuegos
Para este tutorial, ejecutaremos Seafile con el firewall UFW habilitado. Y necesitamos agregar los servicios SSH, HTTP y HTTPS a la configuración del firewall UFW.
Agregue los servicios SSH, HTTP y HTTPS al firewall UFW usando el siguiente comando.
for svc in ssh http https
do
ufw allow $svc
done
Ahora active el firewall UFW y verifique el estado de la configuración.
ufw enable
ufw status numbered
Y obtendrá el resultado como se muestra a continuación.
El cortafuegos UFW está habilitado y se han agregado los servicios SSH, HTTP y HTTPS.
Ahora estamos listos para usar Seafile.
Paso 10 - Prueba
Abra su navegador web y escriba el nombre de dominio de instalación de Seafile en la barra de direcciones.
https://seafile.hakase-labs.io/
Ahora será redirigido a la conexión HTTPS segura y obtendrá la página de inicio de sesión de Seafile como se muestra a continuación.
Escriba la contraseña de usuario de Seafile que acaba de crear en la parte superior y haga clic en el botón 'Iniciar sesión'.
Ahora obtendrá el panel de control de Seafile como se muestra a continuación.
A continuación se muestra el resultado después de crear una nueva carpeta y cargar el archivo en el servidor Seafile.
Como resultado, la instalación y configuración de Seafile con el servidor web Nginx y la base de datos MariaDB en Ubuntu 20.04 se completó con éxito.