This commit is contained in:
julien committed 2026-11-03 18:17:18 +01:00
1 parent 4d8c7c7c71
commit acc4c43250
1 file changed
+46 -46
+46 -46
View File
@@ -22,13 +22,13 @@ bundle install
Créer un fichier `.env` à la racine du projet : Créer un fichier `.env` à la racine du projet :
```sh ```dotenv
RACK_ENV=development RACK_ENV=development
SESSION_SECRET=... SESSION_SECRET=...
RODAUTH_HMAC_SECRET=... RODAUTH_HMAC_SECRET=...
RODAUTH_DOMAIN=netig.net RODAUTH_DOMAIN=netig.net
BASE_URL=http://[::1]:9292 BASE_URL=http://[::1]:9292
SMTP_PASSWORD=... SMTP_PASSWORD='...'
``` ```
Générer `SESSION_SECRET` et `RODAUTH_HMAC_SECRET` avec : Générer `SESSION_SECRET` et `RODAUTH_HMAC_SECRET` avec :
@@ -37,21 +37,13 @@ Générer `SESSION_SECRET` et `RODAUTH_HMAC_SECRET` avec :
openssl rand -hex 64 openssl rand -hex 64
``` ```
Utiliser une valeur différente pour chaque secret. Utiliser une valeur différente pour chaque secret. Les valeurs contenant
`#`, des espaces ou des caractères interprétés spécialement peuvent être
entourées d'apostrophes simples.
Le projet ne charge pas lui-même le fichier `.env`. Pour rendre ses Le fichier `.env` est chargé automatiquement en développement par
variables disponibles dans le terminal courant : `config/boot.rb`. Ce fichier est chargé par `netig.rb` et directement
par les scripts de `bin/` qui ont besoin de la configuration.
```sh
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`. Ne pas versionner le fichier `.env`.
@@ -63,9 +55,9 @@ En développement, la base est créée par défaut dans :
db/development.sqlite3 db/development.sqlite3
``` ```
Ce chemin est défini dans `lib/database.rb`. Il peut être modifié avec Ce chemin peut être remplacé par la variable d'environnement
la variable d'environnement `DATABASE_PATH`. Un chemin relatif est `DATABASE_PATH`. Un chemin relatif est résolu à partir du répertoire
résolu à partir du répertoire `lib/`, et non du répertoire courant. de `lib/database.rb`, et non du répertoire courant.
Créer ou mettre à jour la base de données : Créer ou mettre à jour la base de données :
@@ -75,13 +67,13 @@ bundle exec ruby bin/migrate
### Serveur ### Serveur
Démarrer le serveur depuis la racine du projet : Démarrer le serveur de développement depuis la racine du projet :
```sh ```sh
bundle exec puma bundle exec puma
``` ```
Puma charge automatiquement `config.ru`. Puma charge automatiquement `config.ru`, qui démarre l'application.
Ouvrir la page de création de compte : Ouvrir la page de création de compte :
@@ -102,33 +94,38 @@ bundle exec ruby bin/add-core-member adresse@example.net
``` ```
Le compte doit exister, son adresse électronique doit être vérifiée et 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 la fiche membre doit correspondre à une personne physique. Une adhésion
`accepted` doit également déjà exister dans `memberships`. au statut `accepted` doit également déjà exister dans `memberships`.
Le script ne crée ni le compte ni l'adhésion : il attribue uniquement 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 la qualité de membre du Noyau à une fiche membre qui remplit ces
conditions. Il doit être exécuté séparément pour chaque personne. 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 gestion des demandes d'adhésion n'est pas encore disponible dans
la procédure qui permet d'obtenir une adhésion acceptée reste à mettre l'interface. Une adhésion acceptée doit donc être enregistrée dans la
en place. Les statuts prévoient un Noyau composé d'au moins trois base avant l'utilisation de ce script.
personnes physiques.
Les statuts prévoient un Noyau composé d'au moins trois personnes
physiques.
### Shell interactif ### Shell interactif
Après avoir chargé les variables d'environnement dans le terminal, Ouvrir un shell interactif avec l'application chargée :
ouvrir un shell interactif avec l'application chargée :
```sh ```sh
bundle exec irb -r ./netig.rb bundle exec irb -r ./netig.rb
``` ```
`netig.rb` charge également `config/boot.rb` : les variables du fichier
`.env` sont donc disponibles en développement.
## Production ## Production
En production, les variables d'environnement sont fournies au conteneur En production, les variables d'environnement sont fournies au conteneur
par Docker. Le service Docker Compose doit notamment définir par Docker Compose. Le service doit définir `RACK_ENV=production` et
`RACK_ENV=production` et transmettre le fichier d'environnement avec transmettre le fichier d'environnement avec `env_file`.
`env_file` :
Exemple de configuration :
```yaml ```yaml
services: services:
@@ -139,16 +136,18 @@ services:
RACK_ENV: production RACK_ENV: production
``` ```
Sur le serveur, le fichier `.env` doit notamment contenir : La variable définie dans `environment` prend le dessus sur une éventuelle
valeur de `RACK_ENV` présente dans `.env`.
```sh Le fichier `.env` de production doit notamment contenir :
RACK_ENV=production
```dotenv
DATABASE_PATH=../db/netig.sqlite3 DATABASE_PATH=../db/netig.sqlite3
SESSION_SECRET=... SESSION_SECRET=...
RODAUTH_HMAC_SECRET=... RODAUTH_HMAC_SECRET=...
RODAUTH_DOMAIN=netig.net RODAUTH_DOMAIN=netig.net
BASE_URL=https://netig.net BASE_URL=https://netig.net
SMTP_PASSWORD=... SMTP_PASSWORD='...'
``` ```
Générer `SESSION_SECRET` et `RODAUTH_HMAC_SECRET` avec : Générer `SESSION_SECRET` et `RODAUTH_HMAC_SECRET` avec :
@@ -157,8 +156,8 @@ Générer `SESSION_SECRET` et `RODAUTH_HMAC_SECRET` avec :
openssl rand -hex 64 openssl rand -hex 64
``` ```
Utiliser une valeur différente pour chaque secret et ne pas versionner Utiliser des secrets propres à la production et ne pas versionner le
le fichier contenant ces variables. fichier contenant ces variables.
### Base de données ### Base de données
@@ -168,7 +167,7 @@ La base de production est stockée dans :
db/netig.sqlite3 db/netig.sqlite3
``` ```
Le chemin `../db/netig.sqlite3` est relatif au fichier Le chemin `../db/netig.sqlite3` est relatif au répertoire de
`lib/database.rb`. Il désigne donc le dossier `db/` à la racine du `lib/database.rb`. Il désigne donc le dossier `db/` à la racine du
projet, dans le conteneur. projet, dans le conteneur.
@@ -176,9 +175,9 @@ Le dossier `db/` doit être conservé entre les déploiements, monté sur
un stockage persistant et accessible en écriture par l'utilisateur un stockage persistant et accessible en écriture par l'utilisateur
qui exécute Puma. Il doit également être inclus dans les sauvegardes. 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, Créer ou mettre à jour la base dans le conteneur applicatif, avec les
avec les mêmes variables d'environnement et le même stockage persistant mêmes variables d'environnement et le même stockage persistant que
que l'application, avant de démarrer la nouvelle version : l'application, avant de démarrer la nouvelle version :
```sh ```sh
docker compose run --rm netig bundle exec ruby bin/migrate docker compose run --rm netig bundle exec ruby bin/migrate
@@ -188,8 +187,8 @@ Cette commande suppose que le service Compose s'appelle `netig`.
### Initialisation du premier Noyau ### Initialisation du premier Noyau
Les personnes désignées pour siéger au Noyau doivent d'abord créer leur Chaque personne désignée pour siéger au Noyau doit d'abord créer un
compte depuis le site et vérifier leur adresse électronique. Leur fiche compte depuis le site et vérifier son adresse électronique. Sa fiche
membre doit également disposer d'une adhésion au statut `accepted`. membre doit également disposer d'une adhésion au statut `accepted`.
Pour chaque personne, exécuter dans le conteneur applicatif : Pour chaque personne, exécuter dans le conteneur applicatif :
@@ -203,4 +202,5 @@ 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 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. est acceptée, puis attribue la qualité de membre du Noyau.
Les statuts prévoient au moins trois personnes physiques au Noyau. Les statuts prévoient un Noyau composé d'au moins trois personnes
physiques.