secubox-openwrt/package/secubox/secubox-app-photoprism/README.md
CyberMind-FR 26519e7619 feat(photoprism): Add private photo gallery with AI features
New packages:
- secubox-app-photoprism: LXC-based PhotoPrism deployment
  - Debian Bookworm container with MariaDB, FFmpeg
  - AI face recognition, object detection, places/maps
  - photoprismctl CLI: install/start/stop/index/import/emancipate
  - HAProxy integration via mitmproxy (WAF-safe)

- luci-app-photoprism: KISS-themed dashboard
  - Stats cards (photos, videos, storage)
  - Service controls and AI feature display
  - Emancipate form for public exposure
  - RPCD backend with 12 methods

docs: Update WIP.md with PhotoPrism feature

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-06 10:00:49 +01:00

119 lines
2.8 KiB
Markdown

# SecuBox PhotoPrism
Self-hosted Google Photos alternative with AI-powered features, running in an LXC container.
## Features
- **AI Face Recognition** - Automatically detect and group faces
- **Object Detection** - Find photos by objects, scenes, colors
- **Places / Maps** - View photos on a world map
- **Full-Text Search** - Search across all metadata
- **Albums & Sharing** - Organize and share collections
- **RAW Support** - Process RAW files from cameras
- **Video Playback** - Stream videos with transcoding
## Quick Start
```bash
# Install PhotoPrism (creates LXC container)
photoprismctl install
# Start the service
/etc/init.d/photoprism start
# Access the gallery
http://192.168.255.1:2342
```
## CLI Commands
| Command | Description |
|---------|-------------|
| `install` | Create LXC container with PhotoPrism |
| `uninstall` | Remove container (preserves photos) |
| `start/stop/restart` | Service lifecycle |
| `status` | JSON status for RPCD |
| `logs [N]` | Show last N log lines |
| `shell` | Open container shell |
| `index` | Trigger photo indexing |
| `import` | Import from inbox folder |
| `passwd [pass]` | Reset admin password |
| `backup` | Create database backup |
| `configure-haproxy <domain>` | Setup HAProxy + SSL |
| `emancipate <domain>` | Full public exposure |
## Photo Management
### Adding Photos
1. **Direct Copy**: Copy files to `/srv/photoprism/originals/`
2. **Import Inbox**: Copy to `/srv/photoprism/import/`, run `photoprismctl import`
3. **WebDAV**: Enable WebDAV in PhotoPrism settings
### Triggering Index
After adding photos, run indexing:
```bash
photoprismctl index
```
## Public Exposure
Expose gallery to the internet with HAProxy + SSL:
```bash
photoprismctl emancipate photos.example.com
```
This configures:
- HAProxy vhost with Let's Encrypt SSL
- mitmproxy WAF routing
- DNS record (if dnsctl available)
## Configuration
UCI config at `/etc/config/photoprism`:
```
config photoprism 'main'
option enabled '1'
option http_port '2342'
option memory_limit '2G'
config photoprism 'features'
option face_recognition '1'
option object_detection '1'
option places '1'
```
## Resource Requirements
- **RAM**: 2GB recommended (1GB minimum)
- **Storage**: ~500MB for container + your photos
- **CPU**: AI indexing is CPU-intensive
## LuCI Dashboard
Access via: Services → PhotoPrism
Features:
- Status cards (photos, videos, storage)
- Start/Stop/Index/Import buttons
- AI feature toggles
- Emancipate form for public exposure
## Data Paths
| Path | Content |
|------|---------|
| `/srv/photoprism/originals` | Your photos and videos |
| `/srv/photoprism/storage` | Cache, thumbnails, database |
| `/srv/photoprism/import` | Upload inbox |
## Security
- Traffic routes through mitmproxy WAF (no bypass)
- Admin password stored in UCI
- Container runs with limited capabilities