Standalone
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
- Un système d’exploitation basé sur Debian (par ex., Ubuntu, Debian)
- Un compte utilisateur avec des privilèges sudo
- Une connaissance de base de la ligne de commande
- 4 Go de RAM ou plus
- 2 cœurs de CPU ou plus
- 20 Go d’espace disque libre (plus si vous utilisez le core comme fournisseur de sauvegarde)
Dépendances
Vous devrez installer les dépendances suivantes :
curl
git
redis-server
python3.12
pip
ansible
Vous pouvez installer ces dépendances avec la commande suivante :
sudo apt update
sudo apt install -y curl git ansible
Installer redis-server
Vous pouvez installer redis-server
avec la commande suivante :
sudo apt install -y redis-server
Ensuite, démarrez et activez le service redis-server
:
sudo systemctl start redis
sudo systemctl enable redis
Install restic-server
Si vous souhaitez utiliser Frontdown comme fournisseur de sauvegarde, vous pouvez installer le serveur Restic avec la commande suivante :
wget https://github.com/restic/rest-server/releases/download/v0.13.0/rest-server_0.13.0_linux_amd64.tar.gz
tar -xvf rest-server_0.13.0_linux_amd64.tar.gz
sudo mv rest-server_0.13.0_linux_amd64/rest-server /usr/local/bin/
sudo chmod +x /usr/local/bin/rest-server
Configure Restic server
Avant de déployer le serveur REST de Restic, vous devez choisir le répertoire qui hébergera votre référentiel et vos données de sauvegarde.
Modifier le répertoire par défaut
/tmp/restic
, ce qui signifie que toutes les données seront perdues après un redémarrage si ce répertoire n’est pas modifié.rest-server --path /home/frontdown/backup --no-auth
Activer l’authentification
L’authentification du serveur REST de Restic est implémentée via un fichier .htpasswd Le serveur REST recherche ce fichier dans le même répertoire où les instantanés sont stockés.
sudo apt update
sudo apt-get install -y apache2-utils
Créez ensuite un fichier de mot de passe pour le serveur Restic :
htpasswd -B -c /home/frontdown/backup/.htpasswd frontdown
Activer les services Restic
Service systemd
Créez le fichier de service dans /etc/systemd/system/frontdown-provider.service
:
[Unit]
Description=Rest Server
After=syslog.target
After=network.target
Requires=frontdown-provider.socket
After=frontdown-provider.socket
[Service]
Type=simple
# You may prefer to use a different user or group on your system.
User=frontdown
Group=frontdown
ExecStart=/usr/local/bin/rest-server --path /home/frontdown/backup
Restart=always
RestartSec=5
# The following options are available (in systemd v247) to restrict the
# actions of the rest-server.
# As a whole, the purpose of these are to provide an additional layer of
# security by mitigating any unknown security vulnerabilities which may exist
# in rest-server or in the libraries, tools and operating system components
# which it relies upon.
# IMPORTANT!
# The following line must be customised to your individual requirements.
ReadWritePaths=/home/frontdown/backup/
# Makes created files group-readable, but inaccessible by others
UMask=027
# If your system doesn't support all of the features below (e.g. because of
# the use of an older version of systemd), you may wish to comment-out
# some of the lines below as appropriate.
CapabilityBoundingSet=
LockPersonality=true
MemoryDenyWriteExecute=true
NoNewPrivileges=yes
# As the listen socket is created by systemd via the rest-server.socket unit, it is
# no longer necessary for rest-server to have access to the host network namespace.
PrivateNetwork=yes
PrivateTmp=yes
PrivateDevices=true
PrivateUsers=true
ProtectSystem=strict
ProtectHome=yes
ProtectClock=true
ProtectControlGroups=true
ProtectKernelLogs=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectProc=invisible
#ProtectHostname=true
RemoveIPC=true
RestrictNamespaces=true
RestrictAddressFamilies=none
RestrictSUIDSGID=true
RestrictRealtime=true
# if your service crashes with "code=killed, status=31/SYS", you probably tried to run linux_i386 (32bit) binary on a amd64 host
SystemCallArchitectures=native
SystemCallFilter=@system-service
# Additionally, you may wish to use some of the systemd options documented in
# systemd.resource-control(5) to limit the CPU, memory, file-system I/O and
# network I/O that the rest-server is permitted to consume according to the
# individual requirements of your installation.
#CPUQuota=25%
#MemoryHigh=bytes
#MemoryMax=bytes
#MemorySwapMax=bytes
#TasksMax=N
#IOReadBandwidthMax=device bytes
#IOWriteBandwidthMax=device bytes
#IOReadIOPSMax=device IOPS, IOWriteIOPSMax=device IOPS
#IPAccounting=true
#IPAddressAllow=
[Install]
WantedBy=multi-user.target
Socket systemd
Créez le fichier de socket dans /etc/systemd/system/frontdown-provider.socket
:
[Socket]
ListenStream = 8000
[Install]
WantedBy = sockets.target
Démarrer le serveur Restic
Démarrez et activez les services au démarrage :
sudo systemctl daemon-reload
sudo systemctl start frontdown-provider.service
sudo systemctl enable frontdown-provider.service
Installation de Frontdown
Variables
export GROUP_NAME="frontdown-group"
export PROJECT_NAME="frontdown"
export USER_NAME="frontdown"
export CURENT_USER=$(whoami)
export PROJECT_DIR="/home/$USER_NAME/$PROJECT_NAME"
Créer un utilisateur
Pour plus de sécurité, nous recommandons de créer un nouvel utilisateur pour exécuter le core de Frontdown. Vous pouvez créer un nouvel utilisateur avec la commande suivante :
# Create a no login user
sudo useradd -m -r -s /usr/sbin/nologin -g "$GROUP_NAME" "$USER_NAME"
# Add current user to the group
sudo usermod -aG "$GROUP_NAME" "$CURENT_USER"
# Create the project directory and set the correct permissions
sudo mkdir -p "$PROJECT_DIR"
sudo chown -R "$USER_NAME:$USER_NAME" "$PROJECT_DIR"
sudo chmod -R 775 "$PROJECT_DIR"
Cloner Frontdown
Depuis le dépôt GitHub, clonez Frontdown :
git clone https://github.com/Frontdown24/frontdown-core.git "$PROJECT_DIR"
cd "$PROJECT_DIR"
Installer les packages Python
pip install -r requirements.txt
Migrer la base de données
Exécutez le script de migration. Vous pouvez modifier l’utilisateur et le mot de passe par défaut dans le fichier migrate.sh
file:
chmod +x ./bin/migrate.sh
./bin/migrate.sh
Créer le service Frontdown
Créez le fichier de service dans /etc/systemd/system/frontdown.service
:
[Unit]
Description=Frontdown Service
After=network.target
[Service]
Type=simple
ExecStart=uvicorn \
--workers 3 \
--host $HOST_IP \
--port $PORT \
frontdown.asgi:application
User=$USER
Group=$GROUP
WorkingDirectory=$PROJECT_DIR
Environment="PATH=/home/$USER/.local/bin"
Restart=always
[Install]
WantedBy=multi-user.target
Démarrer le service
Démarrez le service et activez-le au démarrage :
sudo systemctl daemon-reload
sudo systemctl start frontdown.service
sudo systemctl enable frontdown.service