Seafile – Instalação no Centos 7

Seafile é uma alternativa opensource para serviços como dropbox, google drive, mega, entre outros.  Mas diferente desses serviços que você paga pela hospedagem dos seus arquivos e tem todo o serviço de versionamento dos seus arquivos, no Seafile, assim como seu outro concorrente open source mais conhecido o Owncloud, você precisa ter um servidor para alocar os arquivos.

Como desvantagem você vai precisar se preocupar com o backup do servidor. Mas por outro lado, além de você não precisar pagar mensalidade tem a certeza que seus documentos estão livres de espionagem, ainda tem a vantagem que rodando um serviço desses na sua rede não vai utilizar sua banda de internet, oque dependendo do numero de usuários podem ser algo que vai pesar bastante.

O Seafile é feito em python com o framework Django e usa o banco de dados mysql ( ou mariadb que é o banco utilizado nesse tutorial). Ele tem uma interface simples, não tem muitas funções embutidas, mas as principais ele faz bem, sendo estável  e bem rápido.

Tem cliente para windows , linux e mac que pode ser feito o download em:  https://www.seafile.com/en/download/

Esse tutorial é para a instalação no Centos 7.

#Mude algumas opções de segurança:

service firewalld stop
chkconfig firewalld off

#desabilite o selinux:
vim /etc/selinux/config

SELINUX=disable

#Force a parada do selinux sem reinicializar:

setenforce 0

Segundo adicionar repositorio mariadb mais novo:

#vim /etc/yum.repos.d/MariaDB.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

 

#coloque o repositorio para ultima versão do nginx

yum -y install yum-utils
yum-config-manager –add-repo https://brouken.com/brouken.repo

#Habilite o repositorio epel:

yum install epel-release

#instale os pacotes basicos

yum install MariaDB-server MariaDB-client
yum -y install python-imaging MySQL-python python-simplejson python-setuptools nginx

 

#Inicialize o banco de dados:

service mariadb start

#coloque ele para inicializar junto da maquina:

chkconfig mariadb on

#Crie uma senha de root para o banco:

mysql_secure_installation

#Crie 3 databases:

 

ccnet_db
seafile_db
seahub_db

mysql -u root -p

MariaDB [(none)]> create database ccnet_db;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> create database seafile_db;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> create database seahub_db;
Query OK, 1 row affected (0.00 sec)

 

#Crie o usuario seacloud e de permissão de acesso a ele:

create user [email protected] identified by ‘senha’;

grant all privileges on ccnet_db.* to [email protected] identified by ‘senha’;
grant all privileges on seafile_db.* to [email protected] identified by ‘senha’;
grant all privileges on seahub_db.* to [email protected] identified by ‘senha’;
flush privileges;

#Agora vamos criar o diretorio do Seafile

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

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

mv seafile-server-6.0.9/ seafile-server
cd seafile-server

#Configure o banco de dados com o script do banco:

./setup-seafile-mysql.sh

#Siga os passos do script

———————————
This is your configuration

server name: minerva
server ip/domain: 192.168.88.179

seafile data dir: /var/www/seafile/seafile-data
fileserver port: 8082

database: use existing
ccnet database: ccnet_db
seafile database: seafile_db
seahub database: seahub_db
database user: seacloud

 

#Iinicialize os serviços:

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

#Na primeira vez que inicializar é necessario configurar o usuario admin:

—————————————-
It’s the first time you start the seafile server. Now let’s create the admin account

What is the email for the admin account?
[ admin email ] [email protected]

What is the password for the admin account?
[ admin password ]

Enter the password again:
[ admin password again ]

Configurando um serviço para seafile inicializar junto da maquina:

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

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

######
[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

######

vim seahub.service

######
[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
#####

systemctl daemon-reload
systemctl start seafile
systemctl start seahub

systemctl enable seafile
systemctl enable seahub

 

#Verifique se os serviços estão de pé:

netstat -plntu
Conexões Internet Ativas (sem os servidores)
Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado PID/Program name
tcp 0 0 0.0.0.0:8082 0.0.0.0:* OUÇA 11598/seaf-server
tcp 0 0 0.0.0.0:22 0.0.0.0:* OUÇA 1245/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* OUÇA 2524/master
tcp 0 0 127.0.0.1:8000 0.0.0.0:* OUÇA 11683/python2.7
tcp6 0 0 :::3306 :::* OUÇA 10993/mysqld
tcp6 0 0 :::22 :::* OUÇA 1245/sshd
tcp6 0 0 ::1:25 :::* OUÇA 2524/master
udp 0 0 0.0.0.0:56296 0.0.0.0:* 1055/dhclient
udp 0 0 0.0.0.0:68 0.0.0.0:* 1055/dhclient
udp6 0 0 :::41586

 

#Vamos configurar o nginx:

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

#vamos criar a chave ssl

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

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

#Vamos criar o arquivo de configuração do nginx:

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

###########
server {
listen 80;
server_name meuservidor.dominio.local;
return 301 https:$host$request_uri;
}

server {
listen 443 http2;
server_name meuservidor.dominio.local;
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;
}

}
#############

#habilitar o nginx: systemctl enable nginx #inicializar o nginx service nginx start #Agora precisamos colocar o endereço da url no settings do seafile: cd /var/www/seafile/
vim conf/ccnet.conf

#Mude a seguinte opção:
SERVICE_URL = https://meuservidor.dominio.local

#Edite esse arquivo e adicione essa linha:

vim conf/seahub_settings.py

HTTP_SERVER_ROOT = ‘https://cloud2.2xt.local/seafhttp’

###Reinicie a maquina para ver se tudo inicializara:

 

#Integração ldpad/samba/active directory

#Edite o arquivo: vim /var/www/seafile/conf/ccnet.conf #Adicione a seguinte linha: [LDAP]
HOST = ldap://192.168.88.1/
BASE = CN=Users,DC=dominio,DC=local
USER_DN = [email protected]
PASSWORD = Senha-administrator
LOGIN_ATTR = userPrincipalName
#Reinicie os serviços: service seafile restart
service seahub restart

#melhorando a performance com o memcached:
yum groupinstall “Development Tools”
yum install python-pip memcached-devel.x86_64 memcached.x86_64 python-devel zlib-devel.x86_64 libmemcached-devel.x86_64 pip install pylibmc
pip install django-pylibmc #inicialize o memcached
service memcached start
chkconfig memcached on #Agora vamos configurar o seafile:
vim /var/www/seafile/conf/seahub_settings.py

#Adicione a seguinte linha: CACHES = {
‘default’: {
‘BACKEND’: ‘django_pylibmc.memcached.PyLibMCCache’,
‘LOCATION’: ‘127.0.0.1:11211’,
}
}

#Reinicie o serviço:
service seafile restart
service seahub restart

 

Eu fiz um passo a passo bem resumido por que é bastante coisa, mas se você não esquecer nada não deve ter problema. Mas em caso de duvidas você pode ir no site deles no Wiki, ou mesmo ir no forum a partir de  https://www.seafile.com/en/home/ .

Segue abaixo imagens da interface web. O cliente é bem intuitivo por isso não vou colocar imagens. Só mais uma dica, se você colocar os usuarios para logar via ldap o seafile usa e-mail como login, então você não vai conseguir logar com por exemplo o usuario “jose” , vai ter que colocar o usario [email protected] .

 

 

 

 

 

 

Espero que aproveitem bastante o tutorial!

About The Author
admin Anakin Pendragon