Debian 8

Boot sur “Parted Magic”

  • Relever adresse ip : 192.168.0.45
  • Changer mot de passe root
  • se connecter ssh : ssh root@192.168.0.45

Partitionnement

Partionnement d’un disque SSD de 120G

root@partedmagic:~# gdisk /dev/sda
GPT fdisk (gdisk) version 0.8.6

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y

Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-234441614, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-234441614, default = 234441614) or {+-}size{KMGTP}: +32M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ef02
Changed type of partition to 'BIOS boot partition'

Command (? for help): n
Partition number (2-128, default 2): 
First sector (34-234441614, default = 67584) or {+-}size{KMGTP}: 
Last sector (67584-234441614, default = 234441614) or {+-}size{KMGTP}: +256M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): n
Partition number (3-128, default 3): 
First sector (34-234441614, default = 591872) or {+-}size{KMGTP}: 
Last sector (591872-234441614, default = 234441614) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8e00
Changed type of partition to 'Linux LVM'

Command (? for help): p
Disk /dev/sda: 234441648 sectors, 111.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): D83D84F4-9955-4C12-8281-55F4D695F1CA
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 234441614
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048           67583   32.0 MiB    EF02  BIOS boot partition
   2           67584          591871   256.0 MiB   8300  Linux filesystem
   3          591872       234441614   111.5 GiB   8E00  Linux LVM

Command (? for help): 

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.

LVM

Les partitions

Disk /dev/sda: 234441648 sectors, 111.8 GiB

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048           67583   32.0 MiB    EF02  BIOS boot partition
   2           67584          591871   256.0 MiB   8300  Linux filesystem
   3          591872       234441614   111.5 GiB   8E00  Linux LVM

On utilise LVM pour la gestion du disque SSD
Création volume physique

pvcreate /dev/sda3

Création groupe

vgcreate vg-ssd-one /dev/sda3

Création des volumes logiques

lvcreate -L 20G -n root vg-ssd-one
lvcreate -L 60G -n home vg-ssd-one
lvcreate -L 4G -n swap vg-ssd-one
lvcreate -L 27G -n rootb vg-ssd-one

Boot sur Debian8/USB pour installation de base

Installation debian jessie (clé USB bootable netinst) sur Disque SSD “Sandisk” 120GB partionné par gdisk

On valide ssh et système
machine : shuttle
Utiliser le partitionnement manuel
ip : 192.168.0.45

Connexion SSH

Connexion
ssh yann@192.168.0.45
Màj
apt update && apt upgrade
Installer outils
apt install rsync curl tmux jq figlet git
Visudo pour l’accès root utilisateur yann

apt install sudo
echo "yann     ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Si vous tentez de redémarrer/éteindre une machine distance par ssh, vous pourriez constater que votre session ne se termine pas correctement
sudo apt-get install libpam-systemdh

fstab

Disque Sata 4To sur /dev/sdb

  PV         VG         Fmt  Attr PSize   PFree 
  /dev/sda3  vg-ssd-one lvm2 a--  111,50g 27,50g
  /dev/sdb3  vg-nas-one lvm2 a--    3,64t  2,02t

Toutes les opérations se font en mode su

On va ajouter les montages sur video et yanplus

Création des points de montage

mkdir /media/{video,yanplus}

Ajout des points de montage au fichier /etc/fstab

/dev/mapper/vg--nas--one-yanplus /media/yanplus  ext4    defaults          0       2
/dev/mapper/vg--nas--one-video   /media/video    ext4    defaults          0       2

Remonter le tout

mount -a

Vérifier

ls /media/yanplus
ls /media/video

NFS serveur

Installation

on passe en mode su
sudo -s
Installation
apt install nfs-kernel-server
systemctl start nfs-kernel-server

Sécurisation

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

Tout le monde est interdit, puis le LAN est autorisé:
nano /etc/hosts.deny

 rpcbind mountd nfsd statd lockd rquotad : ALL

nano /etc/hosts.allow

rpcbind mountd nfsd statd lockd rquotad: 192.168.0.

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.
nano /etc/default/nfs-common
STATDOPTS=”–port 32765 –outgoing-port 32766”
nano /etc/default/nfs-kernel-server
RPCMOUNTDOPTS=”-p 32767”
nano /etc/default/quota
RPCRQUOTADOPTS=”-p 32769”
sysctl --system
/etc/init.d/nfs-kernel-server restart

Nous pouvons maintenant fixer nos règles iptables:

iptables -A INPUT -s 10.11.12.0/24 -p tcp -m multiport --ports 111,2049,32764:32769 -j ACCEPT

Dans le cas d’une installation Yunohost ,commandes pour établir les règles iptables pour le serveur NFS

yunohost firewall allow TCP 111
yunohost firewall allow TCP 2049
yunohost firewall allow TCP 32764:32769

Configuration du partage

Indiquer au serveur dans le fichier /etc/exports les répertoires qui seront partagés, les machines qui y auront accès et les conditions de ce partage.
nano /etc/exports

# ' exportfs -a' : Met à jour la liste des systèmes de fichiers exportés
#
/media/yanplus/devel		192.168.0.0/24(rw,no_subtree_check,no_root_squash)
/media/yanplus/Musique		192.168.0.0/24(rw,no_subtree_check,no_root_squash)
/media/yanplus/BiblioCalibre	192.168.0.0/24(rw,no_subtree_check,no_root_squash)
/media/yanplus/dplus		192.168.0.0/24(rw,no_subtree_check,no_root_squash)
/media/yanplus/sauvegarde	192.168.0.0/24(rw,no_subtree_check,no_root_squash)
/media/video			192.168.0.0/24(rw,no_subtree_check,no_root_squash)

Relancer le service nfs pour la prise en charge
systemctl restart nfs-kernel-server

NFS Client Archlinux/Manjaro

Installer le paquet nfs-utils

sudo pacman -S nfs-utils

Coté client le service rpcbind est utilisé

systemctl start rpcbind
systemctl status rpcbind
systemctl enable rpcbind

Création des dossiers sur le client

mkdir -p /mnt/devel

Démarrage auto par ajout dans /etc/fstab

192.168.0.45:/media/yanplus/devel	  	/mnt/devel 	  nfs4 noauto,x-systemd.automount 0  0

SSH par clés

Ajout clé publique shuttle.pub depuis poste appelant

scp ~/.ssh/shuttle_ed25519.pub yann@192.168.0.45:/home/yann

Sur le poste distant création en mode utilisateur “yann” du dossier .ssh et des droits

mkdir ~/.ssh
chmod 700 ~/.ssh

Ajout de la clé publique

cat shuttle_ed25519.pub >> ~/.ssh/authorized_keys
#modifier les droits
chmod 600 ~/.ssh/authorized_keys
#Effacer le fichier de la clé
rm shuttle_ed25519.pub.pub

Modification fichier configuration ssh

sudo nano /etc/ssh/sshd_config
Port 55022
PermitRootLogin		no
PasswordAuthentication	no
#si délai lors d'une connexion ssh sous Linux
UseDNS no

Relancer

sudo systemctl restart ssh

Test depuis un poste sur le réseau
ssh yann@192.168.0.45 -p 55022 -i /home/yannick/.ssh/shuttle_ed25519

Exécution script sur connexion
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

Le batch
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`

echo "\033[0m\033[1;31m"  
figlet "yanspm.com"
echo "\033[0m
\033[1;35m    \033[1;37mHostname \033[1;35m= \033[1;32m`hostname`
\033[1;35m    \033[1;37mWired Ip \033[1;35m= \033[1;32m`ip addr show eth0 | grep 'inet\b' | 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 Ip V4 \033[1;35m= \033[1;32m`echo $publicip`
\033[1;35m\033[1;37mPublic Ip V6 \033[1;35m= \033[1;32m`ip addr show eth0 | grep -E 'inet6' |grep -E 'global' | awk '{print $2}' | cut -d/ -f1`
\033[0m"
#curl fr.wttr.in/Paris?0

Effacer motd
sudo rm /etc/motd
Déconnexion puis connexion

Màj auto sécurité Debian

Toutes les instructions suivantes sont exécutées après passage en mode su ou sudo
L’automatisation sera pris en charge par l’outil cron-apt. Cron-apt permet de vérifier à intervalle régulier, via le crontab , si des mises à jours sont disponibles et va les installer.
apt install cron-apt
Création du fichier security.sources.list utilisé par cron-apt et qui ne contiendra que le(s) dépôt(s) de sécurité Debian.
grep security /etc/apt/sources.list > /etc/apt/security.sources.list
On édite le fichier de configuration de cron-apt /etc/cron-apt/config

APTCOMMAND=/usr/bin/apt
OPTIONS="-o quiet=1 -o Dir::Etc::SourceList=/etc/apt/security.sources.list"
MAILTO="root"
MAILON="always"

Pour déclencher la mise à jour automatique après téléchargement , supprimer option -d dans le fichier /etc/cron-apt/action.d/3-download
dist-upgrade -y -o APT::Get::Show-Upgraded=true
Test immédiat
cron-apt
Patienter quelques minutes
Par défaut l’exécution est programmée à 4h00 chaque jour, pour spécifier un créneau horaire modifier le fichier /etc/cron.d/cron-apt.

Mémoire cache

Libère la mémoire des données cache et tampon
# sync; echo 3 > /proc/sys/vm/drop_caches
La commande sync permet de s’assurer que toutes les informations en mémoire en attente d’écriture soient bien répercutées sur le disque
Créer une tâche pour vider le cache tous les jours

sudo -s
crontab -e

Ajouter en fin de fichier
0 12 * * * sync; echo 3 > /proc/sys/vm/drop_caches

Yunohost

Installation yunohost

Les DNS sont configurées de base…

Connexion sur “shuttle” en su (par console ou SSH)

Cloner le dépôt du script d’installation de YunoHost

sudo -s
git clone https://github.com/YunoHost/install_script /tmp/install_script

Lancer le script d’installation

cd /tmp/install_script
./install_yunohost

Poursuivre la post-installation :
Domaine par défaut : yanspm.com
Mot de passe administration : xxxxxx

En mode commande
Ajout domaine ouestline.net , devel.ouestline.net et music.ouestline.net

yunohost domain add ouestline.net
yunohost domain add devel.ouestline.net
yunohost domain add musicouestline.net

Certificats letsencrypt pour les domaines yanspm.com et ouestline.net
yunohost domain cert-install
Générer une clé Diffie-Hellman

sudo openssl dhparam -out /etc/ssl/private/dh4096.pem -outform PEM -2 4096  

Clé sous /etc/ssl/private ,propriétaire et droits

sudo chown root.ssl-cert /etc/ssl/private/dh4096.pem   
sudo chmod 640 /etc/ssl/private/dh4096.pem  

Modifier les fichiers de configuration des différents domaines activer Diffie-Hellmann ssl_dhparam /etc/ssl/private/dh4096.pem;

sudo -s
sed -i 's:#ssl_dhparam /etc/ssl/private/dh2048.pem;:ssl_dhparam /etc/ssl/private/dh4096.pem;:g' /etc/nginx/conf.d/yanspm.com.conf
sed -i 's:#ssl_dhparam /etc/ssl/private/dh2048.pem;:ssl_dhparam /etc/ssl/private/dh4096.pem;:g' /etc/nginx/conf.d/ouestline.net.conf
sed -i 's:#ssl_dhparam /etc/ssl/private/dh2048.pem;:ssl_dhparam /etc/ssl/private/dh4096.pem;:g' /etc/nginx/conf.d/devel.ouestline.net.conf
sed -i 's:#ssl_dhparam /etc/ssl/private/dh2048.pem;:ssl_dhparam /etc/ssl/private/dh4096.pem;:g' /etc/nginx/conf.d/music.ouestline.net.conf
exit

Vérifier syntaxe
sudo nginx -t
Recharger nginx
sudo systemctl reload nginx

Activer le port 55022 et désactiver le port 22 sur le parefeu yunohost

sudo yunohost firewall allow TCP 55022
sudo yunohost firewall disallow TCP 22

Yunohost Connexion web admin

Connexion en admin https://yanspm.com

Ajout Utilisateur
Création yanspm
Adresse de messagerie : yanspm@yanspm.com

Domaines

Configuration DNS yanspm.com

# Basic ipv4/ipv6 records
@ 3600 IN A 78.230.171.39
* 3600 IN A 78.230.171.39
@ 3600 IN AAAA 2a01:::b270::1
* 3600 IN AAAA 2a01:::b271::1

# XMPP
_xmpp-client._tcp 3600 IN SRV 0 5 5222 yanspm.com.
_xmpp-server._tcp 3600 IN SRV 0 5 5269 yanspm.com.
muc 3600 IN CNAME @
pubsub 3600 IN CNAME @
vjud 3600 IN CNAME @

# Mail
@ 3600 IN MX 10 yanspm.com.
@ 3600 IN TXT "v=spf1 a mx ip4:78.230.171.39 ip6:2a01:::b270::1 -all"
mail._domainkey 3600 IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrSvDcv9COapTGktpTcqIj9XOnUw21PvEPMPQgsKfzEmfyH5PijRD2TLOBzkR9Q0wkn/O0CyEyxQ+wVP1iEDad4q5+sxAutFmZicuwGWQ1qek9blZ4j5UmUAd84N76wd668vX8D0fKjmpqyXPP14+IwZBNGloj5XRMVK5BMNxXjQIDAQAB"
_dmarc 3600 IN TXT "v=DMARC1; p=none"

Configuration DNS ouestline.net

# Basic ipv4/ipv6 records
@ 3600 IN A 78.230.171.39
* 3600 IN A 78.230.171.39
@ 3600 IN AAAA 2a01:::b270::1
* 3600 IN AAAA 2a01:::b270::1

# XMPP
_xmpp-client._tcp 3600 IN SRV 0 5 5222 ouestline.net.
_xmpp-server._tcp 3600 IN SRV 0 5 5269 ouestline.net.
muc 3600 IN CNAME @
pubsub 3600 IN CNAME @
vjud 3600 IN CNAME @

# Mail
@ 3600 IN MX 10 ouestline.net.
@ 3600 IN TXT "v=spf1 a mx ip4:78.230.171.39 ip6:2a01:::b270::1 -all"
mail._domainkey 3600 IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDr3P7ZWl1NWhflWcU+98wmjz/RA4AXNJryMeUk2azwadVhQuZwpvPtqifS7SuRDluIBZYDv7pPsImgMUoIShlc6nuFaawKQ6AoEZJaOSIL/xRaQmZ2Zfj8daeP8wNkK158NWmRiJE9tgrZzqp8FSp+Ae6bQSv9UUSpw3F0JtXbWQIDAQAB"
_dmarc 3600 IN TXT "v=DMARC1; p=none"

Ces paramètres seront utilisés dans la mise à jour du gestionnaire de domaine (OVH)

Applications

Pour une application web de type sub.modomaine.tld, il faut créer le domaine et lui générer des certificats SSL

Nextcloud

Nextcloud , installation par le web admin
Accéder au dossier personnel des utilisateurs depuis Nextcloud ? Oui (On peut utiliser les dossiers utilisateurs)

QOwnNotesAPI
Connexion ssh sur le serveur
Accès dossier /var/www/nextcloud en mode su
Cloner QOwnNotesAPI
git clone https://github.com/pbek/qownnotesapi.git apps/qownnotesapi -b master
Droits nextcloud
chown nextcloud.nextcloud -R apps/qownnotesapi
Cloner Notes
git clone https://github.com/nextcloud/notes.git apps/notes -b master
Droits nextcloud
chown nextcloud.nextcloud -R apps/notes
Créer le dossier Notes
Activer l’application QOwnNotesAPI et Notes par le web nextcloud (+Applications) , mot de passe pour validation

Clients linux et android Installer l’application bureau linux QOwnNotes,voir https://www.qownnotes.org/
Installer application android Notes

Développement

Développement
Installer une application personnalisée Multi custom webapp https://github.com/YunoHost-Apps/multi_webapp_ynh
Libellé pour Multi custom webapp : Développement
Choisissez un domaine pour votre Webapp : dev.ouestline.net
Choisissez un chemin pour votre Webapp : / (il ne sera plus possible d’ajouter quoique ce soit à ce domaine)
Choisissez l’utilisateur YunoHost associé : yan spm
Créer une base de données? : Non (ne pas cocher la case)
Est-ce un site public ? : Non (ne pas cocher la case)
Vous ne pourrez pas installer d’autres applications sur dev.ouestline.net. Continuer ? OK

Dossier root web /var/www/webapp_yanspm/devel.ouestline.net/
Supprimer le dossier root
sudo rm -r /var/www/webapp_yanspm/devel.ouestline.net/
Créer un lien avec devel
sudo ln -s /media/yanplus/devel/ouestline /var/www/webapp_yanspm/devel.ouestline.net
Modifier la configuration
sudo nano /etc/nginx/conf.d/devel.ouestline.net.d/webapp_devel.ouestline.net.conf

location / {
	alias /var/www/webapp_yanspm/devel.ouestline.net/ ;
	if ($scheme = http) {
		rewrite ^ https://$server_name$request_uri? permanent;
	}
	index index.html index.php ;
	try_files $uri $uri/ index.php;
	location ~ [^/]\.php(/|$) {
		fastcgi_split_path_info ^(.+?\.php)(/.*)$;
		fastcgi_pass unix:/var/run/php5-fpm-webapp_devel.ouestline.net.sock;
		fastcgi_index index.php;
		include fastcgi_params;
		fastcgi_param REMOTE_USER $remote_user;
		fastcgi_param PATH_INFO $fastcgi_path_info;
		fastcgi_param SCRIPT_FILENAME $request_filename;
	}

    fancyindex on;              # Enable fancy indexes.
    fancyindex_exact_size off;  # Output human-readable file sizes.
	# Include SSOWAT user panel.
	include conf.d/yunohost_panel.conf.inc;
}

Redémarrer nginx sudo systemctl restart nginx

Subsonic

Subsonic
Installer une application personnalisée Multi custom webapp https://github.com/YunoHost-Apps/multi_webapp_ynh
Libellé pour Multi custom webapp : Subsonic
Choisissez un domaine pour votre Webapp : music.ouestline.net
Choisissez un chemin pour votre Webapp : / (il ne sera plus possible d’ajouter quoique ce soit à ce domaine)
Choisissez l’utilisateur YunoHost associé : yan spm
Créer une base de données? : Non (ne pas cocher la case)
Est-ce un site public ? : Oui (cocher la case)
Vous ne pourrez pas installer d’autres applications sur music.ouestline.net. Continuer ? OK

Installer jdk
sudo apt-get install openjdk-7-jre

Télécharger le .deb <http://www.subsonic.org/pages/download.jsp>  
`wget https://s3-eu-west-1.amazonaws.com/subsonic-public/download/subsonic-6.1.1.deb`  
Installer le .deb  
`sudo dpkg -i subsonic-6.1.1.deb`
Fichier de configuration **/etc/default/subsonic**

```conf
SUBSONIC_ARGS="--port=8090 --max-memory=200"
SUBSONIC_USER=yann

Redémarrer le service
sudo systemctl restart subsonic
Modifier le fichier de configuration nginx
nano /etc/nginx/conf.d/music.ouestline.net.d/webapp_music.ouestline.net.conf

location / {
      proxy_pass   http://127.0.0.1:8090;
}

Recharger nginx
sudo systemctl reload nginx
Accès https://music.ouestline./net

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

Calibre-Web

Calibre Web est une application web fournissant une interface propre pour la navigation, la lecture et le téléchargement de livres électroniques à l’aide d’une base de donnéesCalibre existante.

Installation application **calibre-web** dans le répertoire **/home/yann**

cd /home/yann
git clone https://github.com/janeczku/calibre-web.git
cd calibre-web
# installation des prérequis
pip install --target vendor -r requirements.txt

Pour lancer le serveur calibre-web au démarrage , créer un bash sous /home/yann

nano /home/yann/start_calibre-web.sh
#!/bin/sh
#lancement calibre-web
cd /home/yann/calibre-web/
python cps.py

Propriétaire et droits

sudo chown yann.users /home/yann/start_calibre-web.sh
chmod +x /home/yann/start_calibre-web.sh

Utilisation fichier systemd pour le lancement automatique

sudo nano /etc/systemd/system/calibre-web.service

Contenu du fichier

[Unit]
Description=Service calibre-web
After=network.target

[Service]
Type=simple
User=yann
ExecStart=/bin/sh /home/yann/start_calibre-web.sh
Restart=on-abort


[Install]
WantedBy=multi-user.target

ATTENTION! , User est l’utilisateur connecté

Lancer le service calibre-web :

sudo systemctl start calibre-web

Vérifier:

sudo systemctl status calibre-web
● calibre-web.service - Service calibre-web
   Loaded: loaded (/etc/systemd/system/calibre-web.service; disabled)
   Active: active (running) since jeu. 2017-11-09 18:14:37 CET; 10s ago
 Main PID: 12393 (sh)
   CGroup: /system.slice/calibre-web.service
           ├─12393 /bin/sh /home/yann/start_calibre-web.sh
           └─12394 python cps.py

nov. 09 18:14:37 yanspm.com systemd[1]: Started Service calibre-web.

Activation

sudo systemctl enable calibre-web

Yunohost

Calibre-Web
Installer une application personnalisée Multi custom webapp https://github.com/YunoHost-Apps/multi_webapp_ynh
Libellé pour Multi custom webapp : Calibre Web
Choisissez un domaine pour votre Webapp : calibre.ouestline.net
Choisissez un chemin pour votre Webapp : / (il ne sera plus possible d’ajouter quoique ce soit à ce domaine)
Choisissez l’utilisateur YunoHost associé : yan spm
Créer une base de données? : Non (ne pas cocher la case)
Est-ce un site public ? : Non (ne pas cocher la case)
Vous ne pourrez pas installer d’autres applications sur calibre.ouestline.net. Continuer ? OK

Dossier root web /var/www/webapp_yanspm/calibre.ouestline.net/

Modifier la configuration, créer un proxy pour l’application calibre-web
sudo nano /etc/nginx/conf.d/calibre.ouestline.net.d/webapp_calibre.ouestline.net.conf

location / {
 proxy_pass              http://127.0.0.1:8083;
}

Redémarrer nginx sudo systemctl restart nginx

Premier lancement ,accès à la configuration https://calibre.ouestline.net/config
Renseigner “Location of Calibre database” : /media/yanplus/BiblioCalibre puis cliquer sur submit
Si le chemin est correct , cliquer sur le bouton login : Username: admin , Password: admin123 et submit

Paramétrage , cliquer sur Admin (pas sur admin avec le a minuscule)

Cliquer sur Add new user
Username : yann
Email address : yann@ouestline.net
Password : xxxxxx
Kindle email:
Language : français
Show books with language : French
Cliquer sur submit

Modifier admin , cliquer sur admin Email address : admin@ouestline.net
Password : xxxxxx
Kindle email:
Language : français
Show books with language : French
Cliquer sur submit

image

Onduleur

Matériel

Installation et gestion d’un UPS USB en réseau sous linux
UPS = Uninterruptable Power System
Le périphérique UPS Eaton Protection Station 800 USB à gérer est de type “HID”
Connecter l’onduleur liaison USB sur un port disponible du serveur

#passer en mode su
sudo -s
#dmesg montre que votre UPS est détecté :
dmesg

[...]
[12917.408017] usb 1-2: new low-speed USB device number 3 using uhci_hcd
[12919.500091] usb 1-2: New USB device found, idVendor=0463, idProduct=ffff
[12919.500095] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=4
[12919.500098] usb 1-2: Product: Protection Station
[12919.500100] usb 1-2: Manufacturer: EATON
[12919.500103] usb 1-2: SerialNumber: AN2E49008
[12921.694729] hid-generic 0003:0463:FFFF.000A: hiddev0,hidraw0: USB HID v10.10 Device [EATON Protection Station] on usb-0000:00:1d.0-2/input0

Ok, l’UPS est détecté correctement, mais maintenant il faut encore vérifier son pseudo-fichier dans /dev

ls -l /dev/usb/
total 0
crw------- 1 root root 180, 0 oct.   7 09:30 hiddev0

périphérique en mode caractère /dev/usb/hiddev0 (les données échangées entre l’ups et l’ordinateur sont des codes alphanumériques )

Installation nut

Installer les paquets NUT sous Debian Jessie :

apt install nut

on choisit le mode STANDALONE dans fichier /etc/nut/nut.conf.

  MODE=standalone

Il faut ensuite spécifier comment communiquer avec l’UPS, donc choisir le driver et le port , ce qui fait dans le fichier /etc/nut/ups.conf

[eaton]
	driver = usbhid-ups 
	port = auto
	desc = "Eaton Protection Station 800"

Configurer le démon réseau au niveau des accès via le fichier /etc/nut/upsd.conf
On écoute en local sur le port 3493

LISTEN 127.0.0.1 3493
LISTEN ::1 3493
MAXCONN 32 #Nombre maximal de connections simultanées

Utilisateurs

Créer les utilisateurs (administrateur et superviseur) fichier /etc/nut/upsd.users

# 1 seul utilisateur "ond" avec tous les droits ! 
[ond]
password = dfYRtY38
upsmon master

Moniteur de supervision

Le moniteur de supervision va surveiller l’onduleur et lancer différentes actions en fonction des évènements constatés fichier /etc/nut/upsmon.conf

# Notre serveur n'a pas d'alimentation redondante = 1
MINSUPPLIES 1
# Commande d'arrêt du serveur en cas de fin d'autonomie
SHUTDOWNCMD "/sbin/shutdown -h +0"
# Commande lancée quand quelque chose se passe
NOTIFYCMD /sbin/upssched
# Interval entre deux interrogations de upsd
POLLFREQ 5
# Intervalle entre deux interrogations de upsd en mode "batterie"
POLLFREQALERT 5
# Temps d'attente pour la déconnexion des upsmon esclaves
HOSTSYNC 15
# Temps pendant lequel on tolère la non-réponse d'un onduleur, multiple de POLLFREQ
DEADTIME 15
# Fichier d'état
POWERDOWNFLAG /etc/killpower
# Intervalle de 1/2 jour, pour répéter le message de "remplacement de batteries - NOTIFY_REPLBATT"
RBWARNTIME 43200
# Interval de 5 minutes, pour répéter le message de "onduleur injoignable - NOTIFY_NOCOMM"
NOCOMMWARNTIME 300
# Intervalle entre la "notification d'arrêt - NOTIFY_SHUTDOWN" et le lancement de SHUTDOWNCMD
FINALDELAY 5
# On surveille l'onduleur qui est directement relié (master)
MONITOR eaton@localhost 1 ond dfYRtY38 master
# Actions spécifiques autres que par défaut (SYSLOG et WALL) réalisées en fonction de l'état retourné par l'onduleur
NOTIFYFLAG COMMBAD EXEC
NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN EXEC
NOTIFYFLAG COMMOK IGNORE

On remarque que, à part l’arrêt du système sur fin des batteries qui est géré par upsmon, toutes les notifications le sont par upssched.

Distributeur d’évènements

L’utilitaire upssched permet de « temporiser » les actions liées aux évènements générés par upsmon.
C’est surtout intéressant lorsque des évènements furtifs se produisent (microcoupures) fichier /etc/nut/upssched.conf.

# Script lancé par upssched pour gérer les évènements et les timers associés 
CMDSCRIPT /etc/nut/upssched-cmd
# Fichier pour noter les états internes de upssched 
PIPEFN /var/run/nut/upssched.pipe
# Fichier de lock pour éviter un conflit en cas de notification de deux évènements simultanés
LOCKFN /var/run/nut/upssched.lock
 
# En cas de perte de communication avec l'onduleur
AT COMMBAD * EXECUTE perte-liaison
 
# En cas de retour secteur, on stope la minuterie et on notifie 
AT ONLINE * CANCEL-TIMER attente-retour-secteur 
AT ONLINE * EXECUTE charge-sur-secteur
 
# En cas de perte de secteur, on se laisse au maximum 20 minutes avant d'agir et on notifie 
AT ONBATT * START-TIMER attente-retour-secteur 1200 
AT ONBATT * EXECUTE charge-sur-batterie 
 
# En cas de niveau de batteries trop bas
AT LOWBATT * EXECUTE batteries-vides
 
# En cas de fin de vie des batteries on sera prévenu 
AT REPLBATT * EXECUTE batteries-hs
 
# En cas d'arrêt (fin des 20 minutes  ou fin d'autonomie), on notifie. 
AT SHUTDOWN * EXECUTE arret-en-cours

Prise en charge des évènements (script)

Fichier /etc/nut/upssched-cmd

#!/usr/bin/perl -w
use Encode;
use utf8;
use strict;
use Switch;
# encodage des données transmises dans l’URL
use URI::Escape;
 
sub SendEmail
{
    my ( $from, $to, $subject, $msg ) = @_;
 
    $from = Encode::encode('MIME-Q', $from);
    $to = Encode::encode('MIME-Q', $to);
    $subject = Encode::encode('MIME-Q', $subject);
 
    open (SENDMAIL, "| /usr/sbin/sendmail -t") or die("Failed to open pipe to sendmail: $!");
    binmode(SENDMAIL, ":utf8");
    print SENDMAIL <<"EOF";
Content-Transfer-Encoding: 8bit
Content-type: text/plain; charset=UTF-8
Subject: $subject
From: $from
To: $to
$msg
EOF
    close (SENDMAIL);
}
 
my $orig= 'Onduleur@yanspm.com';
my $dest='yanspm@yanspm.com';
my $sujet="Onduleur - Arrêt en cours";
my $message="Le système est en cours d'arrêt.";
my $comment="";
#
# Début du programme
#
if ($#ARGV == -1) {
   print "Saisir argument : "; $comment=<STDIN>; chomp($comment);
  }
else {
   $comment=$ARGV[0];
   }
#
# Analyse argument
#
switch ($comment) {
 
 	case "charge-sur-batterie" { 
			$sujet="Onduleur - Charge sur batteries";
			$message="L'onduleur est passé sur batteries ...\nL'arrêt système sera demandé si le secteur ne revient pas." ;
	}
 
	case "attente-retour-secteur" {
		$sujet="Onduleur - Fin d'attente de retour secteur";
		$message="Cela fait trop longtemps que le secteur est absent.\nUn arrêt forcé est en cours !";
 
		# Demande d'arrêt forcé (force shut down)
		system "/sbin/upsmon -c fsd";
	}
 
	case "charge-sur-secteur" {
		$sujet="Onduleur - Charge sur secteur";
		$message="L'onduleur est revenu sur secteur.";
	}
 
	case "batteries-vide" {
		$sujet="Onduleur - Batteries vides";
		$message="Les batteries sont vides, l'arrêt est imminent.";
	}
 
	case "arret-en-cours" {
		$sujet="Onduleur - Arrêt en cours";
		$message="Le système est en cours d'arrêt.";
	}
 
	case "perte-liaison" {
                $sujet="Onduleur - Perte de liaison avec l'onduleur";
                $message="La communication avec l'onduleur est interrompue.";
        }
 
 
	case "batteries-hs" {
                $sujet="Onduleur - URGENT - batteries HS";
                $message="Les batteries sont à remplacer d'urgence.";
	}
 
	else {
		$sujet="Onduleur - Commande inconnue ...";
		$message="Une commande inconnue a été envoyée par l'onduleur.\nLa commande est : $comment";
	}
 
}
 
 
# Envoi du message
SendEmail($orig,$dest,$sujet,$message);

Rendre exécutable le script

chmod +x /etc/nut/upssched-cmd

Redémarrer la machine

vérifier si les daemons sont lancés

ps auxf |grep ups

root      1479  0.0  0.0  12748  2232 pts/0    S+   10:42   0:00                      \_ grep ups
nut       1373  0.0  0.0  19140  1668 ?        Ss   10:35   0:00 /lib/nut/usbhid-ups -a eaton
nut       1375  0.0  0.0  31864  2112 ?        Ss   10:35   0:00 /lib/nut/upsd
root      1377  0.0  0.0  29492  1496 ?        Ss   10:35   0:00 /lib/nut/upsmon
nut       1378  0.0  0.0  37668  4892 ?        S    10:35   0:00  \_ /lib/nut/upsmon

Onduleur connecté ?

upsc eaton@localhost

[...]
ups.mfr: EATON
ups.model: Protection Station 800
ups.power.nominal: 800
ups.productid: ffff
ups.serial: AN2E49008
ups.status: OL CHRG
ups.timer.shutdown: 0
ups.timer.start: 0
ups.vendorid: 0463

PhpMail

Utilitaire /usr/local/bin/phpmail pour envoi de message

#!/usr/bin/php
<?php

/*
syntaxe:

exemple:
*/

//*** Lecture des arguments ***
    foreach ($argv as $arg) {
         $e=explode("=",$arg);
        if(count($e)==2)
            $_GET[$e[0]]=$e[1];
        else   
            $_GET[]=$e[0];
    }

//var_dump($_GET);

// Aide
if ($e[0] == "--help" || $e[0] == "-h") {
   echo 'syntaxe :'."\n".'phpmail --message="texte du message" --exe="la commande à exécuter (texte)" --subject="objet du message" --from="adresse mail expéditeur" --to="adresse mail destinataire"'."\n";
   echo 'Option "--exe" facultative ,commande à exécuter entre 2 "`"'."\n";
exit();
}

//message
$message = '';
// option --exe
if (isset($_GET["--exe"])) {
 $message = shell_exec($_GET["--exe"]);
}

// option --message
if (isset($_GET["--message"])) {
  if (empty($message)) {
    $message =  $_GET["--message"];
  } else {
    $message = $_GET["--message"]."\n".$message;
  }
}

// Envoie message uniquement si option "--exe" ou/et "--message"
if (isset($_GET["--exe"]) || isset($_GET["--message"])) {
	$headers = 'From: '.$_GET["--from"]."\r\n".'Content-Type: text/plain; charset=utf-8'."\r\n";
	mail($_GET["--to"], '=?utf-8?B?'.base64_encode($_GET["--subject"]).'?=', $message, $headers);
}
?>

Sauvegardes

serveur de sauvegarde (shuttle)

Création utilisateur backupuser et jeu de clé ssh
sudo adduser backupuser #mot de passe à saisir
Cette commande va vous demander plusieurs informations et notamment un mot de passe à noter impérativement.
N’hésitez pas à définir un mot de passe compliqué, d’environ 16 caractères avec des chiffres, des lettres majuscule/minuscule et quelques caractères spéciaux car vous n’aurez à le taper réellement qu’une fois.

On se connecte en backupuser sudo su backupuser
On va au dossier
cd /home/backupuser
Création dossier .ssh
mkdir /home/backupuser/.ssh/
Générer les clés RSA

ssh-keygen -t rsa
chmod 400 id_rsa*       #lecture seule pour utilisateur backupuser 
exit                   # retour sur utilisateur précédent

Supprimer le lien media
sudo rm /home/backupuser/media
Copier la clé publique id_rsa.pub sur l’hôte distant

Sauvegarde des serveurs distants par rsync sur dossier /media/yanplus/sauvegarde/aujourdhui
/home/backupuser/sauvegarde.sh

#!/bin/bash
#
#echo $(date) "Effacement dossier /media/yanplus/sauvegarde/hier/" >> /home/backupuser/sauvegarde.log
#/bin/rm -rf /media/yanplus/sauvegarde/hier/ 
#echo $(date) "Copie dossier /media/yanplus/sauvegarde/aujourdhui dans /media/yanplus/sauvegarde/hier"  >> /home/backupuser/sauvegarde.log
#/bin/cp -al /media/yanplus/sauvegarde/aujourdhui /media/yanplus/sauvegarde/hier 
# serveur de sauvegarde
echo $(date) "Sauvegarde locale shuttle"  >> /home/backupuser/sauvegarde.log
/usr/bin/rsync -a --delete --exclude-from '/home/backupuser/exclude.txt' / /media/yanplus/sauvegarde/aujourdhui/shuttle &>> /home/backupuser/sauvegarde.log
echo $(date) "Fin sauvegarde locale shuttle"  >> /home/backupuser/sauvegarde.log

# hôtes distants
echo $(date) "Sauvegarde hôte distant yanfi.net"  >> /home/backupuser/sauvegarde.log
/usr/bin/rsync -aev --delete --rsync-path=/home/backupuser/rsync-wrapper.sh --exclude-from '/home/backupuser/exclude.txt' --rsh="/usr/bin/ssh -p 49022 -i /home/backupuser/.ssh/id_rsa" backupuser@yanfi.net:/ /media/yanplus/sauvegarde/aujourdhui/yanfi &>> /home/backupuser/sauvegarde.log
echo $(date) "Fin sauvegarde hôte distant yanfi.net"  >> /home/backupuser/sauvegarde.log

echo $(date) "Sauvegarde hôte distant cinay.pw"  >> /home/backupuser/sauvegarde.log
/usr/bin/rsync -aev --delete --rsync-path=/home/backupuser/rsync-wrapper.sh --exclude-from '/home/backupuser/exclude.txt' --rsh="/usr/bin/ssh -p 55027 -i /home/backupuser/.ssh/id_rsa" backupuser@cinay.pw:/ /media/yanplus/sauvegarde/aujourdhui/cinay.pw &>> /home/backupuser/sauvegarde.log
echo $(date) "Fin sauvegarde hôte distant cinay.pw"  >> /home/backupuser/sauvegarde.log

/usr/local/bin/phpmail --exe="`echo "grep -A 20 '$(date +"%-d %B %Y")' /home/backupuser/sauvegarde.log"`" --subject="Sauvegarde du $(date +"%d %B %Y")" --from="shuttle" --to="yanspm@yanspm.com"

Le fichier d’exclusion rsync pour la sauvegarde des installations linux debian
/home/backupuser/exclude.txt

dev/*
proc/*
sys/*
tmp/*
run/*
mnt/*
media/*
lost+found

Avant de lancer la première sauvegarde il faut initialiser la session SSH des distants

ssh -p 49022 -i /home/backupuser/.ssh/id_rsa backupuser@yanfi.net # Are you sure you want to continue connecting (yes/no)? yes ,exit
ssh -p 55027 -i /home/backupuser/.ssh/id_rsa backupuser@cinay.pw  # Are you sure you want to continue connecting (yes/no)? yes ,exit

Lancement manuel
sudo -s && cd /home/backupuser && ./sauvegarde.sh

Sauvegarde locale

Sauvegarde yunohost /home/backupuser/savyuno.sh

#!/bin/bash

DOMAINE="yanspm.com"
rm /home/backupuser/$DOMAINE.info.json
rm /home/backupuser/$DOMAINE.tar.gz
/usr/bin/yunohost backup create -n $DOMAINE
mv /home/yunohost.backup/archives/$DOMAINE.info.json /home/backupuser/
mv /home/yunohost.backup/archives/$DOMAINE.tar.gz /home/backupuser/

Aperçu du résultat sur un lancement manuel
sudo -s && cd /home/backupuser && ./savyuno

Succès ! Sauvegarde terminée
name: yanspm.com
results: 
  apps: 
    multi_webapp: Success
    multi_webapp__2: Success
    nextcloud: Success
  system: 
    conf_cron: Success
    conf_ldap: Success
    conf_nginx: Success
    conf_ssh: Success
    conf_ssowat: Success
    conf_xmpp: Success
    conf_ynh_certs: Success
    conf_ynh_currenthost: Success
    conf_ynh_firewall: Success
    conf_ynh_mysql: Success
    data_home: Success
    data_mail: Success
size: 498806502

Sauvegardes programmées

Modifier le “scheduler”
sudo crontab -e
Ajouter en fin de fichier

30 1 * * *  /home/backupuser/savyuno.sh
15 3 * * * /home/backupuser/sauvegarde.sh

La sauvegarde locale savyuno.sh démarre à 1h30m
La sauvegarde sauvegarde.sh de shuttle et des distants (yanfi.net et cinay.pw) démarre à 3h15

NFS et NAS

/etc/fstab

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/vg--ssd--one-rootb /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda2 during installation
UUID=6b76631b-a7c1-41a7-8af2-bdfffa099a62 /boot           ext2    defaults        0       2
/dev/mapper/vg--ssd--one-home /home           ext4    defaults        0       2
/dev/mapper/vg--ssd--one-swap none            swap    sw              0       0
/dev/mapper/vg--nas--one-yanplus /media/yanplus  ext4    defaults          0       2
/dev/mapper/vg--nas--one-video   /media/video    ext4    defaults          0       2
/dev/mapper/vg--nas--one-serie   /media/serie    ext4    defaults          0       2

/etc/exports

# /etc/exports: the access control list for filesystems which may be exported
#		to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
# ' exportfs -a' : Met à jour la liste des systèmes de fichiers exportés
#
/media/yanplus/devel		192.168.0.0/24(rw,no_subtree_check,no_root_squash)
/media/yanplus/Musique		192.168.0.0/24(rw,no_subtree_check,no_root_squash)
/media/yanplus/BiblioCalibre	192.168.0.0/24(rw,no_subtree_check,no_root_squash)
/media/yanplus/dplus		192.168.0.0/24(rw,no_subtree_check,no_root_squash)
/media/yanplus/sauvegarde	192.168.0.0/24(rw,no_subtree_check,no_root_squash)
/media/video			192.168.0.0/24(rw,no_subtree_check,no_root_squash)
/media/serie			192.168.0.0/24(rw,no_subtree_check,no_root_squash)

IPV6

Depuis Freebox OS 2.0, la configuration IPv6 permet de configurer des “next hops” pour 8 prefixes /64 (Autrement dit, chaque abonné Freebox dispose d’un /61).
Modifier la configuration IPV6 de la freebox
Adresse IPV6 lien local : fe80:::::aa20 Délégation de prefixe
Attention si vous configurez un Next Hop pour le premier subnet, il ne sera plus annoncé par la Freebox sur votre réseau
Prefixe : 2a01:::b270::/64
Next hop : Prefixe : 2a01:::b271::/64
Next hop : fe80:::::150c

Configurer le réseau IPV6 /etc/network/interfaces ,ajouter

iface eth0 inet6 static
  address 2a01:::b271::1
  netmask 64
  post-up ip -6 route add default via fe80:::::aa20 dev eth0

Point d’accès WIFI

Utilisation dongle USB/Wifi Ralink RT5370 (AP)

Ralink RT2070, RT2770, RT2870, RT3070, RT3071, RT3072, RT3370, RT3572, RT5370, RT5372, RT5572 devices (rt2800usb)

1 Ajoutez la source “non-free” à votre fichier /etc/apt/sources.list, par exemple :

# Debian 8 "Jessie"
deb http://httpredir.debian.org/debian/ jessie main contrib non-free

# Debian 9 "Stretch"
deb http://http.debian.net/debian/ stretch main contrib non-free

2 Mettez à jour la liste des paquets disponibles:

# apt-get update 

3 Debian 8: Installer le paquet firmware-ralink:

#  apt-get install firmware-ralink

Debian 9: Installer le paquet firmware-misc-nonfree:

# apt-get install firmware-misc-nonfree

4 Insérer le dongle USB/wifi Ralink RT5370
Le module noyau rt2800usb est automatiquement chargé pour les périphériques pris en charge.

5 Configurez une interface WiFi
Installer les paquets wifi

sudo apt install iw wireless-tools

Interface réseau

ip a
3: wlan2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 7c:dd:90:5f:68:7b brd ff:ff:ff:ff:ff:ff
iwconfig
wlan2     IEEE 802.11bgn  Mode:Master  Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:off

Activation

ip link set wlan2 up

Vérification

iwlist scan # affiche les réseau wifi

Application HotSpot wifi

La brique internet

Application wifi hotspot pour yunohost : https://github.com/labriqueinternet/hotspot_ynh
Interface : wlan2

Wifi
Canal : 6
SSID : YanHotSpot
Sécurité : WPA2/PSK

IPV6
Préfixe délégué : 2a01:::b271::
Pare-feu : on
Résolveur DNS 1 : 2001:913::8
Résolveur DNS 2 : 2001:910:800::12

IPV4
Préfixe NAT (/24) : 10.0.242
Résolveur DNS 1 : 80.67.188.188
Résolveur DNS 2 : 80.67.169.12

Détails de l’initialisation

    [INFO] Autodetected internet interface: eth0 (last start: eth0)
    [OK] IPv4 NAT set
    [OK] IPv6/IPv4 forwarding set
    [OK] Hostapd is running
    [INFO] hotspot0: IPv6 delegated prefix found
    [INFO] hotspot0: IPv6 address computed from the delegated prefix: 2a01:::b271::42
    [OK] hotspot0: IPv6 address set
    [OK] hotspot0: IPv6 firewalling set
    [OK] hotspot0: NDP and DHCPv6 server (dnsmasq) are running
    [OK] hotspot0: DHCPv4 server (dnsmasq) is running
    [OK] hotspot0: IPv4 NAT address set