Retour à l'aperçu

Bricksync 24/7 : Démarrage automatique et sécurité

Dans ce tutoriel avancé, nous remplaçons la méthode simple avec screen par un véritable service système (Systemd) combiné à tmux. Bricksync démarrera de manière totalement automatique après un redémarrage du serveur et récupérera de lui-même en cas de plantage.

Contribution de la communauté

L'idée et les scripts de base pour cette configuration proviennent directement de la communauté. Un immense merci pour cette brillante optimisation à :
Sabine Schmidt (Discord: BieneBiene#CentBricks)
N'hésitez pas à la soutenir et à visiter sa boutique : CentBricks sur BrickLink

1 Préparation (Installer tmux)

Ce tutoriel s'appuie directement sur notre Guide d'installation de base. Nous partons du principe que Bricksync se trouve déjà dans le répertoire de l'utilisateur bricksync.

Tout d'abord, nous devons installer le programme tmux sur le serveur. Connectez-vous à PuTTY en tant que root et exécutez la commande suivante :

sudo apt update && sudo apt install tmux -y

2 Créer le script de démarrage

Passez maintenant à l'utilisateur bricksync. Nous allons créer un script qui ouvre proprement la session tmux en arrière-plan.

su - bricksync
nano /home/bricksync/start_bricksync.sh

Collez le code suivant dans l'éditeur, enregistrez avec CTRL + O (puis Entrée), et quittez avec CTRL + X :

#!/bin/bash
# ==============================================================================
# Script: start_bricksync.sh
# Description: Démarre Bricksync dans une session tmux détachée.
#              Vérifie si une session existe déjà pour éviter une double 
#              exécution.
# ==============================================================================

SESSION="bricksync"
APP="/home/bricksync/bricksync-linux64/bricksync"

if ! tmux has-session -t "$SESSION" 2>/dev/null; then
    tmux new-session -d -s "$SESSION" "$APP"
    echo "Bricksync démarré dans la session tmux '$SESSION'."
else
    echo "La session tmux '$SESSION' est déjà en cours d'exécution."
fi

Ensuite, rendez le script exécutable :

chmod +x /home/bricksync/start_bricksync.sh

3 Configurer le service Systemd

Pour que le serveur sache qu'il doit traiter ce script comme un service système, nous allons créer un fichier de service. Attention : Vous devez être connecté en tant que root pour cette étape.

exit
nano /etc/systemd/system/bricksync.service

Collez ce bloc dans le fichier et enregistrez à nouveau avec CTRL + O et CTRL + X :

[Unit]
Description=Bricksync 24/7 Service (tmux)
After=network.target

[Service]
Type=forking
User=bricksync
Group=bricksync
WorkingDirectory=/home/bricksync/bricksync-linux64
ExecStart=/home/bricksync/start_bricksync.sh
ExecStop=/usr/bin/tmux kill-session -t bricksync
Restart=always
RestartSec=5
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Environment=HOME=/home/bricksync

[Install]
WantedBy=multi-user.target

Indiquez au système qu'il y a de nouveaux services et activez le démarrage automatique :

sudo systemctl daemon-reload
sudo systemctl enable bricksync.service
sudo systemctl start bricksync.service

4 Utilisation et contrôle de tmux

Bricksync fonctionne désormais en toute sécurité en arrière-plan. Si vous souhaitez entrer des commandes (telles que blmaster), vous devez vous attacher à la session tmux en cours d'exécution. Connectez-vous en tant qu'utilisateur bricksync pour ce faire.

su - bricksync
tmux attach -t bricksync
Très important en quittant :
Lorsque vous avez terminé, vous ne devez pas simplement fermer la fenêtre avec le X ou appuyer sur CTRL+C !
Pour laisser la session s'exécuter en arrière-plan, appuyez successivement sur :

CTRL + B (relâchez les deux) puis D (pour "detach").

5 Sauvegarde locale

Avant de supprimer automatiquement les anciens fichiers sur le serveur à l'étape suivante, vous devriez les sauvegarder localement sur votre ordinateur. Cela vous permet d'avoir tous les fichiers de commandes (.bsx) et les sauvegardes à portée de main au cas où vous auriez besoin d'examiner des incohérences ("Pièces perdues") dans votre boutique.

Pour les utilisateurs Mac / Linux :
Ouvrez le terminal sur votre ordinateur local (et non sur le serveur) et utilisez cette commande pour rapatrier l'intégralité du dossier de données sur votre bureau :

rsync -avz -e ssh root@<VOTRE_IP_SERVEUR>:/home/bricksync/bricksync-linux64/data/ ~/Desktop/Bricksync-Backup/

(Remplacez <VOTRE_IP_SERVEUR> par la véritable adresse IP de votre serveur.)

Pour les utilisateurs Windows :
Si vous n'utilisez pas le sous-système Windows pour Linux (WSL), téléchargez simplement le programme gratuit WinSCP ou FileZilla. Connectez-vous avec vos données de serveur et glissez simplement les dossiers backups et orders sur votre bureau.

6 Bonus : Nettoyage automatique

Pour éviter que les sauvegardes Bricksync et les fichiers de commande ne remplissent le disque dur de votre serveur au fil des mois, vous pouvez utiliser ce script de nettoyage.

nano /home/bricksync/cleanup_bricksync.sh
#!/bin/bash
BASE_DIR="/home/bricksync/bricksync-linux64/data"
BACKUPS_DIR="$BASE_DIR/backups"
ORDERS_DIR="$BASE_DIR/orders"

# Supprime les fichiers/dossiers plus vieux que 7 jours.
DAYS_TO_KEEP=7

echo "=== Nettoyage Bricksync démarré : $(date) ==="

# 1. Supprimer les anciens dossiers de sauvegarde
find "$BACKUPS_DIR" -mindepth 1 -maxdepth 1 -type d -mtime +$DAYS_TO_KEEP -exec rm -rf {} \;

# 2. Supprimer les anciens fichiers de commande (.bsx)
find "$ORDERS_DIR" -type f -name "*.bsx" -mtime +$DAYS_TO_KEEP -exec rm -f {} \;

echo "Espace disque après nettoyage :"
df -h "$BASE_DIR"
echo "=== Nettoyage Bricksync terminé ==="

Rendez le script exécutable et testez-le :

chmod +x /home/bricksync/cleanup_bricksync.sh
./cleanup_bricksync.sh

Astuce : Vous pouvez exécuter ce script manuellement après avoir récupéré votre sauvegarde locale à l'étape 5. Alternativement, vous pouvez le mettre dans une tâche planifiée (cronjob) si vous sauvegardez automatiquement vos données localement chaque semaine de toute façon.