Wer wie ich mal einen Weave Sync Server unter Debian aufsetzen will, um einen eigenen Server zu haben mit dem das neue Firefox Sync Addon synchronisiert, dem wird die folgende Anleitung helfen.
Voraussetzung für die Anleitung ist ein installierter Apache2 mit mindestens php 5.1, php-json, php-mysql und eine MySQL Installation.
Zunächst hab ich in /var/www ein neues Verzeichnis erstellt und die Server (Sync und Reg Server heruntergeladen, beides entpackt und die Ordner umbenannt:
| 1 | mkdir weave && cd weave |
| 2 | wget http://hg.mozilla.org/services/sync-server/archive/tip.tar.gz |
| 3 | wget http://hg.mozilla.org/services/reg-server/archive/tip.tar.gz |
| 4 | tar xfz tip.tar.gz |
| 5 | tar xfz tip.tar.gz.1 |
| 6 | mv reg-server-828798f908a0/ reg-server |
| 7 | mv sync-server-55d5049f6eeb/ sync-server |
Als nächstes hab ich erstmal einen neuen Vhost für den Apache angelegt und entsprechend der beiden Anleitungen (Sync und Reg) konfiguriert. Die sieht nun so aus:
| 01 | <VirtualHost myserver.de:80> |
| 02 | ServerName myserver.de |
| 03 | Redirect / https://myserver.de |
| 04 | </VirtualHost> |
| 05 | |
| 06 | <VirtualHost myserver.de:443> |
| 07 | SSLEngine On |
| 08 | SSLCertificateFile /etc/apache2/ssl/server-cert.pem |
| 09 | SSLCertificateKeyFile /etc/apache2/ssl/server-key.pem |
| 10 | ServerAdmin webmaster@myserver.de |
| 11 | ServerName myserver.de |
| 12 | DocumentRoot /var/www/weave |
| 13 | Alias /1.0 /var/www/weave/sync-server/1.0/index.php |
| 14 | Alias /user/1.0 /var/www/weave/reg-server/1.0/index.php |
| 15 | Alias /user/1 /var/www/weave/reg-server/1.0/index.php |
| 16 | Alias /misc/1.0/captcha_html /var/www/weave/reg-server/1.0/captcha.php |
| 17 | Alias /misc/1/captcha_html /var/www/weave/reg-server/1.0/captcha.php |
| 18 | Alias /weave-registration-static /var/www/weave/reg-server/1.0/static |
| 19 | Alias /weave-password-reset /var/www/weave/reg-server/1.0/forgot_password.php |
| 20 | CustomLog /var/log/apache2/weave/access.log combined |
| 21 | ErrorLog /var/log/apache2/weave/error.log |
| 22 | DirectoryIndex index.php index.html index.htm |
| 23 | ServerSignature Off |
| 24 | <Directory "/var/www/weave/"> |
| 25 | Options Indexes FollowSymLinks |
| 26 | AllowOverride none |
| 27 | Order allow,deny |
| 28 | Allow from all |
| 29 | </Directory> |
| 30 | </VirtualHost> |
Anschließend muss eine neue Datenbank erstellt werden. Auf dieser muss dann der folgende SQL-Code ausgeführt werden, der die Tabellen erstellt:
| 01 | CREATE TABLE `collections` ( |
| 02 | `userid` INT(11) NOT NULL, |
| 03 | `collectionid` SMALLINT(6) NOT NULL, |
| 04 | `name` VARCHAR(32) NOT NULL, |
| 05 | PRIMARY KEY (`userid`,`collectionid`), |
| 06 | KEY `nameindex` (`userid`,`name`) |
| 07 | ) ENGINE=InnoDB; |
| 08 | |
| 09 | CREATE TABLE `wbo` ( |
| 10 | `username` INT(11) NOT NULL, |
| 11 | `collection` SMALLINT(6) NOT NULL DEFAULT '0', |
| 12 | `id` varbinary(64) NOT NULL DEFAULT '', |
| 13 | `parentid` varbinary(64) DEFAULT NULL, |
| 14 | `predecessorid` varbinary(64) DEFAULT NULL, |
| 15 | `sortindex` INT(11) DEFAULT NULL, |
| 16 | `modified` BIGINT(20) DEFAULT NULL, |
| 17 | `payload` longtext, |
| 18 | `payload_size` INT(11) DEFAULT NULL, |
| 19 | PRIMARY KEY (`username`,`collection`,`id`), |
| 20 | KEY `parentindex` (`username`,`collection`,`parentid`), |
| 21 | KEY `modified` (`username`,`collection`,`modified`), |
| 22 | KEY `weightindex` (`username`,`collection`,`sortindex`), |
| 23 | KEY `predecessorindex` (`username`,`collection`,`predecessorid`), |
| 24 | KEY `size_index` (`username`,`payload_size`) |
| 25 | ) ENGINE=InnoDB; |
| 26 | |
| 27 | CREATE TABLE users ( |
| 28 | id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, |
| 29 | username VARCHAR(32), |
| 30 | password_hash varbinary(128), |
| 31 | email varbinary(64), |
| 32 | STATUS tinyint(4) DEFAULT '1', |
| 33 | alert text, |
| 34 | reset varbinary(32) DEFAULT NULL |
| 35 | ) engine=InnoDB; |
Schließlich müssen die beiden Server nur noch eingerichtet werden. Zunächst den Sync Server:
| 1 | cd /var/www/weave/sync-server/1.0/ |
| 2 | cp default_constants.php.dist default_constants.php |
Anschließend wird die weave_constants.php bearbeitet. Direkt in der Zeile nach <?php werden die folgenden Zeilen eingefügt, die auf die eigenen Bedürfnisse angepasst werden müssen:
| 01 | define('WEAVE_AUTH_ENGINE', 'mysql'); |
| 02 | define('WEAVE_MYSQL_AUTH_HOST', '<db host>'); |
| 03 | define('WEAVE_MYSQL_AUTH_DB', '<db name>'); |
| 04 | define('WEAVE_MYSQL_AUTH_USER', '<db username>'); |
| 05 | define('WEAVE_MYSQL_AUTH_PASS', '<db password>'); |
| 06 | define('WEAVE_STORAGE_ENGINE', 'mysql'); |
| 07 | define('WEAVE_MYSQL_STORE_READ_HOST', '<db host>'); |
| 08 | define('WEAVE_MYSQL_STORE_READ_DB', '<db name>'); |
| 09 | define('WEAVE_MYSQL_STORE_READ_USER', '<db username>'); |
| 10 | define('WEAVE_MYSQL_STORE_READ_PASS', '<db password>'); |
| 11 | |
| 12 | define('WEAVE_MYSQL_STORE_WRITE_HOST', WEAVE_MYSQL_STORE_READ_HOST); |
| 13 | define('WEAVE_MYSQL_STORE_WRITE_DB', WEAVE_MYSQL_STORE_READ_DB); |
| 14 | define('WEAVE_MYSQL_STORE_WRITE_USER', WEAVE_MYSQL_STORE_READ_USER); |
| 15 | define('WEAVE_MYSQL_STORE_WRITE_PASS', WEAVE_MYSQL_STORE_READ_PASS); |
Nachdem nun der Sync Server konfiguriert ist, muss der Reg Server noch konfiguriert werden.
| 1 | cd /var/www/weave/reg-server/1.0/ |
| 2 | cp weave_user_constants.php.dist weave_user_constants.php |
Die kopierte weave_user_constants.php muss nun noch mit folgenden anzupassenden Zeilen nach dem Lizenzblock ergänzt werden:
| 1 | # ***** END LICENSE BLOCK ***** |
| 2 | define('WEAVE_AUTH_ENGINE', 'mysql'); |
| 3 | define('WEAVE_MYSQL_AUTH_HOST', '<db host>'); |
| 4 | define('WEAVE_MYSQL_AUTH_DB', '<db name>'); |
| 5 | define('WEAVE_MYSQL_AUTH_USER', '<db username>'); |
| 6 | define('WEAVE_MYSQL_AUTH_PASS', '<db password>'); |
| 7 | define('WEAVE_SHA_SALT', '<hier einen langen, zufälligen salt eingeben; wichtig für sha256>'); |
| 8 | |
Das war es eigentlich schon. Wenn ihr beim Einrichten des Plugins nun eure eigene URL https://myserver.de eingebt, solltet ihr euch einen Account erstellen können und mit dem Server synchronisieren können. Ich hatte leider noch ein Problem mit dem Sync Server.
Ich habe auf meinem Server nur die deutsche Locale installiert:
| 1 | strubbl:~$ locale -a |
| 2 | C |
| 3 | de_DE.utf8 |
| 4 | POSIX |
Dadurch gab es einen Fehler. Dieser wurde in der Datei /var/www/sync-server/1.0/weave_user/mysql.php in Zeile 84 geworfen. Die Zeile 83 lautet:
| 1 | if (setlocale(LC_CTYPE, "UTF8", "en_US.UTF-8") == false) |
Wenn man die Locale
en_US nicht installiert hat, einfach durch die ersetzen, die man hat. Bei mir ist das dann
de_DE und die Zeile sieht wie folgt aus:
| 1 | if (setlocale(LC_CTYPE, "UTF8", "de_DE.UTF-8") == false) |
Wenn es endlich alles läuft, wird man auf die Webseite geleitet: First Run.
Richtet man einen zweiten PC mit dem Sync Account ein, wird man dann auf die Webseite geleitet: Second Run.
***UPDATE***
Der Bjoern hat das Tutorial vor kurzem gecheckt und einige kleine Anmerkungen gemacht. Ich hab z.Z. keinen eigenen Weave Server mehr am Laufen.
Geht das auch mit LDAP anbindung
Also ausprobiert habe ich das natürlich nicht. Es steht auch nirgends, dass es mit LDAP geht, aber der Quellcode verrät:
elseif (WEAVE_AUTH_ENGINE == 'mozilla'){
if (!defined('WEAVE_LDAP_AUTH_HOST')) { define('WEAVE_LDAP_AUTH_HOST', 'localhost'); }
if (!defined('WEAVE_LDAP_AUTH_USER')) { define('WEAVE_LDAP_AUTH_USER', 'uid=binduser,ou=logins'); }
if (!defined('WEAVE_LDAP_AUTH_PASS')) { define('WEAVE_LDAP_AUTH_PASS', 'password'); }
if (!defined('WEAVE_LDAP_AUTH_DN')) { define('WEAVE_LDAP_AUTH_DN', 'dc='); }
if (!defined('WEAVE_LDAP_AUTH_USER_PARAM_NAME')) { define('WEAVE_LDAP_AUTH_USER_PARAM_NAME', 'uid'); }
}
Also könnte ich mir vorstellen, dass das auch mit LDAP klappen könnte.
Hallo.
Ich hab gerade Firefox Home 1.0.3 auf meinem iPhone installiert. Leider funktioniert das nicht. Ich bekomme den Fehler, dass der Benutzer nicht gefunden wird. Ich benutzte den Namen aber auf 4 PC mit Firefox ohne Probleme.
Ich bekomme nur einen Zugriff im Log angezeigt:
aaa.bbb.ccc.ddd – USER [11/Oct/2010:17:12:41 +0200] “GET /user/1.0/USERNAME/node/weave HTTP/1.1″ 404 33 “-” “FirefoxHome/1.0.3 CFNetwork/485.10.2 Darwin/10.3.1″
Wie man sieht bekomme ich ein 404. Was fehlt? Oder ist das sogar richtig an der Stelle?
Gruß,
Thomas
Was passiert denn wenn du diesen Aufruf mal per Browser vom PC startest? Auch ein 404?
Ansonsten, wenn du kannst, schmeiß auf deinem Router mal wireshark an während du mit dem Eierphone das ansurfst und einmal mit PC.
Hallo!
Sorry, war im Urlaub…
Wenn ich das die URL mit dem PC aufrufe, passiert das gleiche. Auch ein 404.
Wireshark hab ich jetzt noch nicht probiert. Das wird komplizierter. Da muss ich mir erstmal was ausdenken…
Allerdings glaube ich nicht, dass da mehr Infos bei rauskommen, da ich der Aufruf ja im Apache-Log auf dem Server steht. Oder welche weiteren Infos erwartest du zu sehen?!
Gruß,
Thomas
Ich hab mal in meine access.logs gesehen und da stehen auch nur 404 für derartige Aufrufe wie deinen drin. Scheint also “normal” zu sein.
Ich hab leider kein Iphone zum Testen zur Hand. Und ich habe meinen Weave-Server im Moment auch nicht mehr am Laufen. So fehlen mir im Moment auhc die Ideen, woran es liegen könnte.
Zur Fehlersuche:
Im Firefox via about:config
* Rechtsklick – Neu – Boolean
* services.sync.log.appender.debugLog.enabled anlegen
(/!\ Groß und Kleinschreibung)
* auf true setzen
* Log via: about:sync-log abrufen
Vielen Dank für Dein Tutorial.
Für alle, die wie ich dennoch Probleme hatten, weil sie suexec und php als CGI ausführen. Die folgenden Zeilen in der VHOST helfen
RewriteEngine on
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
Ohne diese wird zwar immer ein Benutzer angelegt, aber man kann nicht syncen.
Außerdem:
Man brauch den SALT nicht. Wenn ich den Code recht verstehe, so ist der SALT nur für alte Benutzer. Richtet man den Server nun ein (mindestens aber schon seit Version 1.3), so wird der SALT in der Konfigurationsdatei nicht benutzt, sondern für jeden Benutzer ein Random-Salt erstellt.
Das muss auch schon bei Dir gewesen sein, da Du ansonsten in beide Settings den SALT hättest eintragen müssen.
Greets
Danke für deinen Kommentar.
"Alias /1.0 /var/www/weave/sync-server/1.0/index.php"Die aktuelle Version des sync-servers ist “1.1″. Leute die FF4 verwenden sollten die obige Zeile in
"Alias /1.0 /var/www/weave/sync-server/1.1/index.php"
abändern. FF5 user müssen
"Alias /1.1 /var/www/weave/sync-server/1.1/index.php"
verwenden.
Danke für das Update.
Hallo,
würde gerne dem HowTo nachgehen, ist das noch aktuell?
Die beiden Links scheinen nicht mehr zu funktionieren:
Danke dir / euch!
Die Anleitung ist vom 1. Juli 2010. Daher würde ich sagen: nicht mehr aktuell.
Habe im Moment auch keinen eigenen Weave bei mir zu laufen.