Bonjour à tous,
En 2016, j'avais écrit finalcut, un script qui transformait un serveur Debian 7/8 en VPN (OpenVPN) + seedbox (Transmission, vsftpd). Il a été entièrement réécrit pour Debian 12 et 13, et il change de nom : voici seedtunnel 1.0.0.
Le principe reste le même : un script en bash, lisible de haut en bas, sans Docker. Vous pouvez lire chaque ligne avant de la lancer et savoir exactement ce qui est installé sur votre serveur.
👉 https://github.com/finalcutgit411/seedtunnel (README en français)
Ce qu'il installe
VPN WireGuard
- un QR code par client pour les téléphones, un lien de téléchargement pour les ordinateurs ;
- un port ouvert par client (TCP et UDP) : pratique pour un logiciel torrent à la maison, derrière le VPN ;
- tout le trafic IPv4 et IPv6 du client passe par le tunnel (pas de fuite IPv6) ;
- clients ajoutés ou révoqués à chaud, sans couper les autres.
Seedbox
- Transmission derrière nginx en HTTPS : Let's Encrypt renouvelé automatiquement, ou certificat auto-signé sans nom de domaine ;
- fichiers en SFTP, par mot de passe ou clé SSH, avec un utilisateur enfermé dans son dossier (pas de shell) ;
- un dossier
watch/ : on y dépose un .torrent, le téléchargement démarre tout seul ;
- disque presque plein : sous 3 Go libres, Transmission s'arrête proprement, et redémarre tout seul au-dessus de 5 Go.
Les deux parties sont indépendantes : on peut n'installer que le VPN, ou que la seedbox.
Côté sécurité
- aucun mot de passe en clair : ni dans les fichiers, ni dans les journaux, ni en argument d'une commande (seules les empreintes sont gardées) ;
- Transmission n'écoute que sur 127.0.0.1 et il est enfermé par systemd (
ProtectSystem=strict) ;
- fail2ban sur SSH/SFTP, le mot de passe web et les récidivistes ; les attaquants de SSH sont bannis de tous les ports ;
- pare-feu nftables « tout refusé sauf le nécessaire », qui s'annule tout seul au bout de 2 minutes sans confirmation depuis une nouvelle connexion SSH : impossible de s'enfermer dehors ;
- réglages réseau du noyau durcis, TLS 1.2/1.3 uniquement, mises à jour de sécurité automatiques.
Au quotidien
- un menu pour débuter, ou des commandes et un fichier de configuration pour automatiser ;
- installation idempotente : relancée, elle ne change rien et ne redémarre rien ; si un fichier a été modifié à la main, elle remet tout en ordre ;
seedtunnel doctor : diagnostic complet (services, DNS, certificat, ports, pare-feu, disque, horloge, sauvegardes), avec pour chaque problème la commande qui le corrige ;
- sauvegarde chiffrée chaque semaine (les 4 dernières sont gardées) : clés du VPN, réglages, certificats, liste des torrents.
seedtunnel backup share donne un lien pour la récupérer sur votre ordinateur, et seedtunnel restore remet tout en place sur un serveur neuf ;
- liens de téléchargement à usage unique (configuration VPN, sauvegarde, fichier FileZilla) : plus besoin de
scp ;
- messages en français ou en anglais.
Aperçu du menu
___ ___ ___ ___ _____ _ _ _ _ _ _ ___ _
/ __|| __|| __|| \ |_ _|| | | || \| || \| || __|| |
\__ \| _| | _| | |) | | | | |_| || .` || .` || _| | |__
|___/|___||___||___/ |_| \___/ |_|\_||_|\_||___||____|
v1.0.0 · VPN WireGuard + seedbox · Debian GNU/Linux 13 (trixie)
VPN : actif · port 51820/udp · 2 connecté(s) sur 3 client(s)
Seedbox : actif · https://seedbox.example.org/
Disque : 36Go libres sur 400Go (système et téléchargements)
Pare-feu : actif
1) Gérer le VPN
2) Gérer la seedbox
3) Pare-feu
4) Diagnostic
5) Sauvegarder / restaurer
6) Mettre à jour seedtunnel
7) Redémarrer le serveur
L) Language / Langue
Q) Quitter
Installation
Sur une Debian 12 ou 13 fraîchement installée, en root. L'empreinte de l'archive est vérifiée avant de lancer quoi que ce soit :
apt update && apt full-upgrade -y
V=1.0.0
cd "$(mktemp -d)"
curl -fLO https://github.com/finalcutgit411/seedtunnel/releases/download/v$V/seedtunnel-$V.tar.gz \
&& curl -fLO https://github.com/finalcutgit411/seedtunnel/releases/download/v$V/SHA256SUMS \
&& sha256sum -c SHA256SUMS \
&& tar -xzf seedtunnel-$V.tar.gz \
&& mv seedtunnel-$V /opt/seedtunnel \
&& /opt/seedtunnel/seedtunnel.sh
Ensuite, la commande seedtunnel rouvre le menu, et seedtunnel update passe aux versions suivantes en vérifiant leur empreinte.
Testé à chaque modification
GitHub installe tout pour de vrai sur une Debian 12 et une Debian 13 vierges : vrai tunnel WireGuard, connexion SFTP par mot de passe puis par clé, pare-feu testé depuis l'extérieur, liens à usage unique, sauvegardes, désinstallation complète puis restauration, avec l'ancien client VPN qui se reconnecte et les torrents qui reviennent.
Limites
- WireGuard ne fonctionne qu'en UDP ;
- VPN en IPv4 uniquement (l'IPv6 est bloqué dans le tunnel plutôt que de fuiter) ;
- seedbox mono-utilisateur ;
- il faut un VPS KVM ou un serveur dédié : les VPS en conteneur (OpenVZ, LXC) n'ont souvent pas WireGuard (le script le détecte).
C'est sous licence MIT. Vos retours, critiques et idées sont les bienvenus, ici ou sur GitHub !