====== Seafile ====== Seafile ist eine Cloud-Plattform, die es ermöglicht Daten mit Anderen auszutauschen, sowie (eigene) Daten zwischen mehreren Geräten zu Synchronisieren. [[https://seafile.com/|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: # 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 # # Order allow,deny # Allow from all # Require all granted # # 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 # # Order allow,deny # Allow from all # # # seahub # RewriteRule ^/(media.*)$ /$1 [QSA,L,PT] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # 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] 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 /etc/systemd/system/seahub.service: [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.