International Klein Blue · 002FA7

JArvis, un serveur par Jules-Arthus Klein.

JArvis, monté en 2022, en service depuis

Je le développe depuis 2022. L'idée de départ tenait en une phrase : me refaire un Netflix à moi. Ça a commencé par des scripts Python écrits pendant les cours, au lycée, puis une fonctionnalité après l'autre. Il s'appelle JArvis, pour l'assistant d'Iron Man et pour mes initiales, JA. Devenu un serveur entier, c'est aussi ce qui m'a le plus appris à coder, seul d'abord, puis à l'EPITA.

Auto-hébergé · Ubuntu 24.04 LTS
4 services exposés
Razer Blade 15
Ce qui tourne

Les services

Ce que le serveur fait tourner en continu, et ce qui le fait tourner, lui.

Public

Un sous-domaine et un certificat, mais Authelia à l'entrée : joignable de partout, ouvert à personne sans compte.

Privé

Ni sous-domaine ni port ouvert : réseau local uniquement.

Comment c'est branché

L'architecture

Un seul fichier docker-compose.yml décrit la pile entière : les conteneurs, leur réseau, leurs disques. Le serveur n'installe rien, il applique ce fichier.

gluetun Tunnel NordVPN · France · P2P
deluge 8112
sonarr 8989
radarr 7878
prowlarr 9696
scraparr 7100
prometheus 9090
grafana 3000

Ces sept conteneurs n'ont pas de réseau à eux : network_mode: service:gluetun les fait vivre dans celui de gluetun. Aucun port ne leur appartient, ils sont tous publiés par le tunnel. Si gluetun tombe, ils deviennent sourds : le coupe-circuit n'est pas une option cochée, c'est la topologie.

Hors tunnel Réseau propre
authelia 127.0.0.1:9091
wizarr 5690

authelia garde l'entrée : il n'écoute que 127.0.0.1, donc seul le reverse proxy de la machine peut lui parler. wizarr distribue les invitations. Ni l'un ni l'autre n'a de raison de sortir par le VPN.

Une pile, un fichier

Chaque service est déclaré plutôt qu'installé : image, version, volumes, variables. Le même fichier remonte l'ensemble à l'identique sur une machine neuve.

Le réseau se déclare

Router sept services dans un VPN tiendrait en un jeu de règles iptables à maintenir à la main. Ici, c'est une ligne par conteneur, et elle est impossible à oublier.

Jetable par construction

Un conteneur qui déraille se détruit et se relance sans rien perdre : docker compose up -d suffit, la configuration et la médiathèque vivent dans des volumes, en dehors de lui.

deluge, radarr et sonarr montent les mêmes chemins, /mnt/Plex et /downloads. Un téléchargement terminé change de dossier sans jamais être recopié.

Sous le capot

La machine

Un Razer Blade 15 de 2020 payé 50 € : à ce prix, l'écran, le clavier, le trackpad et le châssis étaient tous cassés. Le reste marche très bien. Rabattu, branché au secteur, il tourne 24 h / 24 dans un coin, avec deux disques USB pour tout ranger.