ansible-role-docker_mastodon/README.md

106 lines
10 KiB
Markdown

# Role : docker_mastodon
## Services fournis
Installation d'un serveur mastodon sur serveur docker_host
## Variables
```yaml
docker_mastodon_fqdn: mastodon.example.com
docker_mastodon_data_dir: /data1
docker_mastodon_service_id: mastodon
docker_mastodon_image_version: x.y.z
docker_mastodon_local_domain: example.com
docker_mastodon_db_name: mastodondb
docker_mastodon_db_user: user_proprietaire_bdd
docker_mastodon_db_password: mdp_proprietaire_bdd
docker_mastodon_secret_key_base: inserer_le_secret_key_base_voir_premiere_installation
docker_mastodon_otp_secret: inserer_ici_otp_secret_voir_premiere_installation
docker_mastodon_vapid_private_key: inserer_ici_vapid_private_key_voir_premiere_installation
docker_mastodon_vapid_public_key: inserer_ici_vapid_public_key_voir_premiere_installation
docker_mastodon_mail_smtp_server: smtp.example.com
docker_mastodon_mail_smtp_port: 587
docker_mastodon_mail_from: nepasrepondre@example.com
docker_mastodon_oidc_enabled: true
docker_mastodon_oidc_display_name: "Libretic"
docker_mastodon_oidc_issuer: https://login.example.com/auth/realms/example-space
docker_mastodon_oidc_discovery: true
docker_mastodon_oidc_scopes: "openid,profile"
docker_mastodon_oidc_uid_field: uid
docker_mastodon_oidc_client_id: masto-oidc
docker_mastodon_oidc_redirect_uri: https://mastodon.example.com/auth/auth/openid_connect/callback
docker_mastodon_oidc_security_assume_email_is_verified: true
docker_mastodon_oidc_client_secret: oidc_client_secret
docker_mastodon_rp_cert: LE
docker_mastodon_rp_docker_host: machine.domaine.local
docker_mastodon_rp_access_policy: OpenAccessPolicy
docker_mastodon_rp_indexing: Empty
docker_mastodon_rp_waf: "On"
```
| Option | Valeur par défaut | Description |
|--------------------------------------------------------|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
| docker_mastodon_fqdn | | Nom de domaine pour lequel le service mastodon répond |
| docker_mastodon_data_dir | | L'emplacement dans lequel se trouvent les volumes de donnees docker pour le service |
| docker_mastodon_service_id | | Le nom de service souhaité : conditionne le nommage des volumes et le routage par traefik |
| docker_mastodon_image_version | | Version de mastodon et de l'image docker |
| docker_mastodon_local_domain | | Domaine des utilisateurs permettant l'emploi d'adresses mastodon de la forme @user@domain (nécessite la mise en place de webfinger sur le domaine) |
| docker_mastodon_db_name | | Nom de la base de données |
| docker_mastodon_db_user | | Nom du proprietaire_de la base |
| docker_mastodon_db_password | | MDP du proprietaire_de la base |
| docker_mastodon_secret_key_base | | Valeur de secret_key_base généré pour la première installation |
| docker_mastodon_otp_secret | | Valeur de otp_secret généré pour la première installation |
| docker_mastodon_vapid_private_key | | Valeur de vapid_private_key généré pour la première installation |
| docker_mastodon_vapid_public_key | | Valeur de vapid_public_key généré pour la première installation |
| docker_mastodon_mail_smtp_server | | Serveur smtp par lequel mastodon envoie des emails |
| docker_mastodon_mail_smtp_port | 587 | Port d'envoi des emails |
| docker_mastodon_mail_smtp_login | vide | |
| docker_mastodon_mail_smtp_password | vide | |
| docker_mastodon_mail_from | | Adresse d'expéditeur par laquelle mastodon envoie des emails |
| docker_mastodon_oidc_enabled | false | Permet d'activer l'authentification par OpenID Connect |
| docker_mastodon_oidc_display_name | | Nom affiché pour la connection via OpenID Connect |
| docker_mastodon_oidc_issuer | | Url "issuer" de la fédération OpenID Connect |
| docker_mastodon_oidc_discovery | true | |
| docker_mastodon_oidc_scopes | openid,profile | Scopes récupérés via OpenID Connect |
| docker_mastodon_oidc_uid_field | uid | Attribut utilisé pour constituer l'identifiant Mastodon |
| docker_mastodon_oidc_client_id | | Identifiant de client OpenID Connect de l'instance |
| docker_mastodon_oidc_client_secret | | Secret de client OpenID Connect de l'instance |
| docker_mastodon_oidc_redirect_uri | cf. defaults | Url de redirection après une connection via OpenID Connect |
| docker_mastodon_oidc_security_assume_email_is_verified | true | Indique à mastodon qu'il n'est pas nécessaire de valilder l'adresse email pour un utilisateur OpenID Connect |
| docker_mastodon_rp_docker_host | | Pour configure_reverse_proxy.yml: fqdn de la machine contenant le conteneur docker |
| docker_mastodon_rp_cert | LE | Type de certificat pour le reverse proxy (LE = letsencrypt) |
| docker_mastodon_rp_access_policy | | Modèle d'autorisation d'accès du reverse proxy |
| docker_mastodon_rp_indexing | | Stratégie du reverse proxy vis à vis des robots |
| docker_mastodon_rp_waf | | Activation websecurity du reverse proxy |
## Première installation
- provisionner l'environnement une première fois en positionnant la variable docker_mastodon_gen_secrets à true ; le playbook va générer des valeurs à copier/coller dans les variables de playbook de l'environnement
```
ansible-playbook -i inventory/vms -i inventory/mastodon setup_mastodon.yml -e "{ docker_mastodon_gen_secrets: true }"
```
- pour le premier démarrage uniquement, lancer le playbook avec la variable `docker_mastodon_initialize_data` positionnée à `true` ; attention, cela efface les données et initialise une instance de mastodon vide
```
ansible-playbook -i inventory/vms -i inventory/mastodon setup_mastodon.yml -e "{ docker_mastodon_initialize_data: true }"
```
- enregistrer un premier utilisateur (éventuellement via une connexion OpenID Connect)
- lui donner le droit administrateur
```
docker exec -it mastodon_streaming_1 /bin/bash
mastodon@76beca2b858d:~$ RAILS_ENV=production bin/tootctl accounts modify <id_de_l_utilisateur> --role admin
```