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é.
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
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
<VirtualHost *:80>
ServerName www.mydomain.com
DocumentRoot /var/www/html
Alias /media /opt/seafile/seafile-server-latest/seahub/media
<Location /media>
Require all granted
</Location>
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
</VirtualHost>
Activez votre hôte virtuel :
a2ensite seafile.conf
Rechargez votre configuration d'Apache :
/etc/init.d/apache2 reload
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
<VirtualHost *:443>
ServerName www.mydomain.com
DocumentRoot /var/www/html
Alias /media /opt/seafile/seafile-server-latest/seahub/media
<Location /media>
Require all granted
</Location>
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
</VirtualHost>
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]