Standalone

Standalone

⚠️
Ce guide d’installation s’adresse aux utilisateurs expérimentés souhaitant une sécurité supplémentaire. Si vous n’êtes pas un utilisateur expert et que vous ne disposez pas d’une machine virtuelle dédiée, veuillez suivre le guide Installation avec Docker installation.

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

⚠️
Cette étape est facultative et peut être désactivée dans les paramètres de Frontdown.

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

🚫
Le répertoire par défaut pour les données est /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:

/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:

/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"
⚠️
Veuillez vous déconnecter et vous reconnecter pour appliquer les modifications de groupe.

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:

./bin/migrate.sh
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:

/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
Dernière modification