Le conteneur web relayait l'API vers `api:4000`, écrit en dur. Sur un réseau
partagé entre plusieurs applications (Umbrel), ce nom peut appartenir à une autre.
L'adresse vient maintenant de API_UPSTREAM, `api:4000` par défaut : rien ne
change pour les installations existantes. L'image tout-en-un garde sa propre
configuration. La CI lance un second front qui joint l'API par le nom de son
conteneur et repasse le test de fumée.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Une seule image (PostgreSQL 15, API, nginx) qui crée sa base et ses secrets dans /data au premier
démarrage. Publiée par images.yml sous ghcr.io/iliesallali/parenthese-aio, testée en CI (démarrage
à vide, redémarrage, test de fumée).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Après chaque CI verte sur main (et sur un tag vX.Y.Z), le workflow Images construit
parenthese-api et parenthese-web en amd64 et arm64, les pousse sur ghcr.io, puis teste
une installation dans un dossier vide avec docker-compose.yml et .env pour seuls fichiers.
docker-compose.yml tire ces images (PARENTHESE_VERSION, latest par défaut) et garde le
build depuis les sources en repli. Demande faite sur r/GenealogieFR.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Vidéo piégée : l'expression régulière de position était quadratique, un faux MP4 de 2 Mo figeait l'API (bornée, linéaire)
- Sessions émises avant le 01/10/2026 refusées (SESSIONS_NOT_BEFORE) : des sessions ont fuité dans les annotations et les journaux jusqu'à la 1.0
- Contributions : l'« avant » montré au propriétaire vient de la base ; une suppression approuvée part en cascade (unions, liens, souvenirs, portrait, fichiers)
- Mot de passe de partage : essai compté avant bcrypt, comparaisons une par une, changement et rattachement dans une transaction
- Quota mesuré sur le disque, 10 arbres par compte, corps à 1 Mo hors envois, bornes sur annotations, contributions et GEDCOM
- GIF réencodés ; anciennes propositions d'annotation sans adresse stockée ; clé d'exemple refusée sans NODE_ENV
- Déploiement du commit validé par la CI, clé d'hôte obligatoire ; nginx : X-Forwarded-For écrasé, version masquée, journal sans query string
- PostHog verrouillé dans le code, sans script externe ; CSP sans *.posthog.com ; sauvegardes hors serveur chiffrées par défaut
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
nginx 1.31 est la branche mainline (développement), la stable est 1.30 (nginx.org au 01/10/2026). Les montées mineures de nginx sont ignorées, les correctifs de la 1.30 arrivent toujours. Passer à la stable suivante à la main.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
L'action passe de Node 20 à Node 24, ce qui retire l'avertissement de dépréciation des journaux de déploiement. Empreinte épinglée vérifiée contre le tag v0.10.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Chaque action est référencée par son commit, version en commentaire. Le
déploiement lit la clé d'hôte dans le secret SSH_KNOWN_HOSTS et exige sa
vérification ; sans secret, repli sur ssh-keyscan avec un avertissement.
La CI échoue sur une faille critique d'une dépendance de production.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
deploy.sh sauvegarde la base dans $BACKUP_ROOT/pre-migration quand prisma migrate
status signale un écart, garde les 10 derniers dumps et s'arrête si pg_dump échoue.
backup.sh crée ses fichiers en umask 077 et, si BACKUP_AGE_RECIPIENT est renseigné,
n'envoie sur S3 que des copies chiffrées avec age. Commentaires sur les polices
du frontend mis à jour (deploy.sh, ci.yml).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lancé à la main. Clone, .env, docker compose up -d sur le port 80 comme le
README, test de fumée, puis captures de l'app en anglais jointes au run.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Les versions françaises passent dans CONTRIBUTING.fr.md et SECURITY.fr.md.
Convention mise à jour : tout texte visible passe par t() avec sa traduction.
Modèles d'issue et de pull request en anglais, le français reste accepté.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Utilisateurs
- Suppression de compte depuis l'écran « Votre compte », confirmée par mot de passe :
arbres possédés et médias effacés, email retiré des contributions, sessions fermées partout.
- Suppression d'arbre définitive, en base et sur le disque.
- Ajout d'un frère ou d'une sœur relié aux parents existants ; relations parent et enfant
corrigées en mode démo.
- Liste d'attente retirée (route, envoi d'emails, dépendance Resend).
Projet ouvert
- CI : front, landing, backend avec vérification des migrations, test Docker de bout en bout.
- Déploiement lancé seulement après une CI réussie sur main.
- Image API : CLI Prisma installée à part pour que les migrations tournent au démarrage.
- SECURITY.md, CONTRIBUTING.md, modèles d'issue et de pull request.
- Migration renommée avec un nom descriptif, contenu identique.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Galaxie familiale : personnes, unions et filiations, photos, vidéos et voix sur chaque personne,
partage par lien avec consultation sans compte et contributions validées par le propriétaire.
Auto-hébergeable avec Docker. Licence PolyForm Noncommercial 1.0.0.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>