Deploy something with Gitlab

10 May 2021

Basicly, when you want to “deploy” something via Gitlab CI/CD, that just mean building something inside a docker container and Rsync the result to the production server.
Continuous Integration” and “Continuous Deployment” are just fancy word that mean you put your shit online. It’s not magic, it’s automated FTP with Git as the source.

First create SSH_PRIVATE_KEY with a ssh private key that can access the server.

ssh-keygen -t rsa -b 4096 -C "me@my-domain.com"

Don’t use the passphrase, otherwise, the automatique login wont work.
You need to add the public key to a file named ~/.ssh/authorized_keys and chmod 0644 ~/.ssh/authorized_keys that file.

Now we just need to add this ssh key to the gitlab-ci that will Rsync what ever file you want to put on the server

deploy_henix:
  stage: deploy
  image: my_image
  before_script:
    - apt-get update
    - apt-get install -qq rsync
  script:
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
    - eval $(ssh-agent -s)
    - ssh-add <(echo "$SSH_PRIVATE_KEY")- mkdir -p ~/.ssh
    - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
    - rsync -av public/js/ myuser@mydomain:public_html/public/js
  only:
    - master

How to install Qutebrowser on Linux Mint and Ubuntu 20.04

10 May 2021

I like Qutebrowser because it’s a keyboard driven browser (Vim like). You can do a lot of things without using the mouse. It’s really a good option when you already run something like I3 to handle the desktop window. I personnaly run the Regolith desktop, that is based on I3.

First you will have to use the git and virtual env version, because the version shipped from the Ubuntu 20.04 is really outdated and also provide a QtWebEngine that is missing a year of security fix.
You can’t miss so much security fix, this is not a viable option.

First step is to clone qutebrowser and build the virual env (See the documentation)

git clone https://github.com/qutebrowser/qutebrowser.git
cd qutebrowser
python3 scripts/mkvenv.py

I recommand you also build the documentation, just for the documentation, it will allow you to call :help for… Well, help.

python3 scripts/asciidoc2html.py

This is the basic to install qutebrowser. To start it, just do .venv/bin/python3 -m qutebrowser from the qutebrowser repository.

But that is not usable for daily drive : it’s not your default browser, witch mean that it wont open links from other apps.
You also have to remember a fairly complex command that need to be started from a specific directory.

Now, for the desktop integration, first, copy the org.qutebrowser.qutebrowser.desktop file inside ~/.local/share/applications.

You can’t just set Qutebrowser as default browser from the configuration panel, sadly. First we need a little script (this is also in the official documentation) to start it easly. Create a file /usr/local/bin/qutebrowser and put this content inside :

#!/bin/bash
~/qutebrowser/.venv/bin/python3 -m qutebrowser "$@"

You also need to add execute permission on this file

chmod +x /usr/local/bin/qutebrowser

To set Qutebrowser as the default browser, we need to run this command:

xdg-settings set default-web-browser org.qutebrowser.qutebrowser.desktop

And voilà, Qutebrowser should open every link you try to open.


Brother MFC 9140CDN - Reset des toners

17 April 2020

J’ai une Brother MFC 9140CDN. Chouette imprimante dont je suis très content. Cependant, comme tous les fabricants d’imprimante, Brother ne peut pas s’empêcher d’arnaquer ces clients en leur vendant :

  • Des toners hors de prix
  • Des toners qui sont annoncés vide par la machine alors qu’en fait, ils ne le sont pas.

Pour déclencher l’alerte « nouveau toner », il se contente de compter le nombre de page imprimé. Et il a la main lourde sur le calcule, parce que perso, cela fait déjà 2 fois que je remet a 0 les toners sans les changer et ça imprime toujours correctement.

Pour remettre a 0 (reset) les toners de votre imprimante :

Repérer l’astérix du pavé numérique. On peut allumer le pavé numérique en cliquant sur « fax ». Ensuite il faut ouvrir le compartiment des toners. Appuyez pendant 5 secondes sur l’astérix (le compartiment à toner dois rester ouvert).

Un menu apparaît :

  • K = noir
  • Y = Jaune
  • M = Rouge
  • C = Blue

Les cartouches qui termine par STD sont cartouche de taille « standard » et les HC sont les grand capacité (HC = Hight capacity).

Le menu est parfois un peu buggé/capricieux, il faut insister sur les boutons.


Dymo Label Writer 450 sous Linux Mint 19.2

13 October 2019

Il y a un paquet Ubuntu printer-driver-dymo.

Voir: https://doc.ubuntu-fr.org/dymo

Une fois le driver installer, CPUS semble voir correctement la Dymo et permet même de choisir le format d’étiquette. L’imprimante est correctement listée.

Dymo inside the printer menu

Par contre impossible d’imprimer depuis un logiciel classique. L’astuce est d’installer gLabels, de sélectionner le format et cela imprimera !

glables selection de produit

Il est aussi possible de partager la Dymo en réseau. J’utilise gLabels sur mon portable pour imprimer sur la Dymo de ma tour.

Attention à bien cocher la case “publier les imprimantes” dans les paramètres de Linux Mint :

share printer menu

Sous Windows, le logiciel de Dymo (DYMO Label) pour faire des étiquettes ne semble pas fonctionner avec cette configuration.


Linux Mint mange votre batterie ?

31 January 2019

Si votre laptop semble consommer plus de batterie qu’il ne devrait, désactivez donc les effets de fenêtres (Paramètre > Effets). Cela semble consommer pas mal de batterie ! Personnellement, j’ai gagné beaucoup d’autonomie avec ce changement.

panneau de configuration des effets sous linux mint


Si Pitivi ne lit pas les MP4

28 May 2018

Testé sous Ubuntu 16.04 et Linux Mint 18. Dans le cas ou vous n’arrivez pas à importer des fichiers MP4 dans Pitivi :

gst-resource-error-quark: Stream file:///home/arthur/brique_lego.mp4 discovering failed

Il faut simplement installer les codes manquant :

sudo apt-get install gstreamer1.0-libav

Contourner un proxy filtrant avec PuTTY et Firefox

23 February 2018

warning

Je ne suis pas un professionnel de la sécurité, je ne sais pas a quel point cette méthode est fiable, ni si elle fonctionnera aussi pour vous.
Il est également probable que le règlement de votre institution vous interdise de contourner les mesures de sécurités mises en place.

Utilisation à vos risque et péril !

Il m’arrive régulièrement de me retrouver dans un environnement web bien sale, avec un proxy qui filtre le contenu et bloque l’accès a certain sites.
Comme tous ces outils sont bien bêtes et bloquent souvent des sites légitimes, et que je avais bien le temps, je me suis amusé à le contourner.

Avoir une connexion la maison

La première étape consiste à avoir un accès “outdoor” qui servira de relai. Ici j’utilise mon ordinateur à la maison.
Comme beaucoup, j’ai un adresse IP dynamique, problème que j’ai corrigé en utilisant le service nsupdate.info. Si le proxy bloque nsupdate.info, il faudra partir chaque matin avec votre IP sous le bras…
Si vous avez un nom de domaine chez OVH, vous pouvez vous en servir aussi.

Ensuite, il suffit de connecter PuTTy sur cette machine. Dans le cas où le proxy n’accepte pas les connexions SSH sur le port 22, changer le port SSH sur votre machine pour utiliser le même que celui du proxy (8080 par exemple).
Pour cela j’ai utilisé mon téléphone et ma connexion 4G (oui, oui :->) et j’ai modifié la configuration SSH.

Configurer l’hôte dans PuTTY

Il faut aussi ajouter le proxy dans la configuration PuTTy.

Configurer le proxy dans PuTTY

Ouvrir un tunnel SSH

On va ensuite ouvrir un tunnel SSH pour y faire passer le trafic de notre navigateur web. Ce qui circulera entre le proxy et vous sera complètement illisible pour le premier proxy, car protégé par le tunnel SSH.

Ouvrir un tunnel SSH

Dans “port source” placé le numéro de port du proxy (ici 8080). Coché aussi “dynamique”.

Brancher Firefox sur le tunnel.

Brancher Firefox sur PuTTY

On branche ensuite Firefox sur ce nouveau “proxy”. Placer “localhost” dans le SOCKS et coché bien SOCK v5. Coché également la case “Proxy DNS when using SOCKS v5”.

Il reste à vérifier que vous avez accès à internet :).


Si vous n'avez plus de réseau sous linux après l'installation de Windows 10

30 July 2016

Si après la mise à niveau vers Windows 10, votre partition Linux n’arrive plus à se connecter au réseau et donc à Internet, ne tapez pas tout de suite sur votre BiduleBox !

Il est possible que cela soit la faute de Windows 10 !

J’ai une carte Intel I270-v et après avoir installé Windows 10, ma partition Linux Mint n’arrivait plus à se connecter au réseau.

Après des heures de recherche la solution est assez WTF : il faut désactiver le Wake on Lane (WoL) de Windows.

Rendez-vous dans les propriétés de votre carte, onglet Power management et décocher les cases relatives au WoL.


Windows 7 et mise à jour qui tournent folles

29 July 2016

Aujourd’hui c’est le dernier jour pour profiter de la mise à jour gratuite vers Windows 10.

Du coup, vous avez peut-être sortit votre vieux CD de Windows 7 pour réinstaller tout ça, après tout, quand c’est gratuit… C’est vous le produit.

Bref, vous pourriez être confronté, comme moi a l’impossibilité d’installer les mise à jour. Elles tournent en boucle et voilà, rien ne se passe. C’est génial non ? Bien entendu impossible de passez à Windows 10 sans faire quelques mises à jour de Windows 7.

Bref, voici une solution pour sortir de la mélasse :

  1. Téléchargez ce patch pour le 32bits ou ce patch pour le 64bits.
  2. Redémarrez Windows.
  3. Installez le patch.
  4. Redémarrez (encore…).
  5. Lancez les mises à jours.
  6. Prenez la direction de la cafetière la plus proche.

Voilà !


Préparer Ubuntu 16.04 ou Linux Mint 18 pour le développement web local

16 July 2016

On commence par installer les éléments du serveur web :

sudo apt install lamp-server^ php-gd php-sqlite3 php-curl php-xml php-xdebug php-mbstring

N’oubliez pas que le “^” à la fin de lamp-server n’est pas une faute de frappe !

Donner un nom au serveur web

Même si on a plus vraiment de message d’erreur, il est toujours bon de donner un nom au serveur. On fait comme pour Ubuntu 14.04 :

echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf
sudo a2enconf fqdn

Configurer xdebug

La configuration par défaut de xdebug est un peu légère. On modifie le fichier de configuration /etc/php/7.0/mods-available/xdebug.ini pour y ajouter ces lignes:

xdebug.max_nesting_level = 1000

; Pas de limite pour l'affichage xdebug
xdebug.var_display_max_depth = -1
xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1

Augmenter la valeur maximale d’upload

Par défaut, la valeur maximale d’upload est de 2Mo. C’est un poil handicapant de nos jours ou le moindre fichier dépasse facilement cette limite.

Il suffit d’éditer /etc/php/7.0/apache2/php.ini et de modifier les valeurs:

upload_max_filesize = 1024M
post_max_size = 1024M

Dans le même fichier, j’en profite pour afficher les erreurs, et vraiment toutes les erreurs PHP:

error_reporting = E_ALL
display_errors = On

Utiliser un autre répertoire que /var/www

Ensuite, je n’aime pas trop utiliser le dossier /var/www sur lequel pointe localhost par défaut. J’aime bien mettre les fichiers à l’abri dans mon répertoire /home:

Il faut éditer le fichier /etc/apache2/sites-available/000-default.conf A la fin de la déclaration du VirtualHost il faut ajouter ceci:

<Directory /home/phenix/Sites>
      Options Indexes FollowSymLinks
      AllowOverride all
      Require all granted
</Directory>

Il faut aussi remplacer la déclaration du DocumentRoot qui se trouve plus haut !

Maintenant, normalement, localhost pointe sur le dossier Sites de mon /home.

Changer les droits d’Apache

J’aime également bien que Apache tourne avec mes droits utilisateurs, cela évite de pas mal de problème d’écriture. Sur un serveur web c’est plutôt déconseillé, mais pour uniquement du local, je ne vois pas trop le mal.

Il faut éditer le fichier /etc/apache2/envvars et changer les ligne USER et GROUP. Cher moi cela donne ceci:

export APACHE_RUN_USER=phenix
export APACHE_RUN_GROUP=phenix

Activer l’URL_REWRITING

Par défaut, mod_rewrite n’est pas activé. On a déjà préparé le terrain avec AllowOverride all mais il faut encore activer le module:

sudo a2enmod rewrite

Ensuite on redémarre apache:

sudo service apache2 restart

Activer le module Expires

Un autre module bien utile: expires, pour les sites qui configure le cache du navigateur via Apache2

sudo a2enmod expires

On oublie pas de relancer apache pour prendre en compte le nouveau mod:

sudo service apache2 restart

Activer le module Headers

Pour les sites qui manipule les headers via apache2:

sudo a2enmod headers

On oublie pas de relancer apache pour prendre en compte le nouveau mod:

sudo service apache2 restart

[#wwwlocalhost<-]

Activer www.localhost

Parfois, on place des redirections via les fichiers .htaccess pour forcer l’utiliser les www devant le nom de domaine. Du coup, c’est pratique d’avoir un www.localhost fonctionnel. Il faut pour cela éditer le fichier /etc/hosts pour y ajouter :

127.0.0.1       www.localhost

MySQL

Je ne suis pas un grand fan des tables en InnoDB, depuis le jour ou elles ont toutes crashés lamentablement. Dans mon domaine, l’utilisation d’InnoDB n’est pas du tout indispensable. MyISAM pourrait même être meilleur, car il est plus rapide sur les opérations simples comme SELECT et INSERT.

Du coup, on change le moteur par défaut, en éditant le fichier /etc/mysql/mysql.conf.d/mysqld.cnf.

Dans la section [mysqld] on ajoute la ligne:

default-storage-engine=myisam

Truc en plus

Font Web

Toutes les fonts “web” ne sont pas installées, il faut les demander :

sudo apt-get install ttf-mscorefonts-installer

Charger PHP Mcrypt

Certaine application comme composer on besoin de Mcrypt, on va donc charger l’extension :

sudo apt install php-mcrypt
sudo phpenmod mcrypt

Bon travail !