ChronoFrame logo

ChronoFrame

Self-hosted personal photo gallery with Live Photo support and an explore map

Alternative to: google photos, apple photos

ChronoFrame screenshotChronoFrame screenshotChronoFrame screenshot

ChronoFrame is a self-hosted personal gallery application for browsing and managing photos and videos, with support for Live/Motion Photos, automatic EXIF metadata extraction, and a map for exploring where photos were taken. Built on Nuxt 4, it offers both a public gallery for sharing and an admin dashboard for organizing large collections, backed by S3-compatible or local filesystem storage.

ChronoFrame Docker Compose example

Self-host ChronoFrame on your own server, homelab, or VPS starting from this Docker Compose example. It runs ChronoFrame in Docker containers using the official ghcr.io/hoshinosuzumi/chronoframe:latest image, with persistent volumes and automatic restarts preconfigured. Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.

services:
  chronoframe:
    image: ghcr.io/hoshinosuzumi/chronoframe:latest
    volumes:
      - data:/app/data
    restart: unless-stopped
    environment:
      # Email address for the initial administrator account (used to sign in).
      CFRAME_ADMIN_EMAIL: "changeme"
      # Display name shown for the initial administrator account.
      CFRAME_ADMIN_NAME: "Chronoframe"
      # Password for the initial administrator account. Change this before exposing the app publicly.
      CFRAME_ADMIN_PASSWORD: "CF1234@!"
      # 32-character random secret used to encrypt user session cookies.
      NUXT_SESSION_PASSWORD: "changeme"

volumes:
  data:

Values set to changeme are required — replace them with your own values before starting ChronoFrame.

Prefer a managed setup? WinterFlow installs, configures, and updates ChronoFrame for you using this same Docker Compose configuration.