Inhaltsverzeichnis
Seafile
Seafile ist eine Cloud-Plattform, die es ermöglicht Daten mit Anderen auszutauschen, sowie (eigene) Daten zwischen mehreren Geräten zu Synchronisieren. Seafile.com
Seafile Server Installieren
- Hier die aktuelle Version herunterladen: https://www.seafile.com/en/download/
- Installieren, aktualisieren: https://github.com/haiwen/seafile-docs/blob/master/build_seafile/server.md
- Benutzer und Gruppe für Seafile erstellen
adduser --system seafile addgroup --system seafile usermod -g seafile seafile
- Die Dateien in ein beliebiges Verzeichnis entpacken
- Entpacktes Verzeichnis dem Benutzer und Gruppe Seafile zuordnen
chown -R seafile:seafile seafile*
MySQL
Die MySQL-Datenbanken werden vom Installationsscript erzeugt. Dazu wird man zur Eingabe des MySQL root-Passwots aufgefordert.
Apache-Konfiguration
benötigte apache-Module aktivieren:
a2enmod ssl a2enmod proxy_http a2enmod fastcgi a2enmod authz_groupfile a2enmod rewrite
in /etc/apache2/apache.conf
folgendes am Ende einfügen:
# for seafile: FastCGIExternalServer /var/www/wolke/seahub.fcgi -host 127.0.0.1:8000
SSL-Zertifikat erstellen:
openssl genrsa -out privkey.pem 2048 openssl req -new -x509 -key privkey.pem -out cacert.pem -days 2190
Erstellt ein selbstzertififiziertes SSL-Zertifikat mit 6 Jahren Gültigkeit.
Dieses muss entsprechend in der folgenden Konfigurationsdatei angegeben werden.
Der Nachteil von einem selbst erstellten Zertifikat ist, dass man beim ersten Aufruf im Browser eine „Sicherheitsausnahme“ für dieses Zertifikat hinzufügen muss, damit man die Seite verwenden kann. Für kleine private Projekte sollte dies aber akzeptabel sein.
Es empfiehlt sich stattdessen ein SSL-Zertifikat mit Let's Encrypt zu erzeugen.
Konfigurationsdatei für die Seite erstellen. Z.B. /etc/apache2/sites-available/seafile.conf
Folgend der Inhalt der Datei. Einige Werte müssen entsprechend den eigenen Bedürfnissen angepasst werden:
<VirtualHost *:443> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin webmaster@meinedomain.de ServerName seafile.meinedomain.de DocumentRoot /var/www/seafile # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access-seafile.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf Alias /media /home/seafile/seafile/seafile-server-latest/seahub/media SSLEngine On SSLCertificateFile /home/seafile/seafile/cacert.pem SSLCertificateKeyFile /home/seafile/seafile/privkey.pem RewriteEngine On # For apache2.2, you may need to change to # <Location /media> # Order allow,deny # Allow from all # </Location> <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] # For apache2.2, you may need to add # <Location /seafhttp> # Order allow,deny # Allow from all # </Location> # # seahub # RewriteRule ^/(media.*)$ /$1 [QSA,L,PT] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] #</Directory> </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@meinedomain.de ServerName seafile.meinedomain.de DocumentRoot /var/www/seafile # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access-seafile.log combined # alles auf https weiterleiten: RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </VirtualHost>
Der Teil auf Port 80 ist nur dazu gedacht, dass Besucher der Seite auf https weitergeleitet werden. So muss man im Browser nicht immer "https://" manuell eingeben. Insgesamt werden folgende Ports benötigt:
- 80 (nur für die Weiterleitung auf https)
- 443 (https, für die Seafile-Seite)
- 8000 (nur intern)
- 8082 (zur Übertragung der Dateien) (nur intern)
Das angegebene DocumentRoot muss vorhanden sein. Dort werden aber keine Daten gespeichert. Dies wird separat n der Seafile-Konfiguration festgelegt.
Seafile konfigurieren
In der Datei seafile/conf/ccnet.conf
folgendes eintragen. Einiges muss an die eigenen Bedürfnisse angepasst werden!
[General] USER_NAME = meinname ID = f17b963304c51ae1592ca9ae9f99066efdefd3a2 NAME = meinname SERVICE_URL = https://seafile.meinedomain.de [Client] PORT = 13419 [Database] ENGINE = mysql HOST = 127.0.0.1 PORT = 3306 USER = seafile PASSWD = PASSWORT DB = ccnet-db CONNECTION_CHARSET = utf8
In der Datei seafile/conf/seafile.conf
:
[fileserver] port = 8082 [database] type = mysql host = 127.0.0.1 port = 3306 user = seafile password = PASSWORT db_name = seafile-db connection_charset = utf8 [quota] # default user quota in GB, integer only # Standard-Quota für neu erstellte Benutzer in GB. # Kann über die Weboberfläche im Admin-Menü für jeden Benutzer individuell festgelegt werden. default = 10 [history] # Standardmäßige Vorhaltezeit der Vergangenheit (gelöschte / geänderte Dateien) # Kann im Webinterface für jede Bibliothek unabhängig heiervon eingestellt werden keep_days = 180
In der Datei seafile/conf/seahub_settings.py
:
SECRET_KEY = "06687964-9690-4be2-a82e-757ce77d905cd619" DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'seahub-db', 'USER': 'seafile', 'PASSWORD': 'PASSWORT', 'HOST': '127.0.0.1', 'PORT': '3306', 'OPTIONS': { 'init_command': 'SET storage_engine=INNODB', } } } EMAIL_USE_TLS = True EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER = 'meinemail@googlemail.com' EMAIL_HOST_PASSWORD = 'MAILPASSWORT' EMAIL_PORT = 587 DEFAULT_FROM_EMAIL = EMAIL_HOST_USER SERVER_EMAIL = EMAIL_HOST_USER FILE_SERVER_ROOT = 'https://seafile.meinedomain.de/seafhttp'
Im Beispiel wird GMail verwendet, um Mails zu versenden.
In der Datei seafile/ccnet/seafile.ini
:
/mnt/seafile/data
Start- / Stopscripte erstellen
/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/seafile-server-latest/seafile.sh start ExecStop=/home/seafile/seafile/seafile-server-latest/seafile.sh stop RemainAfterExit=yes User=seafile Group=seafile [Install] WantedBy=multi-user.target </source> <code>/etc/systemd/system/seahub.service</code>: <source lang="bash">[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/seafile-server-latest/seahub.sh start-fastcgi ExecStop=$/home/seafile/seafile/seafile-server-latest/seahub.sh stop User=seafile Group=seafile Type=oneshot RemainAfterExit=yes [Install] WantedBy=multi-user.target
Skripte ausführbar machen:
chmod +x /etc/systemd/system/seafile.service chmod +x /etc/systemd/system/seahub.service
Seafile starten
Wenn die Start- /Stop-Skripte erstellt sind, lässt sich Seafile einfach mit Systemd starten:
service seafile start service seahub start
Außerdem wird Seafile beim Systemstart automatisch gestartet.
Verwenden
Man kann nun Seafile über die in der Apache-Konfiguration eingerichtete URL aufrufen, und sich mit dem vom Installationsskript erstellten Benutzer anmelden. Die weitere Konfiguration wird über die Weboberfläche aufgeführt.