====== 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]]