Post

Yunohost - yanspm.com (arm A20-Olinuxino-Micro)

Yunohost/Debian Jessie yanspm.com

Yunohost - yanspm.com (arm A20-Olinuxino-Micro)

Olimex A20-OlinuxIno-Micro

Fichier 2017-11-28-Yunohost-yanspm-A20-Olinuxino-Micro.md

Documentation olimex

alt text

alt text

Installation Debian Jessie

Matériel

  • Carte olimex A20-OLinuXino-MICRO
  • Bloc Alimentation 10V 1A
  • Dongle Wifi/USB RT5370
  • Carte micro SD 4GO
  • HDD NAS 4To
  • Batterie Li-ion 3.7v 5000mAh

SDcard

SDcard créer avec les paquets debian armhf
Index of /debian/dists/jessie/main/installer-armhf/current/images/netboot/SD-card-images/

1
2
3
4
5
6
sudo -s
cd ~/media/dplus/iso/jessie
#Insérer le lecteur USB/SDcard
dmesg #relever le périphérique ,ici /dev/sdb
#Ecriture image
zcat firmware.A20-OLinuXino-MICRO.img.gz partition.img.gz > /dev/sdb

Connexion liaison série

Utilisation module USB/Série /dev/ttyUSB0 et minicom
Insertion carte SD et mise sous tension A20-OlinuxIno-Micro
Installation :

  • Europe/France
  • Hostname : shuttle
  • Domaine :
  • Miroir : France , ftp.fr.debian.org
  • Http Proxy :
  • Utilisateur : yann
  • Partionnement
    • SDcard /boot ext2 512M
    • HDD NAS SATA 4To (alimentation +12v et +5v) , / root 30Go ext4, /home 80Go ext4 ,swap 4Go
  • software to install : SSH server et standard system utilities

A la fin de l’installation,redémarrage

Connexion utilisateur yann via liaison USB/Série et minicom
Passage en super utilisateur
su
Les points de montage
mount

1
2
3
/dev/mapper/vg--nas--one-root on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/mapper/vg--nas--one-home on /home type ext4 (rw,relatime,data=ordered)
/dev/mmcblk0p1 on /boot type ext2 (rw,relatime)

Version linux et debian:
Linux shuttle 3.16.0-4-armmp-lpae #1 SMP Debian 3.16.43-2+deb8u5 (2017-09-19) armv7l GNU/Linux
8.9

locales

1
dpkg-reconfigure locales
1
2
3
Generating locales (this might take a while)...
  fr_FR.UTF-8... done
Generation complete.

Installer sudo et modifier /etc/sudoers pour accès sans mot de passe à l’utilisateur yann

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

Yunohost

Installation yunohost

Les DNS sont configurées de base…
Connexion sur “shuttle” en su (par console ou SSH)
Installez git

1
sudo apt install git

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

1
git clone https://github.com/YunoHost/install_script /tmp/install_script

Lancez le script d’installation

1
cd /tmp/install_script && sudo ./install_yunohost

Post-installation

Domaine par défaut : yanspm.com
Mot de passe administration : xxxxxx

Domaines + certificats

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

1
2
3
4
sudo -s
yunohost domain add ouestline.net
yunohost domain add devel.ouestline.net
yunohost domain add music.ouestline.net

Certificats letsencrypt pour les domaines (sous-domaines) yanspm.com et ouestline.net
yunohost domain cert-install

Erreurs

1
2
3
4
5
6
7
8
root@yanspm:~# yunohost domain cert-install
Success! The SSOwat configuration has been generated
Error: Error registering: 400 {
  "type": "urn:acme:error:malformed",
  "detail": "Provided agreement URL [https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf] does not match current agreement URL [https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf]",
  "status": 400
}
Error: Certificate installation for yanspm.com failed !

Modifier un fichier
nano /usr/lib/moulinette/yunohost/vendor/acme_tiny/acme_tiny.py
Remplacer : “https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf”
Par : “https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf”
Puis relancer :
yunohost domain cert-install

1
2
3
4
Success! Successfully installed Let's Encrypt certificate for domain yanspm.com!
Success! Successfully installed Let's Encrypt certificate for domain ouestline.net!
Success! Successfully installed Let's Encrypt certificate for domain devel.ouestline.net!
Success! Successfully installed Let's Encrypt certificate for domain music.ouestline.net!

Clé Diffie-Hellman

Générer une clé Diffie-Hellman

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

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

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

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

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

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

IPV6

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

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

1
2
3
4
5
6
7
# This is an autoconfigured IPv6 interface
#iface eth0 inet6 auto
#delegation  
iface eth0 inet6 static
  address 2a01:::b271::1
  netmask 64
  post-up ip -6 route add default via fe80:::::aa20 dev eth0

Redémarrer la machine

Connexion web admin

Connexion en admin https://yanspm.com

Ajout Utilisateurs
Création yanspm
Adresse de messagerie : yanspm@yanspm.com
Création ouestline
Adresse de messagerie : ouestline@ouestline.net

Domaines

Configuration DNS yanspm.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Basic ipv4/ipv6 records
@ 3600 IN A 78.230.171.39
* 3600 IN A 78.230.171.39
@ 3600 IN AAAA 2a01:::b271::1
* 3600 IN AAAA 2a01:::b271::1

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

# Mail
@ 3600 IN MX 10 yanspm.com.
@ 3600 IN TXT "v=spf1 a mx ip4:78.230.171.39 ip6:2a01:::b271::1 -all"
mail._domainkey 3600 IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCjvnlbRu0UpQW+1m+znoBdi7gEpcPmZpDv1H8BDcz5wfgP85zqlSP/4qw9STnfHa27tR9e/ySOUTGYLHik7kHkj6LK9VSEd6s17A8wUZca09bWrLNblu57IhWoRrpYuVYNsnTBUlKwh2NX/0ko+lP42ZWrqEOHugVD1Gcc/hq9YQIDAQAB"
_dmarc 3600 IN TXT "v=DMARC1; p=none"

Configuration DNS ouestline.net

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Basic ipv4/ipv6 records
@ 3600 IN A 78.230.171.39
* 3600 IN A 78.230.171.39
@ 3600 IN AAAA 2a01:::b271::1
* 3600 IN AAAA 2a01:::b271::1

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

# Mail
@ 3600 IN MX 10 ouestline.net.
@ 3600 IN TXT "v=spf1 a mx ip4:78.230.171.39 ip6:2a01:::b271::1 -all"
mail._domainkey 3600 IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDWgwMV3B8TcOPQ97pHCbhwGPaHcayguADVCpprvp/3lEtmOrwFs5vs19/hwl8lBTz91tljsm0bde0xDmRWFsfE0HH69YU97STsYd6KIUDhWZ4pb+GcqkI5Dj+3OVk9BdXuCA+VA+Jlk2Z8a0XqlKW7rrUumh+o5abV2ZRvxgOkewIDAQAB"
_dmarc 3600 IN TXT "v=DMARC1; p=none"

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

SSH par clés

Pour éviter les blocages en sortie connexion SSH
sudo apt-get install libpam-systemd

Ajout clé publique shuttle.pub depuis poste appelant

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

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

1
2
mkdir ~/.ssh
chmod 700 ~/.ssh

Ajout de la clé publique

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

Modification fichier configuration ssh

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

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

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

Relancer service SSH

1
sudo systemctl restart ssh

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

Exécution script sur connexion
Exécuter un fichier utilisateur nommé $HOME/.ssh/rc si présent
Pour tous les utilisateurs exécuter un fichier nommé /etc/ssh/sshrc si présent
Installer les utilitaires curl jq figlet
sudo apt install curl jq figlet
Le batch
nano ~/.ssh/rc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash

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

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

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

fstab ,ajout dossiers

Disque Sata 4To

Toutes les opérations se font en mode su
sudo -s
On va ajouter les montages sur video et yanplus
Création des points de montage

1
mkdir /media/{video,yanplus}

Ajout des points de montage au fichier /etc/fstab

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

Remonter le tout

1
mount -a

Vérifier

1
2
ls /media/yanplus
ls /media/video

NFS serveur

Installation

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

Sécurisation

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

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

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

1
 rpcbind mountd nfsd statd lockd rquotad : ALL

nano /etc/hosts.allow

1
rpcbind mountd nfsd statd lockd rquotad: 192.168.0.

iptables (NFS)

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

Il va donc falloir fixer les ports de ces services afin de créer les règles iptables.
nano /etc/default/nfs-common
STATDOPTS=”–port 32765 –outgoing-port 32766”
nano /etc/default/nfs-kernel-server
RPCMOUNTDOPTS=”-p 32767”
nano /etc/default/quota
RPCRQUOTADOPTS=”-p 32769”
sysctl --system
/etc/init.d/nfs-kernel-server restart

Nous pouvons maintenant fixer nos règles iptables:

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

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

1
2
3
yunohost firewall allow TCP 111
yunohost firewall allow TCP 2049
yunohost firewall allow TCP 32764:32769

Configuration du partage

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

1
2
3
4
# ' exportfs -a' : Met à jour la liste des systèmes de fichiers exportés
#
/media/yanplus   		192.168.0.0/24(rw,no_subtree_check,no_root_squash)
/media/video			192.168.0.0/24(rw,no_subtree_check,no_root_squash)

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

NFS Client Archlinux/Manjaro

Installer le paquet nfs-utils

1
sudo pacman -S nfs-utils

Coté client le service rpcbind est utilisé

1
2
3
systemctl start rpcbind
systemctl status rpcbind
systemctl enable rpcbind

Création des dossiers sur le client

1
mkdir -p /mnt/devel

Démarrage auto par ajout dans /etc/fstab

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

Sauvegardes

PhpMail

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/php
<?php

/*
syntaxe:

exemple:
*/

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

//var_dump($_GET);

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

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

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

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

Serveur de sauvegarde (backupuser)

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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
#
echo $(date) "Sauvegarde locale yanspm.com"  >> /home/backupuser/sauvegarde.log
/usr/bin/rsync -a --delete --exclude-from '/home/backupuser/exclude.txt' / /media/yanplus/sauvegarde/aujourdhui/shuttle &>> /home/backupuser/sauvegarde.log
echo $(date) "Fin sauvegarde locale yanspm.com"  >> /home/backupuser/sauvegarde.log

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

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

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

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

1
2
3
4
5
6
7
8
9
dev/*
proc/*
sys/*
tmp/*
run/*
mnt/*
media/*
/home/yunohost.transmission/*
lost+found

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

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

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

Sauvegarde locale (yunohost backup)

Sauvegarde yunohost /home/backupuser/savyuno.sh

1
2
3
4
5
6
7
8
#!/bin/bash

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Succès ! Sauvegarde terminée
name: yanspm.com
results:
  apps:
    multi_webapp: Success
    multi_webapp__2: Success
    nextcloud: Success
  system:
    conf_cron: Success
    conf_ldap: Success
    conf_nginx: Success
    conf_ssh: Success
    conf_ssowat: Success
    conf_xmpp: Success
    conf_ynh_certs: Success
    conf_ynh_currenthost: Success
    conf_ynh_firewall: Success
    conf_ynh_mysql: Success
    data_home: Success
    data_mail: Success
size: 498806502

Sauvegardes programmées (cron)

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

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

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

Applications

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

Développement

Site privée https://dev.ouestline.net avec visualisation des dossiers et sous-dossiers (nginx fancyindex)

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
location / {
	alias /var/www/webapp_yanspm/devel.ouestline.net/ ;
	if ($scheme = http) {
		rewrite ^ https://$server_name$request_uri? permanent;
	}
	index index.html index.php ;
	try_files $uri $uri/ index.php;
	location ~ [^/]\.php(/|$) {
		fastcgi_split_path_info ^(.+?\.php)(/.*)$;
		fastcgi_pass unix:/var/run/php5-fpm-webapp_devel.ouestline.net.sock;
		fastcgi_index index.php;
		include fastcgi_params;
		fastcgi_param REMOTE_USER $remote_user;
		fastcgi_param PATH_INFO $fastcgi_path_info;
		fastcgi_param SCRIPT_FILENAME $request_filename;
	}

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

Redémarrer nginx
sudo systemctl reload nginx

Subsonic

Site accès publique https://music.ouestline.net ,proxy sur serveur subsonic
Les accès au serveur subsonic se font avec un login/mot de passe

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

Subsonic est installé sur un serveur debian stretch à l’adresse 192.168.0.12 port 8090

Modifier le fichier de configuration nginx
nano /etc/nginx/conf.d/music.ouestline.net.d/webapp_music.ouestline.net.conf

1
2
3
location / {
      proxy_pass   http://192.168.0.12:8090;
}

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

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

Outils

tmux
sudo apt update && sudo apt install tmux

Documentation markdown

Le site privée https://md.ouestline.net contient essentiellement des documents au format “mardown” qui peuvent être affichés au format html avec le “viewer” mdwiki

Installer un domaine md.ouestline.net
Certificats SSL

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
location / {
	alias /var/www/webapp_yanspm/md.ouestline.net/ ;
	if ($scheme = http) {
		rewrite ^ https://$server_name$request_uri? permanent;
	}
	index index.html index.php ;
	try_files $uri $uri/ index.php;
	location ~ [^/]\.php(/|$) {
		fastcgi_split_path_info ^(.+?\.php)(/.*)$;
		fastcgi_pass unix:/var/run/php5-fpm-webapp_md.ouestline.net.sock;
		fastcgi_index index.php;
		include fastcgi_params;
		fastcgi_param REMOTE_USER $remote_user;
		fastcgi_param PATH_INFO $fastcgi_path_info;
		fastcgi_param SCRIPT_FILENAME $request_filename;
	}

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

NOTE : Le dossier /var/www/webapp_yanspm/md.ouestline.net/ contient un manageur de fichiers dans index.php et un “viewer markdown” mdwiki.html

Redémarrer nginx
sudo systemctl reload nginx

Calibre-Web

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

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

1
2
3
4
5
6
7
8
9
10
cd $HOME
git clone https://github.com/janeczku/calibre-web.git
cd calibre-web
# installation des prérequis
pip install --target vendor -r requirements.txt
cd ..
# déplacer vers **/opt**
sudo mv calibre-web /opt/
# les droits
sudo chown $USER. -R /opt/calibre-web/

Utilisation fichier systemd pour le lancement automatique

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

Contenu du fichier

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Service calibre-web
After=network.target

[Service]
Type=simple
User=yann
ExecStart=/usr/bin/python /opt/calibre-web/cps.py

[Install]
WantedBy=multi-user.target

ATTENTION! , User est l’utilisateur connecté ($USER)

Lancer le service calibre-web :

1
sudo systemctl start calibre-web

Vérifier:

1
sudo systemctl status calibre-web
1
2
3
4
5
6
7
8
9
● calibre-web.service - Service calibre-web
   Loaded: loaded (/etc/systemd/system/calibre-web.service; disabled)
   Active: active (running) since jeu. 2018-01-11 13:27:10 CET; 9s ago
 Main PID: 2623 (sh)
   CGroup: /system.slice/calibre-web.service
           ├─2623 /bin/sh /opt/calibre-web/start_calibre-web.sh
           └─2624 python cps.py

janv. 11 13:27:10 yanspm.com systemd[1]: Started Service calibre-web.

Activation

1
sudo systemctl enable calibre-web

Yunohost

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

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

Sauver et modifier la configuration, créer un proxy pour l’application calibre-web
sudo mv /etc/nginx/conf.d/calibre.ouestline.net.d/webapp_calibre.ouestline.net_.conf /etc/nginx/conf.d/calibre.ouestline.net.d/webapp_calibre.ouestline.net_.conf.sav
sudo nano /etc/nginx/conf.d/calibre.ouestline.net.d/webapp_calibre.ouestline.net_.conf

1
2
3
location / {
 proxy_pass              http://127.0.0.1:8083;
}

Redémarrer nginx sudo systemctl reload nginx

Premier lancement ,accès à la configuration https://calibre.ouestline.net/config
Renseigner “Location of Calibre database” : /media/yanplus/BiblioCalibre puis cliquer sur submit

Si le chemin est correct , cliquer sur le bouton login : Username: admin , Password: admin123 et submit

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

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

Droits admin sur yann

Modifier admin , cliquer sur admin delete this user
Cliquer sur submit

Se connecter avec yann pour vérifications

Cet article est sous licence CC BY 4.0 par l'auteur.