Seafile : installation sur CentOS : Différence entre versions
De wikiGite
(→Installation) |
(→Lancement automatique) |
||
(5 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
== Installation == | == Installation == | ||
− | + | Update 08/2018 : procédure revue pour CentOS7 et Seafile 6.3.2 (particularité : Seahub n'utilise plus fastcgi). | |
− | |||
− | |||
− | |||
− | |||
Installer les pré-requis : | Installer les pré-requis : | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
yum install python-setuptools python-simplejson python-imaging MySQL-python httpd mod_ssl | yum install python-setuptools python-simplejson python-imaging MySQL-python httpd mod_ssl | ||
− | |||
− | |||
− | |||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Ligne 47 : | Ligne 39 : | ||
On peut alors tester Seafile directement : | On peut alors tester Seafile directement : | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
+ | sudo su - seafile # au cas où on s'est connecté "root" auparavant | ||
./seafile.sh start | ./seafile.sh start | ||
./seahub.sh start | ./seahub.sh start | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | NOTE : IL EST IMPORTANT de lancer "seahub.sh start" AU MOINS UNE FOIS en ligne de commande, car cette première fois demande la mail (donc le login) et le mot de passe de l'utilisateur admin de Seafile ! | |
+ | |||
+ | Se connecter à l'interface par <nowiki>http://IP_DU_SERVEUR:8000</nowiki> | ||
== Configuration == | == Configuration == | ||
Ligne 62 : | Ligne 57 : | ||
port = 3306 | port = 3306 | ||
user = seafile | user = seafile | ||
− | password = | + | password = PwdMySQLseafile |
db_name = seafile-db | db_name = seafile-db | ||
connection_charset = utf8 | connection_charset = utf8 | ||
Ligne 68 : | Ligne 63 : | ||
Editer le fichier /home/seafile/conf/seahub_settings.py : | Editer le fichier /home/seafile/conf/seahub_settings.py : | ||
+ | # -*- coding: utf-8 -*- | ||
SECRET_KEY = "d56a6cbc-751c-dc66-9fdb-45f4492f5abda7d3" | SECRET_KEY = "d56a6cbc-751c-dc66-9fdb-45f4492f5abda7d3" | ||
Ligne 85 : | Ligne 81 : | ||
FILE_SERVER_ROOT = 'https://seafile.domain.fr/seafhttp' | FILE_SERVER_ROOT = 'https://seafile.domain.fr/seafhttp' | ||
+ | |||
+ | EMAIL_USE_TLS = False | ||
+ | EMAIL_HOST = 'localhost' # smpt server | ||
+ | EMAIL_HOST_USER = '' # username and domain | ||
+ | EMAIL_HOST_PASSWORD = '' # password | ||
+ | EMAIL_PORT = '25' | ||
+ | DEFAULT_FROM_EMAIL = 'postmaster@domain.fr' # parce que EMAIL_HOST_USER est vide ci-dessus, sinon on peut reprendre cette variable. | ||
+ | SERVER_EMAIL = 'postmaster@domain.fr' | ||
Attention au "default_storage_engine" (plutôt que "storage_engine") à partir de la version 5 de Seafile ! | Attention au "default_storage_engine" (plutôt que "storage_engine") à partir de la version 5 de Seafile ! | ||
Ligne 91 : | Ligne 95 : | ||
https://github.com/haiwen/seafile/wiki/Start-seafile-server-at-system-bootup | https://github.com/haiwen/seafile/wiki/Start-seafile-server-at-system-bootup | ||
− | D'abord, arrêter Seafile ! | + | D'abord, arrêter Seafile ! |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cd seafile-server-latest | cd seafile-server-latest | ||
Ligne 110 : | Ligne 114 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Créer /etc/systemd/system/seafile.service | Créer /etc/systemd/system/seafile.service | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Ligne 307 : | Ligne 140 : | ||
[Service] | [Service] | ||
# change start to start-fastcgi if you want to run fastcgi | # change start to start-fastcgi if you want to run fastcgi | ||
− | ExecStart=/home/seafile//seafile-server-latest/seahub.sh start | + | ExecStart=/home/seafile//seafile-server-latest/seahub.sh start |
ExecStop=/home/seafile/seafile-server-latest/seahub.sh stop | ExecStop=/home/seafile/seafile-server-latest/seahub.sh stop | ||
User=seafile | User=seafile | ||
Ligne 325 : | Ligne 158 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | <!-- ARCHIVES | ||
== Plusieurs versions de Python == | == Plusieurs versions de Python == | ||
Si, après l'installation de Seafile avec Python 2.6, une version 2.7 est installée sur le serveur, par défaut c'est cette dernière qui sera utilisée (les scripts de lancement de Seafile et Seahub recherchent les binaires Python et s'arrêtent sur la 2.7). | Si, après l'installation de Seafile avec Python 2.6, une version 2.7 est installée sur le serveur, par défaut c'est cette dernière qui sera utilisée (les scripts de lancement de Seafile et Seahub recherchent les binaires Python et s'arrêtent sur la 2.7). | ||
Ligne 343 : | Ligne 177 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Les scripts ne devraient plus chercher Python et démarrer sans problème. | Les scripts ne devraient plus chercher Python et démarrer sans problème. | ||
+ | --> | ||
== Connexion seahub par Apache == | == Connexion seahub par Apache == | ||
+ | Depuis la version 6.3.2, Seafile n'utilise plus fastcgi. On utilise Apache en proxy simple. On ne détaillera ici que la configuration SSL. | ||
+ | |||
+ | <!-- ARCHIVES | ||
Pour la liaison entre Apache et Seafile, on utilisera Fastcgi. Sur CentOS, à installer des dépôts RPMForge (voir [[Dépôts complémentaires]]) : | Pour la liaison entre Apache et Seafile, on utilisera Fastcgi. Sur CentOS, à installer des dépôts RPMForge (voir [[Dépôts complémentaires]]) : | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Ligne 357 : | Ligne 195 : | ||
</IfModule> | </IfModule> | ||
'''NOTE : le fichier /var/www/seahub.fcgi n'a pas besoin d'exister, ce n'est qu'un "wrapper" (voir ci-dessous)''' | '''NOTE : le fichier /var/www/seahub.fcgi n'a pas besoin d'exister, ce n'est qu'un "wrapper" (voir ci-dessous)''' | ||
+ | --> | ||
Créer un fichier /etc/httpd/conf.d/seafile.conf : | Créer un fichier /etc/httpd/conf.d/seafile.conf : | ||
Ligne 386 : | Ligne 225 : | ||
</virtualhost> | </virtualhost> | ||
</pre> | </pre> | ||
+ | |||
+ | <!-- ARCHIVE | ||
'''NOTE : le DocumentRoot doit correspondre au chemin du "wrapper" seahub.fcgi paramétré plus haut !''' | '''NOTE : le DocumentRoot doit correspondre au chemin du "wrapper" seahub.fcgi paramétré plus haut !''' | ||
− | + | --> | |
− | Dans /home/seafile, éditer ccnet/ccnet.conf, modifier : | + | Dans /home/seafile, éditer ccnet/ccnet.conf, modifier SERVICE_URL par l'URL externe de Seafile (ce paramètre sera utilisé pour construire notamment les liens qui pourraient être envoyés par mail) : |
SERVICE_URL = https://seafile.domain.fr | SERVICE_URL = https://seafile.domain.fr | ||
Editer seahub_settings.py, ajouter : | Editer seahub_settings.py, ajouter : | ||
Ligne 394 : | Ligne 235 : | ||
"HTTP_SERVER_ROOT" peut être aussi "FILE_SERVER_ROOT", indifféremment. | "HTTP_SERVER_ROOT" peut être aussi "FILE_SERVER_ROOT", indifféremment. | ||
− | + | Générer des certificats (ou utiliser Let'sEncrypt !) : | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | Générer des certificats : | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
openssl genrsa -out privkey.pem 2048 | openssl genrsa -out privkey.pem 2048 | ||
Ligne 421 : | Ligne 252 : | ||
</pre> | </pre> | ||
− | Dans /etc/ | + | Dans /etc/httpd/conf/httpd.conf : s'assurer que la directive "AllowOverride" du site par défaut (sous <Directory /var/www/html>) est à "All". |
Supprimer /etc/httpd/conf.d/welcome.conf pour ne pas tomber sur la page de test en cas d'erreur. | Supprimer /etc/httpd/conf.d/welcome.conf pour ne pas tomber sur la page de test en cas d'erreur. | ||
Ligne 427 : | Ligne 258 : | ||
Reste à relancer apache | Reste à relancer apache | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | systemctl restart httpd | |
</syntaxhighlight> | </syntaxhighlight> | ||
'''NOTE : Vérifier qu'Apache écoute sur le port 443 ! Décommenter "Listen 443" dans /etc/httpd/conf.d/ssl.conf.''' | '''NOTE : Vérifier qu'Apache écoute sur le port 443 ! Décommenter "Listen 443" dans /etc/httpd/conf.d/ssl.conf.''' | ||
== Connexion seahub par NGINX == | == Connexion seahub par NGINX == | ||
+ | <!-- ARCHIVES | ||
La configuration nginx (https via fastcgi) est enregistrée dans un fichier, chargé ensuite en "include" dans la configuration de nginx : | La configuration nginx (https via fastcgi) est enregistrée dans un fichier, chargé ensuite en "include" dans la configuration de nginx : | ||
server { | server { | ||
Ligne 477 : | Ligne 309 : | ||
} | } | ||
} | } | ||
+ | --> | ||
+ | Créer /etc/nginx/conf.d/seafile.conf : | ||
+ | server { | ||
+ | listen 443; | ||
+ | ssl on; | ||
+ | ssl_certificate /etc/ssl/cacert.pem; # path to your cacert.pem | ||
+ | ssl_certificate_key /etc/ssl/privkey.pem; # path to your privkey.pem | ||
+ | server_name seafile.example.com; | ||
+ | ssl_session_timeout 5m; | ||
+ | ssl_session_cache shared:SSL:5m; | ||
+ | |||
+ | # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits | ||
+ | ssl_dhparam /etc/nginx/dhparam.pem; | ||
+ | |||
+ | # secure settings (A+ at SSL Labs ssltest at time of writing) | ||
+ | # see https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx | ||
+ | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; | ||
+ | ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-SEED-SHA:DHE-RSA-CAMELLIA128-SHA:HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS'; | ||
+ | ssl_prefer_server_ciphers on; | ||
+ | |||
+ | proxy_set_header X-Forwarded-For $remote_addr; | ||
+ | |||
+ | add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; | ||
+ | server_tokens off; | ||
+ | |||
+ | 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_set_header X-Forwarded-Proto https; | ||
+ | |||
+ | access_log /var/log/nginx/seahub.access.log; | ||
+ | error_log /var/log/nginx/seahub.error.log; | ||
+ | |||
+ | proxy_read_timeout 1200s; | ||
+ | |||
+ | client_max_body_size 0; | ||
+ | } | ||
+ | |||
+ | 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/user/haiwen/seafile-server-latest/seahub; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | Et créer le fichier DHPARAM : | ||
+ | openssl dhparam 2048 > /etc/nginx/dhparam.pem | ||
== WebDAV == | == WebDAV == | ||
Ligne 502 : | Ligne 392 : | ||
Reste à relancer apache et Seafile | Reste à relancer apache et Seafile | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | systemctl restart httpd | |
− | + | systemctl restart seafile | |
+ | systemctl restart seahub | ||
</syntaxhighlight> | </syntaxhighlight> | ||
La connexion du client DAV se fera sur le dossier "/seafdav". | La connexion du client DAV se fera sur le dossier "/seafdav". | ||
Ligne 510 : | Ligne 401 : | ||
On peut utiliser seafile avec memcached pour accélérer la navigation : | On peut utiliser seafile avec memcached pour accélérer la navigation : | ||
− | Installation | + | Installation dur CentOS : |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
yum install memcached python-memcached | yum install memcached python-memcached | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
Ajouter dans seafile/conf/seahub_setting.py : | Ajouter dans seafile/conf/seahub_setting.py : | ||
<pre> | <pre> | ||
Ligne 532 : | Ligne 419 : | ||
Arrêter seafile et seahub : | Arrêter seafile et seahub : | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | systemctl stop seafile | |
− | + | systemctl stop seahub | |
</syntaxhighlight> | </syntaxhighlight> | ||
On donne tout de suite les droits à l'utilisateur seafile (important ! si on fait ensuite la mise à jour en tant qu'utilisateur "seafile") : | On donne tout de suite les droits à l'utilisateur seafile (important ! si on fait ensuite la mise à jour en tant qu'utilisateur "seafile") : | ||
Ligne 544 : | Ligne 431 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Télécharger et installer la mise à jour : | Télécharger et installer la mise à jour : | ||
+ | /* archive | ||
+ | wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_6.2.3_x86-64.tar.gz */ | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | cd /home/seafile | + | cd /home/seafile |
− | wget https:// | + | wget https://download.seadrive.org/seafile-server_6.3.4_x86-64.tar.gz |
− | + | tar xvzf seafile-server_6.2.3_i386.tar.gz | |
− | tar xvzf seafile- | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Mise à jour de version principale (6.0 -> 6.3) : | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | cd | + | cd seafile-server-6.3.4/upgrade |
− | / | + | ./upgrade_6.0_6.1.sh |
+ | ./upgrade_6.1_6.2.sh | ||
+ | ./upgrade_6.2_6.3.sh | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Redevenir "root" et lancer les services seafile et seahub | Redevenir "root" et lancer les services seafile et seahub | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | systemctl start seafile | |
− | + | systemctl start seahub | |
</syntaxhighlight> | </syntaxhighlight> | ||
Ligne 575 : | Ligne 458 : | ||
Redémarrer seahub | Redémarrer seahub | ||
+ | <!-- ARCHIVES | ||
=== Traduction === | === Traduction === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Ligne 595 : | Ligne 479 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Redémarrer seahub | Redémarrer seahub | ||
+ | --> | ||
== Sauvegarde / restauration == | == Sauvegarde / restauration == |
Version actuelle datée du 6 janvier 2021 à 13:07
Sommaire
Installation
Update 08/2018 : procédure revue pour CentOS7 et Seafile 6.3.2 (particularité : Seahub n'utilise plus fastcgi).
Installer les pré-requis :
yum install python-setuptools python-simplejson python-imaging MySQL-python httpd mod_ssl
Vérifier la dernière version serveur sur https://www.seafile.com/en/download/
cd install/
wget https://download.seadrive.org/seafile-server_[ dernière version de Seafile ]_x86-64.tar.gz # ou ....i386.tar.gz sur système 32 bits
Créer un répertoire seafile dans /home:
cd /home
mkdir seafile
cd seafile
tar -xvzf /root/install/seafile-server_[ version seafile ]_*.tar.gz
L'archive crée un sous-répertoire avec la version en cours. Lors d'une mise à jour, la précédente version ne sera donc pas écrasée.
Lancer l'installation (qui créera les bases de données) :
cd seafile-server-[ version seafile ]
./setup-seafile-mysql.sh
* Nommer le server (nom affiché sur les clients, sans espaces) * donner l'IP du serveur * laisser le port ccnet, le chemin des données et les ports seafile par défaut * donner un mail pour l'administrateur (mail existant si possible, qui servira à se connecter à l'interface) et un mot de passe * Choisir "1" pour créer les bases * donner les paramètres MySQL * demander la création d'un utilisateur seafile * laisser les noms de bases par défaut
On peut alors tester Seafile directement :
sudo su - seafile # au cas où on s'est connecté "root" auparavant
./seafile.sh start
./seahub.sh start
NOTE : IL EST IMPORTANT de lancer "seahub.sh start" AU MOINS UNE FOIS en ligne de commande, car cette première fois demande la mail (donc le login) et le mot de passe de l'utilisateur admin de Seafile !
Se connecter à l'interface par http://IP_DU_SERVEUR:8000
Configuration
Editer le fichier /home/seafile/conf/seafile.conf
[fileserver] port = 8082 [database] type = mysql host = 127.0.0.1 port = 3306 user = seafile password = PwdMySQLseafile db_name = seafile-db connection_charset = utf8
Editer le fichier /home/seafile/conf/seahub_settings.py :
# -*- coding: utf-8 -*- SECRET_KEY = "d56a6cbc-751c-dc66-9fdb-45f4492f5abda7d3" DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'seahub-db', 'USER': 'seafile', 'PASSWORD': 'PwdSeafile', 'HOST': '127.0.0.1', 'PORT': '3306', 'OPTIONS': { 'init_command': 'SET default_storage_engine=INNODB', } } } FILE_SERVER_ROOT = 'https://seafile.domain.fr/seafhttp' EMAIL_USE_TLS = False EMAIL_HOST = 'localhost' # smpt server EMAIL_HOST_USER = # username and domain EMAIL_HOST_PASSWORD = # password EMAIL_PORT = '25' DEFAULT_FROM_EMAIL = 'postmaster@domain.fr' # parce que EMAIL_HOST_USER est vide ci-dessus, sinon on peut reprendre cette variable. SERVER_EMAIL = 'postmaster@domain.fr'
Attention au "default_storage_engine" (plutôt que "storage_engine") à partir de la version 5 de Seafile !
Lancement automatique
https://github.com/haiwen/seafile/wiki/Start-seafile-server-at-system-bootup
D'abord, arrêter Seafile !
cd seafile-server-latest
./seafile.sh stop
./seahub.sh stop
Créer un utilisateur seafile, dont le homedir sera le répertoire seafile :
adduser -c "Seafile user" -d /home/seafile seafile
chown -R seafile:seafile /home/seafile
chmod 750 /home/seafile
IMPORTANT : vérifier l'appartenance de l'arborescence /home/seafile pour qu'il n'y ait pas de problèmes de droits !
chown -R seafile:seafile /home/seafile
chmod 750 /home/seafile
Créer /etc/systemd/system/seafile.service
[Unit]
Description=Seafile
# add mysql.service or postgresql.service depending on your database to the line below
After=network.target mysql.service
[Service]
Type=oneshot
ExecStart=/home/seafile/seafile-server-latest/seafile.sh start
ExecStop=/home/seafile/seafile-server-latest/seafile.sh stop
RemainAfterExit=yes
User=seafile
Group=seafile
[Install]
WantedBy=multi-user.target
et /etc/systemd/system/seahub.service
[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
# change start to start-fastcgi if you want to run fastcgi
ExecStart=/home/seafile//seafile-server-latest/seahub.sh start
ExecStop=/home/seafile/seafile-server-latest/seahub.sh stop
User=seafile
Group=seafile
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Activer et lancer les 2 services
systemctl enable seafile
systemctl enable seahub
systemctl start seafile
systemctl start seahub
Connexion seahub par Apache
Depuis la version 6.3.2, Seafile n'utilise plus fastcgi. On utilise Apache en proxy simple. On ne détaillera ici que la configuration SSL.
Créer un fichier /etc/httpd/conf.d/seafile.conf :
<VirtualHost *:443> ServerName seafile.domain.fr DocumentRoot /var/www Alias /media /home/seafile/seafile-server-latest/seahub/media/ RewriteEngine On # seafile httpserver # ProxyPass /seafhttp http://127.0.0.1:8082 ProxyPassReverse /seafhttp http://127.0.0.1:8082 RewriteRule ^/seafhttp - [QSA,L] # # seahub # RewriteRule ^/(media.*)$ /$1 [QSA,L,PT] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # add ssl protocol SSLEngine On SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire SSLCertificateFile /etc/ssl/seafile.crt SSLCertificateKeyFile /etc/ssl/seafile.key </virtualhost>
Dans /home/seafile, éditer ccnet/ccnet.conf, modifier SERVICE_URL par l'URL externe de Seafile (ce paramètre sera utilisé pour construire notamment les liens qui pourraient être envoyés par mail) :
SERVICE_URL = https://seafile.domain.fr
Editer seahub_settings.py, ajouter :
HTTP_SERVER_ROOT = 'https://seafile.domain.fr/seafhttp'
"HTTP_SERVER_ROOT" peut être aussi "FILE_SERVER_ROOT", indifféremment.
Générer des certificats (ou utiliser Let'sEncrypt !) :
openssl genrsa -out privkey.pem 2048
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
Copier et renommer les fichiers générés :
mv cacert.pem /etc/ssl/seafile.crt
mv privkey.pem /etc/ssl/seafile.key
Si nécessaire, faire une redirection du site HTTP vers HTTPS. A la racine du site HTTP (port 80, qui doit être différente de la racine du site HTTPS), créer un fichier .htaccess :
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://seafile.domain.fr/$1 [L,R=301]
Dans /etc/httpd/conf/httpd.conf : s'assurer que la directive "AllowOverride" du site par défaut (sous <Directory /var/www/html>) est à "All".
Supprimer /etc/httpd/conf.d/welcome.conf pour ne pas tomber sur la page de test en cas d'erreur.
Reste à relancer apache
systemctl restart httpd
NOTE : Vérifier qu'Apache écoute sur le port 443 ! Décommenter "Listen 443" dans /etc/httpd/conf.d/ssl.conf.
Connexion seahub par NGINX
Créer /etc/nginx/conf.d/seafile.conf :
server { listen 443; ssl on; ssl_certificate /etc/ssl/cacert.pem; # path to your cacert.pem ssl_certificate_key /etc/ssl/privkey.pem; # path to your privkey.pem server_name seafile.example.com; ssl_session_timeout 5m; ssl_session_cache shared:SSL:5m; # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits ssl_dhparam /etc/nginx/dhparam.pem; # secure settings (A+ at SSL Labs ssltest at time of writing) # see https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-SEED-SHA:DHE-RSA-CAMELLIA128-SHA:HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS'; ssl_prefer_server_ciphers on; proxy_set_header X-Forwarded-For $remote_addr; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; server_tokens off; 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_set_header X-Forwarded-Proto https; access_log /var/log/nginx/seahub.access.log; error_log /var/log/nginx/seahub.error.log; proxy_read_timeout 1200s; client_max_body_size 0; } 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/user/haiwen/seafile-server-latest/seahub; } }
Et créer le fichier DHPARAM :
openssl dhparam 2048 > /etc/nginx/dhparam.pem
WebDAV
Pour activer WebDAV (gestion des fichiers via le web) sur Seafile :
- Editer seafile/conf/seafdav.conf
[WEBDAV] enabled = true port = 8080 fastcgi = true share_name = /seafdav
- Ajouter dans /etc/httpd/conf.d/seafile.conf les lignes suivantes :
# # seafile webdav # RewriteCond %{HTTP:Authorization} (.+) RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L,e=HTTP_AUTHORIZATION:%1] RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L]
- Ajouter dans /etc/httpd/conf.d/fastcgi.conf la ligne :
FastCGIExternalServer /var/www/seafdav.fcgi -host 127.0.0.1:8080
Reste à relancer apache et Seafile
systemctl restart httpd
systemctl restart seafile
systemctl restart seahub
La connexion du client DAV se fera sur le dossier "/seafdav".
Memcached
On peut utiliser seafile avec memcached pour accélérer la navigation :
Installation dur CentOS :
yum install memcached python-memcached
Ajouter dans seafile/conf/seahub_setting.py :
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } }
Mise à jour
Arrêter seafile et seahub :
systemctl stop seafile
systemctl stop seahub
On donne tout de suite les droits à l'utilisateur seafile (important ! si on fait ensuite la mise à jour en tant qu'utilisateur "seafile") :
chown -R seafile:apache /home/seafile
Passer sous l'utilisateur seafile (préférable, pour éviter les problèmes de version de Python, voir
su - seafile
Télécharger et installer la mise à jour : /* archive
wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_6.2.3_x86-64.tar.gz */
cd /home/seafile
wget https://download.seadrive.org/seafile-server_6.3.4_x86-64.tar.gz
tar xvzf seafile-server_6.2.3_i386.tar.gz
Mise à jour de version principale (6.0 -> 6.3) :
cd seafile-server-6.3.4/upgrade
./upgrade_6.0_6.1.sh
./upgrade_6.1_6.2.sh
./upgrade_6.2_6.3.sh
Redevenir "root" et lancer les services seafile et seahub
systemctl start seafile
systemctl start seahub
Personnalisation
Logo
Mettre l'image ici, avec ce nom exact (sauvegarder éventuellement le seafile_logo.png existant) :
/home/seafile/seafile-server-latest/seahub/media/img/seafile_logo.png
Redémarrer seahub
Sauvegarde / restauration
Sauvegarde
Il est préférable d'arrêter les service Seafile avant sauvegarde, afin que celle-ci soit cohérente.
- Sauvegarder le dossier /home/seafile/ (dans son entier, c'est plus simple)
- Sauvegarder les 3 bases de données (par mysqldump sous MySQL/MariaDB) : ccnet-db, seafile-db, seahub-db
Restauration
Réinstaller si nécessaire Seafile, puis supprimer (ou renommer en .bak) le dossier /home/seafile.
Après sauvegarde (ou dump) des 3 bases de données (au cas où), les supprimer, et les recréer vides.
Restaurer les 3 bases.
Restaurer le dossier /home/seafile.
Lancer les services Seafile, et faire un check du répertoire (voir ci-dessous)
Réparation
En cas de message d'erreur sur des bibilothèques ("endommagée"), lancer un check :
cd /home/seafile/seafile-server-latest/
./seaf-fsck.sh
Si des bibliothèques apparaissent corrompues et si le script indique "Find available commit xxxxx (created at xxxx-xx-xx xx:xx:xx) for repo xxxxxxx.", copier l'identifiant du dépôt (indiqué sur la ligne "Running fsck for repo xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") et lancer une réparation :
cd /home/seafile/seafile-server-latest/
./seaf-fsck.sh --repair xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
TIPS
- Les logs sont visibles dans <racine_du_virtualhost>/seafile/seafile-server-<version>/runtime/
- changer le mail administrateur : <racine_du_virtualhost>/seafile/seafile-server-<version>/reset_admin.sh
- administer seafile en ligne de commande : https://github.com/HenriWahl/seafadm
- backup en utilisant l'api (fichier api.py intéressant) : https://github.com/oal/barch