2023-03-28 11:47:33 +00:00
|
|
|
|
# Playbooks Ansible de l’AFPy
|
2019-12-16 21:27:58 +00:00
|
|
|
|
|
|
|
|
|
On découpe nos *playbooks* Ansible par rôles :
|
|
|
|
|
|
|
|
|
|
- `pycon.yml`: Pour les pycon.fr
|
|
|
|
|
- `backup.yml`: Configure rsnapshot pour sauvegarder nos serveurs.
|
2019-12-18 19:20:22 +00:00
|
|
|
|
- ...
|
2019-12-16 21:27:58 +00:00
|
|
|
|
|
2022-10-05 14:57:38 +00:00
|
|
|
|
En partant de là, on peut utiliser les commandes suivantes :
|
2019-12-16 21:27:58 +00:00
|
|
|
|
|
2022-10-05 14:57:38 +00:00
|
|
|
|
Après avoir cloné ce repo, installé Ansible (dans un venv), installez
|
2019-12-17 10:57:23 +00:00
|
|
|
|
les roles nécessaires via :
|
2019-12-16 21:27:58 +00:00
|
|
|
|
|
2022-01-30 09:53:31 +00:00
|
|
|
|
- ansible-galaxy install julienpalard.nginx
|
2019-12-16 21:27:58 +00:00
|
|
|
|
|
2022-05-10 06:42:14 +00:00
|
|
|
|
Récupérez le secret dans [afpy/pass](https://github.com/AFPy/pass/):
|
|
|
|
|
|
|
|
|
|
git clone https://github.com/AFPy/pass/
|
|
|
|
|
PASSWORD_STORE_DIR=pass/infra pass Ansible-Vault > ~/.ansible-afpy-vault
|
|
|
|
|
|
2019-12-16 21:27:58 +00:00
|
|
|
|
Puis pour jouer les *playbooks* :
|
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
- Pour tout relancer : `ansible-parallel *.yml`
|
|
|
|
|
- Pour configurer les PyCons : `ansible-playbook pycons.yml`
|
2019-12-16 21:27:58 +00:00
|
|
|
|
|
2018-10-09 19:43:40 +00:00
|
|
|
|
|
2019-12-16 22:58:06 +00:00
|
|
|
|
## Faire, ne pas faire
|
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
Faire : Configurer les machines :
|
2022-10-05 14:57:38 +00:00
|
|
|
|
- `apt install`,
|
|
|
|
|
- fichiers de configuration,
|
|
|
|
|
- créer les utilisateurs,
|
2023-03-28 10:33:52 +00:00
|
|
|
|
- éventuellement un premier `git clone` pour que ça marche si c’est un site statique.
|
2019-12-16 22:58:06 +00:00
|
|
|
|
|
2022-10-05 14:57:38 +00:00
|
|
|
|
Ne pas faire :
|
2023-03-28 10:33:52 +00:00
|
|
|
|
- Deployer. En dehors de l’éventuel premier git clone,
|
|
|
|
|
c’est le rôle de la CI (Github Actions, ...), pas de nos playbooks.
|
2019-03-22 08:57:51 +00:00
|
|
|
|
|
2019-07-04 20:24:35 +00:00
|
|
|
|
|
2019-12-16 22:58:06 +00:00
|
|
|
|
# Servers
|
|
|
|
|
|
2021-11-17 16:31:32 +00:00
|
|
|
|
La distinction services/serveurs :
|
2018-12-20 22:54:21 +00:00
|
|
|
|
|
2023-03-28 11:47:33 +00:00
|
|
|
|
- Un serveur contient un nombre dans son nom :
|
|
|
|
|
- deb2.afpy.org,
|
2024-01-31 22:27:37 +00:00
|
|
|
|
- gitea1.afpy.org,
|
|
|
|
|
- woodpecker1.afpy.org,
|
2023-03-28 11:47:33 +00:00
|
|
|
|
- …
|
|
|
|
|
- Un service ne contient pas de chiffre dans son nom :
|
|
|
|
|
- www.afpy.org,
|
2024-01-31 22:27:37 +00:00
|
|
|
|
- git.afpy.org,
|
|
|
|
|
- woodpecker.afpy.org,
|
2023-03-28 11:47:33 +00:00
|
|
|
|
- …
|
2019-12-16 22:58:06 +00:00
|
|
|
|
|
2024-01-31 22:27:37 +00:00
|
|
|
|
Une machine peut contenir un ou plusieurs services (un s’il est
|
|
|
|
|
"gros", plusieurs s’ils sont « néglibeables » (comme un site
|
|
|
|
|
statique).
|
|
|
|
|
|
2019-12-16 22:58:06 +00:00
|
|
|
|
|
2021-11-17 16:31:32 +00:00
|
|
|
|
## deb2.afpy.org
|
2019-12-16 22:58:06 +00:00
|
|
|
|
|
2021-11-17 16:31:32 +00:00
|
|
|
|
♥ Machine sponsorisée par Gandi ♥
|
2019-12-16 22:58:06 +00:00
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
C’est un VPS `V-R4 2 CPUs · 4 GB RAM`.
|
2018-12-20 22:54:21 +00:00
|
|
|
|
|
2023-03-28 11:47:33 +00:00
|
|
|
|
Elle héberge surtout des sites statiques, mais pas que :
|
2018-12-21 11:32:09 +00:00
|
|
|
|
|
2023-03-28 11:47:33 +00:00
|
|
|
|
- https://www.afpy.org ([source](https://github.com/AFPy/site)).
|
|
|
|
|
- [https://\*.pycon.fr/\*](https://pycon.fr/) (que des sites statiuques).
|
|
|
|
|
- Alain le bot IRC du canal #afpy ([source](https://github.com/AFPy/alain)).
|
|
|
|
|
- La gate [IRC](https://afpy.org/irc)—[Discord](https://afpy.org/discord) (un [discord-irc-sync](https://github.com/Hackndo/discord-irc-sync)).
|
2021-11-17 16:31:32 +00:00
|
|
|
|
- https://dl.afpy.org: un *directory listing* nginx des vidéos de nos conférences.
|
2023-03-28 11:47:33 +00:00
|
|
|
|
- https://logs.afpy.org: Les logs du salon IRC #afpy ([source](https://github.com/AFPy/AfpyLogs/)).
|
2023-02-01 17:04:52 +00:00
|
|
|
|
- https://munin.afpy.org
|
2018-12-20 22:54:21 +00:00
|
|
|
|
|
|
|
|
|
|
2022-10-05 14:57:38 +00:00
|
|
|
|
## backup1.afpy.org
|
|
|
|
|
|
|
|
|
|
♥ Machine sponsorisée par Gandi ♥
|
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
C’est un « Gandi Cloud V5 » à Bissen au Luxembourg avec 512MB de RAM
|
2022-10-05 14:57:38 +00:00
|
|
|
|
et 512GB de disque, il sauvegarde (via rsnapshot) les autres machines
|
|
|
|
|
(voir `backup.yml`).
|
|
|
|
|
|
2024-01-04 12:57:12 +00:00
|
|
|
|
Dernière vérification de `backup1.afpy.org` le 4 janvier 2024 via :
|
2023-01-02 15:30:03 +00:00
|
|
|
|
|
|
|
|
|
ssh root@backup1.afpy.org sh check-afpy.sh
|
|
|
|
|
|
2024-01-04 12:57:12 +00:00
|
|
|
|
Dernière vérification de `silence` (chez Julien) le 4 janvier 2024 via :
|
2023-01-02 15:30:03 +00:00
|
|
|
|
|
|
|
|
|
ssh root@silence sh /srv/backups/check-afpy.sh
|
2022-10-05 14:57:38 +00:00
|
|
|
|
|
2023-04-04 07:32:02 +00:00
|
|
|
|
<details>
|
|
|
|
|
<summary>
|
|
|
|
|
|
|
|
|
|
Le script `check-afpy.sh`.
|
|
|
|
|
|
|
|
|
|
</summary>
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
|
|
BASE=/srv/backups/rsnapshot_afpy
|
|
|
|
|
|
2024-01-31 22:27:37 +00:00
|
|
|
|
for machine in deb git discuss
|
2023-04-04 07:32:02 +00:00
|
|
|
|
do
|
|
|
|
|
echo "# $machine.afpy.org"
|
|
|
|
|
echo
|
|
|
|
|
rsnapshot-diff -H "$BASE/weekly.0/$machine.afpy.org" "$BASE/daily.0/$machine.afpy.org"
|
|
|
|
|
echo
|
|
|
|
|
echo
|
|
|
|
|
done
|
|
|
|
|
echo '# discuss.afpy.org'
|
|
|
|
|
echo
|
|
|
|
|
ls -lahtr $BASE/daily.0/discuss.afpy.org/var/discourse/shared/standalone/backups/default/ | sed 's/^/ /'
|
|
|
|
|
echo
|
|
|
|
|
echo
|
|
|
|
|
echo '# logs.afpy.org'
|
|
|
|
|
echo
|
|
|
|
|
ls -lahtr $BASE/daily.0/deb.afpy.org/var/www/logs.afpy.org/ | tail | sed 's/^/ /'
|
|
|
|
|
echo
|
|
|
|
|
echo
|
|
|
|
|
echo '# git.afpy.org'
|
|
|
|
|
echo
|
|
|
|
|
ls -lahtr $BASE/daily.0/git.afpy.org/var/backups/gitea/ | sed 's/^/ /'
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
2022-10-05 14:57:38 +00:00
|
|
|
|
|
2022-10-15 16:34:20 +00:00
|
|
|
|
## gitea1.afpy.org
|
|
|
|
|
|
|
|
|
|
♥ Machine sponsorisée par Gandi ♥
|
|
|
|
|
|
|
|
|
|
C’est un « Gandi VPS V-R1 » 1 CPU, 1 GB RAM, 25 GB disk.
|
|
|
|
|
|
|
|
|
|
C’est la machine derrière `git.afpy.org`, déployée via `gitea.yml`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Mise à jour
|
|
|
|
|
|
|
|
|
|
Pour faire une mise à jour, se connecter en root à la machine puis exécuter :
|
|
|
|
|
|
|
|
|
|
systemctl start gitea-backup.service
|
|
|
|
|
backupopts="-c /etc/gitea/app.ini --file /var/backups/gitea/before-upgrade.zip" gitea-upgrade.sh
|
|
|
|
|
|
|
|
|
|
(Oui, je sais, ça fait deux sauvegardes, une par nous (avec un
|
|
|
|
|
`pg_dump`), une par le script de gitea dont le SQL n’est pas aussi
|
|
|
|
|
propre que celui généré par `pg_dump`).
|
|
|
|
|
|
|
|
|
|
Une fois la mise à jour terminée, il est de bon goût de mettre à jour
|
|
|
|
|
`gitea_version` dans `gitea.yml`.
|
|
|
|
|
|
|
|
|
|
|
2022-11-29 15:46:16 +00:00
|
|
|
|
### Sauvegardes
|
|
|
|
|
|
|
|
|
|
Les données sont sauvegardées automatiquement via rsync sur
|
|
|
|
|
`backup1.afpy.org` (voir `backup.yml`).
|
|
|
|
|
|
|
|
|
|
Côté VPS Gandi on a aussi un snapshot du volume tous les jours.
|
|
|
|
|
|
|
|
|
|
|
2022-10-15 16:34:20 +00:00
|
|
|
|
### Restaurer une sauvegarde
|
|
|
|
|
|
2022-11-29 15:46:16 +00:00
|
|
|
|
Procédure testée le 2022-11-29 par [mdk](https://git.afpy.org/mdk).
|
2022-10-15 16:34:20 +00:00
|
|
|
|
|
2022-11-29 15:46:16 +00:00
|
|
|
|
Voici la procédure pour restaurer une sauvegarde sur une nouvelle
|
|
|
|
|
machine « from scratch ».
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### Commander une nouvelle machine
|
|
|
|
|
|
|
|
|
|
Typiquement chez Gandi une `V-R1: 1 CPU · 1 GB RAM`, avec une Debian
|
2023-03-28 10:33:52 +00:00
|
|
|
|
11, n’oubliez pas d’y mettre une clé SSH.
|
2022-11-29 15:46:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### Nommer la machine
|
|
|
|
|
|
|
|
|
|
Typiquement `gitea2.afpy.org`, configurer les DNS, en profiter pour
|
2023-03-28 10:33:52 +00:00
|
|
|
|
réduire le TTL de git.afpy.org puisqu’il faudra le changer à la fin.
|
2022-11-29 15:46:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### Autoriser à se ssh en root
|
|
|
|
|
|
|
|
|
|
ssh debian@giteatest.afpy.org sudo cp /home/debian/.ssh/authorized_keys /root/.ssh/
|
|
|
|
|
|
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
#### Ajouter la machine dans l’inventaire Ansible
|
2022-10-15 16:34:20 +00:00
|
|
|
|
|
2022-11-29 15:46:16 +00:00
|
|
|
|
Ça devra donc ressembler à :
|
2022-10-15 16:34:20 +00:00
|
|
|
|
|
2022-11-29 15:46:16 +00:00
|
|
|
|
```ini
|
|
|
|
|
[gitea]
|
|
|
|
|
gitea2.afpy.org
|
|
|
|
|
```
|
2022-10-15 16:34:20 +00:00
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
On peut probablement supprimer l’autre qui ne marche plus...
|
2022-11-29 15:46:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### Lancer Ansible
|
|
|
|
|
|
|
|
|
|
`ansible-playbook gitea.yml`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### rsync la sauvegarde
|
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
J’utilise du `ssh agent forwarding`, si vous n’en utilisez-pas vous
|
|
|
|
|
aurez peut-être à rsync sur votre machine d’abord.
|
2022-11-29 15:46:16 +00:00
|
|
|
|
|
|
|
|
|
Adapté de : https://docs.gitea.io/en-us/backup-and-restore/#restore-command-restore
|
|
|
|
|
|
|
|
|
|
Donc, depuis gitea2:
|
|
|
|
|
|
|
|
|
|
cd /var/lib/gitea/
|
|
|
|
|
rsync -vah backup1.afpy.org:/srv/backups/rsnapshot_afpy/daily.0/git.afpy.org/var/backups/gitea/ ./
|
2022-10-15 16:34:20 +00:00
|
|
|
|
systemctl stop gitea
|
2022-11-29 15:46:16 +00:00
|
|
|
|
rm -fr data custom
|
2022-10-15 16:34:20 +00:00
|
|
|
|
unzip gitea.zip
|
2022-11-29 15:46:16 +00:00
|
|
|
|
rm gitea.zip
|
2022-10-15 16:34:20 +00:00
|
|
|
|
mv app.ini /etc/gitea/app.ini
|
2022-11-29 15:46:16 +00:00
|
|
|
|
mv repos data/gitea-repositories
|
|
|
|
|
chown -R git:git .
|
2022-10-15 16:34:20 +00:00
|
|
|
|
sudo --user git psql -d gitea < gitea.sql
|
2022-11-29 15:46:16 +00:00
|
|
|
|
rm gitea.sql
|
2022-10-15 16:34:20 +00:00
|
|
|
|
|
|
|
|
|
Puis passer le playbook `gitea.yml` pour remettre les bons droits partout (le playbook démarrera aussi `gitea`).
|
|
|
|
|
|
|
|
|
|
|
2022-11-29 15:46:16 +00:00
|
|
|
|
#### Tester et mettre à jour git.afpy.org
|
|
|
|
|
|
|
|
|
|
Un rapide test peut être effectué via :
|
|
|
|
|
|
|
|
|
|
curl --resolve git.afpy.org:IP_DE_LA_NOUVELLE_MACHINE https://git.afpy.org
|
|
|
|
|
|
|
|
|
|
Puis il faut mettre à jour le CNAME de git.afpy.org pour le faire pointer vers la nouvelle machine.
|
|
|
|
|
|
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
## woodpecker1.afpy.org
|
|
|
|
|
|
|
|
|
|
♥ Machine sponsorisée par Gandi ♥
|
|
|
|
|
|
|
|
|
|
C’est un « Gandi VPS V-R1 » 1 CPU, 1 GB RAM, 25 GB disk.
|
|
|
|
|
|
|
|
|
|
C’est [Woodpecker CI](https://woodpecker.afpy.org) lié à notre [forge](https://git.afpy.org).
|
|
|
|
|
|
|
|
|
|
Il ne fait tourner aucune tâche, ce sont les agents qui font tourner
|
|
|
|
|
les tâches. Si vous avez une machine de libre, vous êtes invités à
|
|
|
|
|
proposer un agent. Il suffit de :
|
|
|
|
|
|
|
|
|
|
- Installer une Debian.
|
|
|
|
|
- Y ajouter nos [authorized_keys](https://git.afpy.org/AFPy/infra/src/branch/main/group_vars/all/authorized_keys).
|
|
|
|
|
- Nous donner son IP.
|
|
|
|
|
|
|
|
|
|
Un agent n’a pas besoin d’IPv4, donc une vieille machine recyclée
|
|
|
|
|
planquée chez vous sans NAT mais avec de l’IPv6 ça suffit. Pas de
|
|
|
|
|
Raspberry PI par contre, nous n’avons pour le moment pas de tâches à
|
|
|
|
|
faire tourner sur arm64.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### boole.mdk.woodpecker-agents.afpy.org
|
|
|
|
|
|
|
|
|
|
♥ Machine sponsorisée par Julien Palard ♥
|
|
|
|
|
|
|
|
|
|
C’est un vieux laptop à moi, 4 cœurs, 8GB de RAM, planqué sous mon bureau.
|
|
|
|
|
|
|
|
|
|
Il sert uniquement d’agent au Woodpecker, et c’est pour le moment le seul.
|
|
|
|
|
|
|
|
|
|
|
2023-02-01 07:28:20 +00:00
|
|
|
|
## discourse1.afpy.org
|
|
|
|
|
|
|
|
|
|
♥ Machine sponsorisée par Gandi ♥
|
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
C’est un VPS `V-R4 2 CPUs · 4 GB RAM`.
|
2023-02-01 07:28:20 +00:00
|
|
|
|
|
|
|
|
|
Elle héberge https://discuss.afpy.org une instance Discourse.
|
|
|
|
|
|
2023-03-28 11:47:33 +00:00
|
|
|
|
|
2023-02-01 07:28:20 +00:00
|
|
|
|
### Déplacement du Discourse vers une nouvelle machine
|
|
|
|
|
|
|
|
|
|
Le 31 janvier 2023 Julien a déplacé le Discourse de deb2 à discourse1.
|
|
|
|
|
|
|
|
|
|
<details>
|
|
|
|
|
<summary>
|
|
|
|
|
Voici la procédure
|
|
|
|
|
</summary>
|
|
|
|
|
|
|
|
|
|
- Ajouter les enregistrements A et AAAA de la machine.
|
|
|
|
|
- Baisser le TTL du CNAME `discuss.afpy.org`.
|
2023-03-28 10:33:52 +00:00
|
|
|
|
- Mettre à jour le SPF pendant qu’on y est.
|
2023-02-01 07:28:20 +00:00
|
|
|
|
- Configurer le reverse DNS de la nouvelle machine.
|
|
|
|
|
- Côté Ansible, ajouter la machine au groupe `[discourse]` dans le fichier `inventory`.
|
|
|
|
|
- Copier sa clé ssh sur la machine dans `/root/.ssh/authorized_keys`.
|
|
|
|
|
- Lancer `ansible-playbook discuss.yml`.
|
|
|
|
|
- Lancer à la main dans `/var/discourse/`: `./launcher rebuild app` (ça prend ~10mn).
|
2023-03-28 10:33:52 +00:00
|
|
|
|
- Sur l’ancienne machine, faire une sauvegarde, soit via https://discuss.afpy.org/admin/backups, soit :
|
2023-02-01 07:28:20 +00:00
|
|
|
|
```
|
|
|
|
|
./launcher enter app
|
|
|
|
|
discourse backup
|
|
|
|
|
exit
|
|
|
|
|
```
|
|
|
|
|
- Copier une sauvegarde dans `/var/discourse/shared/standalone/backups/default/`.
|
|
|
|
|
- Restaurer la sauvegarde :
|
|
|
|
|
```
|
|
|
|
|
cd /var/discourse
|
|
|
|
|
./launcher enter app
|
|
|
|
|
discourse enable_restore
|
|
|
|
|
discourse restore afpy-2023-01-31-215204-v20230130053144.tar.gz
|
|
|
|
|
exit
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Bien tester l’envoi d’emails.
|
|
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
2023-03-28 11:47:33 +00:00
|
|
|
|
# Rôles utilisés
|
2018-10-09 19:43:40 +00:00
|
|
|
|
|
2018-12-21 11:32:09 +00:00
|
|
|
|
On utilies ces rôles Ansible :
|
2018-10-09 19:43:40 +00:00
|
|
|
|
|
2021-11-18 05:30:59 +00:00
|
|
|
|
|
|
|
|
|
## roles/nginx
|
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
Ce rôle configure un nginx avec Letsencrypt en DNS-01 via l’API Gandi (nos domaines étant chez Gandi).
|
2021-11-18 05:30:59 +00:00
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
L’avantage du DNS-01 c’est qu’on peut configurer un nouveau serveur **avant** que le DNS ne pointe sur lui.
|
2021-11-18 05:30:59 +00:00
|
|
|
|
|
|
|
|
|
|
2019-12-18 12:41:45 +00:00
|
|
|
|
## julienpalard.nginx
|
2018-10-09 19:43:40 +00:00
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
Ce rôle configure un nginx avec Letsencrypt en HTTP-01, on l’utilise
|
|
|
|
|
assez peu maintenant, on l’utilise là où on ne peut pas faire de
|
2021-11-18 05:30:59 +00:00
|
|
|
|
DNS-01 (pour `fr.pycon.org` par exemple).
|
|
|
|
|
|
2019-12-18 12:41:45 +00:00
|
|
|
|
Voir la [doc](https://github.com/JulienPalard/ansible-role-nginx).
|
2018-10-09 19:43:40 +00:00
|
|
|
|
|
|
|
|
|
|
2018-12-21 11:32:09 +00:00
|
|
|
|
## common
|
2018-10-09 19:43:40 +00:00
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
*common* est un rôle "de base" permettant d’avoir une conf "normale"
|
2018-12-21 11:32:09 +00:00
|
|
|
|
sur toutes nos machines (emacs et vim installés, nos authorized-keys,
|
2019-12-18 12:41:45 +00:00
|
|
|
|
pas de mlocate, hostname propre, firewall, ce genre de broutilles).
|
2019-03-06 23:08:06 +00:00
|
|
|
|
|
|
|
|
|
|
2023-03-28 11:47:33 +00:00
|
|
|
|
## exim
|
2022-10-07 14:25:05 +00:00
|
|
|
|
|
2024-02-26 14:46:26 +00:00
|
|
|
|
Le playbook exim configure une clé DKIM et signe les mails avec. Mais
|
|
|
|
|
un humain doit la propager sur les DNS.
|
2022-10-07 14:25:05 +00:00
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
Le nom d’hote est le nom du serveur, donc pour `deb2`,
|
2022-10-07 14:25:05 +00:00
|
|
|
|
`d=deb2.afpy.org`, et le selecteur vaut le nom de domaine avec des
|
|
|
|
|
`-`, soit `s=deb2-afpy-org`.
|
|
|
|
|
|
2023-03-28 10:33:52 +00:00
|
|
|
|
TL;DR la configuration qu’il faut faire ressemble à :
|
2022-10-07 14:25:05 +00:00
|
|
|
|
|
|
|
|
|
deb2-afpy-org._domainkey.deb2.afpy.org. IN TXT "v=DKIM1; k=rsa; p=MIG...QAB"
|
|
|
|
|
|
|
|
|
|
La clé publique se situe dans `/etc/exim4/dkim/*.pem` et est donc récupérable via :
|
|
|
|
|
|
|
|
|
|
ssh root@deb2.afpy.org cat /etc/exim4/dkim/deb2-afpy-org.pem | grep -v ^- | tr -d '\n'
|
2023-11-02 10:46:32 +00:00
|
|
|
|
|
2024-02-26 14:46:26 +00:00
|
|
|
|
Côté IPv6 c’est pas joli :
|
|
|
|
|
|
|
|
|
|
- Gandi ne nous fournit pas de /64 en IPv6, notre /64 se fait donc
|
|
|
|
|
régulièrement bloquer à cause des voisins. cf. https://slash64.net/.
|
|
|
|
|
- Certaines de nos machines n’ont que de l’IPv6 (backup1, l’agent
|
|
|
|
|
woodpecker chez mdk).
|
|
|
|
|
- Certains MX n’ont pas d’IPv6 du tout (protonmail, galae, …).
|
|
|
|
|
|
|
|
|
|
Résultat :
|
|
|
|
|
|
|
|
|
|
- Faire passer les mails des machines IPv6-only par des machines qui
|
|
|
|
|
ont une IPv4 ne marche pas, l’IPv6 étant désactivé sur les exim à
|
|
|
|
|
cause de l’absence de /64, pour les forcer à délivrer en IPv4.
|
|
|
|
|
- Nos machines en IPv6 n’envoient pas d’email, du tout.
|
|
|
|
|
|
|
|
|
|
|
2023-11-02 10:46:32 +00:00
|
|
|
|
# Tâches
|
|
|
|
|
## Redimentionner un disque sur un VPS
|
|
|
|
|
|
|
|
|
|
- Agrandir le volume via l'interface web,
|
|
|
|
|
- agrandir la partition via `growpart /dev/xvda 1`,
|
|
|
|
|
- agrandir le filesystem via `resize2fs /dev/xvda1`.
|