Outils pour utilisateurs

Outils du site


yunohost_un_container_lxc

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
yunohost_un_container_lxc [2020/11/21 16:19] – créée Benjamin Labomediayunohost_un_container_lxc [2023/02/19 23:09] (Version actuelle) – [Installation de Cryptpad via Yunohost] Benjamin Labomedia
Ligne 1: Ligne 1:
 ====== Yunohost dans un container LXC ====== ====== Yunohost dans un container LXC ======
  
-===== Configurations spéciales à prendre en compte : =====+===== Installation du container LXC ===== 
 +Créer le container avec comme nom ynh 
 +  lxc-create -n ynh -t download -- -d debian -r buster -a amd64 
 +La config du container 
 +  nano /var/lib/lxc/ynh/config 
 +<file bash config> 
 +# Template used to create this container/usr/share/lxc/templates/lxc-download 
 +# Parameters passed to the template: -d debian -r buster -a amd64 
 +# Distribution configuration 
 +lxc.include /usr/share/lxc/config/common.conf 
 +lxc.arch linux64 
 +# Container specific configuration 
 +lxc.apparmor.profile generated 
 +lxc.apparmor.allow_nesting 
 +lxc.rootfs.path dir:/var/lib/lxc/ynh/rootfs 
 +lxc.uts.name = ynh 
 +# Network configuration 
 +lxc.net.0.type = veth 
 +lxc.net.0.link = lxcbr0 
 +lxc.net.0.flags = up 
 +lxc.net.0.hwaddr = 00:16:3e:dd:91:8b 
 +</file> 
 +Démarrer le container 
 +  lxc-start ynh 
 +Vérifier et lister les container 
 +  lxc-ls -f 
 +<code> 
 +NAME STATE   AUTOSTART GROUPS IPV4       IPV6 UNPRIVILEGED  
 +ynh  RUNNING 0              10.0.3.243 -    false 
 +</code> 
 +Entrer dans le container 
 +  lxc-attach ynh 
 +  root@ynh:~# 
 +Taper exit pour en sortir
  
-==== Dans le host ====+===== Configurations complémentaires de l'hôte à prendre en compte : ===== 
 + 
 +==== Config LXC ====
 Faire marcher le système de gestion du temps, ajouter une config pour les containers LXC : Faire marcher le système de gestion du temps, ajouter une config pour les containers LXC :
 Yes, every option you place in files you include in /usr/share/lxc/config/common.conf.d/ will be automatically included. So if you do something like: Yes, every option you place in files you include in /usr/share/lxc/config/common.conf.d/ will be automatically included. So if you do something like:
Ligne 11: Ligne 46:
   lxc.cap.drop = mac_admin mac_override sys_module sys_rawio   lxc.cap.drop = mac_admin mac_override sys_module sys_rawio
 Redémarrer le container Redémarrer le container
 +  lxc-stop ynh
 +  lxc-start ynh
 +
   * https://github.com/lxc/lxc/issues/2108   * https://github.com/lxc/lxc/issues/2108
 +
 +Voir également les fichiers de config génériques de lxc 
 +  nano /etc/default/lxc
 +  nano /etc/default/lxc-net
 +
 +
 +==== Apache vhost proxy vers le container ====
 +Apache va servir de proxy pour renvoyer le traffic au container yunohost, une fois apache installé, on lui rajoute des bouts
 +  a2enmod expires headers ssl proxy proxy_http proxy_html proxy_wstunnel
 +Installer un certificat https avec certbot et un vhost type
 +
 +On constitue ensuite un vhost proxy pour le https, le http redirige systématiquement sur ce vhost, [[https://github.com/xwiki-labs/cryptpad/wiki/Apache|voir cette page à ce sujet à propos de cryptpad]]
 +  nano /etc/apache2/sites-available/ynh.futuretic.fr-le-ssl.conf 
 +<file php ynh.futuretic.fr-le-ssl.conf>
 +<IfModule mod_ssl.c>
 +
 +        <VirtualHost *:443>
 +
 +                ServerAdmin     tech@futuretic.fr
 +                ServerName      ynh.futuretic.fr
 +
 +                SSLEngine on
 +                SSLProxyEngine On
 + # ajout suite a default ssl handshake et suite à AH01097: pass request body failed
 + SSLProxyVerify none
 + SSLProxyCheckPeerCN off
 + SSLProxyCheckPeerName off
 + SSLProxyCheckPeerExpire off
 +
 +                SSLCertificateFile /etc/letsencrypt/live/ynh.futuretic.fr/fullchain.pem
 +                SSLCertificateKeyFile /etc/letsencrypt/live/ynh.futuretic.fr/privkey.pem
 +                Include /etc/letsencrypt/options-ssl-apache.conf
 +
 + ProxyPreserveHost       On
 +         ProxyRequests Off
 +
 +                # HSTS
 +                <IfModule mod_headers.c>
 +                        Header always set Strict-Transport-Security "max-age=15768000"
 +                </IfModule>
 +
 + # proxy pour cetificat
 + DocumentRoot /var/www/html
 + ProxyPass /.well-known !
 +
 +
 + ProxyPass / https://ynh.futuretic.fr/
 + ProxyPassReverse / https://ynh.futuretic.fr/
 + #ProxyPass "/" "https://10.0.3.243/"
 + #ProxyPassReverse "/" "https://10.0.3.243/"
 +
 + # For WebSockets
 + RewriteEngine on
 + RewriteCond %{HTTP:Connection} Upgrade [NC]
 + RewriteCond %{HTTP:Upgrade} websocket [NC]
 + RewriteRule /(.*) wss://ynh.futuretic.fr/$1  [P,L]
 +
 + RequestHeader set X-Forwarded-Proto “https”
 + RequestHeader set X-Forwarded-Port “443”
 + #SetEnv proxy-sendchunks 1
 +
 + <Proxy *>
 + Order deny,allow
 + Allow from all
 + </Proxy>
 +
 +                ErrorLog /var/log/apache2/ynh.futuretic.fr.error.log
 +                LogLevel error
 +                CustomLog /var/log/apache2/ynh.futuretic.fr.access.log vhost_combined
 +
 +        </VirtualHost>
 +
 +</IfModule>
 +</file> 
 +
 +A noter le LogLevel à mettre sur debug à la place de error si debug voir [[https://documentation.bloomreach.com/14/library/deployment/configuring/configure-apache-httpd-as-reverse-proxy-for-hippo.html|cette page pour paramètres proxy
 +]]
 +**Ajouter l'adresse à votre fichier hosts**
 +  nano /etc/hosts
 +  10.0.3.243 ynh.futuretic.fr
 +
 +**Il faut aussi donner des règles pour transférer les websockets**, sinon yunohost-api ne reçoit pas les messages par ce bias et cryptpad n'est pas content non plus, installer aussi le module headers pour apache
 +  sudo a2enmod headers
 +  sudo systemctl restart apache2
 +  
 +**Il est nécessaire d'ajouter des paramètres pour que les [[https://serverfault.com/questions/1017710/ah00898-error-during-ssl-handshake-with-remote-server-localhost|poignées de main ssl]] se passent bien**
 + SSLProxyVerify none
 + SSLProxyCheckPeerCN off
 + SSLProxyCheckPeerName off
 + SSLProxyCheckPeerExpire off
 +  
 +Pour débug :
 +   coté hôte : tail -f /var/log/apache2/ynh.futuretic.fr.error.log
 +   coté ynh lxc :  tail -f /var/log/yunohost/yunohost-api.log
 +   
 +Et le debuggeur du navigateur
 +==== Créer un nouveau certificat pour un sous domaine proxy vers yunohost ====
 +  nano /etc/apache2/sites-available/000-ynh2ssl.futuretic.fr.conf 
 +  cd /etc/apache2/sites-available/
 +  a2ensite 000-ynh2ssl.futuretic.fr.conf 
 +  systemctl reload apache2
 +  certbot certonly --http-01-address 135.181.129.123 -d pass.futuretic.fr
 +  a2dissite 000-ynh2ssl.futuretic.fr.conf 
 +  cp cpad.futuretic.fr.conf pass.futuretic.fr.conf
 +  cp cpad.futuretic.fr-le-ssl.conf pass.futuretic.fr-le-ssl.conf
 + 3127  nano pass.futuretic..fr.conf 
 +Remplacer cpad par pass (dans nano ctrl \ )
 +  nano pass.futuretic.fr.conf
 +  nano pass.futuretic.fr-le-ssl.conf 
 +  a2ensite pass.futuretic.fr-le-ssl.conf pass.futuretic.fr.conf
 +Ajouter à l'ip du container le sous domaine pass.futuretic.fr dans le fichier host
 +  nano /etc/hosts
 +  systemctl reload apache2
 +
 +
 +===== Installation de yunohost  dans le container LXC =====
 +**Entrer dans le container**
 +  lxc-attach ynh
 +  root@ynh:~#
 +**Installer les outils de base**
 +  apt update
 +  apt upgrade
 +  apt install curl git htop locate netcat nano nload iotop mcrypt rsync sudo unzip
 +**Lancer l'install de Yunohost**
 +  curl https://install.yunohost.org | bash
 +Suivre la procédure de post install en définissant le domaine et le password admin
 +
 +**Modif de sécu pou faire marcher le tout**
 +  nano /etc/nginx/conf.d/security.conf.inc
 +<code php>
 +# Follows the Web Security Directives from the Mozilla Dev Lab and the Mozilla $
 +# https://wiki.mozilla.org/Security/Guidelines/Web_Security
 +# https://observatory.mozilla.org/
 +#more_set_headers "Content-Security-Policy : upgrade-insecure-requests";
 +#more_set_headers "Content-Security-Policy-Report-Only : default-src https: dat$
 +#more_set_headers "X-Content-Type-Options : nosniff";
 +more_set_headers "X-XSS-Protection : 1; mode=block";
 +more_set_headers "X-Download-Options : noopen";
 +more_set_headers "X-Permitted-Cross-Domain-Policies : none";
 +more_set_headers "X-Frame-Options : SAMEORIGIN";
 +</code>
 +
 +Ci-dessus 3 lignes commentées, à voir coté sécu ce que prend en charge le apache du host et ce qui revient au nginx du container ("interférences" dans la transmission des headers et du ssl du fait de la containeurisation à maitriser)
 +
 +**Créer un premier utilisateur via le back office de yunohost** 
 +
 +==== Installation de Cryptpad via Yunohost ====
 +L'[[https://github.com/YunoHost-Apps/cryptpad_ynh|application Yunohost]] pour Cryptpad - Zero Knowledge realtime collaborative editor
 +
 +Il faut installer Cryptpad sur un (sous).domaine dédié (cpad.futuretic.fr par exemple) et depuis la version 5.2.1, il convient de créer préalablement un sous domaine pour faire la mise à jour (sandbox-cpad.futuretic.fr par exemple). Il faut alors créer le vhost dans le apache en front qui agit comme proxy, générer les certificats sur le host, créer le domaine dans yunohost situé dans le container sans avoir à créer les certificats réels
 +
 +
 +**Pour tuner la config, ça se passe là :**
 +  nano /var/www/cryptpad/config/config.js
 +<code js>
 + *
 +  CUSTOMIZE AND UNCOMMENT THIS FOR PRODUCTION INSTALLATIONS.
 + */
 +    // httpSafeOrigin: "https://some-other-domain.xyz",
 +
 +//httpSafeOrigin: "cpad.futuretic.fr",
 +
 +...
 +
 + / CryptPad can log activity to stdout
 +      This may be useful for debugging
 +     */
 +    logToStdout: false,
 +
 +
 +/*  Log levels
 +     * silly, verbose, debug, feedback, info, warn, error
 +     * This will affect both logging to the console and the disk.
 +     */
 +    logLevel: 'error',
 +...
 +</code>
 +
 +**Redémarrer le service**
 +  systemctl restart cryptpad
 +  systemctl status cryptpad
 +  journalctl -u cryptpad
 +
 +
 +==== Installation et utilisation de Borg Backup pour faire des sauvegardes entre 2 Yunohost ====
 +  * Documentation https://github.com/YunoHost-Apps/borg_ynh
 +Coté serveur A à sauvegarder, debug
 +  systemctl status borg.service
 +  journalctl -feu borg.service
 +Configuration du port et +
 +  nano /etc/yunohost/apps/borg/settings.yml 
 +
 +==== Export de tous les Pads depuis un etherpad vieillissant dans yunohost pour archivage au format markdown ====
 +Créer un répertoire de backup
 +  mkdir etherpadbackup
 +Faire une sauvegarde de la db
 +  mysqldump -u etherpad_mypads -p etherpad_mypads > /home/user/etherpadbackup/etherpaddb10102021.sql
 +Lister tous les pads de l'instance et mettre leur nom dans un fichier texte
 +  mysql -u etherpad_mypads -p etherpad_mypads -e 'select store.key from store' | grep -Eo '^pad:[^:]+'    | sed -e 's/pad://'    | sort    | uniq -c    | sort -rn    | awk '{if ($1!="2") {print $2 }}' > /home/user/etherpadbackup/pad_names.txt
 +Faire un script bash qui va créer un export au format etherpad et mardown de tous ces pads et les mettre dans un répertoire respectif
 +<code lang=bash>
 +#!/bin/sh
 +
 +# The base url to where etherpad is hosted
 +ETHERPAD_SERVER="https://pad.monserveur.org"
 +
 +while IFS= read -r line; do
 +  printf '%s\n' "$line"
 +  echo "$ETHERPAD_SERVER/p/$line/export/etherpad /home/user/etherpadbackup/etherpad/$line.etherpad"
 +  curl "$ETHERPAD_SERVER/p/$line/export/etherpad" >"/home/user/etherpadbackup/etherpad/$line.etherpad"
 +  curl "$ETHERPAD_SERVER/p/$line/export/markdown" >"/home/user/etherpadbackup/md/$line.md"
 +done < $1 
 +
 +</code>
 +Lancer le script en passant le nom de fichier contenant la liste des pads en argument :
 +  sh export_etherpad.sh pad_names.txt
 +Compresser les dossiers et les transférer en scp 
 +  tar -czvf etherpadmonserveurbackupmd.tar.gz /home/user/etherpadbackup/
 +Les fichiers au format markdown gardent +/- leur formattage quand ouvert dans l'éditeur de Nextcloud :)
 +
 +==== Installation de Opensondage dans Yunohost ====
 +Via la mécanique habituelle, petite subtilité : dans l'interface d'admin > Utilisateurs > il faut ajouter aux visiteurs anonymes la permission **" OpenSondage - Calage de date et vote (admin) "**
 +
 +Sinon à la fin de la création du sondage, les utilisateurs non loggués ne voient pas la page qui résume les liens et accès à l'admin du sondage (nénamoins envoyés par mail)
 +
 +{{ ::opensondageutilisateuradmin.png |}}
 +
 +===== Migration de Yunohost 4 Debian 10 à Yunohost 11 et Debian 11 =====
 +Ça marche à priori tout seul, [[https://yunohost.org/fr/buster_bullseye_migration|voir cette page de documentation]]
 +
 +Dans le container ynh, taper :
 +  yunohost tools migrations migrate --debug
 +
 +{{tag>bj yunohost infrastructure futuretic linux etherpad codimd opensondage}}
 +  
yunohost_un_container_lxc.1605975587.txt.gz · Dernière modification : 2020/11/21 16:19 de Benjamin Labomedia