/
2,460 Views0
Synology ds220+

Dans cet article, je vais vous montrer comment installer Ubuntu, Apache, MariaDB, PHP dans un environnement virtuel avec Virtual Machine Manager d’un NAS Synology. (Ce travail n’est pas fait avec Conatiner Manager). Vous allez aussi installer un certificat Let’s Encrypt pour accéder à votre installation (Apache / InvoiceNinja) grâce au protocole  HTTPS. Finalement, vous allez installer InvoiceNinja, qui est une application de facturation, de paiement et de gestion de workflow. Suivre ce lien pour en savoir plus sur les fonctionnalités

J’ai écris cet article au fur et à mesure de mes investigations pour arriver à mes fins, sans avoir une connaissance approfondie sur les VMM (Virtual Machine Manager) de Synology. Si vous découvrez une erreur ou une amélioration, je serai ravi d’avoir votre partage.

Cet exercie est réalisé avec un Macbook, un NAS synology DS220+ (DSM 7.2), dans un réseau local (Routeur WiFi de mon domicile). J’ai ajouté 4G de RAM à mon NAS (6G au total)

InvoiceNinja

InvoiceNinja est une application de facturation qui simplifie et facilite l’envoi de factures et la réception de paiements. Elle a une version gratuite et une version payante.

Prérequis

Vous devrez aussi avoir

  • Vous connaissez Ubuntu et vous savez l’installer ou/et de personaliser son installation. Vous connaissez l’outil ‘ufw’ d’ubuntu (Firewall). Je ne parlerai pas de ceci.
  • un nom de domaine avec la possibilité de créer un A Record dans votre zone DNS. Si vous n’avez pas de nom de domaine, dans votre console de votre NAS, vous pouvez créer un DDNS ce qui pourrait vous aider, mais je ne montrerai pas cette partie.
  • un accès à votre Routeur WiFi pour activer et configurer le port forwarding 443.
  • Attention: Mon NAS DS220+ n’a que 2G de RAM. Afin d’attribuer de la RAM à ma machine virtuelle sans qu’elle utilise la RAM actuelle, j’ai ajouté une barette de RAM de 4G à mon NAS.

Virtual Machine Manager (VMM)

Depuis votre NAS, ouvrez le centre de paquets et installer Virtual Machine Manager

Vous allez devoir créer une Cluster. J’ai réponse aux proposirions par défaut…

Téléchargement d’Ubuntu

Télécharger l’ISO de Ubuntu Server

Ouvrer Virtual Machine Manager et dirigez-vous dans l’onglet ‘images’ et ajoutez l’ISO d’Ubuntu

Création de votre VM

Créer votre machine virtuelle en suivant ces images:

 

Choisir Linux

 

Choisir la zone de stockage

Ci dessous:

  • Définissez le nombre de processeur que vous voulez donner à votre VM
  • Donnez au moins 2G à votre VM
  • Bien sélectionner ‘vga’. Ne pas garder la sélection ‘vmvga’

Définir un espace pour votre VM
Sélectionner un réseau

 

Sélectionner l’ISO que vous avez télécharger et sélection ‘oui’ à Autostart

Dans la prochaine fenêtre, sélectionnez les utilisateurs de votre NAS qui peuvent accéder à la VM, puis Cliquez suivant et confirmez le résumé.

Ensuite, quand votre VM est créé, mettez la sous tension et cliquez sur « Connecter ». Une fenêtre de votre navigateur va s’ouvrir et vous allez devoir installer Ubuntu.

Installation d’Apache et de MariaDB

Quand Ubuntu est installé, mettez le à jour

sudo apt update && sudo apt upgrade

Puis quand le processus est terminé, installer

apt install lsb-release unzip

Installation d’apache

sudo apt install apache2 apache2-utils

Vérifier que apache tourne

sudo service apache2 status
sudo service apache2 start # Démarrage d'apache
sudo service apache2 status

Modifier les permissions sur le dossier

sudo chown www-data:www-data /var/www/html/ -R

Installation de MariaDB

sudo apt install mariadb-server mariadb-client
sudo service mariadb status #Vérifiez le status
sudo service mariadb start #démarrer MariaDB si besoin

Saisisser la commande suivante et répondre aux questions

sudo mysql_secure_installation

Enter the current password for root: Saisisser un mot de passe pour root et confirmer-le
Switch to unix_socket authentification [Y/n]?: n
Change the root password [Y/n]?: n
Remove user anonimous account [Y/n]?; Y or press enter
Disable root login remotely [Y/n]?: Y
Remove test database and access to it) [Y/n]: Y
Reload privilege tables now [Y/n]: Y

Install php

sudo apt install php

Installation de  phpmyadmin

sudo apt install phpmyadmin

Répondez aux questions

Configure the database with dbconfig-common [yes/non]: yes
Web server to reconfigure automatically: 1

sudo service apache2 restart

Si vous n’arrivez pas à accéder à phpmyadmin, pas de soucis, on verra cela plus bas en créant un utilisateur dans la base de donnée.

Rendre vôtre VM accessible depuis l’extérieur

Pour ces parties, vous allez devoir faire preuve d’investigation, car mon hébergeur, ma boîte WiFi n’est pas forcément les mêmes que les vôtres. Je ne vais donc pas fournir des images ou écrire exactement mes étapes vu que nos interfaces diffèrent.

Dynamic DNS / Sous domaine

Vous allez avoir besoin de chercher et de relever l’adresse IP fournie à votre Routeur par votre fournisseur d’accès à internet (Orange, Sunrise, Salt, Swisscom, etc). Vous allez en avoir besoin plus loin.

Vous devez créer DDNS. Personnellement, je l’ai fais depuis mon hébergeur pour avoir quelque chose comme cela: invoice.mondomaine.ch

Redirections des ports

Vous devez vous rendre dans votre routeur WiFi qui s’accède généralement avec l’adresse 192.168.1.1. Rechercher l’onglet « redirection des ports » ou « Port forwarding » et créez une nouvelle entrée de la sorte

Container Manager Port Forwarding

Depuis votre routeur que vous pouvez connaitre l’adresse IP local qui est fourni à votre NAS par votre routeur.

Il est aussi fort recommandé de réserver cette adresse IP de manière à ce que votre routeur fournisse toujours la même adresse IP à votre VM, ou… qu’il ne la fournisse pas à un autre périphérique.

Proxy inversé (Reverse proxy)

Rendez-vous sur votre panneau de configuration) , puis Portail de connexion et sur l’onglet Avancé et cliquer sur proxy inversé, puis cliqué sur créé

Saissisez les informations suivantes

 

  • Source – Nom d’hôte: L’URL que cous avez créé plus haut (DDNS) pour accéder à votre NAS
  • Destination – Nom d’hôte: L’adresse IP de votre VM, fournie par votre routeur

A partir de maintenant votre machine virtuelle est accessible depuis l’extérieur. Mais si votre saisissez dans votre navigateur saisissez https://invoice.quelquechose.ch, vous allez avoir un message d’avertissement Warning: Potential Security Risk Ahead que vous allez devoir confirmer pour continuer. Ceci parce qu’il manque un certificat SSL.

Configuration de SSL (https)

Il faut maintenant que vous puissiez accéder à votre serveur apache de manière sécurisée. En d’autres de mots, vous devez pouvoir afficher la page d’apache par défaut, qui se trouve dans votre VM, depuis votre navigateur de manière sécurisée (https://invoice.mondomaine,ch) avec le protocole HTTPS

Certificat SSL

Rendez-vous sur votre panneau de configuration) , puis Securité et sur l’onglet Certificat. Ajouter un certifcat et suivez ces indications

  • Dans la première fenètre « Veuillez choisir une action », cocher ajouter un nouveau certificat
  • Dans la deuxième fenêtre « Veuillez choisir une action », donner une description et cocher Procurez-vous un certificat auprès de Let’s Encrypt
  • Dans la fenêtre « Procurez-vous un certificat auprès de Let’s Encrypt », saisissez le DDNS que vous avez créé plus haut (invoice.mondomaine.ch) et siasissez votre adresse e-mail. Laissez vide le dernier champ.
  • Cliquez « effectué »
  • Une fois que votre certificat est créé, sélectionnez-le et cliquez sur ‘paramètres’
  • Sous l’onglet Configurer, rechercher votre DDNS sous la colonne ‘service’ et assurez-vous quand la colonne ‘certificate’, le certificat que vous avez créé est bien sélectionné. Par défaut, cela ne l’est pas.

Si vous recevez un message d’erreur indiquant que votre VM n’est pas accessible, retournez dans la console de votre routeur WiFi et créez unenouvelle règle (port forwarding) pour le port 80 et activez provisoirement le redirection du port 80. Puis refermez le. Ci-dessous, l’adresse IP correspond à celle fournie à votre NAS.

Résultat

Vous pouvez tester maintenant. Si vous saisissez dans votre navigateur préféré https://invoice.mondomaine.ch, vous devriez voir la page apache de votre container! Bravo!!

Installation de InvoiceNinja

cd
mkdir Soft
cd Soft
wget https://github.com/invoiceninja/invoiceninja/releases/download/v5.10.43/invoiceninja.tar
sudo mkdir -p /var/www/invoiceninja/
sudo tar xf invoiceninja.tar -C /var/www/invoiceninja/
sudo chown www-data:www-data /var/www/invoiceninja/ -R

Il faut maintenant créer une base de donnée

sudo mysql
MariaDB [(none)]> create database invoiceninja;
MariaDB [(none)]> create user ninja@localhost identified by 'ninja_password';
MariaDB [(none)]> grant all privileges on invoiceninja.* to ninja@localhost;
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

Puis, il faut installer les modules PHP nécessaire à InvoiceNinja

sudo apt install php-imagick php8.3 php8.3-mysql php8.3-fpm php8.3-common php8.3-bcmath php8.3-gd php8.3-curl php8.3-zip php8.3-xml php8.3-mbstring php8.3-bz2 php8.3-intl php8.3-gmp

et redémarrer apache

sudo service apache2 restart

Configuration de Ninja

Commencer par copier le fichier .env.example, que vous allez modifier ensuite

cd /var/www/invoiceninja/
sudo cp .env.example .env #Copier et renommer
sudo nano .env #Editer le fichier

Rechercher les lignes suivantes et modifier les comme indiqué ci-dessous. (APP_URL doit avoir le sous-domaine que nous avons créé plus haut (A Record))

# APP_URL=http://localhost
APP_URL=https://invoice.mondomaine.ch
TRUSTED_PROXIES=*
REQUIRE_HTTPS=true

Puis, toujours dans le même fichier, modifier les lignes suivantes

DB_HOST=localhost
DB_DATABASE=invoiceninja # Moficier ici le nom de la base de donnée que vous avez créé plus haut
DB_USERNAME=ninja # Modifier ici le nom d'utilisateur que vous avez créé plus haut
DB_PASSWORD=ninja_password # et ici le mot de passe que vous avez défini pour cet utilisateur
DB_PORT=3306

Corriger les propriétés du fichier .env

sudo chown www-data:www-data /var/www/invoiceninja/.env

Ensuite, exécutez la commande suivante pour générer une clé d’application unique pour votre installation InvoiceNinja.

sudo php8.3 /var/www/invoiceninja/artisan key:generate

et migrez la dans la base de donnée

sudo php8.3 /var/www/invoiceninja/artisan migrate:fresh --seed

Cette commande va créer les tables dans votre base de données. Cette opération est relativement longue.

Correction de la configuration d’Apache

Nnous aimerions pour avoir accéder à l’application de facturation depuis l’URL https://invoice.mondomaine.ch

Pour cela, vous devez modifier la configuration d’appache. Etidez le fichier

sudo nano /etc/apache2/sites-available/invoice-ninja.conf

et coller ces lignes:

<VirtualHost *:80>
    ServerName invoice.mondomaine.ch 
    DocumentRoot /var/www/invoiceninja/public

    <Directory /var/www/invoiceninja/public>
       DirectoryIndex index.php
       Options +FollowSymLinks
       AllowOverride All
       Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/invoice-ninja.error.log
    CustomLog ${APACHE_LOG_DIR}/invoice-ninja.access.log combined

</VirtualHost>

Vérifier bien que ServerName correspond bien à votre domaine, comme vu plus haut. Sauver et fermer ce fichier, et activer ce virtual host

sudo a2ensite invoice-ninja.conf

On a besoin d’activer le rewrite module et de redémarrer Apache

sudo a2enmod rewrite
sudo service apache2 restart

Vous pouvez maintenant accéder à la page de l’assistant de configuration d’Invoice Ninja (invoice.mondomaine.ch/setup). Si vous voyez la page Apache par défaut au lieu de l’assistant de configuration, vous devez désactiver l’hôte virtuel par défaut.

sudo a2dissite 000-default.conf

Setup de InvoiceNinja

Vous pouvez maintenant lancer le setup de InvoiceNinja en suivant cette url https://invoice.mondomaine.ch. Cependant, j’ai rencontré une erreur « Blocked loading mixed active content »

Qu’est-ce que le contenu mixte ? Lorsqu’un utilisateur visite une page servie via HTTP, sa connexion est ouverte aux écoutes clandestines et aux attaques de l’homme du milieu (MITM). Lorsqu’un utilisateur visite une page servie via HTTPS, sa connexion avec le serveur Web est authentifiée et cryptée avec SSL et donc protégée contre les écoutes indiscrètes et les attaques MITM. Cependant, si une page HTTPS inclut du contenu HTTP, la partie HTTP peut être lue ou modifiée par des attaquants, même si la page principale est diffusée via HTTPS. Lorsqu’une page HTTPS a du contenu HTTP, nous appelons ce contenu « mixte ». La page Web que l’utilisateur visite n’est que partiellement cryptée, puisqu’une partie du contenu est récupérée en clair via HTTP. Le Mixed Content Blocker bloque certaines requêtes HTTP sur les pages HTTPS.

En d’autres mots, la page setup, fait appel à des fichiers CSS ou Javascipt avec le protocole HTTP alors que vous utiliser le protocole HTTPS.

J’ai résolu mon problème en modifiant cette ligne, dans le fichier .env (voir plus haut)

TRUSTED_PROXIES=*

 

Pour les dernières étapes, saisissez l’URL https://invoice.mondomaine,ch qui vous redirigera dans le setup. Il faudra donner les informations de votre base de données que nous avons défini plus haut. Il faudra aussiet surtout n’oubliez pas de cocher la case « HTTPS require »

InvoiceNinja setup

CRON

Vous devez encore configurer votre CRON pour vos rappels (etc) soient envoyés. Editez le fichier

sudo -u www-data crontab -e
# Ajouter la ligne suivante
* * * * * cd /var/www/invoiceninja && php artisan schedule:run >> /dev/null 2>&1

Références:

Leave Comment:

Nous soutenir

Newsletter

Inscrivez-vous à notre newsletter

Suivez-nous sur

fr_FRFrench