MaDoVi - Le wiki

Machines - Données - Virtualisation

Outils pour utilisateurs

Outils du site


tuto:autres:configuration_d_un_odroid_hc4

Configuration d'un Odroid HC4

Guide pour réaliser son cloud personnel avec un Odroid HC4


I Introduction

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.


1. Objectif du serveur et cahier des charges

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 :

  1. Synchroniser automatiquement les données des différents équipements de la famille (ordinateurs, les tablettes et les smartphones),
  2. Partager les données (Vidéos, Photos, Musiques, …) avec des utilisateurs autant de la famille que de l’extérieur,
  3. Utiliser des solutions logicielles répandues et facile à maintenir,
  4. Administrer le serveur depuis des espaces Web,
  5. Synchroniser les contacts et les agendas des différents équipements,
  6. Partager et distribuer sur le réseau local de la maison et ses équipements (TV, Hifi, …) en utilisant la norme UPNP/DLNA,
  7. Archiver les données sur un support physique,
  8. Sécuriser au maximum le serveur contre les éventuels attaques,
  9. Archiver automatiquement les données sur un serveur interne ou externe.

2. Odroid ?

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).

3. Descriptif du HC4

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 :

  • Processeur Amlogic S905X3
  • Mémoire DDR4 de 4 Go
  • 2 emplacements pour disque dur SATA 2,5  ou 3,5
  • 1 port Ethernet RJ45 10/100/1000
  • 1 port HDMI 2.0
  • 1 port USB 2.0
  • 1 Emplacement MicroSD
  • 1 prise d’alimentation DC 15 V / 4A (diamètre extérieur : 5,5 mm, diamètre intérieur :2,1 mm)

4. Le Cloud avec NEXTCLOUD

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 :

  • Interface Web accessible de partout et pouvant fonctionner par SSH,
  • Gestion des utilisateurs et de leurs droits,
  • Organisation des données sur le serveur selon chaque utilisateur,
  • Partage des données possible entre les différents utilisateurs,
  • Création de liens pour le partage de données,
  • Synchronisation des données sur Windows,
  • Synchronisation des données sur Android,
  • Synchronisation des données sur Linux,
  • Synchronisation des données sur MacOS,
  • Synchronisation des données de type CalDav,
  • Mise à jour réalisable depuis l’interface Web.

Les autres caractéristiques :

  • Implémentation d’extensions,
  • Réalisation de Tchat et de fil de discussion privé,
  • Possibilité de faire de la visioconférence privée et sécurisée,
  • Nombreuses interfaces dédiées pour les agendas, les mails, la musique les photos,..
  • Nombreux outils de collaboration, modification des documents en ligne, gestion de projet, carte mentale,..

II Installation

1 Installation

1.2 Architecture de l’installation générale

1.3 Descriptif du Matériel

Le matériel nécessaire pour la réalisation de ce serveur :

  • 1 Odroid HC4
  • 1 Câble d’alimentation DC 15V 4A
  • 1 Carte Microsd (16Go)
  • 1 Disque dur SATA (8TO)
  • 1 câble Odroid USB UART (Nécessaire en cas de perte de la connexion Ethernet avec le serveur)

ACPU (Amlogic S905X3)H2x System LED indicators
BDDR4 memory (4GiB)I1x UART for system console
C2x SATA portsJ1x IR receiver
D1x RJ45 Ethernet port (10/100/1000)K5x GPIO pins (for optional OLED display)
E1x HDMI 2.0L1x Micro SD slot
F1x USB 2.0 host portM1x Cooling fan
G1x DC power jack (Outer diameter : 5.5mm, inner diameter 2.1mm)N1x Boot switch

1.4 Les solutions logicielles qui vont être utilisées

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
PHPMyadminSite WEB qui permet d’administrer les bases de données du serveur
NextcloudSolution de Cloud basé sur un site Web
Jellyfin Solution de partage des fichiers sur réseau DLNA/UPNP

1.5 Les liens et informations de base pour le HC4

LED de la carte réseau :

  • Vert clignotant ⇒ trafic de données à une connexion 100 Mbps
  • Orange clignotant ⇒ trafic de données à une connexion 1000 Mbps

LED de carte mère :

  • Rouge Fixe ⇒ Voyant fixe lorsque l'alimentation CC est connectée
  • Rouge clignotant ⇒ Lecture ou écriture sur le disque
  • Bleu ⇒ Clignotant comme un battement de cœur pendant que le noyau fonctionne

Le bouton de reboot manuel se situe sous le boîtier (Position N)

1.6 Les commandes Linux à connaître

  • Arrêter le système
     shutdown -h now 
  • Rebooter son système
     Shutdown -r now 
  • Changer d’utilisateur
     su user 

2. Installation de l’OS sur la carte MicroSD

  1. Télécharger l’OS Ubuntu 20 04 Minimal dédié au HC4,
  2. Ouvrir Etcher, sélectionner l’image d’Ubuntu télécharger et sélectionner votre carte MicroSD

3. Configuration du HC4 sur le réseau LAN

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.

4. Connexion au serveur

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

4.1 Changer la langue du système

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

4.2 Changer le nom du serveur

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

5. Installation de Webmin

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.

6. Gérer l’administration du système

6.1 Créer un nouvel utilisateur de type admin

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.

6.2 Bloquer l’utilisateur root pour le mode SSH

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.

6.3 Créer un compte administrateur dans Webmin

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.

  • Aller dans le menu ⇒ Webmin\Utilisateurs Webmin
  • Créer un nouveau groupe de type administration (Ex : Webmin) et sélectionner tous les modules disponibles.

  • Toujours dans le menu ⇒ Webmin\Utilisateurs Webmin
  • Créer un nouvel utilisateur en utilisant le même nom que celui créé précédemment ( MonUtilisateur). Intégrer l’utilisateur dans le groupe précédemment créé (Webmin), indiquer l’authentification Unix et sélectionner la langue.

  • Se déconnecter et vérifier la connexion avec le nouvel utilisateur,
  • Si la connexion est OK, retourner dans le menu ⇒Webmin\Utilisateurs Webmin et supprimer l’utilisateur root. L’objectif est de sécuriser Webmin en supprimant les utilisateurs par défaut de l’application.

7. Installer SmartMonTools

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.

8. Installer Le disque dur

8.1 Connexion du disque dur

  • Arrêter le serveur,
Su root
Shutdown -h now
  • Installer votre disque dur et relancer le serveur,
  • Se connecter à Webmin et aller dans le menu ⇒ Webmin\Matériel\Partition sur disque local. Le nouveau disque doit apparaître.
  • Vous pouvez vérifier l’état de votre disque dur en cliquant sur status SMART

8.2 Changer le type de table de partition et créer une partition unique

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.

  • Installer via Webmin\Composants Logiciels le paquet apt parted
  • Dans la console de commande linux :
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

  • Sous Webmin ⇒ Matériel\Partitions sur disque local, sélectionner la partition créée sur votre disque dur.
  • Sélectionner le type de fichier ext4
  • Cliquer sur créer un système de fichier et valider

Monter la partition à la racine de Linux

  • Sous Webmin ⇒ Matériel\Partitions sur disque local, sélectionner la partition créée sur votre disque dur.
  • Monter la partition à la racine du système /NEXTCLOUDDATAS
  • Cliquer sur montez la partition et valider

Si tout est OK Webmin redirige vers la page Système\Montages disques et réseaux où le nouveau répertoire sera créé.

9 Installation du Serveur WEB (LAMP)

Le serveur WEB sera composé des logiciels suivants :

  • Apache ⇒ Serveur WEB
  • MariaDB ⇒ Serveur de base de données
  • PHP ⇒ Langage de script PHP

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.

9.1 Configuration de SSL sur d’apache

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

9.2 Configuration de MariaDB

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

9.3 Configuration de SSL

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%';

10 Installation de PHPMyAdmin

10.1 Installer PHPMyAdmin

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

  • Dézipper le fichier
  • Déplacer les fichiers dans le répertoire /var/www/phpmyadmin
  • Donner les droits du répertoire avec l'option récursif ⇒ www-data * Liste à puce

10.2 Configurer Apache

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

10.3 Sécuriser l’accès de 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.

10.4 Paramétrer PhpMyAdmin

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 

11 Installation de NEXTCLOUD

11.1 Installation

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

11.2 Configuration

Lancer Nextcloud en se connectant au site https://Mondomaine.fr Indiquer :

  • Le nom du compte administrateur et son mot de passe
  • Pour la connexion à la base de données, indiquer le nom du nouvel utilisateur avec son mot de passe et préciser l’host et son port.

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é.

1 - La limite de mémoire PHP est inférieure à la valeur recommandée de 512 Mo

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.

2 - La configuration du serveur web ne permet pas d'atteindre "/.well-known/caldav" et "/.well-known/carddav"

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
3 - Autoriser la connexion d’un domaine

Modifier le fichier situé dans le répertoire /nextcloud/conf/config.php

  array (
    0 => '192.xxx.xxx.xxx',
    1 => 'MonDomaine.fr',
4. -La base de données a quelques index manquants

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
5 - HTTP "Strict-Transport-Security" n'est pas configurée à au moins "15552000" s

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
6 - Ajouter un cache mémoire

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,
                ),
7 - Bloquer le changement des droits automatiques des répertoires gérés par NEXTCLOUD

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,

8 - Débloquer / Bloquer le téléchargement de certains types de fichier

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(),
9 - Changer la langue par défaut de Nextcloud

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',
10 - Changer le préfixe de région

Modifier le fichier situé dans le répertoire /nextcloud/conf/config.php

'default_phone_region' => 'FR',
11 - Le module php-imagick n’a aucun support SVG dans cette instance

Installer les modules linux php-imagick et imagemagick

sudo apt install php-imagick imagemagick
12 - Une tâche en arrière-plan qui vérifie les certificats SSL importés par l’utilisateur est en attente.

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' 

11.3 Mise en place du certificat SSL

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é.

11.4 Configuration des tâches de fond avec CRON

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.

1 - Configurer CRON

Lancer l’interface Webmin et naviguer dans système/Tâches CRON

Créer une nouvelle tâche en renseignant les champs ci-dessous :

  • Exécution en tant que www-data
  • Commande : php -f /var/www/nextcloud/cron.php
  • Sélectionner une programmation manuelle avec des intervalles de 5 minutes
  • Sauvegarder et lancer la tâche

2 - Configurer NEXTCLOUD

Se connecter à Nextcloud en tant qu’administrateur. Dans le menu Paramètres/Paramètres de base sélectionner le mode CRON.

12 Installation de JellyFin

12.1 Installation

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

12.2 Configuration des répertoires de partage

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:

  • NEXTCLOUDDATAS ⇒ 0755 (Sans récursif)
  • MonUtilisateurPublic ⇒0755 (Sans récursif)
  • files ⇒ 0755 (Avec Récursif si vous voulez partager tous les répertoires)

12.3 Configuration de Jellyfin

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.

13 Configuration du Pare-feu

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'

III Configuration et utilisation des logiciels

1. Configuration et utilisation de Webmin

1.1 Changement de la langue et du thème

  • Aller dans le menu⇒ Webmin\Change Language and Theme
  • Choisir la langue souhaitée. Une fois la langue sélectionnée vous pouvez et cocher la case « inclure les traductions automatiques »

1.2 Installer des paquets de type APT

  • Aller dans le menu⇒ Webmin\Système\Composants Logiciels
  • Sélectionner composant d’APT et cliquer sur rechercher pour trouver le paquet souhaité.
  • Cliquer sur installer pour lancer l’opération.

  • Valider l’installation

IV Administration et Maintenance du serveur

1. Réalisation d’une image de sauvegarde de la carte SD

1.1 Réaliser une image de la carte MicroSD

Pour réaliser une image de votre carte microSD, il faudra installer un outil de type Win32DiskImager (Pour Windows).

  • Arrêter votre serveur,
Su root
Shutdown -h now
  • Insérer la carte MicroSD sur votre lecteur PC,
  • Lancer Win32DiskImager,
  • Sélectionner le nom et le répertoire du fichier image puis le périphérique,
  • Lancer la lecture.

1.2 Restaurer une image MicroSD

  • Insérer la carte MicroSD sur votre lecteur PC,
  • Lancer Win32DiskImager ou Etcher,
  • Sélectionner l’image à restaurer et le périphérique MicroSD,
  • Lancer l’écriture,
  • Insérer la carte dans le serveur et le redémarrer.

2 Mise à jour des logiciels

Avant la mise à jour des logiciels, il est conseillé de réaliser une sauvegarde de votre système.

2.1 Mise à jour de Linux

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.

2.2 Mise à jour de Webmin

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

2.3 Mise à jour de JellyFin

Jellyfin ayant été installé via un package ubuntu, la mise à jour se fera à l’identique de la mise à jour des paquets système.

2.4 Mise à jour de Nextcloud

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

3 Nettoyage des fichiers systèmes

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.

3.1 Créer un script bash

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 :

  1. De nettoyer les paquets du système d’exploitation
  2. De nettoyer les journaux systèmes
  3. De nettoyer les fichiers logs
  4. Pour nettoyer les fichiers de transcodage Jellyfin (Même si Jellyfin le fait)
#!/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

3.2 Créer une tâche CRON

Utiliser l'interface Webmin et l’outil système CRON pour créer votre tâche.

Sélectionner L'utilisateur ayant les droits d'exécution et intégrer la commande : bash /home/MonUtilisateur/nettoyage.bash

Dans le cas ci-dessous une exécution tous les dimanches à 2h du matin.

tuto/autres/configuration_d_un_odroid_hc4.txt · Dernière modification : 07/11/2021 01:43 de eric