Bonfire est un service permettant d’intéragir avec d’autres services participants au Fediverse.

Bonfire
Communiquer avec le Fediverse
Général
Site officiel
Documentation
Localisation
Outils
Utilise
Information technique
Configuration
/usr/share/bonfire/bonfire_app/.env
Accès
Service

Configuration actuelle

modifier

Actuellement, 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

modifier

Prérequis

modifier

Création de l’utilisateur et du répertoire

modifier

Cré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

modifier

La 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

modifier

Lancer just setup-prod et valider chaque changement de fichier. Puis exécuter just rel-build.