Table des matières

Fait

Autohébergement maison de Hypriot avec Portainer et Docker sur 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 ordinateur personnel (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.

Le matériel de votre ordinateur est-il compatible ?

D'abord, vous devez vous assurer que le processeur de votre ordinateur (portable ou tour) supporte la virtualisation. L'idée est d'aller vérifier sur le site du constructeur de votre processeur si le processeur de l'ordinateur à installer supporte la virtualisation.

Si vous ne savez pas le type de processeur, cherchez-le sur le site de votre fabricant.

Quand vous savez le modèle de votre processeur et son constructeur, vérifiez.

Exemple: Vous avez une tour HP Pavilion MediaCenter m8187c achetée en 2007 qui ne demande qu'à se rendre utile à nouveau.

  1. Je vais sur le site de HP
  2. À la section “Processor” je constate qu'il s'agit d'un Core 2 Duo E750 ce qui signifie qu'il comporte 2 coeurs mais surtout que c'est le modèle E6750 fabriqué par Intel
  3. Puisque c'est un vieux modèle, il risque d'être difficile à trouver sur le site (canadien français) du fabricant Intel.
  4. Donc simplement, sur Google, je cherche : intel e6750 specs qui m'amène à la page des spécifications de mon processeur Intel E6750
  5. Ensuite je cherche la spécification technologie de virtualisation et je constate que c'est à oui, donc je peut utiliser cet ordinateur pour y installer Docker qui nécessite la virtualisation. :-P

Téléchargement de l'image d'Ubuntu Server 18.04 LTS

  1. Télécharger Ubuntu Server 18.04 LTS qui est la version la plus récente supportée jusqu'en avril 2023.
  2. À partir du fichier ubuntu-18.04-live-server-amd64.iso sur un poste de travail Linux, ouvrir ce fichier avec Brasero (ou autre logiciel de votre choix).
  3. Si l'application n'est pas déjà sur votre poste Linux, vous pouvez l'installer à partir de votre “gestionnaire de logiciels”.

Graver l'image ISO sur un disque DVD

Hé oui, je suis de la vieille école qui n'utilise pas encore les clés USB pour graver ses images. :-?

  1. Démarrez Brasero, “Graver une image”, sélectionner l'image téléchargée ainsi que votre graveur de DVD, puis “Graver” (prend environ 3 min)
  2. Après la gravure, “Fermer” et fermer l'application Brasero.

Installer Ubuntu Server 18.04 sur votre ordinateur

  1. Copier les informations que vous souhaitez conserver du système actuellement installé, le cas échéant.
  2. Insérer le DVD, redémarrer l'ordinateur et sélectionnez la touche du clavier pour démarrer sur le DVD (souvent F10 = Setup, F8 ou F3).
  3. Brancher à Internet.
  4. Suivre les étapes d'installation (le club LinuQ est là pour vous assister, au besoin, lors d'une de ses activités).

Configuration initiale de votre serveur

  1. Suivez toutes les étapes (encore une fois, le club LinuQ est là pour vous assister, au besoin, lors d'une de ses activités) ;
    1. Étape 1 - Connexion root
    2. Étape 2 - Créer un nouvel utilisateur
    3. Étape 3 - Donner à cet utilisateur les privilèges d'administration (root)
    4. Étape 4 - Ajouter une clé publique d'authentification (et copie de la clé publique SSH à l'utilisateur xxx avec l'option 1 (sshcopy-id)
    5. Étape 5 - Désactiver l'authentification par mot de passe (recommandé)
    6. Étape 6 - Essais de connexion
    7. Étape 7 - Installer un pare-feu de base (UFW firewall)

Vous avez maintenant une base solide pour votre serveur. Vous pouvez maintenant installer n'importe quel logiciel désiré sur votre serveur.

Installation de l'application Docker sur votre serveur Ubuntu 18.04

Docker est une application qui simplifie et accélère l'exécution des processus applicatifs dans des conteneurs, qui sont comme des machines virtuelles, seulement plus portables, plus respectueux des ressources et plus dépendants du système d'exploitation hôte. Pour une introduction détaillée aux différents composants d'un conteneur Docker, consultez The Docker Ecosystem : An Introduction to Common Components (L'écosystème Docker : une introduction aux composants communs).

  1. Suivez toutes les étapes (identiques pour la version 18.04) (avons-nous besoin de le répéter, le club LinuQ est là pour vous assister, au besoin, lors d'une de ses activités) ;
    1. Étape 1 - Installation de Docker
      • L'installation de Docker vous donne désormais non seulement le service Docker (daemon) mais aussi l'utilitaire de ligne de commande docker ou le client Docker. Nous allons explorer comment utiliser la commande docker plus tard dans ce tutoriel.
    2. Étape 2 - Exécution de la commande Docker sans privilège sudo
      • Le reste de ce tutoriel suppose que vous exécutez la commande docker en tant qu'utilisateur dans le groupe d'utilisateurs docker. Si vous choisissez de ne pas le faire, veuillez ajouter sudo aux commandes.
    3. Étape 3 - Utilisation de la commande Docker
      • Les conteneurs Docker sont exécutés à partir d'images Docker. Par défaut, on extrait ces images de Docker Hub, un dépôt Docker géré par Docker, la société à l'origine du projet Docker. N'importe qui peut créer et héberger ses images Docker sur Docker Hub, donc la plupart des applications et distributions Linux dont vous aurez besoin pour exécuter les conteneurs Docker contiennent des images hébergées sur Docker Hub.
    4. Étape 4 - Utilisation des images Docker
      • Les conteneurs Docker sont lancés (exécutés) à partir d'images Docker. Par défaut, on extrait ces images de Docker Hub, un dépôt Docker géré par Docker, la société à l'origine du projet Docker. N'importe qui peut créer et héberger ses images Docker sur Docker Hub, donc la plupart des applications et distributions Linux dont vous aurez besoin pour lancer les conteneurs Docker contiennent des images hébergées sur Docker Hub.
      • Comme vous le verrez plus tard dans ce tutoriel, les images que vous utilisez pour lancer des conteneurs peuvent être modifiées et utilisées pour générer de nouvelles images, qui peuvent ensuite être publiées (push, est le terme technique) vers Docker Hub ou d'autres dépôts Docker.
    5. Étape 5 - Lancer un conteneur Docker
      • Les conteneurs sont très utiles, interactifs (similaires à des machines virtuelles) mais plus économes au niveau des ressources utilisées (resource-friendly).
      • Lisez cette section pour information seulement. Nous n'installerons pas le container Ubuntu maintenant, puisque nous utiliserons les images montées dans le Framagit de LinuQ plus tard.
    6. Étape 6 - Modifier un conteneur et le sauvegarder sous une nouvelle image Docker
      • Lorsque vous démarrez une image Docker, vous pouvez créer, modifier et supprimer des fichiers comme vous le feriez avec une machine virtuelle. Les modifications que vous apportez s'appliqueront uniquement à ce conteneur. Vous pouvez le démarrer et l'arrêter, mais une fois que vous l'avez détruit avec la commande docker rm, les changements seront définitivement perdus.
      • Cette section montre comment enregistrer l'état d'un conteneur en tant que nouvelle image Docker.
      • Lisez cette section pour information seulement.
      • On y mentionne que les images peuvent également être construites à partir de ce qu'on appelle un Dockerfile (processus qui dépasse la portée de cet article).
    7. Étape 7 - Lister les conteneurs Docker
      • Après avoir utilisé Docker pendant un certain temps, vous aurez de nombreux conteneurs actifs (en cours d'exécution) et inactifs sur votre ordinateur.
      • Lisez cette section pour information seulement.
      • Pour voir les conteneurs actifs : docker ps
      • Pour voir tous les conteneurs (actifs et inactifs) : docker ps -a
      • Pour voir le dernier conteneur créé : docker ps -l
      • Pour arrêter un conteneur en exécution ou actif : docker stop container-id (le contaider-id s'affiche avec docker ps)
    8. Étape 8 - Publier des images Docker dans un Registre Docker (Repository Docker)
      • La prochaine étape logique après la création d'une nouvelle image à partir d'une image existante consiste à la partager avec certains de vos amis, le monde entier sur Docker Hub ou un autre registre Docker auquel vous avez accès. Pour pousser une image vers Docker Hub ou tout autre registre Docker, vous devez y avoir un compte.
      • Cette section vous montre comment transférer une image Docker vers Docker Hub.
      • Lisez cette section pour information seulement.
      • On donne aussi un lien pour savoir comment créer votre propre registre Docker privé
    9. Conclusion
      • Docker contient beaucoup plus que ce qui a été donné dans cette page, mais cela devrait suffire à vous aider à travailler avec Ubuntu 18.04. Comme la plupart des projets open source, Docker est construit à partir d'une base de code en développement rapide, alors prenez l'habitude de visiter la page du blog du projet (docker blog) pour les dernières informations.
      • Consultez également les autres didacticiels Docker dans la communauté DO.
      • La prochaine étape consiste en l'installation de Dockerswarm, Portainer et Traefik. Vous pourrez ensuite installer des images Docker pour PC selon vos besoins.

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

Connectez-vous à votre serveur (via son adresse IP) avec un compte utilisateur administrateur par SSH à partir d'un ordinateur connecté au même réseau que votre serveur, par exemple :

$ ssh mon_compte@192.168.10.103

S'assurer que les paquets d'Ubuntu sont à jour sur votre serveur :

sudo apt update && sudo apt upgrade

S'assurer d'avoir configuré votre routeur afin de rediriger les ports 443, 22 (et 80 si possible) vers l'adresse que votre routeur a attribuée à votre serveur :

Name Protocol LAN Server
Virtual Server HTTP TCP 80/80 192.168.10.103
Virtual Server HTTPS TCP 443/443 192.168.10.103
SSH TCP 22/22 192.168.10.103

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 3000130000.

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

http://192.168.10.103:30000

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

https://linuq.org/_media/projets/linuq2.png

Remplacer l'URL du template par défaut (attention différente du Pi car contient .pc.json) :

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

par celle-ci :

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

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

Installation de l'image Docker CouchPotato sur votre serveur Ubuntu 18.04

* Voir la section Les images d'intérêt - CouchPotato

(section interrompue ici)

retour projet auto hébergement