Bonfire
Bonfire est un service permettant d’intéragir avec d’autres services participants au Fediverse.
Communiquer avec le Fediverse
| Site officiel | |
|---|---|
| Documentation | |
| Localisation |
| Utilise |
|---|
| Configuration |
/usr/share/bonfire/bonfire_app/.env |
|---|---|
| Accès | |
| Service |
Configuration actuelle
modifierActuellement, Bonfire tourne sur le serveur computing et est disponible ici. Bonfire est executé par l’utilisateur bonfire via le service présent sur son propre profil de Systemd. L’authentification s’effectue à travers Keycloak, le serveur web est proxy via Nginx et la base de donnée est stockée sur Postgresql.
Installation
modifierPrérequis
modifierCréation de l’utilisateur et du répertoire
modifierCréer le dossier /usr/share/bonfire qui contiendra tout les fichiers du futur utilisateur bonfire.
Créer l’utilisateur bonfire avec la commande adduser --system --group bonfire, puis changer son home avec la commande usermod -d /usr/share/bonfire(ou même préciser son home dès la création de l’utilisateur) et changer son login par le shell (et non pas /usr/sbin/nologin) (pareil qu’avant, voir comment préciser le login avec la commande adduser pour aller plus vite). Puis chown bonfire:bonfire -R /usr/share/bonfire, pour être sur que l’utilisateur bonfire soit propriétaire de sa maison.
En tant qu’utilisateur bonfire, créer les dossiers /usr/share/bonfire/.local, /usr/share/bonfire/.local/share, /usr/share/bonfire/.local/state, /usr/share/bonfire/.cache, et /usr/share/bonfire/.config .
Si bash ne respecte pas encore les variables XDG, créer le fichier /etc/profile.d/bash_xdg.sh en tant que root contenant le script suivant.
# Make bash follow the XDG_CONFIG_HOME specification
_confdir=${XDG_CONFIG_HOME:-$HOME/.config}/bash
_datadir=${XDG_DATA_HOME:-$HOME/.local/share}/bash
# Source settings file
if [ -d "${_confdir}" ]; then
for f in bash_profile bashrc; do
[ -f "${_confdir}/${f}" ] && . "${_confdir}/${f}"
done
fi
# Change the location of the history file by setting the environment variable
[ ! -d "${_datadir}" ] && mkdir -p "${_datadir}"
HISTFILE="${_datadir}/history"
unset _confdir
unset _datadir
Ajouter aussi ce script à la fin du fichier /etc/bash.bashrc.
Cela ne devrait pas être nécessaire, mais il peut être bon d’ajouter aussi ces lignes dans le fichier /etc/security/pam_env.conf.
XDG_HOME_DIRECTORY DEFAULT=@{HOME}
XDG_CONFIG_HOME DEFAULT=@{HOME}/.config
XDG_DATA_HOME DEFAULT=@{HOME}/.local/share
XDG_STATE_HOME DEFAULT=@{HOME}/.local/state
XDG_CACHE_HOME DEFAULT=@{HOME}/.cache
Installer miseen tant qu’utilisateur bonfire avec la commande curl https://mise.run | sh.
Toujours en tant qu’utilisateur bonfire, créer le fichier /usr/share/bonfire/.config/bash/bashrc avec le contenu suivant
# Load env var from .config/environment.d
for file in ~/.config/environment.d/*;
do
if [ -f "${file}" ] && [ -r "${file}" ];
then
while IFS= read -r line;
do
source <(echo "${line}")
done < <(grep '^[A-Z_]\+=[^#]\+.*' "${file}" | sed -E 's/(^[A-Z_]+)=([^#]+)/export \1=\2/')
fi
done
eval "$(/usr/share/bonfire/.local/bin/mise activate bash)"
Enfin, créer le fichier app.conf avec le contenu suivant
FLAVOUR=social
MIX_ENV=prod
WITH_DOCKER=no
Puis télécharger Bonfire avec la commande git clone --depth 1 https://github.com/bonfire-networks/bonfire-app.git bonfine_app && cd bonfire_app. Finalement, lancer mise install pour télécharger les bonnes version de chaque logiciel.
Configuration
modifierLa configuration de Bonfire doit d’abord être généré avec la commande just config, ce qui créera un fichier .env qui doit ensuite être modifié. Pour les secrets (SECRET_KEY_BASE, SIGNING_SALT, ENCRYPTION_SALT, POSTGRESS_PASSWORD and MEILI_MASTER_KEY), il est possible de les générer avec la commande just secrets. Créer ensuite la base de donnée Postgresql (avec le mot de passe généré). Si elle n’est pas déjà installé, installer l’extension Postgis.
Ajouter un client sur Keycloak et insérer les lignes suivantes dans le fichier .env
# OpenID
OPENID_1_DISCOVERY=https://{keycloak url}/realms/{realm name}/.well-known/openid-configuration
OPENID_1_DISPLAY_NAME={name to display}
OPENID_1_CLIENT_ID={client id}
OPENID_1_CLIENT_SECRET={client secret}
OPENID_1_SCOPE="openid profile email"
OPENID_1_RESPONSE_TYPE=code
OPENID_1_ENABLE_SIGNUP=true
Créer un sous-domaine avec Nginx, avec le nom de domaine rentré dans le fichier .env
server {
server_name {sever url};
listen [::]:443 ssl; # managed by Certbot
listen 443 ssl; # managed by Certbot
location / {
proxy_pass http://127.0.0.1:{sever port};
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 60000s;
}
ssl_certificate /etc/letsencrypt/live/{server url}/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/{server url}/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
server_name {server url};
listen [::]:80;
listen 80;
}
Compilation
modifierLancer just setup-prod et valider chaque changement de fichier. Puis exécuter just rel-build.