mirror of
https://github.com/kikootwo/ReadMeABook.git
synced 2026-06-02 20:30:10 +00:00
7addb1dc70
Implements smart detection that allows users to provide external DATABASE_URL or REDIS_URL. When external services are detected, internal instances are automatically disabled to save resources. Maintains full backward compatibility with existing setup
111 lines
4.7 KiB
YAML
111 lines
4.7 KiB
YAML
services:
|
|
readmeabook:
|
|
image: ghcr.io/kikootwo/readmeabook:latest
|
|
# build:
|
|
# context: .
|
|
# dockerfile: dockerfile.unified
|
|
container_name: readmeabook
|
|
restart: unless-stopped
|
|
ports:
|
|
- "3030:3030"
|
|
volumes:
|
|
# Application config and cache
|
|
- ./config:/app/config
|
|
- ./cache:/app/cache
|
|
|
|
# Downloads and media directories
|
|
- ./downloads:/downloads
|
|
- ./media:/media
|
|
|
|
# PostgreSQL data persistence
|
|
- ./pgdata:/var/lib/postgresql/data
|
|
|
|
# Redis data persistence
|
|
- ./redis:/var/lib/redis
|
|
|
|
environment:
|
|
# ========================================================================
|
|
# RECOMMENDED: User/Group ID Mapping (Hybrid Approach)
|
|
# ========================================================================
|
|
# Set these to match your host user for proper file ownership
|
|
# Run 'id' on your host to find your UID and GID
|
|
#
|
|
# How it works:
|
|
# - postgres user: Keeps UID 103 (PostgreSQL requirement), uses your PGID
|
|
# - redis/node: Fully remapped to your PUID:PGID
|
|
#
|
|
# File ownership on host:
|
|
# - PostgreSQL data (/var/lib/postgresql/data): UID 103, GID <your-PGID>
|
|
# - Everything else (/downloads, /media, /config): <your-PUID>:<your-PGID>
|
|
#
|
|
# For LXC: You only need to passthrough/map container UID 103
|
|
# See documentation/deployment/unified.md for LXC examples
|
|
#
|
|
PUID: 1000
|
|
PGID: 1000
|
|
|
|
# ========================================================================
|
|
# OPTIONAL: Secrets (auto-generated on first run if not provided)
|
|
# ========================================================================
|
|
# Uncomment and set these if you want to use custom secrets:
|
|
# JWT_SECRET: "your-custom-jwt-secret-here"
|
|
# JWT_REFRESH_SECRET: "your-custom-jwt-refresh-secret-here"
|
|
# CONFIG_ENCRYPTION_KEY: "your-custom-encryption-key-here"
|
|
# POSTGRES_PASSWORD: "your-custom-postgres-password-here"
|
|
|
|
# ========================================================================
|
|
# OPTIONAL: External PostgreSQL and Redis
|
|
# ========================================================================
|
|
# To use external PostgreSQL or Redis instances instead of the internal ones,
|
|
# uncomment and configure the appropriate URL(s):
|
|
#
|
|
# External PostgreSQL example:
|
|
# DATABASE_URL: "postgresql://username:password@postgres.example.com:5432/readmeabook"
|
|
#
|
|
# External Redis example:
|
|
# REDIS_URL: "redis://redis.example.com:6379"
|
|
# REDIS_URL: "redis://:password@redis.example.com:6379" # With password
|
|
#
|
|
# Note: When using external services:
|
|
# - The internal PostgreSQL/Redis will NOT start (smart detection)
|
|
# - You do NOT need to mount ./pgdata or ./redis volumes
|
|
# - Ensure your external services are accessible from the container
|
|
|
|
# ========================================================================
|
|
# OPTIONAL: Rootless Podman Support
|
|
# ========================================================================
|
|
# Set to "true" ONLY if running with rootless Podman.
|
|
# This skips gosu UID/GID switching since the user namespace already
|
|
# handles mapping. Do NOT enable for Docker or LXC - it will cause
|
|
# files to be created as root.
|
|
# ROOTLESS_CONTAINER: "true"
|
|
|
|
# ========================================================================
|
|
# OPTIONAL: Application Configuration
|
|
# ========================================================================
|
|
# Only set these if you need non-default values:
|
|
# POSTGRES_USER: "readmeabook"
|
|
# POSTGRES_DB: "readmeabook"
|
|
# PLEX_CLIENT_IDENTIFIER: "readmeabook-custom-id"
|
|
# PLEX_PRODUCT_NAME: "ReadMeABook"
|
|
# LOG_LEVEL: "info"
|
|
# DISABLE_LOCAL_LOGIN: "true" # Set to "true" to disable local login (force OAuth)
|
|
# ALLOW_WEAK_PASSWORD: "true" # Set to "true" to remove minimum password length requirement
|
|
|
|
|
|
# ========================================================================
|
|
# IMPORTANT: Public URL Configuration (Required for OAuth)
|
|
# ========================================================================
|
|
# Set this to your public URL for OAuth callbacks (Plex/OIDC authentication)
|
|
# Format: https://your-domain.com (no trailing slash)
|
|
# REQUIRED if accessing from outside localhost or using OIDC/Plex OAuth
|
|
# See: documentation/backend/services/environment.md
|
|
# PUBLIC_URL: "https://readmeabook.yourdomain.com"
|
|
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3030/api/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|