Ceci est une ancienne révision du document !
Table des matières
Yunohost dans un container LXC
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
- 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 = 1 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
Démarrer le container
lxc-start ynh
Vérifier et lister les container
lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED ynh RUNNING 0 - 10.0.3.243 - false
Entrer dans le container
lxc-attach ynh root@ynh:~#
Taper exit pour en sortir
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 : 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:
nano /usr/share/lxc/config/common.conf.d/01-sys-time.conf
y ajouter
lxc.cap.drop = lxc.cap.drop = mac_admin mac_override sys_module sys_rawio
Redémarrer le container
lxc-stop ynh lxc-start ynh
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
nano /etc/apache2/sites-available/ynh.futuretic.fr-le-ssl.conf
- ynh.futuretic.fr-le-ssl.conf
<IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin tech@futuretic.fr ServerName ynh.futuretic.fr SSLEngine on SSLProxyEngine On 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 ProxyPass / https://ynh.futuretic.fr/ ProxyPassReverse / https://ynh.futuretic.fr/ # 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>
A noter le LogLevel à mettre sur debug à la place de error si debug
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
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
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
# 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";
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'application Yunohost pour Cryptpad - Zero Knowledge realtime collaborative editor
Il faut installer Cryptpad sur un (sous).domaine dédié Pour tuner la config, ça se passe là :
nano /var/www/cryptpad/config/config.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', ...
Redémarrer le service
systemctl restart cryptpad systemctl status cryptpad journalctl -u cryptpad