installer_libretime_un_container_lxc_privileges
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
installer_libretime_un_container_lxc_privileges [2020/10/21 22:34] – créée Benjamin Labomedia | installer_libretime_un_container_lxc_privileges [2022/03/12 21:11] – [Dans le container en tant que root] Benjamin Labomedia | ||
---|---|---|---|
Ligne 14: | Ligne 14: | ||
y ajouter | y ajouter | ||
lxcrunner veth lxcbr0 10 | lxcrunner veth lxcbr0 10 | ||
- | |||
Se logguer en tant que user | Se logguer en tant que user | ||
adduser lxcrunner | adduser lxcrunner | ||
+ | Fix environmental variables. Otherwise you might have issues creating containers later | ||
+ | lxcrunner> | ||
+ | Find out the namespaces allowed for the user lxc. The wildcard in the command below will match both suid and guid files. We will map the LXC container to these regions. | ||
+ | lxcrunner> | ||
+ | lxcrunner: | ||
+ | lxcrunner: | ||
+ | |||
+ | From the output, we can see that both assigned suid and guid values start at 624288 and runs through the next 65536 integers. | ||
+ | |||
+ | Let us set up configuration files as required by LXC before starting a container. The required file is in ~/ | ||
+ | |||
+ | lxcrunner> | ||
+ | lxcrunner> | ||
+ | |||
+ | Add in the following lines. Notice that the syntax might be different from what you find online. I am using the latest version of LXC, v3.0.3. | ||
+ | |||
+ | We are setting the network interface type to be veth and creating a new bridge lxcbr0. We will come back to these later. Your hwaddr may differ; you can see the default values in / | ||
+ | . | ||
+ | < | ||
+ | lxc.net.0.type = veth | ||
+ | lxc.net.0.link = lxcbr0 | ||
+ | lxc.net.0.flags = up | ||
+ | lxc.net.0.hwaddr = 00: | ||
+ | lxc.idmap = u 0 624288 65536 | ||
+ | lxc.idmap = g 0 624288 65536 | ||
+ | </ | ||
+ | ==== Création du premier container ==== | ||
+ | Créer le container en tant qu' | ||
+ | lxcrunner> | ||
+ | Choisir ubuntu bionic amd64 ou faire directement : | ||
+ | lxcrunner> | ||
+ | |||
+ | A noter pour le backup que les containers sont stockés à cet emplacement : | ||
+ | / | ||
+ | A cet endroit, on trouve le fichier config propre au container et le répertoire rootfs qui contient le filesystem habituel d'un linux | ||
+ | |||
+ | Le démarrer | ||
+ | lxcrunner> | ||
+ | |||
+ | Vérifier que ça marche | ||
+ | lxcrunner> | ||
+ | | ||
+ | ==== Autostart du container ==== | ||
+ | Visiblement, | ||
+ | crontab -e and add the following line: | ||
+ | @reboot lxc-autostart | ||
+ | |||
+ | * voir https:// | ||
+ | ===== Installer Libretime dans le container ===== | ||
+ | Entrer dans le container | ||
+ | lxcrunner> | ||
+ | On obtient un shell root, installer quelques outils : | ||
+ | apt update | ||
+ | apt upgrade | ||
+ | apt install git nano nload htop locate nmap | ||
+ | Lancer l' | ||
+ | cd / | ||
+ | git clone https:// | ||
+ | cd libretime | ||
+ | ./install -fiap | ||
+ | Une fois l' | ||
+ | exit | ||
+ | | ||
+ | ===== Créer les vhost apache pour proxy le traffic vers le container ===== | ||
+ | Identifier l'IP du container : | ||
+ | lxc-ls -f | ||
+ | NAME STATE | ||
+ | musique RUNNING 1 | ||
+ | |||
+ | Pour que le apache du serveur principal renvoie le traffic vers le container, il faut créer les vhost correspondants | ||
+ | nano / | ||
+ | < | ||
+ | < | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | ProxyPreserveHost | ||
+ | ProxyPass / http:// | ||
+ | ProxyPassReverse / http:// | ||
+ | |||
+ | < | ||
+ | Order deny,allow | ||
+ | Allow from all | ||
+ | </ | ||
+ | |||
+ | RewriteEngine on | ||
+ | RewriteCond %{SERVER_NAME} =musique.domaine.org | ||
+ | RewriteRule ^ https:// | ||
+ | </ | ||
+ | </ | ||
+ | Et pour le https | ||
+ | nano / | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | |||
+ | ServerAdmin mail@domaine.org | ||
+ | ServerName musique.domaine.org | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | < | ||
+ | Order deny,allow | ||
+ | Allow from all | ||
+ | </ | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | Ajouter ces vhost aux sites activés | ||
+ | a2ensite musique.domaine.org.conf musique.domaine.org-le-ssl.conf | ||
+ | Relancer Apache | ||
+ | systemctl reload apache2 | ||
+ | | ||
+ | ===== Créer les certificats ssl pour le https ===== | ||
+ | En utilisant [[https:// | ||
+ | Le principe est de générer le certificat avec le vhost apache du host par défaut adapté au domaine du site, puis de remettre en place les vhost proxy vers le container avec l' | ||
+ | |||
+ | Pour mémoire, pistes pour autres méthodes de validation du certificat par certbot avec un proxy : | ||
+ | * Force http-01 webroot authentication https:// | ||
+ | * ProxyPass / | ||
+ | * Activer un vhost https dans le container et y forwarder le traffic | ||
+ | |||
+ | Validation manuelle après [[https:// | ||
+ | certbot certonly --manual --preferred-challenges http --http-01-address 163.172.20.20 -d musique.domaine.org --verbose | ||
+ | | ||
+ | Voir aussi la config du renouvellement du certificat si problème dans | ||
+ | / | ||
+ | ===== Libretime + https ===== | ||
+ | La page d' | ||
+ | |||
+ | Activer le mod substitute | ||
+ | a2enmod substitute | ||
+ | Editer le vhost dans le container | ||
+ | nano / | ||
+ | |||
+ | < | ||
+ | # Quick fix for iframes that reference hard coded ' | ||
+ | # BEGIN: | ||
+ | < | ||
+ | SetOutputFilter SUBSTITUTE; | ||
+ | AddOutputFilterByType SUBSTITUTE text/html | ||
+ | |||
+ | Substitute " | ||
+ | Substitute " | ||
+ | |||
+ | Substitute " | ||
+ | Substitute " | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Il reste le problème de l' | ||
+ | |||
+ | Test de passage au port 443 dans / | ||
+ | |||
+ | Voir aussi à propos de Libretime vs https dans un container : | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | ===== Finaliser l' | ||
+ | Pour ce faire, il faut se rendre à l' | ||
+ | lxc-attach musique | ||
+ | systemctl start libretime-playout | ||
+ | systemctl start libretime-liquidsoap | ||
+ | systemctl start libretime-analyzer | ||
+ | systemctl start libretime-celery | ||
+ | | ||
+ | Si tout va bien on atterit sur la page d' | ||
+ | |||
+ | {{media_08: | ||
+ | |||
+ | ===== Mettre à jour les containers de la machine via un script ===== | ||
+ | Le script / | ||
+ | < | ||
+ | #!/bin/bash | ||
+ | # Get the vm list | ||
+ | vms=" | ||
+ | |||
+ | # Update each vm | ||
+ | update_vm(){ | ||
+ | local vm=" | ||
+ | echo "*** [VM: $vm [$(hostname) @ $(date)] ] ***" | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | echo " | ||
+ | } | ||
+ | |||
+ | # Do it | ||
+ | for v in $vms | ||
+ | do | ||
+ | | ||
+ | done | ||
+ | |||
+ | </ | ||
+ | Lancer le script en tant que lxcrunner | ||
+ | lxcrunner@server6: | ||
+ | |||
+ | ===== Sauvegarde de Libretime ===== | ||
+ | * [[https:// | ||
+ | ====== Troubleshooting ====== | ||
+ | ===== Désactiver ipv6 si ping images.linuxcontainers.org est résolu en ipv6 ===== | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ===== Désactiver le serveur icecast dans les containers si pas utilisés ===== | ||
+ | |||
+ | |||
+ | root@musique: | ||
+ | root@musique: | ||
+ | |||
+ | ===== Réglages apparmor ===== | ||
+ | Corriger les erreurs dans syslog server6 kernel: [12869825.600469] audit: type=1400 audit(1604160574.292: | ||
+ | nano / | ||
+ | lxc.apparmor.profile = unconfined | ||
+ | |||
+ | ===== Réglages lxc-net vs bind9 named sur ubuntu 18.04 après update ===== | ||
+ | Si | ||
+ | lxc-net[17399]: | ||
+ | ça a l'air d' | ||
+ | nano / | ||
+ | Ajouter dans le fichier : | ||
+ | < | ||
+ | allow-transfer { | ||
+ | ... | ||
+ | ... | ||
+ | // lxc-container | ||
+ | 10.0.5.0/24 | ||
+ | }; | ||
+ | |||
+ | </ | ||
+ | Ensuite : | ||
+ | sudo systemctl restart bind9 | ||
+ | sudo systemctl restart lxc-net.service | ||
+ | Pour debug | ||
+ | lxc-start musique --logfile / | ||
+ | |||
+ | * cf https:// | ||
+ | Test occupation port | ||
+ | lsof -i | ||
+ | | ||
+ | ===== Installation du 12 mars 2022 mars ===== | ||
+ | ==== Faire un backup | ||
+ | |||
+ | https:// | ||
+ | mkdir / | ||
+ | sudo -u postgres pg_dumpall | gzip -c > airtime-backup.gz | ||
+ | tar -zcvpf airtime-backup-imported-atelier12032022.tgz / | ||
+ | tar -zcvpf airtime-etc-atelier12032022.tgz / | ||
+ | tar -zcvpf airtime-all-musique-12032022.tgz / | ||
+ | |||
+ | ==== Sur le host ==== | ||
+ | a2ensite musique.radiocampus.org.conf musique.radiocampus.org-le-ssl.conf radio.radiocampus.org.conf radio.radiocampus.org-le-ssl.conf | ||
+ | a2enmod proxy proxy_http proxy_wstunnel ssl http2 rewrite headers | ||
+ | systemctl restart apache2 | ||
+ | |||
+ | | ||
+ | ==== Dans le container en tant que root ==== | ||
+ | Installation à partir du dépôt git, la communauté Libretime a fait des paquets debian et ubuntu mais ils ne marchent pas avec la debian 11 et ubuntu 20.04, donc git ... https:// | ||
+ | |||
+ | apt install nano htop nload python3 git curl wget nmap net-tools locate | ||
+ | adduser lxcrunner | ||
+ | cd / | ||
+ | git clone https:// | ||
+ | cd libretime | ||
+ | ./install -fiap | ||
+ | Libretime installé ! | ||
+ | sudo systemctl start libretime-analyzer | ||
+ | sudo systemctl start libretime-api | ||
+ | sudo systemctl start libretime-celery | ||
+ | sudo systemctl start libretime-liquidsoap | ||
+ | sudo systemctl start libretime-playout | ||
+ | Utilisation d'un serveur icecast externe | ||
+ | apt remove --purge icecast2 | ||
+ | |||
+ | ==== Restaurer le backup ==== | ||
+ | tar -xpvf airtime-backup-imported-musique12032022.tgz | ||
+ | mv srv/ | ||
+ | gunzip airtime-db-backup-12032022.gz | ||
+ | sudo -u postgres dropdb airtime | ||
+ | sudo -u postgres psql -f airtime-backup-atelier12032022 | ||
+ | | ||
+ | apt remove --purge icecast2 | ||
====== Ressources ====== | ====== Ressources ====== | ||
- | * LXC container | + | * Site du [[https:// |
+ | * LXC container unpriviledged https://blog.warmwolf.com/ | ||
* Créer un répertoire partagé entre les containers https:// | * Créer un répertoire partagé entre les containers https:// | ||
+ | * Documentation éparse liquidsoap libretime et + https:// | ||
+ | |||
+ | |||
+ | {{tag>bj linux lxc libretime}} |
installer_libretime_un_container_lxc_privileges.txt · Dernière modification : 2022/03/26 18:17 de Benjamin Labomedia