Files
netig.net/README.md
T
2026-11-03 17:50:16 +01:00

5.2 KiB

netig.net

À faire

  • limiter le spam sur /contact/send ;
  • développer les demandes d'adhésion et leur examen par le Noyau ;
  • développer l'espace personnel des membres ;
  • afficher les recettes et les dépenses sur la page d'accueil ;
  • gérer les accès aux services selon la situation des membres.

Développement

Dépendances

Installer les dépendances :

bundle install

Variables d'environnement

Créer un fichier .env à la racine du projet :

RACK_ENV=development
SESSION_SECRET=...
RODAUTH_HMAC_SECRET=...
RODAUTH_DOMAIN=netig.net
BASE_URL=http://[::1]:9292
SMTP_PASSWORD=...

Générer SESSION_SECRET et RODAUTH_HMAC_SECRET avec :

openssl rand -hex 64

Utiliser une valeur différente pour chaque secret.

Le projet ne charge pas lui-même le fichier .env. Pour rendre ses variables disponibles dans le terminal courant :

set -a
. ./.env
set +a

Exécuter ces commandes depuis la racine du projet, dans chaque nouveau terminal utilisé pour le développement. Le fichier doit respecter la syntaxe du shell ; mettre entre quotes les valeurs qui contiennent des caractères interprétés par celui-ci.

Ne pas versionner le fichier .env.

Base de données

En développement, la base est créée par défaut dans :

db/development.sqlite3

Ce chemin est défini dans lib/database.rb. Il peut être modifié avec la variable d'environnement DATABASE_PATH. Un chemin relatif est résolu à partir du répertoire lib/, et non du répertoire courant.

Créer ou mettre à jour la base de données :

bundle exec ruby bin/migrate

Serveur

Démarrer le serveur depuis la racine du projet :

bundle exec puma

Puma charge automatiquement config.ru.

Ouvrir la page de création de compte :

http://[::1]:9292/create-account

Les personnes physiques et les personnes morales peuvent créer un compte. La création du compte crée également une fiche dans members. L'adresse électronique doit être vérifiée avant de pouvoir se connecter.

Initialisation du Noyau

Pour ajouter une personne au Noyau, utiliser le script :

bundle exec ruby bin/add-core-member adresse@example.net

Le compte doit exister, son adresse électronique doit être vérifiée et il doit s'agir d'une personne physique. Une adhésion avec le statut accepted doit également déjà exister dans memberships.

Le script ne crée ni le compte ni l'adhésion : il attribue uniquement la qualité de membre du Noyau à une fiche membre qui remplit ces conditions. Il doit être exécuté séparément pour chaque personne.

Le traitement des demandes d'adhésion n'étant pas encore développé, la procédure qui permet d'obtenir une adhésion acceptée reste à mettre en place. Les statuts prévoient un Noyau composé d'au moins trois personnes physiques.

Shell interactif

Après avoir chargé les variables d'environnement dans le terminal, ouvrir un shell interactif avec l'application chargée :

bundle exec irb -r ./netig.rb

Production

En production, les variables d'environnement sont fournies au conteneur par Docker. Le service Docker Compose doit notamment définir RACK_ENV=production et transmettre le fichier d'environnement avec env_file :

services:
  netig:
    env_file:
      - .env
    environment:
      RACK_ENV: production

Sur le serveur, le fichier .env doit notamment contenir :

RACK_ENV=production
DATABASE_PATH=../db/netig.sqlite3
SESSION_SECRET=...
RODAUTH_HMAC_SECRET=...
RODAUTH_DOMAIN=netig.net
BASE_URL=https://netig.net
SMTP_PASSWORD=...

Générer SESSION_SECRET et RODAUTH_HMAC_SECRET avec :

openssl rand -hex 64

Utiliser une valeur différente pour chaque secret et ne pas versionner le fichier contenant ces variables.

Base de données

La base de production est stockée dans :

db/netig.sqlite3

Le chemin ../db/netig.sqlite3 est relatif au fichier lib/database.rb. Il désigne donc le dossier db/ à la racine du projet, dans le conteneur.

Le dossier db/ doit être conservé entre les déploiements, monté sur un stockage persistant et accessible en écriture par l'utilisateur qui exécute Puma. Il doit également être inclus dans les sauvegardes.

Créer ou mettre à jour la base de données dans le conteneur applicatif, avec les mêmes variables d'environnement et le même stockage persistant que l'application, avant de démarrer la nouvelle version :

docker compose run --rm netig bundle exec ruby bin/migrate

Cette commande suppose que le service Compose s'appelle netig.

Initialisation du premier Noyau

Les personnes désignées pour siéger au Noyau doivent d'abord créer leur compte depuis le site et vérifier leur adresse électronique. Leur fiche membre doit également disposer d'une adhésion au statut accepted.

Pour chaque personne, exécuter dans le conteneur applicatif :

docker compose run --rm netig \
  bundle exec ruby bin/add-core-member adresse@example.net

Cette commande suppose que le service Compose s'appelle netig. Elle ne crée pas l'adhésion : elle vérifie qu'elle existe et qu'elle est acceptée, puis attribue la qualité de membre du Noyau.

Les statuts prévoient au moins trois personnes physiques au Noyau.