(Modifié le 05/07/2018)

Debian Stretch VirtualBox

Debian 9

  • Serveur virtuel 64 bits KVM/QEMU : DebianStretch
  • machine : vboxdeb
  • domaine :
  • root : ytreu49
  • Utilisateur : usera
  • Mot de passe : usera49
  • Adresse IP : 192.168.0.31
  • Accès
    • SSH : ssh usera@192.168.0.31
    • SSH + clé : ssh -p 55022 -i ~/.ssh/stretch usera@192.168.0.31 (non actif)
    • Transfert de fichier : scp -P 55022 -i ~/.ssh/stretch fichiera fichierb usera@192.168.0.31:/home/usera (non actif)
  • Mot de passe root mariadb : mariadb49

Connexion SSH

ssh usera@192.168.0.31

Passer en root

su # sudo -s

Mise à jour

apt update && apt upgrade

Installer sudo

apt install sudo

Visudo pour les accès root via utilisateur usera

echo "usera     ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

VBox Additions Invité/Debian

Préalable
Configurer votre machine virtuelle pour un accès au réseau partagé.
'’Configuration’’ –> ‘‘Dossiers partagés’‘
Ajouter le dossier et cocher '’Montage automatique’‘

Installer les additions client dans un Debian en cours d’exécution dans une machine virtuelle.

  • Installez gcc ,make et kernel headers (installateur a besoin d’eux pour construire le module du noyau):
    • sudo apt install gcc make linux-headers-$(uname -r)
  • Allez dans le menu '’Périphériques’’ –> ‘‘Insérer l’image des additions invité…’‘ de la machine virtuelle en cours d’exécution ,si non présent , le télécharger.
  • Monter le cd dans la machine virtuelle : sudo mount /dev/cdrom /media/cdrom
  • Allez dans le dossier monté : cd /media/cdrom
  • Exécutez : sudo ./VBoxLinuxAdditions.run
    • Pas d’environnement graphique : ne pas tenir compte de l'erreur '’Could not find the X.Org or XFree86 Window System, skipping.’‘
  • Il faut ajouter le group vboxsf à votre utilisateur : sudo usermod -a -G vboxsf $USER
  • Pour la prise en compte, redémarrer la machine virtuelle : sudo reboot

/media/ est le répertoire qui contient le(s) dossier(s) partagé(s)

Gestion machine virtuelle VM

Démarrer la machine virtuelle VM en ligne de commande sans interface graphique VirtualBox

VBoxManage startvm "DebianStretch" --type headless

Arrêter une VM

VBoxManage controlvm "DebianStretch" poweroff

Mettre en pause une VM

VBoxManage controlvm "DebianStretch" pause

Réinitialiser une VM

VBoxManage controlvm "DebianStretch" reset

En savoir plus sur VBoxHeadless, regardez

VBoxHeadless --help 

Adressage ipv6

La carte n’est joignable de l’internet que par son adresse IPV6
NextHop Freebox permet d’attribuer une adresse IPV6
Adresse IPV6 Box fe80::224:d4ff:fea6:aa20
NextHop 2a01:e34:ee6a:b272::1

sudo nano /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet dhcp
# This is an autoconfigured IPv6 interface
# iface enp0s3 inet6 auto
iface enp0s3 inet6 static
  address 2a01:e34:ee6a:b272::1
  netmask 64
  post-up ip -6 route add default via fe80::224:d4ff:fea6:aa20 dev enp0s3

Redémarrer la machine

sudo systemctl reboot

Vérifier l’adresse inet6

ip addr
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:7a:a6:b5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.31/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 2a01:e34:ee6a:b272::1/64 scope global 
       valid_lft forever preferred_lft forever

Nginx + PHP7 + MariaDB

Télécharger le script d’installation nginx+Php

sudo -s
wget -O install.sh https://static.cinay.pw/files/debian9-compil-nginx-openssl1.1.sh.txt
chmod +x install.sh
./install.sh

Ajouter une ligne au fichier /etc/hosts de la machine hôte

192.168.0.31 usera.tld

Lancer le navigateur sur le lien http://usera.tld

MariaDb

Installer MariaDb :

sudo apt install mariadb-server -y

Initialiser le mot de passe root ( ) + sécurisation

sudo mysql_secure_installation
Enter current password for root (enter for none):     enter
Set root password? [Y/n] Y
New password: *****
Re-enter new password: *****
Password updated successfully!
...
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Test

sudo mysql -uroot -pMotdePasseMariaDb (exit pour la sortie)

DNS

Le domaine oli.ovh pointe sur l’adresse IPV6 2a01:e34:ee6a:b272::1

$TTL 3600
@	IN SOA dns20.ovh.net. tech.ovh.net. (2018092205 86400 3600 3600000 300)
    3600 IN NS     ns20.ovh.net.
    3600 IN NS     dns20.ovh.net.
    3600 IN AAAA   2a01:e34:ee6a:b272::1
*   3600 IN CNAME  oli.ovh.

Certificats Letsencrypt

Utiliser acme et api ovh

[samedi 22 septembre 2018, 10:12:17 (UTC+0200)] Your cert is in  /root/.acme.sh/oli.ovh/oli.ovh.cer 
[samedi 22 septembre 2018, 10:12:17 (UTC+0200)] Your cert key is in  /root/.acme.sh/oli.ovh/oli.ovh.key 
[samedi 22 septembre 2018, 10:12:17 (UTC+0200)] The intermediate CA cert is in  /root/.acme.sh/oli.ovh/ca.cer 
[samedi 22 septembre 2018, 10:12:17 (UTC+0200)] And the full chain certs is there:  /root/.acme.sh/oli.ovh/fullchain.cer 

Création des liens

sudo ln -s /root/.acme.sh/oli.ovh/fullchain.cer /etc/ssl/private/oli.ovh-fullchain.pem
sudo ln -s /root/.acme.sh/oli.ovh/oli.ovh.key /etc/ssl/private/oli.ovh-key.pem

Parefeu (iptables)

Parefeu de base

sudo nano parefeu 
#!/bin/sh

# Règles de base
iptables -t filter -F -m comment --comment "Vider les règles table filter"
iptables -t nat -F -m comment --comment "Vider les règles table nat"
iptables -t filter -X -m comment --comment "Vider les règles personnelles table filter"
iptables -t nat -X -m comment --comment "Vider les règles personnelles table nat"
iptables -t filter -P INPUT ACCEPT -m comment --comment "Autoriser toute connexion entrante"
iptables -t filter -P FORWARD ACCEPT -m comment --comment "Autoriser toute redirection"
iptables -t filter -P OUTPUT ACCEPT -m comment --comment "Autoriser toute connexion sortante"
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -m comment --comment "Ne pas casser les connexions en cours"
iptables -t filter -A INPUT -i lo -j ACCEPT -m comment --comment "Autoriser loopback"
iptables -t filter -A INPUT -p icmp -j ACCEPT -m comment --comment "Autoriser ICMP (Ping)"
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT -m comment --comment "Port SSH Input"
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT -m comment --comment "DNS tcp Input"
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT -m comment --comment "DNS udp Input"
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT -m comment --comment "HTTP Input"
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT -m comment --comment "HTTPS Input"

Droits et exécution

sudo chmod +x parefeu 
sudo -s
./parefeu

Créer les règles ipv6

sudo nano /etc/iptables/rules.v6
*filter
:FORWARD ACCEPT [0:0]
#Blocage paquets entrants
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
#Retour
-A INPUT --match state --state ESTABLISHED,RELATED -j ACCEPT
#Loopback
-A INPUT  -i lo -j ACCEPT
#Multicast
-A INPUT -s ff00::/8 -i enp0s3 -j ACCEPT
#Lien local
-A INPUT -s fe80::/10 -i enp0s3 -j ACCEPT
#Icmpv6
-A INPUT -i enp0s3 -p icmpv6 -j ACCEPT
#-A INPUT -i enp0s3 -p ipv6-icmp -j ACCEPT
-A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT -m limit --limit 1/minute
#Ssh
-A INPUT -p tcp -i enp0s3 --dport 22 -j ACCEPT
#Http, Https
-A INPUT -p tcp -i enp0s3 -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -i enp0s3 --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited
COMMIT

iptables mode persistant

apt install iptables-persistent

Faut-il enregistrer les règles IPv4 actuelles ? NON
Faut-il enregistrer les règles IPv6 actuelles ? NON
Les tables sont enregistrés sous /etc/iptables/ , rules.v4 pour IPv4 et rules.v6 pour IPv6
Sauvegarde/Restauration manuelle des régles iptables

iptables-save > /etc/iptables/rules.v4
iptables-restore < /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
ip6tables-restore < /etc/iptables/rules.v6

Les règles iptables

/etc/iptables/rules.v4

# Generated by iptables-save v1.6.0 on Sat Apr 14 19:03:44 2018
*nat
:PREROUTING ACCEPT [1:229]
:INPUT ACCEPT [1:229]
:OUTPUT ACCEPT [3:249]
:POSTROUTING ACCEPT [3:249]
COMMIT
# Completed on Sat Apr 14 19:03:44 2018
# Generated by iptables-save v1.6.0 on Sat Apr 14 19:03:44 2018
*filter
:INPUT ACCEPT [1:229]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [155:24168]
-A INPUT -m state --state RELATED,ESTABLISHED -m comment --comment "Ne pas casser les connexions en cours" -j ACCEPT
-A INPUT -i lo -m comment --comment "Autoriser loopback" -j ACCEPT
-A INPUT -p icmp -m comment --comment "Autoriser ICMP (Ping)" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m comment --comment "Port SSH Input" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -m comment --comment "DNS tcp Input" -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -m comment --comment "DNS udp Input" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m comment --comment "HTTP Input" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m comment --comment "HTTPS Input" -j ACCEPT
COMMIT
# Completed on Sat Apr 14 19:03:44 2018

/etc/iptables/rules.v6

*filter
:FORWARD ACCEPT [0:0]
#Blocage paquets entrants
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
#Retour
-A INPUT --match state --state ESTABLISHED,RELATED -j ACCEPT
#Loopback
-A INPUT  -i lo -j ACCEPT
#Multicast
-A INPUT -s ff00::/8 -i enp0s3 -j ACCEPT
#Lien local
-A INPUT -s fe80::/10 -i enp0s3 -j ACCEPT
#Icmpv6
-A INPUT -i enp0s3 -p icmpv6 -j ACCEPT
#-A INPUT -i enp0s3 -p ipv6-icmp -j ACCEPT
-A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT -m limit --limit 1/minute
#Ssh
-A INPUT -p tcp -i enp0s3 --dport 22 -j ACCEPT
#Http, Https
-A INPUT -p tcp -i enp0s3 -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -i enp0s3 --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited
COMMIT

script .ssh/rc sur connexion SSH

Exécuter un fichier utilisateur nommé $HOME/.ssh/rc si présent
Pour tous les utilisateurs exécuter un fichier nommé /etc/ssh/sshrc si présent
Installer les utilitaires curl jq figlet

sudo apt install curl jq figlet

Le batch

mkdir -p ~/.ssh
nano ~/.ssh/rc
#!/bin/bash

#clear
PROCCOUNT=`ps -Afl | wc -l`  		# nombre de lignes
PROCCOUNT=`expr $PROCCOUNT - 5`		# on ote les non concernées
GROUPZ=`users`
ipinfo=$(curl -s ipinfo.io) 		# info localisation format json
publicip=$(echo $ipinfo | jq -r '.ip')  # extraction des données , installer préalablement "jq"
ville=$(echo $ipinfo | jq -r '.city')
pays=$(echo $ipinfo | jq -r '.country')
cpuname=`cat /proc/cpuinfo |grep 'model name' | cut -d: -f2 | sed -n 1p`
iplink=`ip link show |grep -m 1 "2:" | awk '{print $2}' | cut -d: -f1`

echo "\033[0m\033[1;31m"  
figlet "`hostname --fqdn`"
echo "\033[0m
\033[1;35m    \033[1;37mHostname \033[1;35m= \033[1;32m`hostname`
\033[1;35m  \033[1;37mWired IpV4 \033[1;35m= \033[1;32m`ip addr show $iplink | grep 'inet\b' | awk '{print $2}' | cut -d/ -f1`
\033[1;35m  \033[1;37mWired IpV6 \033[1;35m= \033[1;32m`ip addr show $iplink | grep -E 'inet6' |grep -E 'scope link' | awk '{print $2}' | cut -d/ -f1`
\033[1;35m      \033[1;37mKernel \033[1;35m= \033[1;32m`uname -r`
\033[1;35m      \033[1;37mDebian \033[1;35m= \033[1;32m`cat /etc/debian_version`
\033[1;35m      \033[1;37mUptime \033[1;35m= \033[1;32m`uptime | sed 's/.*up ([^,]*), .*/1/' | sed -e 's/^[ \t]*//'`
\033[1;35m         \033[1;37mCPU \033[1;35m= \033[1;32m`echo $cpuname`
\033[1;35m  \033[1;37mMemory Use \033[1;35m= \033[1;32m`free -m | awk 'NR==2{printf "%s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'`
\033[1;35m    \033[1;37mUsername \033[1;35m= \033[1;32m`whoami`
\033[1;35m    \033[1;37mSessions \033[1;35m= \033[1;32m`who | grep $USER | wc -l`
\033[1;35m \033[1;37mPublic IpV4 \033[1;35m= \033[1;32m`echo $publicip`
\033[1;35m \033[1;37mPublic IpV6 \033[1;35m= \033[1;32m`ip addr show $iplink | grep -m 1 'inet6\b'  | awk '{print $2}' | cut -d/ -f1`
\033[0m"
#curl fr.wttr.in/$ville?0

Effacer motd

sudo rm /etc/motd

nginx configuration

Configurer le serveur debian pour un accès au blog “statique”
On structure le dossier /etc/nginx/conf.d en utilisant le hostname “vboxdeb”

sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/vboxdeb.conf
sudo mkdir -p /etc/nginx/conf.d/vboxdeb.d

On va ajouter les “certificats SSL”

sudo nano /etc/nginx/ssl_params #Ciphers with modern compatibility
    ssl_certificate /etc/ssl/private/oli.ovh-fullchain.pem;
    ssl_certificate_key /etc/ssl/private/oli.ovh-key.pem;
    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:50m;
    ssl_prefer_server_ciphers on;

    # Ciphers with intermediate compatibility
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=nginx-1.6.2&openssl=1.0.1t&hsts=yes&profile=intermediate
    # ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    # ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';

    # Ciphers with modern compatibility
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=nginx-1.6.2&openssl=1.0.1t&hsts=yes&profile=modern
    # Uncomment the following to use modern ciphers, but remove compatibility with some old clients (android before 5.0, Internet Explorer before 10, ...)
     ssl_protocols TLSv1.2;
     ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

    # New protocol TLSv1.3
##    ssl_protocols TLSv1.3 TLSv1.2;
##    ssl_ciphers 'TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
sudo nano /etc/nginx/ssl_params_ciphers_intermediate #Ciphers with intermediate compatibility
    ssl_certificate /etc/ssl/private/oli.ovh-fullchain.pem;
    ssl_certificate_key /etc/ssl/private/oli.ovh-key.pem;
    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:50m;
    ssl_prefer_server_ciphers on;

    # Ciphers with intermediate compatibility
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=nginx-1.6.2&openssl=1.0.1t&hsts=yes&profile=intermediate
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';

et les “headers”

sudo nano /etc/nginx/header_params 
    # Quelques explications https://www.alsacreations.com/article/lire/1723-tour-horizon-https-et-en-tetes-de-securite.html
    #HSTS est un dispositif de sécurité par lequel un site web peut déclarer aux navigateurs qu’ils doivent communiquer avec lui en utilisant exclusivement le protocole HTTPS, au lieu du HTTP
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
    # Seul le site utilise peut utiliser iFrame
    add_header Content-Security-Policy "frame-ancestors 'self';base-uri 'self';form-action 'self';script-src 'self' https://oli.ovh https://*.rainloop.net https://*.oli.ovh;style-src 'self' https://oli.ovh https://webmail.oli.ovh https://*.oli.ovh;object-src 'self' https://oli.ovh https://*.rainloop.net https://*.oli.ovh;default-src 'self' https://oli.ovh https://*.rainloop.net https://*.oli.ovh";

    #se protéger contre le détournement de clic (clickjacking)
    add_header X-Frame-Options "SAMEORIGIN";
    # Empêche les navigateurs de détecter incorrectement les scripts qui ne sont pas des scripts
    add_header X-Content-Type-Options "nosniff";
    # Bloquer les pages à charger lorsqu'elles détectent des attaques XSS
    add_header X-XSS-Protection "1; mode=block";

    #Supprimer les ## des lignes  pour activer la fonction correspondante

    #CSP permet d’autoriser seulement les domaines déclarés à exécuter du script JavaScript, une feuille de style css, etc.
    # Content-Security-Policy : https://openweb.eu.org/articles/content-security-policy
    ## add_header Content-Security-Policy "default-src 'self'";

    # Désactiver les références pour les navigateurs qui ne prennent pas en charge strict-origin-when-cross-origin
    # Referrer-Policy : https://scotthelme.co.uk/a-new-security-header-referrer-policy/
    # Utilise strict-origin-when-cross-origin pour les navigateurs qui le font
    ## add_header Referrer-Policy "no-referrer, strict-origin-when-cross-origin";

La configuration vboxdeb.conf

server {
    listen 80;
    listen [::]:80;

    ## redirect http to https ##
    server_name oli.ovh *.oli.ovh;
    return  301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name oli.ovh;

    ####    Locations
    # On cache les fichiers statiques
    location ~* \.(html|css|js|png|jpg|jpeg|gif|ico|svg|eot|woff|ttf)$ { expires max; }
    # On interdit les dotfiles
    location ~ /\. { deny all; }

    include ssl_params;
    include header_params;
    #include dh_param;

    root /var/www/ ;
    index index.php index.html index.htm;
        location ~ \.php$ {
           fastcgi_split_path_info ^(.+\.php)(/.+)$;
           fastcgi_pass unix:/run/php/php7.0-fpm.sock;    # PHP7.0
           fastcgi_index index.php;
           include fastcgi_params;
	   fastcgi_param SCRIPT_FILENAME $request_filename;
        }

    include conf.d/vboxdeb.d/*.conf;

    access_log /var/log/nginx/vboxdeb-access.log;
    error_log /var/log/nginx/vboxdeb-error.log;
}

Vérification

sudo nginx -t

Relance serveur

sudo systemctl restart nginx

jekyll thème minima

En mode su (root), installation Jekyll et thème minima avec gems (source):

sudo apt install build-essential ruby-full
sudo gem install bundler minima jekyll-feed

Bundler fournit un environnement cohérent pour les projets Ruby par le suivi et l’installation des “gems” exactes et les versions qui sont nécessaires.Bundler est une sortie de l’enfer de la dépendance, et s’assure que les “gems” dont vous avez besoin sont présents dans le développement, la mise en scène et la production.

Vérifier installation avec la version

jekyll -v

Création d’un site “statique”

cd ~
mkdir blog
cd ~/blog/
jekyll new statique
cd statique
# pout test
bundle exec jekyll serve

Jekyll s’exécute sur le port 4000. Ajouter vos articles dans le répertoire _posts.

Attention, il faut respecter le format des dates dans le nom du fichier ainsi que l’entête.

Le site https://blog.oli.ovh ,création configuration nginx

sudo nano /etc/nginx/conf.d/blog.oli.ovh.conf 
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name blog.oli.ovh;

    ####    Locations
    # On cache les fichiers statiques
    location ~* \.(html|css|js|png|jpg|jpeg|gif|ico|svg|eot|woff|ttf)$ { expires max; }
    # On interdit les dotfiles
    location ~ /\. { deny all; }

    include ssl_params_ciphers_intermediate;
#    include header_params;
    add_header Strict-Transport-Security "max-age=31536000;";
    include dh_param;

    root /var/www/blog/ ;
    index index.html index.htm;

    access_log /var/log/nginx/blog.oli.ovh-access.log;
    error_log /var/log/nginx/blog.oli.ovh-error.log;
}

Création du lien avec le blog statique

sudo ln -s /home/usera/blog/statique/_site /var/www/blog

Vérification et relance nginx

sudo nginx -t
sudo systemctl restart nginx