emanuelegori

emanuelegori / BookOrbit

Last active 18 hours ago

Like 0

BookOrbit è una piattaforma self‑hosted e open source per gestire e leggere ebook, audiolibri e fumetti. Offre lettori integrati per più formati, gestione automatica dei metadati, sincronizzazione con Kobo e KOReader, supporto multi‑utente con SSO, cataloghi OPDS privati e analitiche di lettura avanzate, il tutto con una semplice distribuzione via Docker e senza abbonamenti.

Revision 150ef752098934ff99a495c74d28d6fea1ba5057

docker-compose.yml Raw
1services:
2 app:
3 container_name: bookorbit-app
4 image: ${APP_IMAGE?required}
5 restart: unless-stopped
6 init: true
7 env_file:
8 - .env
9 ports:
10 - "${APP_PORT:-3000}:${PORT:-3000}"
11 environment:
12 NODE_ENV: production
13 PORT: ${PORT:-3000}
14 DATABASE_URL: ${DATABASE_URL:-}
15 POSTGRES_HOST: ${POSTGRES_HOST:-postgres}
16 POSTGRES_PORT: ${POSTGRES_PORT:-5432}
17 POSTGRES_USER: ${POSTGRES_USER?required}
18 POSTGRES_PASSWORD: ${POSTGRES_PASSWORD?required}
19 POSTGRES_DB: ${POSTGRES_DB?required}
20 JWT_SECRET: ${JWT_SECRET?required}
21 SETUP_BOOTSTRAP_TOKEN: ${SETUP_BOOTSTRAP_TOKEN?required}
22 APP_URL: ${APP_URL?required}
23 CLIENT_URL: ${CLIENT_URL:-${APP_URL?required}}
24 PUID: ${PUID:-1000}
25 PGID: ${PGID:-1000}
26 NODE_MAX_OLD_SPACE_SIZE: ${NODE_MAX_OLD_SPACE_SIZE:-auto}
27 BOOK_DOCK_PATH: ${BOOK_DOCK_PATH:-}
28 LIBRARY_BROWSE_ROOT: ${LIBRARY_BROWSE_ROOT:-}
29 depends_on:
30 postgres:
31 condition: service_healthy
32 volumes:
33 - ${BOOKS_HOST_PATH:-./books}:/books
34 - ./data/app:/data
35 read_only: true
36 tmpfs:
37 - /tmp
38 cap_drop:
39 - ALL
40 cap_add:
41 - CHOWN
42 - DAC_OVERRIDE
43 - FOWNER
44 - SETGID
45 - SETUID
46 security_opt:
47 - no-new-privileges:true
48 stop_grace_period: 30s
49 healthcheck:
50 test:
51 [
52 "CMD",
53 "node",
54 "-e",
55 "const p=process.env.PORT||3000;fetch('http://127.0.0.1:'+p+'/api/v1/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))",
56 ]
57 interval: 30s
58 timeout: 5s
59 retries: 3
60 start_period: 20s
61
62 postgres:
63 container_name: bookorbit-db
64 image: pgvector/pgvector:pg18
65 restart: unless-stopped
66 environment:
67 POSTGRES_USER: ${POSTGRES_USER?required}
68 POSTGRES_PASSWORD: ${POSTGRES_PASSWORD?required}
69 POSTGRES_DB: ${POSTGRES_DB?required}
70 PGDATA: /var/lib/postgresql/data/pgdata
71 volumes:
72 - ./data/postgres:/var/lib/postgresql/data
73 healthcheck:
74 test:
75 ["CMD-SHELL", 'pg_isready -U "$${POSTGRES_USER}" -d "$${POSTGRES_DB}"']
76 interval: 10s
77 timeout: 5s
78 retries: 10
79 start_period: 20s