diff options
Diffstat (limited to 'content/operations')
-rw-r--r-- | content/operations/2020-01-20-changement-ip.md (renamed from content/operations/pannes/2020-01-20-changement-ip.md) | 16 | ||||
-rw-r--r-- | content/operations/2021-07-12-synapse-bdd-rempli-disque.md (renamed from content/operations/pannes/2021-07-12-synapse-bdd-rempli-disque.md) | 16 | ||||
-rw-r--r-- | content/operations/2022-01-xx-glusterfs-corruption.md (renamed from content/operations/pannes/2022-01-xx-glusterfs-corruption.md) | 16 | ||||
-rw-r--r-- | content/operations/2023-02-xx.md | 28 | ||||
-rw-r--r-- | content/operations/SSH_sans_écran.md (renamed from content/operations/deploiement/noeud/SSH_sans_écran.md) | 18 | ||||
-rw-r--r-- | content/operations/_index.md | 14 | ||||
-rw-r--r-- | content/operations/acces.md (renamed from content/operations/acces/_index.md) | 16 | ||||
-rw-r--r-- | content/operations/acces/ssh.md | 9 | ||||
-rw-r--r-- | content/operations/courantes.md | 8 | ||||
-rw-r--r-- | content/operations/courantes/_index.md | 6 | ||||
-rw-r--r-- | content/operations/courantes/email.md | 31 | ||||
-rw-r--r-- | content/operations/create_database.md (renamed from content/operations/deploiement/app/create_database.md) | 16 | ||||
-rw-r--r-- | content/operations/debogage.md | 9 | ||||
-rw-r--r-- | content/operations/debogage/_index.md | 7 | ||||
-rw-r--r-- | content/operations/deploiement/_index.md | 7 | ||||
-rw-r--r-- | content/operations/deployer.md (renamed from content/operations/deploiement/app/_index.md) | 16 | ||||
-rw-r--r-- | content/operations/email.md | 232 | ||||
-rw-r--r-- | content/operations/guide_création_nœud.md (renamed from content/operations/deploiement/noeud/guide_création_nœud.md) | 18 | ||||
-rw-r--r-- | content/operations/jitsi.md (renamed from content/operations/debogage/jitsi.md) | 16 | ||||
-rw-r--r-- | content/operations/maintien_en_condition.md | 12 | ||||
-rw-r--r-- | content/operations/maintien_en_condition/_index.md | 10 | ||||
-rw-r--r-- | content/operations/matrix.md (renamed from content/operations/maintien_en_condition/matrix.md) | 19 | ||||
-rw-r--r-- | content/operations/nixcfg.md (renamed from content/operations/deploiement/grappe/_index.md) | 16 | ||||
-rw-r--r-- | content/operations/noeud.md (renamed from content/operations/deploiement/noeud/_index.md) | 20 | ||||
-rw-r--r-- | content/operations/pannes.md | 15 | ||||
-rw-r--r-- | content/operations/pannes/_index.md | 6 | ||||
-rw-r--r-- | content/operations/pass.md (renamed from content/operations/acces/pass.md) | 12 | ||||
-rw-r--r-- | content/operations/petits-incidents.md (renamed from content/operations/pannes/petits-incidents.md) | 16 | ||||
-rw-r--r-- | content/operations/pg_basebackup.md (renamed from content/operations/sauvegardes/pg_basebackup.md) | 12 | ||||
-rw-r--r-- | content/operations/plume.md (renamed from content/operations/debogage/plume.md) | 16 | ||||
-rw-r--r-- | content/operations/prestataires.md | 27 | ||||
-rw-r--r-- | content/operations/prestataires/_index.md | 25 | ||||
-rw-r--r-- | content/operations/prérequis.md (renamed from content/operations/deploiement/noeud/prérequis.md) | 18 | ||||
-rw-r--r-- | content/operations/rclone.md (renamed from content/operations/sauvegardes/rclone.md) | 14 | ||||
-rw-r--r-- | content/operations/restic.md (renamed from content/operations/sauvegardes/restic.md) | 12 | ||||
-rw-r--r-- | content/operations/sauvegardes.md (renamed from content/operations/sauvegardes/_index.md) | 24 | ||||
-rw-r--r-- | content/operations/ssh.md | 11 | ||||
-rw-r--r-- | content/operations/stolon.md (renamed from content/operations/deploiement/grappe/stolon.md) | 16 | ||||
-rw-r--r-- | content/operations/supervision.md | 23 | ||||
-rw-r--r-- | content/operations/supervision/_index.md | 12 | ||||
-rw-r--r-- | content/operations/vue_ensemble.md (renamed from content/operations/vue_ensemble/_index.md) | 14 |
41 files changed, 572 insertions, 277 deletions
diff --git a/content/operations/pannes/2020-01-20-changement-ip.md b/content/operations/2020-01-20-changement-ip.md index c86eb85..9b6ce23 100644 --- a/content/operations/pannes/2020-01-20-changement-ip.md +++ b/content/operations/2020-01-20-changement-ip.md @@ -1,10 +1,12 @@ -+++ -title = "Janvier 2020" -description = "Janvier 2020: changement imprévu d'adresses IP" -date = 2022-12-22 -dateCreated = 2022-12-22 -weight = 10 -+++ +--- +title: "Janvier 2020" +description: "Janvier 2020: changement imprévu d'adresses IP" +date: 2022-12-22 +dateCreated: 2022-12-22 +weight: 10 +extra: + parent: 'operations/pannes.md' +--- Le 20 janvier free a changé mon IP, un peu comme partout en France. Ça concerne l'IPv4 et le préfixe IPv6. diff --git a/content/operations/pannes/2021-07-12-synapse-bdd-rempli-disque.md b/content/operations/2021-07-12-synapse-bdd-rempli-disque.md index 17650fa..d907705 100644 --- a/content/operations/pannes/2021-07-12-synapse-bdd-rempli-disque.md +++ b/content/operations/2021-07-12-synapse-bdd-rempli-disque.md @@ -1,10 +1,12 @@ -+++ -title = "Juillet 2021" -description = "Juillet 2021: la BDD Synapse remplit nos disques" -date = 2022-12-22 -dateCreated = 2022-12-22 -weight = 20 -+++ +--- +title: "Juillet 2021" +description: "Juillet 2021: la BDD Synapse remplit nos disques" +date: 2022-12-22 +dateCreated: 2022-12-22 +weight: 20 +extra: + parent: 'operations/pannes.md' +--- # La BDD synapse rempli nos disques diff --git a/content/operations/pannes/2022-01-xx-glusterfs-corruption.md b/content/operations/2022-01-xx-glusterfs-corruption.md index bbd94af..734b2d8 100644 --- a/content/operations/pannes/2022-01-xx-glusterfs-corruption.md +++ b/content/operations/2022-01-xx-glusterfs-corruption.md @@ -1,10 +1,12 @@ -+++ -title = "Janvier 2022" -description = "Janvier 2022: Corruptions GlusterFS" -date = 2022-12-22 -dateCreated = 2022-12-22 -weight = 30 -+++ +--- +title: "Janvier 2022" +description: "Janvier 2022: Corruptions GlusterFS" +date: 2022-12-22 +dateCreated: 2022-12-22 +weight: 30 +extra: + parent: 'operations/pannes.md' +--- # Corruption GlusterFS diff --git a/content/operations/2023-02-xx.md b/content/operations/2023-02-xx.md new file mode 100644 index 0000000..a612060 --- /dev/null +++ b/content/operations/2023-02-xx.md @@ -0,0 +1,28 @@ +--- +title: "Février 2023" +description: "Février 2023: perte de 2 zones" +date: 2022-12-22 +dateCreated: 2022-12-22 +weight: 30 +extra: + parent: 'operations/pannes.md' +--- + +En février 2023, garage a été inaccessible car io à Rennes +était cassé depuis une semaine sans qu'on s'en rende compte, +et qu'ensuite neptune a subi une coupure fibre. + +On a pu remonter garage assez rapidement car Trinity +a pu reconfigurer io dès que le problème a été identifié. +La discussion a été rendue plus compliqué que prévu +car on a eu des problèmes de déchiffrement des messages sur matrix. + +Mais la coupure fibre de neptune nous a fait nous rendre +compte qu'on ne pouvait pas tout reschedule à Lyon. +Et à Bruxelles, impossible de schedule car la conf +routeur ne permet pas (encore) de prendre du trafic entrant. + +Voici les changements qu'on a décidé de mettre en oeuvre à la suite de ce problème : + - Alerting sur les serveurs (pas encore fait) + - Conversations en clair sur deuxfleurs::infra + - Accepter du trafic entrant à BRX (pas encore fait) diff --git a/content/operations/deploiement/noeud/SSH_sans_écran.md b/content/operations/SSH_sans_écran.md index 41a19f7..610daae 100644 --- a/content/operations/deploiement/noeud/SSH_sans_écran.md +++ b/content/operations/SSH_sans_écran.md @@ -1,10 +1,12 @@ -+++ -title = "Installer NixOS en SSH" -description = "Installer NixOS en SSH sans écran ni clavier" -date = 2022-08-24 -dateCreated = 2021-08-24 -weight = 12 -+++ +--- +title: "Installer NixOS en SSH" +description: "Installer NixOS en SSH sans écran ni clavier" +date: 2022-08-24 +dateCreated: 2021-08-24 +weight: 12 +extra: + parent: 'operations/noeud.md' +--- Quick tip avant d'oublier pour installer une de nos machines ThinkCentre via SSH sous NixOS ; c'est la seule solution quand on a pas d'écran ni de clavier sous la main. Pré-requis : une clé USB, un ordi sous NixOS. @@ -48,4 +50,4 @@ Ensuite on se connecte dessus : ``` ssh root@192.168.1.X -```
\ No newline at end of file +``` diff --git a/content/operations/_index.md b/content/operations/_index.md index 7ab49f2..7f64bcd 100644 --- a/content/operations/_index.md +++ b/content/operations/_index.md @@ -1,9 +1,11 @@ -+++ -title = "Opérations" -description = "Opérations" -weight = 100 -sort_by = "weight" -+++ +--- +title: "Opérations" +description: "Opérations" +weight: 100 +sort_by: "weight" +extra: + parent: 'operations/_index.md' +--- Ce manuel recense notre savoir-faire technique, il a pour but d'accompagner nos opérateur·ices dans la réalisation de leurs tâches. diff --git a/content/operations/acces/_index.md b/content/operations/acces.md index 08824bc..4885e47 100644 --- a/content/operations/acces/_index.md +++ b/content/operations/acces.md @@ -1,8 +1,10 @@ -+++ -title = "Accès" -description = "Accès" -sort_by = "weight" -weight = 5 -+++ +--- +title: "Accès" +description: "Accès" +sort_by: "weight" +weight: 5 +extra: + parent: 'operations/_index.md' +--- -Ici l'on traite de comment gagner accès au cluster de Deuxfleurs, quand on a reçu la _terrible responsabilité_ de sysadmin. Vous êtes prêt⋅e ? Alors entrez dans [le dépôt des secrets](./pass/).
\ No newline at end of file +Ici l'on traite de comment gagner accès au cluster de Deuxfleurs, quand on a reçu la _terrible responsabilité_ de sysadmin. Vous êtes prêt⋅e ? Alors entrez dans [le dépôt des secrets](@/operations/pass.md). diff --git a/content/operations/acces/ssh.md b/content/operations/acces/ssh.md deleted file mode 100644 index e053934..0000000 --- a/content/operations/acces/ssh.md +++ /dev/null @@ -1,9 +0,0 @@ -+++ -title = "SSH" -description = "SSH" -weight = 100 -+++ - -Voir si on documente comment gérer SSH depuis GPG - -# Ajout de la clé au cluster diff --git a/content/operations/courantes.md b/content/operations/courantes.md new file mode 100644 index 0000000..d3da720 --- /dev/null +++ b/content/operations/courantes.md @@ -0,0 +1,8 @@ +--- +title: "Opérations courantes" +description: "Opérations courantes" +weight: 35 +sort_by: "weight" +extra: + parent: 'operations/_index.md' +--- diff --git a/content/operations/courantes/_index.md b/content/operations/courantes/_index.md deleted file mode 100644 index 1cf3b95..0000000 --- a/content/operations/courantes/_index.md +++ /dev/null @@ -1,6 +0,0 @@ -+++ -title = "Opérations courantes" -description = "Opérations courantes" -weight = 15 -sort_by = "weight" -+++ diff --git a/content/operations/courantes/email.md b/content/operations/courantes/email.md deleted file mode 100644 index d28608e..0000000 --- a/content/operations/courantes/email.md +++ /dev/null @@ -1,31 +0,0 @@ -+++ -title = "Emails" -description = "Emails" -weight = 10 -+++ - -# Support d'un nom de domaine personnalisé - - 1. xxx - 1. Communiquez lui votre nom de domaine pour qu'il l'ajoute dans `ou=domains,ou=groups,dc=deuxfleurs,dc=fr` - 2. Communiquez lui l'adresse email que vous souhaitez pour qu'il change l'entrée `mail` dans votre profil utilisateur - 3. Si vous souhaitez avoir une boite mais plusieurs alias, demandez un champs `uid` dans votre profil utilisateur - - 2. Vous devez ensuite rajouter les entrées pour votre nom de domaine en éditant votre zone : - 1. L'entrée MX pour recevoir les emails -```bind -@ MX 10 email-in.deuxfleurs.fr -``` - 2. L'entrée SPF pour autoriser notre IP à délivrer des emails en votre nom : -```bind -@ TXT "v=spf1 mx:out.deuxfleurs.fr -all" -``` - 3. L'entrée DKIM pour autoriser notre postfix+opendkim à délivrer des emails en votre nom : -``` -smtp._domainkey TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtdZp4qrgZR+6R7HeAkuLGJ/3L/6Ungvf5zwrMq6T8Tu931j2G4lYuPtsxyn9fZkT4y7DlX0waktLDBOCwf7X78nLEWjAFWiJTeWGRGhRdYRUFpscs9NUN0P+46jKlabibG3XTKd1DeAmywTu6o1oO03yiolrgKD1zgyDRFeUTfSwZIdPrdbcBSA1arda4WFtcBIrSygM9b4jtlqfQwGDrsMLbCBfVHDn4WfmDWyNg0gDAkuLrYClNETk6aqIyj9fC8srKri0Qp3cRagCn+fjBvuxP35qWWJH7Rnnh/tuEDr1ufuNYO2KgJZ7JdMidUotxXE8cfU+OrEWQf4mIYeJ4wIDAQAB" -``` - 4. L'entrée DMARC pour indiquer le comportement à adopter si les contraintes précédentes ne sont pas satisfaites : -``` -_dmarc TXT "v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s; rua=mailto:contact@deuxfleurs.fr!10m; ruf=mailto:contact@deuxfleurs.fr!10m; rf=afrf; pct=100; ri=86400" -``` - 3. C'est tout ! Vous devrez probablement attendre 24/48h que les changements se propagent. diff --git a/content/operations/deploiement/app/create_database.md b/content/operations/create_database.md index e5f8a72..5c46d63 100644 --- a/content/operations/deploiement/app/create_database.md +++ b/content/operations/create_database.md @@ -1,10 +1,12 @@ -+++ -title = "Créer une BDD" -description = "Création d'une base de données pour une nouvelle application" -date = 2022-12-22 -dateCreated = 2022-12-22 -weight = 11 -+++ +--- +title: "Créer une BDD" +description: "Création d'une base de données pour une nouvelle application" +date: 2022-12-22 +dateCreated: 2022-12-22 +weight: 11 +extra: + parent: 'operations/deployer.md' +--- ## 1. Create a LDAP user and assign a password for your service diff --git a/content/operations/debogage.md b/content/operations/debogage.md new file mode 100644 index 0000000..467a760 --- /dev/null +++ b/content/operations/debogage.md @@ -0,0 +1,9 @@ +--- +title: "Débogage" +description: "Débogage" +weight: 60 +sort_by: "weight" +extra: + parent: 'operations/_index.md' +--- + diff --git a/content/operations/debogage/_index.md b/content/operations/debogage/_index.md deleted file mode 100644 index 5afe881..0000000 --- a/content/operations/debogage/_index.md +++ /dev/null @@ -1,7 +0,0 @@ -+++ -title = "Débogage" -description = "Débogage" -weight = 60 -sort_by = "weight" -+++ - diff --git a/content/operations/deploiement/_index.md b/content/operations/deploiement/_index.md deleted file mode 100644 index 4986c67..0000000 --- a/content/operations/deploiement/_index.md +++ /dev/null @@ -1,7 +0,0 @@ -+++ -title = "Déploiement" -description = "Déploiement" -weight = 10 -sort_by = "weight" -+++ - diff --git a/content/operations/deploiement/app/_index.md b/content/operations/deployer.md index 710e2e5..02ef0bd 100644 --- a/content/operations/deploiement/app/_index.md +++ b/content/operations/deployer.md @@ -1,10 +1,12 @@ -+++ -title = "Applications" -description = "Déploiement d'une application" -sort_by = "weight" -date = 2022-12-22 -weight = 30 -+++ +--- +title: "Déployer du logiciel" +description: "Déploiement du logiciel" +sort_by: "weight" +date: 2022-12-22 +weight: 30 +extra: + parent: 'operations/_index.md' +--- # Empaqueter diff --git a/content/operations/email.md b/content/operations/email.md new file mode 100644 index 0000000..d3b0fbe --- /dev/null +++ b/content/operations/email.md @@ -0,0 +1,232 @@ +--- +title: Emails +description: Emails +weight: 10 +draft: false +date: 2023-03-16 +extra: + parent: operations/courantes.md +--- + +# Support d'un nom de domaine personnalisé + +Deuxfleurs peut héberger vos e-mails, même s'ils ne finissent pas en `@deuxfleurs.fr` ! Voilà comment faire. + +1. Communiquez lui votre nom de domaine pour qu'il l'ajoute dans `ou=domains,ou=groups,dc=deuxfleurs,dc=fr` et la [table de signature DKIM](https://git.deuxfleurs.fr/Deuxfleurs/nixcfg/src/branch/main/cluster/prod/app/email/config/dkim/signingtable) + +2. Communiquez lui l'adresse email que vous souhaitez pour qu'il change l'entrée `mail` dans votre profil utilisateur + +3. Vous devez ensuite rajouter les entrées pour votre nom de domaine en éditant votre zone : + + 1. L'entrée MX pour recevoir les emails + + ``` + @ MX 10 smtp.deuxfleurs.fr. + ``` + + 2. L'entrée SPF pour autoriser notre IP à délivrer des emails en votre nom : + + ``` + @ TXT "v=spf1 include:deuxfleurs.fr -all" + ``` + + 3. L'entrée DKIM pour autoriser notre postfix+opendkim à délivrer des emails en votre nom : + + ``` + smtp._domainkey CNAME smtp._domainkey.deuxfleurs.fr. + ``` + + 4. L'entrée DMARC pour indiquer le comportement à adopter si les contraintes précédentes ne sont pas satisfaites : + + ``` + _dmarc CNAME _dmarc.deuxfleurs.fr. + ``` + +4. C'est tout ! Vous devrez probablement attendre 24/48h que les changements se propagent. + + + +# Comprendre le fonctionnement des e-mails + +## Serveurs + +- SMTP: Postfix + +- IMAP: Dovecot (fixé sur une machine avec un backup) + +## Enregistrements DNS de la zone `deuxfleurs.fr` + +| nom | type | valeur | signification | +| --- | ---- | ------ | ------------- | +| `@` | `MX` | `12 smtp.deuxfleurs.fr` | Serveur que chercheront à joindre les gens qui veulent envoyer un courrier à une addresse `@deuxfleurs.fr` | +| `smtp._domainkey` | `TXT` | `v=DKIM1; p=<clef publique>` | Enregistrement DKIM (voir ci-dessous) | +| `default._domainkey` | `TXT` | `v=DKIM1; p=<clef publique>` | Ancien enregistrement DKIM (voir ci-dessous) | +| `@` | `TXT` | `v=spf1 [...] -all` | Enregistrement SPF (voir ci-dessous) | +| `_dmarc` | `TXT` | `v=DMARC1; [...]` | Enregistrement DMARC (voir ci-dessous) | +| `smtp` | `A` | défini par D53 | Addresse IPv4 pour parler au serveur Postfix | +| `imap` | `A` | défini par D53 | Addresse IPv4 pour parler au serveur Dovecot | +| `201.80.66.82.in-addr.arpa.` | `PTR` | `orion.site.deuxfleurs.fr.` | Reverse DNS indiquant le nom de domaine correspondant à l'IP du serveur Postfix | +| `orion.site` | `A` | `82.66.80.201` | Reverse DNS indiquant le nom de domaine correspondant à l'IP du serveur Postfix | + +## DKIM + +Le mécanisme DKIM permet au serveur d'ajouter une signature sur les messages qui sortent de Deuxfleurs, pour que les destinataires puissent en attester la validité. +Il s'agit d'une signature RSA basée sur une paire de clefs privée/publique. La clef publique est donée dans l'enregistrement DNS DKIM, et la clef privée est connue +uniquement du serveur Postfix. La signature de chaque message est ajoutée dans un en-tête spécifique. + +Référence : <https://www.cloudflare.com/learning/dns/dns-records/dns-dkim-record/> + +**Exemple d'enregistrements DNS :** + +``` +default._domainkey.deuxfleurs.fr. 10800 IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtdZp4qrgZR+6R7HeAkuLGJ/3L/6Ungvf5zwrMq6T8Tu931j2G4lYuPtsxyn9fZkT4y7DlX0waktLDB" "OCwf7X78nLEWjAFWiJTeWGRGhRdYRUFpscs9NUN0P+46jKlabibG3XTKd1DeAmywTu6o1oO03yiolrgKD1zgyDRFeUTfSwZIdPrdbcBSA1arda4WFtcBIrSygM9b4jtlqfQwGDrsMLbCBfVHDn4Wfm" "DWyNg0gDAkuLrYClNETk6aqIyj9fC8srKri0Qp3cRagCn+fjBvuxP35qWWJH7Rnnh/tuEDr1ufuNYO2KgJZ7JdMidUotxXE8cfU+OrEWQf4mIYeJ4wIDAQAB" + +smtp._domainkey.deuxfleurs.fr. 1800 IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtdZp4qrgZR+6R7HeAkuLGJ/3L/6Ungvf5zwrMq6T8Tu931j2G4lYuPtsxyn9fZkT4y7DlX0waktLDB" "OCwf7X78nLEWjAFWiJTeWGRGhRdYRUFpscs9NUN0P+46jKlabibG3XTKd1DeAmywTu6o1oO03yiolrgKD1zgyDRFeUTfSwZIdPrdbcBSA1arda4WFtcBIrSygM9b4jtlqfQwGDrsMLbCBfVHDn4Wfm" "DWyNg0gDAkuLrYClNETk6aqIyj9fC8srKri0Qp3cRagCn+fjBvuxP35qWWJH7Rnnh/tuEDr1ufuNYO2KgJZ7JdMidUotxXE8cfU+OrEWQf4mIYeJ4wIDAQAB" + +default._domainkey.adnab.me. 3600 IN TXT "v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHd2zQXgGAoFX2CFaRqvWw1oBGhbUIRB5QXPxE9nvWwe/og5LjZBcnKoInPWsKYEz/f5kmpTDq4RZT3PMmjm+u5IuvyQ2LJcdIKSW6t8KWa7yztk2D87f3Lono6WJwvY8RHdGPqKS5RXfEdQFriXiSCAO5ZSQrNXQ5yiQ9T1ptGwIDAQAB; t=s" +``` + +**Structure :** + +- Le nom de domaine est composé d'un selecteur (souvent `default`, on a ici aussi `smtp`) qui permet de distinguer différentes clefs pour signer les messages. + Il est formé de la manière suivante: `<selecteur>._domainkey.<domaine>` +- La valeur est composé de plusieurs champs entre guillemets séparés par des `;`, le champ `v` peut contenir la version de DKIM utilisée (ici `v=DKIM1`) +- Le champ `p` contient la clef publique +- Les autres champs sont optionels + +**Application à la vérification d'une signature (exemple) :** + +Prenons la signature suivante : + +``` +DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=deuxfleurs.fr; s=smtp; + t=1679050854; bh=AkDk3Tm0bnC7b6dvTjRXJbThLE6h/IStsBGIYGa+q7c=; + h=Date:To:From:Subject:From; + b=Qll5ASi9DmD2rw9LK1vJOahE77Pd/HNDbmrkrOCt4S8Nu42WtJXXOtiwo9J3KGPzR + zA2Cw5oCUB0HW5ere8RkINsUj9X/nxOovxFaJw4LSrgEYxQh7unaGBs6Ecw6k2Aqc/ + oMhNE2OVCSlLkJVUQbgzwBUcZuwndlki6yYoJXkSPMuZ4tFbhgjSaxneRgUvPocYw3 + Vqc/yMEAbofrlaEf6nSNQZL+LSE4IEBeudsv3JodMn12OYAijhO0rrHHsinK9UkM3M + PEEISyatG6RzE6veh4VVv3PTyJMYouQI7fKNooLuDmlGsdSTV9HRo4UvQeOQT1SL/7 + KvgJtR0Hqz3mQ== +``` + +Cette signature contient les champs suivants : + +- `v` (obligatoire) indique la version, doit toujours être à `1` +- `a` (obligatoire) indique l'algorithme de signature, généralement `rsa-sha256` +- `d` (obligatoire) indique le domaine pour lequel la signature est produite +- `s` (obligatoire) indique le sélecteur de la clef DKIM utilisée (ici `smtp` pour utiliser la clef `smtp._domainkey.deuxfleurs.fr`) +- `h` (obligatoire) indique la liste des en-têtes signés +- `bh` (obligatoire) donne le hash du contenu du message +- `b` (obligatoire) donne la signature à proprement parler, qui signe les en-têtes `h` et le hash du contenu `bh` +- `t` (recomandé) donne le timestamp de la signature, i.e. sa date et son heure +- `c` est un paramètre additionnel de la méthode de calcul de la signature + +**Chez Deuxfleurs:** + +- L'en-tête de signature est rajouté par notre serveur Postfix. +- La clef privée est stockée dans Consul, et est injectée dans le conteneur Postfix au lancement. +- Les enregistrements DNS pour DKIM sont installés manuellement. +- Pour tous les autres domaines dont le courrier est traîté par les serveurs Deuxfleurs, on utilise un enregistrement DKIM en CNAME vers `smtp._domainkey.deuxfleurs.fr` pour que la gestion des règles soit centralisée via l'enregistrement défini sur les DNS Deuxfleurs. + +## SPF + +L'enregistrement SPF sert à aider le serveur de destination à déterminer si le message reçu est légitime ou non, en vérifiant des contraintes sur l'addresse IP par laquelle il a été reçu. +Normalement, c'est l'addresse IP du serveur SMTP de Deuxfleurs, donc on sait qu'on doit rejeter tous les messages venant d'autres addresses. + +Références : <https://fr.wikipedia.org/wiki/Sender_Policy_Framework> + +**Exemple d'enregistrements DNS :** + +``` +deuxfleurs.fr. 300 IN TXT "v=spf1 mx:deuxfleurs.fr a:orion.site.deuxfleurs.fr ip4:82.66.80.201 ip6:2a01:e0a:28f:5e60::/64 -all" +adnab.me. 3600 IN TXT "v=spf1 mx mx:adnab.me include:mx.ovh.com -all" +ietf.org. 1794 IN TXT "v=spf1 ip4:50.223.129.192/26 ip6:2001:559:c4c7::/48 a:ietf.org mx:mail.ietf.org ip4:192.95.54.32/27 ip6:2607:5300:60:9ccf::/64 ip4:158.69.166.0/27 ip6:2607:5300:203:1b26::/64 ip4:4.31.198.32/27 ip6:2001:1900:3001:11::/64 include:_spf.google.com ~all" + +``` + +**Structure :** + +L'enregistrement commence par `v=spf1`, puis contient un ensemble de directives formées de la manière suivante: + +- Un préfixe pouvant être `+` (résultat favorable), `?` (résultat neutre/aucune règle), `~` (entre le neutre et l'échec, utile pour déboguer), `-` (échec/défavorable). Le préfixe peut être omis, ce qui est interprété comme le préfixe `+`. +- Une paire type/valeur, avec les types suivants: + - `mx` : utiliser un enregistrement DNS de type MX. L'enregistrement `MX` donne un ou plusieurs noms d'hôtes, qui sont eux-même des noms DNS. Ces noms sont ensuite résolus en `A` ou `AAAA` pour trouver les addresses correspondantes. Attention, un enregistrement `MX` n'est pas sensé pointer sur un `CNAME`, il doit pointer directement sur des enregistrements `A` et `AAAA` ! + - `ip4` : contient directement une plage d'addresses IPv4 + - `ip6` : contient directement une plage d'addresses IPv6 + - `a` : contient un nom d'hôte à résoudre en `A` ou `AAAA` (pouvant utiliser des `CNAME`) + - `include` : contient un nom de domaine ayant une autre règle SPF à inclure + - `ptr` : désuet +- Ou bien le mot `all`, qui correspond à tous les expéditeurs dont l'addresse ne correspond pas aux autres règles + +Par exemple, dans les exemples ci-dessus, voici comment interpréter les différentes règles: + +- `mx:deuxfleurs.fr` : accepter le message si l'IP de l'expéditeur est trouvable en suivant les enregistrements `MX` associés à `deuxfleurs.fr`. +- `ip4:82.66.80.201` : accepter le message si l'IP de l'expéditeur est `82.66.80.201` +- `include:mx.ovh.com` : accepter le message si il serait accepté par la règle du domaine `mx.ovh.com` (consultable en faisant `dig TXT mx.ovh.com`) +- `a:ietf.org` : accepter le message si il vient de l'addresse IP de `ietf.org` (consultable en faisant `dig A ietf.org`) +- `-all` : rejeter strictement tous les messages venant d'une autre addresse IP + + +**Chez Deuxfleurs :** + +- L'enregistrement SPF, installé manuellement, contient `mx:deuxfleurs.fr`, ce qui signifie que les addresses IP sont celles présentes dans l'enregistrement `MX` pour `deuxfleurs.fr`. +- Cet enregistrement est fixé manuellement pour pointer sur le serveur `smtp.deuxfleurs.fr`. + L'enregistrement `A` pour `smtp.deuxfleurs.fr` est mis à jour automatiquement par D53 pour pointer vers l'IPv4 de la machine sur laquelle tourne Postfix. +- L'enregistrement SPF contient également `a:orion.site.deuxfleurs.fr`, qui contient également l'IPv4 de cette machine ; on garde cette règle en second recours au cas où il y aurait un problème avec la précédente, pour éviter de rejeter du courrier valide. +- L'enregistrement SPF contient également l'addresse IPv4 et la plage d'addresses IPv6 de la box à Orion (site où le serveur SMTP est actuellement déployé), pour en dernier recours éviter de rejeter des mails en cas de soucis avec les règles précédentes. +- **L'enregistrement SPF doit être mis à jour manuellement en cas de reconfiguration du serveur SMTP, en particulier si celui-ci change de site ou si les addresses IP changent.** +- Pour tous les autres domaines dont le courrier est traîté par les serveurs Deuxfleurs, on utilise un enregistrement SPF `include:deuxfleurs.fr` pour que la gestion des règles soit centralisée via l'enregistrement défini sur les DNS Deuxfleurs. + +## DMARC + +DMARC est un mécanisme qui permet de mieux contrôler la réaction des serveurs de destination en fonction des tests DKIM et SPF. +Par exemple, on peut préciser que tous les messages sont authentifiés par DKIM et SPF, et si un de ces tests échoue, le message doit nécessairement être rejeté. +On peut aussi demander à recevoir des rapports en cas d'échec. + +Référence : <https://fr.wikipedia.org/wiki/DMARC> + +**Exemple d'enregistrements DNS :** + +``` +_dmarc.deuxfleurs.fr. 300 IN TXT "v=DMARC1; p=reject; sp=reject; adkim=s; fo=1; aspf=s; ruf=mailto:prod-sysadmin@deuxfleurs.fr; rua=mailto:prod-sysadmin@deuxfleurs.fr; rf=afrf; pct=100; ri=86400" +_dmarc.adnab.me. 3600 IN TXT "v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s; rua=mailto:postmaster@adnab.me!10m; ruf=mailto:postmaster@adnab.me!10m; rf=afrf; pct=100; ri=86400" +``` + +L'enregistrement peut contenir les champs suivants: + +- `v=DMARC1` indique la version de DMARC utilisée +- `p` : procédure en cas d'échec avec le domaine principal (`none/quarantaine/reject`) +- `sp` : comme `p` mais s'applique aux sous-domaines +- `adkim` : indique si on doit appliquer la règle DKIM de manière stricte (`s`, le nom de domaine doit correspondre exactement) ou relaxée (`r`, des variations sur le nom de domaine sont permises) +- `aspf` : indique si on doit appliquer la règle SPF de manière stricte (`s`) ou relaxée (`r`) +- `ruf` : addresse mail à laquelle envoyer un rapport d'échec détaillé à chaque échec de validation +- `fo` : condition pour l'envoi d'un rapport d'échec détaillé (1 = si soit DKIM soit SPF a échoué) +- `rua` : addresse mail à laquelle envoyer un rapport d'échec aggrégé périodiquement +- `ri` : intervalle en secondes entre l'envoi des rapports aggrégés (86400 = 24h) +- `rf` : format des rapports (`afrf` est la seule valeur officiellement supportée) +- `pct` : proportion de messages à rejeter en cas d'échec + +**Chez Deuxfleurs :** + +- L'enregistrement DMARC est configuré pour rejeter de manière strict tout message ne passant pas la vérification SPF ou DKIM. +- Les rapports d'erreur doivent être envoyés à l'addresse `prod-sysadmin@deuxfleurs.fr` qui est consultés par les administrateurs systèmes de Deuxfleurs. +- Pour tous les autres domaines dont le courrier est traîté par les serveurs Deuxfleurs, on utilise un enregistrement DMARC en CNAME vers `_dmarc.deuxfleurs.fr` pour que la gestion des règles soit centralisée via l'enregistrement défini sur les DNS Deuxfleurs. + +## Reverse DNS + +L'enregistrement reverse DNS peut être utilisé par le serveur de destination +pour connaître le nom d'hôte correspondant à l'addresse IP du serveur qui a +envoyé le mail. Cet enregistrement doit idéalement correspondre à un nom de +domaine qui lui-même résoud à nouveau vers la même addresse IP. +L'application de cette règle de filtrage est à la discrétion des différents hébergeurs +mail, elle ne rentre pas dans le cadre défini par DMARC. + +**Exemple d'enregistrements reverse DNS :** + +``` +201.80.66.82.in-addr.arpa. 86179 IN PTR orion.site.deuxfleurs.fr. +206.118.187.37.in-addr.arpa. 86400 IN PTR shiki.adnab.me. +``` + + diff --git a/content/operations/deploiement/noeud/guide_création_nœud.md b/content/operations/guide_création_nœud.md index 907d4a8..4115aef 100644 --- a/content/operations/deploiement/noeud/guide_création_nœud.md +++ b/content/operations/guide_création_nœud.md @@ -1,10 +1,12 @@ -+++ -title = "Guide de création d'un nœud" -description = "Guide de création d'un nœud" -date = 2022-08-23 -dateCreated = 2022-08-23 -weight = 11 -+++ +--- +title: "Guide de création d'un nœud" +description: "Guide de création d'un nœud" +date: 2022-08-23 +dateCreated: 2022-08-23 +weight: 11 +extra: + parent: 'operations/noeud.md' +--- # Guide d'initialisation de nœud Deuxfleurs Ce guide explique comment initialiser un nœud pour l'infrastructure de Deuxfleurs. Nous partons de zéro, c'est-à -dire avec une machine que nous venons de récupérer, avec une mémoire vide, et que nous venons de brancher. À titre d'exemple, nous illustrerons de temps en temps les opérations avec une de nos machines (un Thinkcentre de Lenovo). @@ -14,7 +16,7 @@ Configurons d'abord quelques paramètres dans l'UEFI de la machine. Démarrez-là ## Installation de NixOS -> Aucun écran ou clavier n'est disponible pour l'ordinateur cible ? NixOS peut être installé en SSH. Suivre les instructions sur [cette page](/operations/deploiement/noeud/ssh-sans-ecran). +> Aucun écran ou clavier n'est disponible pour l'ordinateur cible ? NixOS peut être installé en SSH, une page y est dédiée : [Installer NixOS sans écran](@/operations/SSH_sans_écran.md). Pour installer NixOS, nous aurons besoin d'une clé USB avec une image amorçable (*live*) de NixOS dessus. Nous pouvons télécharger la distribution linux en 64 bits et en version minimale (sans interface graphique et avec moins d'utilitaires) sur le [site officiel](https://nixos.org/download.html). Pour écrire l'image sur le support USB, on peut faire `dd if=chemin-vers-le-fichier-iso of=/dev/sdX status=progress; sync`, en remplaçant `sdX` par le fichier périphérique correspondant à la clé, trouvé avec `lsblk` par exemple. Alternativement, cela peut être l'occasion de créer une clé USB formatée avec [Ventoy](https://ventoy.net), un utilitaire très pratique diff --git a/content/operations/debogage/jitsi.md b/content/operations/jitsi.md index 1ca45be..07bfcf9 100644 --- a/content/operations/debogage/jitsi.md +++ b/content/operations/jitsi.md @@ -1,10 +1,12 @@ -+++ -title = "Jitsi" -description = "" -date = 2021-11-09T12:53:23.811Z -dateCreated = 2021-11-09T12:46:50.731Z -weight = 20 -+++ +--- +title: "Jitsi" +description: "" +date: 2021-11-09T12:53:23.811Z +dateCreated: 2021-11-09T12:46:50.731Z +weight: 20 +extra: + parent: 'operations/debogage.md' +--- ## 2020-04-02 Campagne de debug Jitsi diff --git a/content/operations/maintien_en_condition.md b/content/operations/maintien_en_condition.md new file mode 100644 index 0000000..8a89a2b --- /dev/null +++ b/content/operations/maintien_en_condition.md @@ -0,0 +1,12 @@ +--- +title: "Maintien en condition" +description: "Maintien en condition" +sort_by: "weight" +weight: 40 +extra: + parent: 'operations/_index.md' +--- + +# En condition opérationnele + +# En condition de sécurité diff --git a/content/operations/maintien_en_condition/_index.md b/content/operations/maintien_en_condition/_index.md deleted file mode 100644 index 73d8812..0000000 --- a/content/operations/maintien_en_condition/_index.md +++ /dev/null @@ -1,10 +0,0 @@ -+++ -title = "Maintien en condition" -description = "Maintien en condition" -sort_by = "weight" -weight = 20 -+++ - -# En condition opérationnele - -# En condition de sécurité diff --git a/content/operations/maintien_en_condition/matrix.md b/content/operations/matrix.md index 534bfb8..bfcde55 100644 --- a/content/operations/maintien_en_condition/matrix.md +++ b/content/operations/matrix.md @@ -1,10 +1,12 @@ -+++ -title = "Mà J Matrix" -description = "Mise à jour de Matrix (Synapse/Element)" -date = 2022-12-22 -dateCreated = 2022-12-22 -weight = 11 -+++ +--- +title: "Mà J Matrix" +description: "Mise à jour de Matrix (Synapse/Element)" +date: 2022-12-22 +dateCreated: 2022-12-22 +weight: 11 +extra: + parent: 'operations/maintien_en_condition.md' +--- How to update Matrix? ===================== @@ -69,12 +71,9 @@ Do the same thing for the `synapse` service. Now, you need a way to access the cluster to deploy this file. To do this, you must bind nomad on your machine through a SSH tunnel. -Check the end of [the parent `README.md`](../README.md) to do it. If you have access to the Nomad web UI when entering http://127.0.0.1:4646 you are ready to go. -You must have installed the Nomad command line tool on your machine (also explained in [the parent `README.md`](../README.md)). - Now, on your machine and from the `app/im/deploy` folder, you must be able to run: ``` diff --git a/content/operations/deploiement/grappe/_index.md b/content/operations/nixcfg.md index 80de97d..921f635 100644 --- a/content/operations/deploiement/grappe/_index.md +++ b/content/operations/nixcfg.md @@ -1,10 +1,12 @@ -+++ -title = "Grappe" -description = "Grappe" -weight = 20 -date = 2022-12-22 -sort_by = "weight" -+++ +--- +title: "nixcfg" +description: "Le dépôt nixcfg" +weight: 20 +date: 2022-12-22 +sort_by: "weight" +extra: + parent: 'operations/noeud.md' +--- # Installation diff --git a/content/operations/deploiement/noeud/_index.md b/content/operations/noeud.md index d44044a..31604d4 100644 --- a/content/operations/deploiement/noeud/_index.md +++ b/content/operations/noeud.md @@ -1,14 +1,16 @@ -+++ -title = "Noeud" -description = "Déploiement d'un noeud" -date = 2022-08-23 -dateCreated = 2021-08-23 -sort_by = "weight" -+++ +--- +title: "Installer un noeud" +description: "Déploiement d'un noeud" +date: 2022-08-23 +dateCreated: 2021-08-23 +weight: 20 +extra: + parent: 'operations/_index.md' +--- # Déployer un nœud au sein de l'infrastructure Deuxfleurs Déployer un nœud au sein de l'infrastructure Deuxfleurs demande un certaine préparation et représente un processus particulier. -Avant de se lancer, [mieux vaut vérifier les prérequis pour y parvenir](./prerequis/). Une fois ceci fait, on peut suivre [le guide décrivant la procédure](./guide-creation-noeud/). +Avant de se lancer, [mieux vaut vérifier les prérequis pour y parvenir](@/operations/prérequis.md). Une fois ceci fait, on peut suivre [le guide décrivant la procédure](@/operations/guide_création_nœud.md). -Si vous avez une machine à installer, mais aucun écran & clavier à brancher dessus pour la configurer, référez-vous au [guide d'installation de NixOs en SSH](./ssh-sans-ecran/). +Si vous avez une machine à installer, mais aucun écran & clavier à brancher dessus pour la configurer, référez-vous au [guide d'installation de NixOs en SSH](@/operations/SSH_sans_écran.md). diff --git a/content/operations/pannes.md b/content/operations/pannes.md new file mode 100644 index 0000000..dc8042c --- /dev/null +++ b/content/operations/pannes.md @@ -0,0 +1,15 @@ +--- +title: "Pannes" +description: "Pannes" +weight: 70 +sort_by: "weight" +extra: + parent: 'operations/_index.md' +--- + +Nous aimerions mettre en place une culture du postmortem. +C'est très important pour s'améliorer et apprendre de ses erreurs, +pour prendre le temps de se questionner sur ce qui a disfonctionné, +et réfléchir à comment changer en profondeur nos pratiques. +Et puis, plus simplement, si le problème venait à arriver +de nouveau, nous aurions alors déjà documenté comment le résoudre ! diff --git a/content/operations/pannes/_index.md b/content/operations/pannes/_index.md deleted file mode 100644 index 474558b..0000000 --- a/content/operations/pannes/_index.md +++ /dev/null @@ -1,6 +0,0 @@ -+++ -title = "Pannes" -description = "Pannes" -weight = 70 -sort_by = "weight" -+++ diff --git a/content/operations/acces/pass.md b/content/operations/pass.md index 357db2e..795da1f 100644 --- a/content/operations/acces/pass.md +++ b/content/operations/pass.md @@ -1,8 +1,10 @@ -+++ -title = "Le dépôt des secrets" -description = "Le dépôt des secrets" -weight = 10 -+++ +--- +title: "Le dépôt des secrets" +description: "Le dépôt des secrets" +weight: 10 +extra: + parent: 'operations/acces.md' +--- We use [pass, 'the standard unix password manager'](https://www.passwordstore.org/), to manage our key store securely at Deuxfleurs. Getting access to our production involves publishing one's GPG key (through Gitea) and importing/verifying/signing every other sysadmin's key, before setting up `pass`. Lastly, you will be able to set your shell password on the desired cluster (`prod` or `staging`, at the time of writing). diff --git a/content/operations/pannes/petits-incidents.md b/content/operations/petits-incidents.md index 658757f..d14e91c 100644 --- a/content/operations/pannes/petits-incidents.md +++ b/content/operations/petits-incidents.md @@ -1,10 +1,12 @@ -+++ -title = "Petits incidents" -description = "Petits incidents" -date = 2022-12-22 -dateCreated = 2022-12-22 -weight = 1000 -+++ +--- +title: "Petits incidents" +description: "Petits incidents" +date: 2022-12-22 +dateCreated: 2022-12-22 +weight: 1000 +extra: + parent: 'operations/pannes.md' +--- - **2020** Publii efface le disque dur d'un de nos membres. Il a changé le dossier de sortie vers /home qui a été effacé diff --git a/content/operations/sauvegardes/pg_basebackup.md b/content/operations/pg_basebackup.md index 357e11f..f680108 100644 --- a/content/operations/sauvegardes/pg_basebackup.md +++ b/content/operations/pg_basebackup.md @@ -1,8 +1,10 @@ -+++ -title = "pg_basebackup" -description = "pg_basebackup" -weight=15 -+++ +--- +title: "pg_basebackup" +description: "pg_basebackup" +weight: 15 +extra: + parent: 'operations/sauvegardes.md' +--- ## Disclaimer diff --git a/content/operations/debogage/plume.md b/content/operations/plume.md index c256a45..8b8aa2a 100644 --- a/content/operations/debogage/plume.md +++ b/content/operations/plume.md @@ -1,10 +1,12 @@ -+++ -title = "Plume" -description = "Plume" -date = 2022-12-22 -dateCreated = 2022-12-22 -weight = 11 -+++ +--- +title: "Plume" +description: "Plume" +date: 2022-12-22 +dateCreated: 2022-12-22 +weight: 11 +extra: + parent: 'operations/debogage.md' +--- ## Bug and debug diff --git a/content/operations/prestataires.md b/content/operations/prestataires.md new file mode 100644 index 0000000..ab1f796 --- /dev/null +++ b/content/operations/prestataires.md @@ -0,0 +1,27 @@ +--- +title: "Prestataires" +description: "Prestataires" +weight: 80 +extra: + parent: 'operations/_index.md' +--- + +# DNS + +Gandi + +# Pont IPv6 + +FDN + +# Paquets + +Docker Hub + +# FAI + +Free, SFR, et autres + +# Électricité + +EDF diff --git a/content/operations/prestataires/_index.md b/content/operations/prestataires/_index.md deleted file mode 100644 index 31d83fc..0000000 --- a/content/operations/prestataires/_index.md +++ /dev/null @@ -1,25 +0,0 @@ -+++ -title = "Prestataires" -description = "Prestataires" -weight = 80 -+++ - -# DNS - -Gandi - -# Pont IPv6 - -FDN - -# Paquets - -Docker Hub - -# FAI - -Free, SFR, et autres - -# Électricité - -EDF diff --git a/content/operations/deploiement/noeud/prérequis.md b/content/operations/prérequis.md index 27dc414..37d5179 100644 --- a/content/operations/deploiement/noeud/prérequis.md +++ b/content/operations/prérequis.md @@ -1,10 +1,12 @@ -+++ -title = "Prérequis pour un nœud" -description = "Prérequis pour un nœud" -date = 2022-01-09T13:29:29.710Z -dateCreated = 2021-12-28T14:33:59.088Z -weight = 10 -+++ +--- +title: "Prérequis pour un nœud" +description: "Prérequis pour un nœud" +date: 2022-01-09T13:29:29.710Z +dateCreated: 2021-12-28T14:33:59.088Z +weight: 10 +extra: + parent: 'operations/noeud.md' +--- Dans ce guide, nous allons expliquer comment installer une grappe de serveurs, en vue d'un hébergement pour Deuxfleurs. @@ -36,4 +38,4 @@ On peut distinguer deux types de sites : On aura affaire à sa box (NAT, pare-feu...), au manque de garanties concernant notre adressabilité (IPv4 dynamique, IPv6 ? ...), ce qui va nous mener à devoir faire du routage. Le nœud du problème, c'est que chaque ordinateur de la grappe n'aura pas pignon sur rue (pas d'adresse IP publique et fixe par machine). Néanmoins, **on est chez nous !** Votre disque dur - qui contient les données personnelles de vos usagers chéris - est sous vos yeux, bien au chaud. Le seul curieux qui voit passer votre trafic réseau est votre FAI : *rien de nouveau sous le soleil*. -
\ No newline at end of file + diff --git a/content/operations/sauvegardes/rclone.md b/content/operations/rclone.md index 85868c0..1352aaf 100644 --- a/content/operations/sauvegardes/rclone.md +++ b/content/operations/rclone.md @@ -1,9 +1,11 @@ -+++ -title = "rclone" -description = "rclone" -weight = 20 -sort_by = "weight" -+++ +--- +title: "rclone" +description: "rclone" +weight: 20 +sort_by: "weight" +extra: + parent: 'operations/sauvegardes.md' +--- Script de backup brut, on planifie une approche plus élégante à l'avenir : diff --git a/content/operations/sauvegardes/restic.md b/content/operations/restic.md index 73463d1..099d011 100644 --- a/content/operations/sauvegardes/restic.md +++ b/content/operations/restic.md @@ -1,8 +1,10 @@ -+++ -title = "restic" -description = "restic" -weight = 10 -+++ +--- +title: "restic" +description: "restic" +weight: 10 +extra: + parent: 'operations/sauvegardes.md' +--- Add the admin account as `deuxfleurs` to your `~/.mc/config` file diff --git a/content/operations/sauvegardes/_index.md b/content/operations/sauvegardes.md index b4d2c79..5c62980 100644 --- a/content/operations/sauvegardes/_index.md +++ b/content/operations/sauvegardes.md @@ -1,33 +1,35 @@ -+++ -title = "Sauvegardes" -description = "Sauvegardes" -weight = 30 -sort_by = "weight" -+++ +--- +title: "Sauvegardes" +description: "Sauvegardes" +weight: 50 +sort_by: "weight" +extra: + parent: 'operations/_index.md' +--- # Données sauvegardées -[restic](./restic/) - Nous utilisons restic pour sauvegarder les logiciels +[restic](@/operations/restic.md) - Nous utilisons restic pour sauvegarder les logiciels qui utilisent le système de fichier (Cryptpad, Dovecot, et Plume) ainsi que Consul. À terme, nous aimerions être en mesure de tout pouvoir stocker directement sur Garage et rendre obsolète ce mode de sauvegarde. -[pg\_basebackup](./pg_basebackup/) - Nous utilisons cet outils pour sauvegarder l'ensemble +[pg\_basebackup](@/operations/pg_basebackup.md) - Nous utilisons cet outils pour sauvegarder l'ensemble des tables gérées par notre base de données SQL sans impacter trop les performances. Le tout est réalisé par un script python qui chiffre avec [age](https://github.com/FiloSottile/age) et envoie le backup via S3. À terme, nous aimerions utiliser [wal-g](https://github.com/wal-g/wal-g) à la place. -[rclone](./rclone/) - Combiné avec btrfs, nous copions sur un système de fichier à plat +[rclone](@/operations/rclone.md) - Combiné avec btrfs, nous copions sur un système de fichier à plat le contenu de notre cluster afin de faire face en cas de corruption. À terme, nous aimerions remplacer cet outil par quelque chose de similaire à [s3s3mirror](https://github.com/cobbzilla/s3s3mirror). # Localisation des sauvegardes -[Suresnes](/infrastructures/machines/support/#suresnes-mercure) - À Suresnes, nous avons une instance Minio +[Suresnes](@/infrastructures/support.md#suresnes-mercure) - À Suresnes, nous avons une instance Minio dédiée aux sauvegardes de données. Elle reçoit les sauvegardes du système de fichier, de consul et de Postgres. -[Rennes 2](/infrastructures/machines/support/#rennes-2-jupiter) - À Rennes, nous avons un simple serveur Debian +[Rennes 2](@/infrastructures/support.md#rennes-jupiter) - À Rennes, nous avons un simple serveur Debian avec une partition en BTRFS. Il se charge de sauvegarder toutes les nuits le contenu de notre instance de production de Garage. À terme il est possible qu'on décide de rationaliser nos sauvegardes et de choisir de sauvegarder S3. diff --git a/content/operations/ssh.md b/content/operations/ssh.md new file mode 100644 index 0000000..83b09bd --- /dev/null +++ b/content/operations/ssh.md @@ -0,0 +1,11 @@ +--- +title: "SSH" +description: "SSH" +weight: 100 +extra: + parent: 'operations/acces.md' +--- + +Voir si on documente comment gérer SSH depuis GPG + +# Ajout de la clé au cluster diff --git a/content/operations/deploiement/grappe/stolon.md b/content/operations/stolon.md index 4a683f4..de20f09 100644 --- a/content/operations/deploiement/grappe/stolon.md +++ b/content/operations/stolon.md @@ -1,10 +1,12 @@ -+++ -title = "Stolon" -description = "Comment déployer Stolon" -date = 2022-12-22 -dateCreated = 2022-12-22 -weight = 11 -+++ +--- +title: "Stolon" +description: "Comment déployer Stolon" +date: 2022-12-22 +dateCreated: 2022-12-22 +weight: 11 +extra: + parent: 'operations/deployer.md' +--- Spawn container: diff --git a/content/operations/supervision.md b/content/operations/supervision.md new file mode 100644 index 0000000..5b76a2b --- /dev/null +++ b/content/operations/supervision.md @@ -0,0 +1,23 @@ +--- +title: "Supervision" +description: "Supervision" +weight: 58 +sort_by: "weight" +extra: + parent: 'operations/_index.md' +--- + +# Métriques + +Grafana est accessible à l'adresse suivante : https://grafana.deuxfleurs.fr + +Vous pouvez obtenir le mot de passe admin en allant le chercher dans consul KV + +# Journaux + +Les journaux ne sont pas centralisés aujourd'hui. +Vous pouvez les consulter avec `docker logs`, `nomad` et `journalctl`. + +# Alertes + +Nous n'avons pas de système d'alerte aujourd'hui. diff --git a/content/operations/supervision/_index.md b/content/operations/supervision/_index.md deleted file mode 100644 index ee71625..0000000 --- a/content/operations/supervision/_index.md +++ /dev/null @@ -1,12 +0,0 @@ -+++ -title = "Supervision" -description = "Supervision" -weight = 40 -sort_by = "weight" -+++ - -# Métriques - -# Journaux - -# Alertes diff --git a/content/operations/vue_ensemble/_index.md b/content/operations/vue_ensemble.md index acd5d28..cbd337d 100644 --- a/content/operations/vue_ensemble/_index.md +++ b/content/operations/vue_ensemble.md @@ -1,9 +1,11 @@ -+++ -title = "Vue d'ensemble" -description = "Vue d'ensemble" -sort_by = "weight" -weight = 2 -+++ +--- +title: "Vue d'ensemble" +description: "Vue d'ensemble" +sort_by: "weight" +weight: 0 +extra: + parent: 'operations/_index.md' +--- *Ajouter un schéma* |