Instalación de Seafile (almacenamiento seguro en la nube) con la base de datos MySQL en RHEL / CentOS / SL 7.x / 6.x


Seafile es una aplicación avanzada de almacenamiento colaborativo en la nube de código abierto escrita en Python con soporte para compartir y sincronizar archivos, colaboración en equipo y protección de la privacidad mediante cifrado del lado del cliente. Está construido como una sincronización de archivos multiplataforma con clientes que se ejecuta en todas las plataformas principales (Linux, Raspberry Pi, Windows, Mac, iPhone y Android) y se puede integrar fácilmente con servicios locales como LDAP y WebDAV o se puede implementar utilizando servicios de red y bases de datos como MySQL, SQLite, PostgreSQL, Memcached, Nginx o Apache Web Server.

Este tutorial lo guiará en una instalación paso a paso de Seafile Server en RHEL/CentOS/Scientific Linux 7.x/6.x implementado con la base de datos MySQL, con inicio init scripts para ejecutar el servidor en el puerto Seafile predeterminado (8000/TCP) y el puerto de transacción HTTP predeterminado (80/TCP), cree las reglas de firewall necesarias para abrir los puertos requeridos.

  1. Minimal CentOS 6.5 installation with static IP address.
  2. MySQL/MariaDB database
  3. Python 2.6.5+ or 2.7
  4. Python-setuptools
  5. Python-simplejson
  6. Python-imaging
  7. Python-mysqldb

Este procedimiento de instalación se probó en el sistema CentOS 6.4 de 64 bits , pero también se puede utilizar en otras distribuciones de Linux con la especificación de que los scripts de inicio init difieren de una distribución a otra. .

Paso 1: instalar módulos de Python

1. Primero haga una Actualización del sistema, luego instale todos los módulos de Python requeridos usando los siguientes comandos.

# yum upgrade
# yum install python-imaging MySQL-python python-simplejson python-setuptools

2. Si usa un servidor Debian o Ubuntu , instale todos los módulos de Python con los siguientes comandos.

$ sudo apt-get update
$ sudo apt-get install python2.7 python-setuptools python-simplejson python-imaging python-mysqldb

Paso 2: Instale Seafile Server

3. Una vez instalados todos los módulos de Python, cree un nuevo usuario del sistema con una contraseña segura que se utilizará para alojar la configuración del servidor Seafile y todos los datos en su directorio de inicio, luego cambie a la cuenta de usuario recién creada.

# adduser seafile
# passwd seafile
# su - seafile

4. A continuación, inicie sesión en la base de datos MySQL y cree tres bases de datos, una para cada componente de Seafile Server: servidor ccnet , servidor seafile y seahub con un solo usuario para todas las bases de datos.

$ mysql -u root -p

mysql> create database `ccnet-db`;
mysql> create database `seafile-db`;
mysql> create database `seahub-db`;
mysql> create user 'seafile'@'localhost' identified by 'password';
mysql> GRANT ALL PRIVILEGES ON `ccnet-db`.* to `seafile`@`localhost`;
mysql> GRANT ALL PRIVILEGES ON `seafile-db`.* to `seafile`@`localhost`;
mysql> GRANT ALL PRIVILEGES ON `seahub-db`.* to `seafile`@`localhost`;
mysql> FLUSH PRIVILEGES;
mysql> exit;

5. Ahora es el momento de descargar e instalar Seafile Server . Vaya a la página de descarga oficial de Seafile y obtenga la última versión de archivo de Linux .Tar para la arquitectura de su servidor usando el comando wget , luego extráigalo a su usuario de Seafile que creó anteriormente e ingrese Seafile directorio extraído.

$ wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.0.4_x86-64.tar.gz
$ tar xfz seafile-server_3.0.4_x86-64.tar.gz
$ cd seafile-server_3.0.4/

6. Para instalar Seafile Server usando la base de datos MySQL, ejecute el script de inicialización setup-seafile-mysql.sh y responda todas las preguntas usando las siguientes opciones de configuración, después de que el script verifique la existencia de todos los módulos requeridos por Python.

$ ./setup-seafile-mysql.sh
  1. What is the name of your server? = choose a descriptive name (no spaces allowed).
  2. What is the IP or domain of the server? = enter your server IP address or your valid domain name.
  3. Which port do you want to use for ccnet server? = hit [Enter] – leave it default – 10001.
  4. Where do you want to put seafile data? = hit [Enter] – the default location will be your $HOME/seafile-data directory.
  5. Which port do you want to use for seafile server? = hit [Enter] – leave it default – 12001.
  1. Which port do you want to use for seafile httpserver? = hit [Enter] – leave it default – 8082.
  2. Please choose a way to initialize seafile databases: = choose 1 and provide default MySQL credentials: localhost, 3306 and root password.
  3. Enter the name for MySQL user of seafile: = seafile ( if you created other username enter that username) and seafile MySQL user password.
  4. On ccnet-server, seafile-server and seahub databases just hit [Enter] key – default.

Después de que Seafile Server se instale con éxito, generará información útil, como qué puertos deben estar abiertos en su Firewall para permitir la conexión externa y qué scripts manejar para iniciar el servidor.

Paso 3: Abra el cortafuegos y cree el script de inicio de Seafile

7. Antes de iniciar el servidor Seafile desde el script local para una prueba, vuelva a cambiar a la cuenta raíz y abra la configuración del archivo de firewall iptables ubicado en /etc/sysconfig/ ruta del sistema y agregue las siguientes reglas de línea antes de la primera línea REJECT , luego reinicie iptables para aplicar nuevas reglas.

$ su - root
# nano /etc/sysconfig/iptables

Agregue las siguientes reglas.

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8082 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10001 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 12001 -j ACCEPT

Reinicie iptables para aplicar las reglas con el siguiente comando.

# service iptables restart

NOTA: Si cambió los puertos estándar de Seafile en el proceso de instalación, actualice las reglas de iptables de su Firewall en consecuencia.

8. Ahora es el momento de probar Seafile Server. Cambie al usuario Seafile y al directorio seafile-server e inicie el servidor usando los scripts seafile.sh y seahub.sh .

La primera vez que inicie el script seahub.sh , cree una cuenta administrativa para Seafile Server utilizando su dirección de correo electrónico y elija una contraseña segura para la cuenta de administrador, especialmente si está implementando esta configuración en un entorno de producción.

# su - seafile
$ cd seafile-server-latest/
$ ./seafile.sh start
$ ./seahub.sh start

9. Una vez que el servidor se haya iniciado correctamente, abra un navegador y navegue hasta la dirección IP de su servidor o el nombre de dominio en el puerto 8000 utilizando el protocolo HTTP, luego inicie sesión con su cuenta de administrador creada en el paso anterior.

http://system_IP:8000

OR 

http://domain_name:8000

10. Después de las primeras pruebas de configuración, detenga el servidor Seafile y cree un script init que le ayudará a administrar más fácilmente todo el proceso, como cualquier otro proceso demonio del sistema Linux.

$ ./seafile.sh stop
$ ./seahub.sh stop
$ su - root
# nano /etc/init.d/seafile

Agregue el siguiente contenido en este script init : si Seafile está instalado en otro usuario del sistema, asegúrese de actualizar el usuario y las rutas en consecuencia en las líneas su - mial -c .

#!/bin/sh
#chkconfig: 345 99 10
#description: Seafile auto start-stop script.

# source function library
. /etc/rc.d/init.d/functions

start() {
        echo "Starting Seafile server..."
su - seafile -c "seafile-server-latest/seafile.sh start"
su - seafile -c "seafile-server-latest/seahub.sh start"
}

stop() {
        echo "Stopping Seafile process..."
su - seafile -c "seafile-server-latest/seafile.sh stop"
su - seafile -c "seafile-server-latest/seahub.sh stop"
}

restart() {
        echo "Stopping Seafile process..."
su - seafile -c "seafile-server-latest/seafile.sh stop"
su - seafile -c "seafile-server-latest/seahub.sh stop"

         echo "Starting Seafile server..."
su - seafile -c "seafile-server-latest/seafile.sh start"
su - seafile -c "seafile-server-latest/seahub.sh start"
}

case "$1" in
    start)
       start
        ;;
    stop)
       stop
        ;;
    restart)
       restart
        ;;
        *)
      echo "Usage: $0 start stop restart"
        ;;
esac

11. Después de que se haya creado el archivo init , asegúrese de que tenga permisos de ejecución y administre el proceso usando iniciar , detener y reiniciar conmutadores. Ahora puede agregar el servicio Seafile al iniciar el sistema usando el comando chkconfig .

# chmod +x /etc/init.d/seafile
# service seafile start 
# service seafile stop 
# service seafile restart
# chkconfig seafile on | off
# chkconfig --list seafile

12. De forma predeterminada, el servidor Seafile utiliza el puerto HTTP 8000 / TCP para transacciones web. Si desea acceder a Seafile Server desde el navegador en el puerto HTTP estándar, utilice el siguiente script init que inicia el servidor en el puerto 80 (tenga en cuenta que iniciar un servicio en los puertos siguientes < b> 1024 requiere privilegios de root).

# nano /etc/init.d/seafile

Agregue el siguiente contenido en este script init para iniciar Seafile en el puerto HTTP estándar. Si Seafile está instalado en otro usuario del sistema, asegúrese de actualizar el usuario y las rutas en consecuencia en las líneas su - mial -c y /home/mial .

#!/bin/sh
#chkconfig: 345 99 10
#description: Seafile auto start-stop script.

# source function library
. /etc/rc.d/init.d/functions

start() {
                echo "Starting Seafile server..."
su - seafile -c "seafile-server-latest/seafile.sh start"
                ## Start on port default 80 http port ##
/home/seafile/seafile-server-latest/seahub.sh start 80
}

stop() {
                echo "Stopping Seafile process..."
su - seafile -c "seafile-server-latest/seafile.sh stop"
/home/seafile/seafile-server-latest/seahub.sh stop
}

restart() {
      echo "Stopping Seafile process..."
su - seafile -c "seafile-server-latest/seafile.sh stop"
/home/seafile/seafile-server-latest/seahub.sh stop
                 echo "Starting Seafile server..."
su - seafile -c "seafile-server-latest/seafile.sh start"
/home/seafile/seafile-server-latest/seahub.sh start 80
}

case "$1" in
    start)
       start
        ;;
    stop)
       stop
        ;;
     restart)
       restart
        ;;
                *)
        echo "Usage: $0 start stop restart"
        ;;
Esac

13. Si ya inició Seafile en el puerto 8000 , asegúrese de que todos los procesos se hayan eliminado, inicie el servidor en el puerto 80.

# chmod +x /etc/init.d/seafile
# service seafile start | stop | restart

Abra un navegador y diríjalo a la siguiente dirección.

http://system_ip 

OR

http://domain_name.tld

14. También puede verificar en qué puertos se está ejecutando Seafile usando el comando netstat .

# netstat -tlpn

¡Eso es! Seafile puede reemplazar felizmente otras plataformas colaborativas en la nube y de sincronización de archivos como Dropbox público, Owncloud , Pydio , OneDrive , etc. en su organización, está diseñado para un mejor trabajo en equipo y un control total sobre su almacenamiento con seguridad avanzada en el espacio del usuario.

En mi próximo artículo, cubriré cómo instalar el cliente Seafile en sistemas Linux y Windows y también le mostraré cómo conectarse a Seafile Server. Hasta entonces, estad atentos a Tecmint y no olvides dar tus valiosos comentarios.