163 lines
3.5 KiB
Markdown
163 lines
3.5 KiB
Markdown
# 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
|
|
|
|
Installer les dépendances :
|
|
|
|
```sh
|
|
bundle install
|
|
```
|
|
|
|
Créer un fichier `.env` à la racine du projet :
|
|
|
|
```dotenv
|
|
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 :
|
|
|
|
```sh
|
|
openssl rand -hex 64
|
|
```
|
|
|
|
Ne pas versionner le fichier `.env`.
|
|
|
|
### Base de données
|
|
|
|
En développement, la base est créée dans :
|
|
|
|
```text
|
|
db/development.sqlite3
|
|
```
|
|
|
|
Ce chemin est utilisé par défaut. Il est possible de le modifier
|
|
avec la variable d'environnement `DATABASE_PATH`.
|
|
|
|
Le chemin indiqué est relatif au fichier `lib/database.rb`.
|
|
|
|
Créer ou mettre à jour la base de données :
|
|
|
|
```sh
|
|
bundle exec ruby bin/migrate
|
|
```
|
|
|
|
### Serveur
|
|
|
|
Démarrer le serveur de développement :
|
|
|
|
```sh
|
|
bundle exec puma
|
|
```
|
|
|
|
Créer des comptes de test depuis le site :
|
|
|
|
http://[::1]:9292/create-account
|
|
|
|
Les personnes physiques et les personnes morales peuvent créer un compte.
|
|
L'adresse électronique doit être vérifiée avant de pouvoir se connecter.
|
|
|
|
### Initialisation du Noyau
|
|
|
|
Pour tester l'espace du Noyau, désigner un ou plusieurs comptes de test
|
|
depuis le terminal :
|
|
|
|
```sh
|
|
bundle exec ruby bin/initialize-core
|
|
```
|
|
|
|
En développement, un seul membre suffit. Cette commande peut être
|
|
réexécutée pour ajouter d'autres membres au Noyau.
|
|
|
|
La date de l'assemblée est demandée lors de l'exécution.
|
|
|
|
### Shell interactif
|
|
|
|
Pour ouvrir un shell interactif :
|
|
|
|
```sh
|
|
bundle exec irb -r dotenv/load -r ./netig.rb
|
|
```
|
|
|
|
## Production
|
|
|
|
Docker Compose fournit les variables d'environnement via `env_file`
|
|
et définit `RACK_ENV=production`.
|
|
|
|
Le fichier d'environnement doit notamment définir :
|
|
|
|
```dotenv
|
|
DATABASE_PATH=../db/netig.sqlite3
|
|
SESSION_SECRET=...
|
|
RODAUTH_HMAC_SECRET=...
|
|
RODAUTH_DOMAIN=netig.net
|
|
BASE_URL=https://netig.net
|
|
SMTP_PASSWORD=...
|
|
```
|
|
|
|
Générer les deux secrets avec :
|
|
|
|
```sh
|
|
openssl rand -hex 64
|
|
```
|
|
|
|
Ne pas versionner le fichier contenant ces variables.
|
|
|
|
### Base de données
|
|
|
|
La base de production est stockée dans :
|
|
|
|
```text
|
|
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.
|
|
|
|
Le dossier `db/` doit être conservé entre les déploiements et rester
|
|
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 que l'application, avant
|
|
de démarrer la nouvelle version :
|
|
|
|
```sh
|
|
bundle exec ruby bin/migrate
|
|
```
|
|
|
|
### Initialisation du premier Noyau
|
|
|
|
Une fois l'inscription publique disponible, les membres fondateurs
|
|
créent leurs comptes depuis le site et vérifient leurs adresses
|
|
électroniques.
|
|
|
|
Après leur désignation par l'assemblée constitutive, initialiser
|
|
le Noyau depuis le conteneur applicatif :
|
|
|
|
```sh
|
|
bundle exec ruby bin/initialize-core
|
|
```
|
|
|
|
Cette commande doit être exécutée une seule fois en production.
|
|
Elle exige au moins trois personnes physiques disposant d'un compte
|
|
vérifié.
|
|
|
|
Elle enregistre leurs adhésions comme acceptées et leur attribue
|
|
la qualité de membre du Noyau.
|
|
|
|
La date de l'assemblée constitutive est demandée lors de l'exécution.
|