Ce guide a pour objectif de transmettre la marche à suivre détaillée de l’installation et la configuration d’une serveur Cloud personnel en s’appuyant sur un système de type ODROID HC4.
Ce serveur a pour objectif premier d’être le concentrateur et la sauvegarde de l’ensemble des données d’une famille. Le deuxième objectif est de sécuriser et sauvegarder l’ensemble de ces données pour les pérenniser dans le temps. Cahier des charges à la base de ce guide :
Odroid est une marque de la société coréenne HardKernel qui développe et fabrique des ordinateurs monocartes. C’est un des concurrents de la gamme RaspBerry PI. La société a développé plusieurs gammes avec différents types de processeur. Ce guide va surtout se porter sur le HC4 qui fait partie de la gamme qui est conçu pour créer de petit serveur (HC1, HC2).
Odroid HC4 est une plateforme HomeCloud basée sur un processeur quadricoeur Cortex-A55 de 1,8Ghz de faible consommation et possédant 4Go de RAM DDR4. Ce serveur vous permet de mettre en place un système de type RAID 0 ou RAID1 (Ne sera pas utilisé et décrit dans ce guide).
Caractéristiques principales :
Pour la création du cloud personnel, ce serveur va être basé sur la solution NEXTCLOUD. Nextcloud est un logiciel libre de site d’hébergement de fichier et une plateforme de collaboration accessible depuis une interface Web. C’est un fork de Owncloud. De plus c’est une suite qui est fortement suivi et qui évolue en permanence. Les principales caractéristiques qui vont nous intéresser :
Les autres caractéristiques :
Le matériel nécessaire pour la réalisation de ce serveur :
A | CPU (Amlogic S905X3) | H | 2x System LED indicators |
B | DDR4 memory (4GiB) | I | 1x UART for system console |
C | 2x SATA ports | J | 1x IR receiver |
D | 1x RJ45 Ethernet port (10/100/1000) | K | 5x GPIO pins (for optional OLED display) |
E | 1x HDMI 2.0 | L | 1x Micro SD slot |
F | 1x USB 2.0 host port | M | 1x Cooling fan |
G | 1x DC power jack (Outer diameter : 5.5mm, inner diameter 2.1mm) | N | 1x Boot switch |
Ce serveur va être basé sur des solutions logicielles qui sont administrables via une interface Web.
Logiciel | Description |
---|---|
Webmin | Webmim permet d’administrer son système Linux à travers d’une interface WEB |
MariaDB | Solution de base de données basé sur un serveur SQL |
PHPMyadmin | Site WEB qui permet d’administrer les bases de données du serveur |
Nextcloud | Solution de Cloud basé sur un site Web |
Jellyfin | Solution de partage des fichiers sur réseau DLNA/UPNP |
LED de la carte réseau :
LED de carte mère :
Le bouton de reboot manuel se situe sous le boîtier (Position N)
shutdown -h now
Shutdown -r now
su user
Avant toute connexion de votre HC4 sur le réseau, récupérer l’adresse MAC qui se situe sur le dos de l’appareil. Ensuite se connecter au routeur de la box internet et adresser une adresse IP statique au niveau de la configuration DHCP.
Avec un outil de connexion SSH comme PuttY en utilisant l’adresse IP et le port 22. L’identifiant pour la première connexion est root avec le mot de passe odroid. Une fois connecter il est nécessaire de changer le mot de passe.
passwd
Passer sur l’utilisateur root
su
Installer le pack langue Française
apt install language-pack-fr update-locale LANG=fr_FR.UTF-8 LANGUAGE=fr_FR dpkg-reconfigure locales
Redémarrer le serveur et vérifier les valeurs locales
locale
Pour changer le nom du serveur, ouvrir le fichier hostname et modifier le nom
sudo nano /etc/hostname
Vérifier et remplacer si nécessaire le nom dans le fichier hosts
sudo nano /etc/hosts
Relancer le serveur pour la prise en compte
Installer le dépôt
sudo nano /etc/apt/sources.list
Ajouter la ligne ci-dessous à la fin du fichier et sauvegarder
deb http://download.webmin.com/download/repository sarge contrib
Ajouter la clé GPG
wget -O- http://www.webmin.com/jcameron-key.asc | sudo apt-key add -
Mise à jour des paquets
sudo apt update
Installation de Webmin
sudo apt install webmin
Maintenant il est possible de se connecter à Webmin sur l’adresse réseau https://ServeurHC4_IP_Adresse:10000 Les identifiants sont les mêmes que sur l’OS donc à ce stade uniquement root avec son mot de passe.
Utiliser Webmin en allant dans le menu ⇒ Système\Utilisateurs et groupes Cliquer sur créer un nouvel utilisateur Sélectionner le groupe primaire root et forcer le changement de mot de passe à la prochaine connexion. Une fois enregistrer lancer dans la console
su MonUtilisateur
Le système vous demandera de changer le mot de passe. Maintenant ajouter votre nouvel utilisateur dans le groupe des sudoers. Ouvrir le fichier de configuration /etc/sudoers et ajouter MonUtilisateur dans les utilisateurs définis comme sudoers et mettre en commentaire l’utilisateur root.
Afin de mieux sécuriser le serveur, nous allons interdire à l’utilisateur root de se connecter via ssh.
Ouvrir avec le gestionnaire de fichier Webmin le fichier de configuration /etc/ssh/sshd_config et définir le paramètre PermitRootLogin avec la valeur no et enregistrer le fichier et redémarrer via webmin\système\démarrage et arrêt le service ssh.
Utiliser Webmin en allant dans le menu ⇒ Système\Utilisateurs et groupes Cliquer sur créer un nouvel utilisateur Sélectionner le groupe primaire root et forcer le changement de mot de passe à la prochaine connexion. Une fois enregistrer lancer dans la console
su MonUtilisateur
Le système vous demandera de changer le mot de passe.
Ensuite nous allons intégrer cet utilisateur aux utilisateurs Webmin.
Ce paquet va nous permettre d’installer les outils basés sur la technologie SMART. Cette technologie est un protocole qui permet de suivre et contrôler l'état des disques durs entiers.
Pour l’installer nous allons maintenant utiliser Webmin (Cf. Chp III §1.2) et installer le composant APT smartmontools. Maintenant les données SMART seront visibles dans Webmin au niveau du Menu ⇒ Modules inutilisés/Etat du lecteur SMART.
Su root Shutdown -h now
Actuellement les disques dur ont de plus grande capacité, le partitionnement avec une table DOS limite la capacité d’une partition à 2To. Il est donc nécessaire de mettre une table une table de partition de type GPT.
su root parted /dev/sda mklabel GPT mkpart primary 4096 100 % q
4096 correspond au sector size physical de votre disque dur. Pour le déterminer lancer la commande
parted -l
Créer le système de fichier de type ext4
Monter la partition à la racine de Linux
Si tout est OK Webmin redirige vers la page Système\Montages disques et réseaux où le nouveau répertoire sera créé.
Le serveur WEB sera composé des logiciels suivants :
Dans la console
sudo apt-get update sudo apt install apache2 php libapache2-mod-php php-mysql sudo apt install php-imagick php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp
Installer Mariadb
sudo apt-get install software-properties-common sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mariadb.mirrors.ovh.net/MariaDB/repo/10.5/ubuntu focal main' sudo apt update sudo apt install mariadb-server
Afin de vérifier le bon fonctionnement d’apache connecter cous sur la page web par défaut en tapant dans votre navigateur web http://IP_Address_Server.
Activation du module SSL d’apache.
sudo a2enmod ssl sudo a2ensite default-ssl sudo a2enmod headers sudo systemctl reload apache2
Maintenant vous pouvez accéder à la page https://IP_Address_Server.
Ensuite désactiver les sites par défaut
cd /etc/apache2/sites-available sudo a2dissite 000-default.conf sudo a2dissite default-ssl.conf sudo systemctl reload apache2
Vous pouvez vérifier que le répertoire des sites activé est vide et qu’il n’est plus possible de se connecter au sites http://IP_Address_Server et https://IP_Address_Server
cd /etc/apache2/sites-enabled ls
Pour sécuriser la base de données il est nécessaire de créer un utilisateur avec les droits d’administrateur.
sudo mariadb
Dès que la connexion à MariaDB est active
GRANT ALL ON *.* TO 'NomAdmin'@'localhost' IDENTIFIED BY 'MonMotdePasse' WITH GRANT OPTION; FLUSH PRIVILEGES;
Lancer l’outil de sécurisation de la base de données
sudo mysql_secure_installation
Créer le certificat SSL du serveur
sudo openssl req -newkey rsa:2048 -days 365000 -nodes -keyout server-key.pem -out server-req.pem
Vérifier la configuration SSL de MariaDB
su mariadb MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';
Créer un certificat SSL
cd /etc/mysql sudo mkdir ssl cd ssl su
Créer la nouvelle clé CA
sudo openssl genrsa 4096 > ca-key.pem
Générer le certificat avec cette clé
sudo openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem
Créer le certificat SSL du serveur
sudo openssl req -newkey rsa:2048 -days 365000 -nodes -keyout server-key.pem -out server-req.pem
Créer la clé RSA
sudo openssl rsa -in server-key.pem -out server-key.pem
Signer le certificat du serveur
sudo openssl x509 -req -in server-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
Créer le certificat client
sudo openssl req -newkey rsa:2048 -days 365000 -nodes -keyout client-key.pem -out client-req.pem
Créer la clé RSA
sudo openssl rsa -in client-key.pem -out client-key.pem
Signer le certificat client
sudo openssl x509 -req -in client-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
Vérifier les certificats
openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
Les fichiers créés sur votre serveur doivent être : ca-cert.pem ca-key.pem server-cert.pem server-key.pem server-req.pem client-cert.pem client-key.pem
Changer les droits des fichiers
sudo chown -Rv mysql:mysql /etc/mysql/ssl/
Configurer le serveur MariaDB
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf [mysqld] ssl-ca = /etc/mysql/ssl/ca-cert.pem ssl-cert = /etc/mysql/ssl/server-cert.pem ssl-key = /etc/mysql/ssl/server-key.pem ssl = on
Configurer le client MariaDB
sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf [mysql] ssl-ca = /etc/mysql/ssl/ca-cert.pem ssl-cert = /etc/mysql/ssl/client-cert.pem ssl-key = /etc/mysql/ssl/client-key.pem
Redémarrer le service mariadb.service (Utiliser Webmin ⇒Système\Démarrage Arrêt)
Vérifier la prise en charge SSL de MariaDB
mariadb MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';
cd /tmp
Télécharger la dernière version de phpmyadmin
sudo wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.tar.gz
Avec l'outil Webmin ⇒ Outil\Gestionnaire de fichier
Phpmyadmin étant un site avec une fonction d’administration de la machine nous allons la faire pointer sur un port différent du port SSL par défaut (443).
Modifier la configuration des ports d’écoute d’apache
sudo nano /etc/apache2/ports.conf Listen 80 <IfModule ssl_module> Listen 443 Listen MonPort </IfModule> <IfModule mod_gnutls.c> Listen 443 Listen MonPort </IfModule>
Créer le virtualHost dédié à PhpMyadmin
cd /etc/apache2/sites-available Copier le fichier ssl par défaut d’apache et le modifier sudo cp default-ssl.conf phpmyadmin.conf sudo nano phpmyadmin.conf <VirtualHost _default_:monport> ServerAdmin webmaster@localhost ServerName phpmyadmin Alias "/phpmyadmin" "/var/www/phpmyadmin" DocumentRoot /var/www/phpmyadmin <Directory /var/www/phpmyadmin> Options Indexes FollowSymLinks MultiViews DirectoryIndex index.php AllowOverride All Require all granted Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/phpmyadmin.error.log CustomLog ${APACHE_LOG_DIR}/phpmyadmin.access.log combined
Activer phpmyadmin dans apache
sudo a2ensite phpmyadmin.conf
Redémarrer apache
systemctl reload apache2
Maintenant PhpMyadmin est accessible sur l’adresse https://IP_Address:MonPort/phpmyadmin
Créer un fichier htaccess qui ajoutera une authentification (Les actions sont réalisables via le gestionnaire de fichier de Webmin)
sudo nano /var/www/phpmyadmin/.htaccess AuthType Basic AuthName "Accès restreint à PhpMyAdmin" AuthUserFile /etc/phpmyadmin.htpasswd Require valid-user
Donner à l’utilisateur www-data le contrôle du fichier
sudo chown www-data.www-data /var/www/phpmyadmin/.htaccess sudo htpasswd -c /etc/phpmyadmin.htpasswd NomMonAdministrateur
Redémarrer apache
systemctl reload apache2
Lors de l’accès au site https://IP_Address:MonPort/phpmyadmin apache demandera une authentification complémentaire.
Créer le fichier config.inc.php
cd /var/www/phpmyadmin sudo cp config.sample.inc.php config.inc.php
Ouvrir le fichier config.inc.php
sudo nano /var/www/phpmyadmin/config.inc.php
Ajouter un code de 32 caractères pour sécuriser le cookie
$cfg['blowfish_secret'] = 'Mettre32caracteresAleatoires'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Si le répertoire tmp n’existe pas, créer un répertoire /tmp
cd /var/www/phpmyadmin sudo mkdir tmp -m 777
Télécharger nextcloud
cd /tmp sudo wget https://download.nextcloud.com/server/releases/nextcloud-20.0.7.tar.bz2
Dézipper le fichier
sudo tar -xvf nextcloud-20.0.6.tar.bz2
Déplacer les fichiers dans le répertoire /var/www/nextcloud
sudo mv nextcloud /var/www/nextcloud
Donner les droits du répertoire à www-data
sudo chown -R www-data.www-data /var/www/nextcloud/
Créer le virtualHost dédié à Nextcloud
cd /etc/apache2/sites-available sudo cp phpmyadmin.conf nextcloud.conf sudo nano nextcloud.conf <VirtualHost *:443> ServerAdmin webmaster@localhost ServerName nextcloud Alias "/nextcloud" "/var/www/nextcloud" DocumentRoot /var/www/nextcloud <Directory /var/www/nextcloud> Options Indexes FollowSymLinks MultiViews DirectoryIndex index.php AllowOverride All Require all granted Allow from all <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud Satisfy Any </Directory> Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav ErrorLog ${APACHE_LOG_DIR}/nextcloud.error.log CustomLog ${APACHE_LOG_DIR}/nextcloud.access.log combined </VirtualHost>
Créer un VirtualHost pour rediriger le port 80 sur le port 443
sudo nano nextcloud_redirect80.conf <VirtualHost *:80> ServerName mondomaine.fr Redirect permanent / https://mondomaine.fr <Directory /var/www/html> Order Deny,Allow Deny from all Options None AllowOverride None </Directory> </VirtualHost>
Activer le site Nextcloud et nextcloud_redirect80 dans apache
sudo a2ensite nextcloud.conf sudo a2ensite nextcloud_redirect80.conf
Redémarrer apache
systemctl reload apache2
Modifier les droits du répertoire NEXTCLOUDDATAS
sudo chown www-data:www-data /NEXTCLOUDDATAS -R
Lancer Nextcloud en se connectant au site https://Mondomaine.fr Indiquer :
Une fois l’installation terminée, il est possible de se connecter avec le compte administrateur. Aller dans le menu /Paramètres/Administration/Vue d’ensemble. Il est possible de voir tous les problèmes de configuration et de sécurité.
Ouvrir avec Webmin /Outil/Configuration ou directement via sudo nano /etc/php/7.4/apache2/php.ini la configuration PHP. Remplacer la valeur de memory_limit avec la valeur 512.
Redémarrer apache systemctl reload apache2
Rafraîchir la page pour vérifier la disparition du message Nextcloud.
Ajouter dans le fichier /etc/apache2/sites-available/nextcloud.conf
Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav
Modifier le fichier situé dans le répertoire /nextcloud/conf/config.php
array ( 0 => '192.xxx.xxx.xxx', 1 => 'MonDomaine.fr',
L'ajout d'index dans de grandes tables peut prendre un certain temps. Elles ne sont donc pas ajoutées automatiquement.
cd /var/www/nextcloud sudo -u www-data php occ db:add-missing-indices
Ajouter à la fin du fichier /etc/apache2/sites-available/nextcloud.conf
<IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" </IfModule>
Redémarrer apache
systemctl reload apache2
Nous allons utiliser le server redis. Installer avec webmin le paquet apt redis-server Installer ensuite le paquet apt php-redis
Modifier le fichier /etc/php/7.4/apache2/php.ini Ajouter la ligne extension = redis.so
Modifier le fichier /var/www/nextcloud/config/config.php
'memcache.local' => '\OC\Memcache\Redis', /* contient les scripts php précompilés */ 'filelocking.enabled' => 'true', 'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array ( 'host' => 'localhost', 'port' => 6379, 'timeout' => 0, 'dbindex' => 0, ),
NEXTCLOUD utilise un script qui modifie régulièrement les droits des répertoires qu’il utilise. Afin de bloquer ce script ajouter dans le fichier de /var/www/nextcloud/config/config.php ajouter la ligne suivante :
'check_data_directory_permissions' ⇒ false,
NEXTCLOUD bloque par défaut le téléchargement des fichiers « .htaccess ». Vous pouvez également ajouter des filtres ou les supprimer.
Pour désactiver le filtre sur .htaccess, ajouter la ligne suivante dans le fichier /var/www/nextcloud/config/config.php
'blacklisted_files' => array(),
NEXTCLOUD est par défaut dans la langue anglaise (interface, mails,…). Afin de définir par défaut la langue française, éditer avec le gestionnaire de fichier webmin, le fichier /var/www/nextcloud/config/config.php et ajouter la ligne suivante :
'default_language' => 'fr', 'default_locale' => 'fr_FR',
Modifier le fichier situé dans le répertoire /nextcloud/conf/config.php
'default_phone_region' => 'FR',
Installer les modules linux php-imagick et imagemagick
sudo apt install php-imagick imagemagick
Pour résoudre le problème, il faut aller dans la base de données de votre instance nextcloud. Il faut ensuite chercher la table oc_appconfig puis chercher les valeurs dont appid = fichiers_externe, configkey = user_certificates_scan, configvalue = no-run-yet. Supprimez la valeur “no-run-yet” et le tour est joué.
UPDATE `oc_appconfig` SET `configvalue` = '' WHERE `oc_appconfig`.`appid` = 'files_external' AND `oc_appconfig`.`configkey` = 'user_certificate_scan'
Installer cerbot :
sudo apt install certbot python3-certbot-apache
Réclamer le certificat Let’s Encrypt
sudo certbot --apache --agree-tos --redirect --staple-ocsp --email votre_email@example.com -d nextcloud.example.com
Sélectionner le virtualhost nextcloud.conf et finaliser l'opération
Mettre à jour votre page web et vérifier avec votre navigateur que le certificat est bien activé.
Nextcloud a besoin d’exécuter régulièrement des tâches pour son fonctionnement. La méthode AJAX nécessite une connexion régulière des utilisateurs pour que les tâches s’exécutent. Il est donc recommandé d’utiliser CRON pour exécuter en autonomie et régulièrement les tâches.
Lancer l’interface Webmin et naviguer dans système/Tâches CRON
Créer une nouvelle tâche en renseignant les champs ci-dessous :
Se connecter à Nextcloud en tant qu’administrateur. Dans le menu Paramètres/Paramètres de base sélectionner le mode CRON.
Installer le transport HTTPS pour APT si vous ne l'avez pas déjà fait:
sudo apt install apt-transport-https
Activer le référentiel Universe pour obtenir toutes les dépendances FFMpeg:
sudo add-apt-repository universe
Importer la clé de signature GPG (signée par l'équipe Jellyfin):
wget -O - https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | sudo apt-key add -
Ajouter le dépôt /etc/apt/sources.list.d/jellyfin.list:
echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/ubuntu $( lsb_release -c -s ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
Mise à jour des dépôts :
sudo apt update
Installer Jellyfin:
sudo apt install jellyfin
Avant de lancer Jellyfin, il est nécessaire de déterminer les répertoires à partager sur le réseau et définir les droits de chaque dossier pour que Jellyfin puisse y accéder.
Il est possible de créer un nouveau répertoire sur le serveur et de l’intégrer dans Jellyfin. Il sera nécessaire dans ce cas de définir le propriétaire et le groupe en tant que jellyfin:jellyfin.
L’objectif de ce serveur est de tout stocker dans le répertoire NEXTCLOUDDATAS. Ce répertoire doit toujours garder les droits de l’utilisateur www-data et du groupe www-data pour que Nextcloud via le serveur Apache puisse y accéder et le modifier.
Il est déconseillé pour des raisons de sécurité de donner tous les droits à Jellyfin sur le répertoire NEXTCLOUDDATAS. Il est donc nécessaire de configurer les droits uniquement des dossiers publics (ou privés) que nous allons mettre à disposition sur le réseau via DLNA/Upnp.
Assurez-vous d’avoir tout d’abord désactivé les changements de droits automatiques que réalise Nextcloud (cf § II 11.2 – 7)
Ensuite avec le gestionnaire de fichier de Webmin, modifier toute l'arborescence de vos répertoires partagés comme ci-dessous:
Pour configurer Jellyfin, se connecter via l’adresse http://IP_Monserveur:8096.
Pour cette première connexion jellyfin vous propose le setup wizard.
Sélectionner votre langue préférée :
Ensuite paramétrer l'utilisateur qui sera administrateur de Jellyfin et définir un mot de passe :
Maintenant nous allons définir les différentes librairies.
Ajouter vos répertoires publics. Sélectionner le type de contenu ainsi que le nom d’affichage.
Ensuite cliquer sur ajouter un dossier. Si les droits des répertoires ont bien été configurés, sélectionner le répertoire souhaité en utilisant les répertoires proposés par Jellyfin. Dans notre configuration les liens doivent ressembler à /NEXTCLOUDDATAS/UtilisateurNextcloud/files/Repertoire_Partage.
Sélectionner la langue pour les métadonnées
Configurer l’accès à distance. Attention si vous autorisez l’accès à distance, il faudra ouvrir le port 8096 vers l’extérieur sur votre routeur ou votre box.
Le serveur est maintenant prêt et visible par vos équipements upnp.
L’objectif du Pare-feu dans cette configuration sera de bloquer le maximum de communication avec le serveur tout en laissant à minima une machine (physique ou virtuelle) pour se connecter au serveur et la connexion aux applications essentielles au cloud comme Nextcloud Pour simplifier la configuration, nous utiliserons l’outil ufw.
Installer via Webmin le paquet ufw
Pour visualiser les règles dans l’utilitaire de Pare-feu de Webmin, aller dans la configuration Webmin du Pare-feu Linux et modifier le chemin du fichier des règles en indiquant pour IPv4 le chemin /etc/ufw/user.rules et pour IPv6 le chemin /etc/ufw/user6.rules.
Attention, l’activation du Pare-feu va bloquer toutes les connexions avec le serveur. Il est donc nécessaire avant de l’activer, d’autoriser l’ordinateur avec lequel vous vous connectez au serveur.
sudo ufw allow from Addresse_IP_Ordinateur comment "Ordinateur client maitre"
Vérifier dans l’interface Webmin/Pare-feu Linux que la règle est bien enregistrée. Il est aussi possible de vérifier en ouvrant directement le fichier de configuration /etc/ufw/user.rules par la commande :
nano /etc/ufw/user.rules
Ensuite vous pouvez activer le Firewall
sudo ufw enable
Pour vérifier les règles il est nécessaire d’utiliser l’instruction
sudo ufw status verbose
Autoriser les connexions entrantes et sortantes sur les ports 80 et 443
sudo ufw allow in 80/tcp comment "Trafic HTTP" sudo ufw allow in 443/tcp comment "Trafic HTTPS" sudo ufw allow out 80/tcp comment "Trafic HTTP" sudo ufw allow out 443/tcp comment "Trafic HTTPS"
Configuration du pare-feu pour Jellyfin
sudo ufw allow in 1900/udp comment "Jellyfin Service Discovery" sudo ufw allow out 1900/udp comment "Jellyfin Service Discovery" sudo ufw allow in 7359/udp comment "Jellyfin Client Discovery" sudo ufw allow out 7359/udp comment "Jellyfin Client Discovery" sudo ufw allow 8096/tcp comment "Jellyfin HTTP Trafic"
Autoriser le Multicast pour la découverte Upnp/DLNA Dans un premier temps,vérifier le blocage de UFW en étudiant le log /var/log/ufw.log et en recherchant un message équivalent à celui ci-dessous :
[UFW BLOCK] IN=eth0 OUT= MAC=XX:...:XX SRC=172.16.255.254 DST=224.0.0.1 LEN=28 TOS=0x10 PREC=0x80 TTL=1 ID=0 DF PROTO=2
Intégrer la règle dans le pare-feu
sudo ufw allow in on eth0 from 172.16.255.254 to 224.0.0.1 comment 'Multicast'
Pour réaliser une image de votre carte microSD, il faudra installer un outil de type Win32DiskImager (Pour Windows).
Su root Shutdown -h now
Avant la mise à jour des logiciels, il est conseillé de réaliser une sauvegarde de votre système.
Pour vérifier s’il est nécessaire de mettre à jour le système, il suffit d’ouvrir le tableau de bord de Webmin.
Pour mettre à jour les packages, cliquez sur les mises à jour du tableau de bord ou dans se rendre dans le menu Webmin\ Mise à jour des packages logiciels.
Cliquez sur mettre à jour les paquets sélectionnés
Une fois la construction de la liste complète de mise à jour réalisée, lancer l’installation en cliquant sur Installer maintenant.
Pour vérifier s’il est nécessaire de mettre à jour Webmin, il suffit d’ouvrir le tableau de bord de Webmin. Webmin ayant été installé via un package ubuntu, la mise à jour se fera à l’identique de la mise à jour des paquets système. Cliquez sur Mettre à niveau Webmin Maintenant
Jellyfin ayant été installé via un package ubuntu, la mise à jour se fera à l’identique de la mise à jour des paquets système.
Nextcloud n’ayant pas été installé comme un paquet, la mise à jour va être réalisée directement depuis l’interface d’administration de Nextcloud.
Se connecter à Nextcloud en tant qu’administrateur puis se rendre dans le menu \Paramètres\Administration\Vue d’ensemble
Cliquez sur ouvrir le système de mise à jour
Cliquez sur start update. Nextcloud va alors passer en mode maintenance.
Une fois le téléchargement de la nouvelle version réalisée, l’updater va demander si vous voulez garder le mode de maintenance actif. Cliquez sur non.
Une fois terminé cliquez sur « Go back to your Nextcloud » pour être redirigé sur votre site Nextcloud.
Cliquez sur démarrer la mise à jour
L’utilisation du système génère beaucoup de fichiers temporaires qui finissent pas prendre beaucoup de place sur la partition du système. Afin de réduire cette place il est nécessaire de nettoyer régulièrement les fichiers. Pour cela, nous allons coupler l’utilitaire CRON avec un fichier batch.
Créer un fichier nettoyage.bash dans le répertoire de votre utilisateur /home/MonUtilisateur. Modifier les droits du fichier (740)
Éditer le fichier et Intégrer le code ci-dessous qui va permettre :
#!/bin/bash # Nettoyage des fichiers systèmes # Version 06/11/2021 # Nettoyage des paquets # Suppression des paquets périmés echo "Suppression des paquets périmés" apt-get autoclean # Suppression du cache des paquets echo "Suppression du cache des paquets" rm -r /var/cache/apt/archives/apt-fast apt-get clean #Suppression des paquets installés comme dépendances et devenus inutiles echo "Suppression des paquets installés comme dépendances et devenus inutiles" apt-get autoremove # Fin Nettoyage des paquets #Nettoyage des archives logs situés dans /var/log echo "Suppression de toutes les archives logs situés /var/log" find /var/log/ -type f -regex '.*\.[0-9]+\.gz$' -delete #Fin Nettoyage des archives logs situés dans /var/log #Nettoyage des journaux systèmes #Suppression des journaux situés dans le dossier /var/log/journal qui ont plus de 24h echo "Suppression des journaux situés dans le dossier /var/log/journal qui ont plus de 24h" journalctl --vacuum-time=1d > /dev/null 2>&1 #Fin Nettoyage des journaux systèmes #Nettoyage de Jellyfin #Suppression des fichiers de transcoage de Jellyfin echo "Suppression des fichiers de transcoage de Jellyfin" rm -rf /var/lib/jellyfin/transcodes/* #Fin Nettoyage de Jellyfin
Tester votre script :
./nettoyage.bash
Ou
bash nettoyage.bash