Afficher/cacher Sommaire
https://www.hostmyservers.fr/
Accès client
KVM Debian Buster
Virtualization Type (KVM)
CPU 2
Memory 4 GB
Disk Space 250 Go
Operating System Debian 10 Buster (64-bit)
IPv4 Address 45.145.166.51
IPv6 Address 2a04:ecc0:8:a8:4567:833:0:1
Connexion root
ssh root@45.145.166.51
Changement mot de passe
passwd root
Mise à jour
apt update && apt upgrade
Installer utilitaires
apt install rsync curl tmux jq figlet git mailutils dnsutils p7zip-full -y
Hostname
hostnamectl
Static hostname: server85393
Icon name: computer-vm
Chassis: vm
Machine ID: a7f055c469ef4bb3be932070c99c7cd7
Boot ID: 57351a6ba7824484993707cafec46eea
Virtualization: kvm
Operating System: Debian GNU/Linux 10 (buster)
Kernel: Linux 4.19.0-12-cloud-amd64
Architecture: x86-64
Adresse IPV4 IPV6
Le paramétrage réseau par défaut
/etc/network/interfaces.d/50-cloud-init
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. 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}
auto lo
iface lo inet loopback
dns-nameservers 8.8.8.8
auto eth0
iface eth0 inet static
address 45.145.166.51/24
gateway 45.145.166.1
# control-alias eth0
iface eth0 inet6 static
address 2a04:ecc0:8:a8:4567:0833::1/64
gateway 2a04:ecc0:8:a8::1
Création utilisateur
Utilisateur userhms
useradd -m -d /home/userhms/ -s /bin/bash userhms
Mot de passe userhms
passwd userhms
Visudo pour les accès root via utilisateur userhms
apt install sudo
echo "userhms ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
Déconnexion puis connexion ssh en mode utilisateur
ssh userhms@45.145.166.51
OpenSSH, clé et script
connexion avec clé
sur l'ordinateur de bureau
Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2) pour une liaison SSH avec le serveur.
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/hms-sto-250
Envoyer les clés publiques sur le serveur KVM
ssh-copy-id -i ~/.ssh/hms-sto-250.pub userhms@45.145.166.51
sur le serveur KVM On se connecte
ssh userhms@45.145.166.51
Modifier la configuration serveur SSH
sudo nano /etc/ssh/sshd_config
Modifier
Port = 55051
PermitRootLogin no
PasswordAuthentication no
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-get install libpam-systemd
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
Accès depuis le poste distant avec la clé privée
ssh userhms@45.145.166.51 -p 55051 -i ~/.ssh/hms-sto-250
Fail2Ban
Fail2ban est un framework de prévention contre les intrusions dont le but est de bloquer les adresses IP inconnues qui tentent de pénétrer dans votre système. Ce logiciel est recommandé, même essentiel, pour se prémunir contre toute attaque brutale contre vos services.
Pour installer le package logiciel, utilisez la commande suivante :
sudo apt install fail2ban
Une fois le paquet installé, il faut modifier le fichier de configuration de ce dernier pour l’adapter à votre usage. Avant toute modification, il est recommandé d’effectuer une sauvegarde du fichier de configuration en tapant la commande suivante :
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.backup
Apportez ensuite vos modifications sur le fichier :
sudo nano /etc/fail2ban/jail.conf
Une fois ces modifications terminées, redémarrez le service à l’aide de la commande suivante :
sudo systemctl restart fail2ban
Pour toute demande complémentaire concernant Fail2Ban, n’hésitez pas à consulter la documentation officielle de cet outil
Outils, scripts motd et ssh_rc_bash
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.xoyaz.xyz/files/ssh_rc_bash
chmod +x ssh_rc_bash # rendre le bash exécutable
./ssh_rc_bash # exécution
Parefeu UFW
UFW, ou pare - feu simple , est une interface pour gérer les règles de pare-feu dans Arch Linux, Debian ou Ubuntu. UFW est utilisé via la ligne de commande (bien qu’il dispose d’interfaces graphiques disponibles), et vise à rendre la configuration du pare-feu facile.
Installation Debian / Ubuntu
sudo apt-get install ufw
Par défaut, les jeux de règles d’UFW sont vides, de sorte qu’il n’applique aucune règle de pare-feu, même lorsque le démon est en cours d’exécution.
Les règles
sudo ufw allow 55051/tcp # port SSH
sudo ufw allow http # port 80
sudo ufw allow https # port 443
sudo ufw allow DNS # port 53
Activer le parefeu
sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Status
sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
DNS ALLOW Anywhere
55051/tcp ALLOW Anywhere
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
DNS (v6) ALLOW Anywhere (v6)
55051/tcp (v6) ALLOW Anywhere (v6)
Domaine hms.xoyaz.xyz (cloud ebook et zic)
OVH configuration domaine xoyaz.xyz
$TTL 3600
@ IN SOA dns106.ovh.net. tech.ovh.net. (2021111506 86400 3600 3600000 300)
IN NS ns106.ovh.net.
IN NS dns106.ovh.net.
cloud IN A 45.145.166.51
cloud IN AAAA 2a04:ecc0:8:a8:4567:0833::1
ebook IN A 45.145.166.51
ebook IN AAAA 2a04:ecc0:8:a8:4567:0833::1
hms IN A 45.145.166.51
hms IN AAAA 2a04:ecc0:8:a8:4567:0833::1
zic IN A 45.145.166.51
zic IN AAAA 2a04:ecc0:8:a8:4567:0833::1
Certificats Let’s Encrypt
Installation gestionnaire des certificats Let’s Encrypt
cd ~
sudo apt install socat # prérequis
git clone https://github.com/acmesh-official/acme.sh.git
cd acme.sh
./acme.sh --install
Les clés OVH API
Génération des certificats
acme.sh --dns dns_ovh --server letsencrypt --issue --keylength ec-384 -d 'hms.xoyaz.xyz' -d 'cloud.xoyaz.xyz' -d 'ebook.xoyaz.xyz' -d 'zic.xoyaz.xyz'
Résultat de l’installation
[Thu 30 Sep 2021 12:43:31 PM CEST] Your cert is in: /home/userhms//.acme.sh/hms.xoyaz.xyz_ecc/hms.xoyaz.xyz.cer
[Thu 30 Sep 2021 12:43:31 PM CEST] Your cert key is in: /home/userhms//.acme.sh/hms.xoyaz.xyz_ecc/hms.xoyaz.xyz.key
[Thu 30 Sep 2021 12:43:31 PM CEST] The intermediate CA cert is in: /home/userhms//.acme.sh/hms.xoyaz.xyz_ecc/ca.cer
[Thu 30 Sep 2021 12:43:31 PM CEST] And the full chain certs is there: /home/userhms//.acme.sh/hms.xoyaz.xyz_ecc/fullchain.cer
Installation des certificats
sudo mkdir -p /etc/ssl/private/
sudo chown $USER -R /etc/ssl/private/
acme.sh --ecc --install-cert -d 'xoyaz.xyz' -d '*.xoyaz.xyz' --key-file /etc/ssl/private/xoyaz.xyz-key.pem --fullchain-file /etc/ssl/private/xoyaz.xyz-fullchain.pem --reloadcmd 'sudo systemctl reload nginx.service'
Supprimer ` –reloadcmd ‘sudo systemctl reload nginx.service’` à la ligne précédente si Nginx n’est pas installé
Editer le crontab
crontab -e
56 0 * * * "/home/userhms/.acme.sh"/acme.sh --cron --home "/home/userhms/.acme.sh" --renew-hook "/home/userhms/.acme.sh/acme.sh --ecc --install-cert -d 'xoyaz.xyz' -d '*.xoyaz.xyz' --key-file /etc/ssl/private/xoyaz.xyz-key.pem --fullchain-file /etc/ssl/private/xoyaz.xyz-fullchain.pem --reloadcmd 'sudo systemctl reload nginx.service'" > /dev/null
Nginx est installé
hms.xoyaz.xyz
Nginx Light
Installation
sudo apt install nginx-light
create: 2020-06-29
modifier le fichier /etc/nginx/nginx.conf
On autorise tls1.2 et tls1.3 uniquement et ciphers off
[...]
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
[...]
Accès dossier pour les fichiers de configuration
[...]
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
# include /etc/nginx/sites-enabled/*;
[...]
PHP8
Ajout du dépôt sury.org
sudo -s
Pour installer la version de 8 de php, ajouter le dépôt sury.
apt install -y lsb-release apt-transport-https ca-certificates wget
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" |tee /etc/apt/sources.list.d/php.list
Installer php8.0
Mise à jour des dépôts :
apt update
Installation de php8.0 et/ou php8.0-fpm paquet php8.0 :
apt install php8.0 php8.0-fpm php8.0-sqlite3 php8.0-gd
hms.xoyaz.xyz.conf
Créer le fichier /etc/nginx/conf.d/hms.xoyaz.xyz.conf
server {
listen 80;
listen [::]:80;
server_name hms.xoyaz.xyz;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name hms.xoyaz.xyz;
ssl_certificate /etc/ssl/private/xoyaz.xyz-fullchain.pem;
ssl_certificate_key /etc/ssl/private/xoyaz.xyz-key.pem;
root /var/www/html;
index index.html index.php;
# TLS 1.3 only
ssl_protocols TLSv1.3;
ssl_prefer_server_ciphers off;
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
# verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /etc/ssl/private/xoyaz.xyz-fullchain.pem;
# fichiers de configuration
include /etc/nginx/conf.d/hms.xoyaz.xyz.d/*.conf;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
}
# replace with the IP address of your resolver
resolver 8.8.8.8;
}
Créer le sous-dossier
sudo mkdir /etc/nginx/conf.d/hms.xoyaz.xyz.d/
Vérifier
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Recharger nginx
sudo systemctl reload nginx
Pour tester le php
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
https://hms.xoyaz.xyz/info.php
Page d’accueil
Déposer une image dans le dossier /var/www/html
Créer un fichier /var/www/html/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>hms.xoyaz.xyz</title>
<style type="text/css" media="screen" >
html {
margin:0;
padding:0;
background: url(wallpaper.jpg) no-repeat center fixed;
-webkit-background-size: cover; /* pour anciens Chrome et Safari */
background-size: cover; /* version standardisée */
}
body { color: white; }
a:link {
color: grey;
background-color: transparent;
text-decoration: none;
}
a {
text-decoration: underline;
background-color: transparent;
color: #a00;
}
a:visited {
color: #844;
}
a:hover, a:focus, a:active {
text-decoration: none;
color: white;
background: #800;
}
</style>
</head>
<body>
<h1>Serveur hms.xoyaz.xyz</h1>
</body>
</html>
Rsync SSHFS Sauvegardes
Synchro rsync
Synchronisation entre xoyaz.xyz et hms.xoyaz.xyz
Commande à exécuter sur hms.xoyaz.xyz
rsync -avz --progress --stats --human-readable --rsync-path="sudo rsync" -e "ssh -p 55036 -i /home/userhms/.ssh/OVZ-STORAGE-128 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" usernl@xoyaz.xyz:/home/usernl/backup/* /home/userhms/sshfs/
Dossier accessible via sshfs
On va créer des dossiers qui seront accessibles via le réseau pour les clients SSHFS
mkdir ~/sshfs
mkdir ~/sshfs/yanfi.space
NOTE: Pour que les clients accèdent au dossier , il faut leur fournir une clé privé SSH
Opérations Coté client (yanfi.space)
Le but, créer un accès réseau sur un autre serveur pour les gros volumes de fichiers (musique, livres, etc…)
Créer dossier local /opt/hms-sshfs/ : sudo mkdir -p /opt/hms-sshfs
Créer une liaison réseau sécurisée SSHFS entre le client et le serveur : sudo apt install sshfs
Autorisations : sudo -s; echo "user_allow_other" >> /etc/fuse.conf
Partage avec serveur hms.xoyaz.xyz : Clé privée hms-sto-250
Droits : chmod 600 /home/admin/.ssh/hms-sto-250
Montage manuelle pour authentifier la clé avec utilisateur “debian”
sudo -s
sshfs -o allow_other userhms@hms.xoyaz.xyz:/home/userhms/sshfs /opt/hms-sshfs -C -p 55051 -oIdentityFile=/home/admin/.ssh/hms-sto-250
NOTE: Il faut mettre l’adresse IP du serveur , si les domaines peuvent ne pas être “résolus”
Après vérification , ls /opt/hms-sshfs
, déconnexion fusermount -u /opt/hms-sshfs
Montage auto
Ajouter la ligne suivante au fichier /etc/fstab
userhms@hms.xoyaz.xyz:/home/userhms/sshfs /opt/hms-sshfs fuse.sshfs _netdev,identityfile=/home/admin/.ssh/hms-sto-250,allow_other,port=55051 0 0
Sauvegardes
Opérations réalisées sur yanfi.space
Sauvegarde complète de yunohost yanfi.space sur le serveur hms.xoyaz.xyz via sshfs
nano ~/backup-hms.xoyaz.xyz.sh
#!/bin/sh
# Créer une sauvegarde totale localement
yunohost backup create --debug
# Copier cette sauvegarde sur le distant hms.xoyaz.xyz
rsync -avz --progress --stats --human-readable --rsync-path="sudo rsync" -e "ssh -p 55051 -i /home/admin/.ssh/hms-sto-250 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" /home/yunohost.backup/archives/$(date '+%Y%m%d')* userhms@hms.xoyaz.xyz:/home/userhms/sshfs/yanfi.space/ ; \
if [ $? -eq 0 ]; then \
echo "Sauvegardes $(date '+%Y%m%d')* -> OK" | systemd-cat -t allsync -p info ; \
rm /home/yunohost.backup/archives/$(date '+%Y%m%d')* ; \
else \
echo "Sauvegardes $(date '+%Y%m%d')* -> ERREUR" | systemd-cat -t allsync -p emerg ; \
fi
Le rendre exécutable
chmod +x ~/backup-hms.xoyaz.xyz.sh
Le résultat de la commande est dans le journal
journalctl --no-pager -t allsync --since today
-- Logs begin at Wed 2021-09-15 11:48:08 CEST, end at Wed 2021-09-15 18:47:50 CEST. --
Sep 15 18:24:45 yanfi.space allsync[16720]: Sauvegardes 20210915* -> OK
Tâche
sudo crontab -e
10 02 * * * /home/admin/backup-hms.xoyaz.xyz.sh > /dev/null
Authentification double facteur
Authentification double facteur (2FA) PHP TOTP
PHP - Portail d’authentification web authentification à deux facteurs (2FA).
TwoFactorAuth utilise PHP et des bibliothèques
- php 8.0 pour nginx
- La bibliothèque GD
- La bibliothèque SQLite3
Installation
sudo apt install php8.0-fpm php8.0-gd php8.0-sqlite3
git clone https://gitea.cinay.eu/yann/twofactorauth.git
sudo mv twofactorauth /var/www/html/
sudo chown www-data.www-data -R /var/www/html/twofactorauth
Modifier ‘QRCODE_TITLE’,’SESSION_NAME’ et ‘AUTH_SUCCEED_REDIRECT_URL’ dans le fichier de configuration /var/www/html/twofactorauth/config.php
Ouvrir le lien https://hms.xoyaz.xyz/twofactorauth/index.php
Créer l’administrateur “xoyaz”, son mot de passe et scanner le Qr Code avec une application TOTP
Scanner le Qr Code avec une application TOTP
Administration : https://hms.xoyaz.xyz/twofactorauth/admin/admin.php
Applications Web
Python
Debian Python version 3 par défaut
Installer Pip Python 3
sudo apt update
sudo apt install python3-venv python3-pip
Les versions
userhms@server85393:~$ python --version
Python 3.7.3
userhms@server85393:~$ pip --version
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)
Calibre ebook.xoyaz.xyz
Python et Pip version 3 sont installés
Les outils
sudo apt install sqlite3 python3-setuptools imagemagick
pip install wheel
Installation
cd $HOME
git clone https://github.com/janeczku/calibre-web.git
cd calibre-web
# installation des prérequis
pip install --system --target vendor -r requirements.txt
cd ..
# déplacer vers /var/www
sudo mv calibre-web /var/www/
# les droits
sudo chown $USER.www-data -R /var/www/calibre-web/
Service systemd calibre-web pour le lancement automatique
sudo nano /etc/systemd/system/calibre-web.service
Contenu du fichier
[Unit]
Description=Service calibre-web
After=network.target
[Service]
Type=simple
User=userhms
ExecStart=/usr/bin/python /var/www/calibre-web/cps.py
[Install]
WantedBy=multi-user.target
ATTENTION! , User est l’utilisateur connecté ($USER)
Lancer le service calibre-web :
sudo systemctl start calibre-web
Vérifier:
sudo systemctl status calibre-web
● calibre-web.service - Service calibre-web
Loaded: loaded (/etc/systemd/system/calibre-web.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2021-09-24 17:55:28 CEST; 7s ago
Main PID: 19781 (python)
Tasks: 2 (limit: 4718)
Memory: 63.7M
CGroup: /system.slice/calibre-web.service
└─19781 /usr/bin/python /var/www/calibre-web/cps.py
Sep 24 17:55:28 server85393 systemd[1]: Started Service calibre-web.
Activation
sudo systemctl enable calibre-web
Le domaine “ebook.xoyaz.xyz” est activé avec les certificats let’s encrypt
Le fichier de configuration nginx /etc/nginx/conf.d/ebook.xoyaz.xyz.conf
server {
listen 80;
listen [::]:80;
server_name ebook.xoyaz.xyz;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ebook.xoyaz.xyz;
ssl_certificate /etc/ssl/private/xoyaz.xyz-fullchain.pem;
ssl_certificate_key /etc/ssl/private/xoyaz.xyz-key.pem;
root /var/www/html;
index index.html index.php;
# TLS 1.3 only
ssl_protocols TLSv1.3;
ssl_prefer_server_ciphers off;
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
# verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /etc/ssl/private/xoyaz.xyz-fullchain.pem;
# replace with the IP address of your resolver
resolver 8.8.8.8;
location / {
proxy_pass http://127.0.0.1:8083;
}
}
Vérifier
sudo nginx -t
Redémarrer nginx
sudo systemctl reload nginx
accès à la configuration https://ebook.xoyaz.xyz/config
puis cliquer sur Connexion
Par défaut: Nom d’utilisateur: admin , Mot de passe: admin123
Paramétrage , cliquer sur Admin (pas sur admin avec le a minuscule)
Cliquer sur Add new user
Username : yannick
Email address : yannick@yanfi.net
Password : xxxxxx
Kindle email:
Language : français
Show books with language : Show all
Admin avec tous les droits
Et cliquer sur Save
Se reconnecter avec l’utilisateur yannick
Cliquer sur Administration et sélectionner admin , cocher la case “Supprimer cet utilisateur”
Il reste l’utilisateur/administrateur yannick
Paramétrage
Configuration de l’interface utilisateur → Configuration du mode d’affichage : Thème sombre
Réglages par défaut pour les nouveaux utilisateurs Mode de visualisation par défaut pour les nouveaux utilisateurs
Transmission
Transmission permet le téléchargement et la création de torrents. Ce logiciel supporte les technologies décentralisées sans tracker, tel que PEX, DHT et les liens magnets.
Pour l’installation suivre ce lien :Debian Transmission
Ajout utilisateur courant au groupe “debian-transmission”
sudo usermod -a -G debian-transmission $USER
Accès sécurisé sur le site hms.xoyaz.xyz/transmission avec login mot de passe et 2FA
On supprime le fichier de configuration ~/.config/transmission-daemon/settings.json
sudo rm ~/.config/transmission-daemon/settings.json
Modification du fichier de configuration /etc/transmission-daemon/settings.json
sudo systemctl stop transmission-daemon.service
Le fichier de configuration “transmission”
{
"alt-speed-down": 50,
"alt-speed-enabled": false,
"alt-speed-time-begin": 540,
"alt-speed-time-day": 127,
"alt-speed-time-enabled": false,
"alt-speed-time-end": 1020,
"alt-speed-up": 50,
"bind-address-ipv4": "0.0.0.0",
"bind-address-ipv6": "::",
"blocklist-enabled": false,
"blocklist-url": "http://www.example.com/blocklist",
"cache-size-mb": 4,
"dht-enabled": true,
"download-dir": "/home/userhms/torrent/complet",
"download-limit": 100,
"download-limit-enabled": 0,
"download-queue-enabled": true,
"download-queue-size": 5,
"encryption": 1,
"idle-seeding-limit": 30,
"idle-seeding-limit-enabled": false,
"incomplete-dir": "/home/userhms/torrent/encours",
"incomplete-dir-enabled": false,
"lpd-enabled": false,
"max-peers-global": 200,
"message-level": 1,
"peer-congestion-algorithm": "",
"peer-id-ttl-hours": 6,
"peer-limit-global": 200,
"peer-limit-per-torrent": 50,
"peer-port": 51413,
"peer-port-random-high": 65535,
"peer-port-random-low": 49152,
"peer-port-random-on-start": false,
"peer-socket-tos": "default",
"pex-enabled": true,
"port-forwarding-enabled": false,
"preallocation": 1,
"prefetch-enabled": true,
"queue-stalled-enabled": true,
"queue-stalled-minutes": 30,
"ratio-limit": 2,
"ratio-limit-enabled": false,
"rename-partial-files": true,
"rpc-authentication-required": false,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-host-whitelist": "",
"rpc-host-whitelist-enabled": false,
"rpc-password": "{2f217a20225338209def1c9fa5587751c6a608d8Onz8WkP5",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "yan",
"rpc-whitelist": "127.0.0.1",
"rpc-whitelist-enabled": false,
"scrape-paused-torrents-enabled": true,
"script-torrent-done-enabled": false,
"script-torrent-done-filename": "",
"seed-queue-enabled": false,
"seed-queue-size": 10,
"speed-limit-down": 100,
"speed-limit-down-enabled": false,
"speed-limit-up": 100,
"speed-limit-up-enabled": false,
"start-added-torrents": true,
"trash-original-torrent-files": false,
"umask": 7,
"upload-limit": 100,
"upload-limit-enabled": 0,
"upload-slots-per-torrent": 14,
"utp-enabled": true
}
Création des dossiers et des droits
mkdir -p ~/torrent/{complet,encours}
Modifier le groupe du dossier completed (remplacer www-data par debian-transmission)
sudo chown debian-transmission.debian-transmission -R ~/torrent
Ajoutez le nom d’utilisateur au groupe debian-transmission :
sudo usermod -a -G debian-transmission $USER
Relancer transmission
sudo systemctl start transmission-daemon
Le fichier de configuration /etc/nginx/conf.d/hms.xoyaz.xyz.conf
server {
listen 80;
listen [::]:80;
server_name hms.xoyaz.xyz;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name hms.xoyaz.xyz;
ssl_certificate /etc/ssl/private/xoyaz.xyz-fullchain.pem;
ssl_certificate_key /etc/ssl/private/xoyaz.xyz-key.pem;
root /var/www/html;
index index.html index.php;
# TLS 1.3 only
ssl_protocols TLSv1.3;
ssl_prefer_server_ciphers off;
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
# verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /etc/ssl/private/xoyaz.xyz-fullchain.pem;
# fichiers de configuration
include /etc/nginx/conf.d/hms.xoyaz.xyz.d/*.conf;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
}
# replace with the IP address of your resolver
resolver 8.8.8.8;
location = /twofactorauth/login/login.php {
allow all;
auth_request off;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.0-fpm.sock; # PHP8.0
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location = /twofactorauth/nginx/auth.php {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.0-fpm.sock; # PHP8.0
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param CONTENT_LENGTH "";
}
location /twofactorauth/ {
index index.php;
}
location /twofactorauth/db/ {
deny all;
}
location /transmission {
proxy_pass http://127.0.0.1:9091;
auth_request /twofactorauth/nginx/auth.php;
error_page 401 =401 $scheme://$host/twofactorauth/login/login.php?from=$uri;
proxy_buffering off;
}
}
recharger nginx
sudo nginx -t
sudo systemctl reload nginx
Lien https://hms.xoyaz.xyz/transmission
saisir utilisateur, mot de passe et le jeton OTP correspondant
Pour avoir le lien sur la page d’accueil, ajouter ce qui suite avant la balise </body>
du fichier /var/www/html/index.html
<p><a href="/transmission">Transmission</a>
<em> permet le téléchargement et la création de torrents.<br>Ce logiciel supporte les technologies décentralisées sans tracker, tel que PEX, DHT et les liens magnets.</em>
</p>
Nextcloud
Nextcloud 22 Nginx, PHP8.0, MariaDB et SSL/TLS cloud.xoyaz.xyz
Lien https://cloud.xoyaz.xyz
Authentification à deux facteurs
Un thème sombre basé sur Breeze Dark
Messagerie
Lancer le test
Stockage externe (paramétrage en admin)
Applications
- Notes
NetData (NON INSTALLE)
https://github.com/netdata/netdata
Installation
Pour installer Netdata à partir des sources sur la plupart des systèmes Linux (physiques, virtuels, conteneurs, IoT, périphérie), exécutez notre script d’installation en une ligne. Ce script télécharge et construit toutes les dépendances, y compris celles requises pour se connecter à Netdata Cloud si vous le souhaitez, et active les mises à jour nocturnes automatiques et les statistiques anonymes.
sudo -s
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
Patienter …
--- We are done! ---
^
|.-. .-. .-. .-. .-. . netdata .-. .-
| '-' '-' '-' '-' '-' is installed and running now! -' '-'
+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+--->
enjoy real-time performance and health monitoring...
OK
Pour afficher le tableau de bord Netdata
Ouvrir un terminal sur le client linux qui dispose des clés ssh et lancer la commande
ssh -L 9000:localhost:19999 userhms@45.145.166.51 -p 55051 -i /home/yann/.ssh/hms-sto-250
Ouvrir un navigateur sur le même client et saisir localhost:9000
Désinstallation
sudo -s
wget https://raw.githubusercontent.com/netdata/netdata/master/packaging/installer/netdata-uninstaller.sh
chmod +x ./netdata-uninstaller.sh
./netdata-uninstaller.sh --yes --env /etc/netdata/.environment
Audio Navidrome
Steps to install on Ubuntu Linux (and other Debian based distros)
Les étapes suivantes ont été testées sur Ubuntu 18.04 et devraient fonctionner sur toutes les versions 16.04 et supérieures ainsi que sur les autres distros basées sur Debian. Tout au long de ces instructions, les commandes auront des espaces réservés pour l’utilisateur (<user>
) et le groupe (<group>
) sous lesquels vous souhaitez exécuter Navidrome et le chemin du dossier de musique (<library_path>
). Si vous utilisez une médiathèque existante, assurez-vous que l’utilisateur a les droits sur la médiathèque.
Conditions préalables à la mise à jour et à l’installation
Assurez-vous que votre système est à jour et installez ffmpeg.
sudo apt update && sudo apt upgrade
sudo apt install ffmpeg
Par défaut, la commande useradd ne crée pas de répertoires de base, mais pour un démon, je vous recommande d’utiliser l’option système et de remplacer le shell par un shell inexistant afin que personne ne puisse se connecter à ce compte (sous ssh par exemple):
sudo useradd -r -s /bin/false navidrome
Créer une structure de répertoire
Créez un répertoire pour stocker l’exécutable Navidrome et un répertoire de travail avec les permissions appropriées.
sudo install -d -o navidrome -g navidrome /opt/navidrome
sudo install -d -o navidrome -g navidrome /var/lib/navidrome
Obtenir Navidrome
Téléchargez la dernière version depuis la page des versions, extrayez le contenu dans le répertoire exécutable et définissez les autorisations pour les fichiers. (Remplacez l’URL ci-dessous par celle de la page des versions) :
wget https://github.com/navidrome/navidrome/releases/download/v0.45.1/navidrome_0.45.1_Linux_arm64.tar.gz -O Navidrome.tar.gz
sudo tar -xvzf Navidrome.tar.gz -C /opt/navidrome/
sudo chown -R navidrome:navidrome /opt/navidrome
Créer le fichier de configuration
Dans le répertoire de travail, /var/lib/navidrome
créer un nouveau fichier nommé navidrome.toml
avec les paramètres suivants.
MusicFolder = "/home/userhms/sshfs/musique"
Pour d’autres options de configuration, voir la page des options de configuration.
Créer une unité Systemd
Créez un nouveau fichier sous /etc/systemd/system/
nommé navidrome.service
avec les données suivantes.
/etc/systemd/system/navidrome.service
[Unit]
Description=Navidrome Music Server and Streamer compatible with Subsonic/Airsonic
After=remote-fs.target network.target
AssertPathExists=/var/lib/navidrome
[Install]
WantedBy=multi-user.target
[Service]
User=navidrome
Group=navidrome
Type=simple
ExecStart=/opt/navidrome/navidrome --configfile "/var/lib/navidrome/navidrome.toml"
WorkingDirectory=/var/lib/navidrome
TimeoutStopSec=20
KillMode=process
Restart=on-failure
# See https://www.freedesktop.org/software/systemd/man/systemd.exec.html
DevicePolicy=closed
NoNewPrivileges=yes
PrivateTmp=yes
PrivateUsers=yes
ProtectControlGroups=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
RestrictNamespaces=yes
RestrictRealtime=yes
SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap
ReadWritePaths=/var/lib/navidrome
# You can uncomment the following line if you're not using the jukebox This
# will prevent navidrome from accessing any real (physical) devices
#PrivateDevices=yes
# You can change the following line to `strict` instead of `full` if you don't
# want navidrome to be able to write anything on your filesystem outside of
# /var/lib/navidrome.
ProtectSystem=full
# You can uncomment the following line if you don't have any media in /home/*.
# This will prevent navidrome from ever reading/writing anything there.
#ProtectHome=true
# You can customize some Navidrome config options by setting environment variables here. Ex:
#Environment=ND_BASEURL="/navidrome"
Démarrez le service Navidrome
Rechargez le démon de service, démarrez le service nouvellement créé, et vérifiez qu’il a démarré correctement.
sudo systemctl daemon-reload
sudo systemctl start navidrome.service
sudo systemctl status navidrome.service
Si le service a démarré correctement, vérifiez que vous pouvez accéder à http://localhost:4533.
Ouvrir un terminal sur le client linux qui dispose des clés ssh et lancer la commande
ssh -L 9500:localhost:4533 userhms@45.145.166.51 -p 55051 -i /home/yann/.ssh/hms-sto-250
Ouvrir un navigateur sur le client et saisir localhost:9500 pour afficher le serveur audio
Démarrez Navidrome au démarrage
sudo systemctl enable navidrome.service
Proxy nginx zic.xoyaz.xyz
Le domaine “zic.xoyaz.xyz” est activé avec les certificats let’s encrypt
Le fichier de configuration nginx /etc/nginx/conf.d/zic.xoyaz.xyz.conf
server {
listen 80;
listen [::]:80;
server_name zic.xoyaz.xyz;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name zic.xoyaz.xyz;
ssl_certificate /etc/ssl/private/xoyaz.xyz-fullchain.pem;
ssl_certificate_key /etc/ssl/private/xoyaz.xyz-key.pem;
root /var/www/html;
index index.html index.php;
# TLS 1.3 only
ssl_protocols TLSv1.3;
ssl_prefer_server_ciphers off;
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
# verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /etc/ssl/private/xoyaz.xyz-fullchain.pem;
# replace with the IP address of your resolver
resolver 1.1.1.1;
location / {
proxy_pass http://127.0.0.1:4533;
}
}
Serveur de messagerie
Préparations
Avant de commencer l’installation de Mailcow, vous devez effectuer quelques préparatifs, qui concernent principalement les paramètres DNS du domaine que vous souhaitez utiliser pour recevoir et envoyer des e-mails. Pour ce faire, suivez les étapes ci-dessous :
- Le nom d’hôte de votre serveur doit être “mail”, donc le FQDN doit être “mail.xoyaz.xyz”.
- Ajoutez un enregistrement A pour le sous-domaine “mail” (mail.xoyaz.xyz) et faites en sorte qu’il pointe vers l’adresse IP du serveur de messagerie.
- Ajoutez un enregistrement MX pour votre domaine et faites en sorte qu’il pointe vers le sous-domaine “mail” que vous venez de créer (mail.xoyaz.xyz) avec une priorité de 10.
- Définissez un enregistrement CNAME pour les sous-domaines “autodiscover” et “autoconfig” et définissez la destination des deux enregistrements CNAME sur le sous-domaine de messagerie (mail.xoyaz.xyz).
- Ajoutez un enregistrement TXT pour votre domaine et définissez la valeur de “v=spf1 mx ~all”, pour permettre au serveur spécifié dans l’enregistrement MX (le serveur de messagerie où Mailcow sera installé) d’envoyer des e-mails avec votre domaine comme domaine expéditeur. Le “~all” signifie que les autres serveurs ne sont pas autorisés à envoyer des e-mails à partir de votre domaine, mais ces e-mails seront tout de même livrés (softfail).
- Définissez un enregistrement PTR (Reverse DNS) pour l’adresse IP de votre serveur et définissez la valeur du FQDN de votre serveur (“mail.xoyaz.xyz”). Vous pouvez définir cet enregistrement PTR directement dans l’interface web de tout bon hébergeur comme Contabo. Pour certains fournisseurs, vous devez écrire un e-mail ou ouvrir un ticket de support.
Ajouter à la configuration dns ovh domaine xoyaz.xyz
IN MX 10 mail.xoyaz.xyz.
IN TXT "v=spf1 mx ~all"
autoconfig IN CNAME mail.xoyaz.xyz.
autodiscover IN CNAME mail.xoyaz.xyz.
mail IN A 45.145.166.51