(Modifié le 21/08/2019)

XS35V2

xs35v2

Shuttle XS35V2, un barebone ultra-fin et totalement silencieux. Sa plate-forme est basée sur le chipset Intel NM10 Express avec un processeur Intel Atom Dual-Core D525.

  • Processeur Intel Atom Dual-Core D525 double cœur cadencé à 1,8 GHz basse consommation d’énergie
  • Chipset graphique intégré
  • 4Go Mémoire DDR3 667/800 MHz (1 slot SO-DIMM)
  • port réseau 1 Gigabit
  • ethernet HWaddr 80:ee:73:33:28:50 Caractéristiques
  • disque primaire Crucial SSD 480Go (format 2.5”)
  • Second disque SSD SATA 512Go (format 2.5")
  • Connexion sans fil Wi-Fi N Non Activée
  • Alimentation externe sans ventilateur 40 Watts
  • Châssis ajouré pour un meilleur refroidissement des composants
  • Fonctionnement silencieux grâce au refroidissement sans ventilateur (fanless)
  • Contrôleur audio haute définition
  • Lecteur de cartes mémoire intégré
  • consommation moyenne 20W

  • Wireless Network (WLAN)
    • Supports IEEE 802.11b/g/n, max. 150Mbps up-/downstream
    • Security: WPA/WPA2(-PSK), WEP 64/128bit, IEEE 802.11x/i
    • Single-chipset: Realtek RTL8188CE
    • Half size Mini-PCIe-Card
  • Shuttle Europe XS35V2 spécifications

Mise à jour BIOS

La mise à jour BIOS se fait en DOS à partir d’un périphérique bootable.
Créer la clé bootable FreeDOS

# Get the bootable USB image and flash the USB.

# Step 1. Figure out the USB device.
#    Plug in the USB, it will usually auto-mount. Here are some
#    commands you can use to find it.
#       Command                      Notes
#       ===========================  =============================
#       dmesg                        The device will be in the log
#       ls -l /dev/disk/by-id/usb*   List all of theUSB devices
#       mount                        Oftentimes it is in /media
#       grep -Ff \                   Only Ubuntu/Debian.
#         <(hwinfo --disk --short) \
#         <(hwinfo --usb --short)
USB=/dev/sdd

# Step 2. Make sure that the device isn't mounted
sudo umount ${USB}1

# Step 3. Get the archived image.
wget http://downloads.joelinoff.com/fdos11.tar.bz2

# Step 4. Extract the image.
tar jxf fdos11.tar.bz2

# Step 5. Flash the USB
dd if=fdos11.img of=$USB bs=1M

Télécharger le BIOS sur le site Shuttle XS35V2
Extraire et copier les éléments contenu dans DOS sur la racine de la clé USB
Booter sur la clé USB et lancer flash.bat
Patienter…

Disque SATA LVM

SSD Crucial M500 480Go
Partition 1: 20Go /(root) ext4
Partition 2: LVM ext4

Debian Stretch 32bits

Debian Stretch

Installation à partir d’une clé USB bootable netinst debian 9 32bits

ATTENTION !!! Réseau filaire connecté directement sur la box car pas de réseau à travers le switch.

Nom de la machine : srvxo
Utilisateur : xsuser
Installation serveur SSH et système uniquement
IP V4 : 192.168.0.45 (fixer le bail statique pour cette IP sur la box)

Première connexion SSH

Via SSH
ssh xsuser@192.168.0.45
Passage en su
su
Mise à jour
apt update && apt -y upgrade
Installer les outils et sudo
apt install rsync curl tmux jq figlet git sudo -y
Droits d’accès sudo à l’utilisateur xsuser
echo "xsuser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Locales/TimeZone

Configurés lors de l’installation debian 9

Adressage ipv6

ipv6

Adresse IP : 192.168.0.45
Mac Adress : 80:ee:73:33:28:50

ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp2s0f5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 80:ee:73:33:28:50 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.45/24 brd 192.168.0.255 scope global enp2s0f5
       valid_lft forever preferred_lft forever
    inet6 2a01:e34:eebf:df0:82ee:73ff:fe33:2850/64 scope global mngtmpaddr dynamic 
       valid_lft 86009sec preferred_lft 86009sec
    inet6 fe80::82ee:73ff:fe33:2850/64 scope link 
       valid_lft forever preferred_lft forever

La carte n’est joignable de l’internet que par son adresse IPV6
NextHop Freebox permet d’attribuer une adresse IPV6

Prefixe : 2a01:e34:eebf:df3:://64
Next Hop: fe80::82ee:73ff:fe33:2850
Passerelle IPV6 Box : fe80::224:d4ff:fea6:aa20

Modifier interface réseau debian

sudo nano /etc/network/interfaces

REMPLACER

# 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 enp2s0f5
iface enp2s0f5 inet dhcp
# This is an autoconfigured IPv6 interface
iface enp2s0f5 inet6 auto

PAR

# 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 enp2s0f5
iface enp2s0f5 inet dhcp
# This is an autoconfigured IPv6 interface
#iface enp2s0f5 inet6 auto
iface enp2s0f5 inet6 static
  address 2a01:e34:eebf:df3::1
  netmask 64
  post-up ip -6 route add default via fe80::224:d4ff:fea6:aa20 dev enp2s0f5

Redémarrer la machine

sudo systemctl reboot

Après reboot, connexion SSH
Vérifier adresses IP V4 et V6

ip addr
[...]
2: enp2s0f5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 80:ee:73:33:28:50 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.45/24 brd 192.168.0.255 scope global enp2s0f5
       valid_lft forever preferred_lft forever
    inet6 2a01:e34:eebf:df3::1/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 2a01:e34:ee6a:b270:82ee:73ff:fe33:2850/64 scope global mngtmpaddr dynamic 
       valid_lft 86312sec preferred_lft 86312sec
    inet6 fe80::82ee:73ff:fe33:2850/64 scope link 
       valid_lft forever preferred_lft forever

Vérifier avec un autre poste sur le même réseau local

ping -6 -c5 2a01:e34:eebf:df3::1
PING 2a01:e34:eebf:df3::1(2a01:e34:eebf:df3::1) 56 data bytes
64 bytes from 2a01:e34:eebf:df3::1: icmp_seq=2 ttl=64 time=0.798 ms
64 bytes from 2a01:e34:eebf:df3::1: icmp_seq=3 ttl=64 time=0.328 ms
64 bytes from 2a01:e34:eebf:df3::1: icmp_seq=4 ttl=64 time=0.295 ms
64 bytes from 2a01:e34:eebf:df3::1: icmp_seq=5 ttl=64 time=0.310 ms

--- 2a01:e34:eebf:df3::1 ping statistics ---
5 packets transmitted, 4 received, 20% packet loss, time 65ms
rtt min/avg/max/mdev = 0.295/0.432/0.798/0.212 ms

SSH avec clé

ssh+clés

sur l'ordinateur de bureau Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2) nommé xoyize pour une liaison SSH avec le serveur KVM.
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/xoyize
Envoyer la clé publique sur le serveur KVM
scp ~/.ssh/xoyize.pub xsuser@192.168.0.45:/home/xsuser/

sur le serveur **srvxo**
Copier le contenu de la clé publique dans /home/$USER/.ssh/authorized_keys
$ cd ~
Sur le KVM ,créer un dossier .ssh

mkdir .ssh
cat /home/$USER/xoyize.pub >> /home/$USER/.ssh/authorized_keys

et donner les droits
chmod 600 /home/$USER/.ssh/authorized_keys
effacer le fichier de la clé
rm /home/$USER/xoyize.pub
Modifier la configuration serveur SSH
sudo nano /etc/ssh/sshd_config
Modifier

Port = 55035
PasswordAuthentication no

Relancer openSSH
sudo systemctl restart sshd
Accès depuis le poste distant avec la clé privée
ssh -p 55035 -i ~/.ssh/xoyize xsuser@192.168.0.45

DNS OVH

dns

Modification domaine xoyize.xyz pour un accès IPV6 uniquement.

$TTL 3600
@	IN SOA dns106.ovh.net. tech.ovh.net. (2018110703 86400 3600 3600000 300)
          3600 IN NS     ns106.ovh.net.
          3600 IN NS     dns106.ovh.net.
          3600 IN A      78.230.171.39
          3600 IN AAAA   2a01:e34:eebf:df3::1
bbs       3600 IN CNAME  xoyize.xyz.
calibre   3600 IN CNAME  xoyize.xyz.
carte     3600 IN CNAME  xoyize.xyz.
music     3600 IN CNAME  xoyize.xyz.

Hostname

Vérifier le nom

# sudo hostnamectl set-hostname srvxo # Pour un changement de nom
hostnamectl status
   Static hostname: srvxo
         Icon name: computer-desktop
           Chassis: desktop
        Machine ID: fba578f0ce3745c3aa51cb087bbdb22a
           Boot ID: 6eeae493e34045cb93d31b4f83b22479
  Operating System: Debian GNU/Linux 9 (stretch)
            Kernel: Linux 4.9.0-8-686-pae
      Architecture: x86

Il faut modifier le fichier /etc/hosts , ajout domaine xoyize.xyz

sudo nano /etc/hosts
127.0.0.1	localhost
127.0.1.1	xoyize.xyz	srvxo

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Après modification

hostname --fqdn

xoyize.xyz

Volumes disques et partitions

Volumes LVM

root@srvxo:/home/xsuser# pvs
  PV         VG       Fmt  Attr PSize   PFree
  /dev/sda2  ssd-m500 lvm2 a--  427,13g    0 
root@srvxo:/home/xsuser# vgs
  VG       #PV #LV #SN Attr   VSize   VFree
  ssd-m500   1   1   0 wz--n- 427,13g    0 
root@srvxo:/home/xsuser# lvs
  LV    VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv500 ssd-m500 -wi-a----- 427,13g           

Création des points de montage

sudo mkdir -p /srv/{data,musique}

Modification /etc/fstab pour ajout volume “data”

/dev/mapper/ssd--m500-lv500   /srv/data    ext4    defaults        0       2

Tester le montage

sudo mount -a

Structure
df -h

Sys. de fichiers            Taille Utilisé Dispo Uti% Monté sur
udev                          2,0G       0  2,0G   0% /dev
tmpfs                         404M    5,7M  398M   2% /run
/dev/sda1                      20G    959M   18G   6% /
tmpfs                         2,0G       0  2,0G   0% /dev/shm
tmpfs                         5,0M       0  5,0M   0% /run/lock
tmpfs                         2,0G       0  2,0G   0% /sys/fs/cgroup
tmpfs                         404M       0  404M   0% /run/user/1000
/dev/mapper/ssd--m500-lv500   420G    6,1G  392G   2% /srv/data

Script analyse

Le batch
nano ~/ssh_rc_bash_only

#!/bin/bash

get_infos() {
    seconds="$(< /proc/uptime)"
    seconds="${seconds/.*}"
    days="$((seconds / 60 / 60 / 24)) jour(s)"
    hours="$((seconds / 60 / 60 % 24)) heure(s)"
    mins="$((seconds / 60 % 60)) minute(s)"
    
    # Remove plural if < 2.
    ((${days/ *} == 1))  && days="${days/s}"
    ((${hours/ *} == 1)) && hours="${hours/s}"
    ((${mins/ *} == 1))  && mins="${mins/s}"
    
    # Hide empty fields.
    ((${days/ *} == 0))  && unset days
    ((${hours/ *} == 0)) && unset hours
    ((${mins/ *} == 0))  && unset mins
    
    uptime="${days:+$days, }${hours:+$hours, }${mins}"
    uptime="${uptime%', '}"
    uptime="${uptime:-${seconds} seconds}"

   if [[ -f "/sys/devices/virtual/dmi/id/board_vendor" ||
                    -f "/sys/devices/virtual/dmi/id/board_name" ]]; then
	model="$(< /sys/devices/virtual/dmi/id/board_vendor)"
	model+=" $(< /sys/devices/virtual/dmi/id/board_name)"
   fi

   if [[ -f "/sys/devices/virtual/dmi/id/bios_vendor" ||
                    -f "/sys/devices/virtual/dmi/id/bios_version" ]]; then
        bios="$(< /sys/devices/virtual/dmi/id/bios_vendor)"
        bios+=" $(< /sys/devices/virtual/dmi/id/bios_version)"
        bios+=" $(< /sys/devices/virtual/dmi/id/bios_date)"
   fi
}

#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
#ipinfo=$(curl -s iplocality.com) 		# 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`

if [[ $GROUPZ == *irc* ]]; then
ENDSESSION=`cat /etc/security/limits.conf | grep "@irc" | grep maxlogins | awk {'print $4'}`
PRIVLAGED="IRC Account"
else
ENDSESSION="Unlimited"
PRIVLAGED="Regular User"
fi
get_infos
logo=$(figlet "`hostname --fqdn`")
meteo=$(curl fr.wttr.in/$ville?0)
lvm_entet="Sys. de fichiers                      Taille Utilisé Dispo Uti% Monté sur"
lvm=$(df -h |grep mapper)
lvm+='\n'$(df -h |grep sda)
distri=$(lsb_release -sd)
distri+=" $(uname -m)"

echo -e "
\e[1;31m$logo
\e[1;35m   \e[1;37mHostname \e[1;35m= \e[1;32m`hostname`
\e[1;35m \e[1;37mWired IpV4 \e[1;35m= \e[1;32m`ip addr show $iplink | grep 'inet\b' | awk '{print $2}' | cut -d/ -f1`
\e[1;35m \e[1;37mWired IpV6 \e[1;35m= \e[1;32m`ip addr show $iplink | grep -E 'inet6' |grep -E 'scope link' | awk '{print $2}' | cut -d/ -f1`
\e[1;35m     \e[1;37mKernel \e[1;35m= \e[1;32m`uname -r`
\e[1;35m    \e[1;37mDistrib \e[1;35m= \e[1;32m$distri
\e[1;35m     \e[1;37mUptime \e[1;35m= \e[1;32m`echo $uptime`
\e[1;35m       \e[1;37mBios \e[1;35m= \e[1;32m`echo $bios`
\e[1;35m      \e[1;37mBoard \e[1;35m= \e[1;32m`echo $model`
\e[1;35m        \e[1;37mCPU \e[1;35m= \e[1;32m`echo $cpuname`
\e[1;35m \e[1;37mMemory Use \e[1;35m= \e[1;32m`free -m | awk 'NR==2{printf "%s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'`
\e[1;35m   \e[1;37mUsername \e[1;35m= \e[1;32m`whoami`
\e[1;35m   \e[1;37mSessions \e[1;35m= \e[1;32m`who | grep $USER | wc -l`
\e[1;35m\e[1;37mPublic IpV4 \e[1;35m= \e[1;32m`echo $publicip`
\e[1;35m\e[1;37mPublic IpV6 \e[1;35m= \e[1;32m`ip addr show $iplink | grep -m 1 'inet6\b'  | awk '{print $2}' | cut -d/ -f1`
\e[1;35m\e[1;96m$lvm_entet\e[1;35m\e[1;49m
\e[1;35m\e[1;33m$lvm
\e[1;35m\e[1;32m$meteo
\e[1;0m
"

Les droits en exécution
chmod +x ~/ssh_rc_bash_only
Effacer motd
sudo rm /etc/motd
Exécution
./ssh_rc_bash_only

Texte alternatif

Certificats letsencrypt

letsencrypt

Installation gestionnaire des certificats Let’s Encrypt

cd ~
sudo -s  # en mode super utilisateur
apt install netcat socat # prérequis
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install # --nocron 
cd ..
rm -rf acme.sh/

Se connecter sur l’api OVH pour les paramètres (clé et secret)

export OVH_AK="votre application key"
export OVH_AS="votre application secret"

Premier lancement pour la génération des certificats

/root/.acme.sh/acme.sh --dns dns_ovh --issue --keylength ec-384 -d xoyize.xyz -d *.xoyize.xyz
[...]
[mercredi 17 octobre 2018, 14:05:32 (UTC+0200)] Please open this link to do authentication: https://eu.api.ovh.com/auth/?credentialToken=FQGXWob9QI9m1yg8NlmPN0GZOJRKEzMLdlsPoIJT2o2WuWBikcsJIMyICk6Z8K0Z
[...]

Connecter l’url ci-dessus, s’authentifier puis sélectionner “unlimited” et valider.Le message suivant dit s’afficher.

OVH authentication Success ! 

Lancer une seconde fois la génération des certificats et patienter quelques minutes…

./acme.sh --dns dns_ovh --issue --keylength ec-384 -d xoyize.xyz -d *.xoyize.xyz

Les certificats sont disponibles

Pour un lancement manuel (ajout domaine, sous-domaine ou regénération des certificats)

sudo -s
/root/.acme.sh/acme.sh --dns dns_ovh --issue --keylength ec-384 -d xoyize.xyz -d *.xoyize.xyz

Un certificat Wildcard Let’s Encrypt qui se renouvelle automatiquement

crontab -l
10 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

Les certificats

[lundi 18 mars 2019, 15:32:49 (UTC+0100)] Your cert is in  /root/.acme.sh/xoyize.xyz_ecc/xoyize.xyz.cer 
[lundi 18 mars 2019, 15:32:49 (UTC+0100)] Your cert key is in  /root/.acme.sh/xoyize.xyz_ecc/xoyize.xyz.key 
[lundi 18 mars 2019, 15:32:49 (UTC+0100)] The intermediate CA cert is in  /root/.acme.sh/xoyize.xyz_ecc/ca.cer 
[lundi 18 mars 2019, 15:32:49 (UTC+0100)] And the full chain certs is there:  /root/.acme.sh/xoyize.xyz_ecc/fullchain.cer 

Parefeu

Le script de base /usr/local/sbin/config_firewall

sudo nano /usr/local/sbin/config_firewall
#!/bin/sh

###################
#      IPv4       #
###################

# refuser input et forward par défaut, accepter output
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT ACCEPT

# interface lo (loop) accessible
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# maintenir les connexions établies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# accepter en entrée le ping (icmp), et les
# connexions sur les ports nécessaires.
iptables -A INPUT -p icmp --icmp-type echo-request -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 55035 -j ACCEPT
iptables -A INPUT -p udp --dport 55035 -j ACCEPT

# accepter en sortie le ping, les requêtes HTTP(S), DNS,
# et les connexions sur les ports nécessaires.
iptables -A OUTPUT -p icmp --icmp-type echo-request -m conntrack --ctstate NEW -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT


###################
#      IPv6       #
###################

# refuser input et forward par défaut, accepter output
ip6tables -t filter -P INPUT DROP
ip6tables -t filter -P FORWARD DROP
ip6tables -t filter -P OUTPUT ACCEPT

# interface lo (loop) accessible
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A OUTPUT -o lo -j ACCEPT

# maintenir les connexions établies
ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
ip6tables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# NDP pour toute interface de type broadcast
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-solicitation -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-advertisement -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 --icmpv6-type neighbour-solicitation -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type neighbour-advertisement -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT

# accepter en entrée le ping (icmpv6), les
# connexions entrantes déjà établies et les connexions sur les ports nécessaires.
ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 55035 -j ACCEPT
ip6tables -A INPUT -p udp --dport 55035 -j ACCEPT

# accepter en sortie le ping, les requêtes HTTP(S), DNS,
# et les connexions sur les ports nécessaires.
ip6tables -t filter -A OUTPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
ip6tables -A OUTPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A OUTPUT -p tcp --dport 443 -j ACCEPT
ip6tables -A OUTPUT -p udp --dport 53 -j ACCEPT
ip6tables -A OUTPUT -p tcp --dport 53 -j ACCEPT

Droits

sudo -s
chmod +x /usr/local/sbin/config_firewall

Exécution script

/usr/local/sbin/config_firewall

Vérifier l’établissement des règles IPV4 et IPV6

iptables -L
ip6tables -L

Sauvegarde et restauration des règles

Pour la sauvegarde et la restauration des règles, on installe le paquet iptables-persistent

sudo apt-get install iptables-persistent

Répondre au 2 questions pour sauvegarder les règles de base mises en place par le script précédent
Faut-il enregistrer les règles IPv4 actuelles ? Oui
Faut-il enregistrer les règles IPv6 actuelles ? Oui

Les règles de pare-feu IPv4/IPv6 ne sont pas sauvegardées automatiquement lors de l’arrêt du système.
Utilisez les commandes suivantes pour les mettre à jour.

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

En cas de modification des règles iptables, ne pas oublier de faire les sauvegardes avant extinction de la machine

NFS serveur


NFS (pour Network File System, système de fichiers en réseau) est un protocole qui permet à un ordinateur d’accéder à des fichiers via un réseau.

Installation NFS

on passe en mode su
sudo -s
Installation
apt install nfs-kernel-server
Vérification serveur
rpcinfo -p | grep nfs

    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs

Vérifier que le système supporte effectivement NFS
cat /proc/filesystems | grep nfs

nodev	nfsd

Si la commande précédente ne renvoie rien, il se peut que le module NFS ne soit pas chargé, auquel cas, il faut le charger modprobe nfs
Enfin, vérifions que portmap attend les instructions sur le port 111
rpcinfo -p | grep portmap

    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper

Configuration du partage

Passage en su
sudo -s
indiquer au serveur les répertoires qui seront partagés, les machines qui y auront accès et les conditions de ce partage.
nano /etc/exports
Ajouter en fin de fichier /etc/exports

# Premier disque
/srv/data      192.168.0.0/24(rw,sync,no_subtree_check,no_root_squash)

Exporter

exportfs -ar

Sécurisation NFS

Passage en su
sudo -s
Le protocole RPC n’a pas la réputation d’être bien sécurisé, mais la version 4 de NFS entend corriger ce problème, elle est donc à privilégier. Il est déconseillé d’effectuer un partage NFS via internet, ou bien dans ce cas, opter pour un tunnel crypté.

  • S’assurer que les partages sont réservés à certaines IP dans /etc/exports
  • S’appuyer sur rpcbind (/etc/hosts.deny et /etc/hosts.allow) pour sécuriser l’accès au serveur NFS
  • Configurer convenablement iptables

hosts.deny , hosts.allow
Tout le monde est interdit, puis le LAN est autorisé:

echo "rpcbind mountd nfsd statd lockd rquotad : ALL" >> /etc/hosts.deny
echo "rpcbind mountd nfsd statd lockd rquotad: 192.168.0." >> /etc/hosts.allow

iptables (NFS)
Par défaut, les différents services NFS (lockd, statd, mountd, etc.) demandent des assignations de ports aléatoires à partir du portmapper (portmap/rpcbind), ce qui signifie que la plupart des administrateurs doivent ouvrir une gamme de ports dans leur base de règles de pare-feu pour que NFS fonctionne.

Il va donc falloir fixer les ports de ces services afin de créer les règles iptables.

echo 'STATDOPTS="--port 32765 --outgoing-port 32766"' >> /etc/default/nfs-common
echo 'RPCMOUNTDOPTS="-p 32767"' >> /etc/default/nfs-kernel-server
echo 'RPCRQUOTADOPTS="-p 32769"' >> /etc/default/quota

Relance sysctl
sysctl --system

* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.conf ...

Relancer le service
systemctl restart nfs-kernel-server

Nous pouvons maintenant fixer nos règles

iptables -A INPUT -s 192.168.0.0/24 -p tcp -m multiport --ports 111,2049,32764:32769 -j ACCEPT -m comment --comment "NFS Server"
iptables -A INPUT -s 192.168.0.0/24 -p udp -m multiport --ports 111,2049,32764:32769 -j ACCEPT -m comment --comment "NFS Server"

Sauvegarder les règles

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

Configuration client NFS

Client distant
Prérequis : NFS installé (https://wiki.archlinux.fr/NFS)

Visualiser les volumes accessibles
showmount -e 192.168.0.45

Export list for 192.168.0.45:
/srv/data    192.168.0.0/24

Local, accès NFS sur PC
sudo showmount -e 192.168.0.28

Export list for 192.168.0.28:
/home/yannick/media/devel 192.168.0.0/24
/srv/video                192.168.0.0/24

Montage et copie

sudo mkdir -p /srv/data/devel                # dossier devel
sudo chown $USER.$USER -R /srv/data/devel    # droits utilisateur
sudo mkdir -p /mnt/temp                      # dossier temporaraire
sudo mount -t nfs 192.168.0.28:/home/yannick/media/devel /mnt/temp  # montage dossier devel NFS
sudo cp -a /mnt/temp/* /srv/data/devel/      # copie dossier devel NFS -> devel local
sudo umount /mnt/temp                        # démontage NFS devel

Sauvegarde distante via BorgBackup

Préparation de la machine qui stocke les sauvegardes

Installation BorgBackup et ajout clé publique sur le serveur de sauvegarde xoyize.xyz
On se connecte sur la machine et on passe en mode su

sudo -s

Installation en utilisant les dépôts “backports”

apt edit-sources # pour ajouter la ligne pour les dépôts "backports"
deb http://deb.debian.org/debian stretch-backports main contrib non-free

Votre fichier « /etc/apt/sources.list » a changé, veuillez lancer « apt-get update »

apt update

Installer borgbackup

apt -V -t=stretch-backports install borgbackup

Créer un utilisateur borg dédié aux sauvegardes par BorgBackup :

useradd borg --create-home --home-dir /srv/data/borg-backups/

Vérifier le propriétaire des dossiers “borg” , sinon modifier

chown borg.borg -R  /srv/data/borg-backups/

Cet utilisateur n’a pas de mot de passe, nous nous y connecterons uniquement avec une clef SSH ,ajout de la clé publique

mkdir -p /srv/data/borg-backups/.ssh
cat >> /srv/data/borg-backups/.ssh/authorized_keys

Copier/coller le contenu du fichier du fichier de clef publique (fichier /root/.ssh/yanspm_ed25519.pub de la machine à sauvegarder ) dans ce terminal, et presser [Ctrl]+[D] pour valider.

Autoriser utilisateur borg à exécuter /usr/bin/borg uniquement

echo "borg ALL=NOPASSWD: /usr/bin/borg" >> /etc/sudoers

Le dossier de base pour les sauvegardes sur le serveur xoyize.xyz : /srv/data/borg-backups/

Création dépôt et lancement des sauvegardes depuis la machine à sauvegarder

machine cliente yanspm.com
On se connecte sur la machine et on passe en mode su

sudo -s

Création du dépôt distant (A FAIRE UNE SEULE FOIS)

borg init --encryption=repokey-blake2 ssh://borg@xoyize.xyz:55035/srv/data/borg-backups/yanspm.com
Enter new passphrase: 
Enter same passphrase again: 
Do you want your passphrase to be displayed for verification? [yN]: 

By default repositories initialized with this version will produce security
errors if written to with an older version (up to and including Borg 1.0.8).

If you want to use these older versions, you can disable the check by running:
borg upgrade --disable-tam ssh://borg@xoyize.xyz:55035/srv/data/borg-backups/yanspm

See https://borgbackup.readthedocs.io/en/stable/changes.html#pre-1-0-9-manifest-spoofing-vulnerability for details about the security implications.

IMPORTANT: you will need both KEY AND PASSPHRASE to access this repo!
Use "borg key export" to export the key, optionally in printable format.
Write down the passphrase. Store both at safe place(s).

Sauvegarder la “passphrase” dans un fichier pour une procédure automatique

mkdir -p /root/.borg
nano /root/.borg/passphrase

Générer une sauvegarde d’un dossier local vers le dépôt distant

borg create ssh://borg@xoyize.xyz:55035/srv/data/borg-backups/yanspm.com::2019-01-11 /home/yanspm
Enter passphrase for key ssh://borg@xoyize.xyz:55035/srv/data/borg-backups/yanspm.com: 

Automatiser la procédure de sauvegarde pour le client yanspm.com
script de sauvegarde (notez l’usage de borg prune pour supprimer les archives trop anciennes)

nano /etc/cron.daily/borg-backup

Pour lancement à une heure précise

nano /root/.borg/borg-backup # après création on exécute crontab -e
#!/bin/sh
#
# Script de sauvegarde.
#
# Envoie les sauvegardes sur un serveur distant, via le programme Borg.
# Les sauvegardes sont chiffrées
#
 
set -e
 
BACKUP_DATE=`date +%Y-%m-%d-%Hh%M`
LOG_PATH=/var/log/borg-backup.log
 
export BORG_PASSPHRASE="`cat ~root/.borg/passphrase`"
export BORG_RSH='ssh -i /root/.ssh/yanspm_ed25519'
BORG_REPOSITORY=ssh://borg@xoyize.xyz:55035/srv/data/borg-backups/yanspm.com
BORG_ARCHIVE=${BORG_REPOSITORY}::${BACKUP_DATE}
 
borg create \
-v --stats --compression lzma,9 \
$BORG_ARCHIVE \
/bin /boot /etc /home /lib /lib64 /opt /root /sbin /srv /usr /var \
>> ${LOG_PATH} 2>&1
 
# Nettoyage des anciens backups
# On conserve
# - une archive par jour les 7 derniers jours,
# - une archive par semaine pour les 4 dernières semaines,
# - une archive par mois pour les 6 derniers mois.
 
borg prune \
-v --list --stats --keep-daily=7 --keep-weekly=4 --keep-monthly=6 \
$BORG_REPOSITORY \
>> ${LOG_PATH} 2>&1

Le rendre exécutable

chmod +x /root/.borg/borg-backup

Programmer la tâche à 3h00 du matin

crontab -e
# Sauvegarde sur distant avec BorgBackup
00 03 * * * /root/.borg/borg-backup > /dev/null

Quelques commandes borg

création d’un point de montage temporaire pour visualiser les “archives de sauvegarde” (backups)

mkdir -p /mnt/temp  

Pour ne pas avoir à saisir la phrase

export BORG_PASSPHRASE="`cat ~root/.borg/passphrase`"

Liste des archives

borg list ssh://borg@xoyize.xyz:55035/srv/data/borg-backups/yanspm.com
2019-01-11                           Fri, 2019-01-11 16:58:11 [91fa5ecb886d72587395983aa928d968421047618fa9038e248a1c86e8ba4ab2]

Le montage d’une archive (backup) se fait de manière transparente à travers le réseau :

borg mount ssh://borg@xoyize.xyz:55035/srv/data/borg-backups/yanspm.com::2019-01-11 /mnt/temp

Vue

ls /mnt/temp/home/yanspm/
archives   dead.letter	gitea-repositories  shaarli  stubby
compil.sh  getdns	netdata		    Shaarli  stubby.yml

Démontage

borg umount /mnt/temp

Purger les anciennes “archives de sauvegarde” (backups)

Exemple: On va garder 1 backup par jour sur les 7 derniers jours, et 1 backup par semaine sur les 4 dernières semaines et 1 backup par mois sur les 6 derniers mois.

borg prune -v --list --stats --keep-daily=7 --keep-weekly=4 --keep-monthly=6 /repo

Si vous avez préfixé vos archives, vous pouvez purger sélectivement avec –prefix=nommachine
Vous pouvez supprimer un backup précis. Par exemple:

borg delete /repo::2017-12-11T12:25:38

Problème de verrouillage, le dossier archive n’est pas accessible, pour le déverrouiller

borg break-lock ssh://borg@xoyize.xyz:55035/srv/data/borg-backups/yanspm.com

Compte rendu au PREMIER passage (sauvegarde debian yanspm.com → xoyize.xyz)

borg create -v --stats --compression lzma,9 $BORG_ARCHIVE /bin /boot /etc /home /lib /lib64 /opt /root /sbin /srv /usr /var vmlinuz vmlinuz.old

Creating archive at "ssh://borg@xoyize.xyz:55035/srv/data/borg-backups/yanspm.com::2019-01-12-07h-58"
------------------------------------------------------------------------------
Archive name: 2019-01-12-07h-58
Archive fingerprint: 53b19ccc50ba819c46809681a98572f5262c8e6cd9269af352180b0003558b71
Time (start): Sat, 2019-01-12 08:05:07
Time (end):   Sat, 2019-01-12 09:25:56
Duration: 1 hours 20 minutes 49.20 seconds
Number of files: 73818
Utilization of max. archive size: 0%
------------------------------------------------------------------------------
                       Original size      Compressed size    Deduplicated size
This archive:                3.21 GB              1.10 GB            948.95 MB
All archives:                3.36 GB              1.19 GB              1.03 GB

                       Unique chunks         Total chunks
Chunk index:                   67629                78964
------------------------------------------------------------------------------

Compte rendu au SECOND passage (sauvegarde debian yanspm.com → xoyize.xyz)

Creating archive at "ssh://borg@xoyize.xyz:55035/srv/data/borg-backups/yanspm.com::2019-01-12-14h-25"
------------------------------------------------------------------------------
Archive name: 2019-01-12-14h-25
Archive fingerprint: 704e11a803614adc8ac53b61e9b4ad0ea87d35c08f3ce190d7ce21fe81d6d342
Time (start): Sat, 2019-01-12 14:25:16
Time (end):   Sat, 2019-01-12 14:25:45
Duration: 28.22 seconds
Number of files: 73863
Utilization of max. archive size: 0%
------------------------------------------------------------------------------
                       Original size      Compressed size    Deduplicated size
This archive:                3.21 GB              1.10 GB              3.70 MB
All archives:                6.57 GB              2.28 GB              1.04 GB

                       Unique chunks         Total chunks
Chunk index:                   67743               152918
------------------------------------------------------------------------------

Nginx + PHP7.3 + MariaDB + SSL/TLS1.3

lemp

Compilation

Préalable

sudo apt install apt-transport-https

Script

sudo -s             # Passer en mode super utilisateur (su ou sudo)  
wget -O install.sh "https://static.xoyaz.xyz/files/debian9-compilation-nginx-tls1.3-php7.3-MariaDB.sh.txt" # Télécharger le script
chmod +x install.sh  # Rendre le script exécutable  
./install.sh     # Exécuter le script
#******** Patienter **********

SSL xoyize.xyz

SSL

Certificats sur les sites xoyize.xyz

Ajout des certificats , création des liens

sudo ln -s /root/.acme.sh/xoyize.xyz_ecc/fullchain.cer /etc/ssl/private/xoyize.xyz-fullchain.pem
sudo ln -s /root/.acme.sh/xoyize.xyz_ecc/xoyize.xyz.key /etc/ssl/private/xoyize.xyz-key.pem

Les fichiers de configurations ssl headers et nginx

sudo nano /etc/nginx/ssl_params
    ssl_certificate /etc/ssl/private/xoyize.xyz-fullchain.pem;
    ssl_certificate_key /etc/ssl/private/xoyize.xyz-key.pem;
    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:50m;
    ssl_prefer_server_ciphers on;

    # Ciphers with modern compatibility
    # 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';

entêtes

sudo nano /etc/nginx/header_params
    # Follows the Web Security Directives from the Mozilla Dev Lab and the Mozilla Obervatory + Partners
    # https://wiki.mozilla.org/Security/Guidelines/Web_Security
    # https://observatory.mozilla.org/ 
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; 
    add_header Content-Security-Policy "upgrade-insecure-requests";
    add_header Content-Security-Policy-Report-Only "default-src https: data: 'unsafe-inline' 'unsafe-eval'";
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header X-Frame-Options "SAMEORIGIN";

On change le dossier racine

sudo mkdir /var/www/default-www
sudo mv /var/www/{index.html,info.php} /var/www/default-www/

Configuration de base avec SSL et sécurité + letsencrypt (renouvellement)

sudo nano /etc/nginx/conf.d/xoyize.xyz.conf
server {
    listen 80;
    listen [::]:80;

    ## redirect http to https ##
    server_name xoyize.xyz;
    return  301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name xoyize.xyz;

    ####    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;
    # Diffie-Hellmann
    # Uncomment the following directive after DH generation
    # > openssl dhparam -out /etc/ssl/private/dh4096.pem -outform PEM -2 4096
    # ssl_dhparam /etc/ssl/private/dh4096.pem;

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

    # if folder xoyize.xyz.d , uncomment the following directive
    #include conf.d/xoyize.xyz.d/*.conf;

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

Effacer ancien fichier de config

sudo rm /etc/nginx/conf.d/default.conf

Vérifier et relancer nginx

sudo nginx -t
sudo systemctl restart nginx

Vérifier le lien https://xoyize.xyz , le tls 1.3

devel.xoyize.xyz

 ____                 _                                  _   
|  _ \  _____   _____| | ___  _ __  _ __ ___   ___ _ __ | |_ 
| | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __|
| |_| |  __/\ V /  __/ | (_) | |_) | | | | | |  __/ | | | |_ 
|____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__|
                             |_|                             

Accès dossier “développement” /srv/data/devel/ouestline partagé avec PC1
Fichier de configuration nginx /etc/nginx/conf.d/devel.xoyize.xyz.conf

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

    ## redirect http to https ##
    server_name devel.xoyize.xyz;
    return  301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name devel.xoyize.xyz;

    ####    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;
    # Diffie-Hellmann
    # Uncomment the following directive after DH generation
    # > openssl dhparam -out /etc/ssl/private/dh4096.pem -outform PEM -2 4096
    # ssl_dhparam /etc/ssl/private/dh4096.pem;

   # autoindex on;
   fancyindex on;              # Enable fancy indexes.
   fancyindex_exact_size off;  # Output human-readable file sizes.

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

    # if folder devel.xoyize.xyz.d , uncomment the following directive
    #include conf.d/devel.xoyize.xyz.d/*.conf;

    access_log /var/log/nginx/devel.xoyize.xyz-access.log;
    error_log /var/log/nginx/devel.xoyize.xyz-error.log;
}

Vérifier et relancer nginx

sudo nginx -t
sudo systemctl restart nginx

Automad

Automad est un système de gestion de contenu basé sur des fichiers et un moteur de template écrit en PHP. Tout le contenu est stocké dans des fichiers texte lisibles par l’homme au lieu d’une base de données. Un site Automad est donc entièrement portable, facile à installer et peut être contrôlé en utilisant Git ou Mercurial. Il offre néanmoins des fonctionnalités de base de données telles que la recherche et le marquage . Le moteur de gabarit intégré permet même aux développeurs et concepteurs inexpérimentés de créer de superbes thèmes et modèles.

Créez un répertoire racine de document pour Automad :

sudo mkdir -p /var/www/automad

Naviguez jusqu’à la racine du document :

cd /var/www/automad

En utilisant curl, téléchargez la dernière version d’Automad CMS. N’oubliez pas de remonter les numéros de version s’il y a une version plus récente :

sudo curl -O -J -L https://automad.org/download

Décompressez l’archive zip :

sudo unzip marcantondahmen-automad-6fff2a0456dc.zip

Déplacez tous les fichiers Automad à la racine du document et supprimez l’archive zip téléchargée :

sudo mv marcantondahmen-automad-6fff2a0456dc/* . && sudo mv marcantondahmen-automad-6fff2a0456dc/.* .
sudo rm marcantondahmen-automad-6fff2a0456dc.zip
sudo rmdir marcantondahmen-automad-6fff2a0456dc

Changez la propriété du répertoire /var/www/automad en www-data :

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

Fichier de configuration nginx /etc/nginx/conf.d/mad.xoyize.conf

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

    ## redirect http to https ##
    server_name mad.xoyize.xyz;
    return  301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name mad.xoyize.xyz;

    ####    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;
    # Diffie-Hellmann
    # Uncomment the following directive after DH generation
    # > openssl dhparam -out /etc/ssl/private/dh4096.pem -outform PEM -2 4096
    # ssl_dhparam /etc/ssl/private/dh4096.pem;

   # autoindex on;
   #fancyindex on;              # Enable fancy indexes.
   #fancyindex_exact_size off;  # Output human-readable file sizes.

  root /var/www/automad;
  index index.php index.html;
  client_max_body_size 100M;

  location / {
    try_files $uri $uri/ /index.php$is_args$args;
  }
  location ~ \.php$ {
    fastcgi_index index.php;
    fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }
        #location ~ \.php$ {
        #   fastcgi_split_path_info ^(.+\.php)(/.+)$;
        #   fastcgi_pass unix:/run/php/php7.3-fpm.sock;   # PHP7.3
        #   fastcgi_index index.php;
        #   include fastcgi_params;
	#   fastcgi_param SCRIPT_FILENAME $request_filename;
        #}

    access_log /var/log/nginx/mad.xoyize.xyz-access.log;
    error_log /var/log/nginx/mad.xoyize.xyz-error.log;
}

Vérifier et relancer nginx

sudo nginx -t
sudo systemctl restart nginx

Comme dernière étape, créez un compte utilisateur pour utiliser l’interface utilisateur basée sur le navigateur appelée le tableau de bord. Rendez-vous sur https://mad.xoyize.xyz/dashboard et suivez les instructions.

automad

Avant de pouvoir utiliser le tableau de bord d’Automad, vous devez créer un compte :

Créer un site web dans Automad

Créez un compte utilisateur à l’aide du formulaire et téléchargez le fichier généré sur votre ordinateur.
Ensuite, vous devrez déplacer le fichier téléchargé “account.php” dans le répertoire “/config” du répertoire d’installation d’Automad.

Après cela, vous pouvez vous connecter au tableau de bord d’Automad


Subsonic

Installer l’application Application dédiée musique, serveur java

Installer java

sudo apt install openjdk-8-jre

Installer subsonic , télécharger la version en cours

wget -O subsonic-6.1.5.deb https://s3-eu-west-1.amazonaws.com/subsonic-public/download/subsonic-6.1.5.deb

Installer

sudo dpkg -i subsonic-6.1.5.deb

Modifier le paramètrage /etc/default/subsonic

SUBSONIC_ARGS="--port=8090 --max-memory=200"
SUBSONIC_USER=xsuser

Relancer subsonic

sudo systemctl restart subsonic

Créer le fichier de configuration nginx

nano /etc/nginx/conf.d/music.xoyize.xyz.conf
upstream subsonic-upstream {
	server localhost:8090;
}
 
server {
    listen 80;
    listen [::]:80;

    ## redirect http to https ##
    server_name music.xoyize.xyz;
    return  301 https://$server_name$request_uri;
}
 
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name music.xoyize.xyz;
      
    include ssl_params;
    include header_params;
 
 	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_redirect off;
 	proxy_set_header Host $http_host;
 	proxy_pass http://subsonic-upstream;
}

Recharger nginx

sudo systemctl reload nginx

Accès https://music.xoyize.xyz

NE PAS OUBLIER : admin Autoriser l’accès à ces dossiers de médias Music