GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar Seafile con Nginx en CentOS 7

Seafile es un software de nube privada que proporciona funciones similares como Dropbox, mega.co.nz y otras, simplemente alojadas en su propio servidor. Seafile se basa en el lenguaje de programación Python y se publica con una licencia de código abierto para que pueda crear su propia nube privada y sea mucho más segura.

Seafile admite el cifrado para almacenar sus datos de forma segura. Para cifrar archivos en una biblioteca de almacenamiento, debe establecer una contraseña cuando crea la biblioteca. La contraseña no se almacenará en la nube de Seafile. Por lo tanto, incluso el administrador de los servidores no puede ver sus datos cifrados sin la contraseña.

En este tutorial, instalaré Seafile en CentOS 7 con el servidor web Nginx y MariaDB como servidor de base de datos.

Requisitos

  • Servidor CentOS 7
  • Privilegios de raíz

Paso 1:preparar CentOS para Seafile

Inicie sesión en el servidor centOS con su contraseña de root ssh.

ssh [email protected]
TYPE YOUR PASSWORD

    Edite el archivo de configuración de SELinux con vim.

    vim /etc/sysconfig/selinux

    Reemplace el valor 'enforcing' con 'disabled'.

    SELINUX=disabled

    Guarde el archivo y salga del editor.

    Reinicie el servidor para aplicar el cambio de la política de SELinux.

    reboot

    Espere a que se reinicie el servidor, luego vuelva a iniciar sesión en su servidor como usuario root.

    Verifique el selinux con el siguiente comando:

    getenforce

    Debería ver 'Deshabilitado ' como resultado.

    Paso 2:instalar las dependencias de Seafile

    Seafile se basa en python, por lo que primero debemos instalar python para la instalación. Seafile es compatible con las bases de datos SQLite y MySQL/MariaDB. Usaré MariaDB como base de datos para Seafile aquí, ya que proporciona un mejor rendimiento que SQLite. Nginx se utiliza como proxy inverso para Seafile y Seahub.

    En este paso, instalaremos varios paquetes de Python, MariaDB y Nginx. Comenzamos con la instalación del repositorio EPEL en nuestro servidor CentOS.

    yum -y install epel-release

    A continuación, instale los paquetes de python, MariaDB y Nginx.

    yum -y install python-imaging MySQL-python python-simplejson python-setuptools mariadb mariadb-server nginx

    Espere hasta que todos los paquetes estén instalados.

    Paso 3:configurar MariaDB

    En el paso 2, ya instalamos el servidor MariaDB, solo necesitamos iniciar el servicio y configurar la contraseña de root ahora.

    Inicie MariaDB y configure la contraseña de root con los siguientes comandos:

    systemctl start mariadb
    mysql_secure_installation

    Escriba su contraseña raíz.

    Set root password? [Y/n] Y
    New password:
    Re-enter new password:
    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

    La contraseña raíz de MariaDB está configurada y ahora podemos iniciar sesión en el shell mysql.
    Aviso:el shell de la línea de comandos de MariaDB se llama mysql.

    Crearemos 3 bases de datos para seafile:

    1. ccnet_db
    2. seafile_db
    3. seahub_db

    Y crearemos un nuevo usuario 'seacloud ' con la contraseña 'tucontraseña '. ¡Reemplace su contraseña con una contraseña segura!

    Inicie sesión en el shell mysql con el cliente mysql.

    mysql -u root -p
    TYPE YOUR PASSWORD

    Ejecute las consultas mysql a continuación para crear las bases de datos y el usuario para la instalación del archivo marino.

    create database ccnet_db character set = 'utf8';
    create database seafile_db character set = 'utf8';
    create database seahub_db character set = 'utf8';

    create user [email protected] identified by 'yourpassword';

    grant all privileges on ccnet_db.* to [email protected] identified by 'yourpassword';
    grant all privileges on seafile_db.* to [email protected] identified by 'yourpassword';
    grant all privileges on seahub_db.* to [email protected] identified by 'yourpassword';
    flush privileges;
    exit

    Reemplace su contraseña en los comandos anteriores con su propia contraseña.

    Paso 4:instalar Seafile

    En este paso, instalaremos Seafile. Seafile se ejecutará con el usuario nginx para que podamos usar nginx como proxy inverso para los servicios seafile y seahub.

    Instalaremos seafile bajo el usuario nginx en el directorio '/var/www/seafile', crearemos ese directorio y lo ingresaremos con cd.

    mkdir -p /var/www/seafile
    cd /var/www/seafile

    Descargue Seafile con el comando wget y extraiga el archivo descargado.

    wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_6.0.5_x86-64.tar.gz
    tar -xzvf seafile-server_6.0.5_x86-64.tar.gz

    Cambie el nombre del directorio a 'seafile-server' y cambie a ese directorio.

    mv seafile-server-6.0.5 seafile-server
    cd seafile-server/

    Ejecute el archivo 'setup-seafile-mysql.sh' para configurar la base de datos.

    ./setup-seafile-mysql.sh

    Presione Entrar y se le pedirá información a continuación:

    • nombre del servidor:usaré el nombre de host del servidor 'natsume '
    • ip o dominio del servidor - dirección ip del servidor, en mi caso '192.168.1.115 '
    • directorio de datos predeterminado:simplemente presione Entrar
    • puerto predeterminado:presione Intro
    • Ahora para la configuración de la base de datos, elija el número 2

    Para la configuración de MySQL:

    • usar host predeterminado - localhost
    • puerto predeterminado:3306
    • el usuario de mysql - 'seacloud '
    • y la contraseña es 'tucontraseña '
    • la base de datos de ccnet es 'ccnet_db '
    • la base de datos seafile es 'seafile_db '
    • la base de datos de seahub es 'seahub_db '

    Presione enter y el script creará las tablas de la base de datos para el archivo marino.

    Ahora podemos iniciar los servicios seafile y seahub.

    ./seafile.sh start
    ./seahub.sh start

    Cuando se ejecute el archivo seahub.sh, se nos pedirá la configuración del administrador.

    Escriba su correo electrónico y contraseña de administrador, luego se ejecutará el servicio seahub.

    Seafile está instalado y ejecutándose ahora, podemos acceder a Seafile desde un navegador web con la IP del servidor en el puerto 8000 (en mi caso, 192.168.1.115:8000), pero no lo haremos ahora porque usaremos un proxy inverso para el servidor seafile y ejecutaremos seafile con un archivo de servicio systemd.

    Por lo tanto, debemos detener el servicio seafile y seahub por ahora.

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

    Paso 5:configurar el servicio Seafile y Seahub

    Ejecutaremos seafile como usuario de nginx, por lo que debemos cambiar el propietario del directorio de instalación de seafile y el directorio seahub_cache al usuario de nginx:

    cd /var/www/
    chown -R nginx:nginx *
    chown -R nginx:nginx /tmp/seahub_cache

    A continuación, vaya al directorio systemd y cree un archivo seafile.service con vim:

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

    Pegue la configuración del servicio Seafile a continuación:

    [Unit]
    Description=Seafile Server
    Before=seahub.service
    After=network.target mariadb.service

    [Service]
    Type=oneshot
    ExecStart=/var/www/seafile/seafile-server/seafile.sh start
    ExecStop=/var/www/seafile/seafile-server/seafile.sh stop
    RemainAfterExit=yes
    User=nginx
    Group=nginx

    [Install]
    WantedBy=multi-user.target

    Guardar y salir.

    Ahora cree un nuevo archivo seahub.service.

    vim seahub.service

    Y pegue la configuración a continuación.

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

    [Service]
    Type=oneshot
    ExecStart=/var/www/seafile/seafile-server/seahub.sh start-fastcgi
    ExecStop=/var/www/seafile/seafile-server/seahub.sh stop
    RemainAfterExit=yes
    User=nginx
    Group=nginx

    [Install]
    WantedBy=multi-user.target

    Guardar y salir.

    Vuelva a cargar el servicio systemd e inicie seafile y seahub con systemctl.

    systemctl daemon-reload
    systemctl start seafile
    systemctl start seahub

    Asegúrate de que no haya ningún error y verifica que el servicio seafile y seahub se esté ejecutando en los puertos 8082 y 8000.

    netstat -plntu

    Paso 6:generar archivos de certificado SSL

    Para este tutorial, ejecutaremos seafile sobre un proxy Nginx, y Nginx proporcionará conexiones seguras (HTTPS) para la seguridad de los datos. Podemos utilizar un archivo de certificado SSL gratuito o el certificado SSL de pago, esto no importa para la configuración. En este paso, generaré un archivo de certificado SSL autofirmado con OpenSSL en el directorio '/etc/nginx/ssl'.

    Cree el directorio ssl.

    mkdir -p /etc/nginx/ssl
    cd /etc/nginx/ssl

    Genere archivos de certificado autofirmados y un archivo dhparam con el siguiente comando:

    openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
    openssl req -new -x509 -sha256 -days 365 -newkey rsa:2048 -nodes -keyout server.key -out server.crt

    Responda los detalles del certificado según lo solicite OpenSSL, como su nombre, estado, correo electrónico, nombre de dominio, etc. Luego, cambie los permisos del directorio y los archivos del certificado.

    chmod -R 700 /etc/nginx/ssl
    chmod 400 server.*
    chmod 400 dhparam.pem

    Se han generado los archivos del certificado SSL.

    Paso 7:configurar Nginx como proxy inverso

    En este paso, configuraremos Nginx como proxy inverso para el servidor de archivos marinos en los puertos 8000 y 8002.

    Vaya al directorio de configuración de nginx y cree un nuevo archivo de host virtual para seafile.

    cd /etc/nginx/
    vim conf.d/seafile.conf

    Pegue la configuración del host virtual a continuación:

    server {  
            listen        80;
            server_name   cloud.natsume.co;
            return 301  https://$host$request_uri;
    }

    server { 
        listen 443 ssl;
        server_name cloud.natsume.co;
        ssl on;
        ssl_protocols           TLSv1 TLSv1.1 TLSv1.2;
        ssl_certificate         /etc/nginx/ssl/server.crt;
        ssl_certificate_key    /etc/nginx/ssl/server.key;

        ssl_ciphers  'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
        ssl_dhparam   /etc/nginx/ssl/dhparam.pem;
        ssl_prefer_server_ciphers  on;

        location / {
            fastcgi_pass    127.0.0.1:8000;
            fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
            fastcgi_param   PATH_INFO           $fastcgi_script_name;

            fastcgi_param   SERVER_PROTOCOL        $server_protocol;
            fastcgi_param   QUERY_STRING        $query_string;
            fastcgi_param   REQUEST_METHOD      $request_method;
            fastcgi_param   CONTENT_TYPE        $content_type;
            fastcgi_param   CONTENT_LENGTH      $content_length;
            fastcgi_param   SERVER_ADDR         $server_addr;
            fastcgi_param   SERVER_PORT         $server_port;
            fastcgi_param   SERVER_NAME         $server_name;
            fastcgi_param   REMOTE_ADDR         $remote_addr;

            access_log      /var/log/nginx/seahub.access.log;
            error_log       /var/log/nginx/seahub.error.log;
            fastcgi_read_timeout 36000;
        }

        # Reverse Proxy for seahub
        location /seafhttp {
            rewrite ^/seafhttp(.*)$ $1 break;
            proxy_pass http://127.0.0.1:8082;
            client_max_body_size 0;
            proxy_connect_timeout  36000s;
            proxy_read_timeout  36000s;
            proxy_send_timeout  36000s;
            send_timeout  36000s;
        }

        #CHANGE THIS PATH WITH YOUR OWN DIRECTORY
        location /media {
            root /var/www/seafile/seafile-server/seahub;
        }

    }

    Guardar y salir.

    Usaré 'cloud.natsume.co' como nombre de dominio. Reemplácelo con su propio nombre de dominio en la configuración anterior.

    Ahora pruebe la configuración de Nginx y asegúrese de que no haya errores.

    nginx -t

    Inicie Nginx con el comando systemctl:

    systemctl start nginx

    Asegúrese de que los puertos 80 y 443 estén disponibles en la lista que proporciona netstat:

    netstat -plntu

    A continuación, debemos agregar el nombre de dominio a la configuración del archivo marino. Vaya al directorio seafile y edite el archivo de configuración.

    cd /var/www/seafile/
    vim conf/ccnet.conf

    Cambie la URL del servicio a su nombre de dominio.

    SERVICE_URL = https://cloud.natsume.co

    Guardar y salir.

    Edite el archivo de configuración de seahub.

    vim conf/seahub_settings.py

    En la segunda línea, agregue la configuración a continuación:

    HTTP_SERVER_ROOT = 'https://cloud.natsume.co/seafhttp'

    Reemplace el nombre de dominio con su dominio aquí nuevamente. Guardar y salir.

    Reinicie Seafile y agregue todos los servicios para que comiencen en el momento del arranque:

    systemctl restart seafile
    systemctl restart seahub

    systemctl enable nginx
    systemctl enable mariadb
    systemctl enable seafile
    systemctl enable seahub

    Paso 8:configurar el cortafuegos

    En el paso 7, configuramos Nginx para usar el puerto HTTP y HTTPS. Ahora tenemos que abrir esos puertos en el Firewall agregándolos a firewalld.

    Iniciar cortafuegos.

    systemctl start firewalld
    systemctl enable firewalld

    Agregue el puerto HTTP y HTTPS a la configuración del firewall con el siguiente comando firewall-cmd:

    firewall-cmd --zone=public --add-port=80/tcp --permanent
    firewall-cmd --zone=public --add-port=443/tcp --permanent

    Vuelva a cargar la configuración del cortafuegos y compruebe la lista de puertos.

    firewall-cmd --reload
    firewall-cmd --list-all

    Paso 9:prueba de Seafile

    Abra su navegador, escriba el nombre de dominio del archivo marino, en mi caso cloud.natsume.co y será redirigido a la conexión https.

    Escriba su correo electrónico y contraseña de administrador y haga clic en 'Iniciar sesión'.

    Panel de administración de Seafile:

    Vista de archivo Seafile.

    Seafile con Nginx como proxy inverso y SSL se instaló correctamente en el servidor CentOS 7.

    Conclusión

    Con la amplia variedad de aplicaciones en la nube de hoy, Seafile es una solución de nube privada que es buena para usar en este día. Con la función de cifrado a nivel de biblioteca/carpeta, puede almacenar sus datos de forma segura en un servidor Seacloud. Además, Seafile es fácil de configurar e implementar en su propio servidor.


    Cent OS
    1. Cómo instalar Nginx en CentOS 7

    2. Cómo instalar WordPress con Nginx en CentOS 7

    3. Cómo instalar phpMyAdmin con Nginx en CentOS 7

    4. Cómo instalar phpMyAdmin con Nginx en CentOS 7 / RHEL 7

    5. Cómo instalar Sitemagic CMS en CentOS 7 – Con Nginx

    Cómo instalar phpMyAdmin con Nginx en CentOS 8 / RHEL 8

    Cómo instalar Nginx con ngx_pagespeed en CentOS

    Cómo instalar Nginx con PHP-FastCGI en CentOS 6

    Cómo instalar Magento con Nginx en CentOS 7

    Cómo instalar Laravel con Nginx en CentOS 8

    ¿Cómo instalar Nginx en CentOS 7?