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

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:

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.