Documentation installation et mise à jour
This commit is contained in:
parent
bf005e9aea
commit
5d1f592c24
193
README.md
193
README.md
|
@ -2,6 +2,197 @@
|
|||
|
||||
Service courriel de l'association Libre en communs.
|
||||
|
||||
Responsable: Cyrille L. (@echolib)
|
||||
Responsables : @echolib, @neox
|
||||
|
||||
Déployé sur la machine `toot` (voir la [documentation spécifique](https://git.a-lec.org/a-lec/commissions/infrastructure/doc-infra/-/blob/master/Machines%20virtuelles/toot.md)).
|
||||
|
||||
## Installation du service
|
||||
|
||||
### Installation des dépendances
|
||||
|
||||
Créer l'utilisateur `mastodon`
|
||||
|
||||
```
|
||||
adduser --disabled-login mastodon
|
||||
```
|
||||
|
||||
En tant que superutilisateur, installer les logiciels de base :
|
||||
|
||||
```
|
||||
apt install -y curl wget gnupg apt-transport-https lsb-release ca-certificates
|
||||
```
|
||||
|
||||
Installer NodeJS version 16, depuis les dépots nodesource.com
|
||||
|
||||
```
|
||||
curl -sL https://deb.nodesource.com/setup_16.x | bash -
|
||||
```
|
||||
|
||||
Mettre à jour les dépôts
|
||||
|
||||
```
|
||||
apt update
|
||||
```
|
||||
|
||||
Installer les paquets systèmes :
|
||||
|
||||
```
|
||||
apt install -y imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev nginx redis-server redis-tools postgresql postgresql-contrib certbot python3-certbot-nginx libidn11-dev libicu-dev libjemalloc-dev
|
||||
```
|
||||
|
||||
Configurer `yarn`
|
||||
|
||||
```
|
||||
corepack enable
|
||||
yarn set version classic
|
||||
```
|
||||
|
||||
Se connecter en tant que `mastodon` (les commandes suivantes se feront via le compte `mastodon`)
|
||||
|
||||
```
|
||||
su - mastodon
|
||||
```
|
||||
|
||||
Se placer dans le répertoire `/home/mastodon`
|
||||
|
||||
```
|
||||
cd /home/mastodon
|
||||
```
|
||||
|
||||
Installer `rbenv` (outil de gestion de version pour Ruby)
|
||||
|
||||
```
|
||||
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
|
||||
cd ~/.rbenv && src/configure && make -C src
|
||||
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
|
||||
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
|
||||
exec bash
|
||||
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
|
||||
```
|
||||
|
||||
Installer Ruby 3.0.6 avec `rbenv`
|
||||
|
||||
```
|
||||
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.0.6
|
||||
rbenv global 3.0.6
|
||||
```
|
||||
|
||||
Installer `bundler`
|
||||
|
||||
```
|
||||
gem install bundler --no-document
|
||||
```
|
||||
|
||||
### Configurer la base de données Postgresql
|
||||
|
||||
En tant que superutilisateur, on crée la base de données
|
||||
|
||||
```
|
||||
sudo -u postgres psql
|
||||
CREATE USER mastodon CREATEDB;
|
||||
\q
|
||||
```
|
||||
|
||||
### Installer Mastodon
|
||||
|
||||
En tant que `mastodon`, on récupère le code et on se place sur le dernier tag :
|
||||
|
||||
```
|
||||
su - mastodon
|
||||
git clone https://github.com/mastodon/mastodon.git live && cd live
|
||||
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
|
||||
```
|
||||
|
||||
Installer les dépendances dans le dépôt avec `bundle` et `yarn`
|
||||
|
||||
```
|
||||
bundle config deployment 'true'
|
||||
bundle config without 'development test'
|
||||
bundle install -j$(getconf _NPROCESSORS_ONLN)
|
||||
yarn install --pure-lockfile
|
||||
```
|
||||
|
||||
### Configurer Mastodon
|
||||
|
||||
En tant que `mastodon`, dans le dossier de déploiement, exécuter la commande de première configuration, et suivre la configuration interactive (avec le nom de domaine qui va bien) :
|
||||
|
||||
```
|
||||
su - mastodon
|
||||
cd /home/mastodon/live
|
||||
RAILS_ENV=production bundle exec rake mastodon:setup
|
||||
```
|
||||
|
||||
### Configurer nginx
|
||||
|
||||
En tant que superutilisateur, copier le fichier par défaut dans la configuration nginx :
|
||||
|
||||
```
|
||||
cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
|
||||
ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
|
||||
```
|
||||
|
||||
Éditer le fichier pour effectuer les ajustements nécessaires dans les sections server (proxy_protocol et nom de domaine) :
|
||||
|
||||
```
|
||||
set_real_ip_from 192.168.0.1;
|
||||
real_ip_header proxy_protocol;
|
||||
listen [::]:443 ssl;
|
||||
listen 444 ssl proxy_protocol;
|
||||
|
||||
ssi on;
|
||||
ssi_last_modified on;
|
||||
|
||||
server_name toot.a-lec.org;
|
||||
```
|
||||
|
||||
Recharger nginx
|
||||
|
||||
```
|
||||
systemctl reload nginx
|
||||
```
|
||||
|
||||
### Déployer un certificat SSL
|
||||
|
||||
Utiliser certbot avec le nom de domaine de l'instance
|
||||
|
||||
```
|
||||
certbot --nginx -d toot.a-lec.org
|
||||
```
|
||||
|
||||
### Déployer les services systemd
|
||||
|
||||
```
|
||||
cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
|
||||
```
|
||||
|
||||
## Mise à jour du service
|
||||
|
||||
Le logiciel Mastodon utilise de nombreuses dépendances et ses mises à jour peuvent nécessiter des migrations de base de données. La mise à jour de Mastodon est toujours manuelle et très peu automatisée et n'est donc jamais générique.
|
||||
|
||||
**Il est fortement déconseillé de mettre à jour en sautant des versions**
|
||||
|
||||
Aussi, pour mettre à jour mastodon, on utilisera git pour récupérer le code en tant que `mastodon`:
|
||||
|
||||
```
|
||||
su - mastodon
|
||||
cd /home/mastodon/live
|
||||
git fetch && git checkout <version>
|
||||
```
|
||||
|
||||
Dans certains cas, la mise à jour de Ruby devra être effectuée en se plaçant dans le dossier de `rbenv` :
|
||||
```
|
||||
cd /home/mastodon/.rbenv
|
||||
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install <version-ruby>
|
||||
rbenv global <version-ruby>
|
||||
```
|
||||
|
||||
Il est ensuite **important** de suivre les instructions de déploiement spécifiques de la version, disponible sur la page github de la version (release). Généralement cela consistera en l'exécution dans le dossier `live` de `bundle install` et/ou `yarn install`, suivi ou non d'une migration de base de données (`rails exec db:migrate`) et/ou d'une précompilation d'assets (`rails exec assets:precompile`).
|
||||
|
||||
A chaque fois qu'il sera demandé dans les instructions de redémarrer les services, la commande suivante sera utilisée (pour éviter au maximum les interruptions) :
|
||||
|
||||
```
|
||||
systemctl restart mastodon-sidekiq && systemctl reload mastodon-web && systemctl restart mastodon-streaming
|
||||
```
|
||||
|
||||
|
|
Loading…
Reference in New Issue