Blog de dada

DevOps, bidouilleur et routard plein de logiciels libres

Aide

Installer Collabora Online avec Nextcloud

Rédigé par dada / 05 avril 2017 / 24 commentaires




Le soleil repointe le bout de son nez et je ne trouve plus le temps de sortir des billets. L'apéro passe avant tout mais malgré ça, j'ai quand même pas mal joué avec mon serveur.
D'abord, j'ai changé de crémerie, encore, pour laisser tomber mon C1 chez Scaleway pour une Kimsufi aux caractéristiques bien plus rigolotes : adieu l'ARM, coucou le Core i3. Ça m'a permis de mettre en place l'objet de ce billet : Collabora Online dans Nextcloud via Docker !

je présuppose que votre machine tourne sous Debian Jessie (what else ?) avec Nextcloud 11.0.2.

Installer Docker

Je suis passé par l'installation de Docker CE. Ça permet d'avoir une version plus récentes de la bête.

On commence par les dépendances qui vont bien :
apt-get install apt-transport-https ca-certificates curl software-properties-common 
On enchaîne sur la clé GPG du dépôt :
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
On ajoute le dépôt dan le sources.list :
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" 
Pour finir, on installe notre nouveau jouet et c'est parti !
apt-get update && apt-get install docker-ce

Mise en place du conteneur de Collabora

On le télécharge :
docker pull collabora/code 
On le lance :
docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=votre\\.instance\\.com' --restart always --cap-add MKNOD collabora/code 
C'est pendant cette étape que je me suis le plus pris la tête... Ils disent de lancer docker avec pour paramètre un sous-domaine pour Collabora alors qu'il ne le faut pas, pas chez moi du moins. En fait, comme Collabora tourne sur le même serveur que mon instance, pas besoin de sous-domaine.

Configurer votre Vhost

Pour Nginx, ajoutez ces lignes dans votre vhost : (snippet ici).

    # static files     
    location ^~ /loleaflet {
        proxy_pass https://127.0.0.1:9980;
        proxy_set_header Host $http_host;
    }       
    # WOPI discovery URL
        location ^~ /hosting/discovery {
        proxy_pass https://127.0.0.1:9980;
        proxy_set_header Host $http_host;    
    }        
    # websockets, download, presentation and image upload
    location ^~ /lool {        
        proxy_pass https://127.0.0.1:9980;
        proxy_set_header Upgrade $http_upgrade;  
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
   }
Pour Apache2. c'est trop long alors cliquez sur snippet !

Et voilà pour le plus chiant !

Activer Collabora

Maintenant, pour terminer, allez donc activer l'application en la configurant avec le sous-domaine de votre instance : https://votre.instance.com. Pensez bien à cliquer sur "Appliquer" si vous ne voulez pas risquer de devenir chèvre...

Tous ces efforts vous permettront de cliquer paisiblement sur ces 3 nouvelles options :



Amusez-vous bien !

Fairphone 2 : corriger le GPS de votre téléphone

Rédigé par dada / 06 mars 2017 / 14 commentaires




Alors là, je viens de faire tomber le dernier blocage frustrant de mon Fairphone 2 : le GPS qui ne tournait pas. J'étais devenu fort en lecture de cartes sur OsmAnd~ mais je saturais aussi un peu. C'est marrant de faire le malin en sachant lire un carte dans tous les sens en 2017, mais bon, voilà, hein.
J'avais déjà passé trop de temps sur les moteurs de recherche et le forum Fairphone mais l'autre soir, dans une ultime tentative, j'ai débloqué ma situation ! Voici comment j'ai fait :

En préambule, notez que je me sers de l'Open Source OS du Fairphone, livrée sans les Google Apps. Si vous utilisez la version classique de l'OS, ce tutoriel n'est sans doute pas pour vous. Ah, et j'ai un Fairphone 2, pas le 1.
Et aussi, manipuler votre téléphone est à vos risques et périls ! Ne faites pas n'importe quoi ! Et puis, le GPS ne tourne toujours pas forcément très bien. Si je trouve des astuces pour l'améliorer, ou si vous en avez : je mettrais à jour ce billet.

Passer le téléphone en root

Pas besoin de brancher le téléphone au PC pour lancer le mode debug en ligne de commande depuis un terminal sous GNU/Linux... Pour passer root, il vous suffit de connaître le bon chemin et de taper plusieurs fois sur avec votre doigt sur Numéro de build.
Paramètres -> À propos du téléphone -> Numéro de build 
Tapotez votre écran au niveau de la case plusieurs fois et vous deviendrez le hacker de votre FP2. Retournez dans les paramètres et activez le Root Acces dans le nouveau menu "Options pour développeurs".

Passer Amaze en root

Maintenant, comme il va falloir modifier la configuration du GPS qui se trouve être un simple fichier texte dans les méandres de votre appareil, autorisez l'application Amaze à faire n'importe quoi.
Amaze -> Paramètres -> Divers 
Activez l'option "Gestionnaire Root" et le tour est joué : vous pouvez maintenant aller trifouiller dans la " / Racine" de votre Android.

Modifier le fichier gps.conf

Ce filou se trouve dans /system/etc/gps.conf.

Là, vous trouverez une ligne à commenter (en plaçant un # devant) une autre à dé-commenter et un 0 à remplacer par un 1 :
NTP_SERVER=time.gpsonextra.net
# NTP_SERVER=europe.pool.ntp.org
devient :
# NTP_SERVER=time.gpsonextra.net 
NTP_SERVER=europe.pool.ntp.org
Ensuite :
INTERMEDIATE_POS=0
devient :
INTERMEDIATE_POS=1
Vous pouvez enregistrer les modifications et redémarrer votre téléphone pour qu'elles soient prises en compte.

Un fois relancé, je vous invite à tester (depuis un endroit où vous pouvez capter du GPS !) votre nouvelle configuration avec l'application SatStat, disponible depuis F-Droid. Si tout va bien, vous devriez voir le nombre de satellites auxquels votre téléphone est connecté !

Maintenant, profitez enfin de OsmAnd~ et oubliez l'insupportable "Position Inconnue" quand vous voulez vous géolocaliser sur la carte. Bonheur.
 

Nginx et Let's Encrypt

Rédigé par dada / 22 décembre 2016 / 3 commentaires


Ces derniers temps, j'ai changé pas mal de choses sur ce serveur. Ceci étant, je ne me suis pas rendu compte tout de suite que j'avais cassé le flux RSS de ce blog en configurant Nginx en proxy pour le SSL. #Boulette. Pourtant, j'avais bien remarqué que les applications Wallabag et EasyRSS ne fonctionnaient plus. Ça aurait du me mettre la puce à l'oreille.

M'enfin, Cypouz m'a gentiment remonté le bug en m'envoyant un message privé sur diaspora* pour me rappeler que je devais faire quelque chose, l'erreur suivante commençant à se voir :
cURL error 60: SSL certificate problem: unable to get local issuer certificate [https://www.dadall.info/blog/feed.php?rss]
C'est maintenant chose faite et voici l'astuce : Let's Encypt dans Nginx demande un peu plus de lignes pour fonctionner qu'avec un Apache :

        ssl_certificate /chemin/vers/letsencrypt/live/dadall.info/fullchain.pem;
        ssl_certificate_key /chemin/vers/letsencrypt/live/dadall.info/privkey.pem;
 
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_trusted_certificate /chemin/vers/letsencrypt/live/dadall.info/fullchain.pem;

Voila !

Vous remarquerez que le certificat est délivré par le fullchain.pem et non le cert.pem.

Bon, je n'ai pas incroyablement creusé la question, mais comme j'ai l'habitude de dire : chez moi ça marche ;-)

Passer son C1 Scaleway sous PHP 7

Rédigé par dada / 12 décembre 2016 / 2 commentaires


Je laisse PHP 7 dans le titre mais je précise ici que je parle de PHP 7.0 et pas de PHP 7.1.

Notez que passer outre les dépôts officiels de Debian et qu'utiliser un dépôt maintenu par un tiers engage la stabilité de votre serveur et de votre installation. J'ai pas de souci chez moi, mais ça ne veut rien dire !

Les C1 de Scaleway sont des serveurs tournant sur une architecture ARM et si c'est sympa dans les faits, c'est un problème quand on veut utiliser PHP 7 avec sa Debian 8 Jessie.
Les dépôts bonus classiques que les debianneux doivent tous connaître sont les dotdeb. On y retrouve les dernières versions de PHP packagés avec sérieux par Guillaume Plessis, pour les architectures x86 et x86_64 mais pas d'ARM. Pas de support du C1 donc.

Pour remédier au problème, vous pouvez passer par le travail de mati75.
deb http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free 
Pour ajouter la clé GPG :
gpg --keyserver pgpkeys.mit.edu --recv-key CCD91D6111A06851
gpg --armor --export CCD91D6111A06851 | apt-key add -
Ceci-dit, comme ce ne sont pas des dépôts officiels et qu'il n'y a pas que PHP dedans, je n'ai pas ajouté cette clé pour empêcher APT d'aller taper dedans sans une double validation. C'est pas super propre, mais bon.

Notez que la totalité des modules PHP ne sont pas encore disponibles : j'ai en tête memcached puisque je m'en servais. Tant pis.

J'ai passé le serveur de ce blog sous PHP 7.0 ce week-end : RAS jusqu’à maintenant. Le gain de performance est légèrement notable mais je ne m'attendais pas non plus à une révolution compte tenu des caractéristiques faibles du C1.

Voici la liste des services qui tournent sur ce serveur et que je certifie fonctionner avec cette version de PHP :

Par contre, Sticky-Notes est dans les choux. Il va me falloir un autre pastbin-like !

Android, Nextcloud, son application Contacts, DAVdroid et l'erreur 15

Rédigé par dada / 07 septembre 2016 / 2 commentaires


Il y a des trucs qui m'ont gonflé ces derniers jours et cette erreur en fait partie :
java.lang.IllegalStateException: [Error 15] PREF parameter value is malformed 
Pas très claire, pas super bavarde, y'a pas pire comme type d'erreur, surtout quand on aime bien gérer son propre serveur pour pouvoir profiter de la synchronisation des contacts de son téléphone avec son instance Nextcloud. Bon, je triche un peu, c'est une erreur Java, c'est plus verbeux que ça, mais j'allais pas déformer ce billet avec son blabla.
J'ai commencé par faire les trucs de base : sauvegarder mes contacts sur le téléphone, vider le carnet d'adresses, vider l'application Contacts de son contenu et lancer une synchronisation après avoir fait ce grand ménage. Rien à faire, ça pétait toujours. #Tristitude

En traînant sur l'internet mondial, j'apprends qu'il y a plusieurs versions du protocole VCard, le format ouvert qui permet l’échange des cartes visites, ou dit plus clairement, l’échange de nos contacts du téléphone. C'est lui que CardDav manipule. On ne va pas rentrer les détails mais, comme tout machin avec une RFC, une ligne de conduite claire, faut filer droit. A priori, les applications qui se cognent la manipulation des VCard savent ce qu'elles font, ou pas.
Je ne sais pas vraiment depuis quand la valeur PREF traîne dans les informations de mes contacts, mais ce merdeux est presque partout et il est mal utilisé. Exemple :
BEGIN:VCARD
VERSION:2.1
N:Johansson;Scarlett;;;
FN:Scarlett Johansson
TEL;CELL;PREF:+42612345678
END:VCARD
Remarquez bien ce maudit PREF qui se balade entre CELL et le numéro de téléphone : il n'a rien à faire ! La ligne TEL doit contenir les informations relatives au 06 du contact, ce que le squatteur ne comprend pas.
Bref, pour corriger la synchro avec Contacts de Nextcloud via DAVdroid, il suffit de le faire sauter. C'est comme ça que j'ai fait, ce n'est sans doute pas la façon la plus propre de faire, mais ça m'a défrustré.

La solution la plus simple, si vous êtes sous GNU/Linux et que vous savez un tout petit peu vous servir d'un terminal, c'est de :
  • Extraire son carnet d'adresse au format VCF
  • Ouvrir un terminal
  • Exécuter la commande suivante :
 sed -i "s/TEL;CELL;PREF:/TEL;VOICE:/g" contacts.vcf 
Avec cette simple manipulation, vous venez de faire sauter la totalité des occurrences de PREF; de votre carnet d'adresse en la remplaçant par VOICE;, qui ne pose pas de souci. Notez qu'il doit existe d'autre formats corrects pour la ligne TEL, vous pouvez fouiller si l'envie vous prend.
Enfin, vous pouvez tranquillement réimporter ce fichier édité dans le carnet d'adresse de votre téléphone et dans Nextcloud, ça marchera tout seul, sans cette fichue error 15.