Projet

Général

Profil

Mastodon » Historique » Version 46

loris.hilaire, 21/10/2018 20:33
Les emails sont désormais fonctionnels

1 46
# Mastodon
2
3
## Présentation
4
5
Mastodon est un réseau social libre et décentralisé, développé par Eugen Rochko, qui a connu une croissance exponentielle en début avril 2017. Aquilenet a donc mis en place son instance afin de participer et de soutenir la montée en force du projet.
6
7
L'instance Mastodon Aquilenet est installée sur la VM Alcyon qui lui est dédiée et accessible à l'adresse toot.aquilenet.fr
8
9
## Mise à jour
10
11
La mise à jour de Mastodon est assez simple, et se base principalement sur le github officiel =\> https://github.com/tootsuite/mastodon
12
13
Si une nouvelle version stable est disponible (cf https://github.com/tootsuite/mastodon/releases), des mises à jour sont disponible, pusher un toot sur le compte `Aquilenet`toot.aquilenet.fr, pour annoncer une brève coupure des services. Si possible, prévoir de l'avance pour donner une heure de coupure. La mise à jour ne prend généralement que quelques minutes.
14
15
Ensuite, repasser en root
16
17
    su - monutilisateur
18
    sudo su
19
20
Et stopper les services Mastodon :
21
22
    systemctl stop mastodon-web.service mastodon-sidekiq.service mastodon-streaming.service
23
24
Repasser sur l'utilisateur mastodon (jongler avec deux terminaux peut faciliter la tâche et éviter ces allers-retours) :
25
26
    su - mastodon
27
    cd live
28
    git fetch
29
    git checkout v[numero-de-version]
30
    bundle install
31
    yarn install
32
    RAILS_ENV=production bundle exec rails db:migrate
33
    RAILS_ENV=production bundle exec rails assets:precompile
34
    exit
35
36
Une version plus complète, qui vérifie les besoins en termes de dépendances, est celle-ci (conseillée) :
37
38
    su - mastodon
39
    cd live
40
    git fetch
41
    git checkout v[numero-de-version]
42
    export RAILS_ENV=production
43
    export NODE_ENV=production
44
    bundle install --deployment --without test development
45
    npm upgrade --global yarn #Peut avoir des problèmes d'accès. Auquel cas le faire en root après un cd /home/mastodon/live.
46
    yarn
47
    RAILS_ENV=production bundle exec rake assets:clobber
48
    RAILS_ENV=production bundle exec rake assets:precompile
49
    RAILS_ENV=production bundle exec rake db:migrate
50
    exit
51
52
Il peut aussi y avoir besoin de mettre à jour Ruby (ici 2.4.1) :
53
54
    su - mastodon
55
    cd ~/.rbenv/plugins/ruby-build
56
    git pull
57
    rbenv install 2.4.1
58
    (rbenv rehash)
59
    cd ~/live
60
    git fetch
61
    git checkout v[numero-de-version]
62
    gem install bundler
63
    bundle install --deployment --without development test
64
    yarn install
65
    RAILS_ENV=production bundle exec rails db:migrate
66
    RAILS_ENV=production bundle exec rails assets:precompile
67
    exit
68
69
Enfin, il peut être nécessaire d'upgrader npm ; dans ce cas, avant de fetch Mastodon, faire :
70
71
    npm cache clean -f
72
    npm install -g n
73
    n stable
74
75
Si tout s'est bien passé, on relance les services :
76
77
    systemctl start mastodon-web.service mastodon-sidekiq.service mastodon-streaming.service
78
79
Et on checke que tout est au vert :
80
81
    systemctl status mastodon-web.service mastodon-sidekiq.service mastodon-streaming.service
82
83
On peut ensuite informer les utilisateurs du retour à la normale et que la mise à jour a bien été effectuée \!
84
85
## Certificat Let's Encrypt
86
87
toot.aquilenet.fr utilise un certificat Let's Encrypt pour proposer du SSL/TLS de qualité. Malheureusement, Let's Encrypt demande encore et toujours un renouvellement tous les 3 mois.
88
89
Le renouvellement est automatisé par un cron daily qui teste tous les jours si l'expiration du certificat est \< 30 jours et lance le script renewCerts.sh disponible dans /srv/letsencrypt. Si jamais cela ne fonctionne pas, pour renouveler le certificat :
90
91
    sudo certbot renew
92
    sudo service nginx reload
93
94
Si cela ne semble pas fonctionner, rallonger comme suit :
95
96
    certbot certonly -n --cert-name toot.aquilenet.fr --webroot -w /srv/letsencrypt/ -d toot.aquilenet.fr
97
    sudo service nginx reload
98
99
Si cela ne fonctionne toujours pas, passer en root et carrément créer un nouveau certificat en écrasant l'ancien :
100
101
    service nginx stop
102
    letsencrypt certonly -d toot.aquilenet.fr --agree-tos -m admin@aquilenet.fr --rsa-key-size 4096 --standalone
103
    service nginx start
104
105
### Backups
106
107
Actuellement, une backup du nécessaire (Postgres + Ruby) est faire par BackupNinja.
108
109
### Stockage des médias
110
111
Mastodon stocke localement tous les médias distants affichés par les utilisateurs de l'instance. Un NFS a été monté sur Saya afin de permettre de tenir la charge qui monte exponentiellement.
112
113
Une task a été créée pour Mastodon et ajoutée dans le cron de l'utilisateur mastodon (lancé quotidiennement) :
114
115
    @daily cd /home/mastodon/live && RAILS_ENV=production /home/mastodon/.rbenv/shims/bundle exec rake mastodon:media:remove_remote NUM_DAYS=7
116
117
Cela permet de supprimer tous les médias distants supérieurs à 7 jours du cache de l'instance. Les liens restent trouvables dans les toots associés, donc l'impact est mineur pour l'utilisateur, et bénéfique pour nous.