-
Faites des backups/snapshots avant de lancer le script ! Vous risquez de produire des erreurs de frappes qui feront planter le script...
-
La version >= 5 n'a aucun rapport avec la version 2 précedente. Pas d'upgrade simple possible.
Le script est adapté à Debian 10. De trés minimes adaptations peuvent être nécessaires pour fonctionner sous Ubuntu... Testez, retestez ! et proposez une PR !
Le script a été pensé par son fondateur @Merrick28 pour être le moins ancré dans le système principal. Par conséquent, le seul utilisateur du système est celui que vous allez créer dans les prochaines étapes. Peu importe le nombre de seedbox que vous allez gérer, il n'y aura pas plus d'utilisateurs système !
Le déploiement des seedbox est géré par du scripting Bash et par Ansible pour la partie DNS et sécurisation minimale du serveur.
Aucune application n'est installée en dur sur le système. Par conséquent, aucune raison ne devrait vous empecher un passage de Debian 10 à 11 par exemple.
Traefik V2.5 est utilisé en tant que reverse proxy. DockerCompose V3.9 est de la partie pour le déploiement des applications. La version 5 du script apporte de la modularité pour chaque seedbox, en installant uniquement certaines applications pour certaines seedbox. De nouvelles applications sont disponibles à l'installation, et ont été testées complétement ! Certaines applications n'ont pas d'authentification de traefik lors de l'accès car cela empêchait dans certains cas la communication avec d'autres applications. L'aspect fonctionnalité a été privilégié.
- Mises à jour automatiques de sécurité tous les jours, et redémarrage automatique à 5h00 si nécessaire pour l'application de la mise à jour.
- Envoi de mail automatique lors de mises à jours nocturnes...
- LogWatch, envoi de mail journalier récapitulant les différentes tentatives de connexions infructueuses.
- Sécurisation des accès SSH par Fail2ban, politique de restriction stricte.
- Utilisation de RkHunter pour détecter les Rootkits, portes dérobées et exploits au sein du système.
- (A revoir, laissé en commentaire) Mise en place de règles Iptables
-> Proposez des PR avec encore plus de sécurisation, en particulier au niveau des ports / règles iptables !
Copier le fichier vars-default en vars puis modifier le fichier selon votre besoin.
Copier le fichier ansible/group_vars/all-default.yml en ansible/group_vars/all.yml puis modifier le fichier selon votre besoin.
Ce script est pensé pour être utilisé avec un système LVM ou non
.
Les deux fonctionnent sans problème, mais le LVM est à privilégier car il apporte une plus grande souplesse.
Le LVM utilisé ici est du LVM Thin (avec pool) permettant l'over-provisioning. C'est à vous de le monitorer si vous voulez sur provisionner.
Si vous ne souhaitez pas utiliser le système LVM, il suffit pour cela de mettre LVM_STATUS=no
. Le script s'occupera alors de créer les répertoires utilisateurs en dessous de $DATA_DIR
.
Si vous n'avez pas créer d'espace disque en dur, alors tous les utilisateurs partageront la même capacité de disque.
Si vous souhaitez utiliser le système LVM, alors définissez la variable à LVM_STATUS=yes
en indiquant les différentes autres valeurs pour indiquer au script quel est le nom de votre VG LVM_VG_NAME
et votre pool LVM_POOL_NAME
que vous aurez préalablement crée manuellement !
Ce script est pensé pour être utilisé avec les APIs de Cloudflare uniquement.
Il est nécessaire de remplir les variables d'environnement du fichier seedbox-docker/ansible/group_vars/all.yml
avec vos données.
Le script s'occupe de créer automatiquement les enregistrements DNS pour votre système de base, mais aussi lors de l'ajout d'utilisateurs.
Le proxy Cloudflare est activé lorsqu'il est possible de l'utiliser ( dans la majorité des cas ).
CloudFlare version gratuite ne permet pas la réalisation de domaine du type : sousdomaine.sousdomaine.domaine.fr
avec l'obtention d'un certificat wildcard.
Par conséquent, regardez attentivement le vars-default.
Si vous souhaitez effectuer des tests avant une future installation, il est recommandé d'utiliser le serveur de test de Let's Encrypt pour éviter d'atteindre le nombre maximale de requêtes possibles.
Pour cela ajouter cette ligne : - "--certificatesResolvers.mydnschallenge.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
sous # Certificate Resolver
dans le fichier docker-compose.yml
En root :
hostnamectl set-hostname serveur.domain.fr
Dans /etc/hosts
: serveur.domain.fr serveur
Le fichier doit ressembler à ceci :
127.0.1.1 server.domain.fr serveur
127.0.0.1 localhost
Création d'un utilisateur : adduser monuser
Dans /etc/sudoers
: monuser ALL=(ALL) NOPASSWD:ALL
Téléchargement depuis Github :
apt install git -y
git clone https://github.com/Merrick28/seedbox-docker
chmod -R 775 seedbox-docker
chown -R monuser:monuser seedbox-docker
Suivre la procédure officielle : https://docs.docker.com/engine/install/debian/
La commande docker -v
doit vous renvoyer la version de Docker.
Suivre la procédure officielle : https://docs.docker.com/compose/install/
La commande docker-compose -v
doit vous renvoyer la version de Docker-Compose.
usermod -aG docker monuser
Il est recommandé de se déconnecter puis se reconnecter du SSH dans le but d'appliquer le changement de groupe.
sudo apt-get install apache2-utils python3 python3-pip
pip3 install ansible
ansible --version | grep "python version"
-> Doit renvoyer au minimum : python version = 3.7.3 (default, Jan 22 2021, 20:04:44) [GCC 8.3.0]
ansible --version
-> Doit renvoyer a minima : ansible 2.10.7
Vous devez créer votre VG et votre Pool.
Exemple Partiel :
umount /home
vgcreate vg_home /dev/sda2
lvcreate -l 100%FREE --thinpool pool_0_vg_home vg_home
cd seedbox-docker/ansible
ansible-playbook secure.yml -i hosts
cd seedbox-docker
./seedbox_system.sh -f
Mettre le diskSize à un nombre aléatoire si non utilisation de LVM ou si l'utilisateur a déja été crée. Nextcloud a besoin d'un mot de passe de 6 caractères au minimum !
./seedbox_system.sh -a --username toto --password totopassword --diskSize 400 --rutorrent yes --flood yes
./seedbox_system.sh -d toto --delete-all
./seedbox_system.sh -h
./seedbox_system.sh -v
FTP : Port 21 -> Mode de transfert : Passif
SFTP : Port 2222
Toute amélioration est la bienvenue ! Merci de tester au maximum vos modifications pour vérifier qu'elles n'ont pas d'impact sur les droits d'une autre application par exemple.
- Le menu impose de saisir le diskSize même lorsque cela n'est pas nécessaire
- Mettre en place des règles iptables avec Ansible
- Chrooter le SFTP au même niveau que le FTP sans avoir de conséquences sur les applications (ex: nextcloud)
- ....
La première chose à faire est de vérifier les deux fichiers de variables d'environnements. Ensuite, il faut vérifier les droits que vous avez attribué au niveau du Token de Cloudflare.
Partie : Jetons API : Zone.Réglages Zone, Zone.Zone, Zone.DNS
Si vous êtes trés rapide pour vous connecter, Portainer n'aura pas le temps de se connecter au socket Docker. Pour résoudre le problème, créer votre compte sur Portainer, puis déconnectez vous et reconnectez vous. Il vous proposera ensuite de sélectionner "Docker - Manage the local Docker environment". Cliquez sur connect, et voilà !
Un bug provoque une sur utilisation du CPU (environ 8% sans aucune librairie activée), vérifiez que cette option est désactivée : automatic port mapping.
Traefik : 2.5.4 Portainer : 2.9.3 Rutorrent : latest flood : 4.7.0 ...