====== Un conteneur LXC pour Yunohost ======
__Objectif :__ Migrer le serveur (VPS) de duniter.be vers un conteneur [[LXC]] sur un serveur plus costaud.
(Attention, Yunohost n'est actuellement disponible que pour Debian Stretch et pas encore pour Debian Buster!)
# lxc-create -t download -n yunohost -- --dist debian --release stretch --arch amd64
# cat /var/lib/lxc/yunohost/config
lxc.start.auto = 1
# Distribution configuration
lxc.include = /usr/share/lxc/config/common.conf
lxc.arch = linux64
# Container specific configuration
lxc.rootfs.path = dir:/var/lib/lxc/yunohost/rootfs
lxc.uts.name = yunohost
# Network configuration
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:9e:94:00
# cat /etc/lxc/dnsmasq.conf
(...)
dhcp-host=yunohost,10.0.3.6
# systemctl restart lxc-net
# lxc-start yunohost
# lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
yunohost RUNNING 1 - 10.0.3.6 - false
===== Installation de Yunohost =====
[[https://yunohost.org/#/install_manually|Documentation : Installing YunoHost manually]]
# lxc-attach yunohost
root@yunohost:/# apt install curl
root@yunohost:/# curl https://install.yunohost.org | bash
(...)
[ OK ] YunoHost installation completed !
===============================================================================
You should now proceed with Yunohost post-installation. This is where you will
be asked for :
- the main domain of your server ;
- the administration password.
(...)
On lance la "[[https://yunohost.org/#/postinstall|post-installation]]" :
root@yunohost:/# yunohost tools postinstall
Domaine principal : artanux.be
Vous êtes maintenant sur le point de définir un nouveau mot de passe d’administration. Le mot de passe doit comporter au moins 8 caractères – bien qu’il soit recommandé d’utiliser un mot de passe plus long (c’est-à-dire une phrase secrète) et/ou d’utiliser différents types de caractères (majuscules, minuscules, chiffres et caractères spéciaux).
Nouveau mot de passe d’administration :
Confirmez : nouveau mot de passe d’administration :
Info : L'installation de YunoHost est en cours …
(...)
Succès ! YunoHost a été configuré
Attention : La post-installation est terminée mais YunoHost a besoin d’au moins un utilisateur pour fonctionner correctement. Vous devez en ajouter un en utilisant 'yunohost user create $nomdutilisateur' ou bien via l’interface d’administration web.
On ajoute donc un utilisateur :
root@yunohost:/# yunohost user create nomutilisateur
Prénom : prenom
Nom : nom
Adresse de courriel : ******@artanux.be
Vous êtes maintenant sur le point de définir un nouveau mot de passe utilisateur. Le mot de passe doit comporter au moins 8 caractères — bien qu’il soit recommandé d’utiliser un mot de passe plus long (c’est-à-dire une phrase secrète) et/ou d’utiliser différents types de caractères (majuscules, minuscules, chiffres et caractères spéciaux).
Mot de passe :
Confirmez : mot de passe :
Creating directory '/home/nomutilisateur'.
Succès ! La configuration de SSOwat a été générée
Succès ! L’utilisateur a été créé
fullname: prenom nom
mail: *******@artanux.be
username: nomutilisateur
===== Configuration DNS Chez OVH =====
Il y a une commande yunohost qui donne la configuration par défaut :
root@yunohost:/# yunohost domain dns-conf artanux.be
Info : Cette page montre la configuration *recommandée*. Elle ne configure *pas* le DNS pour vous. Il est de votre responsabilité que de configurer votre zone DNS chez votre fournisseur/registrar DNS avec cette recommandation.
; Basic ipv4/ipv6 records
@ 3600 IN A 37.187.127.107
* 3600 IN A 37.187.127.107
; XMPP
_xmpp-client._tcp 3600 IN SRV 0 5 5222 artanux.be.
_xmpp-server._tcp 3600 IN SRV 0 5 5269 artanux.be.
muc 3600 IN CNAME @
pubsub 3600 IN CNAME @
vjud 3600 IN CNAME @
; Mail
@ 3600 IN MX 10 artanux.be.
@ 3600 IN TXT "v=spf1 a mx ip4:37.187.127.107 -all"
mail._domainkey 3600 IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDuAgB7uHn1gy0pix2P1sfVtB9NQpMAVAi9UcuiGficw9a9xFIGbccPsgdVo79Ktt2O+G+HCq+WJln5iftr1+W4QMj8BNlClG6t26QQqK5G20NLaKappYmEKNgTBI40h00M59nVebIUlCMQiI4r7kD0sWPfQIIs/y/K1ouZSpDirwIDAQAB"
_dmarc 3600 IN TXT "v=DMARC1; p=none"
; Extra
@ 3600 IN CAA 128 issue "letsencrypt.org"
On ne peut pas copier telle quelle cette configuration dans les zones DNS chez OVH. J'ai du remanier un peu :
$TTL 3600
@ IN SOA dns101.ovh.net. tech.ovh.net. (2020010808 86400 3600 3600000 300)
IN NS dns101.ovh.net.
IN NS ns101.ovh.net.
IN MX 10 artanux.be.
IN A 37.187.127.107
IN CAA 128 issue "letsencrypt.org"
600 IN TXT "v=spf1 a mx ip4:37.187.127.107 -all"
* IN CNAME artanux.be.
_dmarc IN TXT "v=DMARC1; p=none;"
_xmpp-client._tcp IN SRV 0 5 5222 artanux.be.
_xmpp-server._tcp IN SRV 0 5 5269 artanux.be.
mail._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDuAgB7uHn1gy0pix2P1sfVtB9NQpMAVAi9UcuiGficw9a9xFIGbccPsgdVo79Ktt2O+G+HCq+WJln5iftr1+W4QMj8BNlClG6t26QQqK5G20NLaKappYmEKNgTBI40h00M59nVebIUlCMQiI4r7kD0sWPfQIIs/y/K1ouZSpDirwIDAQAB" )
muc IN CNAME artanux.be.
pubsub IN CNAME artanux.be.
vjud IN CNAME artanux.be.
(Je me suis inspiré de [[https://static.cinay.xyz/2018/12/OVH-KVM-vps591606-Debian-Stretch-Yunohost-3.3-cinay.xyz.html#administration-ovh-dns-et-vps|cinay.xyz]] pour la syntaxe qui ne correspond pas trop à ce que la commande initiale donne.)
===== Reverse Proxy Nginx =====
Sur le serveur sur lequel tourne les conteneurs [[LXC]] que j'utilise, j'ai installé [[nginx]] comme reverse proxy.
J'utilise le nom de domaine artanux.be pour cet usage.
__Prérequis :__ On génère les certificats wildcard ( valable pour artanux.be et *.artanux.be ) avec [[acme.sh]].
# cat /etc/nginx/sites-available/artanux.be
server {
listen 80;
server_name artanux.be *.artanux.be;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name *.artanux.be;
ssl_certificate /etc/ssl/artanux.be/fullchain.pem;
ssl_certificate_key /etc/ssl/artanux.be/privkey.pem;
ssl_protocols TLSv1.2;
ssl_ecdh_curve sect571r1:secp521r1:brainpoolP512r1:secp384r1;
ssl_ciphers EECDH+AESGCM:EECDH+CHACHA20:EECDH+AES;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://10.0.3.6;
proxy_redirect off;
proxy_read_timeout 1200s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 50M;
}
}
# ln -s /etc/nginx/sites-available/artanux.be /etc/nginx/sites-enabled/