====== 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:
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.