GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar Seafile con Nginx en Ubuntu 18.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 MySQL. Instalaremos el servidor Seafile en el servidor web Nginx con HTTPS SSL Letsencrypt habilitado, utilizando la última versión de MySQL 5.8 en el sistema Ubuntu 18.04.

Requisitos

  • Ubuntu 18.04
  • Privilegios de raíz

¿Qué haremos?

  1. Instalar las dependencias de Seafile Python
  2. Instalar y configurar MySQL
  3. Descargar Seafile Server para sistema Linux
  4. Instalar servidor Seafile
  5. Instalar Nginx y Letsencrypt
  6. Configurar Nginx como un proxy inverso para el servidor Seafile
  7. Configurar servidor Seafile
  8. Ejecución de Seafile Server como servicio
  9. Configurar el cortafuegos UFW
  10. 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 2.7 para ejecutarse en el servidor.

Antes de instalar cualquier paquete, debemos actualizar el repositorio de Ubuntu.

sudo apt update

Ahora instale python 2.7 con todas las dependencias necesarias para la instalación del servidor seafile usando los comandos apt a continuación.

sudo apt install python -y
sudo apt install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache python-requests -y

Espere a que se instalen todas las dependencias.

Paso 2:instalar y configurar MySQL

Seafile ofrece soporte para SQLite y el servidor de base de datos MySQL. Para esta guía, usaremos el servidor de base de datos MySQL para nuestra instalación. Implementaremos el servidor seafile utilizando la última versión de MySQL 5.8.

Instale el servidor MySQL usando el comando apt a continuación.

sudo apt install mysql-server mysql-client -y

Una vez completada la instalación, inicie el servicio MySQL y habilítelo para que se inicie cada vez que se inicie el sistema.

systemctl start mysql
systemctl enable mysql

El servidor MySQL está instalado en el sistema Ubuntu.

Ahora necesitamos configurar la contraseña raíz de MySQL usando el comando 'mysql_secure_installation'.

mysql_secure_installation

Ahora se le preguntará acerca de la política de contraseñas de MySQL, 0 para BAJA, 1 para MEDIA y 2 para FUERTE. Escriba el número '1' para la política de contraseña MEDIA, presione Intro y luego escriba su contraseña segura.

Para otros, simplemente escriba 'Y' como se muestra a continuación.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

La configuración de la contraseña raíz de MySQL se ha completado.

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 MySQL utilizando el comando de cliente MySQL.

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 MySQL, se configuró la contraseña raíz y se creó la base de datos para la instalación del archivo marino.

Paso 3:descargue el servidor Seafile para el sistema 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 'mohammad'.

useradd -m -s /bin/bash mohammad

Ahora inicie sesión con el usuario 'mohammad' y descargue la última versión del servidor seafile usando wget.

su - mohammad
wget https://download.seadrive.org/seafile-server_6.2.5_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_6.2.5_x86-64.tar.gz
mv seafile-server-6.2.5/ seafile-server/

El código fuente del servidor seafile se ha descargado en el directorio '/home/mohammad/seafile-server'.

Paso 4:instale Seafile Server con MySQL

En este paso, instalaremos el servidor Seafile utilizando el script de configuración de MySQL proporcionado por Seafile.

Inicie sesión como usuario 'mohammad' y vaya al directorio 'seafile-server'.

su - mohammad
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 'mohammad', vaya al directorio '~/seafile-server-latest'.

su - mohammad
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 ha creado el usuario administrador y la contraseña; ahora verifique los puertos de servicio de seafile y seahub '8082' y '8080' usando el comando netstat.

netstat -plntu

Y verá que el servidor seafile y el servidor seahub están funcionando en el sistema Ubuntu 18.04.

Ahora detenga el servidor seafile y seahub.

./seafile.sh stop
./seahub.sh stop

Paso 5:instalar y configurar Nginx con Letsencrypt

Para esta guía, el servidor Seafile se ejecutará en el servidor web Nginx con HTTPS habilitado. Y en este paso, instalaremos el servidor web Nginx y la herramienta Letsencrypt, luego generaremos la clave SSL letsencrypt y DHPARAM para el nombre de dominio del servidor seafile.

Instale el servidor web Nginx usando el comando apt a continuación.

sudo apt install nginx -y

Una vez completada la instalación, inicie el servicio Nginx y permita que se inicie cada vez que se inicie el sistema.

systemctl start nginx
systemctl enable nginx

Ahora instale la herramienta letsencrypt para generar certificados SSL letsencrypt.

sudo apt install letsencrypt -y

Se han instalado el servidor web Nginx y la herramienta letsencrypt.

A continuación, vaya al directorio '/etc/nginx' y cree un nuevo archivo de configuración 'certbot.conf' para letsencrypt.

cd /etc/nginx/
vim snippets/certbot.conf

Pegue la siguiente configuración allí.

location /.well-known {
    alias /var/www/html/.well-known;
}

Guardar y salir.

Edite el archivo de host virtual predeterminado.

vim sites-available/default

Agregue la siguiente línea de inclusión a continuación al corchete 'servidor {...}'.

include snippets/certbot.conf;

Guardar y salir.

Pruebe la configuración de nginx y reinicie el servidor web.

nginx -t
systemctl restart nginx

Y estamos listos para generar un nuevo certificado SSL de letsencrypt para el nombre de dominio del servidor seafile.

Genere los archivos de certificado SSL usando el comando 'certbot' como se muestra a continuación.

certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email [email protected] -w /var/www/html -d cloud.hakase-labs.io

Nota:

  • generaremos un nuevo certificado SSL y especificaremos el tamaño de clave en '4096'.

Ahora obtendrá todos los archivos de certificados SSL ubicados en el directorio '/etc/letsencrypt/live'.

Y para seguridad adicional, generaremos la clave Diffie-Hellman con tamaño 4096 usando el comando OpenSSL.

openssl dhparam -out /etc/nginx/dhparam.pem 4096

Se han generado todos los certificados necesarios.

Paso 6:configurar Nginx como proxy inverso para Seafile Server

Vaya al directorio de configuración '/etc/nginx' y cree un nuevo archivo de host virtual 'seafile' usando vim.

cd /etc/nginx/
vim sites-available/seafile

Pegue la siguiente configuración allí.

 server {
        listen       80;
        server_name  cloud.hakase-labs.io;
        rewrite ^ https://$http_host$request_uri? permanent;
        server_tokens off;
    }
    server {
        listen 443 ssl http2;
        server_name cloud.hakase-labs.io;
        
        ssl on;
        ssl_certificate /etc/letsencrypt/live/cloud.hakase-labs.io/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/cloud.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 /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/mohammad/seafile-server-latest/seahub;
        }
    }

Guardar y salir.

Habilite el host virtual seafile y pruebe la configuración.

ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -t

asegúrese de que no haya ningún error y reinicie el servicio nginx.

systemctl restart nginx

Se ha completado la configuración de Nginx como proxy inverso para el servidor de archivos marinos.

Paso 7:configurar el servidor Seafile

Para ejecutar el servidor seafile con el nombre de dominio del servidor web Nginx, debemos editar la configuración predeterminada de 'seafile' para el 'servicio ccnet', el 'servidor seafile' y el 'servidor seahub'.

Inicie sesión como usuario 'mohammad' y vaya al directorio 'conf/'.

su - mohammad
cd conf/

Edite el archivo de configuración del servicio ccnet 'ccnet.conf'.

vim ccnet.conf

En la línea 'SERVICE_URL', cambie el valor al nombre de dominio con HTTPS como se muestra a continuación.

SERVICE_URL = https://cloud.hakase-labs.io

Guardar y salir.

Ahora edite el archivo 'seafile.conf' para la configuración del servidor seafile.

vim seafile.conf

Agregue la línea 'host' con el valor a '127.0.0.1' localhost como se muestra a continuación.

[fileserver]
host = 127.0.0.1
port = 8082

Guardar y salir.

Y finalmente, editaremos el archivo 'seahub_settings.py'.

vim seahub_settings.py

En la línea 'FILE_SERVER_ROOT', cambie el valor al nombre de dominio con HTTPS.

FILE_SERVER_ROOT = 'https://cloud.hakase-labs.io/seafhttp'

Guardar y salir.

Paso 8:Ejecución del servidor Seafile como servicio

En este tutorial, ejecutaremos el servidor Seafile como un servicio en el sistema Ubuntu 18.04. Crearemos un nuevo script de servicio para seafile y seahub.

Vaya al directorio '/etc/systemd/system' y cree un nuevo archivo de servicio 'seafile.service'.

cd /etc/systemd/system/
vim seafile.service

Pegue el siguiente script de servicio de archivo marino allí.

[Unit]
Description=Seafile
After=network.target mysql.service

[Service]
Type=forking
ExecStart=/home/mohammad/seafile-server-latest/seafile.sh start
ExecStop=/home/mohammad/seafile-server-latest/seafile.sh stop
User=mohammad
Group=mohammad

[Install]
WantedBy=multi-user.target

Guardar y salir.

Ahora cree el archivo de servicio de seahub 'seahub.service'.

vim seahub.service

Pegue el siguiente script del servicio seahub allí.

[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
Type=forking
ExecStart=/home/mohammad/seafile-server-latest/seahub.sh start
ExecStop=/home/mohammad/seafile-server-latest/seahub.sh stop
User=mohammad
Group=mohammad

[Install]
WantedBy=multi-user.target

Guardar y salir.

Nota:

  • Cambie la ruta de los scripts seafile.sh y seahub.sh.

Ahora recarga el sistema systemd.

systemctl daemon-reload

E inicie el servicio seafile y seahub.

systemctl start seafile
systemctl start seahub

Habilite estos servicios para que se inicien cada vez que se inicie el sistema.

systemctl enable seafile
systemctl enable seahub

Los servicios seafile y seahub están en funcionamiento; verifíquelo usando los comandos a continuación.

systemctl status seafile
systemctl status seahub

netstat -plntu

Paso 8:configurar el cortafuegos UFW

Se recomienda siempre activar el firewall en cualquier sistema. Para el sistema ubuntu, activaremos el firewall UFW y le agregaremos los puertos SSH, HTTP y HTTPS.

Agregue el puerto 'ssh' y habilite el firewall UFW.

ufw allow ssh
ufw enable

escriba 'y' para activar el cortafuegos.

Ahora agregue servicios HTTP y HTTPS.

ufw allow http
ufw allow https

Verifique las reglas de la lista en el firewall.

ufw status numbered

Y obtendrá tres servicios SSH, HTTP y HTTPS en la lista.

Paso 9 - Prueba

Abra su navegador web y escriba la instalación URL del servidor seafile. El mío es:

http://cloud.hakase-labs.io/

Y será redirigido a la página de inicio de sesión de conexión HTTPS segura.

Escriba el correo electrónico del administrador '[email protected]' y la contraseña 'mypassword', luego haga clic en el botón 'Iniciar sesión'.

Ahora obtendrá el panel de Seafile como se muestra a continuación.

Adicional:cargó una imagen y visualícela en el panel de Seafile.

La instalación y configuración del servidor seafile con el servidor web Nginx y Letsencrypt en Ubuntu 18.04 se completó con éxito.


Ubuntu
  1. Cómo instalar WordPress con Nginx en Ubuntu 18.04

  2. Cómo instalar Seafile con Nginx en Ubuntu 20.04 LTS

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

  4. Cómo instalar Nginx con PHP5 y MySQL en Ubuntu 11.10

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

Cómo instalar GitBucket con Nginx en Ubuntu 20.04 LTS

Cómo instalar phpMyAdmin con Nginx (LEMP) en Ubuntu 18.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