# 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_TOKEN` | Le jeton du propriétaire de l'instance. Obligatoire. |
| `PALMAPLAN_DB` | Le chemin du fichier de base de données SQLite. |
| `PALMAPLAN_PORT` | Le port d'écoute (4785 par défaut). |
| `PALMAPLAN_HOST` | L'interface réseau d'écoute — `127.0.0.1` par défaut, `0.0.0.0` dans un conteneur. |
| `PALMAPLAN_PUBLIC_URL` | L'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_BACKUPS` | Le dossier des sauvegardes quotidiennes (par défaut, un sous-dossier `backups` à côté de la base). |
| `PALMAPLAN_SMTP_URL` / `PALMAPLAN_MAIL_FROM` | Pour 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 :

- le jeton du serveur (`PALMAPLAN_TOKEN`) ;
- votre nom, votre e-mail, et un mot de passe.

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](/docs/fr/agents/).
