All apps · 0 apps
Eyeris
Docker app from Vonhex's Repository
Overview
Readme
View on GitHub
Self-hosted AI photo manager. Your Pictures. Fast. Easy. Simple.
[!WARNING] Eyeris is designed for use on a trusted local network only. It has no brute-force protection on the login endpoint, no multi-user access control, and image URLs embed session tokens that appear in server logs. Do not expose it directly to the internet. If you need remote access, use a VPN or put it behind Cloudflare Access — not a plain public tunnel.
How do I install it?
| Who it's for | Method | Guide |
|---|---|---|
| Unraid users | Manual install via template — see the wiki | Unraid → |
| Everyone else (Linux / Windows / macOS with Docker) | Run ./docker-start.sh |
Docker → |
| Developers | Run ./start.sh — Python + Node directly, no Docker |
Dev → |
Not sure? Use the Docker path. It works on any OS and handles everything automatically.
Quick Start (Docker)
# 1. Clone the repo
git clone https://github.com/vonhex/Eyeris.git
cd Eyeris
# 2. Run the start script — it will create .env and tell you what to fill in
chmod +x docker-start.sh
./docker-start.sh
# 3. Edit .env with your NAS credentials (SMB_HOST, SMB_USERNAME, etc.)
nano .env
# 4. Run again — pulls the image and starts the container
./docker-start.sh
Open http://localhost:8000 — default username is eyeris, password is set on first run.
Features
Gallery & Browsing
- Infinite-scroll gallery with thumbnails, favorites, and multi-select bulk actions
- Filter by tag, category, album, folder, camera, location, date range, GPS, or quality issue
- Sort by date taken, date added, filename, or random
- Video support (MP4, MKV, MOV, AVI, WebM and more) with thumbnail preview
- Untagged view shows both images and videos with no tags yet
Image Viewer
- Desktop: mouse-wheel zoom (up to 8×), click-drag to pan, double-click to toggle zoom, keyboard ← → to navigate
- Mobile: full-screen view, pinch-to-zoom, horizontal swipe to navigate between images, swipe-up bottom sheet to reveal metadata and editing controls
- Scroll-to-top button appears site-wide when scrolling long pages
AI Analysis
- SigLIP zero-shot tag classification against ~300 candidates — runs locally on GPU during scan
- YOLOv8 + FaceNet face detection and bounding-box metadata per image
- XMP sidecar ingestion: tags and descriptions written by external tools are read automatically during scan
A-Eye Integration
- Connect to a self-hosted A-Eye instance from the Settings page
- Send untagged images and videos to A-Eye for AI analysis with one click from the Dashboard
- Video thumbnails are sent automatically when a video has no tags
- Tags and descriptions written by A-Eye are auto-imported every 5 minutes — no manual re-import needed
- Supports HTTP Basic Auth for protected A-Eye instances
- A-Eye URL, username, and password persist across container updates
Metadata & EXIF
- Date taken, GPS location with OpenStreetMap link, reverse-geocoded city/country
- Camera make/model, lens model, aperture, shutter speed, ISO, focal length
Organisation
- Tag editor per image + bulk tag editor across selections
- Category and album assignment
- Duplicate detection via perceptual hash
System
- Two-phase async scan pipeline with live progress bar
- File-watcher for near-real-time new image detection
- Settings page with runtime
.envediting — all settings survive container recreation - Dashboard shows accurate untagged counts for both images and videos
Screenshots
Gallery & Search

AI Tag Cloud

System Dashboard

Blurry Photo Detection

License
PolyForm Noncommercial License 1.0.0 — free to use and modify, not for commercial use or resale. For commercial licensing contact lucashjantzen@gmail.com.
Install Eyeris on Unraid in a few clicks.
Find Eyeris in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/vonhex/eyeris:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8000]/- Network
bridge- Shell
bash- Privileged
- false
Template configuration
Port for the Eyeris web interface and API.
- Target
- 8000
- Default
- 8000
- Value
- 8000
Your photo library — local folder or SMB/NFS mount point.
- Target
- /data/images
- Default
- /mnt/user/Pictures/
- Value
- /mnt/user/Pictures/
Where Eyeris stores generated thumbnails and face crop cache.
- Target
- /data/thumbnails
- Default
- /mnt/user/appdata/eyeris/thumbnails/
- Value
- /mnt/user/appdata/eyeris/thumbnails/
SQLite database storage. Ignored if DB_HOST is set.
- Target
- /data/db
- Default
- /mnt/user/appdata/eyeris/db/
- Value
- /mnt/user/appdata/eyeris/db/
Persistent config file — Eyeris reads and writes settings here. Create an empty file at this path before first run.
- Target
- /app/.env
- Default
- /mnt/user/appdata/eyeris/eyeris.env
- Value
- /mnt/user/appdata/eyeris/eyeris.env
IP or hostname of your NAS. Leave empty if photos are already accessible via the Photo Directory path above.
- Target
- SMB_HOST
SMB/CIFS username for your NAS.
- Target
- SMB_USERNAME
SMB/CIFS password for your NAS.
- Target
- SMB_PASSWORD
Comma-separated share names to scan, e.g. photos,media,camera-uploads
- Target
- SMB_SHARES
URL of your A-Eye instance, e.g. http://192.168.1.100:7171. Connect A-Eye to enable AI image descriptions and automatic tagging.
- Target
- AEYE_URL
Username for HTTP Basic Auth on your A-Eye instance. Leave empty if A-Eye is unauthenticated.
- Target
- AEYE_USER
Password for HTTP Basic Auth on your A-Eye instance.
- Target
- AEYE_PASS
URL of a SearXNG instance for the web image search feature (optional).
- Target
- SEARXNG_URL
Number of parallel scan workers. Raise to 3-4 on fast systems; lower if your system struggles.
- Target
- SCAN_CONCURRENCY
- Default
- 2
- Value
- 2
How often Eyeris rescans for new photos.
- Target
- SCAN_INTERVAL_MINUTES
- Default
- 60
- Value
- 60
Set to true to restrict scanning to a time window (e.g. overnight only).
- Target
- SCAN_SCHEDULE_ENABLED
- Default
- false
- Value
- false
Start of the allowed scan window (24-hour HH:MM). Only used when SCAN_SCHEDULE_ENABLED=true.
- Target
- SCAN_SCHEDULE_START
- Default
- 22:00
- Value
- 22:00
End of the allowed scan window (24-hour HH:MM). An end time before the start time crosses midnight.
- Target
- SCAN_SCHEDULE_END
- Default
- 06:00
- Value
- 06:00
MariaDB host IP or hostname. Leave empty to use the built-in SQLite database (recommended for most users).
- Target
- DB_HOST
MariaDB port.
- Target
- DB_PORT
- Default
- 3306
- Value
- 3306
MariaDB username.
- Target
- DB_USER
- Default
- root
- Value
- root
MariaDB password.
- Target
- DB_PASSWORD
MariaDB database name.
- Target
- DB_NAME
- Default
- image_catalog
- Value
- image_catalog