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]