Warning: Constant ABSPATH already defined in /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-config.php on line 21 Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-config.php:21) in /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-includes/rest-api/class-wp-rest-server.php on line 1794 Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-config.php:21) in /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-includes/rest-api/class-wp-rest-server.php on line 1794 Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-config.php:21) in /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-includes/rest-api/class-wp-rest-server.php on line 1794 Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-config.php:21) in /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-includes/rest-api/class-wp-rest-server.php on line 1794 Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-config.php:21) in /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-includes/rest-api/class-wp-rest-server.php on line 1794 Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-config.php:21) in /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-includes/rest-api/class-wp-rest-server.php on line 1794 Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-config.php:21) in /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-includes/rest-api/class-wp-rest-server.php on line 1794 Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-config.php:21) in /home/httpd/vhosts/supercloud.ch/apfelschwein.net/wp-includes/rest-api/class-wp-rest-server.php on line 1794 {"id":263,"date":"2011-11-27T18:24:07","date_gmt":"2011-11-27T16:24:07","guid":{"rendered":"http:\/\/www.apfelschwein.net\/?p=263"},"modified":"2012-08-27T00:27:15","modified_gmt":"2012-08-26T22:27:15","slug":"firefox-sync-now-mit-eigenem-apache-server","status":"publish","type":"post","link":"https:\/\/www.apfelschwein.net\/firefox-sync-now-mit-eigenem-apache-server.html","title":{"rendered":"Firefox Sync Now mit eigenem Apache Server"},"content":{"rendered":"

Endlich die Bookmarks auf allen Firefox Browser haben, die man benutzt. Das ist seit Firefox 4 m\u00f6glich.<\/p>\n

Bis anhin hat mich immer davon abgehalten, dass meine Daten auf einem fremden Server liegen und ich nicht weiss, was damit passiert (auch wenn sie verschl\u00fcsselt sind). Irgendwie bin ich vor wenigen Wochen \u00fcber die Mozilla Seite „Run your own Sync Server<\/a>“ gestolpert, dass dieses Problem l\u00f6st.<\/p>\n

Mittlerweile habe ich den Sync Server auf einer Debian Squeeze Box installiert und er funktioniert. Gemacht habe ich das so:<\/p>\n

Die n\u00f6tigen Pakete installieren:<\/p>\n

$ apt-get install python-dev mercurial sqlite3 python-virtualenv apache2-mpm-prefork libapache2-mod-wsgi make
\n<\/code><\/p><\/blockquote>\n

Benutzer ffsync erstellen:<\/p>\n

$ adduser --group --system --home \/usr\/local\/firefox-sync-server --disabled-password ffsync<\/code><\/p><\/blockquote>\n

Den Apache User zu der Gruppe ffsync hinzuf\u00fcgen:<\/p>\n

$ adduser www-data ffsync<\/code><\/p><\/blockquote>\n

Den User wechseln:<\/p>\n

$ su - ffsync<\/code><\/p><\/blockquote>\n

Die Source Files herunterladen:<\/p>\n

$ hg clone https:\/\/hg.mozilla.org\/services\/server-full<\/code><\/p><\/blockquote>\n

Die Ordner data und tmp erstellen<\/p>\n

$ mkdir data tmp<\/code><\/p><\/blockquote>\n

Berechtigungen \u00e4ndern<\/p>\n

$ chmod 770 data tmp<\/code><\/p><\/blockquote>\n

Den Sync Server kompilieren<\/p>\n

$ cd server-full<\/code><\/p>\n

$ make build<\/code><\/p><\/blockquote>\n

Nun m\u00fcssen noch einige Config Files angepasst werden. Die Pfade zeigen zumeist auf \/tmp, was etwas ungeignet ist, um Benutzerdaten zu speichern.<\/p>\n

$ vi sync.wsgi<\/code>
\n[..]<\/code><\/p>\n

os.environ[‚PYTHON_EGG_CACHE‘] = ‚\/usr\/local\/firefox-sync-server\/tmp\/python-eggs‘<\/p>\n

[..]<\/p><\/blockquote>\n

$ vi development.ini<\/code>
\n
\n[..]<\/code><\/p>\n

[handler_syncserver_errors]
\nclass = handlers.RotatingFileHandler
\nargs = (‚\/usr\/local\/firefox-sync-server\/tmp\/sync-error.log‘,)
\n[..]<\/p><\/blockquote>\n

$ vi etc\/sync.conf<\/code>
\n
\n[..]<\/code><\/p>\n

[storage]
\nbackend = syncstorage.storage.sql.SQLStorage
\nsqluri = sqlite:\/\/\/\/usr\/local\/firefox-sync-server\/data\/usersettings.db
\n[..]<\/p>\n

[auth]
\nbackend = services.auth.sql.SQLAuth
\nsqluri = sqlite:\/\/\/\/usr\/local\/firefox-sync-server\/data\/usersettings.db<\/p>\n

[..]<\/p>\n

fallback_node = http:\/\/sync.mytestdomain.com\/
\n[..]<\/p><\/blockquote>\n

Mit exit verlassen wir die User Shell und sind wieder root. Wir \u00e4ndern die Login Shell von ffsync auf \/bin\/false.<\/p>\n

$ usermod -s \/bin\/false ffsync<\/code><\/p><\/blockquote>\n

Das wsgi Modul aktivieren, falls das noch nicht automatisch passiert sein sollte:<\/p>\n

$ a2enmod wsgi<\/code><\/p><\/blockquote>\n

Und einen neuen Apache Virtual Host erstellen:<\/p>\n

$ vi \/etc\/apache2\/sites-available\/firefox-sync<\/code>
\n
\n<VirtualHost *:80>
\nServerName sync.mytestdomain.com
\nServerAdmin webmaster@mytestdomain.com<\/code><\/p>\n

DocumentRoot \/usr\/local\/firefox-sync-server\/server-full<\/p>\n

CustomLog ${APACHE_LOG_DIR}\/firefox-sync-server_access.log combined
\nErrorLog ${APACHE_LOG_DIR}\/firefox-sync-server_error.log<\/p>\n

<Directory \/usr\/local\/firefox-sync-server\/server-full>
\nOrder deny,allow
\nAllow from all
\n<\/Directory><\/p>\n

WSGIProcessGroup ffsync
\nWSGIDaemonProcess ffsync user=ffsync group=ffsync processes=2 threads=25
\nWSGIPassAuthorization On
\nWSGIScriptAlias \/ \/usr\/local\/firefox-sync-server\/server-full\/sync.wsgi
\n<\/VirtualHost><\/p><\/blockquote>\n

Den Virtual Host aktivieren:<\/p>\n

$ cd \/etc\/apache2\/sites-enabled<\/code><\/p>\n

$ ln -s ..\/sites-available\/firefox-sync .<\/code><\/p><\/blockquote>\n

Apache neu starten:<\/p>\n

$ apachectl configtest && \/etc\/init.d\/apache restart<\/code><\/p><\/blockquote>\n

Und nun kann man im Firefox \u00fcber Tools > Sync Now seinen Account einrichten.<\/p>\n

Was ich dann noch machen werde, ist den Dienst nur verschl\u00fcsselt (HTTPS) anzubieten. Das d\u00fcrfte keine Hexerei mehr sein.<\/p>\n","protected":false},"excerpt":{"rendered":"

Endlich die Bookmarks auf allen Firefox Browser haben, die man benutzt. Das ist seit Firefox 4 m\u00f6glich. Bis anhin hat mich immer davon abgehalten, dass meine Daten auf einem fremden Server liegen und ich nicht weiss, was damit passiert (auch wenn sie verschl\u00fcsselt sind). Irgendwie bin ich vor wenigen Wochen \u00fcber die Mozilla Seite „Run […]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/www.apfelschwein.net\/wp-json\/wp\/v2\/posts\/263"}],"collection":[{"href":"https:\/\/www.apfelschwein.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.apfelschwein.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.apfelschwein.net\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.apfelschwein.net\/wp-json\/wp\/v2\/comments?post=263"}],"version-history":[{"count":15,"href":"https:\/\/www.apfelschwein.net\/wp-json\/wp\/v2\/posts\/263\/revisions"}],"predecessor-version":[{"id":300,"href":"https:\/\/www.apfelschwein.net\/wp-json\/wp\/v2\/posts\/263\/revisions\/300"}],"wp:attachment":[{"href":"https:\/\/www.apfelschwein.net\/wp-json\/wp\/v2\/media?parent=263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.apfelschwein.net\/wp-json\/wp\/v2\/categories?post=263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.apfelschwein.net\/wp-json\/wp\/v2\/tags?post=263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}