Mini réseau LXC – Version 1

Voici quelques notes pour la mise en place d’une infrastrcuture web sur un Kimsuffi avec LXC

Mini réseau web from scratch sous Debian 10 sous VPS OVH avec :

  • Serveur apache
  • Serveur mariadb

  • Proxmox node – 192.168.0.1
  • Container1 – Nginx reverse proxy – 192.168.0.2
  • Container2 – MySQL – 192.168.0.3

1 – Plan

Tutoriel pour l’installation d’une infrastructure web sur Kimsufi sous Proxmox

Voici les versions utilisé dans ce tutoriel :

  • PHP-FPM 7.3
  • MariaDB 10.4
  • Apache 2.4
  • Proxmox 6.0

Etape 0 : Louer votre VPS

Installer par défaut : Debian 10

A) BLOP-OVH-Proxmox

Etape 1 : Installer Proxmox

Installer proxmox sur le debian 10 (Ne pas utiliser l’ISO )

  • Installer proxmox en suivant le tuto : https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Buster
  • Désactiver la sources ci-dessous : dans le list.d
Shell

Etape 2 : Modification du VPS

Certaines modifications sont à effectuer sur un VPS OVH

  • Modifier le fichier /etc/cloud/templates/hosts.tmpl
  • change or remove the value of ‘manage_etc_hosts’ in /etc/cloud/cloud.cfg or cloud-config from user-data
  • Mettre “/etc/hosts” sur false :Manage_et_hosts :false
Shell

Etape 3 : Installation de fail2ban

apt install fail2ban

Etape 3 : Créer un bridge

Création d’une interface réseau factice qui sera utilisée pour la communication sur le réseau privé

  • Cliquez sur le nom du nœud
  • allez dans le panneau réseau sous système, vous devriez avoir par défaut deux passerelles Linux configurées, vmbr0 et vmbr1
  • Vmbr0 est l’interface avec votre IP publique configurée, configurez vmbr1 en double cliquant dessus. Entrez les mêmes paramètres que ci-dessous, vous devrez redémarrer le serveur pour que les paramètres soient activés.
     IP address : 192.168.0.1 / Subnet mask : 255.255.255.0

Vmbr0 : 192.168.1.1 et masque 255.255.255.0 pour le reste voir config de l’annexe 1

Etape 4 : Le NAT

Notre nœud Proxmox sera la passerelle permettant àu conteneur BLOP-OVH-CT-WEB l’Internet public par NAT. Nous utiliserons ensuite quelques règles de port-forwarding pour accéder aux conteneurs depuis l’Internet public. En fin de compte, nous enverrons toutes les requêtes http(s) au reverse proxy nginx qui les transmettra à l’un ou l’autre serveur en fonction du nom de domaine utilisé.

A mettre dans le /etc/network/interfaces

Shell

1 – Le réseau

  • Désactiver la sources ci-dessous : dans le /etc/apt/sources.list.d

3 – Créer les containers

Une fois l’installation de Proxmox terminée

Etape 1 : La connexion

  • Se connecter a l’interface graphique https://55.555.55:8006

Etape 2 : Télécharger image dans les containeur

  • Stockage local
  • Cliquer sur templates
  • Choisir sa distribution ( Debian 10 )

BLOP-OVH-CT-MARIADB

Etape 0 : Créer le container

Une fois le Template télécharger :

  • Cliquer sur “Create CT”
  • Partie réseau : vmbr1 : 192.168.1.2 et passerelle : 192.168.1.1

Etape 1 : Installation de Mariadb 10.4

Voir le tuto : https://computingforgeeks.com/how-to-install-mariadb-on-debian/

Etape 2 : Autoriser connexion extérieur

Le tuto est ici : https://websiteforstudents.com/configure-remote-access-mysql-mariadb-databases/

Shell

Log into MariaDB as the Root user

Shell

Create a password for the root user

Plain Text

Restart MariaDB

Shell

Test : netstat -anp | grep 3306

BLOP-OVH-CT-WEB

0 – Installation via ansible pour configuration

1 – Les services

Etape 1 : Installation de Apache

L’installation s’effectuera avec le php-fpm afin d’activer le http2

Effectuer les opérations ci-dessous :

Shell

Etape 2 : Installation de PHP-FPM

Suivre le tuto ci-contre : https://computingforgeeks.com/how-to-install-php-7-3-on-debian-9-debian-8/

Shell

Etape 3 : Liaison Apache2 + PHP-FPM

J’ai fais le choix de n’avoir qu’un seul pool

HTML

Modifier la ligne 36 par :

listen = 127.0.0.1:9000
systemctl restart php7.3-fpm apache2  

Etape 2 : HTTPS – Installation de LetsEncrypt

  • Choix 1 : Certbot-auto (choisi pour mes sites)
Shell

source : https://certbot.eff.org/lets-encrypt/pip-apache

  • Choix 2 : Certbot via sources

Se rendre sur : https://certbot.eff.org/

Etape 3 : Automatisation de Let’sencrypt

Afin d’automatiser la mise a jour des certificats il faut créer un cron

Mettre dans renew :

Shell

Etape 3 : Adminer : Installation

Télécharger la version de Adminer ici : https://www.adminer.org/

Etape 4 : Adminer : Configuration

Afin de pouvoir uploader BDD assez lourde, il faut modifier la taille de l’upload autorisé. J’ai choisi 100mo.

Shell

Puis rechercher et changer la valeur ci-dessous :

Shell

Etape 5 : La sauvegarde : Base de données

Afin de garder une copie de ses BDD il est important de les sauvegarder.

Shell

Récupérer mon script de BDD ici :

https://github.com/blop03/ansible-infra-perso/blob/master/backup_bdd_script.sh

Shell

Créer un utilisateur en lecture pour la sauvegarde dans la base de données

HTML

Etape 7 : La sauvegarde : Les fichiers

Tuto  : http://www.nas-forum.com/forum/topic/55118-tuto-sauvegarde-hyper-backup-vers-un-serveur-distant-rsync-avec-chiffrement-du-transfert/

Etape 8 : Installation des sites

  • Faire les Vhosts

Voir :

  • Déposer les dossiers dans /var/www
  • Créer user de bdd
  • Lancer les installations

Voici des exemples de sites internet :

  • CMS ( Blog WordPress, Drupal )

2 – Applicatif

Etape 9 (Facultatif) : Mise à jour automatique WordPress

https://www.malekal.com/activer-les-mises-a-jour-automatiques-sur-wordpress/ Mise a jour automatique

Etape 10 (Facultatif) : Créer des sauvegardes à distance

  • Monter un NFS pour save des containers
  • Content en VZDUMp File
  • Description : Pour les tests ou autre site non important
  • Serveur dédié

Configurer la redirection via NAT des flux sur les containers

Voir fichier sur github : https://github.com/blop03/script-infra_perso2/blob/master/template_interface_dedie_proxmox

3 – Save BDD

Installer sur le client afin de sauvegarder les bases de données avec le paquest mysql-client 10.4 on ne sait jamais 😊

Shell

touch backup_bdd.service

Shell

touch backup_bdd.timer

Shell

Mettre le script sous forme de service

Shell

BLOP-KIM-CT-SERVICE (Facultatif )

1 – Mariadb

Au moment au j’écris la dernière est la 10.2.

https://downloads.mariadb.org/mariadb/repositories/#mirror=ovh

Etape 2 – Nginx  ( Lastest )

Créer un fichier dans /etc/apt/sources.list.d/nginx

Shell




Créer l’utilisateur

Shell

Etape 3 – Installation des dépendances ( PHP )

Shell

Désactivation du php-fpm exemple:

Shell

Les plateformes que j’ai choisi d’installer pour mon usage personnels sont les suivantes :

  • Limesurvey : https://www.limesurvey.org/fr/
  • Matomo : https://matomo.org/
  • Check-vers-soft : un projet perso
  • Dolibarr :
  • Coinhive : Apparement n’existe plus

Un template est disponible ici :

  • https://github.com/blop03/script-infra_perso/blob/master/template_nginx_vhost.conf
  • https://github.com/blop03/script-infra_perso

Limesurvey

Plain Text

Matomo

Plain Text

Test

HTML

Activation

Shell

Création de la base

Shell

Check-vers-soft

Shell

LE Vhost

nano /etc/nginx/sites-available/check-vers-soft

Plain Text
Plain Text

Test

Shell

Dolibarr

Shell
Shell
HTML
HTML
HTML
Shell
Shell

Coinhive

Shell




nano /etc/nginx/sites-available/coinhive

server {

    listen 80;

    root /usr/share/nginx/coinhive;

    index index.php index.html index.htm;

    server_name coinhive.simonlena.com;

    location / {

        try_files $uri $uri/ =404;

    }

    location ~ \.php$ {

        try_files $uri =404;

        fastcgi_split_path_info ^(.+\.php)(/.+)$;

        fastcgi_pass unix:/var/run/php7.2-fpm-coinhive.sock;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        include fastcgi_params;

    }

}

mkdir /usr/share/nginx/coinhive

echo -e ‘<?php\nphpinfo();’ > /usr/share/nginx/coinhive/index.php

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Résoudre : *
11 + 15 =