Upload Limit in Seafile erhöhen unter Apache und Nginx
Als Dateiaustauschplattform und für die Synchronisation von Dateien eignet sich Seafile sowohl im Einzelbenutzerbetrieb als auch für Arbeitsgruppen hervorragend als Alternative zu Dropbox oder Google Drive. Mit dem Seafile Client können Dateien beliebiger Größe mit dem Server synchronisiert werden. Wer jedoch Dritten einen Upload über das Webinterface Seahub ermöglichen möchte, der stößt möglicherweise schnell an die Grenzen des Webservers. In diesem Artikel beschreiben wir, wie Sie das Upload Limit in Seafile mit Hilfe der max_upload_size Direktive verändern und was Sie dabei beachten müssen.
Änderung des Upload Limits in Seafile in zwei Schritten
Um die maximal zugelassene Größe für einen Upload über das Webinterface Seahub in Seafile zu verändern, müssen sowohl Änderungen in der Seafile- als auch in der Webserver-Konfiguration vorgenommen werden. Zunächst erklären wir die Konfigurationsänderungen von Seafile und erläutern dann, welche Anpassungen am Webserver vorzunehmen sind. Wir gehen in diesem Artikel auf den Apache Webserver und seinen stärksten Konkurrenten Nginx ein.
1. Anpassung der Seafile Server-Konfiguration
Die Anpassung des File Size Limits erfolgt über die Konfigurationsdatei des Seafile-Webservers. Soll die maximale Dateigröße für Uploads zum Beispiel auf 100MB verkleinert werden, so muss in der Config-Datei Folgendes ergänzt werden:
[fileserver] max_upload_size=100
Ist der Eintrag für [fileserver] in der Konfigurationsdatei bereits vorhanden, dann muss dieser natürlich nur um die entsprechende Option erweitert werden. Da die Größe von Seafile ausschließlich in Megabyte zugelassen wird, ist außer der Zahl nichts weiter hinzuzufügen. Nach einem Neustart wird diese Änderung aktiv.
Zur Erhöhung des Uploadlimits sind analoge Einträge notwendig. Möchte man zum Beispiel eine maximale Dateigröße von 3GB zulassen, dann muss max_upload_size einfach auf den Wert 3072 gesetzt werden.
Wie in der Seafile Dokumentation beschrieben, müssen die Einstellungsänderungen in der Datei seafile.conf vorgenommen werden, welche sich bis zur Seafile Version 4 noch im Ordner “seafile-data” befand, ab Version 5 aber mit allen anderen Konfigurationsdateien in den Ordner “conf” verschoben wurde. Einige Tests zeigten, dass scheinbar eine Fallback-Funktion besteht, die den gleichen Eintrag auch in der Datei ccnet.conf akzeptiert, sollte in der seafile.conf kein Eintrag vorhanden sein.
2. Anpassung der Webserver-Konfiguration
Abhängig vom eingesetzten Webserver muss die maximal zulässige Größe des HTTP Request Body ebenfalls angepasst werden.
2a. Apache Webserver
Bei Apache Webservern regelt die LimitRequestBody Direktive die maximale Größe des HTTP Requests. Dieser Wert ist bei Apache standardmäßig auf den Wert „0“ eingestellt, was „keine Begrenzung“ bedeutet. (Hinweis: Der Vollständigkeit wegen soll an dieser Stelle erwähnt werden, dass der maximal zulässige Wert erst ab Apache Version 2.2 wirklich unbegrenzt ist. Bei den Vorgängerversionen lag das Limit bei 2Gigabyte.) Eine Standardinstallation gemäß Seafile Manual mit der genannten Anpassung sähe folgendermaßen aus:
<VirtualHost *:80> ServerName www.myseafile.com DocumentRoot /var/www Alias /media /home/user/haiwen/seafile-server-latest/seahub/media RewriteEngine On <Location /media> Require all granted </Location> # # seafile fileserver # ProxyPass /seafhttp http://127.0.0.1:8082 ProxyPassReverse /seafhttp http://127.0.0.1:8082 RewriteRule ^/seafhttp - [QSA,L] LimitRequestBody 104857600 # # seahub # SetEnvIf Request_URI . proxy-fcgi-pathinfo=unescape SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 ProxyPass / fcgi://127.0.0.1:8000/ </VirtualHost>
2b. Nginx Webserver
Beim Einsatz von Nginx wird die Begrenzung durch das Modul client_max_body_size konfiguriert. Der gewünschte Wert wird in diesem Fall in Megabyte angegeben. Die Kennzeichnung mit “M” für Megabyte ist dennoch obligatorisch. Für 2GB entspräche dies also „2048M“.
Das Seafile Handbuch enthält bereits eine vollständige Nginx-Konfiguration:
server { listen 80; server_name www.myseafile.com; proxy_set_header X-Forwarded-For $remote_addr; 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; } 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; } location /media { root /home/user/haiwen/seafile-server-latest/seahub; } }
Sicherheitshinweis: Gefahr durch höheres Seafile-Upload Limit
Bevor Einstellungen an Seafile und auch am Webserver verändert werden, um das Upload Limit in Seafile zu erhöhen, sollte zunächst genau überlegt werden, ob der Vorteil, der durch die Änderung erzielt werden soll, die Nachteile überwiegt. Eine Veränderung der zulässigen Größe für einen HTTP Request Body hat zur Folge, dass große Requests nicht mehr sofort verworfen, sondern zunächst vollständig vom Webserver empfangen werden. Die Erhöhung des File Size Limits in Seafile machen einen Webserver somit leicht angreifbar, da er bereits mit einer geringen Anzahl gleichzeitiger Anfragen in die Knie gezwungen werden kann. Auch ist die Wahl des passenden Timeouts eine schwierige Aufgabe, da die schwankende Bandbreite oder systeminterne Prozesse die Fertigstellung eines Uploads beeinflussen können.
Fazit
Eine moderate Erhöhung des Upload Limits in Seafile ist ohne weiteres möglich. Mehr als eine Ergänzung in der Seafile-Konfigurationsdatei und eine Anpassung der der Webserver-Einstellungen sind nicht notwendig.
Wenn man das File Size Limit in Seafile deutlich erhöht, dann kann es dennoch bei großen Uploads zu Abbrüchen kommen. In diesen Fällen gilt es, Buffering und Timeouts des Webservers so zu konfigurieren, dass ihm genügend Zeit für Empfang und Verarbeitung der Daten zur Verfügung bleibt. In manchen Webservern sind die dazu notwendigen Konfigurationseinstellungen aber erst ab höheren Versionen verfügbar. Den jeweiligen Webserver gilt es jedoch mit Bedacht zu konfigurieren, da man damit ein nicht geringes Sicherheitsrisiko eingeht.
Für Fragen rund um Seafile steht Ihnen das ionas-Team gerne an 7 Tagen die Woche zur Verfügung: +49 (0)6131 3270777. Wenn Sie Seafile privat oder in Ihrem Unternehmen nutzen möchten, dann haben wir mit unseren ionas-Servern eine komfortable Implementierungsoption.