====== Le site de Caliban dans un container LXC ===== Je gère l'hébergement du site de l'[[https://caliban.be|Association Caliban Belgique]]. Jusqu'ici, il était hébergé chez un petit VPS de chez OVH mais pour rationaliser un peu les coûts (et me forcer à utiliser [[lxc]]), j'ai décidé de le mettre dans un conteneur LXC pour le migrer sur un autre serveur. # lxc-create -t download -n caliban -- --dist debian --release buster --arch amd64 # lxc-ls -f NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED caliban STOPPED 0 - - - false On modifie la configuration pour que le conteneur ait une IP fixe : # vim /var/lib/lxc/caliban/config # cat /var/lib/lxc/caliban/config # Template used to create this container: /usr/share/lxc/templates/lxc-download # Parameters passed to the template: --dist debian --release buster --arch amd64 # Template script checksum (SHA-1): 273c51343604eb85f7e294c8da0a5eb769d648f3 # For additional config options, please look at lxc.container.conf(5) # Uncomment the following line to support nesting containers: #lxc.include = /usr/share/lxc/config/nesting.conf # (Be aware this has security implications) # Distribution configuration lxc.include = /usr/share/lxc/config/common.conf lxc.arch = linux64 # Container specific configuration lxc.rootfs.path = dir:/var/lib/lxc/caliban/rootfs lxc.uts.name = caliban # Network configuration lxc.net.0.type = veth lxc.net.0.link = lxcbr0 lxc.net.0.flags = up lxc.net.0.hwaddr = 00:16:3e:22:1a:9e Plus qu'à démarrer, se connecter au conteneur et essayer : # lxc-start caliban # lxc-attach -n caliban root@caliban:/# Création d'un utilisateur : root@caliban:/# adduser caliban Locales : root@caliban:/# dpkg-reconfigure locales ===== Programmes à installer ===== ==== Base ==== root@caliban:/home/caliban# apt install wget ==== MariaDB ==== Prérequis : Faire un [[https://simonlefort.be/wiki/doku.php?id=mysql#faire_des_dump|dump]] de la base de données sur l'ancien serveur et la copier sur le nouveau avec [[scp]]. root@caliban:/home/caliban# apt install mariadb-server root@caliban:/home/caliban# mysql -u root -p (...) MariaDB [(none)]> CREATE DATABASE wordpress; Query OK, 1 row affected (0.001 sec) MariaDB [(none)]> CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'xxxxxxxxxxxxxxxxxxxxxxxxx'; Query OK, 0 rows affected (0.002 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY 'xxxxxxxxxxxxxxxxxxxxxxxxx'; Query OK, 0 rows affected (0.002 sec) MariaDB [(none)]> quit; Bye root@caliban:/home/caliban# mysql -u root wordpress < wordpress.sql ==== Installation de wordpress ==== root@caliban:/home/caliban# wget https://wordpress.org/latest.tar.gz root@caliban:/home/caliban# tar -xzvf latest.tar.gz root@caliban:/home/caliban# mkdir /var/www/wordpress root@caliban:/home/caliban# cp -r wordpress/* /var/www/wordpress/ ==== Nginx ==== Installation du serveur web [[nginx]] : root@caliban:/home/caliban# apt install nginx Installation de PHP : root@caliban:/etc/nginx# apt install php7.3-fpm php7.3-mysql php-fpm ==== TLS ==== Pour avoir un beau petit cadenas vert sur le site (et sécuriser tout le trafic!), on installe les certificats qui-vont-bien sur le host. (Pas sur le conteneur comme ça, on pourra isoler les services de Caliban tout en gardant un point central pour tous les certificats.) On installe [[acme.sh]] et puis : $ acme.sh --issue -d caliban.be -d '*.caliban.be' --dns dns_ovh --keylength ec-384 $ sudo mkdir /etc/ssl/caliban.be $ sudo chown -R simon:simon /etc/ssl/caliban.be/ $ sudo visudo (...) %simon ALL= NOPASSWD: /bin/systemctl start nginx %simon ALL= NOPASSWD: /bin/systemctl stop nginx %simon ALL= NOPASSWD: /bin/systemctl restart nginx %simon ALL= NOPASSWD: /bin/systemctl reload nginx (...) $ acme.sh --install-cert -d caliban.be --ecc --keypath /etc/ssl/caliban.be/privkey.pem --fullchainpath /etc/ssl/caliban.be/fullchain.pem --reloadcmd "sudo systemctl reload nginx" ===== Redirection pour SSH ===== * Idée : Faire une redirection avec [[redir]] pour pouvoir se connecter au container LXC directement et fournir un accès aux autres membres de Caliban. * Idée : Test de [[https://getgrav.org/|Grav]] : [[Test de Grav pour le site de Caliban]]