GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar Seafile con Nginx en Ubuntu 20.04 LTS

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.


Ubuntu
  1. Cómo instalar MariaDB en Ubuntu 20.04 LTS

  2. Cómo instalar MediaWiki con Nginx en Ubuntu 16.04

  3. Cómo instalar Seafile con Nginx en Ubuntu 18.04 LTS

  4. Cómo instalar Magento con Nginx en Ubuntu 15.10

  5. Cómo implementar Modsecurity con Nginx en Ubuntu 20.04 LTS

Cómo instalar Seafile en Ubuntu 16.04 LTS

Cómo instalar Nginx con el módulo Ngx_Pagespeed en Ubuntu 16.04 LTS

Cómo instalar Joomla con Nginx en Ubuntu 18.04 LTS

Cómo instalar phpMyAdmin con Nginx en Ubuntu 18.04 LTS

Cómo instalar phpMyAdmin con Nginx en Ubuntu 20.04 LTS

Cómo instalar Seafile en Ubuntu 20.04 LTS