services: bindery: build: . image: bindery:latest # The user and group that own ./config. user: "1000:1000" environment: # none, local (one Bindery account), cwa (CWA accounts), or proxy (a trusted user header) AUTH_METHOD: none # For local logins, put these values in .env. See "Local login" in the README. # BINDERY_USERNAME: ${BINDERY_USERNAME:-} # BINDERY_PASSWORD_HASH: ${BINDERY_PASSWORD_HASH:-} # URL_BASE: /bindery # The host names that Bindery answers to. AUTH_METHOD=none needs this for a public name such as this one. # ALLOWED_HOSTS: bindery.example.com # true only if clients reach Bindery through a reverse proxy alone. The login lockout then uses X-Forwarded-For. # TRUST_PROXY: "true" # For AUTH_METHOD=proxy: the address of the proxy. The default trusts each private address. # PROXY_AUTH_TRUSTED_IPS: 172.18.0.3 # For the cwa and proxy modes: the users that can change the global settings. Without a list, each user can. # BINDERY_ADMIN_USERS: alice, bob # BINDERY_API_KEY: a-long-random-string # Optional: a folder that gets each built ePub. With CWA, this is CWA's ingest folder. # INGEST_DIR: /cwa-book-ingest # Optional: Calibre-Web-Automated. The user above must then be able to write CWA's ingest folder. # Usually it is the same as CWA's. # CWA_ENABLED: "true" # The address of CWA, as the Bindery container reaches it, and the CWA account that Bindery uses. # Leave the account out if CWA asks for no login. # CWA_URL: http://calibre-web-automated:8083 # CWA_USERNAME: bindery # CWA_PASSWORD: change-me # Optional and independent. app.db is for logins, metadata.db is for book IDs. # CWA_DB_PATH: /cwa-config/app.db # CALIBRE_DB_PATH: /calibre-library/metadata.db ports: # If a reverse proxy on this host is the only way in, publish the port only on the host: 127.0.0.1:8085:8085 - 8085:8085 restart: unless-stopped # /api/health needs no login, and works with and without URL_BASE. healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8085/api/health', timeout=5)"] interval: 60s timeout: 10s start_period: 30s retries: 3 volumes: # The story database and personal.ini. Create the folder before the first start. - ./config:/config # Optional: the folder of INGEST_DIR. With CWA, CWA's ingest folder. Bindery does not make the folder. # - /path/to/cwa/ingest:/cwa-book-ingest # Optional read-only folders of CWA. Include SQLite journal files beside each database. # Mount the library that receives the ingest files, not a copy or another library. # - /path/to/cwa/config:/cwa-config:ro # - /path/to/calibre/library:/calibre-library:ro