Auteur/autrice : Ruben FARIA

  • Mise en place d’un serveur HTTPS

    Mise en place d’un serveur HTTPS

    Dans le dernier article, nous avions vu comment installer Nginx.

    Même si la configuration initiale était fonctionnelle, elle n’est pas des plus sécurisées. Néanmoins elle est essentielle pour l’obtention du certificat let’s encrypt et la mise en place du protocole https.

    Je vous propose ainsi dans cet article, de faire la mise en place d’un serveur HTTPS.

    Mise en place du certificat let’s encrypt

    Le certificat let’s encrypt, nous permet de sécuriser la connexion à notre site web. Cela se traduit par une URL en https et le petit cadenas sur votre navigateur.

    En cliquant sur le cadenas, on y apprend que le certificat permet un chiffrement de la connexion ce qui rend très difficile la visualisation de cette page pendant son transit.

    Ainsi même si un attaquant détournait la connexion, les informations reçues seraient chiffrées et inutilisables.

    Pour générer ce certificat, nous utiliserons certbot.

    Si vous avez suivi mon premier article : Installation de WordPress sous Docker, il vous suffira de le compléter.

    Nous allons rajouter ces quelques lignes dans notre fichier docker-compose.yml

      certbot:
        image: certbot/certbot:latest
        container_name: certbot
        depends_on:
          - nginx
        command: >-
          certonly --webroot --webroot-path=/var/www/certbot/ --email [votre_email] --agree-tos --no-eff-email -d mamourhome.duckdns.org
    
        volumes:
          - ${CERTBOT_WWW}:/var/www/certbot/:rw
          - ${CERTBOT_CONF}:/etc/letsencrypt/:rw
          - ${CERTBOT_LOGS}:/var/log/letsencrypt/
    

    Pensez à rajouter les volumes commun dans votre service nginx dans le fichier docker-compose.yml.

    Soit :

    - ${CERTBOT_WWW}:/var/www/certbot/:ro
    - ${CERTBOT_CONF}:/etc/nginx/ssl/:ro

    Puis déclarer les variables dans le fichier .env

    #certbot setting
    export CERTBOT_WWW=./certbot/www
    export CERTBOT_CONF=./certbot/letsencrypt
    export CERTBOT_LOGS=./logs/certbot
    

    Il faudra également indiquer le chemin d’accès au certificat dans le fichier default.conf.

    Ajouter dans le fichier default.conf :

    include nginxconfig.io/letsencrypt.conf

    Puis créer le fichier letsencrypt.conf dans le répertoire nginxconfig.io

    Puis ajouter à ce fichier :

    location ~ /.well-known/acme-challenge {
         allow all;
         root /var/www/certbot;
    }
    

    Modifier votre fichier docker-compose.yml, et rajouter toujours dans le service Nginx le volume qui gérera le repertoire nginxconfig.io.

    - ${NGINX_CONFIG_IO}:/etc/nginx/nginxconfig.io/:ro

    Puis mettre à jour le fichier .env avec les dernieres instructions :

    export NGINX_CONFIG_IO=./nginx/nginxconfig.io

    Une fois toutes ces mises à jour effectuées, vous pourrez lancer l’obtention du certificat en lançant cette commande.

    sudo docker compose run certbot

    Et si tout se passe bien, vous verrez dans votre terminal ce petit message :

    Do you want to expand and replace this existing certificate with the new
    certificate?
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    (E)xpand/(C)ancel: E
    Renewing an existing certificate for www.laclefdigitale.fr and 5 more domains
    
    Successfully received certificate.
    

    Maintenant que nous avons le certificat, nous allons indiquer à notre serveur web, qu’il faudra toujours emprunter le protocole https

    Nous allons donc modifier le fichier default.conf comme ceci :

    
    server {
        listen                  443 ssl;
        http2                   on;
        listen                  [::]:443 ssl;
        server_name             mamourhome.duckdns.org;
        set                     $base /var/www/html/mamour;
        root                    $base;
    
        index index.php;
        # SSL
        ssl_certificate         /etc/nginx/ssl/live/mamourhome.duckdns.org/fullchain.pem;
        ssl_certificate_key     /etc/nginx/ssl/live/mamourhome.duckdns.org/privkey.pem;
        ssl_trusted_certificate /etc/nginx/ssl/live/mamourhome.duckdns.org/chain.pem;
    
            location / {
               proxy_pass http://backnginx;
               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 $scheme;
               proxy_next_upstream error timeout http_500;
            }
    
    }
    
    server{
            listen 80;
            listen [::]:80;
    
            server_name mamourhome.duckdns.org;
    
            include nginxconfig.io/letsencrypt.conf;
    
       location / {
            return 301 https://mamourhome.duckdns.org$request_uri;
        }
    }

    Et maintenant en tapant : https://mamourhome.duckdns.org, nous avons bien notre connexion chiffrée et notre petit cadenas.

    Conclusion

    Ainsi grâce aux certificats TLS de let’s encrypt et à Certbot, nous avons pu faire la mise en place d’un serveur HTTPS. C’est le premier pas pour sécuriser nos applications sur internet.

    Dans le prochain article, nous modifierons la structure de notre Nginx pour y rajouter la possibilité d’héberger plusieurs site web.

  • Installation de Nginx sous Docker

    Installation de Nginx sous Docker

    Nous avions vu lors d’un précédent article, comment installer WordPress sous Docker. C’est toujours sympa d’avoir un site web à la maison. Mais çà serait tout de même bien plus génial si nous pouvions l’ouvrir au reste du monde.

    Nous allons donc voir comment cela est possible grâce à l’installation de Nginx sous Docker.

    Mise en place d’un nom de domaine gratuitement

    Sans trop développer le sujet, le web tel que nous le connaissons est accessible grâce à des adresses ip. En faisant un ping vers Google ou un autre site, le serveur nous répondra avec son adresse IP.

    Naturellement, pour des humains retenir une suite de nombre pour accéder à nos site préférés est un peu compliqué.

    C’est à ce moment où le nom de domaine intervient. Il va translater les adresses IP en une translation plus simple et compréhensible pour nous tous.

    Pour cet article nous utiliserons le service de Duckdns qui nous permet de bénéficier d’un nom de domaine gratuitement de la forme : XXXXXXX.duckdns.org

    Nous pouvons donc commencer par créer un compte sur https://www.duckdns.org/

    Une fois celui-ci créé, il nous suffira de choisir un sub domain et d’y attacher les adresses IP de notre serveur.

    Dans mon cas, j’ai choisi mamourhome qui pointe sur L’IP de mon serveur.

    Installation de Nginx sous Docker

    Bien, maintenant que nous avons un nom de domaine, nous allons pouvoir installer Nginx sous docker.

    On se crée un répertoire de travail. Et on y crée notre fichier docker compose.

    service:
      
      nginx:
      image: nginx
        container_name: nginx
        env_file:
          - .env
        restart: unless-stopped
        networks:
    - nt_nginx
    
    depends on:
    - wordpress
    
    ports:
    - 80:80
    - 443:443
    
    volumes:
    - ${WORDPRESS_LOCAL_HOME}:/var/www/html/:ro
    - ${NGINX_CONF_DEFAULT}:/etc/nginx/conf.d/default.conf 
    - ${NGINX_LOGS}:/var/log/nginx

    Vous pouvez rajouter à la suite le contenu du docker compose sur l’article traitant de l’installation de WordPress docker. N’oubliez néanmoins de rajouter le bon nom de réseau entre Nginx et WordPress.

    Nous allons ensuite créer le fichier .env

    ${WORDPRESS_LOCAL_HOME}: ./wordpress
    ${NGINX_CONF_DEFAULT}: ./nginx/conf.d/default.conf
    ${NGINX_LOGS}: ./logs

    La configuration de notre serveur Web est actuellement en version minimum.

    Une fois que nous aurons récupérer les certificats let’s encrypt, nous rajouterons les modules manquants pour Nginx (la sécurité, le CSP, un peu d’optimisation, etc).

    Création du fichier de configuration default.conf

    Pour que notre Nginx puisse fonctionner correctement avec notre nom de domaine nous allons créer un fichier default.conf dans le répertoire ./nginx/conf.d/

    Ce fichier indiquera ainsi l’emplacement du répertoire de travail du nom de domaine demandé.

    Notre fichier default.conf ressemblera donc à ceci :

    server{
            listen 80;
            listen [::]:80;
    
            server_name mamourhome.duckdns.org;
    
            set     $base /var/www/html/mamour;
            root    $base;
            index index.php;
    
    
    
            location / {
    
               proxy_pass http://backnginx;
               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 $scheme;
               proxy_next_upstream error timeout http_500;
            }
    
    
    }
    

    Une fois le fichier default.conf créé, vous devrez redémarrer votre service Nginx pour qu’il soit pris en compte.

    sudo docker compose restart nginx

    Puis en tapant l’URL : http://mamourhome.duckdns.org, vous devriez arriver sur votre instance WordPress 🙂

    Conclusion

    Nous avons vu comment faire l’installation de Nginx sous docker. Celle-ci nous permet mettre en place un serveur pour appeler nos applications, tout en les rendant public grâce à un nom de domaine.

    Le prochain article traitera de la mise en place des cetificats let’s encrypt grâce à Certbot, puis nous commencerons à optimiser et à sécuriser nos applications web.

  • Régler définitivement les problèmes de lenteurs sous Windows

    Régler définitivement les problèmes de lenteurs sous Windows

    Comment régler définitivement les problèmes de lenteurs sous Windows ?

    Avec le temps et leur utilisation, les ordinateurs ont tendance à devenir plus lent. Et au bout de quelques années, on commencera à dire, « il est obsolète », « c’est un vieux modèle ».

    Il faut dire que la technologie avance vite. Mais ne pouvons nous rien faire pour prolonger la vie de notre bon vieil ordinateur ?

    Maintenance, la solution aux lenteurs

    Pour garder un ordinateur réactif et performant, une petite maintenance mensuelle peut vous aider à régler définitivement les problèmes de lenteurs sous Windows. Vous trouverez ci-dessous quelques points à vérifier pour effectuer une maintenance efficace.

    Faire les mises à jour Windows

    Effectuer les mises à jour Windows sont obligatoires pour maintenir un système sécurisé et performant. Elles protégeront votre ordinateur, tout en optimisant ses performances.

    panneau de mise à jour Windows qui aide à maintenir un ordinateur performant et sécurisé
    Panneau de mise à jour Windows qui aide à maintenir un ordinateur performant et sécurisé

    Nettoyer le disque système

    Nettoyer le disque système, vous permettra de supprimer les fichiers temporaires systèmes, d’installation de mises à jour, les fichiers logs ce qui permettra de libérer de la place sur le disque et conserver les performances systèmes.

    Fenêtre de nettoyage disque Windows

    Désinstaller les logiciels au démarrage non utilisés

    Chaque logiciels installés et démarrant automatiquement ralentiront le chargement de Windows. Veillez à ne garder que les logiciels nécessaires au démarrage.

    Empêcher l’ouverture de certains programmes peut vous aider à maintenir un pc performant

    Vérifier les logiciels malveillant

    Des logiciels malveillant peuvent utiliser les ressources de votre ordinateur et les détourner à votre insu.

    Pensez à faire un audit de temps en temps grâce à un anti malware gratuit comme par exemple Spybot – Search & Destroy ou Malwarebytes.

    Analyse spybot-search and destroy

    Améliorer les composants de l’ordinateur

    Le composant essentiel dans une utilisation standard d’un ordinateur est le disque dur. Un HDD 5400tm a une vitesse de lecture et écriture de 50 MBps alors qu’un SSD aura une vitesse de 600 MBps. Autant dire qu’on passera d’un temps d’allumage de 5mn depuis un HDD, à 30s sur un SSD.

    Pour vérifier, il suffira d’ouvrir le gestionnaire de tâches et de vérifier dans l’onglet performance.

    L’onglet performance du gestionnaire de tâche permet de vérifier le bon fonctionnement d’un SDD

    La quantité de RAM a également son importance. Elle facilite l’ouverture et le bon fonctionnement du système d’exploitation, et de vos applications. Pour une utilisation standard, un minimum de 8Go RAM sera nécessaire. Pour un confort optimal il est préconisé 16Go.

    Conclusion

    Nous avons vu qu’avec une petite maintenance occasionnel et qu’avec une bonne configuration matérielle, nous pouvions régler définitivement les problèmes de lenteurs sous Windows.

    La Clef Digitale, votre expert informatique à Franconville et dans le Val d’Oise, est spécialisée dans les maintenances et l’optimisation matérielle pour garder un ordinateur sécurisé et performant.

    N’hésitez pas à me contacter et bénéficiez de la remise d’avance immédiate du crédit d’impôt de 50% sur chaque prestation à domicile.

  • Installation de Hacs Ewelink et Zwave-js-ui

    Installation de Hacs Ewelink et Zwave-js-ui

    Dans cet article nous verrons comment effectuer l’installation de Hacs, Ewelink et Zwave-js-ui pour Home-Assistant.

    Hacs rajoutera la boutique communautaire permettant d’installer des intégrations développées par la communauté.

    Ewelink est une application parfois demandée pour contrôler certains modules Zigbee.

    Et Zwave-js-ui vous permettra de coupler votre dongle Zwave à Home-Assistant.

    HACS

    De l’acronyme, Home Assistant Community Store, est la boutique d’intégration de la communauté de HA.

    Celle-ci permet de télécharger des nouveaux éléments personnalisés et de les gérer de manière simplifier. C’est un peu comme le Playstore ou l’Apple Store.

    Vous y trouverez de nombreuses intégrations très utiles qui vous simplifierons l’automatisation de vos périphériques. Nous pouvons noter Versatile Thermostat, qui vous permettra de configurer vos radiateurs avec précision et aisance.

    Si vous avez suivi mes articles précédant, vous avez installé Home Assistant sous docker grâce à docker compose.

    Cette fois-ci nous ferons quelques commandes pour configurer Hacs.

    Entrer dans le container Home Assistant.

    sudo docker exec -it homeassistant bash

    Puis nous téléchargerons et exécuterons le plugin Hacs.

    wget -O https://get.hacs.xyz | bash

    Une fois ces commandes passées, vous pouvez redémarrer Home Assistant, puis vous y connecter, et allez dans le manu d’ajout des intégrations.

    Paramètre > Appareil et service > Ajouter une intégration.

    Vous devriez retrouver Hacs depuis la recherche.

    Cocher toutes les cases. Il faudra ensuite créer un compte sur GitHub.

    Puis cliquer sur le lien d’activation et coller le code indiqué.

    Il suffira pour finaliser d’autoriser Hacs.

    Vous pouvez désormais installer Versatile Thermostat et commencer à configurer vos radiateurs avec vos modules NodOn.

    Ewelink

    Ewelink smart home est une application qui permet de contrôler certains périphériques. Cela est très intéressant mais nos périphériques dépendent d’un cloud, et donc d’une connexion internet.

    Nativement, Home Assistant ne permet pas de rajouter son intégration. Nous allons donc créer un container Ewelink qui nous permettra de contrôler nos périphériques en local.

    Comme à notre habitude, nous allons créer un répertoire pour l’application.

    Et compte tenu, que nous voulons garder un serveur propre, nous allons créer un répertoire qui référencera toutes nos plugins Home Assistant.

    On se positionne donc dans notre répertoire HA, puis nous créerons un répertoire Add-on, puis dedans un répertoire ewelink.

    cd home-assistant
    mkdir add-on && cd add-on
    mkdir ewelink && cd ewelink

    Nous allons maintenant créer notre docker-compose.yml

    sudo nano docker-compose.yml

    On y indiquer le nom du service, l’image à utiliser, le nom du container, et le mode réseau host.

    services:
      ewelink_smart_home:
        image: ewelink_smart_home
        container_name: ewelink
        restart: unless-stopped
        network_mode: host

    Nous allons par la suite indiquer un fichier de variable d’environnement.

    Ce qui nous permettra d’y stocker les variables demandées par l’environnement de l’application, l’url de HA, le token pour la communication entre eux deux, et le répertoire de données.

        env_file:
          - .env
        environment:
          - HA_URL=${HA_URL}
          - SUPERVISOR_TOKEN=${TOKEN}
        volumes:
          - ${DATA}:/data

    Une fois ceci fait, nous fermons le docker-compose et nous créons le fichier .env.

    sudo nano .env

    Puis nous y déclarons nos variables.

    TOKEN=votre_token_généré_depuis HA
    HA_URL=http://IP_de_votre_instance_HA:port
    DATA=./data

    Pour générer le token, il faudra ouvrir Home Assistant, cliquer sur votre nom en bas dans le menu de gauche.

    Puis en haut à droite sur sécurité. En bas de cette nouvelle page, vous pourrez y générer un token de longue durée. Il faudra copier ce token dans la variable TOKEN de notre fichier .env.

    Pour la variable HA_URL, il ne faudra pas oublier de préciser le port de connexion. Par exemple HA_URL=http://127.0.0.1:8123

    Une fois tout ceci configuré vous pouvez lancer votre container avec la commande :

    sudo docker compose up -d

    Vous pourrez vous connecter sur l’URL de Ewelink sur le port 3000 : http://IP_du_serveur:3000

    Zwave

    Si vous êtes l’heureux possesseur d’une clef Zwave comme la Combee II, vous serez forcement intéresser pour installer Zwave-js-ui sur docker.

    Nous l’installerons par docker compose. Vous trouverez le GitHub à cet adresse : https://github.com/zwave-js/zwave-js-ui/blob/master/docker/docker-compose.yml

    Mais rassurerez-vous, nous allons expliquer comment le mettre en place.

    Pour commencer, nous allons nous déplacer dans le répertoire add-on de Home assistant que nous avons créé précédemment. Puis nous allons créer un répertoire Zwave.

    cd home-assistant/add-on
    mkdir zwave && cd zwave

    Puis on crée notre fichier docker compose

    sudo nano docker-compose.yml

    Dans ce fichier, on y indiquera le service, l’image, l’environnement et le réseau.

    services:
        zwave-js-ui:
            container_name: zwave-js-ui
            image: zwavejs/zwave-js-ui:latest
            restart: always
            tty: true
            stop_signal: SIGINT
            environment:
                - SESSION_SECRET=mysupersecretkey
                - ZWAVEJS_EXTERNAL_CONFIG=/usr/src/app/store/.config-db
                # Uncomment if you want log times and dates to match your timezone instead of UTC
                # Available at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
                - TZ=Europe/Paris
            networks:
                - zwave

    Pour la SESSION_SECRET, vous pouvez générer un code aléatoire de vous même ou en utilisant pwgen.

    Par la suite il faudra définir votre clef Zwave.

    Pour cela, dans votre terminal, il faudra entrer cette commande :

    ls /dev/serial/by-id/

    Ce qui donne dans mon cas :

    On construira ensuite les volumes et nous ouvrirons les ports du container.

            devices:
                # Do not use /dev/ttyUSBX serial devices, as those mappings can change over time.
                # Instead, use the /dev/serial/by-id/X serial device for your Z-Wave stick.
                - '/dev/serial/by-id/usb-0658_0200-if00:/dev/zwave'
            volumes:
                - zwave-config:/usr/src/app/store
            # Or by using local folder
            # - ./store:/usr/src/app/store
            ports:
                - '8091:8091' # port for web interface
                - '3001:3001' # port for Z-Wave JS websocket server
    networks:
        zwave:
    volumes:
        zwave-config:
            name: zwave-config

    N’hésitez pas à changer les ports, s’ils entrent en conflit avec d’autres appli.

    Il ne reste plus qu’à lancer notre container, puis d’ajouter l’intégration Z-wave dans Home Assistant.

    Il faudra indiquer pour le serveur websocket : ws://localhost:3001

    Conclusion

    Nous avons vu comment effectuer l’installation de Hacs, Ewelink et Zwave-js-ui pour Home Assistant sur Docker.

    Nous avons maintenant tous les outils nécessaires pour commencer la configuration de notre maison intelligente.

    Dans un prochain article, je vous montrerai comment mettre en place un thermostat avec le module NodON chauffage.

    Il commence à faire froid, et çà sera très utile pour améliorer notre confort sans pour autant nous ruiner.

  • Installation de WordPress sous Docker

    Installation de WordPress sous Docker

    Cet article concernant l’installation de WordPress sous docker est le premier d’une longue série. L’objectif sera de concevoir un site avec toutes les fonctionnalités de performance et sécurité.

    C’est quoi WordPress ?

    WordPress est un CMS (content manager system), soit un logiciel en ligne grâce auquel il est possible de créer, de gérer et de modifier facilement un site web sans pour autant connaitre tous les langages de programmation associés.

    Il s’agit d’un logiciel gratuit, libre et open source, distribué par WordPress.org.

    Il est écrit en PHP et permet de facilement mettre en place un site vitrine, blog, portfolio …

    Les pré-requis

    WordPress a besoin d’une base de donnée pour fonctionner.

    Nous utiliserons Mariadb pour notre projet, qui est également un logiciel gratuit, libre et open source.

    MariaDB Server est l’une des bases de données relationnelles open source les plus populaires.

    Il repose sur les valeurs de performance, de stabilité et d’ouverture.;

    Création du réseau MacVlan

    Avant toute chose nous allons créer un réseau MacVlan sous docker.

    Ce réseau permettra d’identifier les containers en leur donnant une mac adresse, ce qui nous permettra de les faire entrer dans une plage du type 192.168.x.x.

    sudo docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.254 --ip-range=192.168.1.0/24 -o parent=eth0 mcvlan_nw

    Création du docker compose

    Comme à notre habitude nous allons créer notre répertoire de travail et nous y déplacer dedans.

    mkdir wordpress && cd wordpress

    Puis nous allons créer notre fichier docker-compose.

    sudo nano docker-compose.yml

    Nous commencerons par indiquer nos services et les images à utiliser :

    services:
      wordpress:
          build:
          image: wordpress
        container_name: wordpress
        hostname: wordpress

    Pour plus de sécurité, nous allons utiliser un fichier de variable d’environnement qui stockera toutes les informations des chemins de répertoire, nom d’utilisateur, mot de passe, nom de serveur …

        env_file:
          - .env
        restart: unless-stopped

    Nous déclarons notre container WordPress dans deux réseaux, le premier dans le réseau mcvlan précédemment créé et nous lui définissons une adresse IP. Puis nous indiquons à docker d’utiliser le réseau bridge pour communiquer avec la base de donnée.

        networks:
          mcvlan_nw:
            ipv4_address: "192.168.1.1"
          net_wordpress:

    WordPress a besoin de Mariadb pour fonctionner. Nous allons l’indiquer :

          depends_on:
            - bdd   #bdd est le nom du container qui hébergera Mariadb

    Puis nous allons indiquer tous les volumes et les environnements nécessaires en variable.

        volumes:
          - ${WORDPRESS_LOCAL_HOME}:/var/www/html
          - ${WORDPRESS_UPLOADS_CONFIG}:/usr/local/etc/php/conf.d/uploads.ini
          - ${WORDPRESS_MUPLUGINS}:/var/www/html/test/wp-content/mu-plugins
    
        environment:
          - WORDPRESS_DB_HOST=${WORDPRESS_DB_HOST}
          - WORDPRESS_DB_NAME=${MYSQL_DATABASE}
          - WORDPRESS_DB_USER=${MYSQL_USER}
          - WORDPRESS_DB_PASSWORD=${MYSQL_PASSWORD}
          - WORDPRESS_TABLE_PREFIX=${DB_PREFIX}

    Nous procéderons de la même manière pour créer notre container MariaDB.

      bdd:
        # default port 3306
        image: 'mariadb'
        hostname: bdd
        container_name: bdd
        env_file:
          - .env
        restart: unless-stopped
        networks:
          - nt_wordpress
        environment:
          - MYSQL_DATABASE=${MYSQL_DATABASE}
          - MYSQL_USER=${MYSQL_USER}
          - MYSQL_PASSWORD=${MYSQL_PASSWORD}
          - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
        volumes:
          - ${MYSQL_LOCAL_HOME}:/var/lib/mysql

    Puis nous finirons par déclarer les réseaux. nt_wordpress sera créé en mode bridge, et nous indiquons que le réseau mcvlan_nw est déjà créé et que le container doit s’y connecter.

    networks:
      nt_wordpress:
        name: nt_wordpress
        driver: bridge
    
      mcvlan_nw:
        external: true

    Ce qui donne à la fin :

    services:
    
      wordpress:
        image: 'wordpress'
        container_name: wordpress
        hostname: wordpress
        env_file:
          - .env
        restart: unless-stopped
    
        networks:
          mcvlan_nw:
            ipv4_address: "192.168.1.1"
          nt_wordpress:
    
        depends_on:
          - bdd
        volumes:
          - ${WORDPRESS_LOCAL_HOME}:/var/www/html
          - ${WORDPRESS_UPLOADS_CONFIG}:/usr/local/etc/php/conf.d/uploads.ini
          - ${WORDPRESS_MUPLUGINS}:/var/www/html/test/wp-content/mu-plugins
    
        environment:
          - WORDPRESS_DB_HOST=${WORDPRESS_DB_HOST}
          - WORDPRESS_DB_NAME=${MYSQL_DATABASE}
          - WORDPRESS_DB_USER=${MYSQL_USER}
          - WORDPRESS_DB_PASSWORD=${MYSQL_PASSWORD}
          - WORDPRESS_TABLE_PREFIX=${DB_PREFIX}
    
      bdd:
        # default port 3306
        image: 'mariadb'
        hostname: bdd
        container_name: bdd
        env_file:
          - .env
        restart: unless-stopped
        networks:
          - nt_wordpress
        environment:
          - MYSQL_DATABASE=${MYSQL_DATABASE}
          - MYSQL_USER=${MYSQL_USER}
          - MYSQL_PASSWORD=${MYSQL_PASSWORD}
          - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
        volumes:
          - ${MYSQL_LOCAL_HOME}:/var/lib/mysql
    
    networks:
      nt_wordpress:
        name: nt_wordpress
        driver: bridge
    
      mcvlan_nw:
        external: true

    Il nous manque maintenant le fichier des variables. On va créer le fichier .env

    sudo nano .env

    Puis nous indiquons les variables et les valeurs.

    #variable wordpress
    
    export WORDPRESS_LOCAL_HOME=./wordpress
    export WORDPRESS_UPLOADS_CONFIG=./config/uploads.ini
    export WORDPRESS_MUPLUGINS=./mu-plugins
    
    #variable mariadb
    
    export WORDPRESS_DB_HOST=bdd   
    export MYSQL_LOCAL_HOME=./mariadb
    export MYSQL_DATABASE=wordpress 
    export MYSQL_USER=NOM_USER  
    export MYSQL_PASSWORD=mot_de_passe_fort
    export MYSQL_ROOT_PASSWORD=mot_de_passe_encore_plus_fort
    
    export DB_PREFIX=mywp_

    Une fois toutes ces étapes réalisées, il suffira de lancer notre programme.

    sudo docker compose up -d

    Finalement il n’y aura plus qu’à renseigner l’IP du réseau macvlan pour s’y connecter.

    Dans notre exemple, il s’agira de http://192.168.1.1

    Conclusion

    Nous avons vu comment effectuer l’installation de WordPress sous docker.

    Encore une fois, Docker nous permet d’installer facilement un ensemble d’application très facilement.

    Lors d’un prochain article nous verrons comment rajouter Nginx, créer un nom de domaine gratuitement, et la mise en place du certificat https.

  • Installation de Home Assistant sous Docker

    Installation de Home Assistant sous Docker

    Cet article traitera de l’installation de Home assistant sous docker.

    J’expliquerai pourquoi j’utilise Home Assistant comme box domotique puis nous aborderons son installation.

    Home Assistant, awaken your home

    Mais au juste, c’est quoi une box domotique ?

    Du latin domus (« maison »), et du suffixe -tique (ou -ique devant t), « qui est propre à », dans le domaine des sciences (Wikipedia)

    La domotique est l’intégration des techniques modernes d’aménagement dans la maison, de l’automatisation et des technologies électro-domestiques.

    Le but de la domotique est d’automatiser les tâches routinières pour un meilleur confort au quotidien. En premier lieu, elle permet d’assurer votre sécurité et votre confort mais également de véritables économies d’énergie, tout en baissant votre emprunte carbone, grâce à des algorithmes de plus en plus poussés.

    Un fonctionnement en local

    Home assistant est un logiciel open source qui donne la priorité au réseau local et à la vie privée.

    Cela veut dire que Home assistant fonctionne en local et ne dépend pas d’un cloud.

    Les effets se sont ressentir car les commandes sont instantanées. Elles ne souffrent du temps de latence de connexion à l’internet.

    Un fonctionnement Online

    Et oui, car de nos jours, si on ne peut pas agir à distance, quel est l’intérêt ?

    Vous pouvez donc accéder à votre box domotique de plusieurs façons.

    Certaines demanderont d’ouvrir des ports de votre routeur, d’intégrer un certificat SSL, de vous connecter en local via un VPN. Vous avez aussi la possibilité de souscrire à un abonnement chez Nabu-casa pour moins de 6€ par mois, pour bénéficier du cloud de Home Assistant.

    Une communauté massive et présente

    Si vous tapez sur Google Home assistant, vous verrez de nombreux sites parler d’home assistant. Il y a de nombreux tutoriels sur le sujet, des forums spécialisés. On voit que nous sommes dans l’open source et l’entraide est au centre de cette politique.

    De plus, grâce à HACS vous pourrez bénéficier des plugins développés par la communauté, simplifiant l’automatisation de nos appareils.

    3 méthodes d’installation différentes

    Vous pouvez installer Home Assistant de trois façon différente.

    En tant que système d’exploitation. Vous dédiez alors une machine pour cette tâche. Le grand avantage est que Home assistant se gérera tout seul. Il fera sa propre maintenance, et gérera la sécurité sur serveur.

    Cette méthode est à privilégier si vous êtes peu habitués à utiliser un système par ligne de commande.

    Installation de Home Assistant sous docker

    Si vous avez suivi l’article Installation de Raspberry PI OS et Docker, vous avez alors docker et docker compose d’installé.

    Nous commencerons par créer un répertoire Home-assistant et nous y déplacerons dedans :

    mkdir home-assistant && cd home-assistant

    Puis nous créerons notre fichier docker-compose

    sudo nano docker-compose.yml

    Nous allons commencer notre fichier en déclarant le nom du service, le nom du container, puis l’image à utiliser

    services:
        homeassistant:
             container_name: homeassistant
             image: "ghcr.io/home-assistant/home-assistant:stable"

    Si vous avez une clé zigbee il faudra l’indiquer dans le docker compose.

    Vous pouvez faire cette commande pour identifier le port usb utilisé :

    ls -l /dev/serial/by-id

    Puis nous indiquerons les volumes qu’utilisera Home Assistant

        devices:
          - /dev/ttyUSB0:/dev/ttyUSB0
        volumes:
          - ./config:/config
          - /etc/localtime:/etc/localtime:ro
          - /run/dbus:/run/dbus:ro

    Pour finir nous déclarerons le mode privilégié, puis l’utilisation du réseau hôte.

        restart: unless-stopped
        privileged: true
        network_mode: host 

    Nous pouvons fermer notre docker-compose et lancer la création du container.

    sudo docker compose up -d

    Vous pouvez vous connecter à l’interface de Home-Assistant avec :

    http://IP-hôte:8123

    Une fois l’installation terminée, vous serez invité à créer votre compte.

    Conclusion

    Nous avons appris à faire l’installation de home assistant sous docker.

    Nous avons vu les points positifs d’utiliser ce logiciel comme box domotique.

    Nous avons écrit le docker compose de celui-ci et nous nous sommes connectés à l’interface de Home Assistant.

    Lors d’un prochain billet, je vous montrerai comment installer HACS, ewelink smart home, et z-wave-js-ui.

  • Installation de Portainer sur Docker

    Installation de Portainer sur Docker

    Cet article traitera de l’installation de Portainer sur Docker.

    Je décomposerais cet article en deux grandes parties.

    La première traitera de pourquoi j’utilise Portainer, puis la deuxième traitera de son installation grâce à docker-compose.

    Portainer

    Pourquoi Portainer ?

    Portainer vous permet de visualiser graphiquement l’ensemble des données tournant sous Docker.

    interface de Portainer
    interface de Portainer

    Vous pouvez en quelques cliques visualiser les réseaux créés, les images utilisées, l’état de tous vos container.

    Il simplifie grandement la gestion de vos applications, vous permettant par exemple de rajouter un container sur un réseau mac-vlan, ou d’examiner les logs pour un dé-bug.

    visualisation simple des logs grâce à Portainer
    Portainer facilite la visualisation des logs

    Je trouve que ce logiciel est un must have, il m’a permis de souvent de-buguer mes container sans avoir à écrire une seule ligne de commande.

    Installation de Portainer sur Docker

    Pour effectuer l’installation de Portainer sur Docker, nous utiliserons le plugin docker compose.

    Si vous avez suivi l’installation de mon article précédent, docker compose devrait déjà être installé.

    Vous pouvez le vérifier en effectuant cette commande

    sudo docker compose version

    Vous devriez avoir ce retour :

    Docker Compose version v2.29.7

    On commence par créer notre répertoire de travail et on s’y déplace à l’intérieur.

    mkdir portainer && cd portainer

    On crée le fichier docker-compose.yml

    sudo nano docker-compose.yml

    Puis on déclare notre application

    services:   #point d'entrée de notre application
      portainer:  #nom du service
        image: portainer/portainer-ce:latest  #nom de l'image à récupérer
        container_name: portainer #nom qui sera affecté au container
        ports:  #ports utilisés du type "hôte" : "vers container"
          - 9000:9000
        volumes: #on définit les volumes qui seront utilisés par l'application, du type nom du volume local : chemin du répertoire du container
          - portainer_data:/data
          - /var/run/docker.sock:/var/run/docker.sock
        restart: unless-stopped
    
    volumes:  #on déclare les volumes
      portainer_data:

    Vous noterez que les deux volumes sont déclarés différemment. Le premier est du type volume virtuel « volatile », alors que le deuxième est une copie du fichier docker.sock de l’hôte dans le container.

    Je reviendrais sur des explications plus approfondies lors de prochains billets.

    Une fois que vous avez finit d’écrire votre fichier yml, vous pouvez le sauvegarder en effectuant CTRL+O, puis fermer le fichier avec CTRL+X.

    Nous pouvons maintenant lancer la création de notre container avec la commande suivante :

    sudo docker compose up -d

    Vous verrez alors docker télécharger l’image, et créer le container.

    Vous pouvez ensuite accéder à Portainer en entrant dans votre navigateur https://ip-hote:9000.

    Lors de la création du container, Portainer génère des certificats self-signed.

    Vous aurez donc un message d’avertissement il suffira de cliquer sur avancé, puis continuer la connexion.

    Conclusion

    Nous avons vu pourquoi et comment faire l’installation de Portainer sur Docker.

    Portainer nous permet très simplement d’administrer nos containers Docker que ce soit dans la visualisation des logs, l’ajout de réseau, ou modifier les status des containers.

  • Installation de Raspberry PI OS et Docker

    Installation de Raspberry PI OS et Docker

    Cet article traitera de l’installation de Raspberry PI OS et docker sur un Raspberry.

    Raspberry PI OS

    Raspberry PI OS est un système d’exploitation conçu pour l’architecture ARM64 du Raspberry. Ce système d’exploitation est un logiciel libre et gratuit basé sur Debian. Autant dire que çà envoie du lourd !

    Prérequis pour l’installation de Raspberry PI OS

    Préparation de la carte SD

    On branche son lecteur SD dans le port USB de son ordinateur et on lance Raspberry Pi Imager.

    interface de Raspberry Pi Imager

    On sélectionne son modèle de Raspberry et on choisit son système d’exploitation.

    Nous allons sélectionner Raspberry PI OS (other).

    fenetre de selection de Raspberry Pi OS Other

    Dans ce menu, on y trouvera le système que nous allons utiliser : Raspberry PI OS lite (64-bit).

    Il s’agit de la version du système d’exploitation diminuée de l’environnement Destock. Compte tenu que nous allons y travailler depuis SSH, nous n’avons pas besoin d’un environnement bureau.

    Si vous avez relié votre Raspberry sur le port HDMI, vous pouvez sélectionner Raspberry PI OS Full (64-bit). Cela vous permettra d’avoir l’interface graphique de bureau.

    Une fois l’OS sélectionné, on choisit le média de stockage pour la création de l’image, et on clique sur suivant.

    A la fenêtre suivante, on cliquera sur Modifier les réglages.

    fenetre de personnalisation de l'OS

    Dans cette fenêtre, on pourra y définir le nom de notre serveur, le nom d’utilisateur et le mot de passe.

    onglet général, pour définir le nom d'hôte, le nom d 'utilisateur et le mot de passe du compte

    Dans l’onglet suivant « Services », on cochera activer SSH et utiliser un mot de passe pour l’authentification.

    Les réglages sont prêts, on peut donc lancer la création de l’image.

    Connexion en SSH

    Vous avez deux possibilités pour vous connecter en SSH.

    Soit vous attaquez par l’IP de votre hôte soit vous ouvrez la connexion par son nom DNS.

    Néanmoins pour des raisons de praticité nous allons déterminer l’adresse IP de notre serveur puis l’assigner en IP statique.

    De cette façon, l’IP ne changera pas au prochain redémarrage.

    Pour cela, il faudra se connecter sur le routeur de votre FAI, pour trouver notre machine.

    Dans mon cas, je détiens une FREE Delta, je me connecte donc sur la Free box, je vais dans DHCP, puis baux actifs.

    Je recherche mon Raspberry, et je fais un clique droit dessus puis ajouter un bail statique. Et voila, notre serveur possède dorénavant une IP statique.

    On peut désormais se connecter en SSH sur notre Raspberry.

    Sur MobaXterm, la connexion ressemble à çà.

    interface de MobaXterm

    Dans Remote host, on y indiquera soit l’IP de notre serveur soit son petit nom.

    Vous pouvez spécifier le nom d’utilisateur, on laisse le port 22 par défaut, sauf si vous l’avez changer.

    fenetre de MobaXterm en ssh sur le raspberry

    La première chose à faire est de mettre notre système à jour.

    sudo apt-get update && sudo apt-get upgrade

    Çà va travailler un petit moment selon la puissance de votre machine. On le laisse faire tranquillement.

    Installation de Docker

    Nous allons utiliser Docker, car ce logiciel est magique.

    Docker permet de containériser vos applications.

    Cela veut dire que chaque application se retrouve dans un environnement virtuel indépendant de votre hôte et des autres applications docker.

    Vous pouvez par exemple avoir plusieurs instances WordPress, plusieurs version de python, Home Assistant, Drupal, Joomla et tout çà sur le même serveur, dans des environnements totalement isolés.

    Docker rajoute une couche de sécurité, car chaque container discute seulement avec les applications que vous souhaitez.

    L’installation est très simple, il y a juste à lancer un script et tout se passe automatiquement.

    On créé un répertoire Docker :

    mkdir docker && cd docker

    Puis on lance le script de chez Docker :

    curl -fsSL https://get.docker.com | sh

    Ainsi grâce à PI Imager et au script de docker, l’installation de Raspberry PI OS et de docker se fait en quelques lignes de commandes.

    Dans le prochain article je vous montrerez comment installer Portainer et Home Assistant.

    Portainer nous simplifiera grandement la gestion de nos centenaires et Home Assistant, nous permettra de transformer notre Raspberry PI en une box domotique.

  • Adguard Home: proxy anti-pub et contrôle parental

    Adguard Home: proxy anti-pub et contrôle parental

    Cet article expliquera comment installer Adguard Home: proxy anti-pub et contrôle parental sur le wifi de la maison.

    Nous avons de plus en plus d’appareil connecté sur le net dans notre domicile (smartphone, tablette, ordinateur), et il est de plus de plus difficile de sécuriser tous ces appareils.

    Je vous propose ainsi de centraliser cette sécurité pour protéger vos enfants en toute sérénité, quelque soit l’appareil utilisé chez vous.

    J’ai choisi d’utiliser Adguard Home car il est vraiment puissant et facilite grandement sa configuration.

    Il accepte les listes Pi-hole, ce qui permet en plus d’automatiser une black liste sur plusieurs contenus (malware, site de jeux, porno, etc). Il permet également de bloquer la majorité des services de réseau sociaux, jeux en un seul clique.

    interface Adguard Home permettant de bloquer facilement les services
    interface Adguard Home permettant de bloquer facilement les services

    Cet article sera divisé en deux grande parties :

    • Installation du proxy Adguard Home
    • Mise en place d’un proxy transparent

    On s’installe confortablement à son bureau, on se connecte en SSH à son Raspberry, et c’est partie !

    Installation du proxy Adguard home

    Nous utiliserons la méthode du Snap store pour installer Adguard Home.

    Snap store facilite grandement son installation sur Linux et nous évitera par la même occasion de taper trop de lignes de commandes.

    Voici le lien du tutoriel d’installation depuis leur site.

    https://snapcraft.io/docs/installing-snap-on-raspbian

    Je vous résume les commandes à effectuer :

    mise à jour système :

    sudo apt update && sudo apt upgrade

    installation du store snap :

    sudo apt install snapd

    redémarrage de la machine pour prise en compte :

    sudo reboot

    installation du coeur du store :

    sudo snap install core

    Une fois snap store installé, on pourra installer Adguard home :

    sudo snap install adguard-home

    L’installation de Adguard Home sous docker fera l’effat d’un prochain article mais pour celles et ceux qui ne pourraient supporter un tel suspense, voici la page Github pour ceux ou celles qui souhaiteraient utiliser une installation alternative.

    https://github.com/AdguardTeam/AdGuardHome#getting-started

    Une fois Adguard Home installé vous pouvez vous connecter à l’interface web en utilisant cet adresse :

    http://127.0.0.1:3000/ (remplacer l’adresse par celle de votre Raspberry pour y accéder depuis un autre terminal.

    Le service Adguard Home s’activant automatiquement, il est inutile de faire d’autres manipulations.

    Si vous n’accédez pas à l’interface penser à ouvrir le port 3000.

    Et voila le tour est joué pour le coté contrôle parental. L’interface est assez intuitive.

    Vous pouvez configurer les clients avec leurs mac adresses, IP, nom DNS. De plus, chaque client peut avoir sa propre configuration et ses propres règles.

    Mise en place d’un proxy transparent

    Nous avons maintenant un contrôle parental actif, mais nos appareils se connectent à notre box et non sur notre Raspberry.

    L’intérêt de Adguard Home est qu’il utilise la résolution DNS pour autoriser un flux.

    Nous pouvons donc soit configuré tous nos appareils avec le DNS de notre Raspberry soit indiquer à notre box le DNS à utiliser.

    Pour cela il suffira de changer le DNS de votre FAI par celui de votre Raspberry.

    Ainsi, l’équipement se connectera à votre box, qui se connectera à votre Raspberry, pour vérifier les autorisations de flux.

    Pour aller plus loin

    Pensez à configurer votre Raspberry avec une adresse fixe. Vous pouvez soit la configurer directement sur le Raspberry soit depuis votre routeur fibre.

    Configurer votre terminaux sur Adguard Home avec leurs adresses mac

    Faites une règle générale par défaut sur Adguard Home. De cette manière, même si un nouvel équipement se connecte il sera automatiquement protéger par Adguard Home.

    Voila la puissance de Adguard Home: proxy anti-pub et contrôle parental.

  • Le Raspberry, le nano ordinateur qui se voulait grand

    Le Raspberry, le nano ordinateur qui se voulait grand

    Aujourd’hui je vais vous parler du Raspberry, le nano ordinateur qui se voulait grand.

    Le Raspberry est devenu un must have dans le domaine de l’hébergement de service à la maison.

    Qu’est ce qu’un Raspberry ?

    C’est un nano ordinateur avec un processeur ARM.
    Il Permet l’exécution de plusieurs Système d exploitation libre comme Debian, Ubuntu, RaspiOS.
    Elle embarque des pin GPIO ce qui permet la connexion de cartes d extension.
    Le nom vient du projet mais également au début de l informatique, les sociétés utilisaient des nom de fruits. Raspberry veut dire framboise. Il y a également Apple, Blackberry par exemple.
    PI provient du langage qu’utilise le micro ordinateur, car à l’origine il devait fonctionner que sur Python.

    Pourquoi utiliser un Raspberry ?

    Le Prix pour commencer, vous pouvez vous procurez un Raspberry pour moins de 100€.
    Un autre point est le silence de cet appareil. Il peut être utilisé sans ventilateur. Sauf depuis la génération 4 qui a été boosté au niveau du CPU. Les ventilateurs de base sont une bonne option, mais pour une durabilité optimum l’investissement d’un boitier passif peut être nécessaire. Et dans passif, il y a : pas de bruit du tout !
    Naturellement tout dépendra de l’usage qui en est fait.

    Les caractéristiques physique de l’appareil. Sa taille est celle d’une carte bancaire ce qui lui permet de s’intégrer à toutes configurations.

    Le Raspberry est en Full HD avec une résolution de 1980*1080 en 1080p. Autant dire que c’est un bon candidat pour faire un media center à la maison.

    Que peut-on faire avec ?

    Grâce à sa faible consommation électrique, il peut être allumé tout le temps.

    Cela lui permet d’exceller dans les hébergements de service à la maison.

    Par exemple, vous pouvez réaliser un serveur domotique, un média center, une home box, une console de jeux rétro, héberger un site web, un proxy anti pub, un contrôle parental.

    Bref, les possibilités sont énormes.

    En conclusion

    Le Raspberry, le nano ordinateur qui se voulait grand, est un must have à la maison. Ces possibilités sont sans limites.

    Il ravira tous vos projets.

    Dans un prochain article, je vous montrerais comment installer RaspiOS Lite, basé sur une Debian, puis je vous montrerai comment installer le plus beau des logiciels Docker 🙂

    N’hésitez pas à consulter mon article sur Adguard Home, le proxy anti pub et contrôle parental