Dropbox Alternative Seafile auf Uberspace installieren [Update]

Es hat sich viel geändert bei Seafile seit meinem letzten Artikel darüber.

Mittlerweile gibt es von SeafileDE ein Installer-Skript auf Github, mit dem Seafile sehr einfach und schnell auf einem Uberspace (Centos 6.x only, aber mit https und MariaDB/MySQL) installiert werden kann. Dieses Skript ist zwar noch in der Entwicklung, lief bei meinen Tests aber ohne Fehler durch und installierte mir ein funktionierendes Seafile. Selbst um die richtigen Ports (das ist laut Entwickler aber leider manchmal noch ein Problem) und das Anlegen von einem Admin-Account kümmert es sich.

Hier eine kurze Anleitung für die Community Edition. Ein Hinweis noch vor dem Beginn, das Skript legt stan­dard­mä­ßig eine .htaccess in ~/html an und überschreibt eine ggf. vorhandene. Also wenn dort schon ein .htaccess vorhanden ist, von dieser vorher ein Backup machen. Ansonsten kann der Installer direkt im Home-Verzeichnis heruntergeladen und gestartet werden, er legt sowieso ein Unterverzeichnis für Seafile unter ~/seafile an:

wget --no-check-certificate https://raw.githubusercontent.com/SeafileDE/seafile-server-installer/master/community-edition/seafile-ce_uberspace
bash seafile-ce_uberspace

Das Skript startet Seafile/Seahub gleich und ist dann auch sofort einsatzbereit und erreichbar, allerdings unter der Hauptdomain des Accounts: https://user$.server$.uberspace.de.

Damit Seafile nach der Installation unter einer anderen Domain oder eine Subdomain läuft, braucht es noch ein paar Handgriffe (mehr zum Thema (Sub)Domains bei Uberspace steht bei denen im Wiki). Im Grunde muss vor allem die .htaccess-Datei aus ~/html in den Ordner der (Sub)Domain verschoben und dann dort die erste RewriteRule gemäß der neuen URL angepasst werden:

RewriteRule ^(.*)$ https://(sub.)domain.tld/$1 [L,R=301]

Anschließend muss die URL auch noch in zwei Dateien von Seafile verändert werden, nämlich in ~/seafile/seahub_settings.py

SITE_BASE = 'https://(sub.)domain.tld'
FILE_SERVER_ROOT = 'https://(sub.)domain.tld/seafhttp'

und in ~/ccnet/ccnet.conf

SERVICE_URL = https://(sub.)domain.tld

Nun muss natürlich noch für ein Zertifikat für SSL gesorgt werden.

Um Seafile und Seahub später manuell starten und stoppen zu können, z.B. für ein Update/Upgrade, sollte ihr euch den entsprechenden Port für Seahub merken. Dieser steht aber auch in seafile-ce_uberspace.log. Seahub muss immer mit diesem Port gestartet werden. Dazu ins Verszeichnis ~/seafile/seafile-server-latest wechseln und dann jeweils Seafile und Seahub starten oder stoppen:

./seafile.sh {start|stop|restart}
./seahub.sh {start|stop|restart} port$

Nach der Installation kann Seafile noch weiter über die Datei seahub_settings.py angepasst werden. Dazu mehr im Server Manual.

[Update]

Noch ein Tipp vom Entwickler des Installer-Skripts selbst: Bei der Installation wurde ein Skript angelegt, mit dem Seafile und Seahub noch einfacher (ohne Port-Angabe) gestartet und gestoppt werden kann:

seafile {start|stop|restart}

Danke Alexander für diesen und andere Hinweis!

EZMLM-IDX Mailingliste auf Uberspace einrichten

EZMLM-IDX ist eine Mailinglist-Manager, der bei Uberspace.de schon vorinstalliert ist. Dennoch muss EZMLM-IDX noch über SSH eingerichtet und konfiguriert werden. Dazu hilft die Anleitung im Uberspace Wiki. Es können aber über ezmlm-make so viele verscheiden Einstellungen vorgenommen werden, um die Mailingliste auf die eigenen Anforderungen anzupassen, das zumindest ich etwas den Überblick verloren hatte. Ich habe aber im Internetz einen hilfreichen ezmlm-make Options Generator gefunden, der die Einrichtung sehr erleichtert.

Eine Mailingliste mit Namen listname unter der Domain domain.tld (dann zu erreichen unter listname@domain.tld) wird mit folgendem Befehl angelegt (oder mit den Werten, die der Generator ausgespuckt hat):

[username@server ~]$ ezmlm-make ~/Maillist/'listname' ~/.qmail-'listname' 'listname' 'domain.tld'

Die Mailingliste ist jetzt im Homeverzeichnis unter ~/Maillist/'listname'/ angelegt und kann weiter mit folgenden Kommandos konfiguriert werden (Hier wird auch EZMLM-IDX dazu gebracht mit uns und den Benutzerinnen deutsch zu reden):

[username@server ~]$ ezmlm-make -+ -C /etc/ezmlm/de -aBdfghijlMNOprstuXY ~/Maillist/'listname' ~/.qmail-'listname' 'listname' 'domain.tld'

Mit den nächsten beiden Befehlen wird eine Moderatorin und eine erste Abonnentin für die Mailingliste generiert:

[username@server ~]$ ezmlm-sub ~/Maillist/'listname' mod 'Email-Adresse'
[username@server ~]$ ezmlm-sub ~/Maillist/'listname' 'Email-Adresse'

Standard mäßig ist der Betreff der Mailingliste [Text in Klammern] der Namen der Liste. Gegebenenfalls kann das so geändert werden:

[username@server ~]$ echo '[MyList]' > ~/Maillist/'listname'/prefix/

Abonnentinnen können mit einer leeren Email an listenname-subscribe@domain.tld die Mailingliste abonnieren. Wenn es bereits eine Liste von Abonnentinnen gibt oder von einer anderen Mailingliste umgezogen werden soll, können die Benutzerinnen importiert werden. Dazu wird eine Textdatei angelegt, in der pro Zeile immer nur eine Email-Adresse steht (sonst keine Trennzeichen). Diese Liste kann dann mit diesem Befehl hinzugefügt werden:

[username@server ~]$ ezmlm-sub ~/Maillist/'listname' < 'listmembers'.txt

Danach sind die Email-Adressen der Abonnentinnen unter ~/Maillist/'listname'/subscribers/ in den Dateien mit Namen wie @, [, , ], und A, a, B, b etc. zu finden (nicht wundern, vor jeder Adresse steht dort ein ‚T‘) oder können über folgendes Kommando aufgerufen werden:

[username@server ~]$ ezmlm-list ~/Maillist/'listname'

Viel Spaß beim mailen.

WordPress-Beiträge auf App.net teilen

Jetpack for WordPress bietet auch die Möglichkeit Schaltflächen einzurichten, mit denen über verschiedene Dienste die Inhalte der Beiträge geteilt werden können. App.net ist noch nicht dabei, kann aber sehr einfach nachgerüstet werden.

Über Einstellungen und dann Sharing sind die entsprechenden Jatpack-Einstellungen zu finden. Hier einfach auf Neuen Dienst hinzufügen klicken.

Screenshot sharing app.net

Folgende Parameter im Popup-Fenster eintragen:

App.net
https://alpha.app.net/intent/post?text=%post_title%%20%post_url%
https://cbmainz.de/wp-content/uploads/appdotnet-icon.png

Dann per Drag&Drop die neue Schaltfläche in de Bereich der aktiven Schaltflächen ziehen und alles speichern. Fertig.

[Update]:

Wer einen solchen Button ohne Jetpack realisieren möchte, findet bei Acky eine gute Anleitung.

Dropbox Alternative Seafile auf Uberspace [Alt]

Seafile ist eine Dropbox Alternative die leicht auf dem eigenen Uberspace installiert werden kann.

Ich habe mich vor allem an die Anleitung von Seafile auf Github gehalten: Download and setup seafile server. Folgende Anpassungen müssen allerdings gemacht werden: Die Python Module Simplejson und Imaging müssen nachinstalliert werden, dazu bitte in der Doku von Uberspace zu Python nachschauen und folgende Schritte durchführen:

Um zusätzlich Module von Python 2.7 zu benutzen, müssen erst diese beiden Ordner anlegt werden:

[username@server ~]$ mkdir -p ~/bin ~/lib/python2.7

Anschließend das Modul Simplejson mit easy_install installieren:

[username@server ~]$ easy_install-2.7 simplejson

Um das Imaging Modul zu installieren, bitte dieser Anleitung zu Pil von Uberspace folgen und folgendes im Heimverzeichnis ausführen:

[username@server ~]$ curl --silent http://effbot.org/media/downloads/Imaging-1.1.7.tar.gz | tar -xzf -
[username@server ~]$ cd Imaging-1.1.7
[username@server Imaging-1.1.7]$ perl -pi -e 's|/usr/lib|/usr/lib64|g' setup.py
[username@server Imaging-1.1.7]$ python2.7 setup.py install
...
creating /home/simone/lib/python2.7/PIL.pth
[username@server Imaging-1.1.7]$ cd ..
[username@server ~]$ rm -rf Imaging-1.1.7

Bei der Einrichtung von Seafile müssen auch die Ports so eingerichtet werden, das sie zu den Port-Einstellungen von Uberspace passen. Ich habe daher fünf TCP Ports zwischen 61000 und 65535 vom Support freischalten lassen und diese wie folgt verteilt (ich habe die Ports 62323-62327 zugewiesen bekommen):

  • ccnet port: 62323 (default: 10001)
  • seaf-server port: 62324 (default: 12001)
  • seahub port: 62327 (default: 8000)
  • httpserver port: 62325 (default: 8082)
  • client port: 62326 (default: 13418)
[username@server ~]$ mkdir haiwen
[username@server ~]$ cd haiwen
[username@server ~]$ wget http://seafile.googlecode.com/files/seafile-server_{version}_x86-64.tar.gz
[username@server haiwen]$ tar -xzf seafile-server_{version}_x86-64.tar.gz
[username@server haiwen]$ mkdir installed
[username@server haiwen]$ mv seafile-server_{version}_x86-64.tar.gz installed

Nachdem also die aktuelle Version von Seafile heruntergeladen und im gewünschten Ordner im Homeverzeichnis (hier im Beispiel ~/haiwen) entpackt wurde, kann der Einfachheit halber noch ein symbolischer Link auf den Ordner „seafile-server-{version}“ angelegt werden, ist später einfacher zu merken (z.B. für Start/Restart/Stop von Seafile per Skript).

[username@server haiwen]$ ln -s ./seafile-server-{version} ./seafile-server-latest

Dann das Skript zum Installieren ausführen und dabei die Ports von oben eintragen, alles anderen Parameter habe ich auf Default gelassen:

[username@server haiwen]$ cd seafile-server-latest
[username@server seafile-server-latest]$ ./setup-seafile.sh

Den Port für die interne Kommunikation der einzelnen Module habe ich in ~/haiwen/ccnet/ccnet.conf ebenfalls auf einen anderen Port umgestellt.

[Network]
PORT = 62323
[Client]
PORT = 62326

Dann kann Seafile und Seahub per Skript gestartet werden:

[username@server seafile-server]$ ./seafile.sh start
[username@server seafile-server]$ ./seahub.sh start 62327

Wenn alles gut gegangen ist, läuft Seafile jetzt auf dem Uberspace unter:

http://username.server.uberspace.de:62327/

Was jetzt noch fehlt, sind verschiedene Einstellungen anzupassen, wie zum Beispiel den Emailversand einrichten und ein individuelles Logo anzeigen lassen. Auch dazu gibt es eine Anleitung.

[Update 02.09.2013]:

Bis zur aktuellen Version 1.8.3. ist es nicht möglich, mehreren Instanzen von Seafile auf einem Server zu betreiben. Jonas von Uberspace schrieb dazu:

Wie’s aussieht, „erlaubt“ Seafile nur eine einzige Instanz von sich auf einem Server, und verweigert bei weiteren den Start. Damit disqualifiziert es sich natürlich eigentlich direkt für den Einsatz auf Shared Hosting, wo es eigentlich normal sein sollte, dass mehrere User die gleiche Applikation in mehreren Instanzen betreiben.

Der Support von Seafile versicherte mir heute allerdings, sich des Problems anzunehmen und es bald zu lösen:

Currently we check existing seafile instance in seafile.sh/seahub.sh scripts by processor name. We will change it and this should solve the problem. We can publish it in the next minor release.

Hoffen wir mal, dass das dann auch so funktioniert.

[Update 18.09.2013]:

Mit dem Update 1.8.5 funktioniert jetzt auch das Betreiben mehrerer Seafile-Instanzen auf einem Server.

[Update 28.04.2014]:

Für Menschen, die lieber MySQL und HTTPS mit Apache für Seafile einsetzen, hat David Widmann eine Anleitung geschrieben. Dann ist Seafile auch über eine normale URL ohne Port erreichbar:

https://username.server.uberspace.de

Ich selbst werde weiterhin SQLite benutzen, aber auf Apache als httpserver umsteigen, dann läuft seahub im Hintergrund im fastcgi Mode (nähre Infos dazu). Temporär habe ich mal eine Anleitung zum umkonfigurieren hier abgelegt: Seafile auf Apache umkonfigurieren, bis ich diese Anleitung umgeschrieben habe.

[Update 23.06.2015]:

Es hat sich viel getan bei Seafile. Deswegen gibt es einen neuen Blogbeitrag dazu.

Hallo Welt!

Willkommen auf meinem neuen Blog. Hier werde ich von Zeit zu Zeit Dinge dokumentieren, die mir über den Mauszeiger gelaufen sind und die ich dann versucht habe, für mich persönlich umzusetzen.

Ich schreibe sie hier auf, um sie selbst nicht zu vergessen.