Sign inSign up

pinkpixeldev/kintara

By pinkpixeldev

•Updated about 1 month ago

Self-hosted PDF, Markdown, and text library with browser reading, search, sharing, and optional AI.

Image
Content management system
Databases & storage
0

1.3K

pinkpixeldev/kintara repository overview

Kintara logo

⁠Kintara

Kintara is a self-hosted document library and reader for a Docker host or NAS. Mount the folder where your documents already live, then read and organize them from a browser.

The server watches one document root for PDF, Markdown, and text files. It extracts PDF metadata, searchable text, page counts, and cover thumbnails with Poppler. PDF files use HTTP Range requests, so the reader can load parts of a large scan as needed.

⁠Main features

  • Browser reader and installable PWA
  • Full-text search for documents and tags
  • Private libraries with viewer and editor sharing
  • Per-user reading progress, favorites, highlights, and document conversations
  • GitHub OAuth sign-in with administrator invitations
  • Optional OpenAI and Google features with per-user encrypted provider keys
  • Startup scans and live filesystem watching
  • Multi-architecture images for linux/amd64 and linux/arm64

Kintara does not run automatic AI processing. Each person must add a provider key and enable AI for their own account.

⁠Container details

ItemValue
Port8080
Document mount/library
Application data/data
Health endpoint/api/health
Architectureslinux/amd64, linux/arm64

Keep /data on local storage. It contains SQLite and must not use an SMB or NFS mount. The /library mount can point to an existing NAS share.

⁠Compose example

services:
  kintara:
    image: ghcr.io/pinkpixel-dev/kintara:latest
    container_name: kintara
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      PUID: "${PUID}"
      PGID: "${PGID}"
      TZ: Etc/UTC
      KINTARA_PUBLIC_URL: "${KINTARA_PUBLIC_URL}"
      KINTARA_GITHUB_CLIENT_ID: "${KINTARA_GITHUB_CLIENT_ID}"
      KINTARA_GITHUB_CLIENT_SECRET: "${KINTARA_GITHUB_CLIENT_SECRET}"
    volumes:
      - /path/to/your/documents:/library
      - ./data:/data

Store these values in a .env file beside the Compose file. Do not commit the OAuth client secret to a repository.

Create a GitHub OAuth app before the first start. Its callback URL must match this form:

https://kintara.example.com/api/auth/github/callback

The first GitHub account to sign in becomes the installation owner. Administrators invite later accounts by GitHub username.

⁠Common configuration

VariableDefaultPurpose
PUID1000User ID that runs Kintara
PGID1000Group ID that runs Kintara
KINTARA_SCAN_ON_STARTtrueScans the document root during startup
KINTARA_WATCHtrueWatches the document root for changes
KINTARA_MAX_UPLOAD_MB1024Maximum browser upload size
KINTARA_PUBLIC_URLnoneBrowser-facing origin for GitHub OAuth
KINTARA_SECRETgenerated fileOptional provider-key encryption source

If KINTARA_SECRET is absent, Kintara creates /data/kintara-ai.key. Back up this file with the database.

Made with 💖 by Pink Pixel

Tag summary

Content type

Image

Digest

sha256:96bea2bea…

Size

54.1 MB

Last updated

about 1 month ago

docker pull pinkpixeldev/kintara