PicPeak lets you create password-protected, time-limited photo galleries for your clients β hosted on your own server. No subscriptions, no storage limits, no third-party access to your photos.
Try it out at demo.picpeak.app.
Admin panel: demo.picpeak.app/admin β login with demo@picpeak.app / Demo2026!
The demo resets periodically.
Gallery Management β Create galleries, upload photos via drag & drop, set passwords and expiration dates. Galleries auto-archive when they expire. Events start as drafts so you can upload and prepare before notifying the client.
Client Experience β Responsive galleries that look great on any device. Guests can browse, download individual photos or everything at once. Optional guest uploads and feedback (likes, comments, ratings).
Themes & Branding β 11 built-in theme presets, custom CSS templates, configurable colors/fonts/layouts. White-label your admin panel and login page with your own logo and company name.
Email Notifications β Automated gallery creation, expiration warning, and archive emails. Multilingual templates (EN, DE, NL, PT, RU) editable from the admin UI.
Photo Protection β Watermarking, right-click prevention, canvas rendering, DevTools detection. Configurable per gallery.
External Media β Reference photos from a mounted folder instead of uploading. PicPeak reads originals in place and generates thumbnails on demand.
Multi-Language β Full UI translations for English, German, Dutch, Portuguese, and Russian. Email templates support all languages independently.
Analytics β Built-in view/download tracking plus optional Umami integration for privacy-focused analytics.
Video Support β Upload and stream MP4, WebM, MOV alongside photos. FFmpeg bundled via npm.
Multiple Admins β Role-based access control with super admin, admin, and editor roles.
git clone https://github.com/the-luap/picpeak.git
cd picpeak
cp .env.example .env
# Edit .env β set at least JWT_SECRET and passwords
docker compose up -dOpen http://localhost:3000 and log in with the credentials from your .env.
Permissions: Set
PUIDandPGIDin.envto match your host user (id -u/id -g) so Docker volumes are writable.
See the Deployment Guide for reverse proxy setup, SSL, external media, and production configuration.
| PicPeak | PicDrop | Scrapbook.de | |
|---|---|---|---|
| Self-hosted | Yes | No | No |
| Monthly cost | $0 | $29-199 | 19-99 EUR |
| Storage | Unlimited | 50-500 GB | 100-1000 GB |
| Custom branding | Full | Limited | Limited |
| Open source | Yes | No | No |
| API | Yes | Paid | No |
- Backend: Node.js, Express, PostgreSQL (or SQLite)
- Frontend: React, TypeScript, Tailwind CSS
- Infrastructure: Docker, Nginx, Redis
- Processing: Sharp (images), FFmpeg (video)
Stable (stable / latest) β Production-ready. Use this for real deployments.
Beta (beta) β Early access to new features. May have rough edges.
# Set in .env
PICPEAK_CHANNEL=stable # or beta
# Update
docker compose -f docker-compose.production.yml pull
docker compose -f docker-compose.production.yml up -dThe admin dashboard notifies you when updates are available.
We welcome contributions β bug fixes, features, translations, documentation. See CONTRIBUTING.md for setup instructions.
- Deployment Guide β Installation, configuration, reverse proxy, external media
- Admin API (OpenAPI) β Machine-readable API spec
- Admin API Quickstart β Authentication and testing guide
- Security Policy
MIT β use it for personal or commercial projects.




