Je gère l'hébergement du site de l'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
root@caliban:/home/caliban# apt install wget
Prérequis : Faire un 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
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/
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
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"