Aller au contenu
PalmaPlan — le wiki ← PalmaPlan

L'auto-hébergement en une page

Aujourd'hui, le code de PalmaPlan n'est pas publié : on ne peut donc pas l'installer chez soi, et le service est sur palmaplan.com, en bêta, sur invitation. Cette page décrit comment une instance tourne — c'est ainsi que tourne celle de palmaplan.com — et servira le jour où le code le sera, si cette décision est prise. Elle reprend ce que le README technique du dépôt dit, réécrit pour quelqu'un qui n'a pas besoin de lire du code.

Le plus simple : pnpm start

Sur une machine qui a déjà Node et le dépôt cloné :

PALMAPLAN_TOKEN=un-secret-long PALMAPLAN_DB=~/palmaplan/palmaplan.sqlite pnpm start

Un seul processus sert à la fois l'écran et l'API, sur http://127.0.0.1:4785 par défaut. PALMAPLAN_TOKEN est le jeton du propriétaire de l'instance — gardez-le secret, c'est la clé de tout.

Avec Docker

Un Dockerfile et des exemples de configuration (deploy/Caddyfile, deploy/compose.yaml) existent dans le dépôt :

docker build -t palmaplan .
docker run -d --name palmaplan -p 127.0.0.1:4785:4785 -v palmaplan-data:/data \
  -e PALMAPLAN_TOKEN=<un secret long> -e PALMAPLAN_PUBLIC_URL=https://plan.example.com \
  -e PALMAPLAN_TRUST_PROXY=1 palmaplan

Devant, un proxy qui gère le certificat HTTPS — Caddy, par exemple, avec l'exemple deploy/Caddyfile fourni. La base de données et les sauvegardes vivent dans le volume /data : ne le supprimez jamais sans avoir vérifié vos sauvegardes.

Les variables qui comptent

VariableÀ quoi elle sert
PALMAPLAN_TOKENLe jeton du propriétaire de l'instance. Obligatoire.
PALMAPLAN_DBLe chemin du fichier de base de données SQLite.
PALMAPLAN_PORTLe port d'écoute (4785 par défaut).
PALMAPLAN_HOSTL'interface réseau d'écoute — 127.0.0.1 par défaut, 0.0.0.0 dans un conteneur.
PALMAPLAN_PUBLIC_URLL'adresse vue de l'extérieur (https://plan.example.com) — nécessaire dès que d'autres personnes que vous se connectent : les liens d'invitation, la page publique et les cookies sécurisés en dépendent.
PALMAPLAN_TRUST_PROXYÀ poser à 1 quand un proxy inverse (Caddy, nginx…) termine le HTTPS devant l'instance.
PALMAPLAN_BACKUPSLe dossier des sauvegardes quotidiennes (par défaut, un sous-dossier backups à côté de la base).
PALMAPLAN_SMTP_URL / PALMAPLAN_MAIL_FROMPour que les invitations, le mot de passe oublié et les notifications partent par e-mail plutôt que de s'écrire dans le journal du serveur.

La liste complète, avec le détail de chaque variable, vit dans le README.md du dépôt.

Prendre possession de l'instance : /setup

La première fois, ouvrez /setup sur votre instance. Cet écran demande :

Ce n'est pas une inscription ouverte : c'est la seule façon de poser le premier compte, celui du propriétaire. Une fois /setup passé, les autres personnes rejoignent l'instance uniquement par invitation (depuis Paramètres › Partage d'un planning), jamais par une page d'inscription publique.

La sauvegarde

Une tâche horaire, intégrée au processus, fait chaque jour une copie complète de la base (les quatorze dernières copies sont gardées) avant de vider ce qui traîne depuis plus de trente jours dans la corbeille. GET /api/v1/health (sans jeton) dit le nombre de plannings, le dernier passage de cette tâche et la dernière sauvegarde — de quoi surveiller l'instance depuis l'extérieur sans lui confier de secret.

Faites tout de même une sauvegarde manuelle avant toute mise à jour importante : la commande de sauvegarde à chaud, ou simplement une copie du fichier .sqlite, tant que le processus est arrêté.

Ce que cette page ne couvre pas

« Continuer avec Google » (nécessite un projet Google Cloud), le courrier SMTP en détail, et le branchement d'un agent MCP (claude mcp add …) — ce dernier point est couvert par le guide des agents.