Compilation, installation et configuration de CouchDB sur Debian Strech

1. Compilation

Installer les dépendances :

Télécharger les sources, ici la version 2.1.0

Extraire et compiler les sources

Puis créer l’utilisateur dédié

2. Installation

Nous installons CouchDB dans le répertoire /home/couchdb

Création du fichier de service

Et enregistrement du service

3. Configuration

Création des bases par défaut

Ajout d’un administrateur

Vous trouverez l’interface d’administration à l’adresse suivante

Il est alors possible d’y créer un compte administrateur.

 

4. Sources

http://docs.couchdb.org/en/2.1.0/install/setup.html

https://docs.cozy.io/en/install/manual/

 

 

Shell Cheatsheet

Quelques astuces pour SHELL…

1. Boucler sur les sous-répertoires d’un répertoire
Operateur Description Exemple
-b file Checks if file is a block special file; if yes, then the condition becomes true. [ -b $file ] is false.
-c file Checks if file is a character special file; if yes, then the condition becomes true. [ -c $file ] is false.
-d file Checks if file is a directory; if yes, then the condition becomes true. [ -d $file ] is not true.
-f file Checks if file is an ordinary file as opposed to a directory or special file; if yes, then the condition becomes true. [ -f $file ] is true.
-g file Checks if file has its set group ID (SGID) bit set; if yes, then the condition becomes true. [ -g $file ] is false.
-k file Checks if file has its sticky bit set; if yes, then the condition becomes true. [ -k $file ] is false.
-p file Checks if file is a named pipe; if yes, then the condition becomes true. [ -p $file ] is false.
-t file Checks if file descriptor is open and associated with a terminal; if yes, then the condition becomes true. [ -t $file ] is false.
-u file Checks if file has its Set User ID (SUID) bit set; if yes, then the condition becomes true. [ -u $file ] is false.
-r file Checks if file is readable; if yes, then the condition becomes true. [ -r $file ] is true.
-w file Checks if file is writable; if yes, then the condition becomes true. [ -w $file ] is true.
-x file Checks if file is executable; if yes, then the condition becomes true. [ -x $file ] is true.
-s file Checks if file has size greater than 0; if yes, then condition becomes true. [ -s $file ] is true.
-e file Checks if file exists; is true even if file is a directory but exists. [ -e $file ] is true.

 

 

Installation de Mastodon

Après avoir joué un peu avec le Mastodon et docker, j’ai eu envie de le déployer correctement. Je reprends l’article d’Agristan : https://angristan.fr/installer-instance-mastodon-debian-8/

1. Installation de Node.js

J’ai déjà ma propre installation, j’installe Yarn.

2. Installation de Redis

3. Installation de PostgreSQL

On crée un utilisateur et une base de données :

4. Création de l’utilisateur Mastodon

On va mettre en place l’environnement de Mastodon avec cet utilisateur.

Pour se loger :

5. Installation de Ruby
5.1. Installation des dépendances (en root) :

5.2. Installation de rbenv

On se connecte avec l’utilisateur mastodon

On se reconnecte pour prendre en compte le nouvel environnement

5.3. Installation de ruby-build

5.4. Installation de Ruby

Cela peut prendre quelques minutes ou quelques dizaines de minutes suivant la puissance de votre serveur.

6. Installation de Mastodon

Ensuite, on va utiliser la dernière version stable plutôt que le dépôt de développement continuellement mis à jour.

Note : $(git tag | tail -n 1) est une commande qui récupère automatiquement le dernier tag, c’est à dire le numéro de la dernière version.

Ensuite on installe le reste :

7. Configuration

Pour la configuration voir plus bas.

7.1. Mise en place de la base de données

7.2. Pré-compilation des fichiers CSS et JS

8. Mise en place des scripts Systemd

Pour fonctionner, Mastodon a besoin de 3 services. Pour pouvoir les gérer facilement, on va utiliser des scripts systemd.

À faire en root.

8.1. Processus web

Collez :

8.2. Processus en arrière-plan

Collez :

8.3. Processus pour l’API

Collez :

On active les services :

Et on démarre le bazar :

Si vous modifiez la configuration :

Pour vérifier que tout est en route :

9. Mise à jour de Mastodon

Il y a souvent des mises à jour de Mastodon, surtout en ce moment. Pour mettre à jour votre instance, c’est très simple.

Sauvegarder les fichiers et la base de données avant de mettre à jour.

Déjà, une petite mise à jour des paquets ne fait pas de mal :

On arrête tout :

On récupère les sources, et on met à jour Mastodon, les dépendances Ruby et npm, on régénère les assets et on met à jour la BDD.

Note : $(git tag | tail -n 1) est une commande qui récupère automatiquement le dernier tag, c’est à dire le numéro de la dernière version.

Aussi, toutes ces commandes ne sont pas forcément nécessaires à chaque fois, mais les exécuter ne vous fera pas de mal 😉 . Je vous recommande de lire les notes de versions avant de mettre à jour.

Et on redémarre tout :

10. Mise en place des crons

On édite le crontab :

Et on y ajoute :

11. Installation du reverse proxy Nginx

On installe Nginx stable depuis les dépôts officiels :

On ajoute la configuration :

Et on y met (à adapter, ici c’est pour mstdn.io) :

Avec une belle configuration HTTPS inclue. 🙂

Pour que tout ça soit fonctionnel on va générer les certificats correspondants au domaine.

 

 

Déployer une instance Mastodon sur Docker

Mastodon est un réseau social de micro-blogging libre et décentralisé. Il est une bonne alternative à Twitter. Voici comment tester un peu ses possibilités.

1. Prérequis

Avoir installé Docker.

2. Installation

Pour faire simple (bien que brutal) cloner le dépôt Github du projet.

Ensuite copier et éditer le fichier de configuration.

L’éditer et remplir les champs suivants :

Pour la configuration SMTP utiliser Mailgun ou tout autre serveur SMTP.

Ajouter l’option SMTP_DOMAIN ce qui vous évitera des heures de recherches.

Lancer ensuite un build

Puis générer la clé secrète

Si tout ce passe bien recopier la clé dans le fichier .env.production

Créer la base de données

Et compiler les assets

Vous pouver lancer le monstre :

Ou en mode démon :

Connectez vous sur le port 3000 : http://localhost:3000

3. Exemple Configuration

4. Administration

Créer un utilisateur avec l’interface de création de compte et le définir comme administrateur.

 

5. Sources

https://angristan.fr/installer-instance-mastodon-debian-8/

https://blog.lertsenem.com/creer-son-instance-mastodon-perso-vite-fait-mal-fait-fr.html

https://github.com/tootsuite/mastodon

https://korben.info/synchroniser-mastodon-twitter.html

Installation de Docker sur Debian Jessie

Définition

Docker est un logiciel libre qui automatise le déploiement d’applications dans des conteneurs logiciels. Selon la firme de recherche sur l’industrie 451 Research, « Docker est un outil qui peut empaqueter une application et ses dépendances dans un conteneur isolé, qui pourra être exécuté sur n’importe quel serveur Linux ». Ceci permet d’étendre la flexibilité et la portabilité d’exécution d’une application, que ce soit sur la machine locale, un cloud privé ou public, une machine nue, etc.

Installation

Se Connecter avec l’utilisateur root ou préfixer les commandes par sudo.

1. Faire le ménage

Installation des outils

2. Ajouter la clé PGP de Docker

3. Ajouter le dépôt

Ajouter la ligne suivante au fichier /etc/apt/sources.list

Et mettre à jour les dépôts :

4. Installer Docker

5. Tester

 

Installer Docker-Compose

Docker-compose est l’outil indispensable pour gérer vos images.

Et pour l’auto complétion…

Sources

Wikipedia.org

https://docs.docker.com/engine/installation/linux/debian/

https://docs.docker.com/compose/install/

Blocage des pub avec Unbound

Voici un complément des bloqueurs de pub classique : le DNS.

On ajoute la prise en charge de cette liste de domaines à bloquer dans notre fichier de configuration d’Unbound :

Voilà ! Reste à relancer le service.

Défilement pleine page dynamique avec AngularJS 1.x

Sur ma station météo j’ai voulu implémenter un défilement pleine page (FullPage scrolling ou snap scroll).  La difficulté était de charger et de rafraichir dynamiquement les éléments affichés. Il existe probablement des solutions plus élégantes. Mais celle-ci répond à mon besoin.

1. Défilement pleine page

Pour le réaliser j’ai utilisé angular-snapscroll couplé à ses dépendances.

Je maintiens un index qui sera récupéré par mon contrôleur. Voici le code, pour le moment, qui affiche l’index :

2. Routage des vues

Pour le routage j’utilise ui.router  et les vues multiples.

Nommage des vues :

Maintenant passons au routage :

On affiche donc les vues 1 et 2 en fonction de la position du scroll.

Voici donc le contrôleur  qui va forcer la navigation.

3. Sources

Documentation angular-snapscroll

Documentation ui-router

https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views

 

Chargement dynamique d’environnements avec AngularJs

Afin de pouvoir automatiser le passage de l’environnement de développement à l’environnent déployé. J’ai utilisé quelques astuces afin de gagner du temps lors de la production de version.

La solution consiste à générer un fichier env.js contenant les variables de déploiement. C’est Grunt qui fera le travail de configuration.

1. Installation de grunt-ng-constant

2. Ecriture des configurations

Dans un répertoire config, on placera le template. Ce template sera utilisé pour générer le fichier de configuration. Dans ce script on stockera les différentes variables dans comme variable d’environnements (window.__env).

Et les fichiers de configurations…

Pour le développement :

Pour la production :

3. Chargement de la configuration

Maintenant nous allons configurer notre module. En chargeant les variables d’environnement (window.__env) .

On n’oubliera pas d’inclure le fichier env.js à nos scripts.

4. Script de production

On enregistre une tache ngConstant chargée de générer le fichier env.js

5. Sources :

http://www.jvandemo.com/how-to-configure-your-angularjs-application-using-environment-variables/

http://cayugasoft.com/configuring-multiple-environments-angular-js-using-grunt-ng-constant/