A self-hostable personal dashboard for homelabs with service status checks, widgets, themes, icon packs and a UI config editor.
HoshinoSuzumi/chronoframe
Self-hosted photo gallery that extracts EXIF, identifies shooting locations, plays Live Photos and offers albums and a map explore view.
Open-source alternative to:Google Photos
Apple Photos
- Stars
- 1,949
- Forks
- 153
- Open issues
- 32
- Last commit
- 3 hours ago
What is it?
ChronoFrame is a self-hosted photo gallery for publishing your own photos. After upload, it extracts EXIF metadata, generates previews and identifies shooting locations through reverse geocoding. Visitors can browse by time, album or map, and zoom into large images with a WebGL viewer.
The project covers Live Photos and Motion Photos by automatically pairing an image with its video, with playback on hover or long-press. Albums can be reordered, hidden or protected with passwords. An admin dashboard handles batch uploads, metadata and rating edits, batch downloads, reindexing, and shows task queues and logs.
Storage can be local files, S3-compatible services or OpenList, with CDN URLs configurable. Deployment is documented with Docker and Docker Compose, and a setup wizard creates the administrator and storage on first run. The app is built with Vue and Nuxt.
Key features
- 01Automatic EXIF extraction, previews and shooting-location recognition after upload.
- 02Live Photo and Motion Photo pairing with hover or long-press playback.
- 03WebGL zoom and tiled rendering for large images.
- 04Albums with reordering, hiding and password protection.
- 05Map view with MapLibre or Mapbox and a choice of place-name language.
- 06Storage on local disk, S3-compatible services or OpenList.
Use cases
- Publishing a personal photography portfolio on your own server.
- Sharing password-protected albums with family or clients.
- Browsing a photo library by location on a map.
- Keeping photos in an S3 bucket while serving them through a gallery front end.
Quick start
- 1
Create docker-compose.yml with the ChronoFrame service definition
- 2
Start the container in the background
docker compose up -d - 3
Open http://localhost:3000 and finish the setup wizard to create an administrator and choose storage
Things to know
- Docker is the recommended deployment; running from source needs Node.js 22 and pnpm 10.34.6.
- Public deployments should be served over HTTPS behind a proxy.
- Some features depend on a map token (MapLibre/Mapbox) and optional services such as S3 or OpenList.
Topics
FAQ
- What is chronoframe?
- Self-hosted photo gallery that extracts EXIF, identifies shooting locations, plays Live Photos and offers albums and a map explore view. ChronoFrame is a self-hosted photo gallery for publishing your own photos. After upload, it extracts EXIF metadata, generates previews and identifies shooting locations through reverse geocoding. Visitors can browse by time, album or map, and zoom into large images with a WebGL viewer.
- Is chronoframe free to use? What license does it have?
- chronoframe is open source under the MIT license. Check the license terms before using it in commercial products.
- Is chronoframe still maintained?
- Actively maintained. The last commit to chronoframe was on Oct 21, 2026.
- What can I use chronoframe for?
- Publishing a personal photography portfolio on your own server. Sharing password-protected albums with family or clients. Browsing a photo library by location on a map. Keeping photos in an S3 bucket while serving them through a gallery front end.
- How do I install chronoframe?
- Create docker-compose.yml with the ChronoFrame service definition Start the container in the background: docker compose up -d Open http://localhost:3000 and finish the setup wizard to create an administrator and choose storage
- Where can I get chronoframe?
- The source code and installation instructions are on GitHub: https://github.com/HoshinoSuzumi/chronoframe
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Self-hosted personal finance app for recording daily transactions, importing bank data, and analyzing spending with charts.
Open-source AI CRM system with private deployment, built-in BI via DataEase, and a CRM Skills interface for AI assistants.
A self-hosted fitness tracking service for syncing and analyzing activities from Strava, Garmin Connect, and GPX/TCX/FIT files, with data kept on your own server.
A self-hosted personal microblog for publishing short posts, links and media to a timeline that others can follow and comment on.
Self-hosted cloud storage server where files and notes are encrypted in the browser before they reach the server.