services: # OneSearch - Unified application with managed Meilisearch onesearch: # Set ONESEARCH_IMAGE in .env to pin a version or run your own build. image: ${ONESEARCH_IMAGE:-ghcr.io/demigodmode/onesearch:latest} container_name: onesearch-app volumes: # Persistent data (SQLite database) - onesearch_data:/app/data # Persistent managed Meilisearch index data - onesearch_index:/app/meili_data # Example source mounts (uncomment and modify as needed) # Format: /host/path:/container/path:ro (ro = read-only) # Then add the container path, such as /data/nas_docs, as the source Root Path in the UI. # - /mnt/nas/documents:/data/nas_docs:ro # - /home/user/Documents:/data/documents:ro # - /path/to/photos:/data/photos:ro environment: - ONESEARCH_MANAGED_MEILI=true - MEILI_MASTER_KEY=${MEILI_MASTER_KEY} - SESSION_SECRET=${SESSION_SECRET} - PUID=${PUID:-1000} - PGID=${PGID:-1000} - DATABASE_URL=sqlite:////app/data/onesearch.db - LOG_LEVEL=${LOG_LEVEL:-INFO} # Optional settings. Each one is passed to the container only if you set it, # in .env or in the shell. Unset ones keep their built-in defaults. - MAX_TEXT_FILE_SIZE_MB - MAX_PDF_FILE_SIZE_MB - MAX_OFFICE_FILE_SIZE_MB - IMAGE_METADATA_MAX_SIZE_MB - EPUB_EXTRACTION_MAX_SIZE_MB - COMIC_EXTRACTION_MAX_SIZE_MB - ARCHIVE_EXTRACTION_MAX_SIZE_MB - MEDIA_PROBE_MAX_SIZE_MB - TEXT_EXTRACTION_TIMEOUT - PDF_EXTRACTION_TIMEOUT - OFFICE_EXTRACTION_TIMEOUT - RAW_METADATA_TIMEOUT_SECONDS - ALLOWED_SOURCE_PATHS - CORS_ORIGINS - SESSION_EXPIRE_HOURS - AUTH_RATE_LIMIT - SCHEDULER_ENABLED - SCHEDULE_TIMEZONE - UNSUPPORTED_FILE_POLICY - MEDIA_METADATA_MODE - RAW_METADATA_MODE - INDEX_GPS_METADATA - SHOW_PREVIEWS - RAW_PREVIEW_ENABLED - MAX_PREVIEW_SIZE_MB - READABLE_PREVIEW_PAGE_CHARS - LONG_TEXT_PAGINATION_THRESHOLD_CHARS - MEILISEARCH_BATCH_SIZE - INDEXING_PROGRESS_INTERVAL # Meilisearch indexing limits. OneSearch picks these from the container's memory # at startup, set them only to override that. - MEILI_MAX_INDEXING_THREADS - MEILI_MAX_INDEXING_MEMORY ports: - "8000:8000" restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://127.0.0.1:8000/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 30s volumes: # OneSearch database and application data onesearch_data: driver: local # Managed Meilisearch index data onesearch_index: driver: local