Vous trouvez les étapes initiales afin de configurer un HomeLab similaire au mien. N'hésitez pas à adapter les configurations à vos besoins.Ceux-ci ne sont qu'à titres informatives
Index
À des fins de simplicité et de constance, tous les dossiers de config
sont placé dans le répertoire /opt/nomduconteneur/config
.
Il est fortement recommandé de débuter en utilisant un gestionnaire tel que Portainer
afin de stocker vos fichiers de configuration. Les données n'étant pas persistantes par défaut, vous devriez conserver une copie en lieux sûrs.
Les conteneurs peuvent être déployés de 2 facons:
Nous allons utilisé le conteneur qBittorent
à titre d'exemple.
sudo docker run -d \
--name=qbittorrent \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=America/Montreal \
-e WEBUI_PORT=8080 \
-p 8080:8080 \
-p 6881:6881 \
-p 6881:6881/udp \
-v /opt/qbittorrent/config:/config \
-v /path/to/downloads:/downloads \
--restart unless-stopped \
lscr.io/linuxserver/qbittorrent:latest
version: "2.1"
services:
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
environment:
- PUID=1000
- PGID=1000
- TZ=America/Montreal
- WEBUI_PORT=8080
volumes:
- /opt/qbittorrent/config:/config
- /path/to/downloads:/downloads
ports:
- 8080:8080
- 6881:6881
- 6881:6881/udp
restart: unless-stopped
Comme vous pouvez le constater, les deux versions sont pratiquement identiques.
Déployer portainer via SSH
avec la commande suivante:
sudo docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Port | Notes |
---|---|
8000 |
Tunnel TCP (Edge Compute) |
9000 |
Port pour le WebUI |
Une fois déployé, rendez-vous à http://iphost:9000
. Il vous sera ensuite demandé de créer votre compte administrateur.
Une fois votre compte créer, vous obtiendrez la page suivante:
Cliquez ensuite sur "Get Started". Votre environnement local sera automatiquement ajouté.
Rendez-vous à Stacks
, c'est à cet endroit que vous pourrez déployer vos docker-compose.yml
.
Cette méthode vous permet d'éviter de faire tout en CLI
. Vous pourrez y revenir facilement et mettre vos fichiers à jour sans difficulté.
Il nous est possible d'utiliser gratuitement le service de CloudFlare d'utiliser un domaine que vous possédez pour vos services externes.
Tout d'abord il vous faudra votre propre domaine et pointer les nameservers vers ceux de CloudFlare. Ces étapes ne seront pas couvertes ici.
Par la suite, il vous faudra générer un "Token" pour que le conteneur puisse s'authentifier à votre compte CloudFlare. De cette façon, le conteneur pourra mettre à jour régulièrement votre adresse IP publique.
Nous mettrons également en place les paramètres nécessaire pour la mise en place d'un "Reverse-Proxy".
Rendez-vous sur votre panneau CloudFlare, sélectionner le domaine concerné et activé les fonctions suivantes dans les options de sécuritées:
Il faut ensuite créer une règle comme celle-ci:
Pour créer un jeton d'API CloudFlare pour votre zone DNS, suivez ces étapes sur https://dash.cloudflare.com/profile/api-tokens :
- Cliquez sur "Créer un jeton".
- Donnez un nom au jeton, par exemple, cloudflare-ddns.
- Accordez au jeton les autorisations suivantes :
- Zone - Paramètres de zone - Lecture
- Zone - Zone - Lecture
- Zone - DNS - Modifier
- Définissez les ressources de la zone comme suit :
- Inclure - Toutes les zones
- Terminez l'assistant et copiez le jeton généré dans la variable API_KEY pour le conteneur.
Nous allons utilisé le conteneur oznu/cloudflare-ddns pour mettre à jour notre IP.
sudo docker run \
-e API_KEY=TOKENCLOUDFLARE \
-e ZONE=example.com \
-e SUBDOMAIN=subdomain \
oznu/cloudflare-ddns
Variables | Notes |
---|---|
API_KEY |
Clé Généré |
ZONE |
La racine de votre domaine |
SUBDOMAIN |
Sous-Domaine (Facultatif) |
Si le déploiement du conteneur se déroule comme prévu, vous devriez obtenir les logs suivants (Accessible via Portainer):
[cont-init.d] executing container initialization scripts...
[cont-init.d] 30-cloudflare-setup: executing...
DNS Zone: mondomaine.com (1725776d1644dc0b9e36fa046ebe7145)
DNS Record: sousdomaine.mondomaine.com (7422e19ddcd60b711aaaaf52d77357a7)
[cont-init.d] 30-cloudflare-setup: exited 0.
[cont-init.d] 50-ddns: executing...
No DNS update required for sousdomaine.mondomaine.com (71.55.190.170).
[cont-init.d] 50-ddns: exited 0.
[cont-init.d] done.
[services.d] starting services
Starting crond...
crond: crond (busybox 1.31.1) started, log level 6
[services.d] done.