VPS Contabo debian 12
- Debian bookworm
- Mise à jour + Réseau IPV6
- Date et heure + Synchro
- Reconfigurer locales
- Domaine xoyize.net
- Création utilisateur
- OpenSSH, clé et script
- Outils, scripts motd et sshrcbash
- Certificats LetsEncrypt (acme)
- Parefeu
- Serveur de messagerie
- Smtp acme
- Récapitulatif DNS et parefeu
- Listes de contrôle accès (ACL)
- Nextcloud
- Accueil site
Fournisseur : Contabo
Accès client : https://my.contabo.com/
Nom du plan : VPS S SSD
Location Dusseldorf (EU)
4 vCPU Cores
RAM garantie : 6000 Mb
Bande passante 32 TB Out + Unlimited In
Espace disque SSD 400 Go
Système d’exploitation : Debian 12
Technologie de virtualisation KVM
Emplacement du serveur: Allemagne
Frais d’installation 0.00 EUR
Coût annuel 64.80€/An TTC
Méthodes de paiement PayPal
IP address 37.60.230.30
Accès client : https://my.contabo.com/
Sous-réseau IPv6
Chaque serveur dédié et chaque VPS est livré avec un sous-réseau IPv6 /64 en plus de son adresse IPv4. Vous pouvez utiliser les adresses de ce sous-réseau librement sur le serveur/VPS associé. IPv6 est déjà préconfiguré sur nos serveurs mais doit être activé explicitement dans certains cas. Vous trouverez comment activer IPv6 et d’autres informations sur le sujet dans notre tutoriel.
type d’abonnement | adresse IPv4 | sous-réseau IPv6 |
---|---|---|
VPS S SSD (no setup) | 37.60.230.30 | 2a02:c206:2162:8819::1 / 64 |
Debian bookworm
PARAMETRES D’ACCES:
L’adresse IPv4 du VPS est : 37.60.230.30
L’adresse IPv6 du VPS est : 2a02:c206:2162:8819::1
On se connecte en root sur le VPS
ssh root@37.60.230.30
Linux vmi1083749.contaboserver.net 5.10.0-12-amd64 #1 SMP Debian 5.10.103-1 (2022-03-07) x86_64
_____
/ ___/___ _ _ _____ _ ___ ___
| | / _ \| \| |_ _/ \ | _ )/ _ \
| |__| (_) | .` | | |/ _ \| _ \ (_) |
\____\___/|_|\_| |_/_/ \_|___/\___/
Welcome!
This server is hosted by Contabo. If you have any questions or need help,
please don't hesitate to contact us at support@contabo.com.
root@vmi1083749:~#
Mise à jour + Réseau IPV6
# Mise à jour
apt update && apt upgrade
# Quelques outils
apt install tree tmux
# Activation ipv6
enable_ipv6
# redémarrer
reboot
# se reconnecter ssh
Vérifier l’adressage : ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:50:56:4e:73:83 brd ff:ff:ff:ff:ff:ff
altname enp0s18
altname ens18
inet 37.60.230.30/20 brd 37.60.239.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 2a02:c206:2162:8819::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe4e:7383/64 scope link
valid_lft forever preferred_lft forever
Date et heure + Synchro
Activer le fuseau Europe/Paris
timedatectl set-timezone Europe/Paris
Horloge système synchronisée
timedatectl
Local time: Fri 2024-02-09 16:18:11 CET
Universal time: Fri 2024-02-09 15:18:11 UTC
RTC time: Fri 2024-02-09 15:18:11
Time zone: Europe/Paris (CET, +0100)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Reconfigurer locales
Activer uniquement fr_FR.UTF-8
dpkg-reconfigure locales
Generating locales (this might take a while)...
fr_FR.UTF-8... done
Generation complete.
Domaine xoyize.net
Définir le domaine
hostnamectl set-hostname xoyize.net
Zone dns OVH
$TTL 3600
@ IN SOA dns102.ovh.net. tech.ovh.net. (2024013001 86400 3600 3600000 60)
IN NS dns102.ovh.net.
IN NS ns102.ovh.net.
IN MX 10 xoyize.net.
IN A 37.60.230.30
IN AAAA 2a02:c206:2162:8819::1
* IN A 37.60.230.30
* IN AAAA 2a02:c206:2162:8819::1
Création utilisateur
Utilisateur yani
useradd -m -d /home/yani/ -s /bin/bash yani
Mot de passe yani
passwd yani
Visudo pour les accès root via utilisateur yani
apt install sudo
echo "yani ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
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) nommé ctbo-xoyize-net pour une liaison SSH avec le serveur KVM.
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/ctbo-xoyize-net
Envoyer les clés publiques sur le serveur KVM
ssh-copy-id -i ~/.ssh/ctbo-xoyize-net.pub yani@37.60.230.30
On se connecte
ssh yani@37.60.230.30
Modifier la configuration serveur SSH
sudo nano /etc/ssh/sshd_config
Modifier
Port 55030
PermitRootLogin no
PasswordAuthentication no
Relancer openSSH
sudo systemctl restart sshd
Accès depuis le poste distant avec la clé privée
ssh -p 55030 -i ~/.ssh/ctbo-xoyize-net yani@37.60.230.30
Outils, scripts motd et ssh_rc_bash
Installer utilitaires
sudo apt install rsync curl tmux jq figlet git dnsutils tree -y
Motd
sudo rm /etc/motd && sudo nano /etc/motd
___ _ _
/ __| ___ _ _ | |_ __ _ | |__ ___
| (__ / _ \| ' \| _|/ _` || '_ \/ _ \
\___|\___/|_||_|\__|\__,_||_.__/\___/
___ _ _ _ ___
| \ ___ | |__ (_) __ _ _ _ / ||_ )
| |) |/ -_)| '_ \| |/ _` || ' \ | | / /
|___/ \___||_.__/|_|\__,_||_||_| |_|/___|
____ ____ __ __ ___ ____ __ ____ __
|__ /|__ | / / / \ |_ )|__ / / \ |__ / / \
|_ \ / /_ / _ \| () |_ / / |_ \| () |_ |_ \| () |
|___/ /_/(_)\___/ \__/(_)/___||___/ \__/(_)|___/ \__/
Script ssh_rc_bash
ATTENTION!!! Les scripts sur connexion peuvent poser des problèmes pour des appels externes autres que ssh
wget https://static.xoyize.xyz/files/ssh_rc_bash
chmod +x ssh_rc_bash # rendre le bash exécutable
./ssh_rc_bash # exécution
Historique de la ligne de commande
Ajoutez la recherche d’historique de la ligne de commande au terminal.
Tapez un début de commande précédent, puis utilisez shift + up (flèche haut) pour rechercher l’historique filtré avec le début de la commande.
# Global, tout utilisateur
echo '"\e[1;2A": history-search-backward' | sudo tee -a /etc/inputrc
echo '"\e[1;2B": history-search-forward' | sudo tee -a /etc/inputrc
Certificats LetsEncrypt (acme)
Installer acme: Serveur , installer et renouveler les certificats SSL Let’s encrypt via Acme
cd ~
sudo apt install socat -y # prérequis
git clone https://github.com/acmesh-official/acme.sh.git
cd acme.sh
./acme.sh --install # se déconnecter pour prise en compte
# export des clé API OVH
Générer les certificats pour le domaine xoyize.net
acme.sh --dns dns_ovh --server letsencrypt --issue --keylength ec-384 -d 'xoyize.net' -d '*.xoyize.net'
[ven. 09 févr. 2024 16:30:40 CET] Your cert is in: /home/yani//.acme.sh/xoyize.net_ecc/xoyize.net.cer
[ven. 09 févr. 2024 16:30:40 CET] Your cert key is in: /home/yani//.acme.sh/xoyize.net_ecc/xoyize.net.key
[ven. 09 févr. 2024 16:30:40 CET] The intermediate CA cert is in: /home/yani//.acme.sh/xoyize.net_ecc/ca.cer
[ven. 09 févr. 2024 16:30:40 CET] And the full chain certs is there: /home/yani//.acme.sh/xoyize.net_ecc/fullchain.cer
Installer les certificats
nous stockons les fichiers dans le répertoire /etc/ssl/private/ (qui doit être créé au préalable), la commande serait :
sudo mkdir -p /etc/ssl/private/
sudo chown $USER -R /etc/ssl/private/
acme.sh --ecc --install-cert -d 'xoyize.net' -d '*.xoyize.net' --key-file /etc/ssl/private/xoyize.net-key.pem --fullchain-file /etc/ssl/private/xoyize.net-fullchain.pem
Résultat commande
[ven. 09 févr. 2024 16:31:28 CET] Installing key to: /etc/ssl/private/xoyize.net-key.pem
[ven. 09 févr. 2024 16:31:28 CET] Installing full chain to: /etc/ssl/private/xoyize.net-fullchain.pem
Renouvellement automatique
crontab -e
35 0 * * * "$HOME/.acme.sh"/acme.sh --cron --home "$HOME/.acme.sh" --renew-hook "$HOME/.acme.sh/acme.sh --ecc --install-cert -d 'xoyize.net' --key-file /etc/ssl/private/xoyize.net-key.pem --fullchain-file /etc/ssl/private/xoyize.net-fullchain.pem" > /dev/null
Parefeu
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 (ou simple).
Installation Debian / Ubuntu
sudo apt 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 55030/tcp # port SSH , 55030
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
-- ------ ----
55030/tcp ALLOW IN Anywhere
443 ALLOW IN Anywhere
53 (DNS) ALLOW IN Anywhere
55030/tcp (v6) ALLOW IN Anywhere (v6)
443 (v6) ALLOW IN Anywhere (v6)
53 (DNS (v6)) ALLOW IN Anywhere (v6)
Serveur de messagerie
Serveur de messagerie IMAP SMTP xoyize.net
Comptes d’utilisateurs
Contrairement à des logiciels comme postfix et dovecot, maddy utilise par défaut des "utilisateurs virtuels", ce qui signifie qu’il ne se préoccupe pas des utilisateurs du système et n’en a pas connaissance.
Les boîtes aux lettres IMAP (“comptes”) et les identifiants d’authentification sont séparés.
Pour enregistrer les informations d’identification d’un utilisateur, utilisez la commande maddy creds create
sudo maddy creds create yani@xoyize.net
Notez que le nom d'utilisateur est une adresse électronique. Ceci est nécessaire car le nom d’utilisateur est utilisé pour autoriser l’accès IMAP et SMTP
Après avoir enregistré les informations d’identification de l’utilisateur, vous devez également créer un compte de stockage local :
sudo maddy imap-acct create yani@xoyize.net
Lorsque vous vous authentifiez avec votre client de messagerie, n’oubliez pas que le nom d’utilisateur est “yani@xoyize.net”, et pas seulement “yani”.
Smtp acme
Définir les paramètres dans acme pour une notification par smtp
export SMTP_FROM="postmaster@xoyize.net"
export SMTP_TO="vpn@cinay.eu"
export SMTP_HOST="xoyize.net"
export SMTP_PORT="587"
export SMTP_SECURE="tls"
export SMTP_USERNAME="postmaster@xoyize.net"
export SMTP_PASSWORD="xxxxxxxxxxxxxxx"
export SMTP_BIN="/usr/bin/python3"
exécutez la commande suivante pour activer la notification smtp pour votre Let’s Encrypt lorsqu’un certificat est ignoré, renouvelé ou erroné. Par exemple :
acme.sh --set-notify --notify-hook smtp
Résultat de la commande
[mar. 30 janv. 2024 21:09:37 CET] Set notify hook to: smtp
[mar. 30 janv. 2024 21:09:37 CET] Sending via: smtp
[mar. 30 janv. 2024 21:09:38 CET] smtp Success
Modifier le script certificat_expire.sh
pour y inclure les paramètres --set-notify --notify-hook smtp
Récapitulatif DNS et parefeu
Configurations DNS et parefeu suite installation serveur de messagerie
DNS OVH
$TTL 3600
@ IN SOA dns102.ovh.net. tech.ovh.net. (2024013010 86400 3600 3600000 60)
IN NS dns102.ovh.net.
IN NS ns102.ovh.net.
IN MX 10 xoyize.net.
IN A 37.60.230.30
IN AAAA 2a02:c206:2162:8819::1
IN TXT "v=spf1 mx ~all"
* IN A 37.60.230.30
* IN AAAA 2a02:c206:2162:8819::1
_25._tcp IN TLSA 3 1 1 6b162fbf858cf5e994fbbc2ca4a06ec80a06d0bc03531813861c634a0802dc3a
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:postmaster@xoyize.net"
_mta-sts IN TXT "v=STSv1; id=1"
_smtp._tls IN TXT "v=TLSRPTv1;rua=mailto:postmaster@xoyize.net"
default._domainkey IN TXT ( "v=DKIM1;k=rsa;p=MIIBIj...sdwIDAQAB;" )
Parefeu
Status: active
To Action From
-- ------ ----
55030/tcp ALLOW Anywhere
443 ALLOW Anywhere
DNS ALLOW Anywhere
25 ALLOW Anywhere
587 ALLOW Anywhere
993 ALLOW Anywhere
55030/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
DNS (v6) ALLOW Anywhere (v6)
25 (v6) ALLOW Anywhere (v6)
587 (v6) ALLOW Anywhere (v6)
993 (v6) ALLOW Anywhere (v6)
Listes de contrôle accès (ACL)
ACL - Explications
Les droits standards et les droits étendus sont des fonctionnalités intéressantes mais qui ne s’applique que pour un seul utilisateur ou un seul groupe. Comment définir des permissions spécifiques, voire différents, pour d’autres utilisateurs ou groupes que les propriétaires ? Les ACLs offrent une réponse à cette question.
Installer le paquet acl
sudo apt install acl
si la partition concernée par le partage est de type ext4 le support des acl est actif par défaut: l’option de montage “acl” a été remplacée par “noacl”, qui devient donc celle à utiliser si on veut… désactiver le support des acl
l’attribution des droits se fait grâce à la commande setfacl, la lecture des droits avec getfacl
Ainsi les deux commandes suivantes sont équivalentes :
chmod u=rw fichier
setfacl -m u::rw
Un fichier dont les ACL auront été spécifiés verra s’ajouter un + à la fin de la liste des droits avec la commande :
ls -l fichier
getfacl permet d’afficher l’ensemble des permissions définies :
getfacl fichier
# file: fichier
# owner: utilisateur
# group: utilisateur
user::rwx
user:utilisateur1:rw-
user:utilisateur2:r--
group::r--
mask::rwx
other::---
ici on peut voir que le propriétaire du fichier (utilisateur) a les droits rwx, utilisateur1 rw- et utilisateur2 r–, les autres utilisateurs n’ont aucun droit
getfacl --omit-header ...
supprime de l’affichage les 3 premières lignes, le nom du fichier, le propriétaire et le groupe.
mkdir dir
ls -ld dir
drwxr-xr-x 2 root root 4096 Mar 12 13:54 dir
getfacl --omit-header dir
user::rwx
group::r-x
other::r-x
Sans acl, la commande getfacl donne les mêmes informations que ls -ld
setfacl -d ...
spécifie des acl par défaut, qui ne peuvent s’appliquer qu’aux dossiers.
setfacl -m user:fdsadmin:rwx dir
setfacl -d -m group:nasgrp:r-x dir
getfacl --omit-header dir
user::rwx
user:fdsadmin:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:nasgrp:r-x
default:mask::r-x
default:other::r-x
getfacl --access --default ...
L’affichage précédent peut se décomposer en droits d’accès fichier, et en droits par défaut :
getfacl --omit-header --access dir
user::rwx
user:fdsadmin:rwx
group::r-x
mask::rwx
other::r-x
getfacl --omit-header --default dir
user::rwx
group::r-x
group:nasgrp:r-x
mask::r-x
other::r-x
Les permissions effectives sont affichées individuellement pour les utilisateurs ou les groupes qui subissent un droit de hiérarchie supérieure différent :
chmod g-w dir
ls -ld dir
drwxr-xr-x+ 2 root root 4096 Mar 12 13:54 dir
getfacl --omit-header dir
user::rwx
user:fdsadmin:rwx #effective:r-x
group::r-x
mask::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:nasgrp:r-x
default:mask::r-x
default:other::r-x
Ici l’utilisateur fdsadmin qui avait pourtant les droits rwx s’est vu amputer du droit w supprimé au groupe.
autoriser à “utilisateur” la lecture et l’écriture sur “fichier”
setfacl -m user:utilisateur:rw fichier
setfacl -m u:utilisateur:rw fichier
La même commande est disponible pour les groupes. Il suffit de remplacer u/user par g/group
modifier les permissions de plusieurs utilisateurs/groupes sur “fichier” en même temps
setfacl -m user:utilisateur:rwx,user:utilisateur2:r,group:groupe:rw fichier
définir l’accès en lecture par défaut pour “utilisateur” pour les nouveaux fichiers créés dans “dossier”
setfacl -m d:u:utilisateur:r dossier
supprimer les ACL pour un utilisateur sur une arborescence
setfacl -R -x user::nom_user repertoire_base_arborescence
supprimer les ACL sur un fichier/dossier
setfacl -b fichier
ACL - Dossier multimédia
Création dossier multimedia géré par les ACL
nano /home/yani/creation_dossier_multimedia.sh
Etendre Réduire
Droits en exécution
chmod +x /home/yani/creation_dossier_multimedia.sh
Exécuter le script
.//home/yani/creation_dossier_multimedia.sh
Ajout utilisateur au groupe multimedia
sudo usermod -a -G multimedia $USER
Ajout nextcloud au groupe multimedia
sudo usermod -a -G multimedia nextcloud
Se reconnecter pour la prise en compte
Nextcloud
Nginx PHP Nextcloud hub
Installation version compilée nginx obligatoire
nginx version: nginx/1.24.0
OpenSSL 3.0.11 19 Sep 2023 (Library: OpenSSL 3.0.11 19 Sep 2023)
PHP 8.2.10 (cli) (built: Sep 4 2023 08:12:29) (NTS)
mariadb Ver 15.1 Distrib 10.11.3-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
Créer le sous-domaine cloud.xoyize.net avec des certificats SSL valides (Let’s Encrypt)
Nginx mimes
Les sections Activité et Logging dans le cadre de l’administration affiche des pages vierges
C’est une indication que votre serveur web n’est pas configuré pour gérer correctement les fichiers mjs.
Il faut modifier le fichier “mime.types” situé dans /etc/nginx/ et remplaçer la ligne suivante:
application/javascript js;
par
application/javascript js mjs;
Puis redémarrer Nginx et php-fpm.
systemctl restart php8.2-fpm nginx
Etendre Réduire pool PHP /etc/php/8.2/fpm/pool.d/nextcloud.conf
Etendre Réduire fichier /etc/nginx/conf.d/security.conf.inc
Nexcloud sur le domaine cloud.xoyize.net avec certificats Let’s Encrypt
Etendre Réduire fichier de configuration web /etc/nginx/conf.d/cloud.xoyize.net.conf
Vérifier et recharger nginx : nginx -t && systemctl reload nginx
Installer nextcloud via le lien https://cloud.xoyize.net
- Nom d’utilisateur : yani
- Mot de passe : xxxxxx
- Répertoire des données : /usr/local/include/nextcloud/data
- Mariadb
- Utilisateur : nextcloud
- Mp base : xxxxxxxxx
- Nom base : nextcloud
- Hôte : localhost
Si tout est OK, on arrive sur la page d’acceuil
Paramètrage nextcloud hub
Les ajouts au fichier de configuration /var/www/nextcloud/config/config.php
'default_locale' => 'fr_FR',
'default_phone_region' => 'FR',
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.local' => '\\OC\\Memcache\\APCu',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
'password' => '',
),
'mail_from_address' => 'postmaster',
'mail_smtpmode' => 'smtp',
'mail_sendmailmode' => 'smtp',
'mail_domain' => 'xoyize.net',
'mail_smtphost' => 'xoyize.net',
'mail_smtpport' => '587',
'mail_smtpauth' => 1,
'mail_smtpname' => 'postmaster@xoyize.net',
'mail_smtppassword' => 'mp_smtp',
'maintenance_window_start' => 1,
Personnel → Informations personnelles
Administration → Paramètres de base
Pour les notifications nextcloud
Vérification et version
Paramètres d’administration → Vue d’ensemble
Authentification sans mot de passe
Ajout utilisateur au groupe nextcloud
sudo usermod -a -G nextcloud $USER
Nextcloud SnappyMail (option)
Configuration administrateur
Administration → Paramètres supplémentaires
Domaine : xoyize.net
Accueil site
Page d’acceuil sur lien https://xoyize.net
Etendre Réduire fichier de configuration /etc/nginx/conf.d/xoyize.net.conf
Lien https://xoyize.net
Authelia
Configuration nginx
/etc/nginx/conf.d/auth.conf (Authelia Portal)
server {
listen 80;
server_name auth.xoyize.net;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name auth.xoyize.net;
root /usr/share/nginx/html/;
# connexion nginx fermée si sous domaine inexistant
if ($http_host != "auth.xoyize.net") {
return 444;
# rewrite ^ http://example.com$request_uri permanent;
}
include /etc/nginx/conf.d/security.conf.inc;
set $upstream http://127.0.0.1:9091;
location / {
include snippets/proxy.conf;
proxy_pass $upstream;
}
location /api/verify {
proxy_pass $upstream;
}
}
/etc/nginx/snippets/proxy.conf
## Headers
proxy_set_header Host $host;
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Uri $request_uri;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Connection "";
## Basic Proxy Configuration
client_body_buffer_size 128k;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; ## Timeout if the real server is dead.
proxy_redirect http:// $scheme://;
proxy_http_version 1.1;
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
proxy_buffers 64 256k;
## Trusted Proxies Configuration
## Please read the following documentation before configuring this:
## https://www.authelia.com/integration/proxies/nginx/#trusted-proxies
# set_real_ip_from 10.0.0.0/8;
# set_real_ip_from 172.16.0.0/12;
# set_real_ip_from 192.168.0.0/16;
# set_real_ip_from fc00::/7;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
## Advanced Proxy Configuration
send_timeout 5m;
proxy_read_timeout 360;
proxy_send_timeout 360;
proxy_connect_timeout 360;
/etc/nginx/snippets/authelia-location.conf
set $upstream_authelia http://127.0.0.1:9091/api/verify;
## Virtual endpoint created by nginx to forward auth requests.
location /authelia {
## Essential Proxy Configuration
internal;
proxy_pass $upstream_authelia;
## Headers
## The headers starting with X-* are required.
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
proxy_set_header X-Original-Method $request_method;
proxy_set_header X-Forwarded-Method $request_method;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Uri $request_uri;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Content-Length "";
proxy_set_header Connection "";
## Basic Proxy Configuration
proxy_pass_request_body off;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; # Timeout if the real server is dead
proxy_redirect http:// $scheme://;
proxy_http_version 1.1;
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
proxy_buffers 4 32k;
client_body_buffer_size 128k;
## Advanced Proxy Configuration
send_timeout 5m;
proxy_read_timeout 240;
proxy_send_timeout 240;
proxy_connect_timeout 240;
}
/etc/nginx/snippets/authelia-authrequest.conf
## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource.
auth_request /authelia;
## Set the $target_url variable based on the original request.
## Comment this line if you're using nginx without the http_set_misc module.
#set_escape_uri $target_url $scheme://$http_host$request_uri;
## Uncomment this line if you're using NGINX without the http_set_misc module.
set $target_url $scheme://$http_host$request_uri;
## Save the upstream response headers from Authelia to variables.
auth_request_set $user $upstream_http_remote_user;
auth_request_set $groups $upstream_http_remote_groups;
auth_request_set $name $upstream_http_remote_name;
auth_request_set $email $upstream_http_remote_email;
## Inject the response headers from the variables into the request made to the backend.
proxy_set_header Remote-User $user;
proxy_set_header Remote-Groups $groups;
proxy_set_header Remote-Name $name;
proxy_set_header Remote-Email $email;
## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal.
error_page 401 =302 https://auth.xoyize.net/?rd=$target_url;
Activer protection
Modifier le fichier de configuration de l’appli web pour la prise en charge
Exemple next cloud
# En début de fichier
[...]
include /etc/nginx/conf.d/security.conf.inc;
# Ajout snippets/authelia-location.conf
include snippets/authelia-location.conf; # Authelia auth endpoint
[...]
[...]
# Fin du fichier
location ~ / {
if ($request_method ~ ^(PUT|DELETE|PATCH|PROPFIND|PROPPATCH)$) {
rewrite ^ /index.php$request_uri last;
}
try_files $uri / /index.php$request_uri;
}
# Ajout snippets/authelia-authrequest.conf
include snippets/authelia-authrequest.conf; # Protect this endpoint
}
}