Spaces:
Runtime error
Runtime error
File size: 1,825 Bytes
8ea09fa | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | # Persistence β staying logged in
The Chrome profile (cookies/logins) lives in `/home/chrome/data`. How it survives a restart
depends on where you run.
## Hugging Face β Neon Postgres (required)
HF free `cpu-basic` Spaces have **no persistent disk** β the filesystem is wiped on every
restart/rebuild. So the profile is snapshotted to an external Postgres DB by the `profilesync` tool:
- **Boot:** `profilesync restore` pulls the last snapshot.
- **Every 5 min + on shutdown:** `profilesync backup` saves it.
- Stored as one row: `chrome_profile(id, updated_at, data bytea)` (auto-created).
- **Gated on `DATABASE_URL`.** Not set β restore/backup skipped β logins lost on restart.
### Setup
1. Free DB at [neon.tech](https://neon.tech) β copy the connection string
(`postgresql://user:pass@host.neon.tech/db?sslmode=require`).
2. HF Space β Settings β Variables and secrets β secret **`DATABASE_URL`** = that string.
3. Saving auto-restarts the Space. **Log in once** after that β first backup within 5 min β survives
all future restarts.
### Verify a backup landed
```sql
SELECT id, updated_at, octet_length(data) FROM chrome_profile;
```
A row with non-zero size = persisted. (Profile stays small β junk/cache is stripped each boot;
typically 0.5β2 MB. Neon free = 512 MB, so it's ~0.1% used.)
## Self-host Docker β named volume (no DB needed)
`docker-compose.yml` mounts the `chrome-profile` named volume at `/home/chrome/data`, so logins
survive `docker compose down/up` and reboots automatically. **`DATABASE_URL` is not needed** for
Docker. To wipe the profile: `docker compose down -v`.
> Important: setting a new secret on HF forces a restart. If you log in *before* `DATABASE_URL` is
> set, that login is lost on the restart the secret triggers β log in again afterward.
|