Compare commits

...

12 Commits

Author SHA1 Message Date
1702f54da2 paquets 2025-07-28 17:13:42 +02:00
85dbf633ea Merge branch 'master' of ssh://git.kaz.bzh:2202/KAZ/kaz-vagrant 2025-07-26 19:50:15 +02:00
ae19acc03e password accepté par MM 2025-07-26 18:37:40 +02:00
nom
e70caa8b46 forme 2025-07-25 18:09:34 +02:00
nom
e8a4ef7c2f prévenir sur version VB et vagrant 2025-07-25 18:08:41 +02:00
f2543879e9 Merge branch 'master' of ssh://git.kaz.bzh:2202/KAZ/kaz-vagrant 2025-07-25 16:51:22 +02:00
62b484dc01 fix mattermost 2025-07-25 16:50:01 +02:00
nom
ffcd256175 explication erreur: provider ko 2025-07-25 14:45:22 +02:00
3da2f37938 doc et fix 2025-07-25 08:43:38 +02:00
ef25716679 paquets python 2025-07-24 21:58:14 +02:00
7cb69d1880 config sshd 2025-07-24 17:17:05 +02:00
f907a5c422 fix vm 2025-07-17 17:56:33 +02:00
10 changed files with 68 additions and 34 deletions

View File

@@ -1,6 +1,6 @@
# kaz-vagrant
[Kaz](https://kaz.bzh/) est un CHATONS du Morbihan. Nous proposons ici un moyen de le répliquer dans une VM. Il y a des éléments de configuration à définir avant d'initialiser ce simulateur.
[Kaz](https://kaz.bzh/) est un CHATONS du Morbihan. Nous proposons ici un moyen de le répliquer dans une VM.
Le principe est de faire fonctionner un simulateur de notre CHATONS dans une VirtualBox pour mettre au point nos différents services.
Nous utilisons :
@@ -10,7 +10,7 @@ Nous utilisons :
* LXC pour faire tourner ces services dans des conteneurs distincts (ie, kaz-prod est un conteneur LXC)
* Docker pour chaque service de notre serveur
À la fin, nous obtenons une maquette d'un petit internet simulé, avec du DNS, des mails tiers, et nos serveurs hoster-a-kaz1 et hoster-b-kaz2 dans un coin.
À la fin, nous obtenons une maquette d'un petit internet simulé, avec du DNS, des mails tiers, et nos serveurs hoster-a-kaz1 (principal) et hoster-b-kaz2 (secondaire) dans un coin.
![topologie](/doc/images/topologie.png)
@@ -19,6 +19,11 @@ Nous utilisons :
Vous avez besoin de [vagrant](https://www.vagrantup.com/), [VirtualBox](https://www.virtualbox.org/) et éventuellement git.
Veillez à avoir des versions de vagrant et VB compatibles. Par exemple, une
version trop récente de VB empêche d'utiliser le vagrant du repo debian.
* VirtualBox: 7.0.26 (https://www.virtualbox.org/wiki/Download_Old_Builds_7_0)
* Vagrant: 2.3.7 (repo debian)
## Installation
@@ -30,6 +35,7 @@ cd kaz-vagrant/
```
* (Optionnel) Ajustez éventuellement la mémoire et les cpus utilisés dans Vagrantfile (par défaut 4GB et 2 vCPUs)
* Pour créer tout l'univers Kaz il faut se placer dans le répertoire et lancer la commande :
```bash
vagrant up
@@ -47,7 +53,7 @@ Les utilisateurs créés sont
Se connecter en root/root
Lors du démarrage de la VM, il faut lancer SNSTER :
Lors du démarrage de la VM, il faut lancer SNSTER (normalement c'est automatique ?) :
```bash
cd /root/snster-kaz
snster start
@@ -65,18 +71,15 @@ Vous pouvez alors (toutes les commandes snster doivent être exécutées dans `/
* `https://www.kaz.sns`, le Kaz interne à la VM
* `https://listes.kaz.sns`, le sympa interne à la VM
* `https://pad2.kaz.sns`, le pad sur kaz2
* `https://www.kaz.bzh`, le vrai Kaz
* `https://www.kaz.bzh`, le vrai Kaz (.bzh)
* Ouvrir claws-mail et retrouver les comptes mails configurés :
* `contact1@kaz.sns` à `contact4@kaz.sns`, hébergés sur le kaz-prod de la VM
* `email@isp-a.sns`, hébergé dans le conteneur LXC isp-a-infra
* Travailler sur hoster-a-kaz1 : `snster attach hoster-a-kaz1`
* Afficher un plan de réseau : `snster print`
* Le système de fichiers de hoster-a-kaz1 est accessible directement dans la VM:
* `/kaz1-prod/` [VM] correspond à `/` [hoster-a-kaz1]
* `/kaz` [VM] correspond à `/kaz` [hoster-a-kaz1]
* Il est probablement pratique d'installer son environnement de développement sur la VM, avec ses clés SSH et son éditeur favori.
Dans Vagrantfile, existent des répertoires partagés entre le host et le VM mais pour qu'ils soient visibles depuis la VM, il faut démarrer la VM non pas avec VirtualBox mais avec Vagrant up.
* Les systèmes de fichiers de hoster-a-kaz1 / hoster-b-kaz2 sont accessibles directement dans la VM :
* `/kaz1/` [VM] correspond à `/` [hoster-a-kaz1]
* `/kaz2/` [VM] correspond à `/` [hoster-b-kaz2]
Il y a un aperçu de l'état des services avec l'url https://kaz.sns/status/allServices.html
@@ -90,11 +93,11 @@ Vous pouvez également démarrer firefox avec les URL suivantes:
* https://tableur.kaz.sns
* https://pad.kaz.sns
* https://depot.kaz.sns
* https://agora.kaz.sns/login (compte contact1@kaz.local créé, mot de passe toto)
* https://cloud.kaz.sns/login (compte contact1@kaz.local créé, mot de passe totototototototo1234 )
* https://agora.kaz.sns/login (compte contact1@kaz.local créé, mot de passe T1totototo!)
* https://cloud.kaz.sns/login (compte contact1@kaz.local créé, mot de passe T1totototo!)
* https://sondage.kaz.sns
Il vous faudra accepter les éventuelles alertes de sécurité pour certificat absent (web et messagerie)
Il vous faudra accepter les éventuelles alertes de sécurité pour certificat absent (web et messagerie) (normalement il n'y en a plus ?)
## Mise au point
@@ -103,12 +106,41 @@ Pour réinstaller Kaz sur kaz1 (avec suppression de /kaz, des volumes dockers et
snster attach hoster-a-kaz1 -x "/root/kaz.sh"
```
Pour reconstruire le conteneur kaz1 complètement, depuis la VM :
```bash
snster destroy hoster-a-kaz1
snster create
```
Pour détruire la VM et recommencer, depuis l'hôte :
```bash
vagrant destroy
vagrant up
```
## Développement de Kaz avec la VM
La VM peut être utilisée pour développer Kaz. Il existe différentes façons, chacun ses goûts, voici une possibilité. Cette méthode permet de développer dans son éditeur classique, sur son PC hôte, et d'avoir un SSH vers le conteneur Kaz.
### SSH vers le conteneur Kaz
Depuis l'hôte, dans le dossier `vagrant`, pour obtenir un shell sur le conteneur Kaz :
```bash
`vagrant ssh` # ssh vers la VM
`sudo su` # passage root
`cd /root/snster-kaz`
`snster attach hoster-a-kaz1`
```
### Édition depuis l'hôte
On va faire du sshfs pour voir les dossiers de la VM depuis l'hôte. Par exemple pour monter la racine du conteneur `hoster-a-kaz1` dans le dossier `vm` du dossier courant de l'hôte (rappel, le dossier `/kaz1` sur la VM est un lien symbolique vers le filesystem du conteneur `hoster-a-kaz1`) :
```bash
sshfs -p 2222 root@localhost:/kaz1/ vm/
```
Ainsi, on peut éditer sur son PC et exécuter dans un terminal hors VM.
Accélération de la construction avec un proxy cache local
---------------------------------------------------------

5
Vagrantfile vendored
View File

@@ -20,11 +20,6 @@ Vagrant.configure("2") do |config|
end
#permet d'avoir un répertoire partagé entre la VM et le host
config.vm.synced_folder "/tmp/", "/tmp_host"
config.vm.synced_folder "files/", "/root/kaz-vagrant"
config.vm.provision "shell" do |s|
s.inline = "/vagrant/files/vm-provision.sh"
s.env = {"KAZGUARD" => "true", "HOSTLANG" => ENV['LANG'], "NOKAZ" => ENV['NOKAZ'], "KAZBRANCH" => ENV['KAZBRANCH']}

View File

@@ -19,7 +19,7 @@
# --
# NOM ; PRENOM ; EMAIL_SOUHAITE ; EMAIL_SECOURS ; ORGA ; ADMIN_ORGA ; NC_ORGA ; GARRADIN_ORGA ; WP_ORGA ; AGORA_ORGA ; WIKI_ORGA ; NC_BASE ; GROUPE_NC_BASE ; EQUIPE_AGORA ; QUOTA
Hello1;Contact1;contact1@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;1;tototototo
Hello2;Contact2;contact2@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;1;tototototo
Hello3;Contact3;contact3@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;10;tototototo
Hello4;Contact4;contact4@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;10;tototototo
Hello1;Contact1;contact1@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;1;T1totototo!
Hello2;Contact2;contact2@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;1;T1totototo!
Hello3;Contact3;contact3@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;10;T1totototo!
Hello4;Contact4;contact4@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;10;T1totototo!

View File

@@ -4,7 +4,7 @@ dokuwiki
garradin
gitea
jirafeau
#mattermost
mattermost
roundcube
#keycloak
mobilizon

View File

@@ -68,7 +68,7 @@ traefikHost=dashboard
########################################
# ports internes
matterPort=8000
matterPort=8065
########################################
# noms des containers

View File

@@ -36,6 +36,10 @@ export DebugLog="${OUTPUT_DIR}/log/log-kaz-$(date +%y-%m-%d-%T)-"
echo -e "\n #### secretGen\n"
/kaz/bin/secretGen.sh
# echo "0 2 * * * root /kaz/bin/getX509Certificates.sh" >> /etc/cron.d/kaz-certs
#ln -sf /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/ssl/certs/mail.pem
#ln -sf /etc/ssl/private/ssl-cert-snakeoil.key /etc/ssl/private/mail.key
echo -e "\n #### install\n"
/kaz/bin/install.sh

View File

@@ -23,6 +23,7 @@ dashboard IN CNAME kaz1
dashboard2 IN CNAME kaz2
sondage IN CNAME kaz1
webmail IN CNAME kaz1
roundcube IN CNAME kaz1
garradin IN CNAME kaz1
wiki IN CNAME kaz1
git IN CNAME kaz1

View File

@@ -22,7 +22,7 @@ DEBIAN_FRONTEND=noninteractive apt-get autoremove -y
# KAZ specific things
#installation de docker, docker-compose et on y fourre le user debian dans le groupe idoine
DEBIAN_FRONTEND=noninteractive apt-get install -y dos2unix jq ldapvi argon2 docker.io docker-clean git apg curl sudo unzip rsync btrfs-progs ldap-utils unaccent # fuse-overlayfs
DEBIAN_FRONTEND=noninteractive apt-get install -y apache2-utils python3-ldap python3-email-validator python3-passlib python3-jinja2 dos2unix jq ldapvi argon2 docker.io docker-clean git apg curl sudo unzip rsync btrfs-progs ldap-utils unaccent # fuse-overlayfs
usermod -G docker debian
# docker-compose
@@ -65,6 +65,10 @@ cp -ar tls/root_ca.crt /usr/local/share/ca-certificates/
mkdir -p /etc/letsencrypt/live/kaz.sns
cp tls/wildcard.crt /etc/letsencrypt/live/kaz.sns/fullchain.pem
cp tls/wildcard.key /etc/letsencrypt/live/kaz.sns/privkey.pem
cp tls/wildcard.crt /etc/ssl/certs/mail.pem
cp tls/wildcard.key /etc/ssl/private/mail.key
cp tls/wildcard.crt /etc/ssl/certs/listes.pem
cp tls/wildcard.key /etc/ssl/private/listes.key
# On sauve le proxy APT
proxy=$(/sbin/ip route | awk '/default/ { print $3 }' | head -1)
@@ -81,7 +85,7 @@ echo "{
{
\"httpProxy\": \"http://$proxy:3142\",
\"httpsProxy\": \"http://$proxy:3142\",
\"noProxy\": \"*.sns,127.0.0.1,localhost,127.0.0.0/8,100.64.0.0/10,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,agora\"
\"noProxy\": \"app,*.sns,127.0.0.1,localhost,127.0.0.0/8,100.64.0.0/10,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,agora\"
}
}
}" > /root/.docker/config.json

2
files/sshd.conf Normal file
View File

@@ -0,0 +1,2 @@
PasswordAuthentication yes
PermitRootLogin yes

View File

@@ -87,11 +87,8 @@ http_port 3142" >> /etc/squid/squid.conf
#faut virer exim, inutile
DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y exim4-base exim4-config exim4-daemon-light
#login ssh avec mot de passe
sed -i "s/PasswordAuthentication no/PasswordAuthentication yes/" /etc/ssh/sshd_config
if ! grep -q "PasswordAuthentication yes" /etc/ssh/sshd_config 2>/dev/null; then
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
fi
# config sshd
cp "${VAGRANT_SRC_DIR}/sshd.conf" /etc/ssh/sshd_config.d/kaz.conf
# autorisation du routing et augmentation inotify
if ! grep -q "net.ipv4.ip_forward" /etc/sysctl.conf 2>/dev/null; then
@@ -200,9 +197,8 @@ auth:
# On lie le filesystem de kaz-prod dans le /kaz de la VM pour le dév
ln -s /var/lib/lxc/kaz-hoster-a-kaz1/rootfs/ /kaz1-prod
ln -s /var/lib/lxc/kaz-hoster-b-kaz2/rootfs/ /kaz2-prod
ln -s /kaz-prod1/kaz /kaz
ln -s /var/lib/lxc/kaz-hoster-a-kaz1/rootfs/ /kaz1
ln -s /var/lib/lxc/kaz-hoster-b-kaz2/rootfs/ /kaz2
# On met le KAZGUARD pour la mise au point
echo "export KAZGUARD='true'" >> /root/.bashrc