Mardi 19 mai 2020 (Modifié le Samedi 23 mai 2020)

OVH vps785909 (1 vCore/2GoRam/20GoSSD) Debian Buster

vps785909 - Debian 10

OVH

Debian 10
Debian 10 (Buster) (en version 64 bits)
L’adresse IPv4 du VPS est : 54.37.13.57
L’adresse IPv6 du VPS est : 2001:41d0:0401:3200::0d48

Le nom du VPS est : vps785909.ovh.net

Le compte administrateur suivant a été configuré sur le VPS : Nom d’utilisateur : root Mot de passe : skjRFsS1

Connexion SSH en “root”

ssh root@54.37.13.57

Installer noyau 5.6

echo "deb http://deb.debian.org/debian/ unstable main" | sudo tee /etc/apt/sources.list.d/unstable-wireguard.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' | sudo tee /etc/apt/preferences.d/limit-unstable
apt update && apt upgrade
# Vérifier s'il n'y a pas une image plus récente avec 'apt search linux-image-5.'
apt install linux-image-5.6.0-1-cloud-amd64

On supprime les autres noyaux

apt remove linux-image-4.19.0-5-cloud-amd64
apt remove linux-image-4.19.0-9-cloud-amd64

Réseau

ipv6

Créer un bash pour désactiver l’initialisation réseau par le cloud sur le VPS OVH

nano initres.sh
#!/bin/bash
#
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
#
#Création du fichier **/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg** en mode su
echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
#
# Effacerle fichier /etc/network/interfaces  
rm /etc/network/interfaces
# Recréer le fichier /etc/network/interfaces
cat > /etc/network/interfaces << EOF
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
iface eth0 inet6 static
 address 2001:41d0:0401:3200::0d48
 netmask 128
 post-up /sbin/ip -6 route add 2001:41d0:0401:3200::1 dev eth0
 post-up /sbin/ip -6 route add default via 2001:41d0:0401:3200::1 dev eth0
 pre-down /sbin/ip -6 route del default via 2001:41d0:0401:3200::1 dev eth0
 pre-down /sbin/ip -6 route del 2001:41d0:0401:3200::1 dev eth0
EOF
#
# Configuration OVH à modifier /etc/cloud/cloud.cfg 
sed -i 's/preserve_hostname: false/preserve_hostname: true/g' /etc/cloud/cloud.cfg
sed -i 's/manage_etc_hosts: true/manage_etc_hosts: false/g' /etc/cloud/cloud.cfg
#
# Redémarrage de la machine
systemctl reboot

Droits et exécution

chmod +x initres.sh && ./initres.sh

Patienter quelques minutes avant la reconnexion…

Se connecter en root via SSH

ssh root@54.37.13.57

Vérifier le réseau ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:b0:09:1e brd ff:ff:ff:ff:ff:ff
    inet 54.37.13.57/32 brd 54.37.13.57 scope global dynamic eth0
       valid_lft 86380sec preferred_lft 86380sec
    inet6 2001:41d0:401:3200::d48/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:feb0:91e/64 scope link 
       valid_lft forever preferred_lft forever

Vérifier la version du noyau : uname -r5.6.0-1-cloud-amd64
Version debian : cat /etc/debian_version 10.4
Locales fr UTF8 : dpkg-reconfigure locales
Fuseau Europe/Paris : dpkg-reconfigure tzdata (facultatif car initialisé par défaut)

domaine cinay.eu

dns

Zone dns OVH

$TTL 3600
@	IN SOA dns100.ovh.net. tech.ovh.net. (2020051302 86400 3600 3600000 300)
                       IN NS     dns100.ovh.net.
                       IN NS     ns100.ovh.net.
                       IN MX     10 cinay.eu.
                       IN A      54.37.13.57
                       IN AAAA   2001:41d0:401:3200:0:0:0:d48
                   600 IN TXT    "v=spf1 mx ip4:51.75.120.106 ip6:2001:41d0:305:2100::4dc0 -all"
*                      IN CNAME  cinay.eu.
_dmarc                 IN TXT    "v=DMARC1;p=none;"
mail._domainkey        IN TXT    ( "v=DKIM1;h=sha256;k=rsa;p=MIGfMA7F1sRUycS8MS6kIQxQIDAQAB;" )

Reverse DNS sur “server” IP 54.37.13.57 → cinay.eu

Hostname

hostnamectl set-hostname cinay.eu
hostnamectl
   Static hostname: cinay.eu
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 0ef30511d74646618d92e464efb187ce
           Boot ID: 67042e4db9c04bf0a6e7e6fdf66e3a7d
    Virtualization: kvm
  Operating System: Debian GNU/Linux 10 (buster)
            Kernel: Linux 5.6.0-1-cloud-amd64
      Architecture: x86-64

Yunohost

yunohost

Installation

apt install curl
curl https://raw.githubusercontent.com/YunoHost/install_script/buster-unstable/install_yunohost | bash

Patienter…

[ OK ] YunoHost installation completed !
===============================================================================
You should now proceed with Yunohost post-installation. This is where you will
be asked for :
  - the main domain of your server ;
  - the administration password.

You can perform this step :
  - from the command line, by running 'yunohost tools postinstall' as root
  - or from your web browser, by accessing : 
    - https://54.37.13.57/ (global IP, if you're on a VPS)

If this is your first time with YunoHost, it is strongly recommended to take
time to read the administator documentation and in particular the sections
'Finalizing your setup' and 'Getting to know YunoHost'. It is available at
the following URL : https://yunohost.org/admindoc
===============================================================================

Post-installation

yunohost tools postinstall
Main domain: cinay.eu
You are now about to define a new administration password. The password should be at least 8 characters long—though it is good practice to use a longer password (i.e. a passphrase) and/or to use a variation of characters (uppercase, lowercase, digits and special characters).
New administration password: 
Confirm new administration password: 
Info: Installing YunoHost…
Info: The configuration file '/etc/nsswitch.conf' is now managed by YunoHost (category nsswitch).
Success! Configuration updated for 'nsswitch'
Info: The configuration file '/etc/nslcd.conf' is now managed by YunoHost (category nslcd).
Success! Configuration updated for 'nslcd'
Success! LDAP initialized
Success! Configuration updated for 'ssl'
Success! Local certification authority created.
Warning: No diagnosis cache yet for category 'dnsrecords'
Warning: No diagnosis cache yet for category 'web'
Success! Self-signed certificate now installed for the domain 'cinay.eu'
Success! Domain created
Success! The main domain has been changed
Info: Your root password have been replaced by your admin password.
Success! The administration password was changed
Success! Firewall reloaded
Success! App catalog system initialized!
Info: Updating application catalog…
Success! The application catalog has been updated!
Synchronizing state of yunohost-firewall.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable yunohost-firewall
Created symlink /etc/systemd/system/multi-user.target.wants/yunohost-firewall.service → /lib/systemd/system/yunohost-firewall.service.
Success! The service 'yunohost-firewall' will now be automatically started during system boots.
Success! Service 'yunohost-firewall' started
Warning: No diagnosis cache yet for category 'dnsrecords'
Warning: No diagnosis cache yet for category 'web'
Info: The configuration file '/etc/metronome/metronome.cfg.lua' is now managed by YunoHost (category metronome).
Success! Configuration updated for 'metronome'
Success! Configuration updated for 'nginx'
Info: The configuration file '/etc/postfix/master.cf' is now managed by YunoHost (category postfix).
Info: The configuration file '/etc/postfix/main.cf' is now managed by YunoHost (category postfix).
Info: The configuration file '/etc/default/postsrsd' is now managed by YunoHost (category postfix).
Success! Configuration updated for 'postfix'
Success! Configuration updated for 'yunohost'
Success! Configuration updated for 'rspamd'
Info: The configuration file '/etc/default/dnsmasq' is now managed by YunoHost (category dnsmasq).
Info: The configuration file '/etc/dnsmasq.conf' is now managed by YunoHost (category dnsmasq).
Success! Configuration updated for 'dnsmasq'
Info: The configuration file '/etc/fail2ban/jail.conf' is now managed by YunoHost (category fail2ban).
Success! Configuration updated for 'fail2ban'
Info: The configuration file '/etc/mysql/my.cnf' is now managed by YunoHost (category mysql).
Success! Configuration updated for 'mysql'
Info: The configuration file '/etc/avahi/avahi-daemon.conf' is now managed by YunoHost (category avahi-daemon).
Success! Configuration updated for 'avahi-daemon'
Info: The configuration file '/etc/dovecot/dovecot.conf' is now managed by YunoHost (category dovecot).
Success! Configuration updated for 'dovecot'
Success! Configuration updated for 'slapd'
Success! YunoHost is now configured
Warning: The post-install completed! To finalize your setup, please consider:
    - adding a first user through the 'Users' section of the webadmin (or 'yunohost user create <username>' in command-line);
    - diagnose potential issues through the 'Diagnosis' section of the webadmin (or 'yunohost diagnosis run' in command-line);
    - reading the 'Finalizing your setup' and 'Getting to know Yunohost' parts in the admin documentation: https://yunohost.org/admindoc.

Créer un utilisateur

yunohost user create yann
First name: yann
Last name: cinayeu
E-mail address: yann@cinay.eu
You are now about to define a new user password. The password should be at least 8 characters long—though it is good practice to use a longer password (i.e. a passphrase) and/or to a variation of characters (uppercase, lowercase, digits and special characters).
Password: 
Confirm password: 
Success! User created
fullname: yann cinayeu
mail: yann@cinay.eu
username: yann

Administration

On passe en mode administration web : https://cinay.eu/yunohost/admin/

Domaine cinay.eu
Configuration DNS

; Basic ipv4/ipv6 records
@ 3600 IN A 54.37.13.57
@ 3600 IN AAAA 2001:41d0:401:3200::d48

; XMPP
_xmpp-client._tcp 3600 IN SRV 0 5 5222 cinay.eu.
_xmpp-server._tcp 3600 IN SRV 0 5 5269 cinay.eu.
muc 3600 IN CNAME @
pubsub 3600 IN CNAME @
vjud 3600 IN CNAME @
xmpp-upload 3600 IN CNAME @

; Mail
@ 3600 IN MX 10 cinay.eu.
@ 3600 IN TXT "v=spf1 a mx -all"
mail._domainkey 3600 IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxFMaXPC3Og6HiuJ9Sxjf/JJO+4sPOiCp1wr+HFS41fd2xLDaizMKglmcEo06DNCC1T1kSbwPQrIAJak1aXrW88r8r4IFcvAb+hkVFUY2WYK7bNMrFq6p1nfmryXavEgNpzLpsuuTCCnrDqasVveYT6KDLzuALdP8QB8z2aosWuQIDAQAB"
_dmarc 3600 IN TXT "v=DMARC1; p=none"

; Extra
* 3600 IN A 54.37.13.57
* 3600 IN AAAA 2001:41d0:401:3200::d48
@ 3600 IN CAA 128 issue "letsencrypt.org"

Utilisateur “debian”

Modifier le mot de passe de l’utilisateur existant debian

passwd debian 

Visudo pour les accès root via utilisateur debian

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

Changer le mot de passe root

passwd root

OpenSSH, clé et script

OpenSSH
connexion avec clé
sur l'ordinateur de bureau Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2) nommé kvm-cinay pour une liaison SSH avec le serveur KVM.

ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/kvm-vps785909

Envoyer la clé publique sur le serveur KVM

scp ~/.ssh/kvm-vps785909.pub debian@54.37.13.57:/home/debian/

sur le serveur KVM On se connecte

ssh debian@54.37.13.57

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/kvm-vps785909.pub >> $HOME/.ssh/authorized_keys

et donner les droits

chmod 600 $HOME/.ssh/authorized_keys

effacer le fichier de la clé

rm $HOME/kvm-vps785909.pub

Modifier la configuration serveur SSH

sudo nano /etc/ssh/sshd_config # attention aux 2 dernières lignes

Modifier

Port 55034
PasswordAuthentication no    # avant dernière ligne
PermitRootLogin no           # dernière ligne

session SSH ne se termine pas correctement lors d'un "reboot" à distance
Si vous tentez de redémarrer/éteindre une machine distance par ssh, vous pourriez constater que votre session ne se termine pas correctement, vous laissant avec un terminal inactif jusqu’à l’expiration d’un long délai d’inactivité. Il existe un bogue 751636 à ce sujet. Pour l’instant, la solution de contournement à ce problème est d’installer :

sudo apt install libpam-systemd  # installé par défaut sur debian buster

cela terminera la session ssh avant que le réseau ne tombe.
Veuillez noter qu’il est nécessaire que PAM soit activé dans sshd.

Relancer openSSH

sudo systemctl restart sshd

Ouvrir le port 55034 et fermer le port 22

yunohost firewall allow TCP 55034
yunohost firewall disallow TCP 22

Accès depuis le poste distant avec la clé privée

ssh -p 55034 -i ~/.ssh/kvm-vps785909 debian@54.37.13.57

Outils, scripts motd et ssh_rc_bash

Installer utilitaires

sudo apt install rsync curl tmux jq figlet git dnsutils tree -y

Motd

sudo rm /etc/motd && sudo nano /etc/motd
                 ____  ___  ___  ___   __   ___ 
 __ __ _ __  ___|__  |( _ )| __|/ _ \ /  \ / _ \
 \ V /| '_ \(_-<  / / / _ \|__ \\_, /| () |\_, /
  \_/ | .__//__/ /_/  \___/|___/ /_/  \__/  /_/ 
      |_|                                       
  __ (_) _ _   __ _  _  _     ___  _  _         
 / _|| || ' \ / _` || || | _ / -_)| || |        
 \__||_||_||_|\__,_| \_, |(_)\___| \_,_|        
                     |__/                       

Script ssh_rc_bash

ATTENTION!!! Les scripts sur connexion peuvent poser des problèmes pour des appels externes autres que ssh

wget https://static.cinay.xyz/files/ssh_rc_bash
chmod +x ssh_rc_bash # rendre le bash exécutable
./ssh_rc_bash        # exécution

Certificats Let’s Encrypt

Sur yunohost buster , impossible d’installer les certificats let’s encrypt

Installation certificats via acme
Se connecter SSH avec utilisateur “debian”

Installer acme: Serveur , installer et renouveler les certificats SSL Let’s encrypt via Acme

cd ~
sudo apt install socat -y # prérequis
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install # se déconnecter pour prise en compte
# export des clé API OVH

Générer les certificats pour le domaine rnmkcy.eu

acme.sh --dns dns_ovh --issue --keylength ec-384 -d 'cinay.eu' -d '*.cinay.eu'

Au premier passage , un lien est généré pour valider les clés API OVH du style https://eu.api.ovh.com/auth/?credentialToken=Aysxhefy Relancer

acme.sh --dns dns_ovh --issue --keylength ec-384 -d 'cinay.eu' -d '*.cinay.eu'
[Sun 17 May 2020 02:36:54 PM CEST] Your cert is in  /home/debian/.acme.sh/cinay.eu_ecc/cinay.eu.cer 
[Sun 17 May 2020 02:36:54 PM CEST] Your cert key is in  /home/debian/.acme.sh/cinay.eu_ecc/cinay.eu.key 
[Sun 17 May 2020 02:36:54 PM CEST] The intermediate CA cert is in  /home/debian/.acme.sh/cinay.eu_ecc/ca.cer 
[Sun 17 May 2020 02:36:54 PM CEST] And the full chain certs is there:  /home/debian/.acme.sh/cinay.eu_ecc/fullchain.cer 

yunohost - cinay.eu

Structure

/etc/yunohost/certs/
├── cinay.eu -> /etc/yunohost/certs//cinay.eu-history/20200517.112559-selfsigned
├── cinay.eu-history
│   └── 20200517.112559-selfsigned
│       ├── ca.pem -> /etc/ssl/certs/ca-yunohost_crt.pem
│       ├── crt.pem
│       ├── key.pem
│       └── openssl.cnf
└── yunohost.org
    ├── ca.pem
    ├── crt.pem
    └── key.pem

Pour contourner le problème , on va créer un dossier de la forme aaaammdd.hhmmss-letsencrypt (en mode su),avec la date et heure du jour

sudo mkdir -p /etc/yunohost/certs/cinay.eu-history/20200517.144500-letsencrypt

Puis on va créer les liens

Les liens pour les certificats

sudo ln -s /home/debian/.acme.sh/cinay.eu_ecc/cinay.eu.key /etc/yunohost/certs/cinay.eu-history/20200517.144500-letsencrypt/key.pem     # cert key
sudo ln -s /home/debian/.acme.sh/cinay.eu_ecc/fullchain.cer /etc/yunohost/certs/cinay.eu-history/20200517.144500-letsencrypt/crt.pem   # full chain certs

Enfin on va informer yunohost par un lien que l’on utilise des certificats let’s encrypt

sudo rm /etc/yunohost/certs/cinay.eu # efface le lien certificat non signé
sudo ln -s /etc/yunohost/certs/cinay.eu-history/20200517.144500-letsencrypt /etc/yunohost/certs/cinay.eu # Création lien sur les certificats let's encrypt 

Structure yunohost pour les certificats let’s encrypt

/etc/yunohost/certs/
├── cinay.eu -> /etc/yunohost/certs/cinay.eu-history/20200517.144500-letsencrypt
├── cinay.eu-history
│   ├── 20200517.112559-selfsigned
│   │   ├── ca.pem -> /etc/ssl/certs/ca-yunohost_crt.pem
│   │   ├── crt.pem
│   │   ├── key.pem
│   │   └── openssl.cnf
│   └── 20200517.144500-letsencrypt
│       ├── crt.pem -> /home/debian/.acme.sh/cinay.eu_ecc/fullchain.cer
│       └── key.pem -> /home/debian/.acme.sh/cinay.eu_ecc/cinay.eu.key
└── yunohost.org
    ├── ca.pem
    ├── crt.pem
    └── key.pem

yunohost - wg.cinay.eu

On ajoute le domaine par yunohost cli

yunohost domain add wg.cinay.eu

on va créer un dossier de la forme aaaammdd.hhmmss-letsencrypt (en mode su),avec la date et heure du jour

sudo mkdir -p /etc/yunohost/certs/wg.cinay.eu-history/20200517.144500-letsencrypt

Puis on va créer les liens

Les liens pour les certificats

sudo ln -s /home/debian/.acme.sh/cinay.eu_ecc/cinay.eu.key /etc/yunohost/certs/wg.cinay.eu-history/20200517.144500-letsencrypt/key.pem     # cert key
sudo ln -s /home/debian/.acme.sh/cinay.eu_ecc/fullchain.cer /etc/yunohost/certs/wg.cinay.eu-history/20200517.144500-letsencrypt/crt.pem   # full chain certs

Enfin on va informer yunohost par un lien que l’on utilise des certificats let’s encrypt

sudo rm /etc/yunohost/certs/wg.cinay.eu # efface le lien certificat non signé
sudo ln -s /etc/yunohost/certs/wg.cinay.eu-history/20200517.144500-letsencrypt /etc/yunohost/certs/wg.cinay.eu # Création lien sur les certificats let's encrypt 
/etc/yunohost/certs/
├── wg.cinay.eu -> /etc/yunohost/certs/wg.cinay.eu-history/20200517.144500-letsencrypt
├── wg.cinay.eu-history
│   ├── 20200517.144500-letsencrypt
│   │   ├── crt.pem -> /home/debian/.acme.sh/cinay.eu_ecc/fullchain.cer
│   │   └── key.pem -> /home/debian/.acme.sh/cinay.eu_ecc/cinay.eu.key
│   ├── 20200517.163137-selfsigned
│   │   ├── ca.pem -> /etc/ssl/certs/ca-yunohost_crt.pem
│   │   ├── crt.pem
│   │   ├── key.pem
│   │   └── openssl.cnf
│   └── 20200517.200009-selfsigned
│       ├── ca.pem -> /etc/ssl/certs/ca-yunohost_crt.pem
│       ├── crt.pem
│       ├── key.pem
│       └── openssl.cnf

yunohost - portail utilisateur

Créer thème yann

Vous pouvez créer votre propre thème en copiant le thème existant de votre choix. Par exemple à partir du thème light :

cp -r /usr/share/ssowat/portal/assets/themes/{clouds,yann}

Ensuite, éditez les fichiers CSS et JS dans /usr/share/ssowat/portal/assets/themes/votre_theme selon ce que vous voulez faire :

  • custom_portal.css peut être utilisé pour ajouter des règles CSS personnalisées au portail utilisateur ;
  • custom_overlay.css peut être utilisé pour personnaliser le petit bouton YunoHost, présent sur les apps qui l’intègrent ;
  • custom_portal.js peut être utilisé pour ajouter du code JS personnalisé à exécuter à la fois sur le portail utilisateur ou lors de l’injection du petit bouton YunoHost (“overlay”).

Vous pouvez également ajouter vos propres images et ressources qui peuvent ensuite être utilisées par les fichiers CSS et JS.

Vous pouvez créer votre propre thème simplement pour changer le “branding” du portail utilisateur YunoHost et remplacer le logo YunoHost par votre propre logo !

Pour ce faire, téléversez votre logo dans /usr/share/ssowat/portal/assets/themes/yann/ et ajoutez les règles CSS suivantes :

/* Dans custom_portal.css */
#ynh-logo {
  background-image : url("./votre_logo.png");
}

/* Dans custom_overlay.css */
#ynh-overlay-switch {
  background-image : url("./votre_logo.png");
}

Utiliser le thème yann

Depuis YunoHost 3.5, il est possible de changer le thème du portail utilisateur - bien que pour l’instant il faille encore faire cette opération via la ligne de commande.

Vous pouvez lister les thèmes disponibles avec :

ls /usr/share/ssowat/portal/assets/themes/

Ensuite, vous pouvez utiliser nano /etc/ssowat/conf.json.persistent pour activer le thème que vous choisissez comme ceci :

{
    "theme" : "yann",
    ...autres lignes.....
}

Vous devrez peut-être forcer le rafraîchissement du cache de votre navigateur pour que le thème se propage complètement. Vous pouvez le faire avec Ctrl+Maj+R sur Firefox.

Go Node

Go

golang

Go installation (Debian) , installer la dernière version de Go (https://golang.org/dl/)

cd ~
wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.14.2.linux-amd64.tar.gz
rm go1.14.2.linux-amd64.tar.gz

Environnement de configuration

Bash: ~/.bashrc

mkdir -p $HOME/go
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> ~/.bashrc
echo "export GOPATH=$HOME/go"  >> ~/.bashrc
source ~/.bashrc

Nodejs

nodejs

Installer la version LTS de nodejs pour le frontend.

sudo apt-get install curl software-properties-common -y
curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
## Run `sudo apt-get install -y nodejs` to install Node.js 12.x and npm
## You may also need development tools to build native addons:
     sudo apt-get install gcc g++ make
## To install the Yarn package manager, run:
     curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
     echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
     sudo apt-get update && sudo apt-get install yarn

Nodejs

sudo apt-get install -y nodejs

Wireguard

Wireguard

WireGuard est un serveur VPN à code source ouvert, gratuit, moderne et rapide, doté d’une cryptographie de pointe. Il est plus rapide et plus simple que l’IPSec et l’OpenVPN

Installation

Wireguard est dans le noyau 5.6+

apt install wireguard

Générer une paire de clés

On se positionne dans le dossier /etc/wireguard/

cd /etc/wireguard

WireGuard repose sur une authentification par clé publique/privée (cryptographie asymétrique), vous devez donc créer ces clés avec les sous-commandes wg genkey et wg pubkey
La création de la clé privée se fait avec wg genkey et la clé publique est générée en la canalisant dans wg pubkey

umask 077; wg genkey | tee vps785909-private.key | wg pubkey > vps785909-public.key

**Autoriser le serveur Wireguard à relayer les paquets **

Autoriser le serveur Wireguard à relayer les paquets venant de ces clients vers l’internet et de traiter les paquets retours (modifier /etc/sysctl.conf)

sed -i 's/^#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sed -i 's/^#net.ipv6.conf.all.forwarding=1/net.ipv6.conf.all.forwarding=1/' /etc/sysctl.conf
sysctl -p # prise en compte immédiate

configuration /etc/wireguard/wg0.conf

Récupérer le nom de la carte réseau ip a , dans notre cas eth0

La première étape consiste à choisir une plage IPV4 privée qui sera utilisée par le serveur : 10.221.64.0/8

Pour une adresse IPV6 Local IPv6 Address Generator : fde5:f734:27ec:dd40::/64

Prefix/L fd
Global ID e5f73427ec
Subnet ID dd40
Combine/CID fde5:f734:27ec:dd40::/64
IPv6 addresses fde5:f734:27ec:dd40::/64:XXXX:XXXX:XXXX:XXXX
Start Range fde5:f734:27ec:dd40:0:0:0:0
End Range fde5:f734:27ec:dd40:ffff:ffff:ffff:ffff
No. of hosts 18446744073709551616

Nous utiliserons 10.221.64.0/24 qui se trouve dans la plage 10.221.64.0/8 . Le serveur aura l’adresse IP suivante: 10.221.64.1 . Il est également nécessaire de choisir un port, qui sera exposé publiquement, pour que le serveur écoute.Le port de documentation standard est généralement 51820.

Créer le fichier /etc/wireguard/wg0.conf

nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.221.64.1/24
Address = fde5:f734:27ec:dd40::1/64
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PrivateKey = 5Zsr0jQXiuCpHFkye325Zsr0jMUKinVEOPmk=
DNS = 10.221.64.1
DNS = fde5:f734:27ec:dd40::1
SaveConfig = true

Address , fixer l’adresse IP privée du serveur à l’intérieur du VPN.Les adresses du réseau VPN de 10.221.64.0 à 10.221.64.255 sont fixées par le masque /24
PostUp , pour la mise en place des règles iptables de translation d’adresses à l’activation du VPN (autoriser le routage des paquets réseau venant des clients vers internet)
PostDown , pour la suppression des règles iptables de translation d’adresses à l’arrêt du VPN
PrivateKey , clé privée du serveur

Modification des droits (lecture uniquement par “root”)

chmod 600 /etc/wireguard/wg0.conf

Ouvrir le port 51820

yunohost firewall allow UDP 51820  # wireguard

Wireguard UI

Wireguard

Gestion web wireguard

Création dossier application wev

sudo mkdir -p /opt/appwg

Copier le git wg-gen-web

cd ~
git clone https://gitea.cinay.xyz/yannick/wg-gen-web.git

Construction du site

sudo ln -s $HOME/wg-gen-web /usr/local/go/src/wg-gen-web
cd $HOME/wg-gen-web/cmd/wg-gen-web/
go build -o deb-wg-gen-web
cd ../../ui
npm install
npm run build
sudo cp $HOME/wg-gen-web/cmd/wg-gen-web/deb-wg-gen-web /opt/appwg
sudo mkdir -p /opt/appwg/ui
sudo cp -r $HOME/wg-gen-web/ui/dist /opt/appwg/ui/

Configuration .env

Créer le fichier de configuration .env (pas de oath et messagerie) à partir du modèle

Dans le cas ou l’autorisation à 2 facteurs n’est pas utilisée, le fichier /opt/appwg/.env se résume à remplir la zone correspondante SMTP de la messagerie et désactiver l’autorisation

/opt/appwg/.env
# IP address to listen to
SERVER=0.0.0.0
# port to bind
PORT=8080
# Gin framework release mode
GIN_MODE=release
# where to write all generated config files
WG_CONF_DIR=/etc/wireguard
# WireGuard main config file name, generally <interface name>.conf
WG_INTERFACE_NAME=wg0.conf

# SMTP settings to send email to clients
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=account@gmail.com
SMTP_PASSWORD=*************
SMTP_FROM=Wg Gen Web <account@gmail.com>

# set provider name to fake to disable auth, also the default
OAUTH2_PROVIDER_NAME=fake

Créer le service wgweb.service

Tester manuellement le fonctionnement
Ouvrir un terminal

sudo -s
cd /opt/appwg/
./deb-wg-gen-web    # arrêt par Ctrl C

Ouvrir le lien https://wg.cinay.eu
Les échanges sont affichés dans la fenêtre du terminal

Créer un service systemd wgweb qui lance le serveur avec journalisation

sudo nano /etc/systemd/system/wgweb.service
[Unit]
Description=Gestion web wg
After=network.target

[Service]

Type=simple

Restart=on-failure
RestartSec=10

WorkingDirectory=/opt/appwg
ExecStart=/opt/appwg/deb-wg-gen-web

[Install]
WantedBy=multi-user.target

Recharger systemd et activer le service

sudo systemctl daemon-reload
sudo systemctl enable wgweb.service

Paramètres wireguard du serveur (wg0.conf et server.json)

Créer le fichier /etc/wireguard/server.json

/etc/wireguard/server.json 
{
  "address": [
    "fde5:f734:27ec:dd40::1/64",
    "10.221.64.1/24"
  ],
  "listenPort": 51820,
  "mtu": 0,
  "privateKey": "UEQCgh/6a2RQbF9+qqylVjqLCK/mRwqRPc/4vjRsYXg=",
  "publicKey": "0s1wsNpuU1RlKgj6AmoN0aKUeb+aESByhO3yTSnfTyE=",
  "endpoint": "wireguard.example.com:123",
  "persistentKeepalive": 16,
  "dns": [
    "fde5:f734:27ec:dd40::1",
    "10.221.64.1"
  ],
  "allowedips": [
    "0.0.0.0/0",
    "::/0"
  ],
  "preUp": "",
  "postUp": "iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE",
  "preDown": "",
  "postDown": "iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE",
  "updatedBy": "n",
  "created": "2020-05-17T21:00:00.589913433Z",
  "updated": "2020-05-17T21:05:00.466114026Z"
}

Démarrer le service

sudo systemctl start wgweb.service
sudo systemctl status wgweb.service
● wgweb.service - Gestion web wg
   Loaded: loaded (/etc/systemd/system/wgweb.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-05-17 21:21:23 CEST; 9s ago
 Main PID: 30596 (deb-wg-gen-web)
    Tasks: 5 (limit: 2313)
   Memory: 6.8M
   CGroup: /system.slice/wgweb.service
           └─30596 /opt/appwg/deb-wg-gen-web

May 17 21:21:23 cinay.eu systemd[1]: Started Gestion web wg.
May 17 21:21:23 cinay.eu deb-wg-gen-web[30596]: time="2020-05-17T21:21:23+02:00" level=info msg="Lancement de la version Web de Wg Gen : yann"
May 17 21:21:23 cinay.eu deb-wg-gen-web[30596]: time="2020-05-17T21:21:23+02:00" level=warning msg="Oauth n'est pas utilisé, aucune authentification réelle ne sera effectuée"

Pour suivre dans le journal

sudo journalctl -f -t deb-wg-gen-web
-- Logs begin at Sun 2020-05-17 13:06:29 CEST. --
May 17 21:21:23 cinay.eu deb-wg-gen-web[30596]: time="2020-05-17T21:21:23+02:00" level=info msg="Lancement de la version Web de Wg Gen : yann"
May 17 21:21:23 cinay.eu deb-wg-gen-web[30596]: time="2020-05-17T21:21:23+02:00" level=warning msg="Oauth n'est pas utilisé, aucune authentification réelle ne sera effectuée"

Activation service wireguard wg-quick@wg0.service

Le gestionnaire web est à jour , on peut lancer le serveur wireguard

sudo systemctl start wg-quick@wg0.service

Vérifier

systemctl status wg-quick@wg0.service
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
   Loaded: loaded (/lib/systemd/system/wg-quick@.service; disabled; vendor preset: enabled)
   Active: active (exited) since Sun 2020-05-17 21:23:19 CEST; 11s ago
     Docs: man:wg-quick(8)
           man:wg(8)
           https://www.wireguard.com/
           https://www.wireguard.com/quickstart/
           https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
           https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
  Process: 30606 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
 Main PID: 30606 (code=exited, status=0/SUCCESS)

May 17 21:23:18 cinay.eu systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
May 17 21:23:18 cinay.eu wg-quick[30606]: [#]
May 17 21:23:18 cinay.eu wg-quick[30606]: [#] ip link add wg0 type wireguard
May 17 21:23:19 cinay.eu wg-quick[30606]: [#] wg setconf wg0 /dev/fd/63
May 17 21:23:19 cinay.eu wg-quick[30606]: [#] ip -6 address add fde5:f734:27ec:dd40::1/64 dev wg0
May 17 21:23:19 cinay.eu wg-quick[30606]: [#] ip -4 address add 10.221.64.1/24 dev wg0
May 17 21:23:19 cinay.eu wg-quick[30606]: [#] ip link set mtu 1420 up dev wg0
May 17 21:23:19 cinay.eu wg-quick[30606]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 
May 17 21:23:19 cinay.eu systemd[1]: Started WireGuard via wg-quick(8) for wg0.

Appliquer automatiquement les modifications apportées à WireGuard

Utilisation de systemd.path monitor pour les changements dans le répertoire, voir systemd doc

/etc/systemd/system/wg-gen-web.path
[Unit]
Description=Surveiller /etc/wireguard pour les changements

[Path]
PathModified=/etc/wireguard

[Install]
WantedBy=multi-user.target

Ce wg-gen-web.path activera le fichier de l’unité avec le même nom, wg-gen-web.service

/etc/systemd/system/wg-gen-web.service
[Unit]
Description=Relancer WireGuard si changements
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart wg-quick@wg0.service

[Install]
WantedBy=multi-user.target

Ce qui permettra de relancer le service WireGuard

sudo systemctl start wg-gen-web.path
sudo systemctl status wg-gen-web.path
● wg-gen-web.path - Surveiller /etc/wireguard pour les changements
   Loaded: loaded (/etc/systemd/system/wg-gen-web.path; disabled; vendor preset: enabled)
   Active: active (waiting) since Sun 2020-05-17 21:25:16 CEST; 41ms ago

May 17 21:25:16 cinay.eu systemd[1]: Started Surveiller /etc/wireguard pour les changements.

Activation

sudo systemctl enable wg-gen-web.path

Pour suivre dans le journal

sudo journalctl -f -t wg-quick
-- Logs begin at Sun 2020-05-17 13:06:29 CEST. --
May 17 21:23:18 cinay.eu wg-quick[30606]: [#]
May 17 21:23:18 cinay.eu wg-quick[30606]: [#] ip link add wg0 type wireguard
May 17 21:23:19 cinay.eu wg-quick[30606]: [#] wg setconf wg0 /dev/fd/63
May 17 21:23:19 cinay.eu wg-quick[30606]: [#] ip -6 address add fde5:f734:27ec:dd40::1/64 dev wg0
May 17 21:23:19 cinay.eu wg-quick[30606]: [#] ip -4 address add 10.221.64.1/24 dev wg0
May 17 21:23:19 cinay.eu wg-quick[30606]: [#] ip link set mtu 1420 up dev wg0
May 17 21:23:19 cinay.eu wg-quick[30606]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Gestion web wireguard - wg.cinay.eu

Installer application Multi web app

sudo -s
git clone https://gitea.cinay.xyz/yannick/multi_webapp_buster_ynh
yunohost app install multi_webapp_buster_ynh/
DANGER! This app is not part of Yunohost's app catalog. Installing third-party apps may compromise the integrity and security of your system. You should probably NOT install it unless you know what you are doing. NO SUPPORT will be provided if this app doesn't work or breaks your system… If you are willing to take that risk anyway, type 'Yes, I understand': Yes, I understand
Available domains:
- cinay.eu
- wg.cinay.eu
Choose a domain for your Webapp (default: cinay.eu): wg.cinay.eu
Choose a path for your Webapp (default: /site): /
Available users:
- yann
Choose the YunoHost user: yann
Create a database? [yes | no] (default: no): 
Is it a public website ? [yes | no] (default: no): 
Info: Installing the app 'multi_webapp'…
Info: [+...................] > Retrieve arguments from the manifest
Info: [#+..................] > Check if the app can be installed
Info: [##+++...............] > Store settings from manifest
Info: [#####+..............] > Setup SSOwat
Info: [######+.............] > Create final path
Info: The directory /var/www/webapp_yann already exist, do not recreate it.
Info: [#######+++..........] > Create a dedicated user
Info: [##########+.........] > Configure php-fpm
Info: [###########+........] > Configure nginx
Info: [############+++++...] > Reload nginx
Info: [####################] > Installation completed
Success! Installation completed

Proxy nginx

/etc/nginx/conf.d/wg.cinay.eu.d/webapp_wg.cinay.eu_.conf 
#sub_path_only rewrite ^/$ / permanent;
location / {
  proxy_pass http://127.0.0.1:8080/;
    proxy_set_header            Host $host;
    proxy_buffering off;
    fastcgi_param REMOTE_USER   $remote_user;
    client_max_body_size        50M;
    more_set_input_headers      'Authorization: $http_authorization';
    proxy_set_header            Authorization $http_authorization;

	# Include SSOWAT user panel.
	include conf.d/yunohost_panel.conf.inc;
}

On vérifie et on relance le serveur nginx

sudo nginx -t
sudo systemctl reload nginx

Changer libellé (en mode administration) : Wireguard Web Admin
Accès https://wg.cinay.eu

Sauvegardes

yunohost

Création d’une sauvegarde complète yunohost

sudo -s
yunohost backup create -n Backup-Yunohost-cinay.eu

Sauvegarde automatique tous les jours

sudo -s
crontab -e
# Sauvegarde yunohost
00 02 * * * /usr/bin/rm /home/yunohost.backup/archives/* && /usr/bin/yunohost backup create -n Backup-Yunohost-cinay.eu > /dev/null

BorgBackup

Préparation de la machine à sauvegarder
On se connecte sur la machine et on passe en mode su

sudo -s
apt update

Installer borgbackup

apt install borgbackup

Créer un jeu de clé sur machine à sauvegarder (vps785909)
Créer un utilisateur borg (sans home) dédié aux sauvegardes par BorgBackup :

useradd -M borg

Générer un jeu de clé sur /root/.ssh

mkdir -p /root/.ssh
ssh-keygen -t ed25519 -o -a 100 -f /root/.ssh/vps785909_ed25519

Le jeu de clé

ls /root/.ssh
    vps785909_ed25519  vps785909_ed25519.pub

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

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

Ajout clé publique au serveur backup xoyaz.xyz

Pour une connexion via ssh vous devez ajouter la clé publique vps785909_ed25519.pub du serveur client vps785909 au fichier ~/.ssh/authorized_keys du serveur backup xoyaz.xyz

Se connecter au serveur backup xoyaz.xyz depuis un terminal autorisé

ssh usernl@5.2.79.107 -p 55036 -i /home/yannick/.ssh/OVZ-STORAGE-128 # connexion SSH serveur backup depuis PC1
sudo -s # passer en super utilisateur
cat >> /srv/data/borg-backups/.ssh/authorized_keys

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

Test depuis le serveur client vps785909 (c’est lui qui possède la clé privée).
Si parefeu avec les sorties bloquées sur vps785909 , il faut ouvrir en sortie le port TCP 55036.

AU PREMIER passage une question est posée , saisir oui ou yes

sudo -s
ssh -p 55036 -i /root/.ssh/vps785909_ed25519 borg@xoyaz.xyz
The authenticity of host '[xoyaz.xyz]:55036 ([2a04:52c0:101:7ae::7a5e]:55036)' can't be established.
ECDSA key fingerprint is SHA256:PDXQBhTh4oj0cSzgnjCun+J60JDUEk7VeLH2YHZbwMc.
Are you sure you want to continue connecting (yes/no)? yes
hosts.
Linux backup 2.6.32-042stab140.1 #1 SMP Thu Aug 15 13:32:22 MSK 2019 x86_64
  _               _                          
 | |__  __ _  __ | |__ _  _  _ __            
 | '_ \/ _` |/ _|| / /| || || '_ \           
 |_.__/\__,_|\__||_\_\ \_,_|| .__/           
 __ __ ___  _  _  __ _  ___ |_|_ __ _  _  ___
 \ \ // _ \| || |/ _` ||_ / _ \ \ /| || ||_ /
 /_\_\\___/ \_, |\__,_|/__|(_)/_\_\ \_, |/__|
            |__/                    |__/     
Last login: Sun Apr 12 19:33:05 2020 from 2001:41d0:404:200::1cf
$ 

saisir exit pour sortir

NOTE : /srv/data/borg-backups est le home de l’utilisateur borg sur le serveur backup xoyaz.xyz

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

machine cliente vps785909
On se connecte sur la machine et on passe en mode su

sudo -s

Création du dépôt distant sur le serveur backup xoyaz.xyz (A FAIRE UNE SEULE FOIS)

export BORG_RSH='ssh -i /root/.ssh/vps785909_ed25519' # ce n'est pas la clé par défaut id_rsa
borg init --encryption=repokey-blake2 ssh://borg@xoyaz.xyz:55036/srv/data/borg-backups/vps785909
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@xoyaz.xyz:55036/srv/data/borg-backups/vps785909

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 pour test (facultatif)

borg create ssh://borg@xoyize.xyz:55029/srv/ssd-two/borg-backups/vps785909::2019-01-11 /home/yanfi
Enter passphrase for key ssh://borg@xoyize.xyz:55029/srv/ssd-two/borg-backups/vps785909: 

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

nano /root/.borg/borg-backup 
#!/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/vps785909_ed25519'
BORG_REPOSITORY=ssh://borg@xoyaz.xyz:55036/srv/data/borg-backups/vps785909
BORG_ARCHIVE=${BORG_REPOSITORY}::${BACKUP_DATE}
 
borg create \
-v --progress --stats --compression lzma,9 \
--exclude-from /root/.borg/exclusions --exclude-caches \
$BORG_ARCHIVE \
/ \
>> ${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

Fichier /root/.borg/exclusions pour ne pas sauvegarder, entre autre,le point de montage ssfs “music” (si existant)

/dev
/proc
/sys
/tmp
/run
/mnt
/home/debian/music
lost+found

Programmer la tâche à 2h40 du matin

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

Serveur DNS

yunohost - désactiver dnsmasq

On désactive dnsmasq

sudo systemctl stop dnsmasq
sudo systemctl disable dnsmasq

DNS Unbound

Un problème majeur avec beaucoup de configurations VPN est que le DNS n’est pas suffisant. Cela finit par une fuite de connexion client et de détails d’emplacement. Un bon moyen de tester cela est à travers le site http://dnsleak.com/

Nous allons sécuriser le trafic DNS avec la solution unbound qui offre les caractéristiques suivantes

  • Léger et rapide
  • Facile à installer et à configurer
  • Orienté sécurité
  • Prise en charge DNSSEC

Nous allons le configurer de manière à contrer les fuites DNS, les attaques plus sophistiquées comme la fausse configuration de proxy, les routeurs escrocs et toutes sortes d’attaques MITM sur HTTPS et autres protocoles.

Nous installons unbound sur le serveur
Passage en mode super utilisateur

sudo -s # ou su

ATTENTION : Le programme resolvconf est en général seulement nécessaire quand un système a plusieurs programmes qui ont besoin de modifier de façon dynamique les informations sur les serveurs de noms de domaine. Sur un système simple où les serveurs de noms de domaine ne changent pas souvent ou bien ne sont modifiés que par un programme, le fichier de configuration **resolv.conf** est suffisant.
Il faut installer resolvconf, sinon on a une erreur unbound-resolvconf
Une fois le paquet « resolvconf » installé, il ne faut plus modifier le fichier « /etc/resolv.conf », car le contenu de celui-ci sera automatiquement géré et remplacé par « resolvconf ».

Installation des outils dns, des paquets Unbound et resolv :

apt install unbound unbound-host resolvconf -y

Téléchargement de la liste des serveurs DNS racines

curl -o /var/lib/unbound/root.hints https://www.internic.net/domain/named.cache
chown unbound:unbound /var/lib/unbound/root.hints

Ajout d’un fichier de configuration dns-vps785909.conf

/etc/unbound/unbound.conf.d/dns-vps785909.conf 
server:
    num-threads: 4

    # enable logs
    verbosity: 0  # no verbosity,  only  errors

    # liste des serveurs DNS racine
    root-hints: "/var/lib/unbound/root.hints"

    # Répondre aux requêtes DNS sur toutes les interfaces
    interface: 0.0.0.0                          # 0.0.0.0 unbound sur plusieurs interfaces
    interface: ::0
    max-udp-size: 3072

    # IPs authorised to access the DNS Server
    access-control: 0.0.0.0/0                 refuse
    access-control: 127.0.0.0/8               allow
    access-control: 10.221.64.0/16             allow

    access-control: ::0/0                     refuse
    access-control: ::1                       allow
    access-control: ::ffff:127.0.0.1          allow
    access-control: fe80::/10                 allow
    access-control: fde5:f734:27ec:dd40::/48  allow

    local-zone: "221.10.in-addr.arpa." transparent

    #hide DNS Server info
    hide-identity: yes
    hide-version: yes

    # limit DNS fraud and use DNSSEC
    harden-glue: yes
    harden-dnssec-stripped: yes
    harden-referral-path: yes

    # add an unwanted reply threshold to clean the cache and avoid, when possible, DNS poisoning
    unwanted-reply-threshold: 10000000

    # have the validator print validation failures to the log
    val-log-level: 1

    # minimum lifetime of cache entries in seconds
    cache-min-ttl: 1800

    # maximum lifetime of cached entries in seconds
    cache-max-ttl: 14400
    prefetch: yes
    prefetch-key: yes

#include: /etc/unbound/unbound.conf.d/adslist.txt 

Droits

chown -R unbound:unbound /var/lib/unbound

Pour vérifier si le fichier de configuration est valide

unbound-checkconf /etc/unbound/unbound.conf.d/dns-vps785909.conf

unbound-checkconf: no errors in /etc/unbound/unbound.conf.d/dns-vps785909.conf
Désactiver systemd-resolved (si utilisé)

systemctl stop systemd-resolved
systemctl disable systemd-resolved

Activer Unbound (ILS SONT ACTIFS DES LEUR INSTALLATION)

systemctl enable unbound-resolvconf
systemctl enable unbound

Redémarrer le serveur

systemctl reboot

Après redémarrage et connexion au serveur

systemctl status unbound unbound-resolvconf resolvconf
● unbound.service - Unbound DNS server
   Loaded: loaded (/lib/systemd/system/unbound.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-05-19 09:13:11 CEST; 5min ago
     Docs: man:unbound(8)
  Process: 693 ExecStartPre=/usr/lib/unbound/package-helper chroot_setup (code=exited, status=0/SUCCESS)
  Process: 772 ExecStartPre=/usr/lib/unbound/package-helper root_trust_anchor_update (code=exited, status=0/SUCC
 Main PID: 816 (unbound)
    Tasks: 4 (limit: 2313)
   Memory: 31.7M
   CGroup: /system.slice/unbound.service
           └─816 /usr/sbin/unbound -d

May 19 09:13:07 cinay.eu systemd[1]: Starting Unbound DNS server...
May 19 09:13:09 cinay.eu package-helper[772]: /var/lib/unbound/root.key has content
May 19 09:13:09 cinay.eu package-helper[772]: success: the anchor is ok
May 19 09:13:11 cinay.eu systemd[1]: Started Unbound DNS server.
May 19 09:13:11 cinay.eu unbound[816]: [816:0] info: start of service (unbound 1.9.0).

● unbound-resolvconf.service - Unbound DNS server via resolvconf
   Loaded: loaded (/lib/systemd/system/unbound-resolvconf.service; enabled; vendor preset: enabled)
   Active: active (exited) since Tue 2020-05-19 09:13:11 CEST; 5min ago
  Process: 875 ExecStart=/usr/lib/unbound/package-helper resolvconf_start (code=exited, status=0/SUCCESS)
 Main PID: 875 (code=exited, status=0/SUCCESS)

May 19 09:13:11 cinay.eu systemd[1]: Started Unbound DNS server via resolvconf.

● resolvconf.service - Nameserver information manager
   Loaded: loaded (/lib/systemd/system/resolvconf.service; enabled; vendor preset: enabled)
   Active: active (exited) since Tue 2020-05-19 09:12:59 CEST; 5min ago
     Docs: man:resolvconf(8)
  Process: 196 ExecStartPre=/bin/mkdir -p /run/resolvconf/interface (code=exited, status=0/SUCCESS)
  Process: 208 ExecStartPre=/bin/touch /run/resolvconf/postponed-update (code=exited, status=0/SUCCESS)
  Process: 214 ExecStart=/sbin/resolvconf --enable-updates (code=exited, status=0/SUCCESS)
 Main PID: 214 (code=exited, status=0/SUCCESS)

Vérifications

Les commandes suivantes ne fonctionneront que si le paquet “dnsutils” est installé sur votre système Debian!

On teste en utilisant les serveurs DNS locaux

dig @127.0.0.1 afnic.fr +short +dnssec
192.134.5.37
A 13 2 600 20200608204052 20200509084949 30435 afnic.fr. eVchVAseJD5n8W7U8okAz546Ix33hOCqRF7wLrhUV+sOTkwyXo7EwAut k/rN8wsPVpTnTpFyQLKdBTuOpx2UxA==

Mise à jour des serveurs DNS racines

Télécharger le script

curl -o /etc/unbound/dnsunbound-update-root-dns.sh https://static.cinay.xyz/files/dnsunbound-update-root-dns.sh

Droits en exécution pour le bash dnsunbound-update-root-dns.sh

chmod +x /etc/unbound/dnsunbound-update-root-dns.sh

Planification journalière

crontab -e

Ajouter en fin de fichier

# Mise à jour automatique des serveurs DNS de la racine
10 02 * * * /etc/unbound/dnsunbound-update-root-dns.sh > /dev/null

Serveur Audio Gonic (zic.cinay.eu)

Texte alternatif
Gonic écrit en go est une alternative à Subsonic.org, accessible par un proxy nginx
La seule application qui accepte de fonctionner avec répertoires montés par FUSE.

Caractéristiques

  • la navigation par dossier (en gardant votre arborescence complète intacte)
  • la navigation par balises (à l’aide de taglib - supporte mp3, opus, flac, ape, m4a, wav, etc.)
  • transcodage et mise en cache audio à la volée (nécessite ffmpeg) (merci spijet)
  • balayage assez rapide (avec ma bibliothèque de ~27k pistes, le balayage initial prend environ 10m, et environ 5s après de manière incrémentielle)
  • plusieurs utilisateurs, chacun ayant ses propres préférences de transcodage, ses listes de lecture, ses meilleures pistes, ses meilleurs artistes, etc.
  • last.fm scrobbling
  • similarités entre les artistes et biographies de la dernière api.fm
  • une interface web pour la configuration (configurer last.fm, gérer les utilisateurs, lancer des analyses, etc.)
  • un support pour le tag album-artist, pour ne pas encombrer votre liste d’artistes avec des apparitions d’albums de compilation
  • écrit en go, donc léger et adapté à un pi framboise, etc.
  • plus récent sel et token auth
  • testé sur dsub, jamstash, musique sublime et ondes sonores

SSHFS fstab

Le dossier “musique” est distant (serveur xoyaz.xyz)
Il faut créer une liaison réseau sécurisée entre cinay.eu ← → xoyaz.xyz
On va utiliser SSHFS (Secure shell file system (ou SSHFS) permet le partage d’un système de fichiers de manière sécurisée en utilisant le protocole SFTP de SSH)

Créer un dossier “music” local

sudo mkdir -p /opt/gonic/music

Installation

sudo apt install sshfs

Autorisations

  • Autorisations “utilisateur”
    • Exécuter sshfs (ou toute autre commande de montage FUSE) avec l’option -o allow_other
  • Autoriser l’accès “root” des supports fuse
    • Ajouter user_allow_other au fichier /etc/fuse.conf
    • Exécuter sshfs (ou toute autre commande de montage FUSE) avec l’option -o allow_root

Clé privée OVZ-STORAGE-128 pour accéder au serveur xoyaz.xyz

chmod 600 /home/debian/.ssh/OVZ-STORAGE-128

Exécution manuelle pour authentifier la clé avec utilisateur “debian”

sudo -s
sshfs -o allow_other usernl@5.2.79.107:/home/usernl/backup/musique /opt/gonic/music -C -p 55036 -oIdentityFile=/home/debian/.ssh/OVZ-STORAGE-128
The authenticity of host '[5.2.79.107]:55036 ([5.2.79.107]:55036)' can't be established.
ECDSA key fingerprint is SHA256:PDXQBhTh4oj0cSzgnjCun+J60JDUEk7VeLH2YHZbwMc.
Are you sure you want to continue connecting (yes/no)? yes

NOTE: Il est préférable de mettre l’adresse IP du serveur ,les domaines peuvent ne pas être “résolus”

Après vérification , ls ~/music , déconnexion sudo fusermount -u $HOME/music

Montage fstab

ajouter la ligne suivante au fichier /etc/fstab

usernl@5.2.79.107:/home/usernl/backup/musique /opt/gonic/music fuse.sshfs _netdev,identityfile=/home/debian/.ssh/OVZ-STORAGE-128,allow_other,port=55036 0 0

Montage pour authentifier la clé avec utilisateur “root”

sudo mount -a

Vérification

ls /opt/gonic/music

Installation gonic

dans le répertoire utilisateur $HOME

# les dépendances
sudo apt install build-essential git sqlite libtag1-dev ffmpeg libasound2-dev pkg-config # for debian like
cd $HOME/
# cloner 
git clone https://gitea.cinay.xyz/yannick/golang-subsonic.git
cd golang-subsonic/

Construire l’exécutable “gonic” et le copier dans /usr/local/bin

./_do_build_server
sudo cp gonic /usr/local/bin/   

Créer le service gonic

Que fait le service ?

  • Le dossier fuse “music” et monté au démarrage par fstab
  • lancer le serveur “gonic” en écoute local sur le port 4747 avec les options -music-path, -db-path et -proxy-prefix
  • A l’arrêt,tuer la tâche “gonic”

Tester le serveur

/usr/local/bin/gonic -music-path /opt/gonic/music -db-path /opt/gonic/gonic.db -proxy-prefix /
2020/05/19 17:56:37 starting gonic v0.8.8
2020/05/19 17:56:37 provided config
2020/05/19 17:56:37     cache-path      /tmp/gonic_cache
2020/05/19 17:56:37     config-path     
2020/05/19 17:56:37     db-path         /opt/gonic/gonic.db
2020/05/19 17:56:37     jukebox-enabled false
2020/05/19 17:56:37     listen-addr     0.0.0.0:4747
2020/05/19 17:56:37     music-path      /opt/gonic/music
2020/05/19 17:56:37     proxy-prefix    /
2020/05/19 17:56:37     scan-interval   0
2020/05/19 17:56:37     version         false
2020/05/19 17:56:37 migration (1/7) '202002192100' finished
2020/05/19 17:56:37 migration (2/7) '202002192019' finished
2020/05/19 17:56:37 migration (3/7) '202002192222' finished
2020/05/19 17:56:37 migration (4/7) '202003111222' finished
2020/05/19 17:56:37 migration (5/7) '202003121330' finished
2020/05/19 17:56:37 migration (6/7) '202003241509' finished
2020/05/19 17:56:37 migration (7/7) '202004302006' finished
2020/05/19 17:56:37 starting job 'http'

Arrêt par Ctrl+C

Chaque service généré par systemd est configuré par un fichier .service qui se trouve dans le répertoire /etc/systemd/system

sudo nano /etc/systemd/system/gonic.service
[Unit]
Description=Gonic audio server
After=network.target

[Service]
Type=simple

Restart=on-failure
RestartSec=10

ExecStart=/usr/local/bin/gonic -music-path /opt/gonic/music -db-path /opt/gonic/gonic.db -proxy-prefix /

[Install]
WantedBy=multi-user.target

Recharger systemd puis démarrer le service:

sudo systemctl daemon-reload
sudo systemctl start gonic.service
sudo systemctl status gonic.service
● gonic.service - Gonic audio server
   Loaded: loaded (/etc/systemd/system/gonic.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-05-19 18:01:09 CEST; 83ms ago
 Main PID: 6815 (gonic)
    Tasks: 5 (limit: 2313)
   Memory: 9.3M
   CGroup: /system.slice/gonic.service
           └─6815 /usr/local/bin/gonic -music-path /opt/gonic/music -db-path /opt/gonic/gonic.db -proxy-prefix 

May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     cache-path      /tmp/gonic_cache
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     config-path
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     db-path         /opt/gonic/gonic.db
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     jukebox-enabled false
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     listen-addr     0.0.0.0:4747
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     music-path      /opt/gonic/music
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     proxy-prefix    /
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     scan-interval   0
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     version         false
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09 starting job 'http'

Visualiser le journal

sudo journalctl -t gonic
-- Logs begin at Tue 2020-05-19 09:12:59 CEST, end at Tue 2020-05-19 18:01:53 CEST. --
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09 starting gonic v0.8.8
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09 provided config
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     cache-path      /tmp/gonic_cache
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     config-path
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     db-path         /opt/gonic/gonic.db
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     jukebox-enabled false
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     listen-addr     0.0.0.0:4747
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     music-path      /opt/gonic/music
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     proxy-prefix    /
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     scan-interval   0
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09     version         false
May 19 18:01:09 cinay.eu gonic[6815]: 2020/05/19 18:01:09 starting job 'http'

Si tout est en ordre , on active le service

sudo systemctl enable gonic.service

zic.cinay.eu

En mode su
Créer le domaine zic.cinay.eu : yunohost domain add zic.cinay.eu

Warning: No diagnosis cache yet for category 'dnsrecords'
Warning: No diagnosis cache yet for category 'web'
Warning: No diagnosis cache yet for category 'dnsrecords'
Warning: No diagnosis cache yet for category 'web'
Success! Configuration updated for 'nginx'
Warning: No diagnosis cache yet for category 'dnsrecords'
Warning: No diagnosis cache yet for category 'web'
Success! Self-signed certificate now installed for the domain 'zic.cinay.eu'
Warning: No diagnosis cache yet for category 'dnsrecords'
Warning: No diagnosis cache yet for category 'web'
Warning: No diagnosis cache yet for category 'dnsrecords'
Warning: No diagnosis cache yet for category 'web'
Warning: No diagnosis cache yet for category 'dnsrecords'
Warning: No diagnosis cache yet for category 'web'
Success! Configuration updated for 'postfix'
Success! Configuration updated for 'nginx'
Success! Configuration updated for 'dnsmasq'
Success! Configuration updated for 'metronome'
Warning: Job for dnsmasq.service failed because the control process exited with error code.
Warning: See "systemctl status dnsmasq.service" and "journalctl -xe" for details.
Error: Could not run script: /usr/share/yunohost/hooks/conf_regen/43-dnsmasq
Success! Domain created

On stoppe dnsmasq

sudo systemctl stop dnsmasq

Les certificats : yunohost domain cert-install zic.cinay.eu NE FONCTIONNE PAS AVEC DEBIAN BUSTER

on va créer un dossier de la forme aaaammdd.hhmmss-letsencrypt (en mode su),avec la date et heure du jour

sudo mkdir -p /etc/yunohost/certs/zic.cinay.eu-history/20200519.181500-letsencrypt

Puis on va créer les liens

Les liens pour les certificats

sudo ln -s /home/debian/.acme.sh/cinay.eu_ecc/cinay.eu.key /etc/yunohost/certs/zic.cinay.eu-history/20200519.181500-letsencrypt/key.pem     # cert key
sudo ln -s /home/debian/.acme.sh/cinay.eu_ecc/fullchain.cer /etc/yunohost/certs/zic.cinay.eu-history/20200519.181500-letsencrypt/crt.pem   # full chain certs

Enfin on va informer yunohost par un lien que l’on utilise des certificats let’s encrypt

sudo rm /etc/yunohost/certs/zic.cinay.eu # efface le lien certificat non signé
sudo ln -s /etc/yunohost/certs/zic.cinay.eu-history/20200519.181500-letsencrypt /etc/yunohost/certs/zic.cinay.eu # Création lien sur les certificats let's encrypt 
/etc/yunohost/certs/
├── zic.cinay.eu -> /etc/yunohost/certs/zic.cinay.eu-history/20200519.181500-letsencrypt
└── zic.cinay.eu-history
    ├── 20200519.160657-selfsigned
    │   ├── ca.pem -> /etc/ssl/certs/ca-yunohost_crt.pem
    │   ├── crt.pem
    │   ├── key.pem
    │   └── openssl.cnf
    └── 20200519.181500-letsencrypt
        ├── crt.pem -> /home/debian/.acme.sh/cinay.eu_ecc/fullchain.cer
        └── key.pem -> /home/debian/.acme.sh/cinay.eu_ecc/cinay.eu.key

Installer l’application Multi web app sur le domaine zic.cinay.eu

sudo -s
git clone https://gitea.cinay.xyz/yannick/multi_webapp_buster_ynh
yunohost app install multi_webapp_buster_ynh/
DANGER! This app is not part of Yunohost's app catalog. Installing third-party apps may compromise the integrity and security of your system. You should probably NOT install it unless you know what you are doing. NO SUPPORT will be provided if this app doesn't work or breaks your system… If you are willing to take that risk anyway, type 'Yes, I understand': Yes, I understand
Available domains:
- cinay.eu
- wg.cinay.eu
- zic.cinay.eu
Choose a domain for your Webapp (default: cinay.eu): zic.cinay.eu
Choose a path for your Webapp (default: /site): /
Available users:
- yann
Choose the YunoHost user: yann
Create a database? [yes | no] (default: no): 
Is it a public website ? [yes | no] (default: no): yes
Info: Installing the app 'multi_webapp'…
Info: [+...................] > Retrieve arguments from the manifest
Info: [#+..................] > Check if the app can be installed
Info: [##+++...............] > Store settings from manifest
Info: [#####+..............] > Setup SSOwat
Warning: /!\ Packagers! This app is still using the skipped/protected/unprotected_uris/regex settings which are now obsolete and deprecated... Instead, you should use the new helpers 'ynh_permission_{create,urls,update,delete}' and the 'visitors' group to initialize the public/private access. Check out the documentation at the bottom of yunohost.org/groups_and_permissions to learn how to use the new permission mechanism.
Info: [######+.............] > Create final path
Info: The directory /var/www/webapp_yann already exist, do not recreate it.
Info: [#######+++..........] > Create a dedicated user
Info: [##########+.........] > Configure php-fpm
Info: [###########+........] > Configure nginx
Info: [############+++++...] > Reload nginx
Success! Installation completed

Voir https://yunohost.org/#/groups_and_permissions

yunohost user permission list
permissions: 
  mail.main: 
    allowed: all_users
  multi_webapp.main: 
    allowed: all_users
  multi_webapp__2.main: 
    allowed: 
      - visitors
      - all_users
  xmpp.main: 
    allowed: all_users

On voit que multi_webapp__2.main à un accès complet sans aucune autorisation

proxy nginx

Gonic est un serveur local http sur le port 4747 et pour un accès externe il nous faut un proxy

Proxy nginx - configuration /etc/nginx/conf.d/zic.cinay.eu.d/webapp_zic.cinay.eu_.conf

#sub_path_only rewrite ^/$ / permanent;
location / {
    # Proxy zic server

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      proxy_pass          http://localhost:4747;
      proxy_read_timeout  120;

	# Include SSOWAT user panel.
	include conf.d/yunohost_panel.conf.inc;
}

On vérifie et on relance le serveur nginx

sudo nginx -t
sudo systemctl reload nginx

Accès https://zic.cinay.eu

gonic

Python version 3 par défaut

Pour changer la version de python à l’échelle du système, nous allons utiliser la commande update-alternatives en tant qu’utilisateur root.
Pour visualiser toutes les alternatives disponibles de python :

update-alternatives --list python

update-alternatives: error: no alternatives for python

Le message d’erreur ci-dessus indique qu’aucune alternative de python n’a été reconnue par update-alternatives.
Pour cette raison, nous devons mettre à jour notre tableau des alternatives et inclure à la fois python2.7 et python3.7 :

update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1

update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode

update-alternatives --install /usr/bin/python python /usr/bin/python3.7 2

update-alternatives: using /usr/bin/python3.7 to provide /usr/bin/python (python) in auto mode

L’option –install prend plusieurs arguments à partir desquels il sera capable de créer un lien symbolique. Le dernier argument spécifié défini la priorité, si aucune sélection manuelle alternative n’est donnée, l’option avec le numéro de priorité le plus élevé sera exécutée. Dans notre cas, nous avons défini une priorité 2 pour /usr/bin/python3.7 et de ce fait /usr/bin/python3.7 a été définie comme la version python par défaut par update-alternatives.

python --version

Python 3.7.3

Installer pip3

sudo apt install python3-pip
sudo ln -s /usr/bin/pip3 /usr/bin/pip

Moteur de recherche - searx.cinay.eu

Un méta-moteur de recherche respectueux de la vie privée et bidouillable

domaine searx.cinay.eu

Ajout domaine searx.cinay.xyz et certificat let’s encrypt (mode su)

yunohost add searx.cinay.eu
yunohost domain cert-install searx.cinay.eu --no-checks

application searx

Installation par administration web
domaine : searx.cinay.eu
chemin : /

Modifier les paramètres

nano /opt/yunohost/searx/searx/settings.yml
general:

    instance_name : "YannSearx" # displayed name

search:

    language : "fr-FR"

server:

    image_proxy : True # Proxying image results through searx

ui:



  - name : duckduckgo
    engine : duckduckgo
    shortcut : ddg

  - name : duckduckgo images
    engine : duckduckgo_images
    shortcut : ddi
    timeout: 3.0

  - name : fdroid
    engine : fdroid
    shortcut : fd

  - name : google
    engine : google
    shortcut : go
    disabled : True


default_doi_resolver : 'oadoi.org'

MAINTENANCE

Rétablir le fonctionnement de base yunohost

Pour la dns wireguard ,on utilise unbound qui ne peut être associé à dnsmasq
Il faut trouver une autre solution pour la dns wireguard
On revient au fonctionnement initial

systemctl stop unbound-resolvconf.service
systemctl stop unbound.service
systemctl disable unbound-resolvconf.service
systemctl disable unbound.service
systemctl start dnsmasq
systemctl enable dnsmasq
systemctl status dnsmasq
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
   Loaded: loaded (/lib/systemd/system/dnsmasq.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-05-20 14:52:37 CEST; 7s ago
  Process: 17284 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited, status=0/SUCCESS)
  Process: 17285 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=0/SUCCESS)
  Process: 17295 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf (code=exited, status=0/SUCCESS)
 Main PID: 17294 (dnsmasq)
    Tasks: 1 (limit: 2313)
   Memory: 1.7M
   CGroup: /system.slice/dnsmasq.service
           └─17294 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-

May 20 14:52:36 cinay.eu dnsmasq[17294]: using nameserver 2a01:3a0:53:53::#53
May 20 14:52:36 cinay.eu dnsmasq[17294]: using nameserver 80.67.190.200#53
May 20 14:52:36 cinay.eu dnsmasq[17294]: using nameserver 2a00:5884:8218::1#53
May 20 14:52:36 cinay.eu dnsmasq[17294]: using nameserver 194.150.168.168#53
May 20 14:52:36 cinay.eu dnsmasq[17294]: using nameserver 84.200.69.80#53
May 20 14:52:36 cinay.eu dnsmasq[17294]: using nameserver 2a0c:e300::101#53
May 20 14:52:36 cinay.eu dnsmasq[17294]: using nameserver 2001:910:800::40#53
May 20 14:52:36 cinay.eu dnsmasq[17294]: using nameserver 195.160.173.53#53
May 20 14:52:36 cinay.eu dnsmasq[17294]: read /etc/hosts - 7 addresses
May 20 14:52:37 cinay.eu systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.