(Modifié le 25/10/2019)

Yunohost Debian Stretch cinay.xyz

VPS-KVM OVH


VPS 2018 SSD 3

  • 2 vCores
  • 8Go Ram
  • 80Go SSD

Livraison : vps591606 51.75.120.106

  • Domaine : cinay.xyz
  • IPv4 du serveur : 51.75.120.106
  • IPv6 du serveur : 2001:41d0:0305:2100:0:0:0:4dc0 (2001:41d0:305:2100::4dc0)
  • IPV6 gateway : 2001:41d0:0305:2100:0:0:0:1 (2001:41d0:305:2100::1)

Debian Stretch

Debian 9

Connexion SSH sur “VPS 2018 SSD 3 (2 vCores/8GoRam/80GoSSD)”

ssh root@51.75.120.106

Modification du réseau, ajout IPV6
Sur le VPS OVH il faut désactiver l’initialisation réseau par le cloud

# 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

Modifier le fichier /etc/network/interfaces

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

source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto ens3
iface ens3 inet dhcp
iface ens3 inet6 static
 address 2001:41d0:0305:2100:0:0:0:4dc0
 netmask 128
 post-up /sbin/ip -6 route add 2001:41d0:0305:2100:0:0:0:1 dev ens3
 post-up /sbin/ip -6 route add default via 2001:41d0:0305:2100:0:0:0:1 dev ens3
 pre-down /sbin/ip -6 route del default via 2001:41d0:0305:2100:0:0:0:1 dev ens3
 pre-down /sbin/ip -6 route del 2001:41d0:0305:2100:0:0:0:1 dev ens3

Mise à jour de la distribution debian stretch

apt update && apt -y upgrade

Redémarrer la machine systemctl reboot pour la prise en compte des modifications du réseau

Connexion SSH sur “VPS 2018 SSD 3 (2 vCores/8GoRam/80GoSSD)”

ssh root@51.75.120.106

Vérifier le réseau ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:07:c2:34 brd ff:ff:ff:ff:ff:ff
    inet 51.75.120.106/32 brd 51.75.120.106 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 2001:41d0:305:2100::4dc0/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe07:c234/64 scope link 
       valid_lft forever preferred_lft forever

Yunohost

Yunohost

Installation Yunohost

Lancer le bash et patienter

bash <(wget -q -O- https://install.yunohost.org/)

Valider la “post-installation” ou lancer

yunohost tools postinstall   

Main domain: cinay.xyz
Mot de passe administrateur

Success! YunoHost has been configured
Warning: The post-install is finished but YunoHost needs at least one user to work correctly, you should add one using 'yunohost user create' or the admin interface.
[INFO] Installation logs are available in /var/log/yunohost-installation_20181203_070221.log
[ OK ] YunoHost installation completed !

Créer un utilisateur

yunohost user create yannick
Mot de passe d'administration : 
Prénom : yannick
Nom : meunier
Adresse courriel : yannick@cinay.xyz
Mot de passe : 
Confirmez : mot de passe : 
Création du répertoire « /home/yannick ».
Succès ! La configuration de SSOwat a été générée
Succès ! L'utilisateur a été créé
fullname: yannick meunier
mail: yannick@cinay.xyz
username: yannick

Installation des certificats

yunohost domain cert-install
Info: Now attempting install of certificate for domain cinay.xyz!
Succès ! La configuration de SSOwat a été générée
Succès ! La configuration a été mise à jour pour le service « dnsmasq »
Info: Parsing account key...
Info: Parsing CSR...
Info: Registering account...
Info: Registered!
Info: Verifying cinay.xyz...
Info: cinay.xyz verified!
Info: Signing certificate...
Info: Certificate signed!
Succès ! Installation avec succès d’un certificat Let’s Encrypt pour le domaine cinay.xyz !

Administration yunohost

Connexion administrateur yunohost https://cinay.xyz/yunohost/admin
Vérifier le status des services https://cinay.xyz/yunohost/admin/#/services
Récupérer les paramètres DNS du domaine cinay.xyz https://cinay.xyz/yunohost/admin/#/domains/cinay.xyz/dns

Administration OVH (DNS et VPS)

Se connecter sur le manager OVH

Modifier le reverse DNS du VPS vps591606.ovh.net (IPV4 er IPV6) : cinay.xyz
Modifier la configuration DNS du domaine cinay.xyz

DNS

Se connecter en administrateur sur le site cinay.xyz
Domaines → cinay.xyz → Configuration DNS # pour récupérer les paramètres
Modifier la DNS du domaine cinay.xyz :

$TTL 3600
@	IN SOA dns112.ovh.net. tech.ovh.net. (2018092426 86400 3600 3600000 300)
                    3600 IN NS     dns112.ovh.net.
                    3600 IN NS     ns112.ovh.net.
                    3600 IN MX 10  cinay.xyz.
                    3600 IN A      51.75.120.106
                    3600 IN AAAA   2001:41d0:305:2100::4dc0
                     600 IN TXT    "v=spf1 a mx ip4:51.75.120.106 ip6:2001:41d0:305:2100::4dc0 -all"
*                   3600 IN CNAME  cinay.xyz.
_dmarc                   IN TXT    ( "v=DMARC1; p=none;" )
_xmpp-client._tcp   3600 IN SRV    0 5 5222 cinay.xyz.
_xmpp-server._tcp   3600 IN SRV    0 5 5269 cinay.xyz.
mail._domainkey     3600 IN TXT    ( "v=DKIM1; k=rsa; h=sha256; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOltTHam7WsBs1Fn26v7hSqe4bkNsruffIpinULglGcLHR8H0Cbks1jPuAZKuKLH1J7KxwelJ9F17mNqCuVDyPwGx1qLT8aEs3vD6L8tn9Aow1b2hEr2HQR6B6Ad90QYliI1BIVjrTjCpJyWYv3PUNow4QnUw/UhxX2bEK19apUwIDAQAB" )
muc                 3600 IN CNAME  cinay.xyz.
pubsub              3600 IN CNAME  cinay.xyz.
vjud                3600 IN CNAME  cinay.xyz.

OpenSSH avec clés

OpenSSH

Créer un utilisateur debian
Il faut un utilisateur debian non ldap pour les connexions ssh

adduser debadm # création du home et saisie mot de passe

Visudo pour les accès root via utilisateur debadm

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

Poste local
Génération d’une paire de clés

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

Le déploiement de la clé publiques .pub

ssh-copy-id -i ~/.ssh/kvm-vps591606.pub debadm@51.75.120.106

Serveur distant

Se connecter au serveur distant depuis le poste local avec utilisateur debian

ssh debadm@cinay.xyz

La clé publique est ajoutée au fichier distant /home/debadm/.ssh/authorized_keys du serveur
Autre possibilité :

mkdir /home/debadm/.ssh                 # créer un dossier .ssh
nano /home/debadm/.ssh/authorized_keys  # Coller le contenu de la clé publique kvm-vps591606.pub
chmod 600 /home/debadm/.ssh/authorized_keys # droits utilisateur

Utiliser la clé publique

Fichier /etc/ssh/sshd_config sur le serveur distant, liste des paramètres qui sont modifiés

Port 55031
PermitRootLogin no 
PasswordAuthentication no 

On peut également modifier le port de connexion SSH
Exemple remplacer port 22 par port 55031 :
Port 55031 # dans le fichier /etc/ssh/sshd_config
NE PAS OUBLIER DE MODIFIER LE PAREFEU (FIREWALL) YUNOHOST :
yunohost firewall disallow TCP 22 # désactiver le port 22
yunohost firewall allow TCP 55031 # activer le port 55031

Recharger le serveur ssh

systemctl restart sshd

Test de la connexion ssh par clé depuis le poste local

ssh -i ~/.ssh/kvm-vps591606 debadm@51.75.120.106 # port 22
ssh -p 55031 -i ~/.ssh/kvm-vps591606 debadm@51.75.120.106 # port 55031
ssh -p 55031 -i ~/.ssh/kvm-vps591606 debadm@cinay.xyz # port 55031 et DNS OK/Domaine

Affichage à la connexion ssh

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

sudo apt install curl jq figlet 
sudo apt install tmux p7zip     # outils supplémentaires

Créer le fichier ~/.ssh/rc

#!/bin/bash

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

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

Effacer motd

sudo rm /etc/motd

Déconnexion puis connexion

Applications Yunohost

Nextcloud

Nextcloud
Installer Nextcloud avec l’administrateur web yunohost
Accéder au dossier personnel des utilisateurs depuis Nextcloud

Transmission

Transmission
Installer Transmission avec l’administrateur web yunohost

Tiny Tiny RSS

Tiny Tiny RSS
Installer Tiny Tiny RSS avec l’administrateur web yunohost

Gitea

Gitea

  1. Ajout domaine gitea.cinay.xz
  2. Certificats Let’s Encrypt pour le domaine
  3. Installer l’application Gitea
    • domaine : gitea.cinay.xyz
    • Chemin : /
    • Administrateur : yannick
    • Site publique : Oui

Calibre-Web

Calibre-web

  1. Ajout domaine calibre.cinay.xz
  2. Certificats Let’s Encrypt pour le domaine
  3. Installer l’application Calibre-web
    calibre-web

Emplacement de la base de donnée Calibre : /home/yunohost.multimedia/share/eBook/
Copie dossier CalibreTechnique du serveur backup xoyaz.xyz → cinay.xyz

sudo -s
rsync -avz -e "ssh -p 55036 -i .ssh/OVZ-STORAGE-128 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress usernl@5.2.79.107:/home/usernl/backup/CalibreTechnique/* /home/yunohost.multimedia/share/eBook/
sudo chown calibreweb:calibreweb -R /home/yunohost.multimedia/share/eBook/  # les droits

En mode admin , il faut redémarrer calibre-web

Dokuwiki

Texte alternatif
Installer Dokuwiki avec l’administrateur web yunohost

En cas de problème

Le point le plus important et la prise en charge LDAP , le plugin LDAP Auth Plugin doit être actif (cas de transfert de dokuwiki ou après une mise à jour , perte de l’authentification LDAP !!!)
La configuration spécifique à LDAP dans le fichier /var/www/dokuwiki/conf/dokuwiki.php

/* Authentication Settings */
$conf['useacl']      = 1;                //Use Access Control Lists to restrict access?
$conf['openregister']= 0;
$conf['autopasswd']  = 1;                //autogenerate passwords and email them to user
$conf['authtype']    = 'authldap';      //which authentication backend should be used
$conf['passcrypt']   = 'sha1';           //Used crypt method (smd5,md5,sha1,ssha,crypt,mysql,my411)
$conf['defaultgroup']= 'user';           //Default groups new Users are added to
$conf['superuser']   = 'yannick';    //The admin can be user or @group or comma separated list user1,@group1,user2
$conf['manager']     = 'yannick';    //The manager can be user or @group or comma separated list user1,@group1,user2
$conf['profileconfirm'] = 1;             //Require current password to confirm changes to user profile
$conf['rememberme'] = 1;                 //Enable/disable remember me on login
$conf['disableactions'] = '';            //comma separated list of actions to disable
$conf['auth_security_timeout'] = 900;    //time (seconds) auth data is considered valid, set to 0 to recheck on every page view
$conf['securecookie'] = 1;               //never send HTTPS cookies via HTTP
$conf['remote']      = 0;                //Enable/disable remote interfaces
$conf['remoteuser']  = '!!not set !!';   //user/groups that have access to remote interface (comma separated)

/* LDAP Yunohost config */
$conf['plugin']['authldap']['server']      = 'localhost';
$conf['plugin']['authldap']['port']        = 389;
$conf['plugin']['authldap']['version']    = 3;
$conf['plugin']['authldap']['usertree']    = 'ou=users,dc=yunohost,dc=org';
$conf['plugin']['authldap']['userfilter']  = '(&(uid=%{user})(objectClass=posixAccount))';
# no groups
#$conf['plugin']['authldap']['grouptree']   = 'ou=Group, dc=server, dc=tld';
#$conf['plugin']['authldap']['groupfilter'] = '(&(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))'; 

Structure et droits des dossiers dokuwiki

root@cinay:/home/debadm# ls -la /var/www/dokuwiki/
total 124
drwxr-xr-x  9 root     root  4096 Nov  6 15:56 .
drwxr-xr-x  7 root     root  4096 Dec  3 09:30 ..
drwxr-xr-x  2 root     root  4096 May  3  2018 bin
drwxr-xr-x  2 dokuwiki root  4096 Nov  6 15:57 conf
-rw-r--r--  1 root     root 18092 May  3  2018 COPYING
drwxr-x--- 12 dokuwiki root  4096 Nov  6 15:56 data
drwxr-xr-x  2 root     root 12288 Sep  5 07:21 doc
-rw-r--r--  1 root     root  3547 Nov  6 15:56 doku.php
-rw-r--r--  1 root     root 19141 May  3  2018 feed.php
-rw-r--r--  1 root     root  1684 May  3  2018 .htaccess.dist
drwxr-xr-x  9 dokuwiki root  4096 Nov  6 15:56 inc
-rw-r--r--  1 root     root  2097 May  3  2018 index.php
-rw-r--r--  1 root     root 19233 May  3  2018 install.php
drwxr-xr-x  8 root     root  4096 May  3  2018 lib
-rw-r--r--  1 root     root   306 May  3  2018 README
drwxr-xr-x 12 root     root  4096 May  3  2018 vendor
-rw-r--r--  1 root     root    21 May  3  2018 VERSION

Site statique (static.cinay.xyz)

image

Création domaine gitlab.cinay.xyz
En mode administrateur ou en ligne de commande, créer un domaine gitlab.cinay.xyz puis générer les certificats letsencrypt

En ligne de commande (passer en root)

yunohost domain add static.cinay.xyz 
Administration password: 
Success! Successfully installed a self-signed certificate for domain static.cinay.xyz!
Success! The configuration has been updated for service 'postfix'
Success! The configuration has been updated for service 'nginx'
Success! The configuration has been updated for service 'dnsmasq'
Success! The configuration has been updated for service 'metronome'
Success! The SSOwat configuration has been generated
Success! The domain has been created
yunohost domain cert-install static.cinay.xyz
Info: Now attempting install of certificate for domain static.cinay.xyz!
Success! The SSOwat configuration has been generated
Success! The configuration has been updated for service 'dnsmasq'
Info: Parsing account key...
Info: Parsing CSR...
Info: Registering account...
Info: Already registered!
Info: Verifying static.cinay.xyz...
Info: static.cinay.xyz verified!
Info: Signing certificate...
Info: Certificate signed!
Success! Successfully installed Let's Encrypt certificate for domain static.cinay.xyz!

En mode su (root), installation Jekyll avec gems (source):

apt install build-essential ruby-full
gem install bundler jekyll-feed           # thème "minima" (si aucun thème dans la suite...)

Vérifier installation avec la version

jekyll -v

Installer wikistatic
Installer dépendances Rmagick sur Debian

sudo apt install imagemagick imagemagick-doc 
sudo apt install ruby-rmagick

Création dossier

sudo mkdir -p /srv     # création dossier

Clonage wikistatic par git

cd /srv
sudo git clone https://gitlab.cinay.xyz/spm/wikistatic.git

Les droits sur le dossier

sudo chown   $USER. -R /srv/wikistatic

Lancement “bundle” dans le dossier /srv/wikistatic

cd /srv/wikistatic
bundle

Créer service jekyll
Le script /srv/wikistatic/start_jekyll.sh contenu dans le service

#!/bin/sh
#lancement jekyll
cd /srv/wikistatic/
# Attente et construction
/usr/local/bin/bundle exec jekyll build --watch

On va exécuter un service qui va mettre le générateur “jekyll” en attente de modifications dans le dossier _posts (création, modification ou suppression de fichier markdown)

sudo nano /etc/systemd/system/jekyll.service

Contenu du fichier (User debadm)

[Unit]
Description=jekyll Service
After=network.target

[Service]
Type=simple
User=debadm
ExecStart=/bin/sh /srv/wikistatic/start_jekyll.sh
Restart=on-abort


[Install]
WantedBy=multi-user.target

Lancer le service jekyll :

sudo systemctl daemon-reload
sudo systemctl start jekyll
# Valider le lancement du service jekyll au démarrage
sudo systemctl enable jekyll
#Vérifier
sudo systemctl status jekyll
● jekyll.service - jekyll Service
   Loaded: loaded (/etc/systemd/system/jekyll.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-09-25 18:02:12 CEST; 2min 8s ago
 Main PID: 21630 (sh)
   CGroup: /system.slice/jekyll.service
           ├─21630 /bin/sh /srv/wikistatic/start_jekyll.sh
           └─21632 /usr/local/bin/jekyll build --watch

Sep 25 18:02:12 cinay.xyz systemd[1]: Started jekyll Service.
Sep 25 18:02:13 cinay.xyz sh[21630]: Configuration file: /srv/wikistatic/_config.yml
Sep 25 18:02:13 cinay.xyz sh[21630]:             Source: /srv/wikistatic
Sep 25 18:02:13 cinay.xyz sh[21630]:        Destination: /srv/wikistatic/_site
Sep 25 18:02:13 cinay.xyz sh[21630]:  Incremental build: disabled. Enable with --incremental
Sep 25 18:02:13 cinay.xyz sh[21630]:       Generating...
Sep 25 18:02:13 cinay.xyz sh[21630]:                     done in 0.374 seconds.
Sep 25 18:02:13 cinay.xyz sh[21630]:  Auto-regeneration: enabled for '/srv/wikistatic'

jekyll génére un dossier statique /srv/wikistatic/_site

Installation de l’application “Multi webapp for YunoHost” sur le domaine static.cinay.xyz

yunohost app install https://github.com/YunoHost-Apps/multi_webapp_ynh
WARNING! Installing 3rd party applications may compromise the integrity and security of your system. You should probably NOT install it unless you know what you are doing. Are you willing to take that risk? [Y/N] : Y
Available domains:
- cinay.xyz
- map.cinay.xyz
- blog.cinay.xyz
- liens.cinay.xyz
- static.cinay.xyz
Choose a domain for your Webapp (default: cinay.xyz): static.cinay.xyz
Choose a path for your Webapp (default: /site): /
Available users:
- yannick
Choose the YunoHost user: yannick
Create a database? [yes | no] (default: no): 
Is it a public website ? [yes | no] (default: no): yes
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_yannick already exist, do not recreate it.
Info: [#######.............] > Create a dedicated user
Warning: Reload the service php7.0-fpm
Info: [##########..........] > Configure php-fpm
Info: [###########.........] > Configure nginx
Warning: Reload the service nginx
Info: [############........] > Reload nginx
Info: [####################] > Installation completed
Success! The SSOwat configuration has been generated
Success! Installation complete

Le dossier par défaut de “Multi webapp for YunoHost” /var/www/webapp_yannick/static.cinay.xyz_/

sudo rm -r /var/www/webapp_yannick/static.cinay.xyz_/  # on supprime le dossier par défaut
sudo ln -s /srv/wikistatic/_site /var/www/webapp_yannick/static.cinay.xyz_  # créer le lien

Les dossiers images files et _posts du site statique sont synchronisés par nextcloud dans /home/yannick/statique , il faut créer des liens avec jekyll

tree -L 1 /home/yannick/statique/
/home/yannick/statique/
├── files
├── images
├── liens_pour_editeur_md
└── _posts

Création des liens

sudo rm -r /srv/wikistatic/{files,images,_posts} # suppression des dossiers existants
sudo ln -s /home/yannick/statique/_posts /srv/wikistatic/_posts
sudo ln -s /home/yannick/statique/images /srv/wikistatic/images
sudo ln -s /home/yannick/statique/files /srv/wikistatic/files

Ce qui donne

tree -L 1 /srv/wikistatic/
/srv/wikistatic/
├── 404.html
├── assets
├── categories.html
├── _config.yml
├── feed.xml
├── files -> /home/yannick/statique/files
├── Gemfile
├── Gemfile.lock
├── images -> /home/yannick/statique/images
├── _includes
├── index.html
├── js
├── _layouts
├── _posts -> /home/yannick/statique/_posts
├── README.md
├── _site
├── start_jekyll.sh
├── tags.html
└── wikistatic.json

Changer l’étiquette par “Static” en utilisant l’administration web “Applications”

Le site statique sur le lien https://static.cinay.xyz

Cartographie (map.cinay.xyz)

Cartographie

Yunohost mode administration web

créer le domaine map.cinay.xyz puis les certificats Let’s Encrypt
Installation de l’application “Multi webapp for YunoHost” sur le domaine map.cinay.xyz

yunohost app install https://github.com/YunoHost-Apps/multi_webapp_ynh
WARNING! Installing 3rd party applications may compromise the integrity and security of your system. You should probably NOT install it unless you know what you are doing. Are you willing to take that risk? [Y/N] : Y
Available domains:
- cinay.xyz
- map.cinay.xyz
- blog.cinay.xyz
- liens.cinay.xyz
- static.cinay.xyz
Choose a domain for your Webapp (default: cinay.xyz): map.cinay.xyz
Choose a path for your Webapp (default: /site): /
Available users:
- yannick
Choose the YunoHost user: yannick
Create a database? [yes | no] (default: no): 
Is it a public website ? [yes | no] (default: no): yes
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_yannick already exist, do not recreate it.
Info: [#######.............] > Create a dedicated user
Info: [##########..........] > Configure php-fpm
Warning: Reload the service php7.0-fpm
Warning: Reload the service nginx
Info: [###########.........] > Configure nginx
Info: [############........] > Reload nginx
Info: [####################] > Installation completed
Success! The SSOwat configuration has been generated
Success! Installation complete

Le dossier par défaut de “Multi webapp for YunoHost” /var/www/webapp_yannick/map.cinay.xyz_/

sudo rm -r /var/www/webapp_yannick/map.cinay.xyz_/  # on supprime le dossier par défaut
sudo ln -s /srv/map /var/www/webapp_yannick/map.cinay.xyz_  # créer le lien

Changer l’étiquette par “Cartes” en utilisant l’administration web “Applications”

Synchronisation locale des fichiers gpx

Les fichiers gpx du dosser /srv/osm-new/file ne peuvent pas être utilisés par nextcloud et map pour une question de droits
Pour une utilisation par une application nextcloud dans le dossier /home/yannick/gpx on va le synchroniser avec le dossier /srv/osm-new/file/ par lsyncd

sudo -s
mkdir /var/log/lsyncd
touch /var/log/lsyncd.{log,status}
# Configuration file goes on /etc/lsyncd:
mkdir /etc/lsyncd
# le fichier de configuration
echo '
settings = {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status"
}

sync {
default.rsync,
source = "/srv/osm-new/file/",
target = "/home/yannick/gpx",
}
' > /etc/lsyncd/lsyncd.conf.lua
# lancement du service
systemctl restart lsyncd

Le contenu du dossier /home/yannick/gpx est synchronisé automatiquement avec le dossier /srv/osm-new/file/

IMPORTANT : Cette synchronisation est imposée pour l’utilisation d’une application nextcloud nommée gpxpod

L'application gpxpod ne sait pas traiter les noms de fichiers avec des espaces

, il faut exécuter dans le dossier /home/yannick/gpx , un bash ./remplacer-les-espaces-par_dans-les-noms-de-fichier.sh en mode su

Liens extérieurs (liens.cinay.xyz)

Création domaine liens.cinay.xyz et certificats SSL
Installation de l’application “Multi webapp for YunoHost” sur le domaine liens.cinay.xyz

yunohost app install https://github.com/YunoHost-Apps/multi_webapp_ynh
WARNING! Installing 3rd party applications may compromise the integrity and security of your system. You should probably NOT install it unless you know what you are doing. Are you willing to take that risk? [Y/N] : Y
Available domains:
- cinay.xyz
- map.cinay.xyz
- blog.cinay.xyz
- liens.cinay.xyz
- static.cinay.xyz
Choose a domain for your Webapp (default: cinay.xyz): liens.cinay.xyz
Choose a path for your Webapp (default: /site): /
Available users:
- yannick
Choose the YunoHost user: yannick
Create a database? [yes | no] (default: no): 
Is it a public website ? [yes | no] (default: no): yes
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_yannick already exist, do not recreate it.
Info: [#######.............] > Create a dedicated user
Info: [##########..........] > Configure php-fpm
Warning: Reload the service php7.0-fpm
Info: [###########.........] > Configure nginx
Warning: Reload the service nginx
Info: [############........] > Reload nginx
Info: [####################] > Installation completed
Success! The SSOwat configuration has been generated
Success! Installation complete

Le dossier par défaut de “Multi webapp for YunoHost” /var/www/webapp_yannick/liens.cinay.xyz_/

sudo rm -r /var/www/webapp_yannick/liens.cinay.xyz_/  # on supprime le dossier par défaut
sudo ln -s /home/debadm/liens /var/www/webapp_yannick/liens.cinay.xyz_  # créer le lien

Contenu

tree -L 2 /var/www/webapp_yannick/liens.cinay.xyz_/
/var/www/webapp_yannick/liens.cinay.xyz_/
├── css
│   ├── full-1.css
│   └── knacss.css
├── fork-awesome
│   ├── css
│   └── fonts
├── images
│   ├── grisfonce_038.jpg
│   ├── intro-bg.jpg
│   └── lighthouse-storm-at-night-wallpaper.jpg
├── index.html
└── README.md

Changer l’étiquette par “Liens” en utilisant l’administration web “Applications”

Shaarli

image
Voulez-vous partager les liens que vous découvrez ? Shaarli est un gestionnaire de signets minimaliste et un service de partage de liens que vous pouvez installer sur votre propre serveur. Il est conçu pour être personnel (monoposte), rapide et pratique.

  1. Ajout domaine shaarli.cinay.xz
  2. Certificats Let’s Encrypt pour le domaine
  3. Installer l’application shaarli
    • domaine : shaarli.cinay.xyz
    • Chemin : /
    • Site publique : Oui

ATTENTION!!! PROBLEMES+ de droits et d’installation

En raison des problèmes évoqués, voici la procédure à suivre :

sudo rm -r /var/www/shaarli # suppression appli web shaarli installée par yunohost

Réinstaller shaarli
Télécharger la dernière version de Shaarli depuis la page des versions (Télécharger l’archive shaarli-full pour inclure les dépendances).

wget https://github.com/shaarli/Shaarli/releases/download/v0.11.1/shaarli-v0.11.1-full.tar.gz
unzip shaarli-v0.11.1-full.tar.gz
sudo mv Shaarli /var/www/shaarli
sudo chown shaarli:shaarli -R /var/www/shaarli

Ouvrir le lien https://shaarli.cinay.xyz pour le paramétrage


Après l’installation, se connecter en utilisateur/mot de passe

Structures

nginx (/etc/nginx)

tree /etc/nginx
/etc/nginx
├── conf.d
│   ├── blog.cinay.xyz.conf
│   ├── blog.cinay.xyz.d
│   │   ├── 000-acmechallenge.conf
│   │   └── webapp_blog.cinay.xyz_.conf
│   ├── calibre.cinay.xyz.conf
│   ├── calibre.cinay.xyz.d
│   │   └── 000-acmechallenge.conf
│   ├── cinay.xyz.conf
│   ├── cinay.xyz.d
│   │   ├── 000-acmechallenge.conf
│   │   ├── dokuwiki.conf
│   │   ├── nextcloud.conf
│   │   ├── transmission.conf
│   │   ├── ttrss.conf
│   │   └── yunohost_local.conf
│   ├── gitea.cinay.xyz.conf
│   ├── gitea.cinay.xyz.d
│   │   ├── 000-acmechallenge.conf
│   │   └── gitea.conf
│   ├── global.conf
│   ├── liens.cinay.xyz.conf
│   ├── liens.cinay.xyz.d
│   │   ├── 000-acmechallenge.conf
│   │   └── webapp_liens.cinay.xyz_.conf
│   ├── map.cinay.xyz.conf
│   ├── map.cinay.xyz.d
│   │   ├── 000-acmechallenge.conf
│   │   └── webapp_map.cinay.xyz_.conf
│   ├── shaarli.cinay.xyz.conf
│   ├── shaarli.cinay.xyz.d
│   │   ├── 000-acmechallenge.conf
│   │   └── shaarli.conf
│   ├── ssowat.conf
│   ├── static.cinay.xyz.conf
│   ├── static.cinay.xyz.d
│   │   ├── 000-acmechallenge.conf
│   │   └── webapp_static.cinay.xyz_.conf
│   ├── yunohost_admin.conf
│   ├── yunohost_admin.conf.inc
│   ├── yunohost_api.conf.inc
│   └── yunohost_panel.conf.inc
├── fastcgi.conf
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── modules-available
├── modules-enabled
│   ├── 10-mod-http-ndk.conf -> /usr/share/nginx/modules-available/mod-http-ndk.conf
│   ├── 50-mod-http-auth-pam.conf -> /usr/share/nginx/modules-available/mod-http-auth-pam.conf
│   ├── 50-mod-http-cache-purge.conf -> /usr/share/nginx/modules-available/mod-http-cache-purge.conf
│   ├── 50-mod-http-dav-ext.conf -> /usr/share/nginx/modules-available/mod-http-dav-ext.conf
│   ├── 50-mod-http-echo.conf -> /usr/share/nginx/modules-available/mod-http-echo.conf
│   ├── 50-mod-http-fancyindex.conf -> /usr/share/nginx/modules-available/mod-http-fancyindex.conf
│   ├── 50-mod-http-geoip.conf -> /usr/share/nginx/modules-available/mod-http-geoip.conf
│   ├── 50-mod-http-headers-more-filter.conf -> /usr/share/nginx/modules-available/mod-http-headers-more-filter.conf
│   ├── 50-mod-http-image-filter.conf -> /usr/share/nginx/modules-available/mod-http-image-filter.conf
│   ├── 50-mod-http-lua.conf -> /usr/share/nginx/modules-available/mod-http-lua.conf
│   ├── 50-mod-http-perl.conf -> /usr/share/nginx/modules-available/mod-http-perl.conf
│   ├── 50-mod-http-subs-filter.conf -> /usr/share/nginx/modules-available/mod-http-subs-filter.conf
│   ├── 50-mod-http-uploadprogress.conf -> /usr/share/nginx/modules-available/mod-http-uploadprogress.conf
│   ├── 50-mod-http-upstream-fair.conf -> /usr/share/nginx/modules-available/mod-http-upstream-fair.conf
│   ├── 50-mod-http-xslt-filter.conf -> /usr/share/nginx/modules-available/mod-http-xslt-filter.conf
│   ├── 50-mod-mail.conf -> /usr/share/nginx/modules-available/mod-mail.conf
│   ├── 50-mod-nchan.conf -> /usr/share/nginx/modules-available/mod-nchan.conf
│   └── 50-mod-stream.conf -> /usr/share/nginx/modules-available/mod-stream.conf
├── nginx.conf
├── proxy_params
├── scgi_params
├── sites-available
│   └── default
├── sites-enabled
├── snippets
│   ├── fastcgi-php.conf
│   └── snakeoil.conf
├── uwsgi_params
└── win-utf

dossier web (/var/www)

Les applications web sont sous la racine /var/www

tree -L 2 /var/www/
/var/www/
├── dokuwiki
│   ├── bin
│   ├── conf
│   ├── COPYING
│   ├── data
│   ├── doc
│   ├── doku.php
│   ├── feed.php
│   ├── inc
│   ├── index.php
│   ├── install.php
│   ├── lib
│   ├── README
│   ├── vendor
│   └── VERSION
├── html
│   └── index.nginx-debian.html
├── nextcloud
│   ├── 3rdparty
│   ├── apps
│   ├── AUTHORS
│   ├── config
│   ├── console.php
│   ├── COPYING
│   ├── core
│   ├── cron.php
│   ├── index.html
│   ├── index.php
│   ├── lib
│   ├── occ
│   ├── ocm-provider
│   ├── ocs
│   ├── ocs-provider
│   ├── public.php
│   ├── remote.php
│   ├── resources
│   ├── robots.txt
│   ├── settings
│   ├── status.php
│   ├── themes
│   ├── updater
│   └── version.php
├── shaarli
│   ├── application
│   ├── assets
│   ├── AUTHORS
│   ├── cache
│   ├── CHANGELOG.md
│   ├── composer.json
│   ├── composer.lock
│   ├── CONTRIBUTING.md
│   ├── COPYING
│   ├── data
│   ├── doc
│   ├── inc
│   ├── index.php
│   ├── package.json
│   ├── pagecache
│   ├── phpcs.xml
│   ├── plugins
│   ├── README.md
│   ├── shaarli_version.php
│   ├── tmp
│   ├── tpl
│   ├── vendor
│   ├── webpack.config.js
│   └── yarn.lock
├── ttrss
│   ├── api
│   ├── atom-to-html.xsl
│   ├── backend.php
│   ├── cache
│   ├── classes
│   ├── config.php
│   ├── config.php-dist
│   ├── CONTRIBUTING.md
│   ├── COPYING
│   ├── css
│   ├── errors.php
│   ├── feed-icons
│   ├── images
│   ├── include
│   ├── index.php
│   ├── install
│   ├── js
│   ├── lib
│   ├── locale
│   ├── lock
│   ├── messages.pot
│   ├── opml.php
│   ├── plugins
│   ├── plugins.local
│   ├── prefs.php
│   ├── public.php
│   ├── README.md
│   ├── register.php
│   ├── schema
│   ├── templates
│   ├── tests
│   ├── themes
│   ├── themes.local
│   ├── update_daemon2.php
│   ├── update.php
│   ├── update.php.orig
│   ├── utils
│   └── vendor
└── webapp_yannick
    ├── blog.cinay.xyz_
    ├── liens.cinay.xyz_ -> /srv/liens
    ├── map.cinay.xyz_ -> /srv/osm-new
    └── static.cinay.xyz_ -> /srv/wikistatic/_site

Sauvegarde BorgBackup

serveur client cinay.xyz

connexion SSH

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

Procédure

ssh usernl@5.2.79.107 -p 55036 -i /home/yannick/.ssh/OVZ-STORAGE-128 # connexion SSH serveur backup
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/cinay_ed25519.pub de la machine à sauvegarder cinay.xyz ) dans ce terminal, et presser [Ctrl]+[D] pour valider.

Test depuis le serveur client (c’est lui qui possède la clé privée)

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

sudo -s
ssh -p 55036 -i /root/.ssh/cinay_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
Warning: Permanently added '[xoyaz.xyz]:55036,[2a04:52c0:101:7ae::7a5e]:55036' (ECDSA) to the list of known hosts.
Linux backup 2.6.32-042stab134.3 #1 SMP Sun Oct 14 12:26:01 MSK 2018 x86_64
  _               _               
 | |__  __ _  __ | |__ _  _  _ __ 
 | '_ \/ _` |/ _|| / /| || || '_ \
 |_.__/\__,_|\__||_\_\ \_,_|| .__/
                            |_|   
$ pwd
/srv/data/borg-backups
$ 
# saisir exit pour sortir

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

Dans la terminologie borg, l’emplacement où les sauvegardes sont stockées est appelé le référentiel borg (dépôt).

sudo -s

Créer un fichier avec la passphrase nano /root/.borg/passphrase et copier le résultat de la commande < /dev/urandom tr -dc A-Za-z0-9 | head -c${1:-64};echo; dans le fichier

Initialisation dépôt

export BORG_PASSPHRASE="`cat /root/.borg/passphrase`"
export BORG_RSH='ssh -i /root/.ssh/cinay_ed25519'
borg init --encryption=repokey-blake2 ssh://borg@xoyaz.xyz:55036/srv/data/borg-backups/cinay.xyz
Remote: Borg 1.0.9: exception in RPC call:
Remote: Traceback (most recent call last):
Remote:   File "/usr/lib/python3/dist-packages/borg/remote.py", line 108, in serve
Remote:     raise InvalidRPCMethod(method)
Remote: borg.remote.InvalidRPCMethod: get_free_nonce
Remote: Platform: Linux backup 2.6.32-042stab134.3 #1 SMP Sun Oct 14 12:26:01 MSK 2018 x86_64
Remote: Linux: debian 9.9 
Remote: Borg: 1.0.9  Python: CPython 3.5.3
Remote: PID: 18282  CWD: /srv/data/borg-backups
Remote: sys.argv: ['/usr/bin/borg', 'serve', '--umask=077']
Remote: SSH_ORIGINAL_COMMAND: None
Remote: 
Please upgrade to borg version 1.1+ on the server for safer AES-CTR nonce handling.

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/cinay.xyz

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).

Sauvegarde cinay.xyz → xoyaz.xyz

Le fichier des exclusions

sudo nano /root/.borg/exclusions.xoyaz.xyz
/dev
/proc
/sys
/tmp
/run
/mnt
/media
lost+found
/home/yunohost.multimedia
/home/yunohost.transmission

Créer un bash

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

Programmer la tâche à 3h30 du matin

crontab -e
# Sauvegarde sur distant xoyaz.xyz  OVZ-STORAGE-128 HDD 100Go
03 03 * * * /root/.borg/borg-backup-xoyaz > /dev/null

Ajout d’une clé Diffie-Hellman ets vérification par ssllabs

Ajout d’une clé Diffie-Hellman

L’algorithme Diffie-Hellman est un algorithme d’échange de clés, utilisé notamment lors de l’ouverture d’une connexion à un site sécurisé via le protocole SSL/TLS.

Exécuter les instructions suivantes

# passer en mode su
sudo -s
# Générer une clé Diffie Hellman (patienter quelques minutes)
openssl dhparam -out /etc/ssl/private/dh2048.pem -outform PEM -2 2048
# Enlever commentaire en début de ligne sur tous les fichiers de configuration nginx
find /etc/nginx/conf.d/ -name "*.conf" -exec sed -i 's/#ssl_dhparam/ssl_dhparam/g' {} \;
# Redémarrer nginx
systemctl restart nginx
# sortie su
exit

Vérification par ssllabs

Ouvrir le lien https://www.ssllabs.com/ssltest/analyze.html?d=cinay.xyz sur un navigateur et patienter…

ssllabs