Installer MeTube avec Docker
Guide d'installation de MeTube sous Docker.

Au sommaire :
- 1-Qu'est-ce que MeTube ?
- 2-Prérequis
- 3-Déploiement
- 4-Télécharger des contenus
- 5-Exposer son instance avec Traefik et Authelia
1-Qu'est-ce que MeTube ?
MeTube est une interface web pour le célèbre youtube-dl qui va vous permettre de télécharger les contenus de Youtube.

Balek les mamies!!!!!
Vous allez pouvoir télécharger les vidéos au format MP4, les pistes audio au format MP3/WAV/OPUS, les playslist au format M4U et les miniatures des vidéos (thumbnail).

C'est du même acabit que les sites comme Freemake ou SaveFrom sauf que c'est héberger chez vous, que les fichiers sont stockés sur votre serveur et que vous pouvez télécharger sur votre poste client en un clic.
2-Prérequis
Pour déployer MeTube, vous devez disposer d'une machine virtuelle fonctionnant sous Ubuntu Server.
Création de la machine virtuelle :
Virtualisation avec Proxmox VE : Si vous partez de zéro, suivez mon guide détaillé pour virtualiser Ubuntu sur Proxmox VE avec des réglages optimisés.

Automatisation avec Cloud-Init : Pour gagner du temps lors de la configuration, utilisez un template Cloud-Init. Cela permet d'automatiser et de simplifier l'initialisation de vos machines virtuelles. Retrouvez les instructions dans ce guide.

Installation des outils nécessaires :
Docker et Docker Compose : Une fois la machine virtuelle prête, installez Docker et Docker Compose, indispensables pour gérer et orchestrer vos conteneurs. Ce guide vous accompagnera dans l'installation.

Sécurisation et exposition de l'application :
Proxy inverse avec Traefik : Pour exposer vos applications sur Internet de manière sécurisée, configurez un proxy inverse. Traefik est une solution recommandée. Suivez ce guide pour l'installation.

Gestion des accès avec Authelia : Pour renforcer la sécurité, implémentez une solution de gestion des accès telle qu'Authelia. Ce guide vous fournira les étapes nécessaires :

3-Déploiement
Commencez par créer un dossier "docker" à la racine du dossier utilisateur"
mkdir -p ~/docker
Créez un fichier nommé "compose.yml"
touch ~/docker/compose.yml
Ouvrez le fichier "compose.yml" et copiez cette configuration.
networks:
# Docker Bridge Network
default:
driver: bridge
services:
metube:
image: ghcr.io/alexta69/metube
container_name: metube
volumes:
- ${DOWNLOADS}:/downloads
ports:
- 8081:8081
restart: unless-stopped
Déployez l'application avec la commande suivante.
docker compose up -d
Si vous accédez à l'application, mes félicitations.

4-Télécharger des contenus
Sélectionnez le format que vous souhaitez puis cliquez, ajoutez le lien Youtube puis sur "Add".

Le fichier sera en cours de téléchargement.

Et lorsque le téléchargement sera terminer, il sera disponible dans le dossier "downloads" que vous avez indiqué dans le fichier compose.

Mais si vous souhaitez consommer le contenu de suite, cliquez sur l'icone de téléchargement.

5-Exposer son instance avec Traefik et Authelia
Voici la configuration avec Traefik et Authelia.
Cochez la section ports si vous ne souhaitez pas accéder à l'application en local.
Ensuite, si vous avez suivi les guides de Traefik et Authelia, il vous faudra ajouter les labels adéquat pour pouvoir exposer l'application sur internet et activer l'authentification SFA ou MFA.
Comme d'habitude, suivez les parties 6 et 7 du guide de Traefik pour ouvrir les ports de votre box internet et ajouter les entrées DNS pour pouvoir accéder à l'application.
Et n'oubliez JAMAIS :
- D'éditer le fichier "configuration.yml" de Authelia.
- D'ajouter le nom de domaine de l'application
- De redémarrer l'application avec "docker compose restart authelia" pour que la modification soit prise en compte.

networks:
# default network
default:
driver: bridge
# Traefik network
web:
name: web
driver: bridge
services:
traefik:
container_name: traefik
image: traefik:v2
restart: always
networks:
- web
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${APPDATA}/traefik/traefik.yml:/traefik.yml
- ${APPDATA}/traefik/dynamic.yml:/dynamic.yml
- ${APPDATA}/traefik/letsencrypt/acme.json:/acme.json
- ${APPDATA}/traefik/shared:/shared
labels:
- traefik.enable=true
- traefik.http.routers.traefik.entrypoints=websecure
- traefik.http.routers.traefik.rule=Host(`traefik.<domain_name>`)
- traefik.http.routers.traefik.service=api@internal
- "traefik.http.routers.traefik.middlewares=middlewares-basic-auth@file"
authelia:
image: authelia/authelia
container_name: authelia
volumes:
- ${APPDATA}/authelia:/config
networks:
- web
labels:
- traefik.enable=true
- traefik.http.routers.authelia.entrypoints=websecure
- traefik.http.routers.authelia.rule=Host(`authelia.<domain_name>`)
- traefik.http.routers.authelia.tls.certresolver=letsencrypt
ports:
- 9091:9091
restart: unless-stopped
healthcheck:
disable: true
environment:
- TZ=${TZ}
metube:
image: ghcr.io/alexta69/metube
container_name: metube
volumes:
- ${DOWNLOADS}:/downloads
networks:
- web
# ports:
# - 8081:8081
restart: unless-stopped
labels:
- traefik.enable=true
- traefik.http.routers.metube.entrypoints=websecure
- traefik.http.routers.metube.tls.certresolver=letsencrypt
- traefik.http.routers.metube.rule=Host(`metube.<votre_nom_de_domaine>`)
- traefik.http.routers.metube.service=metube-svc
- traefik.http.services.metube-svc.loadbalancer.server.port=8081
- 'traefik.http.routers.metube.middlewares=chain-authelia@file'