FireFox Sync Server

Thursday, November 30. 2017

After years of Chromium as my default browser I've moved to give FF a new go after the release of v57 aka Quantum. Mozilla is still more trustworthy than Google and hey, I prefered Netscape over Mosaic once. Part of the shift was trying out FireFox sync. Since I have not much trust in the cloud unless it is my own server this meant installing Firefox Syncserver on my debian server.

I more or less followed the howto from sathya.de/blog/how-tos/setup-your-own-firefox-1-5-sync-server-on-debian-with-apache2-and-mysql/ , there are links to the mozilla docu included on his site. The basic steps are easy to take, with dns.he.net and letsencrypt with dehydrated setup of a new subdomain with a valid SSL-certificate has gone down to a matter of minutes.

Git clone the server, create a db and db-user, config the virtualhost in the web servers configuration, edit the default syncserver.ini, restart the webserver and then tell the clients in about:config which syncserver to use. Pretty basic, but it still has some potential for confusion and took me two runs to get it running.

the supplied syncserver.ini has an entry   public_url = http://localhost:5000/   which appears to suggest that ports should be defined in the server config, client config. But this is not so, in a production environment with https and a web server non ports are given.

I saw 404 errors in the error_log which stemmed from an error with the client config, I had erased the token/ - ppart of the uri. And I experienced a multitude of 500 server errors with traces in the error_log pointing at a line between Public_url = ... and allow_new_users = ...
The first complained the given secret exceeded the maximum length, while it had been created like the comments advise. Later I saw errors from parsing the sqluri. Many visual checks did not find a problem.

What helped me was a set of voodoo measures including: manually retyping the sqluri line  and  inserting a 'dummy = stupid' line supposed to catch any non-visible carried syntactical elements. Other possible sources of problems here include permissions issues and missing execution flag on the wsgi file.

And then, suddenly, it worked.

 

 I used to store my calendars, contacts, tasks at Google and sync them from there to my android phone and thunderbird/lightning on different machines running linux or win*. For a number of reasons I decided to deGoogle my data habbits and have migrated to an ownCloud server.

Google contact has a rather easy to use way of grouping contacts, actually it's more like tagging the contacts to belong to a group. Android supports those groups out of the box. Thunderbird, with the help of an addon, syncs those contacts and automagically has a mail list for each of the groups defined in Google contacts. Ease of use and clarity for data handling, each contact has the info about which mail distribution list will apply directly as a property with itself. I like that.

OwnCloud, at least with the last few versions of it's 5er, does it more or less as well as Google does. The interface may not be that refined and handy, but the structures and functionality is there, which I appreciate a lot. 
Syncing to android requires 2 apps (cardDav-sync and calDAV-sync) costing few € each and then everything works nicely like it ever did. Fun.

Syncing to Thunderbird's addressbook needs an addon which, unfortunately, is crippled in the way it handles mail lists. Categories are synced and recognized, I can even edit them conveniently. But there is no automatic and no decent manual way to build a mail list based on the categories of the synced contacts. There is a modal window that expects me to type email addresse in order to add them to the list. Type. No filter select, or at least drag and drop. Type. 

This is the moment that I start to check Kontact again. Not the first time, KDE on arch is my main desktop for a year and it was KDE on debian before (less fun). 
Connecting Kontact to ownCloud is very easy, actually comfortable. Syncing the contacts works smooth and fast, including the contact photos. KAddressbook shows me a flat list of names but there is a context menue which allows me to add fields for display and sorting. My pet property, Categories, is not included though.

Double click on a contact entry opens a editor dialog with a field for the categories, comfortable to select from a list of all existing values, if I decide to create a new one it is synced to ownCloud minutes later. Very nice indeed.

But try to create a group and populate it and there is a time tunnel back into the computational stone ages! There is a New Group dialog which is modal and no drag & drop is possible. Select a number of contacts, New Group -> the very same dialog, no 'selection awareness' and adding the selected entries to the new group. No!
The dialog expects me to type the name, at least offering an input-aware selection as I start to type. Seriously no fun!

So:
- is there any known way to automatically sync groups according to category settings?
- or at least, any known way to populate groups via drag&drop of selected entries?
- or, at the very least, any docu, examples, helpful sites on how to get and set the relevant data, methods etc to script my own way with qdbus-qt4 ?
I can 
qdbus-qt4 org.kde.kaddressbook /kaddressbook/MainWindow_1 org.kde.KMainWindow.activateAction akonadi_contact_group_create 
but i just opens the modal editor window and thus gets me nowhere.

 An sich ja kein Vorhaben, das so ausgefallen oder umfangreich klingt, dass man damit lange zubringen müsste: so wie die Termindaten - als eine Reihe von thematisch sortierten Unterkalender zu einem Google account gehalten - auf dem Android SmartPhone wie auf dem Desktop (Thunderbird/Lightning) synchronisiert und aktuell zur Verfügung stehen, so will ich das auch für die Aufgaben. Und ich hätte für Aufgaben gerne die Möglichkeit, sie hierarchisch zuzuordnen, also: sub tasks.

KOrganizer hat sub Tasks und die Oberfläche wäre nicht ganz schlecht, aber die Einbindung von Google Kalendern und deren Synchronisation war so hakelig und letztlich unzuverlässig, dass ich KOrganizer genervt nur mit einer Minifunktion betraut und ansonsten von der Liste gestrichen habe.

Bleibe ich also bei ThunderBird/Lightning, muss ich den Wunsch nach sub-tasks schon mal drangeben, lightning hat das einfach nicht zu bieten. Aber selbst dann ist kein einfacher Weg zu Synchronisation in Sicht. In Lightning hat der "Provider for Google Calendar" nur den knappen Hinweis parat, das gTasks erst in einer späteren Version unterstützt würden, derzeit gebe es Probleme. Auch einen Google Kalender via caldav anzubinden hilft nicht: Lightning akzeptiert Google Kalender nicht als Aufgabenspeicher, sondern nur in einen lokalen Kalender. 

Man findet add-ons, um lightning an exchange-server oder kolab, toodledo oder zimbra anzuhängen, aber alle angebotenen Wege scheinen auf die Installation irgendeiner Groupware-Server-Soft oder einen kostenpflichtigen account hinauszulaufen. Ich war schon auf dem Wege, mein eigene Tasklistenverwaltung und Sync zu schreiben, als ich in den Mozilla-Foren auf auf einen Thread zum Thema stiess. Und darin auf den Hinweis auf memotoo

memotoo ist auch wieder ein kommerzieller Service mit einem kostenlosen Basisangebot, 50 Tasks kriegt man gratis, danach kostet es (12€/Jahr). aber dafuer haben sie schon wirklich eine eindrucksvolle Liste von Synchronisations-Optionen. Ein französisches Angebot (was man der deutschen wie der englischen Version der Seite etwas ansieht), kann https:// wenn man es aufruft, ist in IPv6 verfügbar. Synct Adressbuch, Tasks, Notizen, Mail, Kalender, Bookmarks, sonstige Dateien - probiert habe ich erstmal nur die Tasks. Klick auf Synchronize my tasks und da sind 35 Optionen parat, klick auf Google Tasks, account info, authorisieren, Optionen zur Synchronisierungsrichtung und schon stehen die eingetragenen Aufgaben da. Klick auf Sunbird (wie gut, dass ich mir die diversen Pseudonyme dieses Programms alle merken kann...) klare Installationsanweisung, pling stehen die Aufgaben in Lightning da. Details gilt es auszutesten, der erste Eindruck gefällt.

 

(Page 1 of 1, totaling 3 entries)