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. |