From b615e9e0fd424ca8bb6c6b92eeb5a84f78d3cfee Mon Sep 17 00:00:00 2001 From: Alkatrazz Date: Mon, 15 Jun 2026 14:20:05 +0200 Subject: [PATCH] docs(ghostfolio): sslmode=disable + caveat grant schema public MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrige la procédure : sslmode=disable (PG s01 sans SSL, seed Prisma 7.x échoue en TLS sinon) et documente le GRANT ALL ON SCHEMA public requis pour les bases possédées par postgres. Co-Authored-By: Claude Opus 4.8 --- admin/k8s/ghostfolio.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/admin/k8s/ghostfolio.md b/admin/k8s/ghostfolio.md index 43a2c27..8e8cf35 100644 --- a/admin/k8s/ghostfolio.md +++ b/admin/k8s/ghostfolio.md @@ -68,13 +68,16 @@ ansible-playbook -i inventory.yml playbooks/storage-01.yml --tags postgresql ```bash kubectl create secret generic ghostfolio-secret -n ai \ - --from-literal=database-url="postgresql://ghostfolio:PG_PASSWORD@192.168.10.1:5432/ghostfolio?connect_timeout=300&sslmode=prefer" \ + --from-literal=database-url="postgresql://ghostfolio:PG_PASSWORD@192.168.10.1:5432/ghostfolio?connect_timeout=300&sslmode=disable" \ --from-literal=redis-password="$(openssl rand -hex 16)" \ --from-literal=access-token-salt="$(openssl rand -hex 32)" \ --from-literal=jwt-secret-key="$(openssl rand -hex 32)" ``` - `PG_PASSWORD` = la valeur mise dans `vault_pg_ghostfolio_password` à l'étape 1. +- `sslmode=disable` est **obligatoire** : PostgreSQL sur s01 n'a pas SSL activé, et l'adapter + `pg` de Prisma 7.x (étape de seed Ghostfolio) échoue en `TlsConnectionError` avec `prefer`. + Le LAN cluster est interne/de confiance, donc pas de TLS requis ici. - `redis-password` peut être n'importe quelle valeur aléatoire (Redis est interne au cluster). - `access-token-salt` / `jwt-secret-key` doivent rester stables : les régénérer invaliderait les sessions et les comptes existants. @@ -117,5 +120,16 @@ kubectl get pods -n ai -l app=ghostfolio-redis ≠ `vault_pg_ghostfolio_password`, ou rôle `postgresql` pas réappliqué). Vérifier nftables (port 5432 ouvert pour `192.168.10.0/24`, déjà le cas) et `pg_hba.conf` (host scram-sha-256 pour le LAN cluster, déjà le cas). +- **`Error: permission denied for schema public`** (migrations Prisma) : la base `ghostfolio` + est possédée par `postgres` (le rôle `postgresql_db` ne fixe pas `owner:`), donc l'utilisateur + `ghostfolio` n'a pas de droit implicite sur le schéma `public`. Les bases historiques + (n8n/openwebui/litellm) sont possédées par leur user et n'ont jamais eu ce souci. Correctif + (idempotent, identique à la task Ansible « Grant schema public ») : + ```bash + ssh storage-01 "sudo -u postgres psql -d ghostfolio -c 'GRANT ALL ON SCHEMA public TO ghostfolio;'" + ``` + Vérifier : `\dn+ public` doit montrer `ghostfolio=UC`. +- **`Error opening a TLS connection: The server does not support SSL`** (seed Prisma 7.x) : + PostgreSQL sur s01 n'a pas SSL → `database-url` doit finir par `sslmode=disable`, pas `prefer`. - **Quotes/prix vides** : Yahoo Finance peut throttler ; les prix se mettent à jour via le scheduler interne. Optionnellement ajouter une clé d'un autre data provider plus tard.