Cómo instalar Seafile con Nginx en Ubuntu 20.04 LTS

Instalar el servidor de base de datos MariaDB

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 funciones 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 previos

  • Ubuntu 20.04
  • Privilegios de ra√≠z

¬ŅLo que haremos?

  • Instalar las dependencias de Seafile Python
  • Instalar y configurar MariaDB
  • Descargar Seafile Server para servidor Linux
  • Instale el servidor Seafile con MariaDB
  • Configurar Seafile con nombre de dominio
  • Ejecutar Seafile como un servicio de Systemd
  • Genera SSL Letsencrypt y DHPARAM
  • Instalar y configurar Nginx como proxy inverso
  • Configurar cortafuegos
  • Pruebas

Paso 1: instale 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.

Instalar el servidor de base de datos MariaDB

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 escriba su contrase√Īa de root 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;


Crear una nueva base de datos y usuario para Seafile

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 Linux Server

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’.

Descargar SeaFile 7.1

Paso 4: instale 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 seafile: deje la configuraci√≥n predeterminada y presione enter.
  • puerto del servidor de archivos seafile: d√©jelo en el puerto predeterminado ‘8082’.

Configuración de instalación de Seafile

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 contrase√Īa ‘[email¬†protected]’
  • base de datos ccnet: ‘ccnet-db’
  • base de datos Seafile: ‘seafile-db’
  • base de datos seahub: ‘seahub-db’

Configuración de base de datos para Seafile

Ahora presione enter nuevamente para confirmar la configuración de nuestro servidor seafile.

Resumen de configuración de Seafile

Y cuando se complete la instalación, obtendrá el resultado como se muestra a continuación.

Instalación de Seafile en Ubuntu 20.04

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.

Seafile Crear usuario administrador

Y se han creado 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

Detener el servicio Seafile y Seahub

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

Sobre el ‘[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.

Configurar el nombre de dominio de Seafile

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 de 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

Configurar Seafile y Seahub como un servicio de Systemd

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á.

Configurar Seafile y Seahub como un servicio de Systemd

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 de seafile ‘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 ha generado el SSL Letsencrypt para el nombre de dominio Seafile y el certificado DHPARAM.

Paso 8: instale y configure 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 HTTPS seguro con el certificado SSL Letsencrypt y DHPARAM generado en la parte superior.

Instale Nginx en el servidor Ubuntu 20.04 usando el comando apt a continuación.

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.

Instalar y configurar Nginx como proxy inverso para Seafile

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 con 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 de la siguiente manera.

UFW Permitir SSH HTTP y HTTPS

El firewall 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.

Página de inicio de sesión de Seafile

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 tablero de Seafile como se muestra a continuación.

Panel de Seafile

A continuación se muestra el resultado después de crear una nueva carpeta y cargar el archivo en el servidor Seafile.

Archivo de carga exitoso de 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *