Mastodon » Historique » Version 48
loris.hilaire, 13/03/2020 15:10
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 | 47 | loris.hilaire | ## Stockage et maintenance |
110 | 46 | ||
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 | 47 | loris.hilaire | De plus, la base de données peut se remplir plus que de raison avec des données qui n'ont plus aucun intérêt. |
113 | 46 | ||
114 | 47 | loris.hilaire | ### Supprimer les vieux médias distants |
115 | |||
116 | 46 | Une task a été créée pour Mastodon et ajoutée dans le cron de l'utilisateur mastodon (lancé quotidiennement) : |
|
117 | |||
118 | 47 | loris.hilaire | cd /home/mastodon/live && RAILS_ENV=production /home/mastodon/.rbenv/shims/bundle exec /home/mastodon/live/bin/tootctl media remove |
119 | 46 | ||
120 | 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. |
||
121 | 47 | loris.hilaire | |
122 | ### Supprimer les médias orphelins |
||
123 | |||
124 | Des médias locaux sans lien avec quoi que ce soit peuvent continuer à occuper de l'espace. Ils peuvent être supprimés automatiquement avec : |
||
125 | |||
126 | cd /home/mastodon/live && RAILS_ENV=production /home/mastodon/.rbenv/shims/bundle exec /home/mastodon/live/bin/tootctl media remove-orphans |
||
127 | |||
128 | ### Supprimer de la BDD les comptes n'existant plus |
||
129 | |||
130 | Certains comptes présents dans la BDD ainsi que des données liées à ceux-ci prennent de la place alors qu'ils n'existent plus. Pour faire le ménage : |
||
131 | |||
132 | 48 | loris.hilaire | cd /home/mastodon/live && RAILS_ENV=production /home/mastodon/.rbenv/shims/bundle exec /home/mastodon/live/bin/tootctl accounts cull |
133 | 47 | loris.hilaire | |
134 | ### Supprimer de la BDD les pouets distants et sans engagement |
||
135 | |||
136 | Cette commande va supprimer tous les pouets datés de plus de 90 jours (par défaut) qui n'ont pas été fav, boostés, ou sauvegardés par des utilisateurs de l'instance locale, et n'ont reçu aucune réponse (cette condition est un peu étrange et peut entraîner la suppression de différents pouets si on la lance plusieurs fois d'affilé). Par défaut, ça ne supprime pas les statuts de comptes suivis, mais on peut modifier cette option. |
||
137 | |||
138 | cd /home/mastodon/live && RAILS_ENV=production /home/mastodon/.rbenv/shims/bundle exec /home/mastodon/live/bin/tootctl status remove |