Outils pour utilisateurs

Outils du site


auto-heber:hypriot

Les couches logicielles utilisées

Nous installerons successivement les logiciels libres suivants :

  • Matériel : Raspberry Pi 3 (B ou B+) et carte mémoire de 16 Mo (ou plus)
  • Hypriot : Système d'exploitation hôte (base Debian)
  • Docker Swarm : Orchestrateur (lien entre les containers)
  • Portainer : Administration des conteneurs (Docker containers) par interface web
  • Traefik : Serveur Proxy renversé, s'occupe aussi des certificats SSL Let's Encrypt

Exemples de plugins :

  • DokuWiki : moteur de wiki libre pour créer de la documentation (comme ce site)
  • NextCloud : stockage et partage de vos données, agenda et calendrier
  • WordPress : gestion de contenu de site web pour faire un blog
  • Piwigo : galerie de photo
  • Etc.

La ligne de commande rebutant généralement bien des gens, nous installerons rapidement Portainer, une interface web (donc graphique) de gestion conteneur Docker simple. Pour pouvoir exploiter Docker et cette interface au maximum de leur capacité et ajouter les piles logicielles (stack) en plus des simples conteneurs, nous auront besoin d'installer Dockerswarm. Pour nous éviter l'installation de Docker directement sur le Pi, nous utiliserons Hypriot comme système d'exploitation hôte.

Pour simplifier encore plus l'utilisation, un dépôt sera créé sur GitHub (actuellement xtremxpert/portainer-template) pour pouvoir être utilisé à la place des gabarits standards. Au fur et à mesure des demandes des membres de LinuQ, nous créerons les piles logicielles et les déploierons via le Docker Hub (hub.docker.com). En plus de ces images, ils nous faut répondre à la problématique d'aujourd'hui ; configurer la partie web. Nous créerons donc une pile qui permettra non seulement d'aiguiller le trafic vers les bons services, mais également d'auto-configurer vos nouveaux noms d'hôtes auprès de Cloudflare et de générer un certificat SSL valide via Let's Encrypt. Nous pourrons peut-être même y intégrer un client de mise à jour automatisé des changements d'adresses IP publiques (ddclient).

Préalables utiles

Un Raspberry Pi

Pour le matériel, nous utilisons un Raspberry Pi. Quand on acquiert le dernier né, le modèle 3 Model B+, il est tout nu mais il faut installer un système d’exploitation, pas de panique c'est facile. Si vous avez un modèle 3 B, c'est parfait (nous ne recommandons pas l'utilisation des modèles précédents, à moins de n'installer que quelques services, où le modèle 2 peut faire l'affaire).

Donc nous utilisons le modèle 3 B+ qui a un processeur ARM32v7 à 64 bits, mais nous n'utiliserons que les applications roulant sur du 32 bits, d'où le modèle 3 B qui peut aussi être utilisé.

Donc, le matériel utilisé :

  • Raspberry Pi (processeur ARM32v7) 3 Model B ou B+
  • Une bonne carte micro SD rapide de 16 Go (ou plus)
  • Câble d'alimentation
  • Clavier USB et souris USB
  • Moniteur HDMI
  • Un accès à internet

LinuQ prévois faire un achat de groupe pendant l'été ou en septembre 2018. Si vous êtes intéressés, écrivez à info@linuq.org

En plus d'utiliser votre Pi pour ce projet, vous pourrez y installer Raspbian. C'est une distribution GNU/Linux basée sur Debian optimisée pour le Raspberry, une version totalement libre qui donne accès à plus de 50 000 logiciels libres compatibles entre eux. S'ils ne sont pas déjà installés par la distribution (bien qu'il y en ait déjà pas mal) on ira les chercher sur le dépôt pré configuré par l'installation avec apt install (on le fera plusieurs fois). Il y a deux versions, l'une avec un bureau graphique et plusieurs logiciels préinstallés, l'autre toute nue sans bureau graphique. Pour commencer on va prendre la version complète, un fois à l'aise on pourra prendre une version légère pour monter un serveur.

Un truc super : les cartes SD ne sont pas chères, on peut donc en avoir plusieurs, on peut alors très facilement avoir plusieurs versions du système et des logiciels, il suffit de choisir la carte de l'installer et de brancher le Raspberry.

Autres préalables

1) Hypriot

Source de l'image : blog.hypriot.com

Téléchargement de l'image de Hypriot

  1. Pour débuter il faut récupérer l'image de Hypriot, notre système d'exploitation hôte sur lequel Docker est pré-configuré. La dernière version disponible est la 1.9.0. mais faut-il prendre la 1.8.0 pour la config actuelle à vérifier ?
  2. Sélectionner le lien hypriotos-rpi-v1.9.0.img.zip pour télécharger l'archive.
  3. Quand le téléchargement du fichier est terminé, aller à la section ci-dessous correspondant au système d'exploitation installé sur l'ordinateur utilisé pour le téléchargement.
  4. La suite de la procédure consistera à décompresser le fichier (archive) reçu et à le copier sur une carte mémoire SD.

Préparation de la carte mémoire

Sous Linux

Sous Linux, nous utiliserons la commande dd :

  • Insérer votre carte mémoire dans votre ordinateur
  • Identifiez-la à l'aide de cette commande :
$ lsblk

En fonction de votre type d’adaptateur, celle-ci se présentera sous la forme /dev/sdX ou /dev/mmcblkY (le plus fréquent que j'utiliserai dans les exemples).

Un fois identifiée, nous allons nous assurer que celle-ci soit démontée, puis nous lancerons le transfert de l'image sur la carte SD. Les deux commandes sont :

$ umount /dev/mmcblkY
$ sudo dd if=hypriot-rpi-201???.img of=/dev/mmcblkY bs=1M

Cette opération peux prendre quelques minutes. Une fois complétée, la carte est prête à être utilisée pour démarrer votre Raspberry Pi.

Remarque de François : il n'est pas nécessaire de formater la carte au préalable, la fonction dd recopie une image disque bit par bit en ignorant le contenu précédent.

Sous Windows

Pour débuter avec Windows, il faudra télécharger et installer 7 zip pour décompresser l'image d'Hypriot et Win32 Disk Imager pour mettre celle-ci sur la carte SD.

Une fois ces deux logiciels installés, suivre ces étapes :

  • Décompresser l'image avec 7-Zip,
  • Lancer Win32 Disk Imager, choisir le fichier fraîchement décompressé comme fichier image et votre carte SD comme périphérique,
  • Finaliser en lançant l'écriture.
  • N'oubliez pas d'éjecter le périphérique après avoir terminé sa création.
  • Note: cette opération peux prendre quelques minutes. Une fois complétée, la carte est prête à être utilisée pour démarrer votre Raspberry Pi.

Sous Os X

La procédure est similaire à celle sous Linux, sauf que pour identifier notre périphérique, nous utiliserons cette commande :

$ diskutil list

On remarquera maintenant que les disques sont tous présentés comme /dev/diskX. On va ensuite faire le même genre de commande qu'en Linux, sauf qu'il faut ajouter devant diskX pour la commande dd seulement (pour raw) et utiliser diskutils au lieux de umount

$ diskutil unmountdisk /dev/disk5
$ sudo dd if=hypriotos-rpi-201???.img of=/dev/rdisk5 bs=1m

Cette opération peux prendre quelques minutes. Une fois complétée, la carte est prête à être utilisée pour démarrer votre Raspberry Pi.

Démarrage de Hypriot sur le Pi

  1. Insérer la carte SD dans votre Pi
  2. Brancher le câble d'alimentation pour le démarrer
  3. Au premier lancement avec cette carte mémoire, attendre la fin du chargement (boot).
  4. Faire un retour de chariot (enter)
  5. “HypriotOS (Debian GNU/Linux 9) black-pearl tty1”
  6. Comme vous pouvez le voir, Hypriot utilise le système d'exploitation Debian.
  7. Hypriot attend votre authentification avec le compte et mot de passe par défaut.
  8. Authentifiez-vous avec le nom d'usager “pirate” et le mot de passe “hypriot”.
  9. Si vous ne pouvez pas utiliser de clavier avec votre Raspberry Pi, il vous faudra identifier l'adresse IP qui lui a été octroyée par votre réseau. Pour la connaître, faire la commande “ifconfig” sur votre Pi ou aller dans le panneau d'administration de votre routeur. Par exemple : 192.168.10.109
  10. Conectez-vous ensuite sur votre Pi en SSH à partir d'un ordinateur sur votre réseau avec la commande ci-dessous :
$ ssh pirate@192.168.10.109

Note: Si le compte en cours utilisé sur votre ordinateur a le même nom que celui que vous utilisez pour vous connecter au Pi, vous n'avez pas à le spécifier (voir image):

  1. Si le message “WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!” s'affiche, copier la ligne à l'écran (on suppose dans cette procédure que votre nom d'utilisateur est “jean”) : “ssh-keygen -f ”/home/jean/.ssh/known_hosts“ -R 192.168.10.109

(Connection ssh vers Hypriot)

2) Portainer et Traefik

Présentation de Portainer

Avant de poursuivre cette précédure, nous vous recommandons la lecture de la page d'aperçu détaillée du site officiel de Portainer :

Installation de Portainer (préalables)

On va faire un minimum de ligne de commande avant d'installer Portainer, on commence par se créer un compte utilisateur et lui donner des droits d'administration :

Ajouter un utilisateur ayant votre prénom (saisir un mot de passe, votre “Full Name” et ignorer les autres questions par des retours de chariot “enter”) :

$ sudo adduser jean

Ajouter l'utilisateur au groupe existant “docker” :

$ sudo usermod -aG docker jean

Lui donner les privilèges d'administrateur :

$ sudo usermod -aG sudo jean

Redémarrer votre PI (attendre que Hypriot soit redémarré):

$ sudo reboot

Faudrait aussi changer le mot de passe de pirate à moins qu'on puisse effacer l'utilisateur pirate, du moins si on ne le supprime pas

Initialisation de Dockerswarm et lancement de la pile Portainer (incluant client agent et Traefik)

Une fois le Pi redémarré, vous pouvez faire “enter” sur le Pi pour voir l'invite de commande “login:”. Vous pouvez faire les commandes ci-desous sur le Pi, mais je vous recommande d'utiliser une connection SSH et le les lancer de votre ordinateur pour plus de commodité.

Connectez-vous avec votre nouvel utilisateur administrateur (ex: jean) par SSH à partir d'un ordinateur connecté au même réseau que votre Pi:

ssh jean@192.168.10.109

Supprimer le compte générique pirate de mon système (raisons de sécurité) :

$ sudo userdel pirate

Mettre à jour les paquets du Host Debian Hypriot :

sudo apt update && sudo apt dist-upgrade

Pendant que les mises à jour s'effectuent sur le Pi, configurez votre routeur afin de rediriger les ports 443, 22 (et 80 si possible) vers l'adresse que votre routeur a attribuée à votre Pi: (cliquer sur l'image pour l'agrandir) Assurez-vous que les cases sont cochées, puis statut à “Enable”. Sauvegardez la configuration du routeur et quittez sa console d'administration.

:-x Access / VirtualServer / (image)

Nos sources sont hébergées dans le Famagit (GitHub) de LinuQ (voir section “Préalables” ci-dessus) : Vous pourrez vous inscrire à ce dépôt puisque vous vous êtes créé un compte GitHub précédemment. Ceci vos permettra de contribuer aux sources qui y sont hébergées (avec l'expérience, un jour).

J'exécute ce script qui initialise Dockerswarm, lance la pile de Portainer (incluant le client agent et le Traefik correspondant) avec ces commandes :

$ wget https://framagit.org/linuq/easy-pi-hosting/raw/master/install.sh

Message : “Enregistre : “install.sh”

$ wget https://framagit.org/linuq/easy-pi-hosting/raw/master/docker-compose.yml

Message : “«docker-compose.yml» enregistré” Avant d'aller plus loin, vous devez connaître la réponse à ces 6 questions que vous devrez saisir dans le script qui suivra: 1- “Host name for Portainer service: ” adresse pour rejoindre l'administration de Portainer (ex: rpi01.votredomaine.ca) 2- “Host name for Traefik service: ” adresse pour rejoindre l'interface de visualisation de Traefix (interface entre le web et tous les Dockers) (ex: traefik01.votredomaine.ca) 3- “Email for Lets'Encrypt recovery: ” votre adresse courriel (ex: joe_bloe@gmail.com) (si vous vous faites pirter votre certificat, vous utiliserez cette adresse pour l'annuler) 4- “Email for your Cloudflare account: ” adresse utilisée quand vous avez créé votre compte chez Cloudflare (ex: joe_bloe@gmail.com) 5- “Cloudflare Global API Key: ” (la clé copiée tantôt au bas de la page Création d'un compte chez Cloudflare) 6- “Domaine name for the Docker network: ” (votredomaine)

Permettre l'exécution du script :

chmod +x install.sh

Lancer le script :

$ ./install.sh

Message :

Automated installation of Portainer/Traefik stack

To be able to complete this installation, you must have before
installed Hypriot on your Raspberry-pi (3 or better recommanded).
You must also have registered an internet domaine name and 
open an account at Cloudflare and transfer your DNS server (FREE) there.

Did you get your internet domain name and your Cloudflare account info? ([y]es or [n]o): 

Répondre “y” (enter) Répondre aux 6 questions tel que décrit ci-dessus.

Réponse du script :

Did you get your internet domain name and your Cloudflare account info? ([y]es or [n]o): y
Host name for Portainer service: rpi01
Host name for Traefic service: traefik01
Email for Lets'Encrypt recovery: joe_bloe@gmail.com
Email for your Cloudflare account: joe_bloe@gmail.com
Cloudflare Global API Key: 59766315cdd5d7793e08e438e7d5b88945176
Domaine name for the Docker network: (votredomaine)
Swarm initialized: current node (z42z6cirp03hz579z4cn9xtbu) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-0pfq9zijgzbb4t56eqo1q18c5q6r5prlhhr9u02chv8vfed8v4-60i4kvi1wpxcdnqst1l7nj7ii 192.168.10.109:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

w00380tla27fc74kjqx7gtck4
Creating network maestro_agent_network
Creating service maestro_proxy
Creating service maestro_agent
Creating service maestro_portainer
Installation complete, take a coffee and then navigate to your server URL :
HTTPS://
Create you administrative user and then enjoy free hosting your life yourself

Any bugs can be reported here : https://framagit.org/linuq/easy-pi-hosting/issues
French documentation of the projet is here : https://linuq.org/projets/auto-hebergement_maison

Lister les services disponibles :

$ docker service ls
$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                        PORTS
slahlcbtosav        maestro_agent       global              1/1                 portainer/agent:latest       
7zpp5m2khdc9        maestro_portainer   replicated          1/1                 portainer/portainer:latest   *:30001->9000/tcp
dl76rp129dqv        maestro_proxy       replicated          1/1                 traefik:latest               *:80->80/tcp, *:443->443/tcp, *:30000->8080/tcp

Et voilà, Portainer est lancé! :-) Notez le port alloué à Portainer est 30001.

Maintenant, toujours d'un ordinateur dans le même réseau, ouvrez votre navigateur et donnez-lui votre adresse et le port 30001 :

http://192.168.10.109:30001

Portainer devrait vous assister dans la création de votre compte administrateur…

  • N'utiliez pas “admin” mais saisissez un autre nom (ex: jean)
  • Choisissez un mot de passe de 8 caractères ou plus.
  • Bouton “Create a user” pour vous connecter à l'interface de Portainer
  • Dans votre compte Cloudflare, saisir un A Name : rpi01 / 192.222.228.220 / Automatic
  • La première chose à faire est d'aller dans le menu “Setting”,
  • Désactiver la demande de donation activer (“Disable donation header”)
  • Activez “Use custom logo”, changez le logo par utilisez un des logos de LinuQ, soit le Tux patriote : allez sur la page logo, menu contextuel (bouton droit de la souris) → “Afficher l'image” et copiez l'adresse web (URL) de cette image (sinon copiez son adresse ci-dessous) :
https://linuq.org/_media/projets/linuq2.png
  • Activer l'option “Use custom templates”,

Remplacer l'URL du template par défaut :

https://raw.githubusercontent.com/portainer/templates/master/templates.json

par celle-ci pour un raspberry pi:

https://framagit.org/linuq/easy-pi-hosting-template/raw/master/templates.pi.json

ou par celle-ci pour un ordinateur de type pc ou mac:

https://framagit.org/linuq/easy-pi-hosting-template/raw/master/templates.pc.json

(à changer dans sa forme finale) dans le champs URL.

  • Par sécurité, activez “Disable bind mounts for non-administrators”
  • Par sécurité, activez “Disable privileged for non-administrators”
  • Sauvegarder (bouton “Save settings”)
  • Vous verrez le logo choisi s'afficher en haut à gauche de l'interface Portainer. :-)
  • Un “Endpoint” permettra au serveur de nous diriger vers la bonne machine lorsqu'on cliquera sur les hyperliens qu'il nous proposera. Donc, aller dans le menu “Endpoints”, cliquer sur le noeuds primaire et saisir l'adresse IP 192.168.10.109 dans le champs “Public IP”
  • Valider en cliquant sur le bouton “Update endpoint”

Tour de Portainer

  • Parcourez les menus de l'interface de Portainer afin de vous en familiariser.
  • Vous pouvez vous référer à la page d'aperçu détaillée du site officiel de Portainer Portainer.io (tel que mentionné précédemment).

(Exemple de tableau de bord de Portainer)

(Schéma de Dockerswarm, source: FedYeti.com)

Liste des gabarits Portainer

Sur le site Docker Hub, il y a plusieurs images disponibles.

  • Allez sur le site et saisi dans le champ de recherche les mots clés pour afficher les images correspondant au microprocesseur du Raspberry Pi (ARM) Modèle B ou B+, exécutant des applications 32 bits en version 7 :
arm32v7
  • Filtrez ensuite les “Automated” (prêtes) avec la liste déroulante.
  • Parcourez les images prêtes pour Portainer.
  • Si l'image d'un composant que vous souhaitez installer dans Portainer s'y trouve, c'est qu'elle a été configurée et est “prête” à télécharger et à installer. Sinon, nos devons la configurer avant de l'installer (et tant qu'à y être, publier sur ce site pour redistribuer à la communauté, la 4e liberté des Logiciels libres n'oublions pas).

3) Les images d'intérêt

Voici les images actuellement envisagés dans ce projet, les commentaires, leur état d'avancement et la page décrivant les démarches effectuées pour chacune d'elles :

NextCloud

NextCloud

  • Image : arm32v7 stable
  • Avec base de données Postgres
  • Par Benoît Vézina, avec la collaboration de Jean Leblond et Daniel Pascot
  • Version : 0.1
  • Statut : Fonctionnel :-)
  • Description : C'est l'image la plus utilisée qui permet de stocker du contenu accessible aux autres conteneurs. Nous recommandons de l'installer en premier.

Dokuwiki

Dokuwiki

  • Image : arm32v7 stable
  • Par Benoît Vézina, avec la collaboration de Jean Leblond et Daniel Pascot
  • Version : 0.1
  • Statut : Fonctionnel :-)
  • Description : Simple à installer, cette image vous permet d'héberger votre propre wiki et d'en donner l'accès à vos contacts. Plus nécessaire d'utiliser les services d'hébergement d'un Frama.wiki sur Framasite

Odoo

Odoo (avec Postgres) [ Benoît Vézina : plan ]

  • Image : arm32v7 stable
  • Par Benoît Vézina, avec la collaboration de Jean Leblond
  • Version : 0.1
  • Statut : Fonctionnel :-)
  • Description : Odoo est un framework pour construire un site web. Il dispose de plusieurs applications qu'on peut y intégrer selon ses besoins. Il est considéré comme un ERP - Enterprise Resource Planning ou PGI - Progiciel de gestion intégré.

PhP

PhP [Benoît Vézina : dev] Une image du gestionnaire de BD PhpMyAdmin sera aussi incluse dans cette section car c'est l'outil d'administration (des instances) de cette base de donnée utilisées par plusieurs images applicatives.

RaspAP

RaspAP [Benoît Vézina : dev]

MariaDB

MariaDB [Benoît Vézina : non débutée]

  • Description : MariaDB est une base de données de licence libre très populaire. C'est un “fork” de MySQL (depuis que ce dernier a été acquis par Sun). Cette base de données sera utilisée pour plusieurs de nos images, telles que :
    • Piwigo (galerie de photos)
    • WordPress (gestionnaire de contenu sous forme de site web)
    • Joomla (gestionnaire de contenu sous forme de site web) (peut aussi utiliser une base de données Postgres)
  • La configuration de MariaDB sera couverte dans une sous-section d'installation des images applicatives qui l'utiliseront.

MySQL

MySQL [Benoît Vézina : non débutée]

  • Description : MySQL est une base de données de licence libre très populaire. Suite à son acquisition par Sun, 3 “forks” se sont créés ; MariaDB, PerconaDB et MySQL. Il est trop tôt pour prévoir ce qu'il en adviendra, mais cette base de données sera utilisée pour les images suivantes :
    • Piwigo (galerie de photos)
    • WordPress (gestionnaire de contenu sous forme de site web)
    • Joomla (gestionnaire de contenu sous forme de site web) (peut aussi utiiser une base de données Postgres)

Piwigo

Piwigo [pas débutée]

  • Description : Gestion d'une galerie de photos.
  • Avec base de données MySQL.

Diaspora

Diaspora [pas débutée]

  • Description : (à venir) En attendant, consultez la page Exit Facebook section “Alternative à Facebook : Framasphère et Diaspora”.

Mastodon

Mastodon [pas débutée]

  • Description : (à venir) En attendant, consultez la page Exit Facebook section “Alternative à Twitter ou Tumblr : Mastodon”.

Pure Data

CouchPotato

CouchPotato

  • Image : arm32v7 stable & PC stable
  • Par Benoît Vézina, avec la collaboration de Jean Leblond
  • Version : 0.1
  • Statut : En essai
  • Type : Getter
  • Description : Couchpotato permet aux utilisateurs de News Group ou de Torrent de se faire une liste de souhait de films à télécharger. CouchPotato se chargera de rechercher directement sur les serveurs indexeurs de fichiers NZB ou Torrent et une fois les fichiers trouvés, les envoyer à votre plateforme de téléchargement préférée. Déploie une pile complexe de Getter de contenu.
  • Slogan : “Téléchargez des films automatiquement, facilement et de la meilleure qualité dès qu'ils sont disponibles.”
  • Site officiel : CouchPotato
  • Note : LinuQ rend à votre disposition cette page explicant comment installer cette pile logicielle sur votre serveur Ubuntu 18.04. Il est de la responsabilité de chaque utilisateur de vérifier la légalité de cette application avant d'en faire usage. LinuQ se dégage de toute responsabilité quand à votre utilisation.

4) Alternative à Hypriot

On peut aussi créer notre propre fichier image comme alternative à Hypriot :

version: '3.4'

services:
  agent:
    image: portainer/agent
    environment:
      # REQUIRED: Should be equal to the service name prefixed by "tasks." when
      # deployed inside an overlay network
      AGENT_CLUSTER_ADDR: tasks.agent
      # AGENT_PORT: 9001
      # LOG_LEVEL: debug
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - agent_network
    deploy:
      mode: global
      labels:
        - "traefik.enable=false"

  portainer:
    image: portainer/portainer
    command: -H tcp://tasks.agent:9001 --tlsskipverify
    networks:
      - agent_network
      - proxied_network
    ports:
      - "9000"
    volumes:
      - portainer_data:/data
    deploy:
      labels:
        - "traefik.docker.network=proxied"
        - "traefik.backend=portainer"
        - "traefik.frontend.rule=Host:$PORTAINER_HOSTNAME"
        - "traefik.port=9000"
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

  proxy:
    image: traefik
    networks:
      - proxied_network
    environment:
      - CLOUDFLARE_EMAIL=${CLOUDFLARE_EMAIL}
      - CLOUDFLARE_API_KEY=${INPUT_CLOUDFLARE_APIKEY}
    ports:
      - "8080"
      - "80:80"
      - "443:443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "sslcerts:/etc/acme/"
    deploy:
      labels:
        - "traefik.frontend.rule=Host:${TRAEFIK_HOSTNAME}"
        - "traefik.port=8080"
        - "traefik.backend=traefik"
        - "traefik.frontend.entryPoints=http"
        - "traefik.enable=true"
        - "traefik.protocol=http"
      placement:
        constraints:
          - node.role == manager
    command:
      - "--api"
      - "--debug"
      - "--entrypoints=Name:http Address::80 Redirect.EntryPoint:https"
      - "--entrypoints=Name:https Address::443 TLS"
      - "--defaultentrypoints=http,https"
      - "--acme"
      - "--acme.dnschallenge=true"
      - "--acme.dnschallenge.provider=cloudflare"
      - "--acme.entryPoint=https"
      - "--acme.onHostRule=true"
      - "--acme.storage=/etc/acme/acme.json"
      - "--acme.onDemand=false"
      - "--acme.email=${LETSENCRYPT_EMAIL}"
      - "--docker"
      - "--docker.swarmMode"
      - "--docker.domain=${DOCKER_DOMAIN}"
      - "--docker.watch"

networks:
  proxied_network:
    external:
      name: proxied_network

  agent_network:
    driver: overlay

volumes:
  portainer_data:
    driver: local
  sslcerts:
    driver: local

5) Construction d'une image

La page construction d'une image explique comment installer un gestionnaire de machine virtuelle, monter une image Ubuntu 18.04 LTS, charger une image amd64 et la convertir en ARM32.

6) Alternative au Pi : un serveur Linux

On peut profiter des avantages de l’autohébergement de nos services à la maison sans toutefois disposer d'un Raspberry Pi. La solution consiste en l'installation d'un système d'exploitation serveur (sur un portable ou un poste de table -une tour-), dont le processeur permet la virtualisation), de l'ajout de Docker et d'y installer ensuite les services désirés. * Autohébergement maison sur un serveur Linux

7) Astuces

Compte et mot de passe par défaut du Raspberry Pi

  • Compte par défaut : pi
  • Mot de passe initial : raspberry

Trouver l'adresse IP de son Raspberry Pi

  • on peut le trouver dans l'administrateur de son routeur
  • avec la commande hostname -I
  • avec la commande ifconfig dans le raspberry

pi@raspberrypi:~ $ ifconfig

      eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
      inet 192.168.0.140  netmask 255.255.255.0  broadcast 192.168.0.255
      inet6 fe80::dcce:19df:6791:1436  prefixlen 64  scopeid 0x20<link>
      ether b8:27:eb:b5:7d:28  txqueuelen 1000  (Ethernet)
      RX packets 20272  bytes 4579886 (4.3 MiB)
      RX errors 0  dropped 4  overruns 0  frame 0
      TX packets 268  bytes 39798 (38.8 KiB)
      TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      lo: flags=73<UP,LOOPBACK,RUNNING> 4 mtu 65536
      inet 127.0.0.1  netmask 255.0.0.0
      inet6 ::1  prefixlen 128  scopeid 0x10<host>
      loop  txqueuelen 1000  (Boucle locale)
      RX packets 36  bytes 2160 (2.1 KiB)
      RX errors 0  dropped 0  overruns 0  frame 0
      TX packets 36  bytes 2160 (2.1 KiB)
      TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
      inet 192.168.0.165  netmask 255.255.255.0  broadcast 192.168.0.255
      inet6 fe80::20ee:7f61:2fea:6473  prefixlen 64  scopeid 0x20<link>
      ether b8:27:eb:e0:28:7d  txqueuelen 1000  (Ethernet)
      RX packets 6713  bytes 3898049 (3.7 MiB)
      RX errors 0  dropped 1  overruns 0  frame 0
      TX packets 205  bytes 28694 (28.0 KiB)
      TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
       

On voit ici qu'il y a 3 connexions eth0 est la connection filaire et l'adresse IP est 192.168.0.140, l0 est l'adresse du localhost IP est 127.0.0.1 (en tapant cette adresse dans le fureteur on se connecte sur le raspberry lui-même) et l'adresse wlan0 du wifi qui est ici 192.168.0.165. il est possible d'avoir plusieurs connexions, ici le wifi du rasperry est activé et en même temps il est braché filaire, chaque branchement a sa propre adresse ainsi un ping (pour vérifier si l'adresse est accessible) peut être envoyé pour chaque adresse depuis un autre ordinateur connecté au même réseau local ;

dpt@dpt-Dell-System-XPS-L322X ~ $ ping 192.168.0.165 PING 192.168.0.165 (192.168.0.165) 56(84) bytes of data. 64 bytes from 192.168.0.165: icmp_seq=1 ttl=64 time=1.64 ms 64 bytes from 192.168.0.165: icmp_seq=2 ttl=64 time=1.74 ms 64 bytes from 192.168.0.165: icmp_seq=3 ttl=64 time=1.76 ms

dpt@dpt-Dell-System-XPS-L322X ~ $ ping 192.168.0.140 PING 192.168.0.140 (192.168.0.140) 56(84) bytes of data. 64 bytes from 192.168.0.140: icmp_seq=1 ttl=64 time=1.62 ms 64 bytes from 192.168.0.140: icmp_seq=2 ttl=64 time=64.5 ms 64 bytes from 192.168.0.140: icmp_seq=3 ttl=64 time=42.2 ms

Mot de passe d'administration NextCloud oublié

Q : Vous avez oublié votre mot de passe d'administration de Nextcloud, n'avez pas configuré la messagerie afin de pouvoir le récupérer et aimeriez le réinitialiser. R :

  • Ouvrez un Terminal sur votre Pi.
  • Affichez les services de Docker : docker ps
  • Repérez la ligne correspondante à :
    • IMAGE = “nextcloud:xx”
    • COMMAND = ”/entrypoint.sh apac…”
    • NAMES = “nextcloud_nextcloud.1.9hmfo25uzy4p1u1zodbva64xy” (valeur différente pour vous)
  • C'est l'information de la colonne “NAMES” dont vous aurez besoin dans la commande suivante.

  • Saisir : docker exec -it nextcloud_nextcloud.1.9hmfo25uzy4p1u1zodbva64xy bash (remplacez la valeur “NAME” avec la valeur que vous obtenez)
  • Vous serez alors en “sudo” dans le dossier de Nextcloud où on eut réinitialiser le mot de passe avec cet invite : root@7cdbb827244e:/var/www/html#
  • Visualisez le nom du stockage de Nextcloud : ls -al
  • Vous voyez que c'est “www-data”

  • Effacez l'écran : clear
  • Installez “sudo” : apt update && apt install sudo
  • Saisir : sudo -u www-data php ./occ user:resetpassword votrecompte (remplacez “votrecompte” par le compte administrateur que vous avez utilisé lors de l'installation de l'image Nextcloud)
  • Saisir un nouveau mot de passe (saisir 2 fois)
  • Message “Successfully reset password for votrecompte”
  • Sauvegardez ce nouveau mot de passe dans KeePass. ;-)

8) Vidéos maison du projet

Cette section présente des vidéos créés par les collaborateurs du projet Héberges ta vie. Répertoire des vidéos de Benoît Vézina

  • Obtenir un nom de domaine :
    • Démonstration de création de nom de domaine chez Freenom.com qui offre des noms avec extension .tk .jq .ga gratuitement pour une durée de 3 mois.
    • Montre l'exemple avec lapatente.tk lié à l'adresse courriel lapatente@gmail.com
    • L'étape suivante du prochain vidéo sera de faire déplacer votre nom de domaine de votre fournisseur (Freenom, Namesilo ou autre) vers un serveur de nom de domaine personnalisé (custom nameserver) supporté par notre projet, comme Cloudflare (ou Gandi si vous avez acheté votre nom de domaine à cet endroit).
  • Délégation du DNS à Cloudflare :
    • Démonstration de création de compte chez Cloudflare lié à l'adresse courriel lapatente@gmail.com
    • Ajout du site www.lapatente.tk (plan gratuit)
    • Saisie des noms de domaine Cloudflare qui répondront quand vos utilisateurs visiteront www.lapatente.tk
    • Ce changement peut prendre jusqu'à 24 hrs pour la prise en charge de votre nom de domaine
    • L'étape suivante du prochain vidéo sera d'associer l'adresse IP de notre Raspberry Pi (sur notre réseau local à la maison) à notre nom de domaine.
  • Création d'hôtes chez Cloudflare :
    • Démonstration de configuration d'un nom de domaine chez Cloudflare
    • Les “A NAME” versus les “CNAME”
    • Ajout de odoo, nextcloud, admin (Potainer l'orchestrateur de containers), et traefik (visualisation du trafic)

9) Références utiles

Portainer.io : Site officiel de Portainer (voir section “DETAILED OVERVIEW” du bouton “LIVE DEMO”) Docker Hub : Site officiel de Docker Hub (voir lien “Explore” pour découvrir les Repositories officiels disponibles). Docker Community : Communauté Docker (pour s'impliquer avec des enthousiastes de Docker qui partagent une passion pour les containers virtuels, les microservices et les appications distribuées). blog.hypriot.com :

  • Blog officiel de Hypriot (communauté grandissante autour de Docker sur des périphériques ARM -comme le Raspberry Pi-).
  • Images pour Raspberry Pi prêtes à l'utilisation

Tutoriels Dockers for beginners : Configuration initiale, exécuter votre premier container, Webapps avec Docker, déployer une App avec Swarm). blog de Yohann Ciurlik : Blog d'un utilisateur (dernière mise à jour en octobre 2017) présente Portainer, une interface pour gérer vos containers Docker et clusters Swarm https://raspbian-france.fr/ : Tutoriels de grande qualité surtout si vous préférez le français à une autre langue

auto-heber/hypriot.txt · Dernière modification : 2024/01/28 23:48 de 127.0.0.1