- the public catalogue is bound to the machine itself by default (OPAC_BIND) and, if ever exposed, requires a library-card login (OpacPublic=0) - a read-only guest login (VIEWER_USER/VIEWER_PASSWORD) in Quick Add: it may load the page, read state and search; every other endpoint is admin-only (403); the page shows only Find a book - the guest deliberately has NO Koha account: Koha's 'catalogue' permission, the only one that allows searching, also allows creating/editing label layouts and templates (tested: a guest created a layout), so it cannot be read-only - koha/ensure.pl (every start): staff-home 'Library tools' block, and removal of a guest account an earlier version created - kiosk add-on shows Find a book signed in as the guest; the admin login never goes into the kiosk config (tested, incl. a mutation check); old public-catalogue tabs are cleaned up - existing installs keep their current public-catalogue behaviour on update Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013wi3ZSot4XbUViwRFgLpRf
82 lines
2.4 KiB
YAML
82 lines
2.4 KiB
YAML
name: library
|
|
|
|
services:
|
|
db:
|
|
image: mariadb:10.11
|
|
container_name: library-db
|
|
restart: unless-stopped
|
|
environment:
|
|
MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
|
|
MARIADB_DATABASE: koha_library
|
|
MARIADB_USER: koha_library
|
|
MARIADB_PASSWORD: ${DB_PASSWORD}
|
|
command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci", "--innodb-buffer-pool-size=128M"]
|
|
volumes:
|
|
- db-data:/var/lib/mysql
|
|
healthcheck:
|
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 20
|
|
|
|
koha:
|
|
build:
|
|
context: ./koha
|
|
args:
|
|
KOHA_SUITE: ${KOHA_SUITE:-stable}
|
|
image: library-koha:local
|
|
container_name: library-koha
|
|
restart: unless-stopped
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
quickadd:
|
|
condition: service_started
|
|
environment:
|
|
TZ: ${TZ:-UTC}
|
|
KOHA_QUICKADD_URL: http://quickadd:8082
|
|
KOHA_DB_HOST: db
|
|
KOHA_DB_PASS: ${DB_PASSWORD}
|
|
KOHA_ADMIN_USER: ${ADMIN_USER:-admin}
|
|
KOHA_ADMIN_PASS: ${ADMIN_PASSWORD}
|
|
KOHA_LIBRARY_NAME: ${LIBRARY_NAME:-My Library}
|
|
KOHA_LIBRARY_CODE: ${LIBRARY_CODE:-HOME}
|
|
KOHA_SHELVES: ${SHELVES:-}
|
|
KOHA_ITEM_TYPES: ${ITEM_TYPES:-}
|
|
ports:
|
|
# The public catalogue is off by default (loopback only); set OPAC_BIND=0.0.0.0 in .env to expose it.
|
|
- "${OPAC_BIND:-127.0.0.1}:${OPAC_PORT:-8080}:80"
|
|
- "${BIND_ADDR:-0.0.0.0}:${STAFF_PORT:-8081}:8081"
|
|
volumes:
|
|
- koha-data:/var/lib/koha
|
|
|
|
# Scan an ISBN -> the book is added (Z39.50 lookup, then Koha's REST API).
|
|
quickadd:
|
|
build:
|
|
context: ./quickadd
|
|
image: library-quickadd:local
|
|
container_name: library-quickadd
|
|
restart: unless-stopped
|
|
environment:
|
|
TZ: ${TZ:-UTC}
|
|
KOHA_API: http://koha:8081/api/v1
|
|
ADMIN_USER: ${ADMIN_USER:-admin}
|
|
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
|
|
VIEWER_USER: ${VIEWER_USER:-guest}
|
|
VIEWER_PASSWORD: ${VIEWER_PASSWORD:-}
|
|
KOHA_LIBRARY: ${LIBRARY_CODE:-HOME}
|
|
OPAC_PORT: ${OPAC_PORT:-8080}
|
|
STAFF_PORT: ${STAFF_PORT:-8081}
|
|
OPAC_URL: ${OPAC_URL:-}
|
|
STAFF_URL: ${STAFF_URL:-}
|
|
QUICKADD_SOURCES: ${QUICKADD_SOURCES:-z3950:lx2.loc.gov:210/LCDB,openlibrary}
|
|
ports:
|
|
- "${BIND_ADDR:-0.0.0.0}:${QUICKADD_PORT:-8082}:8082"
|
|
volumes:
|
|
- quickadd-data:/data
|
|
|
|
volumes:
|
|
db-data:
|
|
koha-data:
|
|
quickadd-data:
|