===== Configuration de seafile avec apache ======
{{:stockage:seafile:seafile_logo.png?nolink90 |}} une des choses qui peut vous ennuyez avec Seafile, ce sont les ports, en effet entre le port 8000 pour le serveur web (Seahub) et le port 8082 pour le serveur de fichier cela peut-être assez facile de se tromper entre les ports. \\
Ce que je vous propose aujourd'hui, est d'utiliser Apache, peut-être le serveur web le plus utilisé aujourd'hui (cela va déplaire à ceux qui utilise nginx ;-)), donc nous allons activer les FastCGI d'Apache et pour le serveur de fichier nous allons mettre en place un proxy inversé, comme cela fini avec l'embrouille des ports 8000 et 8082 seul le port 80 (voir 443) sera utilisé.
~~READMORE~~
A ce niveau de l'article, je suppose que vous avez Apache et seafile d'installé, dans cette article je suis sur un serveur type Debian \\
[[stockage:seafile:installation_d_un_service_de_stockage_en_ligne|Si, Seafile n'est pas installé]]
==== Avant de commencer ====
Bon votre serveur Apache est installé vous devrez installer le module fastCGI et un package python pour implémenter l'interface de passerelle du serveur Web Python, voici les packages dont vous aurez besoin : \\
Toujours sur Debian ou équivalent :
apt-get install libapache2-mod-fastcgi python-flup
Cela installé, vous pouvez activer les modules Apache
a2enmod rewrite
a2enmod proxy_fcgi
a2enmod proxy_http
a2enmod fastcgi
==== Seafile en HTTP ====
Il vous faudra créer votre hôte virtuel, pour cela nous allons éditer un fichier de configuration dans le répertoire ''/etc/apache2/sites-available'', je l'appel ''seafile.conf''
ServerName www.mydomain.com
DocumentRoot /var/www/html
Alias /media /opt/seafile/seafile-server-latest/seahub/media
Require all granted
RewriteEngine On
FastCGIExternalServer /var/www/html/seahub.fcgi -host 127.0.0.1:8000
FastCGIExternalServer /Var/www/html/seafdav.fcgi -host 127.0.0.1:8082
#
# seafile fileserver
#
ProxyPass /seafhttp http://127.0.0.1:8082
ProxyPassReverse /seafhttp http://127.0.0.1:8082
RewriteRule ^/seafhttp - [QSA,L]
#
# Sync webdav
#
RewriteConf %{HTTP:Authorization} (.+)
RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L,e=HTTP_AUTHORIZATION:%1]
RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L]
#
# Seahub
#
RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*/\.well-known/acme-challenge/.*)
RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
ErrorLog ${APACHE_LOG_DIR}/seafile-error.log
CustomLog ${APACHE_LOG_DIR}/seafile-access.log combined
Activez votre hôte virtuel :
a2ensite seafile.conf
Rechargez votre configuration d'Apache :
/etc/init.d/apache2 reload
==== Seafile en HTTPS ====
Avant de commencer, il faudra installer le package ''openssl'' :
apt-get install openssl
Je donne l'étape de création d'un certificat auto-signé, mais vous pouvez utiliser aussi let's encrypt :
openssl genrsa -out privkey.pem 2048
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
Il faudra activer le module SSL d'apache :
a2enmod ssl
Il faudra créer un nouvel hôte virtuel dans ''/etc/apache2/sites-available'', je l'appel ''seafile-ssl.conf''
ServerName www.mydomain.com
DocumentRoot /var/www/html
Alias /media /opt/seafile/seafile-server-latest/seahub/media
Require all granted
RewriteEngine On
#
# seafile fileserver
#
ProxyPass /seafhttp http://127.0.0.1:8082
ProxyPassReverse /seafhttp http://127.0.0.1:8082
RewriteRule ^/seafhttp - [QSA,L]
#
# Sync webdav
#
RewriteConf %{HTTP:Authorization} (.+)
RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L,e=HTTP_AUTHORIZATION:%1]
RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L]
#
# Seahub
#
RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*/\.well-known/acme-challenge/.*)
RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
SSLEngine on
SSLCertificateFile /chemin/vers/votre/cacert.pem
SSLCertificateKeyFile /chemin/vers/votre/privkey.pem
ErrorLog ${APACHE_LOG_DIR}/seafile-error.log
CustomLog ${APACHE_LOG_DIR}/seafile-access.log combined
Activez votre hôte virtuel :
a2ensite seafile.conf
Rechargez votre configuration d'Apache :
/etc/init.d/apache2 reload
Voici, 2 lignes pour rediriger proprement vos utilisateurs vers la version ssl de seafile, ces lignes doivent être intégrés dans le fichier de configuration de votre hôte virtuel qui n'a pas ssl d'activer, dans mon cas c'est ''seafile.conf'':
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=301]