Proofreading README file.
This commit is contained in:
parent
d77fbf0b6c
commit
01e719e6ed
277
README.md
277
README.md
|
@ -1,4 +1,4 @@
|
||||||
# Survol des playbooks Ansible
|
# Playbooks Ansible de l’AFPy
|
||||||
|
|
||||||
On découpe nos *playbooks* Ansible par rôles :
|
On découpe nos *playbooks* Ansible par rôles :
|
||||||
|
|
||||||
|
@ -41,10 +41,15 @@ Ne pas faire :
|
||||||
|
|
||||||
La distinction services/serveurs :
|
La distinction services/serveurs :
|
||||||
|
|
||||||
- Un serveur contient un nombre dans son nom : deb2.afpy.org,
|
- Un serveur contient un nombre dans son nom :
|
||||||
bbb2.afpy.org, …
|
- deb2.afpy.org,
|
||||||
- Un service ne contient pas de chiffre dans son hostname :
|
- bbb2.afpy.org,
|
||||||
discuss.afpy.org, bbb.afpy.org, www.afpy.org, …
|
- …
|
||||||
|
- Un service ne contient pas de chiffre dans son nom :
|
||||||
|
- discuss.afpy.org,
|
||||||
|
- bbb.afpy.org,
|
||||||
|
- www.afpy.org,
|
||||||
|
- …
|
||||||
|
|
||||||
|
|
||||||
## deb2.afpy.org
|
## deb2.afpy.org
|
||||||
|
@ -53,14 +58,14 @@ La distinction services/serveurs :
|
||||||
|
|
||||||
C’est un VPS `V-R4 2 CPUs · 4 GB RAM`.
|
C’est un VPS `V-R4 2 CPUs · 4 GB RAM`.
|
||||||
|
|
||||||
Elle héberge les services suivants :
|
Elle héberge surtout des sites statiques, mais pas que :
|
||||||
|
|
||||||
- https://www.afpy.org ([source](https://github.com/AFPy/site))
|
- https://www.afpy.org ([source](https://github.com/AFPy/site)).
|
||||||
- [https://\*.pycon.fr/\*](https://pycon.fr/) (que des sites statiuques)
|
- [https://\*.pycon.fr/\*](https://pycon.fr/) (que des sites statiuques).
|
||||||
- Alain le bot IRC du canal #afpy ([source](https://github.com/AFPy/alain))
|
- 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)
|
- La gate [IRC](https://afpy.org/irc)—[Discord](https://afpy.org/discord) (un [discord-irc-sync](https://github.com/Hackndo/discord-irc-sync)).
|
||||||
- https://dl.afpy.org: un *directory listing* nginx des vidéos de nos conférences.
|
- https://dl.afpy.org: un *directory listing* nginx des vidéos de nos conférences.
|
||||||
- https://logs.afpy.org: Les logs du salon IRC #afpy ([source](https://github.com/AFPy/AfpyLogs/))
|
- https://logs.afpy.org: Les logs du salon IRC #afpy ([source](https://github.com/AFPy/AfpyLogs/)).
|
||||||
- https://munin.afpy.org
|
- https://munin.afpy.org
|
||||||
|
|
||||||
|
|
||||||
|
@ -70,6 +75,128 @@ Elle héberge les services suivants :
|
||||||
|
|
||||||
C’est un VPS `V-R8 4 CPUs · 8 GB RAM`.
|
C’est un VPS `V-R8 4 CPUs · 8 GB RAM`.
|
||||||
|
|
||||||
|
C’est une Ubuntu 18.04 (c’est imposé par BBB).
|
||||||
|
|
||||||
|
Elle n’est **pas** gérée par Ansible, c’est un peu particulier BBB.
|
||||||
|
|
||||||
|
J’y ai appliqué un poil de ssh-hardening :
|
||||||
|
|
||||||
|
AuthenticationMethods publickey
|
||||||
|
LogLevel VERBOSE
|
||||||
|
|
||||||
|
Ensuite j’ai [rsync les enregistrements depuis le bbb
|
||||||
|
précédent](https://docs.bigbluebutton.org/2.2/customize.html#transfer-published-recordings-from-another-server).
|
||||||
|
|
||||||
|
Puis j’ai sauvegardé/restauré la DB de greenlight :
|
||||||
|
|
||||||
|
# Sur l’ancienne machine :
|
||||||
|
docker exec greenlight_db_1 /usr/bin/pg_dumpall -U postgres -f /var/lib/postgresql/data/dump.sql
|
||||||
|
|
||||||
|
# Sur la nouvelle machine :
|
||||||
|
# Copier la sauvegarde sur le nouveau serveur :
|
||||||
|
cd ~root/greenlight
|
||||||
|
rsync bbb.afpy.org:/root/greenlight/db/production/dump.sql ./
|
||||||
|
|
||||||
|
docker-compose down
|
||||||
|
rm -fr db
|
||||||
|
# Configurer le même mot de passe dans .env et docker-compose.yml que l’ancienne machine
|
||||||
|
# En profiter pour vérifier le SAFE_HOSTS dans le .env.
|
||||||
|
docker-compose up -d
|
||||||
|
# Attendre un peu avec un top sous les yeux que ça se termine vraiment
|
||||||
|
docker exec greenlight_db_1 /usr/local/bin/psql -U postgres -c "DROP DATABASE greenlight_production;"
|
||||||
|
mv dump.sql db/production/
|
||||||
|
docker exec greenlight_db_1 /usr/local/bin/psql -U postgres -f /var/lib/postgresql/data/dump.sql
|
||||||
|
rm db/production/dump.sql
|
||||||
|
docker-compose down
|
||||||
|
docker-compose up -d # Il va s’occuper de la migration
|
||||||
|
docker-compose logs -f # pour voir si tout va bien
|
||||||
|
|
||||||
|
`rsync` des certificats TLS aussi :
|
||||||
|
|
||||||
|
rsync -vah bbb.afpy.org:/etc/letsencrypt/ /etc/letsencrypt/
|
||||||
|
|
||||||
|
Ça a pris un petit :
|
||||||
|
|
||||||
|
sed s/sd-106563.dedibox.fr/bbb.afpy.org/ /etc/nginx/sites-available/bigbluebutton
|
||||||
|
|
||||||
|
Il faut attendre un moment avec un `top` qui tourne, ruby a tout plein
|
||||||
|
de truc a faire avant de démarrer.
|
||||||
|
|
||||||
|
|
||||||
|
### BBB password reset
|
||||||
|
|
||||||
|
Pour accepter le password reset, BBB doit avoir :
|
||||||
|
|
||||||
|
ALLOW_MAIL_NOTIFICATIONS=true
|
||||||
|
|
||||||
|
dans /root/greenlight/.env
|
||||||
|
|
||||||
|
(Pour relire le `.env`: `cd /root/greenlight; docker-compose down && docker-compose up -d`)
|
||||||
|
|
||||||
|
Pour vérifier la conf :
|
||||||
|
|
||||||
|
docker run --rm --env-file .env bigbluebutton/greenlight:v2 bundle exec rake conf:check
|
||||||
|
|
||||||
|
Il y a des chances que ça ne passe pas, il faut laisser les mails
|
||||||
|
sortir de leur conteneur Docker (par défaut il utilise sendmail DANS
|
||||||
|
le conteneur).
|
||||||
|
|
||||||
|
Il faut configurer le `.env` tel que:
|
||||||
|
|
||||||
|
SMTP_SERVER=172.17.0.1
|
||||||
|
SMTP_PORT=25
|
||||||
|
SMTP_DOMAIN=greenlight.afpy.org
|
||||||
|
SMTP_SENDER=bbb@afpy.org
|
||||||
|
|
||||||
|
Puis vérifier qu’exim et le firewall (attention c’est peut-être `ufw`)
|
||||||
|
les acceptent.
|
||||||
|
|
||||||
|
|
||||||
|
### Configuration TURN/STUN
|
||||||
|
|
||||||
|
L’installation de BBB n’étant pas gérée par Ansible, pour le moment la
|
||||||
|
conf TURN/STUN est faite à la main, c’est la seule chose à faire, elle
|
||||||
|
ressemble à :
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||||
|
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
|
||||||
|
">
|
||||||
|
|
||||||
|
<bean id="stun0" class="org.bigbluebutton.web.services.turn.StunServer">
|
||||||
|
<constructor-arg index="0" value="stun:turn.afpy.org"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="turn0" class="org.bigbluebutton.web.services.turn.TurnServer">
|
||||||
|
<constructor-arg index="0" value="[redacte]"/>
|
||||||
|
<constructor-arg index="1" value="turns:turn.afpy.org:443?transport=tcp"/>
|
||||||
|
<constructor-arg index="2" value="86400"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="stunTurnService" class="org.bigbluebutton.web.services.turn.StunTurnService">
|
||||||
|
<property name="stunServers">
|
||||||
|
<set>
|
||||||
|
<ref bean="stun0" />
|
||||||
|
</set>
|
||||||
|
</property>
|
||||||
|
<property name="turnServers">
|
||||||
|
<set>
|
||||||
|
<ref bean="turn0" />
|
||||||
|
</set>
|
||||||
|
</property>
|
||||||
|
<property name="remoteIceCandidates">
|
||||||
|
<set>
|
||||||
|
</set>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
|
</beans>
|
||||||
|
```
|
||||||
|
|
||||||
|
dans `/usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml`.
|
||||||
|
|
||||||
|
|
||||||
## backup1.afpy.org
|
## backup1.afpy.org
|
||||||
|
|
||||||
|
@ -234,6 +361,7 @@ C’est un VPS `V-R4 2 CPUs · 4 GB RAM`.
|
||||||
|
|
||||||
Elle héberge https://discuss.afpy.org une instance Discourse.
|
Elle héberge https://discuss.afpy.org une instance Discourse.
|
||||||
|
|
||||||
|
|
||||||
### Déplacement du Discourse vers une nouvelle machine
|
### Déplacement du Discourse vers une nouvelle machine
|
||||||
|
|
||||||
Le 31 janvier 2023 Julien a déplacé le Discourse de deb2 à discourse1.
|
Le 31 janvier 2023 Julien a déplacé le Discourse de deb2 à discourse1.
|
||||||
|
@ -272,7 +400,7 @@ Bien tester l’envoi d’emails.
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
||||||
# Ansible
|
# Rôles utilisés
|
||||||
|
|
||||||
On utilies ces rôles Ansible :
|
On utilies ces rôles Ansible :
|
||||||
|
|
||||||
|
@ -300,130 +428,7 @@ sur toutes nos machines (emacs et vim installés, nos authorized-keys,
|
||||||
pas de mlocate, hostname propre, firewall, ce genre de broutilles).
|
pas de mlocate, hostname propre, firewall, ce genre de broutilles).
|
||||||
|
|
||||||
|
|
||||||
## BBB
|
## exim
|
||||||
|
|
||||||
Hébergé sur bbb2.afpy.org chez Gandi.
|
|
||||||
|
|
||||||
J’y ai appliqué un poil de ssh-hardening :
|
|
||||||
|
|
||||||
AuthenticationMethods publickey
|
|
||||||
LogLevel VERBOSE
|
|
||||||
|
|
||||||
Ensuite j’ai [rsync les enregistrements depuis le bbb
|
|
||||||
précédent](https://docs.bigbluebutton.org/2.2/customize.html#transfer-published-recordings-from-another-server).
|
|
||||||
|
|
||||||
Puis j’ai sauvegardé/restauré la DB de greenlight :
|
|
||||||
|
|
||||||
# Sur l’ancienne machine :
|
|
||||||
docker exec greenlight_db_1 /usr/bin/pg_dumpall -U postgres -f /var/lib/postgresql/data/dump.sql
|
|
||||||
|
|
||||||
# Sur la nouvelle machine :
|
|
||||||
# Copier la sauvegarde sur le nouveau serveur :
|
|
||||||
cd ~root/greenlight
|
|
||||||
rsync bbb.afpy.org:/root/greenlight/db/production/dump.sql ./
|
|
||||||
|
|
||||||
docker-compose down
|
|
||||||
rm -fr db
|
|
||||||
# Configurer le même mot de passe dans .env et docker-compose.yml que l’ancienne machine
|
|
||||||
# En profiter pour vérifier le SAFE_HOSTS dans le .env.
|
|
||||||
docker-compose up -d
|
|
||||||
# Attendre un peu avec un top sous les yeux que ça se termine vraiment
|
|
||||||
docker exec greenlight_db_1 /usr/local/bin/psql -U postgres -c "DROP DATABASE greenlight_production;"
|
|
||||||
mv dump.sql db/production/
|
|
||||||
docker exec greenlight_db_1 /usr/local/bin/psql -U postgres -f /var/lib/postgresql/data/dump.sql
|
|
||||||
rm db/production/dump.sql
|
|
||||||
docker-compose down
|
|
||||||
docker-compose up -d # Il va s’occuper de la migration
|
|
||||||
docker-compose logs -f # pour voir si tout va bien
|
|
||||||
|
|
||||||
`rsync` des certificats TLS aussi :
|
|
||||||
|
|
||||||
rsync -vah bbb.afpy.org:/etc/letsencrypt/ /etc/letsencrypt/
|
|
||||||
|
|
||||||
Ça a pris un petit :
|
|
||||||
|
|
||||||
sed s/sd-106563.dedibox.fr/bbb.afpy.org/ /etc/nginx/sites-available/bigbluebutton
|
|
||||||
|
|
||||||
Il faut attendre un moment avec un `top` qui tourne, ruby a tout plein
|
|
||||||
de truc a faire avant de démarrer.
|
|
||||||
|
|
||||||
|
|
||||||
### BBB password reset
|
|
||||||
|
|
||||||
Pour accepter le password reset, BBB doit avoir :
|
|
||||||
|
|
||||||
ALLOW_MAIL_NOTIFICATIONS=true
|
|
||||||
|
|
||||||
dans /root/greenlight/.env
|
|
||||||
|
|
||||||
(Pour relire le `.env`: `cd /root/greenlight; docker-compose down && docker-compose up -d`)
|
|
||||||
|
|
||||||
Pour vérifier la conf :
|
|
||||||
|
|
||||||
docker run --rm --env-file .env bigbluebutton/greenlight:v2 bundle exec rake conf:check
|
|
||||||
|
|
||||||
Il y a des chances que ça ne passe pas, il faut laisser les mails
|
|
||||||
sortir de leur conteneur Docker (par défaut il utilise sendmail DANS
|
|
||||||
le conteneur).
|
|
||||||
|
|
||||||
Il faut configurer le `.env` tel que:
|
|
||||||
|
|
||||||
SMTP_SERVER=172.17.0.1
|
|
||||||
SMTP_PORT=25
|
|
||||||
SMTP_DOMAIN=greenlight.afpy.org
|
|
||||||
SMTP_SENDER=bbb@afpy.org
|
|
||||||
|
|
||||||
Puis vérifier qu’exim et le firewall (attention c’est peut-être `ufw`)
|
|
||||||
les acceptent.
|
|
||||||
|
|
||||||
|
|
||||||
### Configuration TURN/STUN
|
|
||||||
|
|
||||||
L’installation de BBB n’étant pas gérée par Ansible, pour le moment la
|
|
||||||
conf TURN/STUN est faite à la main, c’est la seule chose à faire, elle
|
|
||||||
ressemble à :
|
|
||||||
|
|
||||||
```xml
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
|
||||||
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
|
|
||||||
">
|
|
||||||
|
|
||||||
<bean id="stun0" class="org.bigbluebutton.web.services.turn.StunServer">
|
|
||||||
<constructor-arg index="0" value="stun:turn.afpy.org"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="turn0" class="org.bigbluebutton.web.services.turn.TurnServer">
|
|
||||||
<constructor-arg index="0" value="[redacte]"/>
|
|
||||||
<constructor-arg index="1" value="turns:turn.afpy.org:443?transport=tcp"/>
|
|
||||||
<constructor-arg index="2" value="86400"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="stunTurnService" class="org.bigbluebutton.web.services.turn.StunTurnService">
|
|
||||||
<property name="stunServers">
|
|
||||||
<set>
|
|
||||||
<ref bean="stun0" />
|
|
||||||
</set>
|
|
||||||
</property>
|
|
||||||
<property name="turnServers">
|
|
||||||
<set>
|
|
||||||
<ref bean="turn0" />
|
|
||||||
</set>
|
|
||||||
</property>
|
|
||||||
<property name="remoteIceCandidates">
|
|
||||||
<set>
|
|
||||||
</set>
|
|
||||||
</property>
|
|
||||||
</bean>
|
|
||||||
</beans>
|
|
||||||
```
|
|
||||||
|
|
||||||
dans `/usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml`.
|
|
||||||
|
|
||||||
|
|
||||||
# DKIM
|
|
||||||
|
|
||||||
Le playbook exim configure une clé DKIM et signe les mails avec. Mais un humain doit la propager sur les DNS.
|
Le playbook exim configure une clé DKIM et signe les mails avec. Mais un humain doit la propager sur les DNS.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user