1 line
No EOL
247 KiB
JSON
1 line
No EOL
247 KiB
JSON
[{"content":"Vim est un éditeur de texte intégré hautement configurable permettant d’édition des textes efficacement. C\u0026rsquo;est une version améliorée de l’éditeur vi distribué avec la plupart des systèmes UNIX. Cet article sous forme de note regroupe les commandes, raccourcis, que j\u0026rsquo;utilise sous Vim. Il sera étoffé et mis à jours au fur et à mesure de mon utilisation de Vim.\nCommandes Rechercher et remplacer Utilisation de la commande: substitute (: s) en mode normal.\nRechercher « olivier » et remplacer par « famille » sans demander à chaque occurence trouvée : :%s/olivier/famille/g Rechercher « olivier » et remplacer par « famille » et demander à chaque occurence trouvée : :%s/olivier/famille/gc Rechercher « moi » et remplacer par « olivier » mais le mot en entier (exemple : le mot « moi » sera trouvé dans « je suis moi », mais pas « le mois de janvier ») : :%s/\\\\moi\\\\/olivier/gc Rechercher « olivier » ou « inès » et remplacer par « famille » : :%s/olivier\\\\|inès/famille/g Rechercher « olivier » et remplacer par « famille » dans la ligne où se trouve le curseur : :s/olivier/famille Rechercher tous les « olivier » et remplacer par « famille » dans la ligne où se trouve le curseur : :s/ancien/nouveau/g Rechercher « olivier » et remplacer par « famille » dans les lignes n° # à # du fichier : :#,#s/ancien/nouveau/g Rechercher Effectuer une recherche de texte.\nRechercher « olivier » N\u0026rsquo;hésitez pas à faire vos commentaires ou à suivre les publications sur Mastodon !\n","date":"2022-09-13T11:21:58+01:00","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/2022/09/13/commandes-et-raccourcis-utiles-pour-vim/","title":"Commandes et raccourcis utiles pour Vim"},{"content":"Cela fait quelques mois que j\u0026rsquo;ai armorcé ma migration de Proxmox vers Docker. Le but de cet article n\u0026rsquo;est pas de présenter le moteur de conteneurs le plus célèbre du paf d\u0026rsquo;autres l\u0026rsquo;ont déjà fait mais d\u0026rsquo;entamer une série d\u0026rsquo;articles autour de cette migration. Aujourd\u0026rsquo;hui je vais aborder le cas du reverse proxy avec Traefik.\nPrésentation Traefik est un reverse proxy HTTP moderne et un répartiteur de charge(load balancing). Il se configure selon deux méthodes, la première dite interactive, elle permet de passer la configuration en paramètre de l’exécutable (méthode que j\u0026rsquo;utilise dans cet article) et la seconde dite déclarative,elle permet de passer par un fichier de paramètrage au format toml ou yaml. Le gros avantage de Traefik c\u0026rsquo;est qu\u0026rsquo;il fait de l’auto-discovery via un système de fournisseurs de services comme Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS et dans mon cas Docker et des fichiers.\nConfiguration Docker-compose Comme je l\u0026rsquo;ai indiqué en introduction mon traefik est configuré de façon interactive. Les paramètres de l\u0026rsquo;exécutable sont renseignés comme suit dans mon docker-compose :\ncommand: - --providers.docker # J\u0026#39;utilise le provider Docker - --providers.docker.exposedbydefault=false # Je n\u0026#39;expose pas par défaut mes conteneurs - --providers.file.directory=/config/ # je charge les configurations du répertoire - --providers.file.watch=true # je surveille le répertoire précédent pour charger dynamiquement les configurations - --entrypoints.http.address=:80 # Création de l\u0026#39;entrypoint nommé http sur le port 80 - --entrypoints.https.address=:443 # Création de l\u0026#39;entrypoint nommé https sur le port 80 - --entrypoints.http.http.redirections.entrypoint.to=https #je redirige tout ce qui arrive sur le http vers le https - --entrypoints.http.http.redirections.entrypoint.scheme=https # utilisation du point d\u0026#39;entrée https pour la redirection - --certificatesresolvers.le.acme.email=${TRAEFIKEMAIL} # le courriel pour l\u0026#39;utilisation de Lets\u0026#39;encrypt - --certificatesresolvers.le.acme.storage=/certificates/acme.json # acme.json pour let\u0026#39;s encrypt - --certificatesresolvers.le.acme.tlschallenge=true - --global.sendanonymoususage=false # désactivation de l\u0026#39;envoi de donnée - --accesslog=true # j\u0026#39;active l\u0026#39;accès au logs - --log.level=INFO # je défini le niveau d\u0026#39;information dans les logs - --log.filePath=/logs/traefik.log # j\u0026#39;indique ou stocker les logs - --api # j\u0026#39;active l\u0026#39;Api et l\u0026#39;acès au dashboard Dans la configuration de traefik, je place un répertoire en écoute --providers.file.directory=/config/ qui est monté sur l\u0026rsquo;hôte dans /srv/traefik/config. Tous les fichiers présents dans ce répertoire seront chargés dynamiquement --providers.file.watch=true sans avoir à redémarrer la stack. Dans ce répertoire j\u0026rsquo;y place aussi les paramètres récurrent à chaque services exposés, comme la configuration TLS, les Headers, et autres middlewares. Cela m\u0026rsquo;évite d\u0026rsquo;alourdir les docker-compose de mes futurs services avec des paramètres fixent.\nVolumes J\u0026rsquo;utilise les volumes pour les certificats générés par Let\u0026rsquo;sencrypt, les secrets contenant les identifiants, l\u0026rsquo;enregistrement des logs et la configuration dynamique.\n[...] volumes: - /var/run/docker.sock:/var/run/docker.sock:ro # écoute de l\u0026#39;api docker - /mnt/nas/voljin/volumes/traefik:/certificates # stockage des certificats - ./secrets:/secrets:ro # stockage des mots de passes - ./config:/config:ro # configuration dynamique - ./logs:/logs # enregistrement des logs. [...] Identifiant de connexion L\u0026rsquo;identifiant de connexion se présente sous la forme d\u0026rsquo;une ligne de texte a ajouter tel quel dans le fichier traefik_auth_file, contenant le nom d\u0026rsquo;utilisateur et le mot de passe qui sera chiffré avec openssl. Dans le répertoire /srv/traefik/secrets je crée le fichier composé comme cela.\nCréation de l\u0026rsquo;identifiant.\nuser:mot_de_passe_chiffré Chiffrage du mot de passe avec openssl.\nopenssl passwd -apr1 mon_mot_de_passe Le mot de passe chiffré doit ressembler à cela.\n$apr1$89eqM5Ro$CxaFELthUKV21DpI3UTQO. Je copie-colle avec le nom d\u0026rsquo;utilisateur.\nuser:$apr1$89eqM5Ro$CxaFELthUKV21DpI3UTQO. On mettra une ligne par utilisateurs.\nConfiguration TLS Dans le répertoire /srv/traefik/config je crée un fichier tls.yml composé comme cela.\ntls: options: default: minVersion: VersionTLS12 sniStrict: true cipherSuites: - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 # TLS 1.2 - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 # TLS 1.2 - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 # TLS 1.2 - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 # TLS 1.2 - TLS_AES_256_GCM_SHA384 # TLS 1.3 - TLS_CHACHA20_POLY1305_SHA256 # TLS 1.3 - TLS_FALLBACK_SCSV # TLS FALLBACK curvePreferences: - secp521r1 - secp384r1 - X25519 - CurveP521 - CurveP384 - CurveP256 modern: minVersion: VersionTLS13 Il s\u0026rsquo;agit d\u0026rsquo;une configuration classique, j\u0026rsquo;utilise les ciphers autorisés dans la configuration par defaut, avec une version de TLS minimum en 1.2. Je force l’utilisation de TLSv1.3.\nLes middlewares Voici les différents middlewares que j\u0026rsquo;utilise, je préfère utiliser un fichier par middleware. En effet si je me loupe dans la configuration d\u0026rsquo;un middleware celui-ci ne sera pas chargé et cela ne pertubera pas le fonctione de Traefik.\nHeaders et HSTS Dans un fichier appelé config.yml.\nhsts-headers: headers: frameDeny: true browserXssFilter: true contentTypeNosniff: true stsIncludeSubdomains: true stsPreload: true stsSeconds: 31536000 forceStsHeader: true Compression Compression en GZIP dans un fichier appelé compression.yml.\nhttp: middlewares: compression: compress: excludedContentTypes: - \u0026#34;text/event-stream\u0026#34; Accès au Dashboard Avec le paramètre --api j\u0026rsquo;active l\u0026rsquo;accès au dashboard de traefik. Pour ce faire j\u0026rsquo;ajoute ces labels docker dans ma stack.\nlabels: - traefik.enable=true # J\u0026#39;active traefik - traefik.docker.network=traefik # j\u0026#39;indique le réseau pour l\u0026#39;exposition du conteneur - traefik.http.middlewares.admin-auth.basicauth.usersfile=/secrets/traefik_auth_file # fichier contenant l\u0026#39;auhentification pour l\u0026#39;accès au dashboard - traefik.http.routers.traefik.rule=Host(`traffic.${DOMAIN}`) # url d\u0026#39;accès - traefik.http.routers.traefik.entrypoints=https # port d\u0026#39;écoute utilisé - traefik.http.routers.traefik.tls=true # chiffrage - traefik.http.routers.traefik.service=api@internal # service propre à traefik pour le dashboard - traefik.http.routers.traefik.tls.certresolver=le # Let\u0026#39;s encrypt comme resolveur de certificat - traefik.http.routers.traefik.middlewares=admin-auth # activation de l\u0026#39;authentification via le fichier défini plus haut - traefik.http.services.traefik.loadbalancer.server.port=8080 # port d\u0026#39;écoute du dashbord non exposé Docker-compose final version: \u0026#34;3.8\u0026#34; networks: traefik: external: true services: traefik: image: traefik:banon restart: unless-stopped container_name: traefik ports: - 80:80 - 443:443 labels: - traefik.enable=true - traefik.docker.network=traefik - traefik.http.middlewares.admin-auth.basicauth.usersfile=/secrets/traefik_auth_file - traefik.http.routers.traefik.rule=Host(`traffic.${DOMAIN}`) - traefik.http.routers.traefik.entrypoints=https - traefik.http.routers.traefik.tls=true - traefik.http.routers.traefik.service=api@internal - traefik.http.routers.traefik.tls.certresolver=le - traefik.http.routers.traefik.middlewares=admin-auth - traefik.http.middlewares.traefik.compress=true - traefik.http.middlewares.traefik.compress.excludedcontenttypes=text/event-stream - traefik.http.services.traefik.loadbalancer.server.port=8080 volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /mnt/nas/voljin/volumes/traefik:/certificates - ./secrets:/secrets:ro - ./config:/config:ro - ./logs:/logs command: # ------------------------------------------- providers Docker - --providers.docker - --providers.docker.exposedbydefault=false # ------------------------------------------- Providers Fichier - --providers.file.directory=/config/ - --providers.file.watch=true # ------------------------------------------- Ports - --entrypoints.http.address=:80 - --entrypoints.https.address=:443 # ------------------------------------------- Redirection vers https - --entrypoints.http.http.redirections.entrypoint.to=https - --entrypoints.http.http.redirections.entrypoint.scheme=https # ------------------------------------------- Configuration SSL - --certificatesresolvers.le.acme.email=${TRAEFIKEMAIL} - --certificatesresolvers.le.acme.storage=/certificates/acme.json - --certificatesresolvers.le.acme.tlschallenge=true # ------------------------------------------- Configuration traefik - --global.sendanonymoususage=false - --accesslog=true - --log.level=INFO - --log.filePath=/logs/traefik.log - --api networks: - traefik Conclusion Je ne fait qu\u0026rsquo;effleurer les possibilités qu\u0026rsquo;offre traefik et il y en a tellement, les middlewares, le routage TCP et UDP, la possibilité de servir des machines non docker, la diversité des providers et j\u0026rsquo;en oublie. J’espère que vous avez apprécié cet article et que vous allez prendre autant de plaisir que moi à jouer avec traefik.\nN\u0026rsquo;hésitez pas à faire vos commentaires ou à suivre les publications sur Mastodon !\n","date":"2022-06-15T11:21:58+01:00","image":"https://archives.draconis.me/images/header/traefik.png","permalink":"https://archives.draconis.me/2022/06/15/utiliser-traefik-comme-reverse-proxy/","title":"Utiliser Traefik comme reverse proxy"},{"content":"Je faisais tourner Gitea sur mon serveur maison via docker depuis un petit moment déjà, puis la semaine dernière, le disque dur a commencé à faire des bruits horribles. J\u0026rsquo;ai donc arrêté les conteneurs, sauvegardé les volumes et les fichiers de configuration pour déplacer tout ce petit monde vers un nouveau disque dur que j\u0026rsquo;avais préparé mais que je n\u0026rsquo;avais pas encore implémenté. Tout est à nouveau en ligne et fonctionnel, tout du moins je le croyais. Lorsque j\u0026rsquo;ai voulu utiliser mes dépôts Git, j\u0026rsquo;ai découvert que je ne pouvais pas utiliser les requêtes Git (git pull ou git clone) via SSH. En revanche l\u0026rsquo;utilisation de Git via HTTPS fonctionne parfaitement.\nDans un premier temps j\u0026rsquo;ai pensé à mes clefs. J\u0026rsquo;ai regénéré et importé toutes mes clefs cela n\u0026rsquo;a pas fonctionné. Vérification de la configuration de la freebox et de mon docker-compose tout est bon de ce côté.\nDans un second temps je me suis concentré le container docker. J\u0026rsquo;ai vérifier la configuration du serveur ssh de gitea. Comme dirait Jean-Claude sur un mal entendu ça peut passer.\ndocker exec -it gitea bash bash-5.1#vi /etc/ssh/sshd_config Le service écoute bien sur le port 22, comme configuré dans mon docker-compose et Git est bien le seul utilisateur autorisé à se connecter. Je décide donc de faire un tour dans les logs de docker via un petit script de ma composition et bingo ! J\u0026rsquo;ai trouvé d\u0026rsquo;où provenait l\u0026rsquo;erreur.\ngitea | Authentication refused: bad ownership or modes for directory /data/git/.ssh gitea | Connection closed by authenticating user git xx.xx.xx.xx port 62830 [preauth] Ni une ni deux je suis allé vérifier le propriétaire du dossier /data/git/.ssh, celui-ci était bon, mais c\u0026rsquo;est au niveau des autorisations que cela clochait. En effet le dossier .ssh était configuré en mode 777 au lieu du mode 700.\nsudo chmod -R 700 /mnt/stock/volumes/gitea/data/git/.ssh Depuis mes requêtes git via SSH fonctionnent parfaitement.\n","date":"2022-03-22T11:21:58+01:00","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/2022/03/22/gitea-no-supported-authentication-methode/","title":"Gitea : No supported authentication methods available (server sent: publickey)"},{"content":"C\u0026rsquo;est un chantier que j\u0026rsquo;avais laissé de côté depuis la migration du blog de wordpress vers hugo, c\u0026rsquo;est aujourd\u0026rsquo;hui chose faite, les commentaires sont enfin ouverts sur le blog, histoire d\u0026rsquo;y apporter un peu plus de vie et pour entendre ce que vous avez à (re)dire sur mes coquilles orhtographiques ou autres. Lorsque l\u0026rsquo;on veut mettre en place un système de commentaires sur un site statique plusieurs outils s\u0026rsquo;offrent à nous. Le plus connu est surement Disqus qui possède un fonctionement plus que discutable, traçage sans gêne des visiteurs, hébergement dans leur cloud, aucune maîtrise sur les données collectées. Pour mon blog je voulais quelque chose que je puisse héberger, de rapide et qui ne traque pas mes visiteurs. Mon choix c\u0026rsquo;est donc porté sur Isso une alternative open-source à Disqus qui peut s\u0026rsquo;héberger facilement et dont j\u0026rsquo;ai la maîtrise totale. La documentation est très bien réalisée, mais j\u0026rsquo;ai rencontré quelques difficultés lors de l\u0026rsquo;installation que je vous détaille ici. Celle-ci se déroule sur container LXC avec pour système un Debian 10.\nInstallation Installation des dépendances afin d\u0026rsquo;utiliser par défaut Python3 et non Python2. En effet j\u0026rsquo;ai rencontré plusieurs problèmes de versions de dépendances avec python2 et n\u0026rsquo;étant plus supporté depuis le 1 Janvier 2020 j\u0026rsquo;ai décidé d\u0026rsquo;utiliser python3.\nsudo apt install python3.7-dev python3.7-pip sqlite3 build-essential Installation de Isso.\nsudo pip3 install isso Ensuite je crée un utilisateur dédié à isso, celui-ci permettra d\u0026rsquo;executé et d\u0026rsquo;envoyer les notifications par courriel et configuration de sont mot de passe.\nsudo adduser isso --disabled-login sudo passwd isso Configuration Isso installé passons maintenant à sa configuration. Pour l\u0026rsquo;occasion j\u0026rsquo;ai créé un dossier dans /etc/isso.d pour y stocker le fichier de configuration.\nmkdir /etc/isso.d sudo vim /etc/isso.d/blog.cfg J\u0026rsquo;ai ensuite renseigné le fichier comme suit.\n[general] name = blog dbpath = /var/lib/isso/blog.comments.db host = https://draconis.me/blog/ max-age = 15m notify = smtp log-file = /var/log/isso.log [moderation] enabled = false [admin] enabled = true password = # Mot de passe de l\u0026#39;utilisateur isso [server] listen = http://localhost:8080 reload = off profile = off public-endpoint = https://isso.draconis.me [guard] enabled = true ratelimit = 2 direct-reply = 3 reply-to-self = false require-author = false require-email = false [smtp] username = # utilisateur capable d\u0026#39;envoyer des courriels password = # son mot de passe host = # serveur d\u0026#39;envoi de courriels port = # le port utilisé security = starttls to = # mon adresse courriel from = # adresse d\u0026#39;envoi des notifications timeout = 10 Rendez-vous dans ma zone DNS afin de créer le sous-domaine isso.draconis.me correspondant au serveur de commentaires.\nisso 0 IN cname draconis.me. Attributions des droits à l\u0026rsquo;utilisateur isso afin qu\u0026rsquo;il puisse écrire dans la base de données et les fichiers de journalisation.\nsudo touch /var/log/isso.log sudo chown isso: /var/log/isso.log sudo mkdir /var/lib/isso sudo chown isso: /var/lib/isso sudo touch /var/lib/isso/blog.comments.db sudo chown isso: /var/lib/isso/blog.comments.db Vérifions maintenant que tout fonctionne correctement.\n# changement d\u0026#39;utilisateur su - isso # lancement de isso /usr/local/bin/isso -c /etc/isso.d/blog.cfg run Si tout vas bien rien de ne doit s\u0026rsquo;afficher dans le terminal. Mais dans mon cas j\u0026rsquo;ai rencontré cette erreur :\nTraceback (most recent call last): File \u0026#34;/usr/local/bin/isso\u0026#34;, line 6, in \u0026lt;module\u0026gt; from isso import main File \u0026#34;/usr/local/lib/python3.7/dist-packages/isso/__init__.py\u0026#34;, line 60, in \u0026lt;m\u0026gt; from werkzeug.wsgi import SharedDataMiddleware ImportError: cannot import name \u0026#39;SharedDataMiddleware\u0026#39; from \u0026#39;werkzeug.wsgi\u0026#39; (/usal/lib/python3.7/dist-packages/werkzeug/wsgi.py) Après une recherche internet il semblerai que la dernière version du paquet werkzeug ne soit pas compatible avec isso et qu\u0026rsquo;il faille rétrograder jusqu\u0026rsquo;à la version 0.16.1.\nsudo pip3 install werkzeug==0.16.1 Une fois ceci fait isso démarre normalement.\nMise en service Maintenant qu\u0026rsquo;isso fonctionne je souhaite qu\u0026rsquo;il démarre en même temps que le serveur, pour cela je crée un service systemd dans /etc/systemd/system/isso.service.\n[Unit] Description=commentaires pour le blog [Service] User=isso Environment=\u0026#34;ISSO_SETTINGS=/etc/isso.d/blog.cfg\u0026#34; ExecStart=/usr/local/bin/isso -c $ISSO_SETTINGS run [Install] WantedBy=multi-user.target Pour finir j\u0026rsquo;active et démarre le service.\nsudo systemctl enable isso sudo systemctl start isso sudo systemctl status isso ● isso.service - lightweight Disqus alternative Loaded: loaded (/etc/systemd/system/isso.service; enabled; vendor preset: ena Active: active (running) since Fri 2020-12-11 10:55:37 CET; 2h 52min ago Main PID: 19318 (isso) Tasks: 1 (limit: 4632) Memory: 27.2M CGroup: /system.slice/isso.service └─19318 /usr/bin/python3 /usr/local/bin/isso -c /etc/isso.d/blog.cfg Dec 11 10:55:37 stromgarde systemd[1]: commentaires pour le blog. A cette étape je vérifie qu\u0026rsquo;isso s\u0026rsquo;éxecute correctement sur le serveur.\nsudo curl localhost:8080/admin \u0026lt;html\u0026gt; \u0026lt;head\u0026gt; \u0026lt;title\u0026gt;Isso admin\u0026lt;/title\u0026gt; \u0026lt;link type=\u0026#34;text/css\u0026#34; href=\u0026#34;https://isso.draconis.me/css/isso.css\u0026#34; rel=\u0026#34;stylesheet\u0026#34;\u0026gt; \u0026lt;link type=\u0026#34;text/css\u0026#34; href=\u0026#34;https://isso.draconis.me/css/admin.css\u0026#34; rel=\u0026#34;stylesheet\u0026#34;\u0026gt; \u0026lt;/head\u0026gt; \u0026lt;body\u0026gt; \u0026lt;div class=\u0026#34;wrapper\u0026#34;\u0026gt; \u0026lt;div class=\u0026#34;header\u0026#34;\u0026gt; \u0026lt;header\u0026gt; \u0026lt;img class=\u0026#34;logo\u0026#34; src=\u0026#34;https://isso.draconis.me/img/isso.svg\u0026#34; alt=\u0026#34;Wynaut by @veekun\u0026#34;/\u0026gt; \u0026lt;div class=\u0026#34;title\u0026#34;\u0026gt; \u0026lt;a href=\u0026#34;./\u0026#34;\u0026gt; \u0026lt;h1\u0026gt;Isso\u0026lt;/h1\u0026gt; \u0026lt;h2\u0026gt;Administration\u0026lt;/h2\u0026gt; \u0026lt;/a\u0026gt; \u0026lt;/div\u0026gt; \u0026lt;/header\u0026gt; \u0026lt;/div\u0026gt; \u0026lt;main\u0026gt; \u0026lt;div id=\u0026#34;login\u0026#34;\u0026gt; Administration secured by password: \u0026lt;form method=\u0026#34;POST\u0026#34; action=\u0026#34;https://isso.draconis.me/login\u0026#34;\u0026gt; \u0026lt;input type=\u0026#34;password\u0026#34; name=\u0026#34;password\u0026#34; autofocus /\u0026gt; \u0026lt;/form\u0026gt; \u0026lt;/div\u0026gt; \u0026lt;/main\u0026gt; \u0026lt;/div\u0026gt; \u0026lt;/body\u0026gt; Je constate que la page d\u0026rsquo;administration d\u0026rsquo;isso s\u0026rsquo;affiche correctement.\nConfiguration de Nginx J\u0026rsquo;utilise Nginx comme proxy afin de pouvoir chiffrer les connexions sur le serveurs de commentaires. Dans le dossier /etc/nginx/site-available/isso.\nserver { listen 80; server_name draconis.me; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name isso.draconis.me; ssl_certificate /etc/letsencrypt/live/draconis.me/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/draconis.me/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/draconis.me/chain.pem; ssl_stapling on; ssl_stapling_verify on; resolver 80.67.169.12 80.67.169.40 valid=300s; resolver_timeout 5s; add_header Strict-Transport-Security \u0026#34;max-age=15552000; preload\u0026#34;; access_log /var/log/nginx/isso.access.log; error_log /var/log/nginx/isso.error.log; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://localhost:8080; } } J\u0026rsquo;active, puis je vérifie que la configuration du vhost est bonne et pour finir je relance le serveur nginx\nsudo ln -s /etc/nginx/site-available/isso /etc/nginx/site-enabled/ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful sudo systemctl restart nginx Intégration au blog J\u0026rsquo;ajoute ce morceau de code directement dans mon template. Dans le cas d\u0026rsquo;un site sous hugo à la fin du fichier single.html dans ```themes/mon_theme/layouts/_default/single.htmljuste avant la dernière balise {{end}}``.\n\u0026lt;div class=\u0026#34;post-footer\u0026#34;\u0026gt; \u0026lt;section id=\u0026#34;isso-thread\u0026#34;\u0026gt;\u0026lt;/section\u0026gt; \u0026lt;script data-isso=\u0026#34;https://isso.draconis.me/\u0026#34; src=\u0026#34;https://isso.draconis.me/js/embed.min.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;/div\u0026gt; Conclusion Maintenant à vous me dire si ce billet vous a aidé en me laissant un petit commentaire ci-dessous. :)\n","date":"2020-12-11T11:21:58+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/2020/12/11/ouverture-des-comentaires/","title":"Ouverture des commentaires"},{"content":"Piwigo est une application de gestion d\u0026rsquo;albums photo pour le web, que j\u0026rsquo;utilise pour partager mes photos publiques ainsi que mes photos privées avec le reste de la famille. Afin de faciliter son utilisation pour Papi et Mamie et pour rester dans l\u0026rsquo;esprit de mon site j\u0026rsquo;ai choisi de placer piwigo dans un sous-dossier plutôt que d\u0026rsquo;utiliser un sous domaine.\nObjectif Rendre ma galerie de photo publique et privée accessible avec l\u0026rsquo;url draconis.me/photo/ plutôt qu\u0026rsquo;avec un sous-domaine.\nConfiguration de Nginx Tout ce passe dans le fichier de configuration du vhost draconis.me. Pour ce faire rendez-vous dans le dossier /etc/nginx/sites-available/ de nginx. J\u0026rsquo;ai ensuite ajouté ces lignes dans le bloc serveur :\nsudo nano /etc/nginx/sites-available/draconis.me server { listen 443 ssl http2; server_name draconis.me; ... location /photo { root /var/www/; location ~ ^(?\u0026lt;script_name\u0026gt;.+?\\.php)(?\u0026lt;path_info\u0026gt;/.*)?$ { include /etc/nginx/fastcgi_params; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; fastcgi_param PATH_INFO $path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_scr$ fastcgi_param HTTPS on; } } ... access_log /var/log/nginx/draconis.access.log; error_log /var/log/nginx/draconis.error.log; } Un redémarage de nginx plus tard, ma gallerie est enfin acessible via l\u0026rsquo;adresse web suitvante : https://draconis.me/photo. Papi et Mamie sont ravis.\nUne idée ? Un commentaire ? Une coquille dans le billet ? Discutons-en sur mastodon\n","date":"2020-12-03T14:46:16+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/piwigo-dans-un-sous-dossier-nginx/","title":"Piwigo dans un sous-dossier Nginx"},{"content":"Nichées au coeur des Alpilles, sur la route de Saint-Rémy-en-Provence les carrières de lumières nous proposent un voyage immersif aux coeur de l\u0026rsquo;art et la musique. Ces carrières de calcaire blanc autrefois nommées Carrières des Bringasses et Grands Fonts sont situées aux Beaux-de-Provence. Elles ont été principalement exploité pour la construction du château et de la cité jusqu\u0026rsquo;en en 1935. C\u0026rsquo;est en 1959 qu\u0026rsquo;elles furent remises sur le devant de la scène, grâce à Jean Cocteau qui y effectua quelques séquences pour son film Le Testament d’Orphée.\nLe réel succès viendra quinze ans plus tard lors de la visite d\u0026rsquo;Albert Plécy qui tomba littéralement amoureux des carrières des Grands-Fonds. C\u0026rsquo;est alors qu\u0026rsquo;il se lance dans le projet très novateur Cathédrale d\u0026rsquo;images. Cathédrale d\u0026rsquo;images profitait du site exceptionnel qu\u0026rsquo;offrait les Carrières pour diffuser des diapositives géantes d\u0026rsquo;oeuvres d\u0026rsquo;arts accompagnées de musiques à thèmes. Aujourd\u0026rsquo;hui le procédé est toujours le même seule la technique a évolué. Ce ne sont plus des diapositives mais des vidéos qui sont projetées. En 2008 la mairie expulse illégalement la société (Cathédrale d\u0026rsquo;images) fondée par Albert Plécy pour confier en 2011 la gestion à la société Culturespaces filliale d\u0026rsquo;Engie, sur fond d\u0026rsquo;appel d\u0026rsquo;offre préférentiel, qui rebaptise le site Carrières de Lumières. Et c\u0026rsquo;est le début de mon expérience avec ce site très impressionant, je regrette tout de même le manque d\u0026rsquo;informations sur l\u0026rsquo;époque de son expploitation en tant que carrière de calcaire blanc.\nDali Mesures Coronavirus obligent , nous nous équipons de nos masques et pénétrons dans une pénombre intermitente qui nécessite un petit temps d\u0026rsquo;adaptation. A l\u0026rsquo;intérieur la première chose qui m\u0026rsquo;est venu à l\u0026rsquo;esprit c\u0026rsquo;est \u0026ldquo;immense\u0026rdquo;, on se sent tout petit face à ces gros blocs de calcaire perpendiculaires les uns des autres. Ensuite vient les textures, je n\u0026rsquo;ai pu m\u0026rsquo;empêcher de toucher de les surfaces. Lisses et rugueuses à la fois, je sens sous chacun de mes doigts le travail d\u0026rsquo;excavation à coup de marteau et de burrin. Il y a quelque-chose de puissant qui se détache et qui rayonne à chacune de mes intéractions physiques. Le fait même de déambuler parmi ses mastodontes de calcaire impose la modestie et le respect. Tout est droit, abrupte et saillant laissant entrevoir la dureté de cet environnement, ici pas de place pour les sentiments ni pour la douceur et le réconfort qu\u0026rsquo;offrent les rondeurs. J\u0026rsquo;ai l\u0026rsquo;impression qu\u0026rsquo;ils sont taillés à l\u0026rsquo;effigie des hommes qui y ont travaillés toutes ces années. Une roche dure pour des hommes durs, c\u0026rsquo;est en tout cas l\u0026rsquo;impression que j\u0026rsquo;en ai.\nGaudi Puis ensuite je découvre les projections et là bizarrement je suis moins emballé. Techniquement le rendu est magnifique tout s\u0026rsquo;accorde parfaitement mais je ne trouve pas l\u0026rsquo;expérience transcendante. Je m\u0026rsquo;attendais à quelque-chose de plus immersif, de plus grandiose, à la hauteur de la carrière et de ce qu\u0026rsquo;elle dégage. Je ne fais que me promener au milieu de vidéos géantes légèrements animées et accompagnées de musique. Rien ne m\u0026rsquo;a émotionellement bouleversé, pris aux tripes. Toute la projection est restée fade et insipide. Peut-être que le choix des artistes y est pour quelque-chose, cette année le thème s\u0026rsquo;est porté sur Gaudi et Dali deux artistes qui me laissent très indiférents à vrai dire. Il en aurait peut-être été autrement avec des artistes comme Alan Lee ou Hans Ruedi Giger . Le choix musical m\u0026rsquo;a déçu, mis à part quelques passages des Pink Floyd dont la musique se marie très bien avec certaines oeuvres de Dali. Je me suis ennuyé tout le long, bien paramétrer mon apareil photo afin de réaliser de jolis clichés m\u0026rsquo;a plus tenu en haleine que cette projection. Cela n\u0026rsquo;enlève rien à la prouesse technique et au travail réalisé pour donner vie ses oeuvres. La qualité des images, du son, est indégnable et tout s\u0026rsquo;emboîte parfaitement. Pouvoir se promener au milieu de ses oeuvres d\u0026rsquo;arts, les regarder sous des angles que les expositions classiques ne permettent pas est foncièrement unique. Mais il m\u0026rsquo;a manqué le côté immersif de l\u0026rsquo;expérience ou peut-être que je n\u0026rsquo;ai pas su le percevoir. J\u0026rsquo;ai été plus impressionné et admiratif par la carrière en elle-même que le reste. A l\u0026rsquo;inverse mon épouse et notre amie elles se sont régalées, émerveillés, elles sont sorties enchantées.\nDali Je m\u0026rsquo;aperçois que la subjectivité est très importante dans l\u0026rsquo;apréhension et la découverte d\u0026rsquo;une oeuvre d\u0026rsquo;art quelle qu\u0026rsquo;elle soit. Au final la meilleure reconnaissance pour un artiste c\u0026rsquo;est que son oeuvre soit vue et partagée, peut importe que l\u0026rsquo;on aime ou pas, plutôt que de finir seule au fond d\u0026rsquo;un grenier. Pour finir j\u0026rsquo;y retournerai surement, mais en sachant à quoi m\u0026rsquo;attendre, je serai plus sélectif sur le choix artistique proposé et qui sait l\u0026rsquo;immersion m\u0026rsquo;attendra peut-être cachée derrière un bloc de calcaire la prochaine fois.\nVoir l\u0026rsquo;album photo de la sortie\n","date":"2020-10-06T08:28:53+02:00","image":"https://archives.draconis.me/images/2020/10/carrieres-de-lumieres-8.jpg","permalink":"https://archives.draconis.me/p/carri%C3%A8res-de-lumi%C3%A8res/","title":"Carrières de Lumières"},{"content":"Beaucoup d\u0026rsquo;applications web que j\u0026rsquo;utilise au quotidien nécessitent une base de données sql. Ne voulant pas encombrer inutilement le serveur hôte avec des serveurs sql disséminés dans plusieurs containers, j\u0026rsquo;ai décidé de centraliser le serveur sql pour toutes mes applications web.\nConfiguration du serveur Rien de compliqué, il suffit d\u0026rsquo;éditer le fichier\nvi /etc/mysql/mariadb.conf.d/50-server.cnf de chercher la ligne\nbind-address = 127.0.0.1 de la remplacer par\nbind-address = 192.168.0.125 #ip sur le réseau local du serveur Un redémarrage plus tard\nsudo systemctl restart mariadb notre serveur sql est ouvert à notre réseau local. Il ne reste plus qu\u0026rsquo;à créer un utilisateur accompagné de sa base de données afin de réaliser une tentative une connexion distante. Par la suite de commencer la migration de toutes mes bases de données disséminées sur mes containers.\nCREATE DATABASE `mabase`; GRANT ALL PRIVILEGES ON `mabase`.* TO \u0026#34;monlogin\u0026#34;@\u0026#34;%\u0026#34; identified by \u0026#39;monpass\u0026#39;; FLUSH PRIVILEGES; Ne pas oublier le \u0026quot;%\u0026quot; sur la ligne \u0026quot;monlogin\u0026quot;@\u0026quot;%\u0026quot; ce paramètre défini que l\u0026rsquo;utilisateur peut se connecter depuis n\u0026rsquo;importe où. On peut restreindre encore cet accès en spéficiant une adresse du réseau local à la place du \u0026quot;%\u0026quot;.\nEssai de connexion Depuis une autre machine sur le réseau j\u0026rsquo;installe le client mariadb\nsudo apt install mariadb-client Je tente de me connecter avec l\u0026rsquo;utilisateur \u0026quot;monlogin\u0026quot;.\nmysql -u monlogin -h 192.168.0.125 -p Bingo ! cela fonctionne, en même temps je n\u0026rsquo;en doutais pas une minute :) .\nConclusion Désormais je peux me connecter depuis n\u0026rsquo;importe quel serveur sur mon réseau local, et ainsi centraliser toutes mes bases de données sur un seul serveur sql, contrairement au temps où j\u0026rsquo;avais un serveur sql pour chaque bases.\n","date":"2020-09-25T09:32:32+02:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/ouvrir-son-serveur-mariadb-au-reseau-local/","title":"Ouvrir son serveur Mariadb au réseau local"},{"content":"Objectif : Soulager apache pendant les heures d’affluences, soulager ma machine virtuelle en consommation mémoire, permettre au contenu statique d’être téléchargé plus rapidement. Héberger plusieurs serveurs web avec une seule connexion internet et donc un seul port 80 ouvert sur le pare-feu.\nfigure service apache2 stop apt-get install nginx service nginx stop Mise en place : 1.Apache : Modifier le fichier ports.conf et les fichiers de configurations du ou des hôtes virtuels.\nnano /etc/apache2/ports.conf\nListen 80 Listen 81 Listen 82 Listen 85 Listen 86 # port d\u0026#39;écoute pour les requêtes SSL \u0026lt;IfModule mod_ssl.c\u0026gt; # If you add NameVirtualHost *:443 here, you will also have to change # the VirtualHost statement in /etc/apache2/sites-available/default-ssl # to \u0026lt;VirtualHost *:443\u0026gt; # Server Name Indication for SSL named virtual hosts is currently not # supported by MSIE on Windows XP. Listen 8083 Listen 8084 \u0026lt;/IfModule\u0026gt; \u0026lt;IfModule mod_gnutls.c\u0026gt; Listen 8083 Listen 8084 \u0026lt;/IfModule\u0026gt; Sur les hôtes virtuels voici la modification à apporter (exemple) :\n\u0026lt;VirtualHost *:85\u0026gt; ServerName domain.tld DocumentRoot /var/www/blog/ \u0026lt;Directory /\u0026gt; Options FollowSymLinks AllowOverride None \u0026lt;/Directory\u0026gt; \u0026lt;Directory /var/www/blog\u0026gt; Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all \u0026lt;/Directory\u0026gt; ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ \u0026lt;Directory \u0026#34;/usr/lib/cgi-bin\u0026#34;\u0026gt; AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all \u0026lt;/Directory\u0026gt; ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined Alias /doc/ \u0026#34;/usr/share/doc/\u0026#34; \u0026lt;Directory \u0026#34;/usr/share/doc/\u0026#34;\u0026gt; Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 \u0026lt;/Directory\u0026gt; ServerSignature Off \u0026lt;/VirtualHost\u0026gt; Pour que les ip soient correctement journalisées sur le serveur apache, installer :\napt-get install libapache2-mod-rpaf 2.NGINX Configuration de nginx en mode reverse proxy :\nnano /etc/nginx/proxy_params\nproxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; client_header_buffer_size 64k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 16k; proxy_buffers 32 16k; proxy_busy_buffers_size 64k; Configuration globale de nginx :\nuser www-data; worker_processes 2; pid /var/run/nginx.pid; events { worker_connections 1024; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_tokens off; server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable \u0026#34;msie6\u0026#34;; gzip_min_length 0; gzip_vary on; gzip_proxied any; gzip_comp_level 5; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; ## # nginx-naxsi config ## # Uncomment it if you installed nginx-naxsi ## #include /etc/nginx/naxsi_core.rules; ## # nginx-passenger config ## # Uncomment it if you installed nginx-passenger ## #passenger_root /usr; #passenger_ruby /usr/bin/ruby; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } Création d’un hôte virtuel pour les différentes redirections\nnano /etc/nginx/sites-enabled/reverse\n#exemple de redirection depuis le port 80 vers le port 85 d\u0026#39;apache server { listen 80; server_name domain.tld; access_log /var/log/olivier.access.log; error_log /var/log/olivier.nginx_error.log debug; location / { proxy_pass http://127.0.0.1:85/; } } #Ici les images du blog sont chargé directement par nginx qui est plus performant qu\u0026#39;apache sur ce genre de contenu server { listen 80; server_name sub.domain.tld; location = /50x.html { root /var/www/nginx-default; } access_log /var/log/pictures.nginx.access.log; error_log /var/log/pictures.nginx.error.log; index index.html; location / { expires max; root /var/www/blog/content/images/; } } Pour finir on démarre les services :\nservice apache2 start service nginx start ","date":"2019-11-13T11:32:45+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/nginx-en-reverse-proxy-apache2/","title":"Nginx en reverse proxy d'apache2"},{"content":"J\u0026rsquo;évite autant que faire ce peut les GUI pour la réalisation de mes tâches d\u0026rsquo;administration. Je préfère la simplicité et la lisibilité d\u0026rsquo;une bonne veille ligne de commande. Depuis la version 10, les développeurs de Nextcloud ont mis en place l\u0026rsquo;application Updater qui permet de mettre à jour automatiquement Nextcloud lorsqu\u0026rsquo;une version mineure est publiée, mais nous laisse la main pour migrer sur une version majeur le tout réalisable depuis l\u0026rsquo;interface web d\u0026rsquo;administration. En ce jour de mise à jour majeure j\u0026rsquo;ai eu envie de passer par le terminal.\nVérifier les droits Il est important que les droits sur le répertoire d\u0026rsquo;installation de Nextcloud soient configurés correctement. Par sécurité seul l\u0026rsquo;utilisateur web doit pouvoir modifier ces fichiers. C\u0026rsquo;est pour cela qu\u0026rsquo;il est recommandé d\u0026rsquo;exécuter la commande de mise à jour via cet utilisateur. A noter qu\u0026rsquo;il est possible d\u0026rsquo;effectuer la mise à jour en root mais il faudra par la suite réaffecter les droits correctement. Pour vérifier les droits sous Debian :\nls -la /var/www/nextcloud total 160 drwxr-xr-x 14 www-data www-data 4096 oct. 11 10:31 . drwxr-xr-x 16 www-data www-data 4096 oct. 9 11:24 .. drwxr-xr-x 32 www-data www-data 4096 oct. 11 10:31 3rdparty drwxr-xr-x 48 www-data www-data 4096 oct. 11 10:36 apps -rw-rw---- 1 www-data www-data 12063 oct. 11 10:31 AUTHORS drwxr-xr-x 2 www-data www-data 4096 oct. 11 10:35 config -rw-rw---- 1 www-data www-data 3805 oct. 11 10:31 console.php -rw-rw---- 1 www-data www-data 34520 oct. 11 10:31 COPYING drwxr-xr-x 23 www-data www-data 4096 oct. 11 10:31 core -rw-rw---- 1 www-data www-data 4986 oct. 11 10:31 cron.php -rw-rw---- 1 www-data www-data 2478 oct. 11 10:35 .htaccess -rw-rw---- 1 www-data www-data 156 oct. 11 10:31 index.html -rw-rw---- 1 www-data www-data 3172 oct. 11 10:31 index.php drwxr-xr-x 6 www-data www-data 4096 oct. 11 10:31 lib -rwxr-xr-x 1 www-data www-data 283 oct. 11 10:31 occ drwxr-xr-x 2 www-data www-data 4096 oct. 11 10:31 ocm-provider drwxr-xr-x 2 www-data www-data 4096 oct. 11 10:31 ocs drwxr-xr-x 2 www-data www-data 4096 oct. 11 10:31 ocs-provider -rw-rw---- 1 www-data www-data 2951 oct. 11 10:31 public.php -rw-rw---- 1 www-data www-data 5139 oct. 11 10:31 remote.php drwxr-xr-x 4 www-data www-data 4096 oct. 11 10:31 resources -rw-rw---- 1 www-data www-data 26 oct. 11 10:31 robots.txt drwxr-xr-x 12 www-data www-data 4096 oct. 11 10:31 settings -rw-rw---- 1 www-data www-data 2232 oct. 11 10:31 status.php drwxr-xr-x 3 www-data www-data 4096 oct. 11 10:31 themes drwxr-xr-x 2 www-data www-data 4096 févr. 27 2019 updater -rw-rw---- 1 www-data www-data 101 oct. 11 10:31 .user.ini -rw-rw---- 1 www-data www-data 362 oct. 11 10:31 version.php Si ce n\u0026rsquo;est pas le cas il faut les accorder à l\u0026rsquo;utilisateur web, sous Debian cela donne :\nsudo chown -R www-data:www-data /var/www/nextcloud sudo chmod -R 775 /var/www/nextcloud/ Mettre à jour Toujours dans le répertoire Nextcloud /var/www/nextcloud :\nsudo -u www-data php updater/updater.phar A cet instant le processus est lancé.\nfigure1 Pour terminer le programme vous demande si vous souhaitez garder le mode maintenance activé ou non.\nApplications Tierces A cette même occasion il est possible de mettre à jour les applications tierces téléchargées depuis le dépôt.\nVérifier les mises à jour.\nsudo -u www-data php occ update:check Update for files_rightclick to version 0.15.1 is available. 1 update available Mettre à jour\nsudo -u www-data php occ app:update --all files_rightclick new version available: 0.15.1 files_rightclick updated Il est possible de mettre à jour une application en particulier.\nsudo -u www-data php occ app:update \u0026lt;nom_de_l\u0026#39;application\u0026gt; Problème rencontré Durant la mise à jour j\u0026rsquo;ai rencontré le message d\u0026rsquo;erreur suivant :\nSyntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes figure2 En fouillant le forum Nextcloud j\u0026rsquo;ai trouvé la solution à mon problème.\nsudo mysql -u root -p MariaDB [(none)]\u0026gt; use nextcloud; MariaDB [nextcloud]\u0026gt; set global innodb_large_prefix=on; MariaDB [nextcloud]\u0026gt; set global innodb_file_format=Barracuda; sudo -u www-data php occ maintenance:repair ","date":"2019-10-11T10:55:26+02:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/mettre-a-jour-nextcloud-via-le-terminal/","title":"Mettre à jour Nextcloud via le terminal"},{"content":"Petit mémo sur l\u0026rsquo;utilisation de tar.\nCompresser Pour compresser un fichier ou un répertoire au format \u0026quot;.tar.gz\u0026quot;.\ntar czvf \u0026lt;nom_archive\u0026gt;.tar.gz \u0026lt;nom_rep ou nom_fichier\u0026gt; \u0026ldquo;c\u0026rdquo; : créer une nouvelle archive \u0026ldquo;z\u0026rdquo; : permet d\u0026rsquo;activer la compression \u0026ldquo;gzip\u0026rdquo; pour un taux de compression plus important \u0026ldquo;v\u0026rdquo; : mode verbeux, permet d\u0026rsquo;afficher dans le détail les fichiers compressés \u0026ldquo;f\u0026rdquo; : utilise le fichier d’archive ou le périphérique \u0026lt;nom_archive\u0026gt; Décompresser Pour décompresser un fichier ou un répertoire au format \u0026quot;.tar.gz\u0026quot;.\ntar xzvf \u0026lt;nom_archive\u0026gt;.tar.gz -C \u0026lt;rep_cible\u0026gt; \u0026ldquo;x\u0026rdquo; : décompresse l\u0026rsquo;archive \u0026ldquo;z\u0026rdquo; : spécifie qu\u0026rsquo;il s\u0026rsquo;agit d\u0026rsquo;une compression au format \u0026ldquo;gzip\u0026rdquo; \u0026ldquo;v\u0026rdquo; : mode verbeux, permet d\u0026rsquo;afficher dans le détail les fichiers compressés \u0026ldquo;f\u0026rdquo; : utilise le fichier d’archive ou le périphérique \u0026lt;nom_archive\u0026gt; ","date":"2019-10-09T10:55:26+02:00","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/p/compresser-decompresser-en-tar-gz/","title":"Compresser et décompresser en tar.gz"},{"content":"Mon fils et moi sommes complètement dingue du jeu don\u0026rsquo;t Starve.\nJusqu’à présent mon fils jouait sur mon compte Steam et par conséquent il ne pouvait pas faire ce qu’il voulait sur le jeu. Pour Noël j’ai donc décidé de lui acheter le Jeu et la version multijoueurs pour que nous puissions jouer ensemble.\nComme le jeu est complètement dématérialisé, j’ai voulu lui créer une version collector fait par Papa et Maman qui s’est greffé au projet un peu plus tard. Je lui est donc acheté le Jeu, sa bande originale et trois figurines de collection sur la boutique du jeu. Mais pour que cela soit vraiment collector je voulais quelque-chose en plus que lui seul aurai, j’ai donc contacté par courriel les dévelloppeurs du jeu pour leur demander une photo de wilson son personnage préféré, avec un petit mot pour lui. Ils se sont montrés très enchanté par cette demande et en retour ils m’ont envoyé plein de goodies, de quoi faire un diorama, poster géant etc..\nAvec cette base nous avons (mon épouse et moi-même) commencer à bosser sur la boîte.\nPetite galerie récapitulative de la fabrication de collector box.\nUn grand merci à l’équipe de don’t starve qui s’est montré très disponible et généreuse. Vous êtes géniaux 🙂\nENGLISH VERSION My son and I are raving of the game don’t starve. Its graphics, its music, its playability, in brief we do not count any more the last hours above.\nUntil now my son played on my account Steam and consequently he could not make what he wanted on the game. For Christmas I have decided to buy him the Game and the DLC.\nAs the game is completely dematerialized, I wanted to create him a collector’s version makes by Dad and Mom who was joined the project later. I bought for him the Game, its soundtrack, and three figurines on the shop of the game. I contact the developper’s game to have some goodies and they send me a lot of.\nThis is a small recapitulative gallery of the made of the kitchounet’s box.\nA big thank you to the don’t starve’s team for they availability and generosity. You are awesome 🙂\nFigure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure ","date":"2019-10-07T10:55:26+02:00","image":"https://archives.draconis.me/images/2019/10/IMG_0169.jpg","permalink":"https://archives.draconis.me/p/noel-dont-starve/","title":"Noël Don't Starve"},{"content":"Voici le userChrome.css que j\u0026rsquo;utilise avec Firefox pour qu\u0026rsquo;il soit raccord avec mon thème I3wm. J\u0026rsquo;ai aussi modifié sa structure car je ne supporte pas les onlgets au dessus de la barre d\u0026rsquo;aresse.\nfigure N\u0026rsquo;étant pas développeur j\u0026rsquo;ai associé des morceaux de codes que j\u0026rsquo;ai trouvé :\nsur différentes sources internet pour les couleurs.\nsur le groupe reddit r/firefoxcss pour la partie de la barre cachée.\nPour utiliser ce fichier sous windows : Télécharger le fichier userChrome.css Se rendre dans le dossier C:\\Users\u0026quot;nom utilisateur\u0026quot;\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\u0026quot;profile_mozilla\u0026quot;.default Créer le dossier chrome s\u0026rsquo;il n\u0026rsquo;existe pas Copier le fichier userChrome.css Ouvrir Firefox et taper about:config dans la barre d\u0026rsquo;adresse Chercher la ligne toolkit.legacyUserProfileCustomizations.stylesheets et changer sa valeur à true Redémarrer firefox et profiter Pour utiliser ce fichier sous linux : Télécharger le fichier userChrome.css Se rendre dans le dossier ~/.mozilla/firefox/\u0026ldquo;profile_mozilla\u0026rdquo;.default/ Créer le dossier chrome s\u0026rsquo;il n\u0026rsquo;existe pas Copier le fichier userChrome.css Ouvrir Firefox et taper about:config dans la barre d\u0026rsquo;adresse Chercher la ligne toolkit.legacyUserProfileCustomizations.stylesheets et changer sa valeur à true Redémarrer firefox et profiter Code source Pour examiner le fichier d\u0026rsquo;un peu plus près c\u0026rsquo;est par ici\n","date":"2019-10-02T09:04:49+02:00","image":"https://archives.draconis.me/images/header/blogueries.jpg","permalink":"https://archives.draconis.me/p/userchrome-css-pour-firefox/","title":"userChrome.css pour Firefox"},{"content":"Petit aide mémoire pour une installation rapide de certbot lorsque je crée un nouveau container sous debian. Cet aide mémoire est réalisé sur Buster, il sera complété à chaque sortie de debian stable. Certbot est le nouvel outil de l’EFF permettant de gérer les certificats SSL sur les serveurs. Il est aujourd’hui dédié aux certificats gratuits Let’s Encrypt.\nInstallation de certbot : sudo apt install certbot Initialisation de certbot, création des répertoires de bases et fichiers de conf : sudo certbot certonly Création d’un fichier de configuration pour ne pas répéter les mêmes commandes à chaque génération ou régénration de certificat dans le fichier /etc/letsencrypt/cli.ini : # Taille de la clé RSA sur 4096 bits au lieu de 2048 bits de base rsa-key-size = 4096 # Adresse courriel de l\u0026#39;admin pour le renouvellement de certificat email = admin@your.net # Utilisation de l\u0026#39;interface texte plutôt que ncruses text = True # Utilisation du port 80 pour la validation du domaine standalone-supported-challenges = http-01 Génération du certificat : sudo service nginx stop sudo certbot certonly --standalone -d mondomaine.tld sudo service nginx start Et voilà un certificat tout neuf pour 90 jours, si l’adress courriel est renseigné dans le fichier de config un rappel sera envoyé par courriel avant l’expiration du certificat.\n","date":"2019-09-18T09:10:52+02:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/installer-certbot-sur-debian/","title":"Installer Certbot sur Debian"},{"content":"Que faire avec des bidons d\u0026rsquo;huile d\u0026rsquo;environ 200 ou 300L ? Un barbecue ? Je suis déjà équipé il me convient très bien. Et pourquoi pas un four à bois transportable! Pour ceux qui me suivent je fais mon pain au levain maison. Nous sommes aussi de grand amateur de pizzas, faites maison bien sûr, cela serait parfais surtout que je rêve de construire ce genre de four depuis longtemps. Vivant en appartement j\u0026rsquo;ai laissé ce rêve de côté, mais depuis peu nous habitons dans une maison avec jardin, l\u0026rsquo;idée me reprenait de temps à autre mais en location pour le moment hors question de faire un four maçonné, bref dans les règles de l\u0026rsquo;art. C\u0026rsquo;est en voyant ces bidons que l\u0026rsquo;idée de faire un four transportable me vint. Ni une ni deux ils étaient dans ma voiture direction le jardin pour commencer les préparatifs.\nfigure Avant de réaliser quelques opérations, j\u0026rsquo;ai vidé, récupéré l\u0026rsquo;huile moteur que j\u0026rsquo;ai ensuite porté à la déchèterie ne sachant pas si l\u0026rsquo;huile était encore utilisable, dommage. J\u0026rsquo;ai ensuite découpé la partie du bidon où se trouve les bouchons sur 10cm. Cela me permettra par la suite de travailler plus facilement à l\u0026rsquo;intérieur.\nfigure Nettoyage à l\u0026rsquo;eau chaude et au Saint-Marc en poudre pour enlever les derniers résidus d\u0026rsquo;huile dans le bidon. Ce n\u0026rsquo;est pas vraiment l\u0026rsquo;idéal pour la suite des travaux.\nfigure C’était la partie la plus facile, maintenant il me faut travailler sur le cadre qui soutiendra le tout. Mais ce sera pour le prochain épisode.\n","date":"2019-05-09T14:08:21+02:00","image":"https://archives.draconis.me/images/2019/05/four2-ep1.jpg","permalink":"https://archives.draconis.me/p/diy-transformer-un-bidon-en-four-a-bois-ep1/","title":"DIY : Transformer un bidon en four à bois Ep.1"},{"content":"Objectif Déplacer le dossier data de nextcloud vers un autre disque dur plus grand. Le dossier data contient les données de tous les utilisateurs :\nles fichiers les agendas les contacts et autres Mise en place 1. Arrêt du serveur web.\nservice stop nginx #pour nginx Installer le nouveau disque dur, le partitionner, le formater et le monter. Pour le partitionner, j’ai utilisé cfdisk.\nfigure1 2. Le formatage.\nmkfs.ext4 /dev/sdb 3. Montage au système.\nmkdir /mnt/datacloud mount /dev/sdb1 /mnt/datacloud Afin que le montage soit permanent il faut éditer le fichier /etc/fstab pour ajouter cette ligne en fin de fichier :\n/dev/sdb1 /mnt/datacloud ext4 defaults 0 0 4. Migration des données.\nA présent les données peuvent être déplacées :\nmv /var/www/nextcloud/data/ /mnt/datacloud/data Cela prendra plus ou moins de temps en fonction de la taille du dossier.\nEnsuite mise en place des droits, sans cela les données ne seront pas visible depuis l’interface Web. Il faut donner les droits à l’utilisateur qui gère le service web sur le serveur, sous Debian il s’agit de « www-data ».\nchown -R www-data:www-data /mnt/datacloud/data/ 5. Nextcloud.\nModification de la configuration de nextcloud.\nsudo nano /var/www/nextcloud/config/config.php Chercher la ligne datadirectory et modifier le champs avec le nouveau chemin.\n\u0026#39;datadirectory\u0026#39; =\u0026gt; \u0026#39;/mnt/datacloud/data\u0026#39;, Pour terminer, démarrage du serveur web :\nsudo systemctl start nginx Il n\u0026rsquo;y a plus qu\u0026rsquo;à se connecter et vérifier que nos petits ont bien été récupérés.\n","date":"2019-04-19T09:28:34+02:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/deplacer-le-dossier-data-de-nextcloud/","title":"Déplacer le dossier Data de Nextcloud"},{"content":"Après un mois et demi de travail j\u0026rsquo;ai enfin migré mon blog depuis Wordpress vers un site statique généré par hugo. Ce ne fut pas sans mal et il me reste encore pas mal d\u0026rsquo;articles à migrer. Mais l\u0026rsquo;essence même du blog est maintenant en ligne. Dans l\u0026rsquo;ensemble cette migration ne s\u0026rsquo;est pas faîte dans la douleur et c\u0026rsquo;est déjà beaucoup.\nPourquoi ? La raison principale s\u0026rsquo;appelle Guntenberg malgré mes efforts pour l\u0026rsquo;adopter et changer mes habitudes d\u0026rsquo;écritures, je n\u0026rsquo;ai jamais réellement accroché avec cet éditeur en ligne. Vers la fin je passais plus de temps sur la mise en page et la structuration de mes articles plutôt que sur l\u0026rsquo;écriture. De ce fait écrire devenait petit à petit une corvée, cela ajouté à d\u0026rsquo;autres contraintes comme le manque de temps, le manque d’inspiration, et bien d’autres. Déjà que je n’étais pas très prolifique, J’ai fini par écrire de moins en moins. La seconde raison qui m’a poussée vers un site statique est l’usine à gaz qu’est devenu Wordpress et le gaspillage ressources nécessaires pour le faire fonctionner. Sous WP l’espace disque occupé par le blog était de 1,1 Go pour 8 ans d’existence, sous hugo il n’a besoin, actuellement, que de 93 Mo. Trouver un thème que me plaisait, sans version premium, sans mouchards, mis à jour régulièrement devenait une activité à part entière. Idem pour les quelques extensions que j’utilisais. Au niveau ressources il y a aussi tout l’attirail pour faire fonctionner wordpress :\nServeur Web : Nginx PHP : Fpm Base de données : Mariadb Tout ce petit monde avec d’autres services prenait un mal un plaisir à tourmenter mon pauvre et valeureux serveur qui a fêté ses 8 ans lui aussi le mois dernier. Autant de programme à administrer cela prend du temps, de mon temps libre. Si j’avais le temps de le faire dans les années précédentes ce n’est plus cas aujourd’hui. A chaque fois que je me connectais pour écrire, j’étais toujours accaparé par une mise à jour, une opération de maintenance, ou autre. Le modèle Wordpress ne correspondait plus avec mes habitudes quotidiennes. Le site statique n’a besoin que d’un seul programme Nginx dans mon cas dont les mises à jour sont confiées à apt. Le renouvellement des certificats ssl est la seule opération d’administration qui me reste. Exit donc les multiples versions de php à maintenir et la surveillance des bases sql. Pour finir j’avais envie d’essayer autre chose de nouveauté. Je lis beaucoup de blog qui sont développés avec un site statique. Et tous sont unanime, c’est simple, peu chronophage, multiplateforme, rapide à mettre en place. Une chose était sûr le modèle Wordpress ne correspondait plus à mes habitudes de blog.\nComment ? Mon choix c’est directement porter sur le générateur hugo, parce que j\u0026rsquo;ai trouvé beaucoup de sources sur ce générateur et c\u0026rsquo;est le prénom de mon neveu. Ce dernier argument prévalant sur tous les autres :). Sa simplicité, sa documentation, ont finis de me convaincre. Du coup je n\u0026rsquo;ai pas eu l’envie d’essayer les autres générateurs. J\u0026rsquo;ai choisi de migrer en deux temps. Premier temps pour faire une migration wordpress -\u0026gt; ghost, et en second temps ghost -\u0026gt; hugo. Il y avait peut-être plus simple mais j\u0026rsquo;ai choisi d’opérer ainsi. La migration WP -\u0026gt; Ghost m\u0026rsquo;a permis de convertir mon contenu au format markdown et d’extraire facilement tout le contenu statique y étant rattaché. L\u0026rsquo;étape Ghost -\u0026gt; hugo me permet de réaliser un tri dans mes articles avec pour projet d’en mettre à jour certains. Je vous assure faire le ménage sur 8 ans d’écriture c’est un vrai casse-tête. Pourquoi mettre cet article au rebut plutôt qu’un autre. Tient celui-là n’est plus à jour mais il peu encore servir. Je prends mon temps petit à petit l’oiseau fait son nid. La gestion du blog s’est considérablement allégée, je peux me concentrer sur ce que je veux d’écrire et non plus sur les autres éléments perturbateurs (mise en page, temps de chargement, visibilité). Avec le markdown pas de mauvaise surprise, si la syntaxe est correctement appliquée. En termes de syntaxe on ne pas dire qu’elle soit compliquée à appréhender. Lorsque j’écrivais sous wordpress il m’arrivait de faire des prévisualisations à chaque paragraphe pour être sûr de ce je faisais. Aujourd’hui créer un nouvel article ne me prend pas plus de temps qu’avant, mais sa mise en œuvre elle s’est vue accélérée.\n•\tRédaction dans n’importe quel éditeur de texte. •\tGénération avec hugo. •\tMise en ligne avec un « push » sur le dépôt git.\nSeule la relecture me prend toujours autant de temps mais cela je n’y peux rien.\nConclusion Je suis emballé par ce nouveau système de blog. Je ne sais pas si cela m’encouragera à écrire beaucoup plus fréquemment, car je préfère la qualité à la quantité. En tout cas cela donnera lieu à de nouveaux articles sur les quelques bricoles qu’il me reste à configurer, comme la synchro en git et nginx par exemple. Une nouvelle aventure s’ouvre pour le blog et je compte bien la vivre pleinement.\n","date":"2019-04-02T09:15:36+02:00","image":"https://archives.draconis.me/images/header/blogueries.jpg","permalink":"https://archives.draconis.me/p/au-revoir-wordpress-bonjour-hugo/","title":"Au revoir wordpress, bonjour hugo"},{"content":"Le printemps pointe doucement le bout de se son nez, c\u0026rsquo;est le moment du traditionnel nettoyage de printemps. Mes figurines ne faisant pas exceptions, j\u0026rsquo;ai décidé de mettre un grand coup de frais à mes Orruk que je n\u0026rsquo;avais pas touchés depuis un an. Mais avant de reprendre les pinceaux un petit décapage s\u0026rsquo;impose.\nAvant le bain N\u0026rsquo;étant pas satisfait du résultat je les avaient laissés de côtés pour réfléchir à ce que je voulais faire, maintenant que j\u0026rsquo;ai fais mon choix de couleurs, ils vont prendre un bon bain avant de se refaire une beauté.\nAu bain !\u0026quot; Ils vont séjourner quelques jours dans ce bain d\u0026rsquo;alcool à brûler histoire de facilité le décapage. Suite au prochain numéro. image d\u0026rsquo;en-tête\n","date":"2019-03-11T14:27:15+01:00","image":"https://archives.draconis.me/images/2019/03/avant.jpg","permalink":"https://archives.draconis.me/p/decapage-de-printemps/","title":"Décapage de printemps"},{"content":"Lors de la mise à jour vers la version 14 de mon nextcloud j’ai fait face à deux erreurs bloquantes. Voici comment j’y est remédié.\n504 Gateway Time-out Dès les préparatifs de la mise à jour je suis tombé sur ce bel écran.\nerreur !\nIl s’agit du serveur nginx qui coupe délibérément la connexion. En effet comme il ne reçoit plus de données depuis la page de mise à jour, celle-ci étant en attente du téléchargement de l’archive de nextcloud, il coupe simple les ponts au bout de quelques secondes. Cela est bloquant car le processus de mise à jour ne détecte pas que l’archive est téléchargée et par conséquent reste bloqué sur l’étape du téléchargement. Pour y remédier il suffit d’ajouter la directive proxy_read_timeout dans le fichier proxy_params afin d’augmenter le temps d’attente de nginx. La mise à jour terminé j’ai désactivé cette directive par mesure de sécurité.\nsudo nano /etc/nginx/proxy_params [...] proxy_read_timeout 6000s; [...] sudo systemctl restart nginx Après le redémarrage de nginx j’ai pu passer aux étapes suivantes.\nfigure Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes Cette erreur est apparue lors de la deuxième phase de la mise à jour.\nfigure Pour rétablir la mise à jour j’ai joué avec ma base mariadb. Apparemment c’est une erreur connue chez mariadb : https://www.youtube.com/watch?v=vPNU3fONY7c\nsudo mysql -u root -p MariaDB [(none)]\u0026gt; use nextcloud; MariaDB [nextcloud]\u0026gt; set global innodb_large_prefix=on; MariaDB [nextcloud]\u0026gt; set global innodb_file_format=Barracuda; Validation des changement auprès de nextcloud.\nsudo -u www-data php occ maintenance:repair Nextcloud or one of the apps require upgrade - only a limited number of commands are available You may use your browser or the occ upgrade command to do the upgrade - Repair MySQL collation - Change row format for oc_addressbooks ... - Change collation for oc_addressbooks ... - Change row format for oc_authtoken ... - Change collation for oc_authtoken ... - Change row format for oc_calendarobjects ... - Change collation for oc_calendarobjects ... - Change row format for oc_calendars ... - Change collation for oc_calendars ... - Change row format for oc_calendarsubscriptions ... - Change collation for oc_calendarsubscriptions ... - Change row format for oc_dav_shares ... - Change collation for oc_dav_shares ... - Change row format for oc_migrations ... - Change collation for oc_migrations ... - Change row format for oc_mimetypes ... - Change collation for oc_mimetypes ... - Change row format for oc_systemtag_group ... - Change collation for oc_systemtag_group ... - Change row format for oc_trusted_servers ... - Change collation for oc_trusted_servers ... - Repair mime types - Fixed comicbook mime types - Clean tags and favorites - 0 tags of deleted users have been removed. - 0 tags for delete files have been removed. - 0 tag entries for deleted tags have been removed. - 0 tags with no entries have been removed. - Repair invalid shares - Remove shares of a users root folder - Move .step file of updater to backup location - .step file exists - .step file moved to .step-previous-update - Fix potential broken mount points - No mounts updated - Repair invalid paths in file cache - Add log rotate job - Clear frontend caches - Image cache cleared - SCSS cache cleared - JS cache cleared - Add preview background cleanup job - Queue a one-time job to cleanup old backups of the updater - Repair pending cron jobs - Repaired 1 pending cron job(s). - Fix component of birthday calendars - 2 birthday calendars updated. - Fix broken values of calendar objects 0 [\u0026gt;---------------------------] - Registering building of calendar search index as background job - Repair step already executed - Remove activity entries of private events - Removed 0 activity entries - Fix the share type of guest shares when migrating from ownCloud - Copy the share password into the dedicated column - Migrate binary status into separate boolean fields - Update OAuth token expiration times Retour sur la mise à jour, cela fonctionne !\nfigure Ma migration vers Nextcloud 15 n’attend plus que moi.\n","date":"2019-02-13T15:00:14+01:00","image":"https://archives.draconis.me/images/header/adminsys.jpg","permalink":"https://archives.draconis.me/p/nextcloud-13-vers-14/","title":"Nextcloud 13 Vers 14"},{"content":"Ce matin en parcourant mes flux RSS depuis mon instance Nextcloud, j’ai reçu une jolie notification m’invitant à passer en version 14. Après une lecture rapide du changelog afin d’identifier les différents changements, je décide de réaliser la mise à jour. Quelle ne fut pas ma surprise lorsque je vis ces messages :\n-Vous utilisez actuellement PHP 5.6.36-0+deb8u1. Mettez à jour votre version de PHP afin de tirer avantage des améliorations liées à la performance et la sécurité fournies par le PHP Group dès que votre distribution le supportera.\n-Vous utiliser actuellement PHP 5.6. La version majeure actuelle de Nextcloud est la dernière qui est supportée sous PHP 5.6. Il est recommandé de mettre à niveau PHP vers la version 7.0+ pour pouvoir passer à Nextcloud 14.\nInterloqué je vérifie la version de php installée :\nsudo apt-cache policy php php: Installed: 1:7.0+49 Candidate: 1:7.0+49 Version table: *** 1:7.0+49 500 500 http://ftp.fr.debian.org/debian stretch/main amd64 Packages 100 /var/lib/dpkg/status Même si je ne dispose pas de la dernière version en date, j’ai bien php7 installé sur mon serveur. La question est pourquoi nextcloud détecte php 5.6 ? J’ai fini par trouver la réponse en consultant le Vhost de nginx.\nupstream php-handler { server 127.0.0.1:9000; #server unix:/var/run/php/php5-fpm.sock; } Jusque là rien d’anormal, le moteur php écoute sur le port 9000 du pc local. Je décide donc de faire un tour dans la configuration de php-fpm, je m’aperçois qu’il est configuré pour écouter sur .sock et non un port réseau. Et que dans le dossier* /etc* j’ai un dossier php5 qui traîne.\nsudo nano /etc/php/7.0/fpm/pool.d/www.conf The address on which to accept FastCGI requests. Valid syntaxes are: \u0026#39;ip.add.re.ss:port\u0026#39; - to listen on a TCP socket to a specific IPv4 address on a specific port; \u0026#39;[ip:6:addr:ess]:port\u0026#39; - to listen on a TCP socket to a specific IPv6 address on a specific port; \u0026#39;port\u0026#39; - to listen on a TCP socket to all addresses (IPv6 and IPv4-mapped) on a specific port; \u0026#39;/path/to/unix/socket\u0026#39; - to listen on a unix socket. Note: This value is mandatory. listen = /run/php/php7.0-fpm.sock De plus j’ai toujours php 5.6 qui tourne sur le serveur.\nsudo systemctl status php* ● php5-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php5-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-02-12 10:20:04 CET; 10s ago Process: 15111 ExecStartPre=/usr/lib/php5/php5-fpm-checkconf (code=exited, status=0/SUCCESS) Main PID: 15118 (php5-fpm) Status: \u0026#34;Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec\u0026#34; Tasks: 3 (limit: 4915) CGroup: /system.slice/php5-fpm.service ├─15118 php-fpm: master process (/etc/php5/fpm/php-fpm.conf) ├─15121 php-fpm: pool www └─15122 php-fpm: pool www Feb 12 10:20:03 durotan systemd[1]: Starting The PHP FastCGI Process Manager... Feb 12 10:20:04 durotan php5-fpm[15118]: [12-Feb-2019 10:20:04] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynami Feb 12 10:20:04 durotan systemd[1]: Started The PHP FastCGI Process Manager. ● php7.0-fpm.service - The PHP 7.0 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2019-02-07 10:40:19 CET; 4 days ago Docs: man:php-fpm7.0(8) Main PID: 10010 (php-fpm7.0) Status: \u0026#34;Processes active: 0, idle: 4, Requests: 18523, slow: 0, Traffic: 0.1req/sec\u0026#34; Tasks: 5 (limit: 4915) CGroup: /system.slice/php7.0-fpm.service ├─10010 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf) ├─10012 php-fpm: pool www ├─13024 php-fpm: pool www ├─14453 php-fpm: pool www └─15125 php-fpm: pool openmediavault-webgui Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable. ● phpsessionclean.timer - Clean PHP session files every 30 mins Loaded: loaded (/lib/systemd/system/phpsessionclean.timer; enabled; vendor preset: enabled) Active: active (waiting) since Wed 2018-11-28 06:40:16 CET; 2 months 15 days ago Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable. En y réfléchissant je me souviens avoir conservé php 5.6 nécessaire au fonctionnent de mon instance openmediavault (OMV3). De plus à cette époque j’ai déménagé deux fois en l’espace de cinq mois (et pas des petits déménagements), je n’ai pas vraiment eu le temps de finaliser dans les détails cette migration. Mais aujourd’hui les choses sont différentes, mon serveur est bien installé chez moi et la version d’OMV que j’utilise ne nécessite plus PHP5. Néanmoins je n’échappe pas à l’adage qui veut que les cordonniers sont toujours les plus mal chaussés. Il est temps de passer à l’action !\nD’abords je modifie mon Vhost nginx pour qu’il utilise php7.\nsudo nano /etc/nginx/sites-available/nextcloud upstream php-handler { #server 127.0.0.1:9000; server unix:/var/run/php/php7.0-fpm.sock; } sudo systemctl restart nginx Ensuite je désactive le vieux php.\nsudo systemctl disable php5-fpm Synchronizing state of php5-fpm.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install disable php5-fpm insserv: warning: current start runlevel(s) (empty) of script `php5-fpm\u0026#39; overrides LSB defaults (2 3 4 5). insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `php5-fpm\u0026#39; overrides LSB defaults (0 1 6). insserv: warning: current start runlevel(s) (empty) of script `php5-fpm\u0026#39; overrides LSB defaults (2 3 4 5). insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `php5-fpm\u0026#39; overrides LSB defaults (0 1 6). sudo systemctl stop php5-fpm De retour sur Nextcloud les deux messages précédents ont disparus mais la version de Php que j’utilise n’est plus supporté depuis le premier Janvier 2019. Il me faut donc migré vers une version encore maintenue. Problème j’utilise les paquets fournis par Debian qui sont gelés en version 7 et les versions encore maintenues de php sont introuvables sur le dépôt backport. A force de chercher je suis tombé sur ce site https://deb.sury.org/ qui s’avère être le dépôt et site personnel du développeur en charge du paquet php pour Debian. Ce qui est selon moi un gage de sérieux. Je décide d’utiliser son dépôt en attendant une mise à jour officielle de Debian ( lors de la migration vers Buster) en suivant les instructions.\nsudo apt -y install apt-transport-https lsb-release ca-certificates sudo curl -ssL -o /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg sudo sh -c \u0026#39;echo \u0026#34;deb https://packages.sury.org/php/ $(lsb_release -sc) main\u0026#34; \u0026gt; /etc/apt/sources.list.d/php.list\u0026#39; sudo apt update sudo apt upgrade Une fois la mise à niveau effectuée ne pas oublier de modifier le Vhost de nginx pour qu’il pointe vers php 7.2 et non php7.0, puis redémarrer nginx.\nsudo nano /etc/nginx/sites-available/nextcloud upstream php-handler { #server 127.0.0.1:9000; server unix:/var/run/php/php7.2-fpm.sock; } susod systemctl restart nginx Avec cette version de php je suis tranquille jusqu’en 2020. Je peux maintenant mettre mon nextcloud à jour vers la version 14 et même la version 15 sortie au mois de décembre 2018.\nEn conclusion Cet incident met à mal le système Debian en ce qui me concerne. J’ai toujours utilisé Debian pour mes serveurs. Debian a toujours privilégié la stabilité de son système sans pour autant sacrifier la sécurité, à tel point qu’une équipe de développeur lui est entièrement consacrée. C’est la première fois que suis obligé d’utiliser, sur mes serveurs, un dépôt tier afin de maintenir un paquet à jour. Lorsqu’on regarde les différentes versions de php entre la stable, testing et sid il y a un fossé.\nhttps://packages.debian.org/stretch/php\nStable est bloquée en version 7 Testing et sid proposent une version en 7.3 Entre deux rien, on passe d’une version quasi obsolète à une version ultra récente; en gros on passe du rien au tout sans transitions (comme dirai l’autre). De plus pour une version stable il n’y a pas eu pléthore de mise à jour de sécurité : https://security-tracker.debian.org/tracker/source-package/php7.0, la dernière datant de décembre 2018 juste avant la fin du support par l’équipe de PHP. Depuis cette date plus rien, silence radio. Laisser une version obsolète sans autre procédure pour corriger cela, pour moi il s’agit d’une négligence pure et simple de la part de l’équipe Debian ou une très grande prétention de croire que ses paquets sont si parfaits qu’il n’y a plus besoin de les mettre à jour. En 20 ans de Linux c’est la première que je suis déçu. Alors non je ne compte pas changer mon écosystème du jour au lendemain mais si cela venait à se reproduire je serai plus enclin à réfléchir à une nouvelle distribution pour mes serveurs.\n","date":"2019-02-12T15:28:10+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/en-route-vers-php-7.2/","title":"En route vers PHP 7.2"},{"content":"Petit mémo pour m’éviter de chercher l’information pendant deux heures.\nCréation tar zcvf monarchive.tar.gz dossier_compression/ Extraction tar zxvf monarchive.tar.gz ","date":"2019-02-05T15:00:14+01:00","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/p/creation-et-extraction-avec-tar/","title":"Création et Extraction d'une archive tar"},{"content":"Cette semaine une fournée spéciale provence pour préparer les grillades de cet été. Pain basilic-thym à l’huile d’olive.\nPour deux d’environ 500g\n500 g de farine (t65 bio pour moi) 200 g de levain dur hydraté à 50% 10 g de sel 350 g d’eau 1 c à soupe de thym 5 à 7 feuilles de basilic frais Ajouter dans le robot le levain, la farine, le thym et le basilic. Dissoudre le sel dans l’eau et commencer à mélanger dans le robot à vitesse 1 jusqu’à ce que tous soit mélangé. Puis pétrir pendant 20 minutes à vitesse 2.\nA la fin du pétrissage faire pousser le pâton pendant une nuit au réfrigérateur. Le lendemain finir la poussée jusqu’au soir à température ambiante. Le soir divisé en deux pâtons et finir la poussée pendant toute la nuit dans des bannetons. Le matin préchauffer le four à 210°c, faire cuire pendant 20 min. Ne pas oublier de jeter un verre d’eau dans le lèche frite pour le « coup de buée ». Faire refroidir sur une grille et déguster !\nfigure1 ","date":"2019-01-30T15:00:14+01:00","image":"https://archives.draconis.me/images/2019/01/fournee1.jpg","permalink":"https://archives.draconis.me/p/la-fournee-du-moment-1/","title":"La fournée du moment #1"},{"content":"Cette désactivation entrera pleinement en vigueur le 13 Mars 2019, après cette date tous les certificats créés avec la TLS-SNI-01 ne pourrons être renouvelés comme indiqué dans le courriel qu j’ai reçu hier matin.\nHello,\nAction may be required to prevent your Let’s Encrypt certificate renewals\nfrom breaking.\nIf you already received a similar e-mail, this one contains updated\ninformation.\nYour Let’s Encrypt client used ACME TLS-SNI-01 domain validation to issue\na certificate in the past 60 days. Below is a list of names and IP\naddresses validated (max of one per account):\ndomaine.mondomaine.tld (xxx.xxx.xxx.xxx) on 2018-12-23\nTLS-SNI-01 validation is reaching end-of-life. It will stop working\ntemporarily on February 13th, 2019, and permanently on March 13th, 2019.\nAny certificates issued before then will continue to work for 90 days\nafter their issuance date.\nYou need to update your ACME client to use an alternative validation\nmethod (HTTP-01, DNS-01 or TLS-ALPN-01) before this date or your\ncertificate renewals will break and existing certificates will start to\nexpire.\nOur staging environment already has TLS-SNI-01 disabled, so if you’d like\nto test whether your system will work after February 13, you can run\nagainst staging: https://letsencrypt.org/docs/staging-environment/\nIf you’re a Certbot user, you can find more information here:\nhttps://community.letsencrypt.org/t/how-to-stop-using-tls-sni-01-with-certbot/83210\nOur forum has many threads on this topic. Please search to see if your\nquestion has been answered, then open a new thread if it has not:\nhttps://community.letsencrypt.org/\nFor more information about the TLS-SNI-01 end-of-life please see our API\nannouncement:\nhttps://community.letsencrypt.org/t/february-13-2019-end-of-life-for-all-tls-sni-01-validation-support/74209\nThank you,\nLet’s Encrypt Staff\nCe certificat doit être renouvelé avant 23 mars il me faut agir avant de me retrouver avec une belle erreur. Je commence donc à vérifier si je suis à la version 0.28 de certbot.\ncertbot --version Malheureusement je m’aperçois que je suis encore en version 0.23 sur mon Ubuntu 18.04. J’ajoute le PPA de certbot pour le mettre à jour\nsudo apt update sudo apt install software-properties-common sudo add-apt-repository universe sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get full-upgrade La bonne version de certbot installée, j’effectue une simulation de renouvellement afin de constater que tout fonctionne correctement. Ne pas oublier de d’arrêter le processus du serveur web (nginx dans mon cas) et de le relancer à la fin.\nroot@mail:~#systemctl stop nginx root@mail:~# certbot renew --dry-run Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/mondomaine.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cert not due for renewal, but simulating renewal for dry run Plugins selected: Authenticator standalone, Installer None Renewing an existing certificate Performing the following challenges: http-01 challenge for mondomaine.tld Waiting for verification... Cleaning up challenges - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - new certificate deployed without reload, fullchain is /etc/letsencrypt/live/mondomaine.tld/fullchain.pem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ** DRY RUN: simulating \u0026#39;certbot renew\u0026#39; close to cert expiry ** (The test certificates below have not been saved.) Congratulations, all renewals succeeded. The following certs have been renewed: /etc/letsencrypt/live/mondomaine.tld/fullchain.pem (success) ** DRY RUN: simulating \u0026#39;certbot renew\u0026#39; close to cert expiry ** (The test certificates above have not been saved.) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - La simulation est un succès je suis tranquille lorsque je devrai renouveler ce certificat\nSource : https://community.letsencrypt.org/t/how-to-stop-using-tls-sni-01-with-certbot/83210\n","date":"2019-01-29T15:00:14+01:00","image":"https://archives.draconis.me/images/header/blogueries.jpg","permalink":"https://archives.draconis.me/p/lets-encrypt-desactive-definitivement-la-validation-des-certificats-en-tls-sni-01/","title":"Let's encrypt désactive définitivement la validation des certificats en TLS-SNI-01"},{"content":"Ce n’est plus un scoop, chaque produit Google est un agent infiltré au sein de notre vie privée. Au fil des années ses agents se sont infiltrés dans tous leurs outils même les plus anodins. Le fameux Gboard, le clavier virtuel made in Google n’échappe à la règle. J’en ai fait le triste découverte lors de sa mise à jour.\nfigure figure1 Mais dis moi Google qu’elle est l’utilité pour Gboard de connaître et d’accéder à ma connexion wi-fi ? Le but d’un clavier n’est-il pas simplement de taper du texte ? Ne voudrais-tu pas siphonner en douce tout ce que je tape sur mon clavier petit coquin ?\nRespectant l’adage « si c’est gratuit c’est toi le produit » je n’utilise qu’avec par simonie les produits Google et lorsque je le fait c’est en connaissance de cause et donc je ne laisse rien de personnel « traîner ». N’ayant pas le budget pour un Fairphone ou un smartphone compatible LineageOS je fais avec les moyens du bords. J’évite un maximum les applis Google et du playstore sauf quand l’alternative n’existe pas sur le dépôt libre F-droid. Ça tombe bien il existe un clavier alternatif chez eux qui fait simplement ce pourquoi il a été conçu, taper du texte. Portant le nom de SimpleKeyboard il fait le taf sans te demander si tu as du wi-fi ou si tu sais dire à haute voix « Ok google ».\nSi tu veux retrouver un peu de d’intimité quand tu envois des sms à ta belle, tu dois d’abords installer le dépôt F-droid en téléchargeant leur apk sur cette page ou te rendre directement sur f-droid.org. Il ne faut pas oublier d’activer les sources inconnues sur le téléphone. Sur mon android 5 :\nParamètres -\u0026gt; Sécurité -\u0026gt; Sources Inconnues\nfigure2 Une fois le dépôt installé, lancer l’application F-droid, rechercher SimpleKeyboard et l’installer. Une mise à jour du dépôt peu être envisagé si F-droid ne trouve pas Simplekeyboard du premier coup.\nfigure3 Pour finir il faut se rendre dans Langue et Saisie, toujours dans les paramètre et choisir SimpleKeyboard comme clavier principal. Au passage en profiter pour désactiver Gboard et la saisie vocale.\nfigure4 Si tu veux faire comme Maurice et pousser le bouchon un peu plus loin tu peux aussi rooter ton téléphone et supprimer complètement toutes les applications Google. Personnellement je n’en suis pas encore à cette étape. Voilà comment retrouver un peu d’intimité dans ce monde sans cesse à la conquête de nos données\n","date":"2018-10-19T15:00:14+01:00","image":"https://archives.draconis.me/images/header/blogueries.jpg","permalink":"https://archives.draconis.me/p/quand-google-siphonne-les-frappes-de-ton-clavier/","title":"Quand Google siphonne les frappes de ton clavier"},{"content":" La transmo se compose comme suit :\nÉpaules : Protège-épaules Roharts\nTorse : Cuirasse en peau de troll crocs-d’ombre\nMains : Protège-mains noués\nTaille : Ceinture chante-ciel\nJambes : Kil de couroux de nordrassil\nBâton : Réplique du bâton de Gul’dan\nSi vous souhaitez me proposer, présenter votre transmo ou rester en contact avec moi\n►Le twitter : https://twitter.com/draconis3119\n►Le Mastodon : https://mstdn/@draconis\n►Le blog : https://draconis.me\nMusique de l’intro :\nhttps://www.youtube.com/watch?v=vQPqbZs33j8\n","date":"2018-09-23T15:28:10+01:00","image":"https://archives.draconis.me/images/2018/08/enmodetransmo2.png","permalink":"https://archives.draconis.me/p/en-mode-transmo-2/","title":"En mode transmo #2"},{"content":"Petit bloc-notes rapide sur une erreur rencontrée ce matin au moment de mettre à jour ma Arch.\nfigure Pour une raison inconnue pacman a dû planté lors de sa dernière utilisation et donc le fichier de verrouillage n’a pas été supprimé.\nPour débugger cette erreur rien de plus simple il suffit de supprimer manuellement le fichier db.lock comme suit :\nsudo rm -fr /var/lib/pacman/db.lock Relancer ensuite sa commande de mise à jour comme si de rien n’était.\n","date":"2018-09-20T15:28:10+01:00","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/p/pacman-verrrouillage-base-de-donnee-impossible/","title":"Pacman : verrouillage base de donnée impossible"},{"content":"Je me suis retrouvé nez à nez avec une mouette célèbre en la personne de Eurêka.\nimage1 Vous vous rappelez l’amie d’Ariel qui se voulait une encyclopédie sur les humains qui finalement n’en savait pas plus qu’un tauren démoniste.\nimage2 En tout cas notre échange n’a pas été très amical et s’est terminé avec un grand éclat lunaire dans sa face !\n","date":"2018-09-18T15:28:10+01:00","image":"https://archives.draconis.me/images/2018/09/expe2.jpg","permalink":"https://archives.draconis.me/p/au-detour-dune-expedition/","title":"Au détour d'une expédition"},{"content":"Quand c’est fait maison c’est tellement bon !\nQuitte à faire son pain autant le faire dans les règles de l’art, hors de question de prendre des farines de grandes surfaces, blés traités, conditionnement non adapté. Il faudrait me réapprovisionner presque tous les jours, nous sommes des gros mangeurs de pain. J’ai donc entrepris de chercher un moulin près de chez moi, travaillant avec des céréaliers locaux. J’ai fini par trouvé un meunier qui travaille avec les blés de ma région dont certains possède le label bio. Il propose plusieurs type de la T65 à l’intégrale avec un conditionnement par sac de 25kg. A raison d’un pain d’environ 1.2Kg tous les 3-4 jours le sac nous dure un peu plus d’un mois et demi. Par la même occasion nous l’utilisons pour tout (gâteaux, pâtes, ….), sauf pour la pâte à pizza mais ça c’est une autre histoire. Maintenant que nous avons l’ingrédient principal je vous invite à mettre votre tablier et de passer à la préparation.\nLes Ingrédients\nIngrédients pour un pain d’environ 1.2KG\n500g de farine T80 340 à 350 g d’eau (en fonction du taux d’absorption de votre farine) 300 à 400g de levain 9g de sel Premièrement je pèse le levain directement dans la cuve. Je travaille avec un levain dur hydraté à 50%. Par exemple pour 100g de farine dans mon levain j’ai 50g d’eau. Pour moi il est plus facile de travailler avec un levain dur, car il est moins exigeant qu’un levain liquide. 24h avant d’utiliser mon levain je le rafraichis pour avoir la quantité dont j’ai besoin et qu’il soit bien actif, généralement le soir pour le lendemain.\nfigure1 Un levain dur actif doit être bien mousseux, très aéré, avec une légère odeur acide-aigre. Ensuite par dessus le levain je rajoute les 500g de farine.\nfigure2 Je place le bol sur le robot et je commence à pétrir en vitesse 1. C’est à Mme l’eau de rentrer en scène. Lorsque je boulange je fais en sorte d’avoir une température de pâte déterminée, cela me permet d’avoir une pâte qui lève bien, grâce à la formule suivante :\nT° pâte souhaitée = T°air + T°farine + T°eau\nDans mon cas je souhaite une température de pâte à 60°c, ne pouvant influer sur celle de la farine et l’air il m’est plus facile de travailler avec celle de l’eau. Pour connaître la température de l’eau nécessaire pour une pâte à 60°c j’applique :\nT°eau = 60 - (T°Farine + T°air)\nAinsi hiver comme été je connais la température de l’eau qu’il me faut pour ma pâte à 60°c. Par exemple par ces températures estivales j’ai une :\nT°air (dans le pièce ou je boulange) : 26°c T°Farine : 24° 60 - (22 + 24 ) = 10\nPar conséquent je travaille avec un eau à 10°c, pour cela je place une bouteille au frigo. Concernant la quantité d’eau cela est très variable, elle dépend grandement du taux d’absorption de la farine utilisée. Cela peut varier d’une farine à l’autre, de l’humidité ambiante, de la météo … . Le mieux c’est de partir d’une base et d’ajouter le reste de l’eau et d’observer la pâte. Je pèse donc mes 340g d’eau dans lesquels je dissous les 9g de sel. J’utilise du gros sel que je vais chercher directement chez un producteur près de chez moi ce qui nous permet d’avoir du sel pour le pain et pour la cuisine.\nLe Pétrissage\nJ’ajoute 300g d’eau avec la farine et le levain, je réserve le reste pour plus tard. Je pétrie toujours en vitesse 1 tant que la farine est visible. Une fois qu’il n’y a plus de farine je passe en vitesse 2, pour commencer le pétrissage jusqu’à ce que le pâte se décolle du bol. Je rajoute une petite quantité d’eau qu’il me reste, j’attends à nouveau que la pâte se décolle pour rajouter de l’eau. Je procède ainsi jusqu’à obtenir une pâte que me convienne, cette étape c’est à l’appréciation de chacun en fonction du pain que vous voulez. Si vous voulez un pain plutôt compact vous mettrez moins d’eau, à l’inverse un pain plus moelleux nécessitera plus d’eau.\nfigure3 Attention toute fois au temps de pétrissage il ne doit pas s’éterniser, car plus on pétri la pâte plus elle chauffe et une pâte trop chaude perd ses propriétés élastiques. Une pâte moins élastique lèvera moins bien. En effet c’est le CO2 (généré par la fermentation du levain) emprisonné dans la pâte qui permet à celle-ci de lever. Si elle est moins élastique elle devient poreuse, par conséquent une partie du CO2 s’échappe au lieu rester dans la pâte. Cela produira un pain petit qui durcira à la cuisson.\nLe Pointage\nMaintenant que notre pâte est prête elle a droit à un peu de repos, c’est l’étape du pointage. Je la laisse reposer un heure à température ambiante dans une boîte fermée pour éviter qu’elle ne se dessèche. Au bout d’une heure je la dépose sur un plan de travail très légèrement fariné, pour ne pas rajouter encore de la farine à la pâte je fais ce qu’on appelle le rabat, rabattre la pâte sur elle-même 4 fois. Je replace la pâte dans la boîte encore une heure.\nLe Façonnage et l’Apprêt\nLe pointage terminé, je dépose la pâte sur mon plan de travail, je fais un dernier rabat et en suivant je façonne une boule. Cette boule je la place la tête en bas dans un banneton recouvert d’un tissu de lin préalablement fariné, c’est l’étape de l’apprêt. Et je la laisse encore au repos entre une demi-heure et une heure à température ambiante, j’arrête l’apprêt dès que la pâte soulève le tissu. En parallèle je préchauffe mon four à 230°c et je prépare un grand verre d’eau. Mon four est disposé d’une grille à mi-hauteur et d’un lèche frite tout en bas. A la fin de l’apprêt je renverse la pâte sur une plaque de cuisson et je la grigne.\n\nJ’enfourne la pâte, je verse le verre d’eau dans le lèche frite et c’est parti pour 50mn de cuisson. A la fin de la cuisson je fait refroidir le pain sur une grille. Inutile de se jeter dessus il faut attendre que le pain soit bien refroidit pour le consommer, d’une part car le pain chaud n’est pas digeste, d’autre part le laisser refroidir lui permet de terminer sa cuisson en douceur. Profitez-en pour écouter la croute craquer, sentir ses effluves, laissez le finir de développer ses arômes, c’est un moment magique.\nfigure5 C\u0026rsquo;était mon protocole de fabrication du pain, il ne conviendra pas à tout le monde, en effet le pain est un organisme vivant qui possède sa propre évolution. Vous pourrez faire 50 fois le même protocole vous aurez 50 pains différents. Lorsqu’on boulange il y aussi une grande place à l’instinct. J’ai mis au point ce protocole de fabrication après de nombreuses recherches, lectures et surtout énormément d’essais, essayez, expérimentez, sortez des sentiers battus, ce qui fonctionne pour moi ne fonctionnera pas pour vous et vice-versa. Inspirez-vous en pour mettre au point le votre.\nBonne Dégustation !\n","date":"2018-09-14T15:28:10+01:00","image":"https://archives.draconis.me/images/2018/09/IMG_20180907_210508.jpg","permalink":"https://archives.draconis.me/p/jai-fait-du-pain-au-levain/","title":"J'ai fait du pain au levain"},{"content":"Première vidéo d’une série dédié aux transmogrification de World of Warcraft que j’avais lancé sur mon ancienne page youtube. Aujourd’hui je me suis amusé avec un prêtre sacré.\nLa transmo se compose comme suit :\nTête : Capuche val nocturne\nEpaules : Amict de la lumière éclatante\nDos : Mantelet de la fureur\nTorse : Habit de courbe lumière\nMains : Les mains de gilly\nBâton : Bâton de la récupération immaculée\nSi vous souhaitez me proposer, présenter votre transmo ou rester en contact avec moi\n►Le twitter : https://twitter.com/draconis3119\n►Le blog : Draconis.me\n","date":"2018-09-08T15:28:10+01:00","image":"https://archives.draconis.me/images/2018/08/enmodetransmo1.png","permalink":"https://archives.draconis.me/p/en-mode-transmo-1/","title":"En mode transmo #1"},{"content":"Petite surprise lors d’un passage à Zuldazar, une tortue VOLANTE !\nfigure figure Puis d’instinct nous avons engagés le combat histoire de voir s’il y avait du loot à prendre.\nfigure Au final elle repartie illico à la mer tant pis pour les loot épiques.\n","date":"2018-09-07T15:28:10+01:00","image":"https://archives.draconis.me/images/2018/09/WoWScrnShot_090218_173546.jpg","permalink":"https://archives.draconis.me/p/tortue-volante-en-zuldazar/","title":"Tortue volante en Zuldazar"},{"content":"Petit mémo pour créer un utilisateur avec sa base sous mariadb depuis son terminal préféré. Le truc classique, qu’on fait tout le temps et que l’on oublie toujours.\nCREATE DATABASE `mabase` ; GRANT ALL PRIVILEGES ON `mabase`.* TO \u0026#34;monlogin\u0026#34;@\u0026#34;%\u0026#34; identified by \u0026#39;monpass\u0026#39;; FLUSH PRIVILEGES; Pour une connexion en locale on remplace % par localhost. Pour une connexion depuis un serveur dédié on replace % par l’adresse ip de dit serveur. Le % permet de se connecter depuis n’importe quel machine public ou privé. ","date":"2018-03-13T15:28:10+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/creer-un-utilisateur-mariadb-limite-a-une-seule-base-de-donnee/","title":"Créer un utilisateur mariadb limité à une seule base de donnée"},{"content":"Avec le passage à Stretch des mes serveurs j’ai dû reprendre la configuration de Haproxy et Nginx que j’avais détaillé il y a quelques mois afin de récupérer les IP réelles à la place de celle du reverse-proxy. En effet Haproxy a bénéficié lui aussi d’une mise à jour qui nécissitant quelques changements de syntaxe dans le fichier de configuration.\nNginx Ajout de l’ip publique comme hôte de confiance.\nset_real_ip_from IP LOCALE DE LA MACHINE HAPROXY; set_real_ip_from IP PUBLIQUE; real_ip_header proxy_protocol; real_ip_recursive on; Ne pas oublier d’ajouter la commande proxy_protocol dans les différents vhost.\nlisten 443 ssl proxy_protocol; Haproxy Du côté de Haproxy j’ai supprimé les directives check-ssl verify none, ce qui donne pour les requêtes http :\nserver draconis_www 192.168.x.x:80 check send-proxy weight 0 et pour le https :\nserver draconis_www 192.168.x.x:443 send-proxy check weight 0 Un redémarrage plus-tard, tout fonctionne à nouveau à merveille.\nsudo systemctl restart haproxy sudo systemctl restart nginx ","date":"2017-12-21T15:28:10+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/recuperer-les-ip-derriere-haproxy-le-retour/","title":"Récupérer les IP derière haproxy, le retour"},{"content":"Le mois décembre c’est toujours le casse tête pour les parents afin de trouver, THE cadeau, pour nos cher têtes blondes. Pour nous cette année est d’autant plus importante car Draconis premier du nom vient de fêter ses dix ans. Dix ans, déjà, dix ans que ce petit bonhomme observe son papa avec ses drôles d’appareils tout autour de son ordinateur. Dix ans pendant lesquels il a, avec patience, supporté mes : » descends du bureau à papa ! Ne touches pas c’est fragile ! Non tu es trop petit ! » et bien d’autres réprimandes. Dix ans ou il n’arrêtait pas de venir me solliciter pour que je lui apprenne à bidouiller. Cette année c’est décidé je lui fait une petite place dans mon fourbi informatico-electronique. J’ai commencé par le plus facile, débarrasser une partie de mon espace de travail. Ensuite le plus dur fut de lui trouver des objets adaptés à son âge pour éviter de le dégoûter. Heureusement j’ai anticipé car ce n’était pas évident. Faisant foi de la solidarité entre papa geek et bidouilleur, je me décide aujourd’hui à partager mes trouvailles, cela aidera peut-être. Pour faire taire les mauvaises langues, je ne suis pas sponsorisés pour parlé des ses produits, que j’ai choisi et acheté sur mes propres deniers.\nA l’aventure avec Arduino figure1 Ce livre s’est immédiatement démarqué pendant mes recherches. J’ai put parcourir en ligne la table des matières et les première pages. C’est bien écrit, l’aspect aventure est très intéressant et adapté aux enfants. Le livre est disponible pour 25€ chez Eyrolles.\nKit de démarrage Arduino figure2 Bien entendu pour mettre en application le livre, il lui fallait un arduino. J’ai choisi ce kit sur aliexpress il lui permettra de réaliser les premières aventures, tout le matériel nécessaire n’étant pas présent je complèterai par la suite. A cela j’ai ajouté ce kit de résistances composants indispensable. En revanche trois semaines se sont écoulée jusqu’à la réception du colis si vous êtes pressé commandé ailleurs.\nUn Raspberry pour relier le tout figure3 Pour bidouiller il n’y a pas que l’arduino, le raspberry n’est pas en reste non plus. Mon choix c’est porté sur le Pi-Top CEED, ce petit ordinateur propulsé par un Raspberry 3 a l’avantage de proposé différents accessoires (plaque de prototypage, speaker) qui sont modulables et se branchent directement dans le boîtier. Cela permet de faire pleins d’activités autour du R-PI et d’y associer les travaux avec l’arduino. En effet le pi-top ceed est fourni avec son propre système exploitation (basé sur une raspbian) et pleins d’applications pour bidouilleurs en herbes. Avec le pi-top on apprend l’électronique, la programmation, l’informatique et autre. Il pourra même parfaire son anglais car le système est entièrement dans la langue de Shakespeare. Ce dernier cadeau est vraiment optionnel car on peut faire la même chose sans ce packaging, il faut quand même débourser 126.38€ plus les frais de port pour l’acquérir.\nLa liste est à présent terminé, j’aurai l’occasion de revenir détailler chaque produit, histoire de faire un petit retour d’expérience et de partager les réalisations de mon bidouilleur en herbe. Pour finir, en ces temps de débauche commerciale, rappelons-nous qu’importe, le nombre, la taille, le prix, le principal à noël c’est l’occasion de se réunir avec les siens et profiter d’eux, le reste n’est que superflus.\n","date":"2017-12-07T15:28:10+01:00","image":"https://archives.draconis.me/images/header/blogueries.jpg","permalink":"https://archives.draconis.me/p/id%C3%A9e-de-cadeau-pour-bidouilleur-en-herbe/","title":"Idée de cadeau pour bidouilleur en herbe"},{"content":"Le proverbe sysadmin « Pas d’installation, ni de mise à jour le vendredi » a pris tout son sens en ce vendredi matin. Cela faisait quelques mois que je n’avais pas touchés mon serveur gitlab et donc je décide d’un pas tranquille de le mettre à jour, ainsi que le container qui l’héberge. Mais tout ne se passe pas comme prévu et une simple mise à jour de 5 mn m’a finalement bloqué une bonne partie de la matinée. La mise à jour s’est déroulée correctement, le container est monté de jessie vers stretch sans embûches. Gitlab est passé de la version 9.5 à 10.2. Je redémarre tout ce petit monde tout semble normal, pas d’anomalies ni de messages d’erreurs. Mais lorsque j’ai voulu me connecter à mon instance, celle-ci me répondait toujours la même chose : 502 Whoops, GitLab is taking too much time to respond. Et me voilà parti pour identifier le problème.\nfigure1 Premièrement, jeter un coup d’œil aux journaux systèmes, ils donnent toujours de bonnes informations. Justement les devs de gitlab ont très bien fait les choses car il est possible de parcourir tous les logs services en une seule commande :\nsudo gitlab-ctl tail La vérité me fut révélée, mon problème venait du service gitlab_workhorse :\n==\u0026gt; /var/log/gitlab/nginx/gitlab_error.log \u0026lt;== 2017/12/01 07:38:07 [crit] 17531#0: *19 connect() to unix:/var/opt/gitlab/gitlab-workhorse/socket failed (13: Permission denied) while connecting to upstream, client: 192.168.x.x, server: labo.draconis.me, request: \u0026#34;GET / HTTP/2.0\u0026#34;, upstream: \u0026#34;http://unix:/var/opt/gitlab/gitlab-workhorse/socket:/\u0026#34;, host: \u0026#34;labo.draconis.me\u0026#34; 2017/12/01 08:15:07 [crit] 1315#0: *1 connect() to unix:/var/opt/gitlab/gitlab-workhorse/socket failed (13: Permission denied) while connecting to upstream, client: 192.168.x.x, server: labo.draconis.me, request: \u0026#34;GET / HTTP/2.0\u0026#34;, upstream: \u0026#34;http://unix:/var/opt/gitlab/gitlab-workhorse/socket:/\u0026#34;, host: \u0026#34;labo.draconis.me\u0026#34; 2017/12/01 08:15:11 [crit] 1315#0: *1 connect() to unix:/var/opt/gitlab/gitlab-workhorse/socket failed (13: Permission denied) while connecting to upstream, client: 192.168.x.x, server: labo.draconis.me, request: \u0026#34;GET / HTTP/2.0\u0026#34;, upstream: \u0026#34;http://unix:/var/opt/gitlab/gitlab-workhorse/socket:/\u0026#34;, host: \u0026#34;labo.draconis.me\u0026#34; 2017/12/01 08:17:59 [crit] 2236#0: *1 connect() to unix:/var/opt/gitlab/gitlab-workhorse/socket failed (13: Permission denied) while connecting to upstream, client: 192.168.x.x, server: labo.draconis.me, request: \u0026#34;GET / HTTP/2.0\u0026#34;, upstream: \u0026#34;http://unix:/var/opt/gitlab/gitlab-workhorse/socket:/\u0026#34;, host: \u0026#34;labo.draconis.me\u0026#34; 2017/12/01 08:18:00 [crit] 2236#0: *1 connect() to unix:/var/opt/gitlab/gitlab-workhorse/socket failed (13: Permission denied) while connecting to upstream, client: 192.168.x.x, server: labo.draconis.me, request: \u0026#34;GET / HTTP/2.0\u0026#34;, upstream: \u0026#34;http://unix:/var/opt/gitlab/gitlab-workhorse/socket:/\u0026#34;, host: \u0026#34;labo.draconis.me\u0026#34; 2017/12/01 08:19:20 [crit] 2236#0: *4 connect() to unix:/var/opt/gitlab/gitlab-workhorse/socket failed (13: Permission denied) while connecting to upstream, client: 192.168.x.x, server: labo.draconis.me, request: \u0026#34;GET / HTTP/2.0\u0026#34;, upstream: \u0026#34;http://unix:/var/opt/gitlab/gitlab-workhorse/socket:/\u0026#34;, host: \u0026#34;labo.draconis.me\u0026#34; 2017/12/01 08:19:21 [crit] 2236#0: *4 connect() to unix:/var/opt/gitlab/gitlab-workhorse/socket failed (13: Permission denied) while connecting to upstream, client: 192.168.x.x, server: labo.draconis.me, request: \u0026#34;GET / HTTP/2.0\u0026#34;, upstream: \u0026#34;http://unix:/var/opt/gitlab/gitlab-workhorse/socket:/\u0026#34;, host: \u0026#34;labo.draconis.me\u0026#34; 2017/12/01 08:19:23 [crit] 2236#0: *4 connect() to unix:/var/opt/gitlab/gitlab-workhorse/socket failed (13: Permission denied) while connecting to upstream, client: 192.168.x.x, server: labo.draconis.me, request: \u0026#34;GET / HTTP/2.0\u0026#34;, upstream: \u0026#34;http://unix:/var/opt/gitlab/gitlab-workhorse/socket:/\u0026#34;, host: \u0026#34;labo.draconis.me\u0026#34; 2017/12/01 08:40:51 [crit] 2236#0: *8 connect() to unix:/var/opt/gitlab/gitlab-workhorse/socket failed (13: Permission denied) while connecting to upstream, client: 192.168.x.x, server: labo.draconis.me, request: \u0026#34;GET / HTTP/2.0\u0026#34;, upstream: \u0026#34;http://unix:/var/opt/gitlab/gitlab-workhorse/socket:/\u0026#34;, host: \u0026#34;labo.draconis.me\u0026#34; 2017/12/01 08:48:01 [crit] 6124#0: *1 connect() to unix:/var/opt/gitlab/gitlab-workhorse/socket failed (13: Permission denied) while connecting to upstream, client: 192.168.x.x, server: labo.draconis.me, request: \u0026#34;GET / HTTP/2.0\u0026#34;, upstream: \u0026#34;http://unix:/var/opt/gitlab/gitlab-workhorse/socket:/\u0026#34;, host: \u0026#34;labo.draconis.me\u0026#34; Deuxièmement, une fois le problème identifié, parcourir le site de gitlab afin de savoir si d’autres ont eu ce problème et s’ils l’ont résolu. D’après les premières constations de l’enquête il s’agit d’un problème de droit que rencontre nginx sur le socket du service gitlab_workhorse. Vérifions cela :\nsudo ls -la /var/opt/gitlab/gitlab-workhorse/socket srwxr-xr-x 1 git git 0 déc. 1 08:52 /var/opt/gitlab/gitlab-workhorse/socket On voit bien que seul l’utilisateur GIT et le groupe GIT ont accès au socket. J’ai orienté mes recherches dans ce sens et j’ai fini par trouver :\nhttps://gitlab.com/gitlab-org/gitlab-workhorse/issues/129\nJe décide de faire comme préconisé :\nsudo usermod -aG gitlab-www www-data Je redémarre gitlab et paf ! Toujours cette maudite erreur 502 et toujours ce problème de droit sur le socket gitlab_workhorse. J’approfondis encore mes recherches directement sur la documentation de gitlab, je finis par trouver une piste qui n’avait rien avoir avec mon problème:\n** Set the right gitlab-workhorse settings if using Apache**.\nL’évidence me sauta aux yeux. Pourquoi utiliser le service en mode socket ? Pourquoi ne pas essayer en mode tcp ?\nNi une, ni deux je modifie le /etc/gitlab/gitlab.rb avec les paramètres suivants (directement récupérés de la doc) :\ngitlab_workhorse[\u0026#39;listen_network\u0026#39;] = \u0026#34;tcp\u0026#34; gitlab_workhorse[\u0026#39;listen_addr\u0026#39;] = \u0026#34;127.0.0.1:8181\u0026#34; Comme à chaque modification du gitlab.rb, il faut lancer une reconfiguration.\nsudo gitlab-ctl reconfigure Me croyant sorti d’affaire je pousse un ouf de soulagement et bien non, pendant la reconfiguration un nouveau problème apparut.\nERROR: Encountered unsupported config key \u0026#39;gitlab_git_http_server\u0026#39; in /etc/gitlab/gitlab.rb. Cela m’apprendra à faire des mises à jour sans lire la note de version :\nhttps://about.gitlab.com/2017/09/22/gitlab-10-0-released/#gitlab-git-http-server-configuration-support-removed\nJe retourne dans le gitlab.rb, je commente la ligne :\n# gitlab_git_http_server[\u0026#39;listen_addr\u0026#39;] = \u0026#39;/tmp/gitlab-workhorse.socket\u0026#39; Je relance une configuration, tout ce passe bien. Je vérifie le service gitlab_workhorse, aucune erreur apparente. Je tente une connexion depuis l’interface web tout fonctionne parfaitement. Je peux enfin pousser mon gros ouf de soulagement.\nC’est décidé j’arrête les mises à jour bancales juste après le petit-déjeuner, enfin jusqu’à la prochaine 🙂 .\n","date":"2017-12-01T15:00:14+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/mise-%C3%A0-jour-vers-gitlab-10/","title":"Mise à jour vers Gitlab 10"},{"content":"Après 10 ans de bons et loyaux services le disque dur système de mon Nas commence à montrer des signes de fatigue. Pour preuves les erreurs smart qu’il m’envoit tous les matins lorsque je prends mon café. J’ai bien conscience qu’il faut le changer mais j’ai d’autres priorités dans l’immédiat, ce qui reporte son remplacement à la fin du mois. Mais depuis hier le système est complètement bloqué en lecture seule. Impossible de faire la moindre mise à jour, ni de modifier ou sauvegarder quelque-chose. Cela me désappointe quelque peu car j’ai besoin de sauvegarder le système pour effectuer son remplacement. Il sent sa fin proche et il fait tout pour contrecarrer mes plans, hein ? on parle bien d’un disque dur là ?\nPour contourner le problème j’ai opté pour une méthode un peu brutale, mais il a bien cherché, je vais marquer les secteurs défectueux de force. Attention ami geek gardes bien en tête que cette solution n’est pas pérenne et qu’il te faudra quand même remplacer le vieux disque par un neuf.\nJ’ai démarré le Nas sur une clé USB, la mienne contenait systemrescueCD mais n’importe quel live système peut être utilisé. J’ai ensuite lancé la commande suivante pour chacune des partitions incriminées.\nfsck -t -y -f -c /dev/sdaX Petite explication de texte :\n-t : Affiche les statistiques temporelles pour fsck. Si cette option est utilisée deux fois, des statistiques supplémentaires seront affichés pour chaque passe. -y : Répond yes à toutes les questions, permet ainsi l’utilisation non interactive de fsck. -f : Force la vérification même si le système de fichiers semble propre. -c : Cette option oblige fsck à exécuter le programme badblocks pour trouver les blocs défectueux du système de fichiers. Ils seront alors marqués comme défectueux et ajoutés à l’inode des blocs défectueux. Après une demi-journée de calculs, tambouilles et autres informatiqueries tous les secteurs défectueux sont désormais marqués, jusqu’à la prochaine fois. En tout cas mon système est reparti à la normale, j’ai put effectué la sauvegarde complète. Il ne me reste plus qu’à trouver un remplaçant, le commander et l’installer. Mais ça c’est une autre paire de manche.\nPour conclure on ne le dira jamais assez : Sauvegarde !\n","date":"2017-10-12T15:00:14+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/survivre-quelques-semaines-avec-un-disque-dur-fatigue/","title":"Survivre quelques semaines avec un disque dur fatigué"},{"content":"Petit mémo pour sauvegarder en root mes bases de données, avant migration ou modifications majeurs par exemple.\nSAUVEGARDER Sauvegarder toutes les bases de données :\nmysqldump --user=mon_user --password=mon_password --all-databases \u0026gt; fichier_destination.sql Sauvegarder une base de données précise :\nmysqldump --user=mon_user --password=mon_password --databases nom_de_la_base \u0026gt; fichier_destination.sql Sauvegarder plusieurs bases de données :\nmysqldump --user=mon_user --password=mon_password --databases nom_de_la_base_1 nom_de_la_base_2 \u0026gt; fichier_destination.sql Sauvegarder une table précise :\nmysqldump --user=mon_user --password=mon_password --databases nom_de_la_base --tables nom_de_la_table \u0026gt; fichier_destination.sql Sauvegarder plusieurs tables :\nmysqldump --user=mon_user --password=mon_password --databases nom_de_la_base --tables nom_de_la_table_1 nom_de_la_table_2 \u0026gt; fichier_destination.sql RESTAURER Restaurer toutes les bases de données :\nmysql --user=mon_user --password=mon_password \u0026lt; fichier_source.sql Restaurer dans une base de données précise :\nmysql --user=mon_user --password=mon_password nom_de_la_base \u0026lt; fichier_source.sql ","date":"2017-10-09T15:00:14+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/mariadb-sauvegarder-et-restaurer/","title":"MariaDB : Sauvegarder et restaurer"},{"content":"Depuis plusieurs semaines je grappille ici et là des informations sur mastodon, dans le but d’installer ma propre instance. Maintenant que j’ai terminé j’ouvre cet article afin d’y regrouper toutes mes trouvailles.\nVoici le fruit des mes recherches.\nInstallation des dépendances sudo apt -y install imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev nginx redis-server redis-tools postgresql postgresql-contrib letsencrypt yarn libidn11-dev libicu-dev Installation de Docker-ce sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common sudo curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - sudo add-apt-repository \u0026#34;deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable\u0026#34; sudo apt update sudo apt install docker-ce sudo groupadd docker sudo usermod -aG docker $USER Installation de Docker-compose sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/bin/docker-compose sudo chmod +x /usr/bin/docker-compose Déploiement de l’image Rien de bien compliquer. Je clone le dépôt git de mastodon dans le dossier /srv\ncd /srv sudo git clone https://github.com/tootsuite/mastodon.git cd mastodon Pour une utilisation en production il faut activer les données persistantes pour postgresql et redis. Il suffit de dé-commenter les lignes volume dans le docker-compose.yml comme suit :\ndb: restart: always image: postgres:alpine volumes: - ./postgres:/var/lib/postgresql/data redis: restart: always image: redis:alpine volumes: - ./redis:/data Je copie ensuite le fichier exemple pour la configuration de mastodon.\nsudo cp .env.production.sample .env.production Je procède ensuite à la compilation de l’image.\ndocker-compose build L’image est maintenant compilée, passons à la configuration.\nConfiguration Tout ce passe dans le fichier .env.production.\nsudo nano .env.production Nom de domaine de l’instance et activation de ssl fortement recommandé.\nLOCAL_DOMAIN=toot.draconis.me LOCAL_HTTPS=true Je définis la langue par défaut.\nDEFAULT_LOCALE=fr Configuration du serveur smtp pour l’envoi des courriels admin et les activation de comptes. J’utilise l’adresse courriel fournit avec mon nom de domaine.\nSMTP_SERVER=serveir smtp SMTP_PORT=587 SMTP_LOGIN=no-reply@draconis.me SMTP_PASSWORD=password SMTP_FROM_ADDRESS=no-reply@draconis.me Pour terminer la configuration il faut générer trois clés avec la commande :\ndocker-compose run --rm web rake secret Chaque clé sera de cette forme :\nd250201baf31243159865836db1826b8cf1d442ea5cc37119908cadde0d160b3f248b6e47a8035c62d7fd9538fb3a5bcec6bc808040bc4995426a5c27b230420 Il faut ensuite les lignes suivantes, il faut une clé par ligne.\nPAPERCLIP_SECRET= SECRET_KEY_BASE= OTP_SECRET= Activation de l’image docker Création de la base donnée.\ndocker-compose run --rm web rake db:migrate Pré-compilation des fichiers CSS et JS.\ndocker-compose run --rm web rake assets:precompile Démarrage de l’instance en tant que démon.\ndocker-compose up -d L’instance est maintenant prête et fonctionnelle. Pour plus de commodités je place nginx en tant que reverse proxy.\nConfiguration du reverse proxy Nginx sudo nano /etc/nginx/conf.d/mastodon.conf map $http_upgrade $connection_upgrade { default upgrade; \u0026#39;\u0026#39; close; } server { listen 80; #listen [::]:80; server_name toot.draconis.me; location /.well-known/acme-challenge/ { allow all; } location / { return 301 https://$host$request_uri; } access_log /dev/null; error_log /dev/null; } server { listen 443 ssl http2; #listen [::]:443 ssl http2; server_name toot.draconis.me; access_log /var/log/nginx/mstdn-access.log; error_log /var/log/nginx/mstdn-error.log; # HTTPS ssl_certificate /etc/letsencrypt/live/toot.draconis.me/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/toot.draconis.me/privkey.pem; ssl_protocols TLSv1.2; ssl_ecdh_curve prime256v1; ssl_ciphers EECDH+AESGCM:EECDH+AES; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_dhparam /etc/nginx/ssl/dhparam2.pem; add_header Strict-Transport-Security \u0026#39;max-age=15768000; includeSubDomains; preload\u0026#39;; add_header X-Content-Type-Options \u0026#34;nosniff\u0026#34;; add_header X-XSS-Protection \u0026#34;1; mode=block\u0026#34;; add_header Referrer-Policy \u0026#34;strict-origin-when-cross-origin\u0026#34;; add_header Content-Security-Policy \u0026#34;frame-ancestors \u0026#39;none\u0026#39;; object-src \u0026#39;none\u0026#39;; script-src \u0026#39;self\u0026#39;; base-uri \u0026#39;none\u0026#39;;\u0026#34;; keepalive_timeout 70; sendfile on; client_max_body_size 0; root /home/mastodon/live/public; gzip on; gzip_disable \u0026#34;msie6\u0026#34;; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; location / { try_files $uri @proxy; } location @proxy { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_pass_header Server; proxy_pass http://127.0.0.1:3000; proxy_buffering off; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } location /api/v1/streaming { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_pass http://127.0.0.1:4000; proxy_buffering off; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } error_page 500 501 502 503 504 /500.html; } Avant de lancer nginx il me faut forger le dhparam. Cela peu prendre plusieurs minutes.\nsudo test -d /etc/nginx/ssl || mkdir -p /etc/nginx/ssl sudo nice openssl dhparam -out /etc/nginx/ssl/dhparam2.pem 4096 Puis générer les certificats avec let’sencrypt et enfin démarrer nginx\nsudo apt install letsencrypt sudo letsencrypt certonly -d toot.draconis.me --agree-tos -m admin@draconis.me --rsa-key-size 4096 --standalone sudo service nginx start Mon instance est disponible ! Rendez-vous à la page d’accueil https://mastoc.fr pour la création de mon compte et lui donner les droits d’administration.\nsudo docker-compose run --rm web rake mastodon:make_admin USERNAME=draconis Congrats! draconis is now an admin. \\o/ Navigate to https://toot.draconis.me/admin/settings to get started https://mastoc.fr/admin permet d’accéder à l’interface d’administration qui permettra de modérer, de personnaliser la page /about/more, d’accéder à une interface pour Sidekiq/PGSQL.\nPour terminer je rajoute une tâche cron pour gérer les souscriptions PuSH et entre autres d’alléger l’instance.\nsudo crontab -e @daily docker-compose run --rm mastodon-web rake mastodon:daily Le travail est maintenant terminé il n’y a plus qu’a profiter.\nConclusion Il faut maintenant interagir avec d’autres personnes pour augmenter le nombre d’instances vues. Et comme dirait l’autre y a plus qu’à tooter !\nSources :\nhttps://psychedeli.cat/mastodon/\nhttps://cloud.zaclys.com/Mastodon-config-nginx,p167,528\nhttps://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Docker-Guide.md\nhttps://angristan.fr/installer-instance-mastodon-debian-8/\n","date":"2017-04-25T15:00:14+01:00","image":"https://archives.draconis.me/images/header/virtualisation.jpg","permalink":"https://archives.draconis.me/p/recapitulatif-sur-linstallation-de-mastodon-avec-docker/","title":"Récapitulatif sur l'installation de Mastodon avec docker"},{"content":"Depuis que j’utilise let’s encrypt pour mes certificats la gestion de nginx en reverse proxy devient de plus en plus fastidieuse. Tous mes certificats sont éparpillés sur différents container lxc ce qui m’oblige à réaliser des opérations manuelles à chaque renouvellement. De ce fait impossible d’utiliser un script de renouvellement automatique et cela implique d’autres problèmes. C’est pourquoi j’ai décidé de déployer un vrai reverse proxy avec Haproxy qui m’a été chaudement recommandé par un ami.\nJ’ai récupéré cette configuration que j’ai adapté à mon infrastructure. Tout fonctionne à merveille depuis quelques mois. Je génère mes certificats directement du serveur concerné sans me soucier du reverse proxy. Mais je me suis aperçu en consultant les logs et mon piwik, que toutes les requêtes portaient l’ip locale du container qui héberge Haproxy.\nAu final il s’avérait que ma configuration n’était pas complète, il manquait quelques paramètres sur haproxy et surtout configurer nginx en mode « real ip ».\nNginx Le mode real ip n’est pas vraiment un mode mais plutôt un module qui doit être activé à la compilation de nginx. Pour le vérifier.\nsudo nginx -V\nIl faut ensuite chercher la ligne –with-http_realip_module, si elle est présente le module real ip est disponible. Pour info la version de nginx fournit par les dépôts officiels debian est déjà compilée avec le module. Il ne reste plus qu’à l’activer et le configurer.\nsudo nano /etc/nginx/nginx.conf On ajoute les lignes suivantes.\n## #real ip mode ## set_real_ip_from 192.168.xxx.xxx; real_ip_header proxy_protocol; real_ip_recursive on; Petite explication de texte :\n- set_real_ip_from : Définit l’adresse de confiance celle du reverse proxy. - real_ip_header : Définit le champ d’en-tête de la requête dont la valeur sera utilisée pour remplacer l’adresse du client. - real_ip_recursive : Remplace la dernière adresse utilisée par une nouvelle.\nSur chaque Vhost concerné je rajoute le paramètre proxy_protocol comme indiquer :\nsudo nano /etc/nginx/site-available/monsite server { .... listen 80 proxy_protocol; ... } server { ... listen 443 ssl proxy_protocol; ... } A partir de là nginx est capable d’afficher les IP réelles de chaque visiteurs.\nHaproxy La configuration de Haproxy est très simple il suffit de rajouter les directives suivantes :\nsend-proxy check check-ssl verify none Par exemple pour que piwik affiche les IP réelles pour les visiteurs du blog :\nserver blog 192.168.x.x send-proxy check check-ssl verify none weight 0 Je redémarre les deux services :\nsudo systemctl restart haproxy sudo systemctl restart nginx Maintenant chaque requête effectuée sur mes serveurs est affichée avec sa véritable IP et non celle du reverse proxy.\n","date":"2017-04-22T15:00:14+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/nginx-recuperer-les-ip-derriere-haproxy/","title":"Nginx : récupérer les Ip derrière haproxy"},{"content":"Depuis ma migration sur nextcloud plusieurs mises à jour mineurs ont été publiées. Au niveau de mon instance aucune ne m’a été proposée. Sur ownCloud à chaque nouvelle mise à jour un bandeau apparaissait m’avertissant d’une nouvelle version, majeur ou mineur. J’ai commencé à investiguer sur le problème, mais en attendant de le résoudre je préfère réaliser les mises à jour manuellement. Petite particularité de mon installation le dossier data est hébergé sur un disque dur dédié 2to de stockage, ce qui simplifie la procédure, en effet celui-ci ne sera pas à déplacer lors de la mise à jour.\nPremièrement je récupère la dernière version stable : https://nextcloud.com/install/#instructions-server\nwget https://download.nextcloud.com/server/releases/nextcloud-9.0.53.tar.bz2 Sauvegarde de l\u0026rsquo;ancien repertoire avec l\u0026rsquo;ancien numéro de version et extraction du nouveau\nmv nextcloud nextcloud_0.9.50 cd /var/www/ nextcloud tar xvjf nextcloud-9.0.53.tar.bz2 Il ne reste plus qu’migrer ma configuration qui contient le chemin vers le dossier data et attribuer les bons droits.\ncp /var/www/nextcloud_0.9.50/config/config.php /var/www/nextcloud/config/config.php chown -R www-data:www-data /var/www/nextcloud Nous arrivons enfin à la dernière étape, exécuter la mise à jour. Attention celle-ci doit être exécutée avec l’utilisateur web, sous debian il s’agit du compte www-data.\nsudo -u www-data -H ./occ upgrade Nextcloud or one of the apps require upgrade - only a limited number of commands are available You may use your browser or the occ upgrade command to do the upgrade Set log level to debug Turned on maintenance mode Checking whether the database schema can be updated (this can take a long time depending on the database size) Checked database schema update Checking updates of apps Checked database schema update for apps Updating database schema Updated database Starting code integrity check... Finished code integrity check Update successful Turned off maintenance mode Reset log level A noter que cette méthode évite de faire la mise à jour via l’interface web dont j’ai parfois subi les instabilités. Une petite connexion pour vérifier que le plan s’est déroulé sans accros et me voilà à jour. Cela me laisse le temps de résoudre le problème avec Update App.\n","date":"2016-08-10T15:00:14+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/update-app-de-nextcloud-ne-fonctionne-pas/","title":"Update app de nextcloud ne fonctionne pas"},{"content":"Mon FirefoxOS flame a rendu son dernier souffle en ce 17 Juillet 2016. L’écran tactile ne répond plus, impossible d’obtenir une réponse. Le symptôme : le téléphone se comporte comme si j’appuyais en permanence sur le coin supérieur gauche de l’écran.\nDans un premier temps je pensais que le téléphone s’était tordu dans ma poche. Je l’ai posé sur un champ plat pour vérifier, non le téléphone n’est pas tordu. Je suis parti sur la thèse de la poussière coincée. Après un démontage soigneux, un nettoyage, une inspection de la dalle tactile je ne vois aucun défaut ou autre gène sur l’écran. Je redémarre le tout et miracle le téléphone redémarre comme au premier jour pendant seulement deux heures… il s’est ensuite éteint pour ne jamais se rallumer.\nBien évidemment c’est toujours lorsque tu en as besoin que ton téléphone te lâche. Il me fallait rapidement en retrouver un. Je suis allé sur le site internet de mon opérateur et j’ai choisi celui qui entrait dans mon budget c’est-à-dire moins de 150€. J’ai opté pour un Wiko Pulp 4gavec android 5, mon épouse possédant un Wiko Rainbow en est complètement satisfaite, je suis parti sur ce modèle.\nAlors oui je sais Android c’est le mal, mais j’ai besoin d’un mobile fonctionnel rapidement. Je n’ai pas forcément le temps en ce moment de me consacrer à la recherche d’autres téléphones alternatifs qui tiennent la route. Je dois avouer que l’abandon par Mozilla de FirefoxOS m’a un peu refroidit sur l’expérience alternative, même si la communauté à reprit le flambeau, je croyais en ce projet l’idée était bonne, mais les partenaires n’ont pas joué le jeu. C’est vraiment dommage car à mon sens FFOS avait tous les atouts pour ce faire une place aux côtés d’Android et IOS. Bref on ne refait pas le passé il faut savoir aller de l’avant et pour moi cela passe par la case téléphone qui fonctionne.\nJe ne suis pas attaché au matériel mais j’ai quand même un petit pincement au cœur, car ce téléphone me correspondait en tout point et il a répondu à mes attentes pendant ses deux ans d’existence, mais une page se tourne et la vie continue. Pour l’instant le Wiko fait bien son job je ne pense pas m’en séparer avant longtemps, cela va me permettre de suivre les différents projets de téléphones alternatifs avant de faire mon choix.\nfigure1 ","date":"2016-07-28T15:00:14+01:00","image":"https://archives.draconis.me/images/2016/07/ripflame.jpg","permalink":"https://archives.draconis.me/p/rip-mon-flame-2014-2016/","title":"Rip mon Flame 2014-2016"},{"content":"Suite au départ de Frank Karlitschek, je suis l’actualité de NextCloud, fork annoncé de ownCloud, de très près. Utilisateur quotidien de owncloud les turbulences des dernières semaines dans le projet me concernent directement. Poussé par la curiosité, j’ai commencé à fouiller internet à la recherche d’informations. Mes trouvailles ont fini par me convaincre :\narrêt de l’utilisation de la contributor license agreemen (CLA) un développement ouvert à la communauté à la place d’un développement semi-fermé gestion de certaines fonctionnalités aujourd’hui disponibles uniquement dans la version entreprise d’ownCloud l’article de Dada sur sa migration l’actuel client de synchronisation fonctionne aussi avec nextcloud C’est d’un pas décidé que je me suis dirigé vers nextcloud et me voilà en route vers d’autres nuages. Pour être honnête je ne pensais pas que celle-ci serait aussi facile même si les deux logiciels sont encore très similaires.\nEtat des lieux de l’installation existante. Le serveur est hébergé directement sur mon Nas, il me permet ainsi d’avoir accès à mes données depuis n’importe où. Il me sert également de sauvegarde pour mes documents professionnels. Je n’utilise pas d’applications particulières, owncloud me sert uniquement pour du fichier. Mes agendas et mes contacts sont hébergés sur mon instance Sogo.\nIt’s migration time Récupérer la dernière version : cd /var/www/ wget https://download.nextcloud.com/server/releases/nextcloud-9.0.50.zip Extraire l’archive : unzip nextcloud-9.0.50.zip Définir les droits pour le serveur web apache (www-data sous debian) : chown -R www-data:www-data /var/www/nextcloud/ Copier le config.php de owncloud vers nextcloud : cp /var/www/owncloud /var/www/nextcloud Modification de la configuration de mon Vhost Apache : sudo nano /etc/apache2/sites-available/owncloud DocumentRoot \u0026#34;/var/www/nextcloud\u0026#34; \u0026lt;Directory \u0026#34;/var/www/nextcloud\u0026#34;\u0026gt; Options -Indexes +FollowSymLinks +MultiViews AllowOverride All Order allow,deny Allow from all \u0026lt;/Directory\u0026gt; sudo systemctl restart apache2 Me connecter et attendre la mise à jour de la base données, pour ensuite tomber sur le bel écran d’accueil figure1 J’ai profité de l’occasion pour supprimer deux messages d’erreurs :\nL\u0026rsquo;en-tête HTTP \u0026ldquo;X-Content-Type-Options\u0026rdquo; n\u0026rsquo;est pas configurée pour être égale à \u0026ldquo;nosniff\u0026rdquo; créant potentiellement un risque relié à la sécurité et à la vie privée. Il est donc recommandé d\u0026rsquo;ajuster ce paramètre. L\u0026rsquo;en-tête HTTP \u0026ldquo;X-Frame-Options\u0026rdquo; n\u0026rsquo;est pas configurée pour être égale à \u0026ldquo;SAMEORIGIN\u0026rdquo; créant potentiellement un risque relié à la sécurité et à la vie privée. Il est donc recommandé d\u0026rsquo;ajuster ce paramètre.\nD’abords sur le serveur apache directement dans le fichier de configuration /etc/apache2.conf\n\u0026lt;IfModule mod_headers.c\u0026gt; Header always set X-Content-Type-Options: nosniff Header always set X-Frame-Options: SAMEORIGIN \u0026lt;/IfModule\u0026gt; Puis sur le serveur nginx qui fait office de reverse proxy, toujours dans la configuration de nginx /etc/nginx.conf\nadd_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; Par contre pas de grands changements, c’est du owncloud sans le nom, mais tout fonctionne parfaitement et mon client de synchronisation a redémarré comme si de rien n’était. Je suis impatient de découvrir toutes les nouvelles fonctionnalités que va développer la nouvelle équipe.\nSuite au prochain épisode.\n","date":"2016-06-21T15:00:14+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/migration-owncloud-vers-nextcloud/","title":"Migration Owncloud vers Nextcloud"},{"content":"Ce soir petit moment de détente sur Steam mais celui-ci ne démarre pas. Je l’exécute alors dans un terminal :\n$steam Running Steam on arch rolling 64-bit STEAM_RUNTIME is enabled automatically Installing breakpad exception hander for appid(steam)/version(1459463254) libGL error: unable to load driver: i965_dri.so libGL error: driver pointer missing libGL error: failed to load driver: i965 libGL error: unable to load driver: swrast_dri.so libGL error: failed to load driver: swrast Premier réflexe je vais faire une recherche sur le bug tracker d’Archlinux au cas où. Au bout de quelques minutes j’obtiens ma réponse via ce rapport de bug.\nEn gros les librairies libgpg-error embarquées avec Steam ne correspondent pas à celle d’Archlinux, il suffit simplement de les supprimer pour utiliser celle d’Archlinux.\n$find ~/.steam/root/ -name \u0026#34;libgpg-error.so*\u0026#34; -print -delete Et voîlà à présent mon Steam démarre correctement.\n","date":"2016-06-20T15:00:14+01:00","image":"https://archives.draconis.me/images/header/jeuxvideos.jpg","permalink":"https://archives.draconis.me/p/mise-a-jour-de-lib32-ligcrypt-et-steam-casse/","title":"Mise à jour de lib32-libcrypt et Steam cassé"},{"content":"Mes enfants et moi sommes de grand fan du film pixel. Mes enfants parce que les personnages sont très drôles et cartoon, moi parce que je retombe complètement en enfance avec les vieux jeux présents. Il est très amusant de voir prendre vie les jeux sur lesquels je me suis beaucoup amusé et dépensé mon argent de poche sans compter.\nBien évidemment j’ai eu droit aux questions : C’est un vrai jeu pacman ? Et centiped c’était vraiment comme ça ? QUOI ? toi aussi papa tu connais ? Tu sais jouer aux vieux jeux vidéos ? Nous aussi ont veux y jouer ! Je me suis donc décidé de monter une petite plate-forme pour émuler ces jeux, cela tombe bien j’ai un raspberry 1 qui traine à rien faire.\nNi une ni deux j’y installe une raspbian et je m’attelle à l’installation et la configuration de chaque émulateur dont j’ai besoin. Mais dans ma précipitation j’avais oublié que le raspberry possède une architecture ARM et cela limite grandement le choix logiciel, surtout en émulation. Ce fut d’un compliqué pour faire fonctionner tout ce petit monde. Au cours d’une recherche je suis tombé sur cet article qui présente recalbox, distribution linux pour transformer un PI en console de jeux rétro. De l’atari 2600 à la Playsation 2 en passant par la neo-geo et surtout ce qui m’intéresse les vieux jeux d’arcades. Me voilà parti sur le site officiel www.recalbox.com pour en apprendre un peu plus sur la bête. Surprise je tombe sur une page en français et j’apprends que le projet est développé par des Français un peu chauvinisme ça fait pas de mal. Le site est très bien réalisé, la documentation est très complète et à jour, ce qui est très important pour moi. Franchement je dois dire que le temps de préparation et d’installation est ridicule avec le mini how-to disponible en page d’accueil. Il suffit de regrouper le matériel nécessaire et tout ce déroule aussi facilement qu’un copier-coller.\nVoici matériel que j’avais sous la main :\nRaspberry 1 Modele B\nCarte SD 8 go Sandisk\nUne manette Thrustmaster – Dual Analog 4\nUne manette Thrustmaster – firestorm dual power 3\nUn câble Hdmi – Dvi\ndongle wifi ourlink fourni par adafruit\nPour installer recalbox j’ai suivi le guide créer sa recalbox.\nfigure1 figure2 A bout que quelques minutes, le PI redémarre et me voilà sous recalbox. Pour l’instant la seule difficulté que j’ai rencontré est au niveau du dongle Wifi. Il est bien reconnu par le PI mais pas par recalbox. Un petit tour sur leur wiki, m’apprend qu’il y a certains dongle wifi compatibles, je me suis basé sur la liste fourni pour commander mon nouveau dongle. Tout le reste a fonctionné plug and play et j’avoue que de temps en temps cela fait du bien de ne pas se creuser la tête à chercher le pourquoi du comment. Malgré les faibles performances du PI, les jeux sont parfaitement émulés, tu copies tu colles tes roms et ça marche. Au moment où j’écris ses lignes, j’ai essayé l’émulation Nes, Snes, Neo-Geo, Final Burn, Mega Drive, Master system, Mame, PC engine, Game Boy (version color inclue) sans aucun problème. Recalbox gère aussi les montages réseaux Samba et NFS pas besoin de stocker ses roms directement sur la SD on peut facilement y accéder depuis le NAS de la maison.\nDeuxième bonne surprise, la recalbox embarque Kodi 14.2, et cela tombe très bien car je venais juste de commander un PI2 pour un usage pc de salon. Je vais essayer de combiner les deux pour une utilisation quotidienne. J’aurai donc l’occasion d’en reparler dans l’avenir, j’ai un tas d’idées pour recycler mon PI et qu’il arrête enfin de prendre la poussière. Coïncidence la semaine dernière j’ai eu une longue discussion avec un ami sur l’utilité du Raspberry dans la vie de tous les jours, j’ai enfin trouvé une réponse. Pour finir voici ma scène préférée de Pixel.\nhttps://www.youtube.com/watch?v=7aR15Xk0QyY\n","date":"2016-01-15T15:00:14+01:00","image":"https://archives.draconis.me/images/header/jeuxvideos.jpg","permalink":"https://archives.draconis.me/p/reaclbox-ou-comment-retomber-en-enfance/","title":"Recallbox ou comment retomber en enfance"},{"content":"Je ne me suis jamais habitué à la philosophie gnome-shell, c’est pourquoi je me suis rapidement tourné vers XFCE puis Openbox. Mon but étant de trouver une interface graphique, épurée, légère, utilisable principalement au clavier. Openbox a rempli sa part du contrat jusqu’au jour ou je me suis intéressé au Tilling.\nAu départ j’ai commencé mes essais avec awesome, wmbfs, herbsluftwm, entre autres, mais aucun ne m’a réellement séduit. Lorsque j’ai trouvé I3wm il avait pour moi tous les avantages décris plus haut avec une simplicité de mise en place et de configuration redoutable. En effet il se configure à partir d’un seul fichier appelé config qui se situe dans ~/.i3/. La modification de la configuration ne fait très simplement grâce à une syntaxe très simple, expliqué brillamment dans son guide de l’utilisateur.\nDepuis deux mois je tourne sous Archlinux avec le gestionnaire de fenêtre i3WM. Petit à petit j’apprends à dompter la bête. Au départ j’utilisais la configuration de base générée au premier démarrage de I3wm, pour me faire la main. Au fur et à mesure de son utilisation je l’ai adapté à mes besoins. Voici un premier jet de la configuration que j’utilise.\nLa barre des tâches Ce fut ma première modification.\nbar { position bottom # position en bas font pango:SourceCodePro-Medium, FontAwesome 8 # Choix des polices status_command ~/.i3/conky.sh #chemin vers le script conky #ci-dssous l\u0026#39;ancienne configuration #status_command i3status --config /home/olivier/.i3/i3status.conf #tray_output primary #output LVDS1 #output VGA1 #coouleurs à utiliser colors { background #0A0D14 statusline #0A0D14 separator #0A0D14 focused_workspace #0a0f14 #0a0f14 #CFCFD9 active_workspace #0a0f14 #0a0f14 #344169 inactive_workspace #0a0f14 #0a0f14 #344169 urgent_workspace #2f343a #900000 #ffffff } } Dans cette configuration je remplace la barre d’origine par un script conky perso. Celui-ci m’affiche l’utilisation des partitions racine et home, le niveau de batterie, le volume, la date et l’heure. En plus j’ai rajouté une ligne pour m’afficher le flux de mon serveur mpd.\nLes couleurs Je me suis aussi attaqué à l’apparence de mon interface. Selon la philosophie i3 une fenêtre seule représente un container. Vous pouvez ajouter des fenêtres (clients) à ce container. Chaque container possède plusieurs modes:\nle mode diviser, le mode par défaut, verticalement (splitv) et horizontalement (splith) une le mode stacked (empiler) tous les containers sont empilés les un sur les autres le mode tabbed, les containers se placent les un contre les autres. Dans n’importe quels modes les containers peuvent prendre deux états « focused » ou « unfocused » pour lesquels il est possible d’attribuer une couleur spécifique uniquement en hexadécimal.\n# class border backgr. text indicator client.focused #344169 #344169 #CFCFD9 #192033 client.focused_inactive #0A0D14 #0A0D14 #888888 #292d2e client.unfocused #0A0D14 #0A0D14 #888888 #292d2e client.urgent #EDE4DF #EDE4DF #ffffff #900000 client.focused : client sectionné (généralement celui sur lequel je suis en train de travailler). client.focused_inactive : client sélectionné mais par encore actif client.unfocused : client non sélectionné client.urgent : client qui nécessite une action d’urgence, la saisie d’un mot de passe à l’ouverture de Thunderbird par exemple Pour chaque état je définis la couleur de la bordure (border), l’arrière plan (backgr.), le texte (text), l’emplacement où elle va s’afficher (indicator). C’est le même principe pour les couleurs de la barre des tâches.\nLes espaces de travail I3wm, comme tout les windows manager sous linux, il exploite la force des espaces de travail. Dans un premier temps je configure les nombre d’espace virtuel que je veux.\n# workspaces set $WS1 1: set $WS2 2: set $WS3 3: set $WS4 4: set $WS5 5: set $WS6 6: set $WS7 7: set $WS8 8: set $WS9 9: Afin d’utiliser des icônes plutôt que des noms, j’ai installé le paquet ttf-font-awesome sous Archlinnux.\n$yaourt tt-font-awesome Par la suite afin de naviguer rapidement entre les différents espaces de travail je leur assigne un raccourcit clavier.\n# move focused container to workspace bindsym $mod+Shift+1 move container to workspace $WS1 bindsym $mod+Shift+2 move container to workspace $WS2 bindsym $mod+Shift+3 move container to workspace $WS3 bindsym $mod+Shift+4 move container to workspace $WS4 bindsym $mod+Shift+5 move container to workspace $WS5 bindsym $mod+Shift+6 move container to workspace $WS6 bindsym $mod+Shift+7 move container to workspace $WS7 bindsym $mod+Shift+8 move container to workspace $WS8 bindsym $mod+Shift+9 move container to workspace $WS9 bindsym $mod+Shift+0 move container to workspace $WS10 La chose que j’apprécie le plus dans la manipulation des espaces de travail, c’est de pouvoir déplacer n’importe quel container (fenêtre) sur n’importe quel espace de travail en une simple combinaison de touches.\nAinsi pour déplacer Firefox par exemple de mon bureau 1 vers mon bureau 4, il me suffit de faire un touche_super + Shift + le numéro de l’espace de travail désiré. Cette configuration est proposée d’origine par i3wm, j’ai simplement ajouté les petites icônes pour schématiser le rôle de chaque espace de travail. Ces icônes ne sont pas placées par hasard, elles me servent de moyen mémo technique pour assigner une application à un espace de travail dédié.\n#Move to workspace assign [class=\u0026#34;Steam|Playonlinux\u0026#34;] $WS4 Dans cet exemple j’assigne l’espace de travail n°4 aux applications Steam et Playonlinux en accord avec l’icône « play » configurée pour ce bureau. Cette configuration est totalement libre et chacun peut faire comme il l’entend.\n# move focused container to workspace bindsym $mod+Shift+1 move container to workspace $WS1 bindsym $mod+Shift+2 move container to workspace $WS2 bindsym $mod+Shift+3 move container to workspace $WS3 bindsym $mod+Shift+4 move container to workspace $WS4 bindsym $mod+Shift+5 move container to workspace $WS5 bindsym $mod+Shift+6 move container to workspace $WS6 bindsym $mod+Shift+7 move container to workspace $WS7 bindsym $mod+Shift+8 move container to workspace $WS8 bindsym $mod+Shift+9 move container to workspace $WS9 bindsym $mod+Shift+0 move container to workspace $WS10 Lancement des Applications Il est possible de lancer les applications avec une combinaison de touches, comme par exemple pour lancer Firefox.\nkey bindings bindsym $mod+w exec firefox Cette est très utile pour les applications que j’utilise très souvent\n#Move to workspace assign [instance=\u0026#34;terminator|urxvt\u0026#34;] $WS1 assign [class=\u0026#34;Firefox\u0026#34;] $WS3 assign [class=\u0026#34;ncmpcpp|vlc\u0026#34;] $WS4 assign [class=\u0026#34;Steam|Playonlinux\u0026#34;] $WS4 assign [class=\u0026#34;emacs\u0026#34;] $WS5 assign [class=\u0026#34;shotwell|gimp\u0026#34;] $WS6 assign [class=\u0026#34;pcmanfm\u0026#34;] $WS8 assign [class=\u0026#34;dontstarve|PillarsOfEternity\u0026#34;] $WS9 En conclusion Voici un premier jet de ma configuration réalisée après quelques semaines d’utilisation, celle-ci bien évidemment sera amenée à évoluer avec le temps et en fonction de mon utilisation. Il y a encore des points sur lesquels je travaille toujours qui feront l’objet de futurs articles. Pour les intéresser voici ma configuration complète :\nhttps://framagit.org/draconis/dotfiles/-/tree/master/.i3\nfigure figure ","date":"2015-10-28T00:00:00Z","image":"https://archives.draconis.me/images/2015/10/desktop_free.jpg","permalink":"https://archives.draconis.me/p/mes-debuts-avec-i3wm/","title":"Mes débuts avec I3WM"},{"content":"Hier soir je décide de mettre à jour mon serveur Nas qui englobe une instance ownCloud. Celui-ci est monté d’une version mineure la 8.0.4. Au moment de redémarrer le serveur web (apache) j’obtiens un joli message d’erreur\n[....] Restarting web server: apache2[Mon Jun 15 22:31:31 2015] [warn] The Alias directive in /etc/apache2/conf.d/owncloud.conf.old at line 1 will probably never match because it overlaps an earlier Alias. ... waiting [Mon Jun 15 22:31:32 2015] [warn] The Alias directive in /etc/apache2/conf.d/owncloud.conf.old at line 1 will probably never match because it overlaps an earlier Alias. . ok Cette erreur n’empêche en rien Apache de fonctionner correctement, mais cela ne fait pas propre de laisser traîner une erreur dans les logs.\nObjectif Identifier et cacher le fichier responsable de cette erreur.\nIdentifier Une analyse rapide du message m’apprend qu’il s’agit du fichier de configuration de ownCloud dans apache. Durant la mise à jour une copie de sauvegarde du fichier /etc/apache2/conf.d/owncloud.conf est réalisée. Le fichier est simplement renommé en owncloud.conf.old. Et c’est cette copie qui sème la zizanie dans la paisible prairie de notre apache. Même si celle-ci est renommée, au redémarrage apache lit tout de même le fichier et constate qu’il y a doublon. J’ai appris, souvent à mes dépends, qu’il ne fallait jamais supprimer un fichier sur un serveur afin de pouvoir revenir en arrière si quelques-chose se passait mal par exemple.\nCacher Le but de la manœuvre est d’empêcher la copie de sauvegarde d’être prise en compte par apache afin que le fameux message d’erreur n’apparaisse plus. Merci à tsyr2ko pour sa méthode.\nJ\u0026rsquo;édite le fichier apache2.conf\nsudo nano /etc/apache2/apache2.conf à la fin du fichier je commente la ligne avec #Include conf.d/ et je la remplace par Include conf.d/*.conf\nPour vérification je relance le serveur apache.\nsudo service apache2 restart [ ok ] Restarting web server: apache2 ... waiting . Tout est rentré dans l’ordre jusqu’à la prochaine mise à jour. Ce problème devrait être réglé sous Jessie et la nouvelle mise à jour d’apache. En effet deux nouveaux répertoires voient le jour le /etc/apache2/conf-available/ et le /etc/apache2/conf-enabled/. C’est le même principe qu’avec les répertoires « sites-available » et « site-enabled », le repertoire « conf-available » contiendra les fichiers de configurations disponibles et il suffira des les activer avec la commande a2enconf. Cela permet d’uniformiser la configuration d’apache ce qui est une bonne chose.\n","date":"2015-06-15T00:00:00Z","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/owncloud-8-0-4-et-apache-perd-la-tete/","title":"Owncloud 8.0.4 et Apache perd la tête"},{"content":"Anciennement XBMC (XBox MediaCenter), Kodi est un formidable outil pour gérer ses médiathèques. Il me sert principalement pour gérer mes fichiers multimédia. Il arrive parfois, au vu de la très grande quantité de fichiers que je possède, à SQLite de s’emballer et la base de données des médiathèques se corrompt. Dernier exemple en date d’hier soir, la moitié de mes diaporamas étaient amputées d’une voir plusieurs diapositives. Alors que le fichier image (jpg, png) s’y rapportant était présent « physiquement » sur le disque dur ou le partage NFS. Au départ j’ai cru à une erreur du scrapeur, mais une analyse des logs ne révéla rien. J’ai conclu que ma base de données était donc corrompue. En effet kodi créée un fichier SQLite pour chaque médiathèque (audio, photo, et autre). Ses fichiers sont sotckés dans : /home/$User/.kodi/userdata/Database/ Objectif Supprimer la base de données corrompue pour recréer une base de données saine avec comme moteur MariaDB. SQlite est très bien pour de petites bases de données mais j’ai atteint rapidement sa limite. J’ai eu le même cas avec mon serveur owncloud que j’avais aussi migré vers mariaDB à l’époque.\nSuppression de la BDD corrompue Dans un premier temps à partir de kodi je supprime toutes les sources alimentant la médiathèque des photos. Ensuite, je nettoie la médiathèque et je quitte kodi. Je me rends dans le répertoire contenant le fichier de la base de données et je le renomme au cas où.\ncd /home/olivier/.kodi/userdata/Database/ mv MyPictures90.db MyPictures90_bak24032015.db L’ancienne base est maintenant supprimée.\nCréation de la nouvelle BDD Je commence par installer MariaDB. Je me rends sur cette page qui permet de générer les dépôts pour sa distribution. Dans mon cas il s’agit d’une Debian Sid. Il ne me reste plus qu’à copier – coller les dépôts dans mon sources.list et d’installer la signature du dépôt :\nsudo apt-get install python-software-properties sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db sudo add-apt-repository \u0026#39;deb http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.0/debian sid main\u0026#39; sudo apt-get update sudo apt-get install mariadb-server Je créer maintenant un utilisateur « kodi » qui pourra créer une BDD pour chaque médiathèque.\n`CREATE USER \u0026#39;kodi\u0026#39; IDENTIFIED BY \u0026#39;motdepasse\u0026#39;;` #réglage de ses privilèges `GRANT ALL ON *.* TO \u0026#39;kodi\u0026#39;;` Je configure kodi en mode Sql grâce à l’ajout d’un fichier advancedesettings.xml qui sera stocké dans le dossier /home/olivier/.kodi/userdata .\n\u0026lt;advancedsettings\u0026gt; \u0026lt;videodatabase\u0026gt; \u0026lt;type\u0026gt;mysql\u0026lt;/type\u0026gt; \u0026lt;host\u0026gt;127.0.0.1\u0026lt;/host\u0026gt; \u0026lt;port\u0026gt;3306\u0026lt;/port\u0026gt; \u0026lt;user\u0026gt;kodi\u0026lt;/user\u0026gt; \u0026lt;pass\u0026gt;lemotdepasse\u0026lt;/pass\u0026gt; \u0026lt;/videodatabase\u0026gt; \u0026lt;musicdatabase\u0026gt; \u0026lt;type\u0026gt;mysql\u0026lt;/type\u0026gt; \u0026lt;host\u0026gt;127.0.0.1\u0026lt;/host\u0026gt; \u0026lt;port\u0026gt;3306\u0026lt;/port\u0026gt; \u0026lt;user\u0026gt;kodi\u0026lt;/user\u0026gt; \u0026lt;pass\u0026gt;lemotdepasse\u0026lt;/pass\u0026gt; \u0026lt;/musicdatabase\u0026gt; \u0026lt;picturesdatabase\u0026gt; \u0026lt;type\u0026gt;mysql\u0026lt;/type\u0026gt; \u0026lt;host\u0026gt;127.0.0.1\u0026lt;/host\u0026gt; \u0026lt;port\u0026gt;3306\u0026lt;/port\u0026gt; \u0026lt;user\u0026gt;kodi\u0026lt;/user\u0026gt; \u0026lt;pass\u0026gt;lemotdepasse\u0026lt;/pass\u0026gt; \u0026lt;/picturesdatabase\u0026gt; \u0026lt;videolibrary\u0026gt; \u0026lt;importwatchedstate\u0026gt;true\u0026lt;/importwatchedstate\u0026gt; \u0026lt;importresumepoint\u0026gt;true\u0026lt;/importresumepoint\u0026gt; \u0026lt;/videolibrary\u0026gt; \u0026lt;/advancedsettings\u0026gt; A partir de là mon instance Kodi est prête pour une nouvelle médiathèque.\nNouvelle mediathèque Rien de plus facile, il suffit d’ajouter les sources désirées dans Kodi pour qu’il se charge de créer les médiathèques et les BDD. Pour ceux qui voudraient aller plus loin, il est possible d’utiliser plusieurs instances Kodi avec la même BDD en « ouvrant » le serveur MariaDB/MySQL au réseau. Cela permet aux différents appareils embarquant kodi d’avoir accès à la même information en temps réel. Pour cela je vous conseille cette excellente page du wiki de kodi.\n","date":"2015-03-26T00:00:00Z","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/bloc-notes-base-de-donnees-kodi-corrompue/","title":"Base de données Kodi corrompue"},{"content":"Au cours des ateliers de découverte Linux, on me pose souvent la question : « Comment trouver facilement des paquets sous Debian ? ». Sous Firefox il existe une extension qui ajoute un moteur de recherche destiné à effectuer ses recherches dans la base de données des paquets Debian. Cette méthode est beaucoup plus conviviale qu’une ligne de commande et moins lourde que Synaptic. De plus j’utilise Firefox plus souvent que Synaptic.\nObjectif Cette extension permet de rechercher directement sur le site « Debian package » le paquet désiré.\nInstallation Pour l’installer il faut se rendre sur le site https://addons.mozilla.org, rechercher le nom « Debian Package ». Pour ensuite trouver la page suivante :\nfigure1 Cliquer « add to firefox » pour l’ajouter aux moteurs de recherche existant.\nfigure2 Utilisation Je choisis le moteur de recherche « Debian Package » parmi ceux déjà présent :\nfigure3 Il n’y a plus qu’à rechercher le paquet voulu, exemple avec emacs24 :\nfigure4 ","date":"2015-03-25T00:00:00Z","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/p/rechercher-simplement-des-paquets-debian/","title":"Rechercher simplement des paquets Debian"},{"content":"Fin janvier j’avais reçu un courriel me signifiant que j’allais recevoir un cadeau pour les dix ans de World of Warcraft. Ce cadeau était destiné aux joueurs qui avaient souscris un abonnement durant les soixante jours qui ont suivi la sortie du jeu et qui ne l’ont jamais interrompu.\nCe matin le livreur est enfin arrivé chez moi avec le fameux cadeau. Depuis le premier courriel, je me suis totalement coupé des sites spécialisés sur World of Warcraft pour garder la surprise.\nEt quelle surprise ! Je n’aurai jamais imaginé recevoir une chose pareille. C’est une statuette représentant un Orc chevauchant un loup de guerre qui fonce au combat. Entièrement en résine, son niveau de détail est impressionnant comparé à d’autres de ma collection. Elle est peinte imitation bronze et pour un joueur de la Horde elle est vraiment classe. La fourrure du loup et de l’armure orc est très réaliste. On s’y croirait !\nSous le socle il y a un petit message en anglais :\nThe orc statue is a constant presence in our life at Blizzard Entertaiment. It’s where we meet to talk, to eat, to celebrate. As we celebrate ten year of world of warcraft, we present this token of appreciation to you, stalwart adventurer. Thank you for being a constant presence in our lives as we adventure together.\nPour les non anglophones :\nLa statue orque est omniprésente dans notre vie à Blizzard Entertaiment. C’est là où nous nous réunissons pour parler, manger, célébrer. Comme nous célébrons les dix ans de world of warcraft, nous vous présentons cet appréciable présent, aventurier chevronné. Merci d’être constamment avec nous dans nos vies comme notre aventure ensemble.\nPour la petite histoire cette représentation de l’orc est une statue géante qui trône à l’entrée de la maison mère de Blizzard en Californie. Chaque employé passe au moins une fois par jour devant, elle est souvent le théâtre des nombreux évènements publique de Blizzard. Elle est devenue au fil des ans un symbole pour les fans et pour le studio.\nLa statue Je trouve ce clin œil touchant, car dans toute ma vie de joueur aucun studio de jeu vidéo n’avait eu une telle attention. Et puis c’est un peu comme si nous faisions partie de la famille Blizzard, car au vu des pré-requis pour la recevoir je ne pense pas que nous soyons nombreux à posséder ce cadeau.\nCertes on peut y voir un gros coup marketing, après tout ce n’est pas un organisme à but non lucratif, mais en tant que fan de la première heure, mon aventure avec blizzard ayant commencé avec Warcraft premier du nom, je pense vraiment qu’ils ont voulu faire un geste envers tous les fans qui sont restés fidèle au jeu pendant ses dix ans. Malgré toutes ses années je prends toujours autant de plaisir à venir en Azeroth, un peu plus modérément ses dernières années, famille, boulot, perpinux, mes travaux informatiques, etc. La magie est toujours là.\nMerci Blizzard pour ce cadeau unique et cette reconnaissance envers nous simple joueurs, cette statuette trouvera rapidement sa place auprès de mes Trolls et Taurens.\nPOUR LA HORDE !\nimage image image image image image image image image image image image image image image ","date":"2015-03-11T00:00:00Z","image":"https://archives.draconis.me/images/2015/03/IMG_0266.jpg","permalink":"https://archives.draconis.me/p/loktar-ogar/","title":"Lok'tar ogar !"},{"content":"Je navigue sur internet régulièrement depuis mes ordinateurs portables, un jour je me suis posé la question « et si je perds ou que l’on me vole mon portable qu’arrivera t’il aux données persistantes du navigateur ? » Et bien elles sont encore présentes et donc exploitables. Cela fait maintenant plusieurs années que Mozilla travaille sur des fonctionnalités de vie privée, mais elles sont encore très méconnues et nécessitent souvent une modification. Voici comment j\u0026rsquo;utilise l\u0026rsquo;onglet vie privée afin de laisser le moins de traces possible mes ordinateurs portables.\nPrincipalement ce que je souhaite effacer :\nHistorique de navigation Historique de téléchargement Connexions actives Historique des formulaires Le cache Les cookies Les cookies tiers La configuration s’effectue dans le menu préférence de Firefox. Pour information j’utilise Debian qui a renommé Firefox en Iceweasel, mais le fonctionnement reste identique mis à part une différence d’opinions entre Debian et Mozilla.\nLes préférences générales figure1 Je coche cette option pour indiquer au système d’analyse du site internet que je ne souhaite pas être pisté. A savoir que certains systèmes d’analyse peuvent passer outre cette demande, c’est le cas de Piwik notamment. A ce sujet j’utilise Piwik sur le blog, mais je n’ai pas activé ce bypass, je respecte le choix de chacun d’être ou non enregistré dans les statistiques du blog. Je définis la règle d’utilisation de l’historique, j’opte pour une configuration personnelle. Par défaut je n’accepte pas les Cookies, mais j’affine les réglages avec les exceptions (voir Figure 2) L’historique sera effacer à la fermeture de Firefox (voir Figure 3) J’efface aussi les suggestions de la barre d’adresse. Les Cookies figure2 Dans ce menu je configure les sites internet dont j’accepte les cookies. Hormis les différents outils web et sites internet où j’ai besoin de m’authentifier tous les autres cookies sont bloqués. Cela m’évite d’avoir à faire le ménage dans mes cookies à période régulière et aux cookies tiers d’envahir ma machine. Attention si vous optez pour une interdiction totale comme moi il faudra renseigner tous les sites où vous devez vous authentifier sinon l’\u0026lt;span authentification ne fonctionnera jamais.\nL’historique figure3 Ici je définis mes paramètres d’effacement.\nHistorique de navigation : tous les sites visités durant ma session Historique de téléchargements : vide la liste des fichiers téléchargés Historique des formulaires et des recherches : efface tous les contenus des formulaires que j’aurais put remplir (Nom, prénom, courriel, etc ) et les recherches effectuées dans la barre de recherche Cookies supprime : les cookies des sites autorisés Connexion actives : très pratiques lorsque l’on a fermé le navigateur sans se déconnecté au préalable Cache : je vide le cache Je n’ai pas coché le reste, car se sont des options que je n’utilise pas, je n’enregistre jamais les mots de passes et n’utilise pas les préférences de sites.\nPour terminer, cette configuration ne prévient pas contre, la perte et la casse matérielle d’un ordinateur portable dont je sauvegarde régulièrement les données. De plus elle est complètement subjective et répond parfaitement à mes besoins et mes habitudes de navigation. J’espère qu’elle servira à d’autres comme sources d’inspirations.\n","date":"2015-03-03T15:28:10+01:00","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/p/longlet-vie-priv%C3%A9e-dans-firefox/","title":"L'onglet vie privée dans Firefox"},{"content":"J’ai récemment installé une session xfce sur un de mes ordinateurs portables, pour mon fils et sa première réaction « C’est moche ! » , en effet je suis plutôt d’accord avec lui. Sans pour autant dire qu’il est moche, mais de base il fait un peu vieillot.\nJ’ai donc entrepris de le mettre au goût du jour.\nToute la configuration a été faite sur une Debian Sid et Xfce 4.10, avec lightdm comme chargeur graphique.\nRafraîchir Xfce Pour le thème du bureau, mon choix s’est porté sur Numix du projet Numix\n1.Installation pour tous les utilisateurs :\n# Installation des pré-requies sudo apt-get install gtk2-engines-murrine murrine-themes #Installation de Numix cd ~/Téléchargements git clone https://github.com/numixproject/numix-gtk-theme.git sudo cp -r numix-gtk-theme /usr/share/themes/Numix Dans le menu xfce -\u0026gt; paramètres -\u0026gt; apparences : Styles : Numix\nIcônes : Numix-Circle. Pour l’installer\nsudo git clone https://github.com/numixproject/numix-icon-theme-circle /usr/share/icons/ Polices :\nfigure1 Notifications :\nfigure2 Gestionnaire de fenêtres :\nfigure3 Peaufiner les fenêtres :\nActiver le Compositeur\nBureau :\nJ’ai enlevé toutes les icônes sauf les médias amovibles, taille des icônes 48\nTableau de bords :\nTaille : 24 px\nApparence : Tout à 100\nSuppression du deuxième tableau de bords\nThème du curseur :\nJ’ai un faible pour le curseur Dmz en blanc.\nsudo apt-get install dmz-cursor-theme Puis dans Souris et Touchpad j’ai changé de thème.\nFond d’écran\nJ’ai laissé le choix à mon fils.\nMenu Xfce\nJ’ai remplacé l’icône du menu de base par une aux couleurs de Debian fournit avec le thème Numix.\nVoici le résultat :\nfigure4 figure5 Lightdm au lieu de GDM Pour avoir utiliser les deux, je préfère lightdm qui est plus léger et beaucoup plus simple à configurer.\nModifier la structure générale de lightdm :\nDans le dossier /etc/lightdm je créer un répertoire nommé lightdm.d. A l’intérieur j’ajoute le fichier 01_malightdm.conf.\n#Contenu du fichier myligthdm.conf [SeatDefaults] greeter-session=lightdm-gtk-greeter #je défini le greeter par défaut greeter-hide-users=false #chaque utilisateurs du système sera visible. session-wrapper=/etc/X11/Xsession #démarrage de la session Modifier l’apparence de lightdm\nCette modification s’opère dans le fichier lightdm-gtk-greeter.conf qui est situé dans /etc/lightdm. Par précaution je fais une sauvegarde de l’original :\nsudo cp /etc/lightdm/lightdm-gtk-greeter.conf /etc/lightdm/lightdm-gtk-greeter.bak Et je procède aux changements :\nsudo nano /etc/lightdm/lightdm-gtk-greeter.conf #chemin vers le fond d\u0026#39;écran background=/usr/share/xfce4/backdrops/numix-background.png #choix du thème pour les couleurs theme-name=Greybird #choix du thème des icônes icon-theme-name=Numix-Colmaris #choix de la police font-name=Droid sans 10 #activation de l\u0026#39;anti-crénelage xft-antialias=true #paramètres par défaut non changés xft-dpi=96 xft-hintstyle=hintfull xft-rgba=rgb show-indicators=~session;~language;~a11y;~power; show-clock=true clock-format=%d %b, %H:%M #keyboard= #position= screensaver-timeout=60 Et voilà une interface un peu plus actuelle.\n","date":"2015-01-17T00:00:00Z","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/p/embellir-sa-debian-et-xfce/","title":"Embellir sa Debian et Xfce"},{"content":"Voici la suite de mes travaux sur mon petit serveur dédié au stockage. Après l’installation des partages Linux (NFS), je m’attaque maintenant aux partages windows. Même si je n’utilise pas windows pour mes activités informatiques, mise à part quelques jeux, je trouve utile pour un serveur d’être accessible depuis n’importe quel système notamment lorsque je veux échanger avec des invités qui sont sous windows, de plus cela faisait partie de mon cahier des charges.\nLes installations sous Debian se suivent et se ressemblent :\nsudo apt-get install samba Après cette formalité je passe directement à la configuration du serveur en lui-même. Tout se configure depuis le fichier /etc/samba/smb.conf. Voici la configuration détaillée que j’utilise :\n#======================= Global Settings ======================= [global] workgroup = WORKGROUP server string = %h server proxy = no log file = /var/log/samba/log.%m max log size = 1000 encrypt passwords = true smb password file = /etc/smbpasswd security = user create mask = 0777 directory mask = 0777 use sendfile = yes aio read size = 16384 aio write size = 16384 null passwords = no local master = yes time server = no wins support = no Ensuite pour chaque utilisateurs autorisés à accéder aux partages je créer un compte samba. Exemple avec l’utilisateur Draconis.\nsudo smbpasswd -a draconis New SMB password: Retype new SMB password: Added user draconis. Concernant les utilisateurs de passages avec qui je souhaite échanger, je crée un compte unique dédié avec leur répertoire. Ce qui me permet de détecter d’éventuels fichiers corrompus grâce à clamav avant de les intégrer à mes dossiers courants. Et cela évite que certain se baladent tranquillement dans mes photos ou autre.\nsudo mkdir /media/disk27B/johndoe sudo adduser johndoe Ajout de l\u0026#39;utilisateur «johndoe» ... Ajout du nouveau groupe « johndoe » (1001) ... Ajout du nouvel utilisateur « johndoe » (1001) avec le groupe « johndoe  » ... Création du répertoire personnel « /home/johndoe »... Copie des fichiers depuis « /etc/skel »... Entrez le nouveau mot de passe UNIX : Retapez le nouveau mot de passe UNIX : passwd : le mot de passe a été mis à jour avec succès Modification des informations relatives à l\u0026#39;utilisateur johndoe Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée Nom complet []: John Doe N° de bureau []: Téléphone professionnel []: Téléphone personnel []: Autre []: Cette information est-elle correcte ? [O/n]o sudo smbpasswd -a johndoe New SMB password: Retype new SMB password: Added user johndoe. Le serveur maintenant opérationnel je passe à la création des partages samba, toujours dans le fichier /etc/samba/smb.conf. En exemple le répertoire photos :\n#======================= Share Definitions ======================= [photos] path = /media/disk27B/photos/ guest ok = no read only = no browseable = yes inherit acls = yes inherit permissions = no ea support = no store dos attributes = no printable = no create mask = 0755 force create mode = 0644 directory mask = 0755 force directory mode = 0755 hide dot files = yes Une fois tous les partages configurés, je m’occupe du dossier John Doe.\n#=============== Share Definitions fo John Doe user======================= [johndoe] path = /media/disk27B/johndoe #invités interdit guest ok = yes #lecture seule non read only = no #dossier navigable browseable = yes #hérite des différentes acl inherit acls = yes inherit permissions = no ea support = no store dos attributes = no printable = no #lorsqu\u0026#39;un dossier ou un fichiers est crée il hérite des autorisations suivantes create mask = 0755 force create mode = 0644 directory mask = 0755 force directory mode = 0755 hide dot files = yes Avec ce système mes utilisateurs courant ont accès aux dossiers partagés, sauf john doe qui a accès uniquement à son répertoire. Cette configuration est un premier jet, je l’ai réfléchi sur le « papier ». Je verrai à l’usage si l’utilisateur John Doe est utile ou s’il faut que j’adapte cette configuration.\n","date":"2015-01-07T15:00:14+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/mon-nouveau-nas-apprend-la-samba/","title":"Mon nouveau Nas apprend la samba"},{"content":"Petit bloc-notes en relation avec la construction de mon serveur de stockage. Aujourd’hui l’objectif est de mettre en veille les disques-durs de stockage en veille lorsqu’ils ne sont pas utilisés.\nCelle-ci permet de réduire la consommation électrique et de réduire l\u0026rsquo;usure pour des disuqes durs qui fonctionnent 24/24h.\nEn faisant toutefois attention que ces arrêts-démarrages ne se produisent pas trop souvent. Cela aura l’effet inverse et détériorera plus rapidement les disques.\nMise en place c’est le logiciel HDPARM qui permet de réaliser cette mise en veille.\nsudo apt-get install hdparm\nVoici un exemple de fonctionnement\nje vérifie l’état du disque : sudo hdparm -C /dev/sdc /dev/sdc: drive state is: online\nje force la vielle au bout de 5 secondes sans utilisation : sudo hdparm -S 1 /dev/sdc\nJe vérifie à présent l’état de mon disque : sudo hdparm -C /dev/sdc /dev/sdc: drive state is: standby\nL’option -S compte par tranche de 5 sec. Dans mon exemple la veille interviendra au bout de 5 sec. Si je veux activer la veille au bout d\u0026rsquo;une minute il me faut mettre 12, en effet 12 * 5 = 60 sec.\nPour mon utilisation je souhaite que les disques s’arrêtent au bout de 20 minutes d’inactivité, voici la commande que j’utilise.\nsudo hdparm -S 240 /dev/sdc\n240 x 5 =1250 sec = 20 minutes.\nJ’ai choisi 20 minutes car les disques ne sont pas sollicités pour de petites périodes à la maison. Le serveur est très souvent utilisé, musique, consultation de documents, vidéos et autres. Par conséquent les cycles marche-veille sont peu nombreux. Mais pour une utilisation plus occasionnelle je préfère augmenter les temps entre chaque veille, pour éviter des démarrages trop fréquents.\nJe crée le fichier /etc/hdparm.conf qui me permet de garder la configuration de façon permanente.\nsudo nano /etc/hdparm.conf\nJ\u0026rsquo;ajoute pour chaque disques la commande de mise en veille\n/dev/sdb { spindown_time = 240 } /dev/sdc { spindown_time = 240 }\nJe redémarre le serveur et après 30 minutes je procède à l’essai\nsudo hdparm -C /dev/sdc /dev/sdc: drive state is: standby\nMes disques sont bien en veille jusqu’à leur prochaine utilisation.\n","date":"2015-01-03T15:28:10+01:00","image":"https://archives.draconis.me/images/header/adminsys.jpg","permalink":"https://archives.draconis.me/p/programmer-la-mise-veille-de-ses-disques-durs/","title":"Programmer la mise veille de ses disques durs"},{"content":"La nouvelle machine montée avec son système installé, je peux maintenant commencer la configuration du Nas. Je commence donc par le partage de fichiers en NFS, pour les différents PC linux de la maison.\nPour rappel ma configuration se base sur une Debian 7.7 alias wheezy. C’est parti pour la configuration.\nJ’avais prévu de monter mes disques données en LVM, mais pour cela il fallait les formater et n’ayant pas de disque en plus pour mettre mes données à part le temps de créer le LVM. Du coup je m’en veux un peu de ne pas avoir anticipé sur ce sujet.Ce n’est que partie remise puisque je compte investir dans d’un 4 TO d’ici l’année prochaine ce sera donc l’occasion de déployer le LVM. Je repars donc sur un système avec deux disques de 1To pour stockage.\nInstallation sur Serveur NFS Sous Debian en root il suffit de faire :\napt-get install nfs-kernel-server nfs-common Ensuite je créer un répertoire export à la racine qui centralisera tous mes partages sur le réseau local. Dans se répertoire je monte les répertoires que je souhaite partager, cette aspect de la configuration est inhérent à la version 4 de NFS. Une fois mes deux disques montés au système, je monte les répertoires à partager dans /export, au préalable je créer les dossiers cibles pour accueillir les partages.\nsudo mkdir /export cd /export sudo mkdir photos mount --bind /media/disk27B/photos photos Pour que ce montage soit permanent il faut le renseigner dans le /etc/fstab :\nUUID=27bd44d9-71aa-4b4a-9ed4-ab79e715d3fd /media/disk27B ext4 defaults,noatime,nofail 0 0 UUID=5b8275e1-85cb-4406-ba7f-8c54d48d7978 /media/disk5B8 ext4 defaults,noatime,nofail 0 0 /media/disk27B/photos /export/photos none bind 0 0 /media/disk5B8/videos /export/videos none bind 0 0 Maintenant il ne me reste plus qu’a configurer le serveur. Cela se passe dans le fichier /etc/exports.\nPour chaque partages il faut définir qui y aura accès et avec quels options.\n/export/photos 192.168.66.0/24(rw,subtree_check,insecure,no_root_squash) /export/videos 192.168.66.0/24(rw,subtree_check,insecure,no_root_squash) /export 192.168.66.0/24(ro,fsid=0,root_squash,no_subtree_check,hide) 192.168.66.0/24 : j’autorise n’importe quels ordinateurs du réseau à se connecter au partage rw : accès en lecture/écriture subtree_check : vérification de l’arborescence insecure : permet au client de se connecter sur un port différent de celui par défaut le 1024, utile dans certains cas. no_root_squash : spécifie que le root de la machine sur laquelle le répertoire est monté possède les droits root sur le répertoire De plus j’ai configuré le dossier export afin qu’il ne soit pas visible sur le réseau, et non navigable.\nPour terminer je redémarre le service nfs.\nsudo service nfs-kernel-server restart Configuration des clients Dans le /etc/fstab des mes clients pour accéder aux partages j’ajoute :\n192.168.66.166:/photos /home/draconis/photos nfs rw,defaults 0 0 Conclusion Dommage je n’ai pas anticipé la configuration du LVM, mais ce n’est que partie remise. Le services NFS tourne depuis 4 jours sans aucun souci.\n","date":"2014-12-23T15:00:14+01:00","image":"https://archives.draconis.me/images/header/adminsys.jpg","permalink":"https://archives.draconis.me/p/mon-nouveau-nas-partage-nfs/","title":"Mon nouveau nas : Partage NFS"},{"content":"Objectif : Les collections intelligentes sont des groupements d’applications proposées en fonction d’un thème. Les plus connues sont « social » « musique » et « jeux » que l’on trouve par défaut. Mais il est possible d’en installer d’autre et même d’avoir des thèmes personnalisés.\nMise en place : Un appuie long sur le bureau pour arriver sur menu de Firefox OS 2.0 :\nfigure Ensuite on « tape » sur « Ajouter des collections intelligentes ». Apparaît alors une grande liste de thèmes.\nfigure Personnellement j’ai choisi les thèmes : Actualité, Autour de moi, Restaurant.\nfigure Iil suffit d’ouvrir une collection pour profiter de ses applications.\nfigure Il est même possible de créer ses propres collections en fonction d’un thème particulier.\nfigure figure Dans l’exemple ci-dessus j’ai demandé les applications en relation avec le thème « cloud ». Par contre rien n’empêche d’ajouter des applications installés sur le téléphone dans chacune des collections.\nConclusion : Pour utiliser ses collections il faut être connecté à Internet, pas souvent évident lorsque l’on ne possède pas de forfait illimité. En revanche, rien n’est installé sur le téléphone, ce qui évite d’avoir des services non désirés exécutés, elles sont directement connectées au site internet en responsive design.\n","date":"2014-10-14T15:28:10+01:00","image":"https://archives.draconis.me/images/header/blogueris.jpg","permalink":"https://archives.draconis.me/p/samuser-avec-les-collections-intelligentes-de-firefox-os/","title":"S'amuser avec les collections intelligentes de Firefox-os"},{"content":"Objectif : Changer l’image de fond sur l’écran de connexion de gnome sous Debian.\nMise en place : Choisir une image par exemple :\nImge Brute\nSource : http://jesper-ullbing.deviantart.com/art/the-tree-196523563\nJ’ai choisi de la modifier pour qu’elle s’adapte à GDM et surtout à la résolution de mon écran sinon l’image ne sera pas entièrement visible.\nImage modifiée avec la bonne résolution\nLe fichier est disponible ici. La suite tien deux lignes de commandes :\nsudo mv /usr/share/gnome-shell/theme/noise-texture.png /usr/share/gnome-shell/theme/noise-texture-bak.bak sudo cp Images/the_tree_by_flou.png /usr/share/gnome-shell/theme/noise-texture.png Le thème de base proposé par debian utilise un fichier appelé « noise-texture.png » qui permet d’obtenir le fond gris foncé de base. L’idée est simplement de le remplacer par notre image modifiée.\nUne petite fermeture de session plus tard :\nImage modifier avec la bonne résolution\nImage modifier avec la bonne résolution\nCette opération sera à répéter à chaque changement de fond, ou en cas de mise à jour de gnome-shell comme en ce moment avec la mise à jour vers la 3.14.\n","date":"2014-09-26T00:00:00Z","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/p/changer-le-fond-decran-de-gdm/","title":"Changer le fond d'écran de gdm"},{"content":"Moi aussi j’ai succombé à la déferlante Firefox os-Flame que je viens hier soir. Je ne vais pas refaire le détail du packaging qui a déjà été très bien réalisé par mon confrère libriste Dada.\nA l’heure actuelle j’ai fait un rapide flashage en 2.0, avec une image pré-compilée, mais dès que possible j’essaierai de compiler un 2.1 histoire d’avoir une version avec les dernières modifications. J’ai aussi rencontré des problèmes avec mon serveur mail chiffré pourtant je n’ai pas de certificat auto-signé, j’utilise celui de Gandi.\nToujours de pas de carddav pour mes contacts hébergés sur ownCloud, mais par contre le calendrier fonctionne très bien tant que je ne souhaite pas le synchroniser en SSL.\nMis à part ses quelques problèmes à approfondir, j’accroche complètement à l’interface, le téléphone en lui-même est très bien. Je ne suis de toute façon pas objectif puisque mon ancien mobile était un vieux Galaxy S qui peinait à faire tourner CyanogenMod 10.\nPour info je n’ai payé que 29 euros de frais de douane et TVA contrairement aux 36 euros annoncés sur le wiki de Mozilla ou les 47 euros payés par d’autre. Je ne manquerai pas de faire d’autres articles en essayant de ne pas reprendre ce qui a déjà été fait, mais toujours en partageant mes expériences bonnes ou mauvaises.\nPour l’instant je suis encore dans l’euphorie de la nouveauté et de la découverte.\n","date":"2014-09-12T15:00:14+01:00","image":"https://archives.draconis.me/images/header/blogueries.jpg","permalink":"https://archives.draconis.me/p/mon-nouveau-jouet-tout-feu-tout-flame/","title":"Mon nouveau jouet tout feu tout flame !"},{"content":"Objectif : Afficher la console locale d’une VM proxmox sans être bloqué par les paramètres de sécurité Java avec un pc sous Openbox. Par défaut Java bloque les connexions sur les sites chiffrés auto-signés.\nMise en place : Depuis un terminal j\u0026rsquo;ouvre le panneau de contrôle de java /usr/lib/jvm/jdk-8-oracle-x64/bin/ControlPanel.\nfigure Il suffit ensuite de cliquer sur le bouton Modifier la liste des sites.\nfigure1 Puis rajouter le site internet auto-signé, dans mon cas l’url de proxmox.\n","date":"2014-06-07T15:28:10+01:00","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/p/parametres-de-securite-oracle-java-sous-debian/","title":"Paramètres de sécurité Oracle Java sous Debian"},{"content":"J’ai reçu le matériel de mon nouveau Nas personnel pour le stockage de mes données.\nLors d’une précédente réflexion, j’étais revenu sur mon projet d’un Nas virtuel avec proxmox. Trop de contraintes logicielles, matérielles et une très grosse perte de performance n’ayant pas de machine hôte adaptée. De plus le trafic Nas ajouté au trafic web habituel sur le serveur hôte le mettait à genou régulièrement.\nCahier des charges J’ai finalisé un cahier des charges avant de passer commande à mon revendeur habituel. Ce nouveau devra répondre à certain critères, au moment où j’écris ses lignes je sais déjà que certains points ne pourront être réalisables j’y reviendrai dans un autre article. Voici la liste :\nConsommation électrique la plus faible possible. Très silencieux, pour l’instant il sera entreposé dans le salon. Ajouter des disques durs facilement, prévoir de la place dans le boîtier pour deux ou trois disques d’avance. Encombrement minimal, en opposition avec le point ci-dessus Système exploitation libre et configuration maison. Être disponible 24/24, sur n’importe quelle plateforme de la maison (Pc portable, le HTPC, Tablette) Multi OS, pouvoir accéder à n’importe quelledonnée depuis n‘importe quel système d’exploitation. Concernant le point du système d’exploitation aucune hésitation se sera une Debian stable, avec partage Samba (windows), Nfs (Linux), ownCloud pour tout ce qui est de mon informatique dans les nuages. A cela se rajoutera un serveur rsync pour les sauvegardes des machines virtuelles de proxmox et autres données sensibles.\nPetite parenthèse sur les sauvegardes, je compte récupérer mon ancien Nas synology pour réaliser une sauvegarde externalisée. C’est très bien de faire des sauvegardes, mais c’est encore mieux lorsqu’on peut les entreposer sur autre lieu.\nBien sûr rien n’est arrêté, tout sera amené à évoluer, mais dans l’immédiat cela constitue ma base de travail. Fort de cette petite liste en poche, j’ai commencé mes recherches sur les différents fournisseurs informatiques pour établir ma configuration.\nLe Matériel figure1 La carte mère, MSI J1800I :\nProcesseur Dual-Core Celeron J1800 basse consommation intégré (2.41 GHz / 2.58 GHz – Cache 1 Mo – TDP 10W) - 2 ports SATA 3Gb/s (obligé de prendre un carte d’extension sata) Ports USB 3.0 (cela peut toujours servir en cas de récupération d’urgence) Format ultra-compact Mini-ITX (17 x 17 cm) (gain de place de la boîtier) C’est peut-être sur dimensionné pour un simple Nas, mais je prévois toujours large au cas où le Nas évolue sur des applications qui nécessitent un peu plus de ressources. Je n’aime pas être limité dans les projets à cause du matériel. Elle répond quand même à mon cahier des charges sur le point de la basse consommation.\nfigure2 La Ram, Corsair 2 Go en DDR3. D’habitude je ne prends que de la Kingston pour sa garantie à vie, qui n’est pas une garantie à vie réelle j’en fais l’expérience il y a quelques temps déjà le service après vente est nickel, mais sur le site revendeur il n’avait que des packs à deux barrettes 8 et 16 Go, par pure flemme je l’avoue j’ai pris cette barrette. L’avenir me dira si j’avais raison.\nfigure2 Une carte extension Sata afin de pouvoir brancher plus que les deux disques durs autorisés par la carte mère. J’espère qu’elle sera bien reconnue sous Debian, d’après mes recherches sur internet oui mais je me méfie toujours de ses cartes d’extension.\nfigure2 Le boîtier un cooler master elite 130.\nLorsque je l’ai sorti du carton j’ai dit : « mince il faisait plus petit sur les photos », j’aurai dû prendre mon mètre et vérifier les dimensions, mais au final il reste très compact et surtout il me permet de placer jusqu’à 5 disques durs, réparti entre 3×3.5 pouces et 2×2.5 pouces, ce qui est quand même l’essence même du Nas avoir le plus grand espace de stockage. Je voulais aussi éviter du bricolage pour placer tous mes disques durs et qu’ils soient un minimum ventilés.\nIl possède deux ventilateurs, un de 120 mm en façade et un autre de 80mm sur le côté pile en face de la carte mère. Il y a une possibilité d’en rajouter deux autres ventilateurs sur le côté. Pour le silence je verrai à l’usage.\nfigure2 figure2 Dans l’ensemble le montage c’est très bien passé, pas de difficulté particulière au niveau du boîtier. La Ram fut un peu dure à « enfoncer » dans son logement. Je ne l’ai pas encore démarré, car je suis en train de sauvegarder toutes les données qui migreront sur le Nas, pour ensuite en récupérer les disques durs, je n’en ai pas acheté d’autres ils ont moins d’un an. Pour commencer il y aura trois disques durs.\nLa récupération de mes données est longue, très longue, mais je le savais en me laçant dans ce projet, une fois terminée, je pourrai commencer l’installation du système et réfléchir au stockage de mes données.\nLe boîtier une fois la carte mère montée.\nfigure2 figure2 figure2 ","date":"2014-06-07T15:00:14+01:00","image":"https://archives.draconis.me/images/header/adminsys.jpg","permalink":"https://archives.draconis.me/p/mon-nouveau-nas-le-materiel/","title":"Mon nouveau nas : le matériel"},{"content":"Suite au billet où j’expliquais comment gérer ses dotfiles avec git, mr et vcsh, j’ai décidé de me pencher plus précisément sur la configuration de myrepos alias mr. En effet maintenir un seul et même fichier pour une trentaine de dépôts cela devenait fastidieux. J’ai donc opté pour une organisation décentralisée, avec un dossier pour stocker les différents fichiers de configuration de mes dépôts, appelé par le « mrconfig ».\n~ ├── .config │ └── labo │ └── config.d │ ├── emacs.vcsh │ └── zsh.vcsh │ └── .mrconfig Dans cette configuration, j’ai un fichier par dépôts, que j’active ou désactive à souhait dans le « mrconfig ». Un fichier de dépôt est configuré de cette façon, exemple avec mon dépôt emacs:\n[$HOME/.config/vcsh/repo.d/emacs.git] checkout = vcsh clone git@labo.olivierdelort.net:colmaris/emacs.git emacs vcsh emacs remote set-url --add origin git@github.com:colmaris/dotfiles-emacs.git Le fonctionnement reste le même, je clone depuis mon Gitlab et lorsque je pousse mes modifications elles sont simultanément poussées sur mon Gitlab et sur Github.\nPassons maintenant au chef d’orchestre le fichier « mrconfig » qui contrôle tout ce petit monde :\n[DEFAULT] git_gc = git gc \u0026#34;$@\u0026#34; include = cat ~/.config/labo/config.d/conky.vcsh include = cat ~/.config/labo/config.d/terminator.vcsh include = cat ~/.config/labo/config.d/emacs.vcsh include = cat ~/.config/labo/config.d/zsh.vcsh Je renseigne tous les dépôts que j’utilise et il me suffit de commenter le dépôt concerné pour le désactiver. Et l’inverse pour l’activer. Ce fonctionnement est beaucoup plus souple dans mes habitudes de travail.\n","date":"2014-05-23T15:28:10+01:00","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/p/optimisation-de-myrepos-mrconfig/","title":"Optimisation de myrepos - mrconfig"},{"content":"L’utilisation de plusieurs ordinateurs sous Linux, peut devenir un vrai cauchemar lorsque l’on veut maintenir la même configuration à jour. Dans mon quotidien il m’arrive d’utiliser trois ordinateurs différents. Et j’aime bien retrouver mes marques quel que soit la machine utilisée. Au départ je « trimballais » partout une clef usb avec tous mes fichiers de configurations, mais cette solution a atteint sa limite très rapidement.\nElle était surtout très contraignante car, je devais en permanence avoir ma clef usb sur moi et en cas de modification de configuration penser à faire une copie (ce qui arrivait une fois sur mille) sur la dite clef pour pouvoir mettre à jour mes autres ordinateurs. Du coup je me retrouvais avec des configurations très hétéroclites.\nJ’ai donc décidé de créer un dépôt git pour les différentes configurations que je souhaite déployer sur mes ordinateurs. Certains diront pourquoi ne pas tout grouper dans un même dépôt, je préfère les séparer en cas problème sur un cela ne me bloquera pas le reste.\nC’est alors que j’ai entendu parler de vcsh et mr (Merci à Brice camarade libriste qui m’a expliqué les bases). Ses deux petits programmes couplés avec git m’ont permit de centraliser tous mes fichiers de configurations sur mon serveur gitlab et ainsi de pouvoir installer mon environnement sur tous les ordinateurs que j’utilise.\nVCSH – Version Control System for $HOME – multiple Git repositories in $HOME Comme son nom l’indique il permet de faire de la gestion de version pour le $HOME. Grâce à lui plusieurs dépôts git peuvent cohabiter dans le même répertoire. Il centralise toutes les têtes de dépôts au même endroit, par défaut il les place dans ~/.config/vcsh/repos.d mais il est tout à fait possible de le changer, de même si l’on désire maintenir plusieurs dépôts git ailleurs que dans le $HOME. Pour plus d’informations je vous invite sur la page github du projet\nPassons à son installation, sous Debian,\nsudo apt-get install vcsh mr pour myrepo mr intervient principalement sur l’utilisation et la configuration des dépôts. Dans un premier temps il permet avec une seule ligne de commande, de livrer et pousser les modifications, mettre à jour simultanément tous les dépôts renseignés dans sa configuration. Dans un second temps il permet aussi de gérer la configuration de ses mêmes dépôts. Dans mon cas il me permet de pousser mes modifications à la fois sur mon serveur gitlab mais aussi sur mon compte github pour en garder une sauvegarde. Il me permet de rajouter une url à mon origin dès le clonage des dépôts, ce qui m’évite une configuration post-installation de tous mes dépots. Pour plus d’informations voici la page du projet.\nL’installation sur Debian est toujours aussi simple\nsudo apt-get install mr Préparatifs avant la transformation Tout d’abords j’ai défini quels fichiers de configurations que je souhaite garder à jour et déployer sur mes différents ordinateurs:\nLa configuration d’openbox La configuration d’emacs La configuration de terminator La configuration de zsh Initialisation avec vcsh J’ai au préalable créé sur gitlab et github un dépôt par configurations. Ensuite j’ai suivi la documentation de vcsh pour créer un par un par les dépôts. Exemple avec openbox :\n#initialisation du dépôt vcsh init openbox #création du gitignore pour éviter d\u0026#39;avoir des erreures sur les dossiers non #suivi vcsh write-gitignore openbox #ajout des fichiers vcsh openbox add ~/.config/openbox/rc.xml ~/.config/openbox/menu.xml ~/.config/openbox/autostart ~/.gitignore/openbox vcsh commit -am \u0026#39;intial commit\u0026#39; vcsh openbox remot set-url --add origin git@github.com:colmaris/dotfiles-openbox.git Pour emacs il faut de l’on retrouve le chemin exact vers le fichier init.el.\ncd ~/.emacs mkdir .emacs/ git mv init.el .emacs git add .emacs git commit -am \u0026#39;moving file init.el\u0026#39; git push Ensuite j’ai supprimé totalement le dossier .emacs de mon $HOME, pour le cloner avec vcsh.\nvcsh clone git@git.olivierdelort.net:colmaris/emacs \u0026lt;span class=\u0026#34;crayon-e\u0026#34;\u0026gt;emacs\u0026lt;/span\u0026gt; Ainsi j’ai put garder l’historique de mon dépôt emacs, et je peux maintenant l’utiliser avec vcsh sans problème.\nConfiguration de mr Une fois tous mes dépôts de configuration initialiser avec vcsh, je suis passé à la configuration de mr dont le but premier, dans mon cas, est de pouvoir pousser mes modifications sur mon gitlab et les sauvegarder sur github. Il n’y a pas très longtemps je n’étais pas pour l’utilisation de github, mais les différents commentaires sur cet article et une récente discussion avec des amis m’a fait changer d’avis. Et comme de toute façon ses dépôts seront public pourquoi ne pas en faire profiter les utilisateurs de github cela pourra être utile à quelqu’un, qui sait.\nLa configuration de mr se fait via un fichier .mrconfig directement placé dans le $HOME. Voici le mien\n[DEFAULT] git_gc = git gc \u0026#34;$@\u0026#34; # * Dotfiles Organisation # ** Emacs [$HOME/.config/vcsh/repo.d/emacs.git] checkout = vcsh clone git@git.olivierdelort.net:colmaris/emacs.git emacs vcsh emacs remote set-url --add origin git@github.com:colmaris/dotfiles-emacs.git # ** Openbox [$HOME/.config/vcsh/repo.d/openbox.git] checkout = vcsh clone git@git.olivierdelort.net:colmaris/dotfiles-openbox.git openbox vcsh openbox remote set-url --add origin git@github.com:colmaris/dotfiles-openbox.git # ** Terminator [$HOME/.config/vcsh/repo.d/terminator.git] checkout = vcsh clone git@git.olivierdelort.net:colmaris/terminator-solarized.git terminator vcsh terminator remote set-url --add origin git@github.com:colmaris/terminator-solarized.git # ** Zsh [$HOME/.config/vcsh/repo.d/zsh.git] checkout = vcsh clone git@git.olivierdelort.net:colmaris/dotfiles-zsh.git zsh vcsh zsh remote set-url --add origin git@github.com:colmaris/dotfiles-zsh.git Petite explication :\n# ** Emacs #ici j\u0026#39;indique ou se trouve la tête du dépôt [$HOME/.config/vcsh/repo.d/emacs.git] #ici se trouve les actions à réaliser lors du clonage checkout = # je clone à partir de mon gitlab vcsh clone git@git.olivierdelort.net:colmaris/emacs.git emacs #je rajoute mon compte github à l\u0026#39;origin de mon dépôt vcsh emacs remote set-url --add origin git@github.com:colmaris/dotfiles-emacs.git Lors du clonage des dépôts mr rajoutera l’url de mon compte github à l’origin déjà configurée.\nCe qui me permet de pousser d’un seul coup tous les dépôts sur mon github.\nmr push Déploiement A partir de maintenant je peux déployer mes configurations sur n’importe quel ordinateur ou git, vcsh et mr sont installés.\nJe procède comme suit :\n#installation des prérequis sudo apt-get install git vcsh mr #configuration de mr git clone git@git.olivierdelort.net:colmaris/dotfiles-mr.git ~/.mrconfig #clonage mr checkout Et voilà en quelques minutes j’ai déployé ma configuration et je suis prêt à travailler. S’il m’arrive de faire des modifications je les livre et les pousse directement dans le dépôt concerné. Et sur mes autres ordinateurs il me suffit de faire une mise à jour avec la commande mr update pour qu’elles soient prises en comptent.\nmr update mr update: /home/draconis/.config/vcsh/repo.d/apache-autoindex.git Already up-to-date. mr update: /home/draconis/.config/vcsh/repo.d/draconis-install.git Already up-to-date. mr update: /home/draconis/.config/vcsh/repo.d/emacs.git Already up-to-date. mr update: /home/draconis/.config/vcsh/repo.d/eso-theme.git Already up-to-date. mr update: /home/draconis/.config/vcsh/repo.d/motd-colmaris.git Already up-to-date. mr update: /home/draconis/.config/vcsh/repo.d/mrconfig.git Already up-to-date. mr update: /home/draconis/.config/vcsh/repo.d/mytheme-lightdm.git Already up-to-date. mr update: /home/draconis/.config/vcsh/repo.d/openbox.git Already up-to-date. mr update: /home/draconis/.config/vcsh/repo.d/terminator.git Already up-to-date. mr update: /home/draconis/.config/vcsh/repo.d/zsh.git Already up-to-date. mr update: finished (10 ok) Conclusion Depuis que j’utilise cette méthode je revis littéralement, je ne me soucis plus de savoir si j’ai ma clef usb à jour et avec moi. Tout est centralisé sur mon gitlab et j’ai mon github en sauvegarde. Je l’ai étendu sur d’autre projet sur lesquels je travaille.\n","date":"2014-05-19T00:00:00Z","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/p/g%C3%A9rer-ses-dotfiles-avec-git/","title":"Gérer ses dotfiles avec git"},{"content":"Encore un Bloc-Notes sur l’installation de mon Nas maison. Cette fois il s’agit d’intégrer ownCloud pour se créer un petit. Cela me permet d’avoir accès à un tas de choses depuis internet, musique, photos pour soirée diapos avec la famille, partager la dernière photo classe avec les grands-parents, etc.\nInstallation Pour l’installation il n’y a rien de plus simple avec les dépôts proposer pour Debian. L’avantage, les mises à jour sont automatiques, toutes les dépendances sont installées d’un seul coup. Il suffit de suivre la marche à suivre sur le site du dépôt.\necho 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_7.0/ /' \u0026gt;\u0026gt; /etc/apt/sources.list.d/owncloud.list apt-get update apt-get install owncloud\nEt voilà notre owncloud fraîchement installé. Lors du premier démarrage je choisis d’utiliser une base de données Mysql, possédant déjà un serveur MariaDB j’aurai tort de m’en privé. De mon point vu il est plus facile et plus stable de maintenir une BDD Sql qu’une BDD SQlite, mais c’est totalement subjectif.\nMigration de la base de Données : 1.Export de l\u0026rsquo;ancienne BDD\nmysqldump -u root -p cloud \u0026gt; save_cloud.sql\nJ’importe le fichier save_cloud.sql sur le nas et je restaure la base sur un base de données préalablement créee appellée owncloud.\n2.Création de la nouvelle BDD\nCréation de l\u0026rsquo;utilisateur\nCREATE USER 'owncloud'@'%' IDENTIFIED BY 'motdepasse';\nParamétrage de ses privilèges\nGRANT USAGE ON * . * TO 'owncloud'@'%' IDENTIFIED BY 'motdepasse';\nCréation de la base de données\nCREATE DATABASE IF NOT EXISTS `owncloud`;\nL\u0026rsquo;utilisateur owncloud n\u0026rsquo;aura accès qu\u0026rsquo;a la BDD owncloud\nGRANT ALL PRIVILEGES ON `owncloud` . * TO 'owncloud'@'192.168.66.166';\n3.Restauration de la BDD\nmysql -u root -p owncloud \u0026lt; save_cloud.sql\nMigration des données Pour cette partie il ne s’agit que d’un copier-coller bête et méchant. Avant de commencer je monte le répertoire DATA du nouveau owncloud sur l’ancien en NFS.\nsudo cp -r /var/www/owncloud/data/* /media/nouveauownCloud/data/\nParamétrages des droits sur le nouveau cloud\nchown -R www-data:www-data /var/www/owncloud/data\nAccès depuis internet Pour l’accès depuis internet j’ai configuré mon reverse proxy (nginx), et le serveur apache du nas. Pour une connexion en SSL avec un certificat gratuit de StartSSl.\n1.Nginx en reverse proxy\nSur le reverse proxy, j’ai rajouté ses lignes dans le fichier /etc/nginx/site-enabled/reverse\nserver { listen 443; server_name moncloud.mondomaine.tld; access_log /var/log/moncloud.access.log; error_log /var/log/moncloud.nginx_error.log error; ssl on; ssl_certificate [chemin vers le certificat]; ssl_certificate_key [chemin ver la clée]; location / { proxy_pass https://[adresse ip locale du serveur]/; } Apache serveur web Je crée l\u0026rsquo;hôte virtuel owncloud\nsudo nano /etc/apache2/sites-available/owncloud\nj\u0026rsquo;édite le fichier comme suit\n\u0026lt;VirtualHost *:443\u0026gt; ServerAlias moncloud.mondomaine.tld DocumentRoot \u0026#34;/var/www/owncloud\u0026#34; \u0026lt;Directory \u0026#34;/var/www/owncloud\u0026#34;\u0026gt; Options -Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all \u0026lt;/Directory\u0026gt; SSLEngine on SSLVerifyClient none SetEnvIf User-Agent \u0026#34;.*MSIE.*\u0026#34; nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0ean-shutdown downgrade-1.0 force-r$ SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile [chemin vers le certificat] SSLCertificateKeyFile [chemin vers la clée] SetEnvIf User-Agent \u0026#34;.*MSIE.*\u0026#34; nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 ServerSignature Off \u0026lt;/virtualHost\u0026gt; J\u0026rsquo;active l\u0026rsquo;hôte virtuel\nsudo a2ensite owncloud\nje relance apache\nsudo service apache2 restart\nLors de la migration je n’ai rencontré aucune difficultés particulières. Je profite à présent des avantages d’un petit cloud personnel couplé à la puissance de stockage d’un Nas.\n","date":"2014-05-14T15:28:10+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/integrer-owncloud-a-son-nas/","title":"Intégrer ownCloud à son Nas"},{"content":"Après des années d’utilisation très basique je me suis enfin penché sur l’amélioration de mon terminal. Au départ il me servait uniquement pour les mises à jour système, au fil du temps son utilisation s’est imposée d’elle-même a tel point qu’il est en permanence ouvert dans le coin d’un de mes bureaux virtuels.\nNe sachant pas où aller et de quoi j’avais besoin, j’ai constitué un mini cahier des charges comme ligne directrice.\nJ’ai principalement besoin :\nUn thème graphique reposant pour le yeux.\nLa surbrillance des commandes tapées (m’indiquer quand j’ai fait une faute de frappe sur une commande).\nD’un seul coup d’oeil connaître la branche git sur laquelle je travaille, et si des changements sont à « commiter ».\nDans une même fenêtre travailler sur plusieurs terminaux, avec par exemple des sessions ssh différentes.\nUn Prompt succin avec les infos essentielles\nTout est prêt, let’s go !\nLe choix de l’application Mon choix c’est porté sur Terminator, rapide, léger, paramétrable très simplement (un seul fichier de config). Je peux passer d’un seul terminal à 10 avec une seule séquence de touche, et je peux tous les piloté à partir d’un seul prompt.\nPour agrémenter le tout un joli thème inspiré du thème solarized de Ethan Schoonover.\nPour ceux qui sont intéressés voici Ma configuration -\u0026gt;\nLe choix du Shell Pour résumé le shell est la partie centrale du terminal, l’interpréteur de commandes dans la langue de Molière, il permet d’accéder aux fonctionnalités internes du système d’exploitation. Le plus connu étant le bash et ses dérivés, j’ai préféré zsh.\nInstallation :\nsudo apt-get install zsh chsh -s /bin/zsh utilisateur Après le redémarrage du terminal zsh est opérationnel ! Tout le nécessaire de configuration de zsh se trouve dans notre home /home/utilisateur/.zshrc. C’est le coeur de zsh !\nPour simplifier grandement sa configuration je l’utilise avec un petit utilitaire appelé antigen. Ce petit utilitaire me permet de mieux gérer les plugins dont j’ai besoin pour zsh, ainsi que d’autre fonctionnalités que j’ai renseignés dans le zshrc.\nEn gros lorsque je veux installer et utiliser un plugin (bundle dans antigen) il me suffit de renseigner dans mon zshrc et il fait le reste. Exemple si je veux utiliser des plugins de oh-my-zsh :\nantigen use oh-my-zsh # * Plugins antigen bundles \u0026lt;\u0026lt;EOBUNDLES # Git and github autocompletions and aliases git git-extras # Other command-not-found systemd EOBUNDLES Antigen va m’installer oh-my-zsh, et activera les plugins que j’ai configurés par la suite.\nPour le prompt j’utilise un thème perso, inspiré du thème powerline line\nPour ceux qui sont intéressés voici Ma configuration\nEn conclusion Depuis que je me suis penché sur l’amélioration de mon terminal, je suis plus tranquille et moins fatigué dans son utilisation. Mes tâches d’administration souvent pénible et répétitives se font avec une effroyable efficacité. J’arrive maintenant à mettre tous les serveurs à jours en une ligne de commande. Le terminal fait partie de ses petits outils que l’on néglige souvent, car leur puissance est méconnue.\nEt voici le résultat : figure ","date":"2014-05-13T00:00:00Z","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/p/un-terminal-aux-petits-oignons/","title":"Un terminal aux petits oignons"},{"content":"Il y a quelques jours je me suis débarrassé de mon vieil Asus pour un portable plus mobile, le Dell Vostro 3360. L’avantage du Vostro c’est qu’il est très mobile, écran treize pouces, 1,6 kg et une autonomie annoncée jusqu’à 7H30. Et surtout il y avait la possibilité de l’acheter avec une Ubuntu 11.10 pré-installé. En prenant une version Linux je me suis dit que je n’aurai pas de problème de pilote. Et bien non j’ai quand même eu un problème avec la nouvelle carte réseau d’Atheros.\nCette nouvelle carte très récente intègre le nouveau bluetooth 4. Elle utilise les nouveaux pilotes alx qui ne sont pas encore intégrés au noyau (à l’heure où j’écris ses lignes). Pas de souci avec la version ubuntu de Dell, cela c’est corsé quand j’y ai installé ma Debian.\nPrérequis Il faut d’abords installer ses paquets :\nsudo apt-get install build-essential linux-headers-`uname -r` Compilation du pilote Je suis allé sur le site http://www.orbit-lab.org/kernel/compat-wireless/\nj’ai téléchargé la dernière version, mais impossible de la compiler. Après différents essais j’ai trouvé la version de mars 2012 fonctionnelle avec mon portable.\nTéléchargement du pilote wget -O- http://www.orbit-lab.org/kernel/compat-wireless/2012/03/compat-wireless-2012-03-12-p.tar.bz2\nDécompression du pilote tar xvjf compat-wireless-2012-03-12-p.tar.bz2 | cd compat-wireless-2012-03-12-p\nAvec cette commande je ne choisis que de compiler le pilote alx\n./scripts/driver-select alx\nInstallation du pilote\nmake | sudo make install\nLe pilote maintenant installé il suffit de l’activer.\nsudo modprobe alx\nLorsque je fais un ifconfig, je vois bien la carte filaire (eth0) et la carte wifi (wlan0). Tout fonctionne parfaitement.\n","date":"2012-11-10T00:00:00Z","image":"https://archives.draconis.me/images/header/materiel.jpg","permalink":"https://archives.draconis.me/p/atheros-ar8161-sous-debian-wheezy/","title":"Atheros AR8161 sous Debian wheezy"},{"content":"Mailman est un serveur de liste de diffusion. Une liste de diffusion ou liste de distribution (mailing list en anglais, abrégé en ML) est une utilisation spécifique du courrier électronique qui permet le publipostage d’informations aux utilisateurs qui y sont inscrits. (source Wikipédia)\nPour les besoins de Perpinux, GUL de Perpignan, j’ai du installer un serveur de messagerie iRedmail et une liste de diffusion pour tous les adhérents avec mailman.\nD’abords j’ai créé un sous domaine liste.mondomaine.tld, dans bind sur mon serveur DNS.\nEnsuite sur le serveur de mail j’ai installé mailman.\napt-get install mailman A partir de là tout se passe dans la base de données mysql via phpmyadmin. En effet j’ai choisi Mysql pour la gestion d’iRedmail, ce choix se fait à l’installation du programme.\nDans phpmyadmin je me suis placé dans la base « vmail », puis dans l’onglet « SQL ». Afin que cela soit plus pratique pour les utilisateurs j’ai créé un alias pour raccourcir l’adresse de la liste de diffusion de @lite.mondomaine.tld à @mondomaine.tld.\nINSERT INTO `vmail`.`domain` (`domain`, `description`, `disclaimer`, `aliases`, `mailboxes`, `maxquota`, `quota`, `transport`, `backupmx`, `defaultuserquota`, `defaultuseraliases`, `defaultpasswordscheme`, `minpasswordlength`, `maxpasswordlength`, `created`, `modified`, `expired`, `active`) VALUES (\u0026#39;liste.maondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;0\u0026#39;, \u0026#39;0\u0026#39;, \u0026#39;0\u0026#39;, \u0026#39;0\u0026#39;, \u0026#39;mailman:\u0026#39;, \u0026#39;0\u0026#39;, \u0026#39;1024\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;0\u0026#39;, \u0026#39;0\u0026#39;, NOW(), \u0026#39;0000-00-00 00:00:00\u0026#39;, \u0026#39;9999-12-31 00:00:00\u0026#39;, \u0026#39;1\u0026#39;); Maintenant il ma fallut créer tous les alias pour la liste de diffusion mailman. En effet cette liste est obligatoire pour chaque serveur mailman, même si par la suite je ne m’en servirai pas c’est la première liste à créer pour mailman.\nINSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES (\u0026#39;mailman@mondomane.tld\u0026#39;, \u0026#39;mailman@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-admin@mondomane.tld\u0026#39;, \u0026#39;mailman-admin@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-bounces@mondomane.tld\u0026#39;, \u0026#39;mailman-bounces@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-confirm@mondomane.tld\u0026#39;, \u0026#39;mailman-confirm@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-join@mondomane.tld\u0026#39;, \u0026#39;mailman-join@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-leave@mondomane.tld\u0026#39;, \u0026#39;mailman-leave@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-owner@mondomane.tld\u0026#39;, \u0026#39;mailman-owner@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-requests@mondomane.tld\u0026#39;, \u0026#39;mailman-requests@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-subscribe@mondomane.tld\u0026#39;, \u0026#39;mailman-subscribe@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-unsubscribe@mondomane.tld\u0026#39;, \u0026#39;mailman-unsubscribe@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1); Ses commandes sont à répéter pour chaque liste de diffusion du serveur, et à adapter en du nom de la liste. Les alias créer il faut juste configurer postfix:\npostconf -e \u0026#39;relay_domains = liste.mondomaine.tld\u0026#39; postconf -e \u0026#39;mailman_destination_recipient_limit = 1\u0026#39; /etc/init.d/postfix reload Lors de mes premiers essais je me suis aperçu que les mails reçu mettaient plus d’une heure pour arriver sur mes boîtes. Ce problème était dû à la directive « greylist » dans le fichier /etc/postfix-policyd.conf. Pour la désactiver il suffit de la mettre à « 0 ».\nConfiguration de mailman :\nnano /etc/mailman/mm_cfg.py [...] DEFAULT_URL_PATTERN = \u0026#39;http://%s/\u0026#39; [...] DEFAULT_EMAIL_HOST = \u0026#39;mondomaine.tld\u0026#39; [...] DEFAULT_URL_HOST = \u0026#39;liste.mondomaine.tld\u0026#39; Pour terminer j’ai ajouté un virtualhost à apache :\nnano /etc/apache2/sites-available/mailman ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/ Alias /pipermail/ /var/lib/mailman/archives/public/ Alias /images/mailman/ /usr/share/images/mailman/ \u0026lt;Directory /usr/lib/cgi-bin/mailman/\u0026gt; AllowOverride None Options ExecCGI AddHandler cgi-script .cgi Order allow,deny Allow from all Satisfy Any \u0026lt;/Directory\u0026gt; \u0026lt;Directory /var/lib/mailman/archives/public/\u0026gt; Options FollowSymlinks AllowOverride None Order allow,deny Allow from all \u0026lt;/Directory\u0026gt; \u0026lt;Directory /usr/share/images/mailman/\u0026gt; AllowOverride None Order allow,deny Allow from all \u0026lt;/Directory\u0026gt; \u0026lt;VirtualHost *:80\u0026gt; ServerName liste.mondomaine.tld DocumentRoot /var/www/lists ErrorLog /var/log/apache2/lists-error.log CustomLog /var/log/apache2/lists-access.log combined \u0026lt;Directory /var/lib/mailman/archives/\u0026gt; Options FollowSymLinks AllowOverride None \u0026lt;/Directory\u0026gt; Alias /pipermail/ /var/lib/mailman/archives/public/ Alias /images/mailman/ /usr/share/images/mailman/ ScriptAlias /admin /usr/lib/cgi-bin/mailman/admin ScriptAlias /admindb /usr/lib/cgi-bin/mailman/admindb ScriptAlias /confirm /usr/lib/cgi-bin/mailman/confirm ScriptAlias /create /usr/lib/cgi-bin/mailman/create ScriptAlias /edithtml /usr/lib/cgi-bin/mailman/edithtml ScriptAlias /listinfo /usr/lib/cgi-bin/mailman/listinfo ScriptAlias /options /usr/lib/cgi-bin/mailman/options ScriptAlias /private /usr/lib/cgi-bin/mailman/private ScriptAlias /rmlist /usr/lib/cgi-bin/mailman/rmlist ScriptAlias /roster /usr/lib/cgi-bin/mailman/roster ScriptAlias /subscribe /usr/lib/cgi-bin/mailman/subscribe ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/ ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo \u0026lt;/VirtualHost\u0026gt; Création du répertoire « lists » pour les différentes pages web de configuration des listes du serveur, activation du virtualhost, et redémarrage d’apache pour prendre en compte les modifications.\na2ensite mailman mkdir /var/www/lists /etc/init.d/apache2 restart Comme expliqué plus haut lors de sa première configuration mailman a besoin d’une première liste appelée « mailman. Pour terminer il suffit de démarrer mailman.\n/etc/init.d/mailman start Le serveur Mailman est désormais opérationnel. Pour créer d’autre listes de diffusions il suffit de reprendre les requêtes SQL suivantes en changeant « mailman » par le nom de votre liste.\nINSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES (\u0026#39;mailman@mondomane.tld\u0026#39;, \u0026#39;mailman@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-admin@mondomane.tld\u0026#39;, \u0026#39;mailman-admin@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-bounces@mondomane.tld\u0026#39;, \u0026#39;mailman-bounces@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-confirm@mondomane.tld\u0026#39;, \u0026#39;mailman-confirm@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-join@mondomane.tld\u0026#39;, \u0026#39;mailman-join@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-leave@mondomane.tld\u0026#39;, \u0026#39;mailman-leave@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-owner@mondomane.tld\u0026#39;, \u0026#39;mailman-owner@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-requests@mondomane.tld\u0026#39;, \u0026#39;mailman-requests@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-subscribe@mondomane.tld\u0026#39;, \u0026#39;mailman-subscribe@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1), (\u0026#39;mailman-unsubscribe@mondomane.tld\u0026#39;, \u0026#39;mailman-unsubscribe@liste.mondomaine.tld\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;\u0026#39;, \u0026#39;public\u0026#39;, \u0026#39;mondomaine.tld\u0026#39;, NOW(), NOW(), \u0026#39;9999-12-31 00:00:00\u0026#39;, 1); Et ensuite pour l’activer :\nnewlist nom de la liste ","date":"2012-11-06T00:00:00Z","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/serveur-mailman-sous-iredmail/","title":"Serveur Mailman sous iRedmail"},{"content":"Lors de la configuration d’un serveur Ubuntu 12.04, je me suis aperçu que le fichier resolv.conf était effacé automatiquement à chaque démarrage.\nMême avec une carte réseau configuré en Ip fixe (mode static ), le fichier est réécrit.\nAu début il me semblait que le mode DHCP était forcé.\nD’ailleurs quand on l’édite à la main on peut trouver ce message en commentaire :\n# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN Après enquête se serait dû à l’activation par défaut du paquet resolvconf. Ce paquet permet de gérer le contenu du fichier resolv.con de façon plus précise. Tout ce passe dans le dossier /etc/resolvconf/resolv.conf.d/. Il contient trois fichiers : base, head, original, qui ont chacun un rôle plus ou moins important dans le contenu du resolv.conf.\nbase : comme sont nom l’indique c’est le fichier de base. Il est utilisé par défaut quand les autres sont vides. head : il permet de mettre en avant certains serveurs DNS, ils seront placés en premier dans le fichier. original : n’est simplement qu’une sauvegarde du resolv.conf lors de l’installation de resolvconf. Il existe un dernier fichier du nom de « tail », qui n’apparaissait pas lors de ma configuration. Selon le man, il n’est utilisé qu’en cas de mise à jour d’Ubuntu. Il contient l’ancien resolv.conf.\nJ’ai modifié le fichier base :\nsudo nano /etc/resolvconf/resolvconf.d/base Ensuite il suffit de procéder comme avec le resolv.conf :\nnameserver \u0026lt;ip du serveur dns\u0026gt; Après un redémarrage, mon fichier resolv.conf est complet avec la liste de mes serveurs dns préférés.\n","date":"2012-07-04T00:00:00Z","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/eviter-la-r%C3%A9%C3%A9criture-du-resolv.conf-sous-ubuntu-serveur-12.04./","title":"Eviter la réécriture du resolv.conf sous ubuntu serveur 12.04."},{"content":"Le grand avantage de travailler sur une plateforme virtuelle avec un hyperviseur c’est de pouvoir créer des serveurs virtuels dédiés à ce que l’on veut faire. Mon serveur héberge plusieurs serveurs, un serveur pour le blog de perpinux, mon propore blog, mes courriels, un serveur de base de données mysql etc etc…\nCela me permet de séparer les rôles en plusieurs machines et m’offre une très grande souplesse d’administration en cas de panne logicielle ou matérielle.\nLe tout protégé par pare-feu qui fut à l’origine de mon problème. En effet celui-ci ne permet de transférer le port 80 (port par défaut pour l’hébergement web) sur une seule machine.\nQuid des autres serveurs web ?\nLe proxy inverse dans la langue de molière fut ma solution. J’ai créé une machine avec apache configurer en reverse proxy. C’est le même fonctionnement qu’un proxy classique mais à l’envers. Au lieu de rediriger le reseau local vers internet, il redirige tout ce qui vient d’internet à destination du réseau local. Cela permet de ne pas avoir ses serveurs web directement exposés au feu.\nCette solution est très simple à mettre en place.\nj’ai installé une machine virtuelle avec ma distribition préférée et un apache. J’ai activé le mode proxy:\n$sudo a2enmod proxy $sudo a2enmod proxy_http Pour vérifier si les modes sont bien actifs, il faut jeter un coup d’oeil dans /etc/apache2/mod-enabled/\nsudo ls /etc/apache2/mods-enabled/ alias.conf autoindex.load mime.load setenvif.conf alias.load cgid.conf negotiation.conf setenvif.load auth_basic.load cgid.load negotiation.load ssl.conf authn_file.load deflate.conf proxy.conf ssl.load authz_default.load deflate.load proxy_connect.load status.conf authz_groupfile.load dir.conf proxy_http.load status.load authz_host.load dir.load proxy.load authz_user.load env.load reqtimeout.conf autoindex.conf mime.conf reqtimeout.load Ensuite rien de plus simple c’est le même fonctionnement qu’un apache en mode normal avec des Vhost pour chaque site à rédiriger.\nDans /etc/apache/sites-avaibles/ j’ai placer un fichier pour chaque sites, par exmple site1.org et site2.net :\nsudo nano /etc/apache/sites-avaibles/site1 \u0026lt;VirtualHost 192.168.XX.XX:80\u0026gt; #adresse ip locale du serveur reverse proxy ProxyRequests Off ProxyPreservehost on ServerName site1.org ServerAlias www.site1.org ProxyPass / http://192.168.XX.XX/ #adresse ip locale du serveur web ProxyPassReverse / http://192.168.XX.XX/ #adresse ip locale du serveur web ProxyPassReverseCookieDomain 192.168.XX.XX site1.org LogLevel debug \u0026lt;/VirtualHost\u0026gt; $sudo nano /etc/apache/sites-avaibles/site2 \u0026lt;VirtualHost 192.168.XX.XX:80\u0026gt; #adresse ip locale du serveur reverse proxy ProxyRequests Off ProxyPreservehost on ServerName site2.net ServerAlias www.site2.net ProxyPass / http://192.168.XX.XX/ #adresse ip locale du serveur web ProxyPassReverse / http://192.168.XX.XX/ #adresse ip locale du serveur web ProxyPassReverseCookieDomain 192.168.XX.XX site2.net LogLevel debug \u0026lt;/VirtualHost\u0026gt; Voilà nos deux Vhosts sont prêts et configurés, il reste plus qu’a les activer et redémarrer apache pour que les modifications soient prises en compte.\n$sudo a2ensite site1 $sudo a2ensite site2 $sudo /etc/init.d/apache2 restart Une dernière modification sur mon pare-feu pour faire un transfert du 80 sur le serveur reverse proxy. Grâce à se système je peux séparer tout mes serveurs web sur différentes machines virtuelles et ainsi ne pas mettre tout mes oeufs dans le même panier.\n","date":"2011-09-14T15:28:10+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/reverse-proxy-avec-apache/","title":"Reverse proxy avec Apache"},{"content":"DKIM ( Domain Key Identified Mail) grâce à ce petit logiciel installer avec Iredmail, j’ai la possibilité de créer une signature cryptographique dans le corps et l’entête des messages envoyés avec mon serveur de mail. C’est un peu le même principe que pour SSH.\nDkim chiffre tout les courriels sortant pour qu’ils soient ensuite authentifiés par la clé publique associée à leur domaine afin de garantir l’intégrité du courriel. Dkim est installé de base avec Iredmail mais il n’est pas activé.\nUne fois le serveur redémarrer (après la première installation d’iredmail), la commande suivante permet d’afficher sa clef DKIM:\nsudo amavisd-new showkeys. La clef apparait sous cette forme :\n; key#1, domain mondoamine.tld, /var/lib/dkim/mondomaine.tld.pem dkim._domainkey.mondomaine.tld. 3600 TXT ( \u0026#34;v=DKIM1; p=\u0026#34; \u0026#34;MIGfMA0GCSqGSIb34GNADCBiQKBgQDKSYY1yWMBMOlsN5AOlgYCS1OR\u0026#34; \u0026#34;GZySWitF8XdraeoaNYJ4VJedjd8oFlTBLitiTc3YIejRiZk7n1SUItrdXoR\u0026#34; \u0026#34;2Q74qBK4wOb4TQDa3HBDskb\u0026#34; \u0026#34;ERflTVM+SWgPhgGJpQIDAQAB\u0026#34;) Maintenant que j’ai ma clef, il me faut signé mon domaine. Pour ça il suffit de rajouter la clef dans un enregistrment dns TXT.\ndkim._domainkey.mondomaine.tld. 3600 IN TXT \u0026#34;v=DKIM1; p=MIGfMA0GCSqGSIb34GNADCBiQKBgQDKSYY1yWMBMOlsN5AOlgYCS1OR\u0026#34; Pour vérifier que la signature fonctionne :\nsudo amavisd-new testkeys Cette dernière doit retourner le code suivant en cas de bon fonctionnement.\n#TESTING#1 : dkim._domainkey.mondomaine.tld =\u0026gt; pass Voila mon domaine est chiffré et signé, de plus je participe dans mon entourage du moins à évité la propagation du phishing.\n","date":"2011-06-14T15:28:10+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/iredmail-et-dkim-contre-le-phising/","title":"Iredmail et DKIM contre le phising"},{"content":" figure1 Une fois mon serveur de courriel installé et opérationnel, je me suis rendu compte que le peu de spam que je recevais n’était pas taggé (SPAM) pas spamassasin.\nPour en avoir le cœur net j’ai fait un essai avec le courriel test GTUBE fournit par spamassasin. Ce courriel test se trouve dans /usr/share/doc/spamassassin/examples/sample-spam.txt.\nIl suffit de copier coller dans un message la suite de caractères du fichier sample-spam.txt dans un nouveau courriel et de l’envoyer sur la boite mail hébergée par iredmail. Au bout de quelque secondes le message arrive avec le tag ***SPAM***, hors chez moi lors de se test le message ne s’était pas taggé.\nEn farfouillant dans les fichiers de config et sur internet, je me suis aperçu que le souci provenait d’amavis avec son daemon amavisd-new et de spamassasin.\nLe crime parfait (spamasassin). Dans un premier temps je me suis penché sur spamassasin qui est par défaut désactivé, je trouve bizarre pour une solution clef en main destiné au non administrateur qu’il soit désactivé de base.\nRien de bien compliqué spamasassin se configure dans /etc/default/spamassasin. Deux directives à modifier :\n-ENABLED (pour activer le daemon) de 0 à 1 -CRON (pour les mises à jours nocturnes) de 0 à 1 Spamasassin configuré j’ai relancé le daemon et fait une mise à jour immédiate, on est jamais trop prudent surtout qu’il était désactivé depuis l’installation (à peu près 3 mois), ça peu pas lui faire de mal.\nPour démarrer spamassasin :\nsudo /etc/init.d/spamasassin start Pour faire la mise à jour immédiate (sans attendre la tâche CRON) :\nsudo sa-update Le chef d’orchestre (Amavis) Amavis c’est un peu lui qui chapote le tout, il fait office de chef d’orchestre. Il sert d’interface entre postfix (le MTA) et les differents logiciels de sécurités spamassasin et clamav.\nTout ce passe dans le répertoire /etc/amavis/conf.d/, j’ai édité le fichier 15-av_scanner pour vérifier qu’il avait bien détecté que mon antivirus mail est clamav. Les lignes suivantes sont décommentées:\n### http://www.clamav.net/ [\u0026#39;ClamAV-clamd\u0026#39;, \\\u0026amp;ask_daemon, [\u0026#34;CONTSCAN {}\\n\u0026#34;, \u0026#34;/var/run/clamav/clamd.ctl\u0026#34;], qr/\\bOK$/m, qr/\\bFOUND$/m, qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ], Cela signifie qu’il m’a bien détecté clamav comme antivirus mail.\nDeuxième fichier très important 15-content_filter_mode, c’est ce fichier qui me permet d’activiter spamassasin et clamav pour s’interfacé avec postfix.\nPour activer spamasassin :\n@bypass_spam_checks_maps = ( \\%bypass_spam_checks, \\@bypass_spam_checks_acl, \\$bypass_spam_checks_re); Pour activer clamav :\n@bypass_virus_checks_maps = ( \\%bypass_virus_checks, \\@bypass_virus_checks_acl, \\$bypass_virus_checks_re); Redémarrage du daemon :\nsudo /etc/init.d/amavis restart Répétition générale ! J’ai procédé à un second essai avec le courriel test GTUBE, bingo ! le message s’est bien taggé ***SPAM***.\nfigure2 ","date":"2011-06-03T15:28:10+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/iredmail-configuration-damavisd/","title":"Iredamil : configuration d'Amavisd"},{"content":"Free propose à ses abonnés depuis quelques temps déjà le multi TV. Quésaco !? Le multi TV permet de capter le flux télé de la freebox sur n’importe quel ordinateur du réseau local (branché sur la freebox). Il est ainsi possible de regarder le bouquet free sans la freeboxHD.\nPour ce faire j’ai configurer mon pare-feu pour laisser passer le multi tv, en ouvrant la plage de ports de 31336 à 31341 en UDP sur le pc où je voulais regarder le multi tv.\nMon pare-feu configuré, je me suis mit à la configuration de VLC.\nDans Outils -\u0026gt; Préférences (j’ai cliqué sur « Tous » en bas à gauche pour avoir la configuration avancé) :\nfigure J’ai juste modifié le numéro de port dans « port client » rien de plus. Après avoir enregistré, je suis allé dans Média -\u0026gt; Ouvrir un flux réseau et j’ai rentré l’adresse suivante:\nhttp://mafreebox.freebox.fr/freeboxtv/playlist.m3u\nA partir de là j’ai put correctement visionner le bouquet free de base, en HD ou en SD.\nJ’ai aussi remarqué que TF1, M6, W9 ne figurées pas dans la liste des chaînes. Apparemment c’est à leur demande que free ne les aurait pas intégrées.\nJe rappel que free propose aussi un multi TV pour les téléviseurs mais c’est payant avec un boîtier Multi Tv et une pris CPL qui ressemble à la freebox HD.\n","date":"2011-06-03T15:28:10+01:00","image":"https://archives.draconis.me/images/header/blogueries.jpg","permalink":"https://archives.draconis.me/p/multi-tv-free-avec-vlc/","title":"Multi tv Free avec VLC"},{"content":"Cette deuxième partie sera consacrée à l’installation de proxmox sur un serveur « vide » c’est à dire sans système d’exploitation.\nQuelle configuration me faut-il ? – 2 x AMD Athlon(tm) Dual Core Processeur 4450B\n– 6 go de RAM en DDR2 (8 go sont conseillés mais les barrettes de ram ne poussent pas dans les arbres lol )\n– LSI Logic / Symbios Logic MegaRAID pour le contrôleur Raid matériel.\n– 2 disques durs de 500 go.\nDeux petites contraintes sont à retenir pour la mise en place de proxmox, un processeur 64 bits obligatoire qui supporte le Intel VT pour un processeur Intel et AMD-V pour un processeur AMD.\nA l’heure actuelle quatre machines virtuelles fonctionnent sur mon hyperviseur, et mon serveur n’est absolument pas surchargé.\nOu télécharger proxmox ? Tout simplement sur www.proxmox.com\nComment Installer Proxmox ? Une fois l’ISO gravée sur un cd, il suffit de démarrer dessus, pour se retrouver sur cette page.\nfigure Appuyer sur entrée pour continuer puis cliquer sur « I agree » pour accepter les termes de la licence.\nfigure1 C’est la configuration habituelle pour toute installation d’une nouvelle distribution, réglage de l’heure, la date, la langue du clavier….\nDéfinition du mot de passe « root », pour l’accès via l’interface web et SSH.\nMaintenant la configuration réseau :\nfigure2 L’installation se lance après cette dernière étape et ne prend que quelques minutes. Pour ce rendre sur l’interface Web il suffit d’entrer l’adresse locale du serveur proxmox, soit en HTTP ou en HTTPS le dernier étant plus sécurisé.\nfigure3 Voici à quoi ressemble l’interface web proxmox.\nfigure4 Configuration Post-installation. Même si Proxmox est une distribution clé en main, j’ai procédé à quelques modifications pour l’intégré dans mon réseau.\nPremièrement la connexion sur l’interface web. Chez moi les ports 80(http) et 443(https) étaient déjà utilisés par mes serveurs web et courriel (pour mon webmail).\nPour changer le port par défaut, j’ai modifié le Vhost d’apache. En ssh depuis le serveur j’ai modifié le fichier :\nsudo nano /etc/apache2/sites-available/pve.conf \u0026lt;VirtualHost *:443\u0026gt; SSLEngine on SSLProtocol all -SSLv2 SSLCertificateFile /etc/pve/pve-ssl.pem SSLCertificateKeyFile /etc/pve/pve-ssl.key RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] \u0026lt;/VirtualHost\u0026gt; J’ai changé le port 443 par le port désiré. Un redémarrage d’apache pour que la modification soit prise en compte.\nJ’ai aussi changer le port d’écoute SSH. Par défaut ssh écoute sur le port 22 mais ce port est très connu et la majorité des pirates bases leurs attaques dessus.\nLe changement de port ne garantie pas une meilleure sécurité mais il permet de dérouté la majorité des attaques.\nCela se passe dans le fichier /etc/ssh/sshd_config, j’ai modifié la première ligne port 22 avec le port souhaité.\nPour valider un redémarrage de ssh suffit.\nLe serveur proxmox est maintenant prêt à accueillir ses premières machine virtuelles.\n","date":"2011-06-03T15:28:10+01:00","image":"https://archives.draconis.me/images/header/virtualisation.jpg","permalink":"https://archives.draconis.me/p/proxmox-la-virtualisation-libre-2-2/","title":"Proxmox : La virtualisation libre 2/2"},{"content":"En mai 2011 le démarrage de mon serveur mettait fin à deux ans de travail, de recherche et de prises de têtes pour pouvoir m’auto-héberger. Geek depuis l’âge de six ans (j’ai toujours eu un clavier entre les mains aussi loin que je m’en souvienne) j’ai toujours rêvé d’avoir mon propre serveur. 26 ans plus tard j’y suis parvenu.\nCela fait maintenant un peu plus d’un an que mon serveur fonctionne, alors pourquoi ne pas faire un petit bilan? Ce bilan se base principalement sur les questions que je me suis posés lors de ma phase préparatoire et de réalisation. Peut être qu’à travers ce bilan je donnerai envie à d’autre de se lancer ?\nPourquoi m’auto-héberger ?\nLe but est simple : retrouver mon indépendance. Comme tout le monde j’utilisais des services externes pour mes mails, fichiers, agenda, contacts etc.\nLe problème de ses services c’est qu’ils sont gérés par des sociétés privées, souvent dans des pays étrangers où les lois sur la vie privée ne sont pas les mêmes qu’en France. De plus ses systèmes sont soumis à des conditions d’utilisations plutôt douteuses pour certains. Ses services sont principalement gratuits et par conséquent blindés de publicités non désirées.\nQuels sont mes besoins ?\nC’est la première question que je me suis posé. J’ai besoin :\nde consulter mes mails (webmail et logiciel de messagerie)\nde pouvoir sauvegarder mes contacts\nde consulter mon calendrier depuis mon téléphone et pc\nd’accéder aux documents sur mon NAS\nLa création du blog est venu bien après, je voulais participer à ma façon au développement des logiciels libres.\nQuels moyens mis en place ?\nCe n’est pas un secret l’auto-hébergement à un prix. Financier et humain. Financier avec l’achat d’un ordinateur dédié (il faut compter 300 euros environ), sa consommation électrique, un abonnement internet. Humain, car il faut assurer sa maintenance et passer du temps à installer et configurer son serveur.\nEn tout premier lieu le choix de mon FAI a été primordial. C’est de lui que dépend entièrement la solution d’auto-hébergement. Dans ce choix je me suis fixé un cahier des charges. Il doit disposer :\nD’une Ip fixe inclut dans l’abonnement,\nD’une option pour désactiver le mode routeur, mon installation étant derrière un pare-feu.\nDe la téléphonie IP, même en mode modem.\nD’un débit sortant raisonnable,\nD’un prix pas trop élever.\nLe choix du matériel et des logiciels est aussi important. J’ai préféré acheter du matériel générique, il est plus facile de trouver des pièces détachées en cas de panne et c’est moins cher que l’achat d’un ordinateur de grandes marques. Lors de l’achat j’ai choisi des composants le moins énergie-vore possible, environnement et consommation électrique oblige.\nPour le système j’ai choisi de virtualiser le tout. Pourquoi la virtualisation ? Parce que c’est une technologie que je connais bien, l’utilisant très souvent. Elle offre une souplesse d’administration remarquable, elle permet de s’affranchir du matériel. En cas panne on peut restaurer une machine en 10 minutes. De plus pour un seul serveur physique on peut héberger beaucoup d’autres serveurs. Cela permet de cloisonner les services et de ne pas mettre tous ses oeufs dans le même panier et ainsi d’économiser sur la consommation électrique. Seule ombre au tableau avec ce système, il faut disposer d’une mémoire vive très importante, en fonction du nombre de VM, je suis parti sur huit go de ram extensible à 16.\nQuels outils pour la mise en œuvre ?\nLibriste, c’est tout naturellement que j’ai choisi GNU/Linux comme système d’exploitation et tous les logiciels utilisés sont libres.\nLa plate-forme de virtualisation c’est la distribution Proxmox qui a retenu mon attention. Elle dispose d’une interface web très bien réalisée pour gérer toutes ses machines virtuelles. Basé sur la branche stable de Debian elle regroupe tous les outils pour les différents types de virtualisations :\nLa virtualisation noyau (Openvz)\nLa virtualisation pleine (Kvm)\nPour plus de précisions je vous invite à lire cet article : Proxmox, la virtualisation libre.\nPour les mails j’ai choisi iredmail. Un script qui permet d’installer et de configurer automatiquement tous les logiciels pour un serveur de messagerie. J’ai quand même fait quelques réglages manuels, mais dans l’ensemble c’est out of the box.\nEt pour le reste de mes données, agenda, contacts, fichiers j’ai choisi owncloud qui n’est plus à présenter.\nLa supervision de mes VM, de mon hôte, est assuré par Munin. Simple rapide à mettre en place avec la configuration des alertes mails je suis informé directement en cas de dysfonctionnements.\nQuel système de sauvegarde et de tolérance au panne ?\nAucun système n’est infaillible, mais prendre quelques précautions ce n’est jamais du temps perdu.\nPour les sauvegardes de mes VM j’utilise le système inclut dans proxmox. J’ai créé un point de montage NFS sur mon Nas pour y regrouper toutes mes sauvegardes qui s’effectuent quotidiennement. Le seul inconvénient avec la sauvegarde proxmox, il ne garde pas les anciennes sauvegardes en archives.\nEn cas de grosse panne matériel j’ai un serveur de secours, une machine de récupération, qui me sert à restaurer mes VM depuis les sauvegardes de mon nas, le temps de réparer le serveur principal.\nEn conclusion.\nLes résultats obtenus après pratiquement un an d’auto-hébergement sont au-delà de ce que j’avais espéré.Au départ je ne pensais pas pourvoir héberger que mes mails et du stockage de fichiers. C’est en rédigeant cet article que j’ai pris conscience de tout le travail que j’ai accompli depuis trois ans.J’ai réussi à atteindre mon but, ne plus dépendre d’un tiers pour mes données personnelles.\nIl me reste encore des choses à faire, notamment en cas de coupure internet, finir la supervision de certains serveurs, gérer automatiquement les mises à jour etc. Malgré certaines contraintes j’encourage vivement tous ceux qui veulent se lancer dans l’auto-hébergement. Certes cela demande quelques compétences, du temps, de l’énergie, et un peu d’argent, mais je l’ai fait avec passion et quand on aime on ne compte pas.\nSi vous avez une machine qui traîne dans un placard, lancez vous ! Prenez-le comme un défi !Même si vous n’arrivez pas au bout c’est toujours formateur, y a toujours quelque-choses à apprendre.\n","date":"2011-06-03T15:28:10+01:00","image":"https://archives.draconis.me/images/header/blogueries.jpg","permalink":"https://archives.draconis.me/p/un-an-dauto-h%C3%A9bergement-le-bilan/","title":"Un an d'auto-hébergement : Le bilan"},{"content":"En ce mercredi de printemps, enfin printemps c’est vite avec la chaleur qui fait depuis ses derniers jours. Du coup je reste au frais. Je me suis lancé alors dans le test de Mageia un fork de mandriva.\nJ’ai donc voulut installer l’iso sur une de mes clefs usb pour éviter de gaspiller un dvd.\nArchlinux ne prend pas nativement le fat32 il faut installer un petit paquet qui gère les différents fat.\n$sudo pacman -S dosfstools Il ne reste plus qu’a formater la clef en fat32 pour y installer l’iso de Mageia Beta 2.\n","date":"2011-05-25T15:28:10+01:00","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/p/formater-une-clef-usb-en-fat-32/","title":"Archlinux : Formater une clef usb en fat 32"},{"content":"Suite à mon expérience personnelle je propose une suite de quatre articles sur la distribution hyperviseur Proxmox Virtual Environment.\nLa bête mis à nue :).\nProxmox VE est une distribution Linux qui permet grâce à des outils libres comme OpenVZ et KVM de mettre en place une plateforme de virtualisation en barre métal. C’est à dire sans OS à installer au préalable.\nDe plus grâce à son interface web intégré l’administration des machines virtuelles est très simple et peut se faire de n’importe quel endroit sur le réseau, sur n’importe quel système (Linux, Windows, Macos) puisqu’un simple navigateur internet suffit pour sa configuration.\nProxmox VE permet deux modes de virtualisation. Le premier basé sur une virtualisation noyau basé sur le noyau Linux. Gérée par openVZ, elle permet au noyau de la machine physique de faire tourner plusieurs instances de systèmes d’exploitation isolés, appelés des environnements virtuels. Par contre il faut que le système hôte et le système invité soit de base Linux. A l’inverse la virtualisation au niveau noyau permet une meilleure gestion des ressources et des performances accrues par rapport à une para-virtualisation.\nLe deuxième mode est la virtualisation pleine. C’est à dire que la machine invité est complètement virtuelle (carte réseau, processeur, ram ….). Avec ce système la machine est complètement indépendante du matériel physique et du système hôte, on peut donc virtualiser du Linux ou du Windows. Géré par KVM, il faut s’assurer dans un premier temps que le processeur physique soit compatible avec les technologies Intel VT pour un processeur Intel et AMD-V pour un processeur AMD. Cela se vérifie dans le bios de l’ordinateur.\nPour utiliser proxmox VE pas besoin de système d’exploitation, tout est intégré. C’est ce qu’on appel un hyperviseur il possède sont propre OS. Pour proxmox VEc’est une Debian Lenny 64 bits qui fait tourner le tout, ce qui est quand même un gage de stabilité.\nL’installation et la configuration en elle même ne prend pas plus de 5 ou 6 minutes et elle sont simplicimes.\nIl faut savoir que tout ce qui se trouvent sur la machine est effacé lors de l’installation. Proxmox VE utilise le stockage local en raid (0, 1, 5) ou non. Pour ma part je l’ai installé sur un raid 1 matériel géré par une carte adaptec avec deux disques durs de 500 Go. En plus de ça on peut y rattaché des espaces de stockages externes en NFS ou ISCSI. Dans mon cas pour sauvegarder mes machines virtuelles, j’ai connecté mon serveur proxmox VE sur un NAS en NFS.\nDans l’interface d’administration proxmox VE permet de faire du clustering entre différents serveur Proxmox VE, ce qui permet une migration des machines virtuelles d’un serveur à l’autre sans interruption de service, ou pour la gestion de fermes virtuelles.\nSeul petit bémol et encore c’est pas grand chose, il faut impérativement que le processeur du serveur soit en 64 bits, sinon seul le module de virtualisation openVZ fonctionnera.\nProxmox VE est téléchargeable à cette adresse : http://www.proxmox.com/products/proxmox-ve\n","date":"2011-04-20T15:28:10+01:00","image":"https://archives.draconis.me/images/header/virtualisation.jpg","permalink":"https://archives.draconis.me/p/proxmox-lavirtualisation-libre-1-2/","title":"Proxmox : La virtualisation libre 1/2"},{"content":"Tout fraîchement déballé le 6 avril 2011 gnome 3 se retrouve sur le dépôt [testing] d’archlinux. Cette mise à jour majeur du célèbre gestionnaire de bureau viendra remplacer gnome 2. Quand les paquets seront jugés stables ils seront placés dans le dépôt [extra].\nA noter que l’installation de gnome 3 garde sous le coude une version de gnome 2 dans le cas où l’ordinateur ne serait pas capable d’éxécuter Gnome-shell, par exemple si la carte graphique ne gère pas l’openGL.\nPour en profiter il suffit d’activer le dépôt [testing] dans le /etc/pacman.con. Si comme moi vous avez fait une installation avant la date de sortie officielle il faudra désactiver le dépôt [gnome-unstable].\nDésactivation du dépôt [gnome-unstable], il suffit de commenter ses deux lignes avec un « # ».\n#[gnome-unstable] #Include = /etc/pacman.d/mirrorlist Pour la suite de l’installation, j’ai suivit cette procédure sur le wiki d’archlinux(en).\nNhésitez pas à repporter tous les bugs recontrés aux développeurs de gnome mais aussi aux mainteneurs d’archlinux.\nBon courage.\n","date":"2011-04-08T15:28:10+01:00","image":"https://archives.draconis.me/images/header/blogueries.jpg","permalink":"https://archives.draconis.me/p/gnome-3-phase-de-test-pour-archlinux/","title":"Gnome 3, phase de test pour Archlinux"},{"content":"Cela fait maintenant un peu plus de 13 heures que j’ai migré ma Arch sous Gnome 3. Le principal changement vient du gestionnaire de fenêtres le tant controversé Gnome-shell.\nEt je dois dire que tous mes acquis avec l’ancien gnome ont volé en éclats. J’avance dans mon nouvel environnement tout doucement à pas de gnome :D.\nMon premier souci était dut à un conflit entre nautilus 3.0 et nautilus-elementary.\n$sudo pacman -S nautilus Résolution des dépendances... Recherche des conflits possibles entre paquets... :: nautilus et nautilus-elementary sont en conflit. Supprimer nautilus-elementary ? [o/N] J’ai répondu oui à la question et nautilus 3.0 c’est installé correctement, il fonctionne parfaitement.\nDeuxième petit souci, impossible de trouver le bouton arrêter, dans le menu déroulant lorsque je clique sur mon nom d’utilisateur en haut à droite.\nEn fait il suffit juste d’appuyer sur ALT quand le menu apparaît, et alors le bouton « mettre en veille » se transforme en « éteindre ».\nPour l’instant à part ses deux inconvénients tout fonctionne parfaitement, affaire à suivre…..\n","date":"2011-04-05T15:28:10+01:00","image":"https://archives.draconis.me/images/header/linux.jpg","permalink":"https://archives.draconis.me/p/premiers-pas-avec-gnome-shell/","title":"Premiers pas avec Gnome-Shell"},{"content":"Il y a pas très longtemps j’ai mit en place une architecture virtuelle avec vmware serveur 2 sous ubuntu server. Ce serveur hébergé deux machines virtuelles sous windows 2003 et l’autre sous windows XP pro.\nLe tout sauvegarder sur un autre ubuntu server dans un autre batiment. Je reviendrais dans un autre article sur cette architecture.\nPourquoi faire compliqué quand on peut faire simple? Je décide de monter un partage nfs entre les deux serveurs. Au bout de deux jours de recherches ce fichu montage ne voulait toujours pas se faire.\nEt là je me suis dit pourquoi ne pas essayer la v4 de nfs ? sur un malentendu ça peut passer. Voici comment j’ai procédé :\nInstallation de nfsv4 Pour le serveur\napt-get install nfs-kernel-server Pour le client\napt-get install nfs-common Création d’un dossier qui va permettre d’exporter le dossier partagé en l’occurrence /home/superu mkdir /export # mkdir /export/users On monte le dossier utilisateur dans notre dossier partagé\nmount --bind /home/superu /export/users Et pour automatiser tout ça j’ai modifié le /etc/fstab\n/home/superu /export/users none bind 0 0 Enfin j’ai put procéder à la configuration d’nfsv4. Dans /etc/default/nfs-kernel-server sur mon serveur j’ai mis NEED_SVCGSSD=no.\nCe réglage était mit par défaut mais vaut mieux vérifier au cas ou.\nEt dans /etc/default/nfs-common sur mon client j’ai mis NEED_IDMAPD=yes NEED_GSSD=no.\nPour finir j’ai configuré mes exportations nfs dans le fichier /etc/exports\n/export 192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async) /export/users 192.168.1.0/24(rw,nohide,insecure,no_subtree_check,async) Un petit redémarrage du serveur nfsv4\n/etc/init.d/nfs-kernel-server restart Montage du partage nfs sur le client mount -t nfs4 -o proto=tcp,port=2049 nfs-server:/users /home/superu/sauvegarde Pour automatiser le tout toujours dans le /etc/fstab\nnfs-server:/users /home/superu/sauvegarde nfs4 _netdev,auto 0 0 Le partage fonctionne correctement ! De plus en me documentant sur la version 4 de nfs\nj’ai appris qu’elle géré mieux la sécurité que la v3 du coup j’ai basculé tous\nmes partages nfs en V4.\n","date":"2011-03-30T15:28:10+01:00","image":"https://archives.draconis.me/images/header/adminsys.webp","permalink":"https://archives.draconis.me/p/partage-avec-nfs-v4/","title":"Partage avec nfs v4"}] |