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.

 

Debian 9.2

Apache/2.4.25 (Debian)
Nextcloud 12.0.3
 
https://github.com/husisusi/officeonlin-install.sh/blob/master/README.md
https://github.com/husisusi/officeonlin-install.sh/issues/135
 
mkdir a folder for the script, clone or download the .zip
open officeonline-install.cfg with an editor and adapt the POCO parameters like ExaconAT shared it in the issue 135 (link above)
 
let the script run (started it w/o any parameters). It took about 80 min on my box.
I had to restart the script once because it complained over an inconsistency in /etc/group which needed to be fixed first. After restart the script managed to resume where it had stopped before.
 
created a subdomain for the lool (LibreOffice OnLine) to run in in DNS, a valid certificate for https, a virtual host config to tell apache how to proxy. Check that Apache has the required modules enabled:
proxy_wstunnel proxy proxy_http ssl
 
For the latter I used the example Nextcloud recommends in https://nextcloud.com/collaboraonline/ and this was a source of problems later. It took me hours of try and error & recherche to learn that all the ProxyPassReverse lines need to have a trailing slash at the end of the right hand argument. The relevant bit of the config I use is:
 
# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode

# Container uses a unique non-signed certificate
SSLProxyEngine On
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off

# keep the host
ProxyPreserveHost On

# static html, js, images, etc. served from loolwsd
# loleaflet is the client part of LibreOffice Online
ProxyPass           /loleaflet https://127.0.0.1:9980/loleaflet retry=0
ProxyPassReverse    /loleaflet https://127.0.0.1:9980/loleaflet/

# WOPI discovery URL
ProxyPass           /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0
ProxyPassReverse    /hosting/discovery https://127.0.0.1:9980/hosting/discovery/

# Main websocket
ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon

# Admin Console websocket
ProxyPass   /lool/adminws wss://127.0.0.1:9980/lool/adminws

# Download as, Fullscreen presentation and Image upload operations
ProxyPass           /lool https://127.0.0.1:9980/lool
ProxyPassReverse    /lool https://127.0.0.1:9980/lool/
 
The script creates a self signed certificate for lool in /etc/loolwsd
This is not helpful when things do not work at once because chrome and firefox are so very strict against self signed certs and any direct tests of the lool subdomain and the virtual host there are hindered. I got around this by changing the path to the certificate (cert, ca-chain privkey) to point at my valid cert by edit in /opt/online/loolwsd.xml. An increased log level here and file enable="true" are other useful settings here. 
 
Things look fine when https://lool.domain.tld:9980 results in an empty page with ok and https://lool.domain.tld:9980/hosting/discovery returns an xml of wopi discovery. If the latter gives a 500 then the proxy config may be the reason.
 
In nextcloud admin Collabora Online the entry is https://lool.domain.tld:9980 - during my recherche I found several discussions with recommendations to not include the port, but this only adds another error.
 
Sources of error messages included nextcloud admin logging (connection refused as long as the proxying doesnt work), /var/log/loolwsd.log (needs log level increased and file enabled) and of course the messages of systemctl status  loolwsd and systemctl status apache2
 
 
 

Mit dem jüngsten Update auf Chromium 57 funktionierten alle meine Zertifikate nicht mehr. Wosign und Startcom waren ja vor einer Weile in Ungnade gefallen und neu ausgegebene Zertifikate dieser Certification Authority (eigentlich ist es nur eine) wurden nicht mehr anerkannt, aber mit Version 57 hat Chromium/Chrome dies stillschweigend weiter eingeschränkt: jetzt sind auch ältere certs betroffen, wenn die Site nicht eine ganz Grosse ist und in Alexa top 1 Mio gelistet wird.

Könnte man sich darüber aufregen, hilft aber nicht. Die billigsten kommerziellen Zertifikate kosten 8 USD/Jahr und kommen von Symantec, was auch nicht gerade sehr vertrauenswürdig klingt.

Bleibt Let's encrypt. Das hatte ich bislang gemieden, weil die Laufzeit mit 90 Tagen zu kurz ist, um manuell Zertifikate anzufordern, der Client aber etwas monstroes daherkommt, zig dependencies hat, den Server selbst konfigurieren möchte und was nicht. Und es eilte ja nicht so sehr - jetzt aber.

Nach etwas Recherche fand ich mir einen schlanken bash-Client und bin zu meiner Verwunderung damit recht zügig zum Ziel gekommen.

- download von https://github.com/lukas2511/dehydrated/archive/master.zip und entpacken nach /usr/local/bin 
- in /etc/apache2/conf-available eine datei dehydrated.conf anlegen mit
Alias /.well-known/acme-challenge /var/www/dehydrated
<Directory /var/www/dehydrated>
       Options None
       AllowOverride None

       # Apache 2.4
       <IfModule mod_authz_core.c>
               Require all granted
       </IfModule>
</Directory>
und diese nach /etc/apache2/conf-enabled symlinken
- in /var/www ein Verzeichnis dehydrated anlegen
- apache restarten
- in /etc/dehydrated config und domains.txt aus dem docs - folder des entzippten Codes einkopieren, anpassen, dabei anfangs die staging-URL eintragen
- im Programmordner mit ./dehydrated -c  script aufrufen, ggf. Fehler korrigieren. Wenn es durchläuft, die staging-Urls auskommentieren und die certs bauen.
- in /etc/apache2/sites-available die conf der vhots so anpassen, dass die neuen certs verwandt werden
       SSLCertificateFile      /etc/dehydrated/certs/beispiel.de/cert.pem
       SSLCertificateKeyFile   /etc/dehydrated/certs/beispiel.de/privkey.pem
       SSLCertificateChainFile /etc/dehydrated/certs/beispiel.de/chain.pem

-apache restarten und fertig. 

Cool, jetzt noch ein cron job, der das mit langem Abstand immer mal ausführt (und veraltende Zertifikate erneuert) und man kann die Sache vergessen.

 

 Zum Labeldrucker ql-710w (und einigen anderen) gibt Brother ein Kommandozeilentool,
mit dem man Custom pagesizes, also eigene Label-Formate erstellen und einbinden kann.
Das händisch zu versuchen, endet leicht in rot blinkender Drucker-LED.

brpapertoollpr_ql710w -P ql-710w -n 62x35Label -w 62 -h 35

ist die Syntax, um ein neues Format 62x35Label mit Breite 62mm, Höhe 35mm
zu erstellen.

Das Tool geht aber ungefragt davon aus, dass  
in /etc/cups/ppd die Datei ql-710w.ppd existiert und gibt sonst nur
lakonisch ein File not Found zurück.

mit

strace -ff  -e stat64  -e open brpapertoollpr_ql710w -P ql-710w -n 62x35Label -w 62 -h 35

kann man sich das vor Augen führen.

Hier gab es halt nur eine anders benamte .ppd, deshalb einiges Herumsuchen und -kopieren.

andere hier nennenswerte Orte:

/usr/share/cups/model
/opt/brother/PTouch/ql710w/inf

Was eben leider nicht geht, obwohl man es erwartet (und andere
Betriebssysteme auch Druckertreiber haben, die das unterstützen):
Das das Ding von seinem Endlospapier einfach druckt, bis es fertig ist, und
dann abschneidet.

Diese Erfahrung mache ich nicht allein, Tante Guggel findet reichlich ähnliche Fragen. 
Hilfreich waren mir Brother PCLinux-Forum Suse-Forum (mit Hinweisen auf einen besseren Foomatic-Treiber), natürlich das Arch-Drucker-Wiki 


Diese Einrichtung hat mich fast 3 m Etiketten gekostet.

Davon ab ist das ein für seine Zwecke nettes Druckerchen mit ordentlichem Druckbild. Ich bin im Zweifel, ob es grosse Unterschiede zwischen dem Druckwerk des QL-700 und günstigeren Modellen wie dem QL-570 gibt, lt. Datenblatt hat der QL-7XX zwar bis zu 300x600 px Auflösung, aber die Treiberdialoge kennen nur 300px und auch ein anhakbarer Schönschreibmodus hat keine sichtlichen Unterschiede gemacht. Zur Ersteinrichtung des Wlan musste ich auf einem anderen Betriebssystem einmal die Software installieren und eine USB-Verbindung herstellen, ganz ohne Mac oder Win geht es nur, wenn man an seinem AccessPoint die 1-Klick-Anmeldung mit WPS unterstützt.

 get the latest built from developers.google.com/android/nexus/images

unpack it to your android working dir. 
cat flash-all.sh for the current filenames (below is from mmb29q)

adb devices
adb reboot-bootloader
fastboot flash bootloader bootloader-deb-flo-04.05.img
fastboot reboot-bootloader
fastboot flash radio radio-deb-deb-z00_2.44.0_0213.img
fastboot reboot-bootloader
fastboot flash system system.img
fastboot reboot
 
all the data and settings survived and the device shows 
MMB29Q
1. Februar 2016 as Patchlevel.
 
« previous page   (Page 2 of 35, totaling 172 entries) » next page