Self-hosted PDF, Markdown, and text library with browser reading, search, sharing, and optional AI.
1.3K
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.
linux/amd64 and linux/arm64Kintara does not run automatic AI processing. Each person must add a provider key and enable AI for their own account.
| Item | Value |
|---|---|
| Port | 8080 |
| Document mount | /library |
| Application data | /data |
| Health endpoint | /api/health |
| Architectures | linux/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.
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.
| Variable | Default | Purpose |
|---|---|---|
PUID | 1000 | User ID that runs Kintara |
PGID | 1000 | Group ID that runs Kintara |
KINTARA_SCAN_ON_START | true | Scans the document root during startup |
KINTARA_WATCH | true | Watches the document root for changes |
KINTARA_MAX_UPLOAD_MB | 1024 | Maximum browser upload size |
KINTARA_PUBLIC_URL | none | Browser-facing origin for GitHub OAuth |
KINTARA_SECRET | generated file | Optional 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
Content type
Image
Digest
sha256:96bea2bea…
Size
54.1 MB
Last updated
about 1 month ago
docker pull pinkpixeldev/kintara