部署实战3 min read0 views

ChronoFrame 部署教程:一条 Docker 命令上线国产开源相册

ChronoFrame 用 Nuxt 4 编写,单容器 + SQLite,主打摄影作品集展示。十分钟完成部署、安装向导、存储与 HTTPS 配置。

ChronoFrame 部署教程:一条 Docker 命令上线国产开源相册

ChronoFrame 是国产开发者维护的自托管相册,方向不是「备份工具」,而是「摄影作品集」:瀑布流、WebGL 缩放、Live Photo、地图足迹、带密码的相册,界面干净。它只有一个容器,一条命令就能上线。

一、为什么值得试

  • Nuxt 4 + Vue 编写,前后端一体,部署极其简单。
  • 支持 Live Photo(同名 JPG/HEIC + MOV 自动配对)、EXIF、地点反查。
  • 相册可隐藏、可加密码,适合只公开一部分内容。
  • 存储可选本地、S3 兼容对象存储、OpenList,后台随时切换。
  • AGPL-3.0,代码开放,已被 HelloGitHub 推荐。

二、镜像与端口

项目值
镜像(GHCR)ghcr.io/hoshinosuzumi/chronoframe:latest
镜像(Docker Hub)hoshinosuzumi/chronoframe:latest
Web 端口3000
数据目录/app/data(数据库、设置、本地照片)

三、Compose 部署

mkdir -p /opt/chronoframe && cd /opt/chronoframe

新建 docker-compose.yml:

services:
  chronoframe:
    image: ghcr.io/hoshinosuzumi/chronoframe:latest
    container_name: chronoframe
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - ./data:/app/data
    environment:
      TZ: "Asia/Shanghai"
docker compose up -d
docker compose logs -f chronoframe

打开 http://服务器IP:3000,会进入安装向导。

四、安装向导

  1. 创建管理员账号(邮箱 + 密码)。
  2. 填写站点名称、地址(例如 https://photos.example.com)。
  3. 选择存储:本地存储填 /app/data/storage;用 S3 或 OpenList 就填对应的 endpoint、bucket、key。
  4. 地图功能需要 MapLibre / Mapbox 的 token,可以先跳过,之后在后台补。

完成后登录,进入 /dashboard 上传照片。上传后任务队列会自动处理 EXIF、缩略图、地点和 Live Photo,失败的任务可以点重试。

ChronoFrame 瀑布流
ChronoFrame 的瀑布流相册
ChronoFrame 照片详情
照片详情页:EXIF、位置与 Live Photo 播放

五、反向代理与 HTTPS

server {
    listen 443 ssl http2;
    server_name photos.example.com;
    ssl_certificate     /etc/letsencrypt/live/photos.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/photos.example.com/privkey.pem;

    client_max_body_size 2000M;
    proxy_read_timeout 600s;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

官方要求公网部署使用 HTTPS,否则登录 Cookie 和上传都会出问题。

六、备份与升级

  • 备份:整个 ./data 目录就是全部(SQLite、设置、本地照片)。用 S3 时,备份 ./data 加桶即可。
  • 升级:docker compose pull && docker compose up -d。想固定版本就把 latest 换成 v1.0.0 这类 tag。
  • 迁移:把 ./data 拷到新机器,同样的 Compose 启动即可。

七、常见问题

Live Photo 不播放? 图片与 MOV 必须同名(如 IMG_1234.heic 与 IMG_1234.mov),并且都上传成功。

相册密码能防住直链吗? 密码只控制 ChronoFrame 的访问;如果 S3/CDN 暴露了公开 URL,还需要在对象存储侧控制权限。

地图不显示? 安装时跳过了地图 token,去后台补一个 MapLibre/Mapbox token 即可。

八、小结

ChronoFrame 更像「个人摄影站 + 家庭相册」的结合体,轻、快、好看,部署成本是所有方案里最低的。缺点是生态还年轻,手机自动备份、AI 搜索这类能力不如 Immich。

相关阅读:Immich 部署教程 · 2026 开源家庭相册横评

MORE / 03

Keep reading

ChronoFrame Docker Deployment: A One-Command Self-Hosted Portfolio
部署实战

ChronoFrame Docker Deployment: A One-Command Self-Hosted Portfolio

2026.11.14 · 3 min read

Piwigo Docker Deployment: The Veteran Open-Source Family Gallery
部署实战

Piwigo Docker Deployment: The Veteran Open-Source Family Gallery

2026.11.14 · 3 min read

Lychee Docker Deployment: A Beautiful Family Photo Album
部署实战

Lychee Docker Deployment: A Beautiful Family Photo Album

2026.11.14 · 3 min read

StarCode

Discover and share great open-source projects. We serve developers and carry the spirit of the internet forward.

Contact

WeChat / advertising: ITcloub (please mention StarCode)

Disclaimer: Resources on this site remain the property of their original authors and are for learning and exchange only. For copyright concerns, contact us via About us → Copyright complaints.

Powered by Nuxt · Deployed on Cloudflare