| 1 | services: |
| 2 | bookorbit: |
| 3 | container_name: bookorbit-app |
| 4 | image: ghcr.io/bookorbit/bookorbit:latest |
| 5 | restart: unless-stopped |
| 6 | init: true |
| 7 | ports: |
| 8 | - "3000:3000" |
| 9 | environment: |
| 10 | NODE_ENV: production |
| 11 | PORT: 3000 |
| 12 | POSTGRES_HOST: postgres |
| 13 | POSTGRES_PORT: 5432 |
| 14 | POSTGRES_USER: bookorbit |
| 15 | POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} |
| 16 | POSTGRES_DB: bookorbit |
| 17 | JWT_SECRET: ${JWT_SECRET} |
| 18 | SETUP_BOOTSTRAP_TOKEN: ${SETUP_BOOTSTRAP_TOKEN} |
| 19 | APP_URL: https://libri.tuodominio.it |
| 20 | CLIENT_URL: https://libri.tuodominio.it |
| 21 | PUID: 1000 |
| 22 | PGID: 1000 |
| 23 | NODE_MAX_OLD_SPACE_SIZE: 2048 |
| 24 | depends_on: |
| 25 | postgres: |
| 26 | condition: service_healthy |
| 27 | volumes: |
| 28 | - ./books:/books |
| 29 | - ./data/app:/data |
| 30 | - ./data/app/book-dock:/data/book-dock |
| 31 | read_only: true |
| 32 | tmpfs: |
| 33 | - /tmp |
| 34 | cap_drop: |
| 35 | - ALL |
| 36 | cap_add: |
| 37 | - CHOWN |
| 38 | - DAC_OVERRIDE |
| 39 | - FOWNER |
| 40 | - SETGID |
| 41 | - SETUID |
| 42 | security_opt: |
| 43 | - no-new-privileges:true |
| 44 | stop_grace_period: 30s |
| 45 | networks: |
| 46 | - default |
| 47 | - npm-network |
| 48 | healthcheck: |
| 49 | test: |
| 50 | [ |
| 51 | "CMD-SHELL", |
| 52 | 'node -e "fetch(''http://127.0.0.1:3000/api/v1/health'').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"', |
| 53 | ] |
| 54 | interval: 30s |
| 55 | timeout: 5s |
| 56 | retries: 3 |
| 57 | start_period: 20s |
| 58 | |
| 59 | postgres: |
| 60 | container_name: bookorbit-db |
| 61 | image: pgvector/pgvector:pg16@sha256:7d400e340efb42f4d8c9c12c6427adb253f726881a9985d2a471bf0eed824dff |
| 62 | restart: unless-stopped |
| 63 | environment: |
| 64 | POSTGRES_USER: bookorbit |
| 65 | POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} |
| 66 | POSTGRES_DB: bookorbit |
| 67 | PGDATA: /var/lib/postgresql/data/pgdata |
| 68 | volumes: |
| 69 | - ./data/postgres:/var/lib/postgresql/data |
| 70 | healthcheck: |
| 71 | test: |
| 72 | ["CMD-SHELL", 'pg_isready -U "$${POSTGRES_USER}" -d "$${POSTGRES_DB}"'] |
| 73 | interval: 10s |
| 74 | timeout: 5s |
| 75 | retries: 10 |
| 76 | start_period: 20s |
| 77 | |
| 78 | networks: |
| 79 | npm-network: |
| 80 | name: npm-network |
| 81 | external: true |
emanuelegori / BookOrbit
Last active 15 hours ago
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.