Outils pour utilisateurs

Outils du site


yunohost_un_container_lxc

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

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
yunohost_un_container_lxc.txt · Dernière modification: 2020/11/26 11:46 de Benjamin Labomedia