ChronoFrame部署教程

1. 拉取镜像
ChronoFrame 镜像托管在 GitHub Container Registry (GHCR) 和 Docker Hub,可根据网络情况选择:
# 从 GHCR 拉取(推荐)
docker pull ghcr.io/hoshinosuzumi/chronoframe:latest
# 或从 Docker Hub 拉取
docker pull hoshinosuzumi/chronoframe:latest
2. 配置环境变量
在执行部署命令的工作目录创建 .env 文件并配置必要参数,完整配置项可参考 官方文档。
# 管理员邮箱(必须)
CFRAME_ADMIN_EMAIL=aa@qq.com
# 管理员用户名(可选,默认 ChronoFrame)
CFRAME_ADMIN_NAME=aa
# 管理员密码(可选,默认 CF1234@!)
CFRAME_ADMIN_PASSWORD=aaaaa
# 站点信息(均可选)
NUXT_PUBLIC_APP_TITLE=ksmlc的图库站
NUXT_PUBLIC_APP_SLOGAN=HelloWorld
NUXT_PUBLIC_APP_AUTHOR=ksmlc
NUXT_PUBLIC_APP_AVATAR_URL=https://ksmlc.cn/images/ksmlc.png
# 地图提供器 (maplibre)
# MapLibre(需 MapTiler 令牌)
NUXT_PUBLIC_MAP_PROVIDER=maplibre
NUXT_PUBLIC_MAP_MAPLIBRE_TOKEN=aaaaaaaaaaaa
# 存储提供者(local 或 s3 或 openlist)
NUXT_STORAGE_PROVIDER=local
NUXT_PROVIDER_LOCAL_PATH=/app/data/storage
# OpenList基本配置(如果使用openlist必须填)
NUXT_PROVIDER_OPENLIST_BASE_URL=https://your-openlist-server.com
NUXT_PROVIDER_OPENLIST_ROOT_PATH=/天翼云盘/chronoframe/photos
NUXT_PROVIDER_OPENLIST_TOKEN=your-api-token
# 会话密码(必须,32 位随机字符串)
NUXT_SESSION_PASSWORD=IRYbaU6m46A3ulRchqfdrthnan5J7fIC
# 可通过 IP 端口访问
NUXT_ALLOW_INSECURE_COOKIE=true
# 重复文件检测
NUXT_UPLOAD_DUPLICATE_CHECK_ENABLED=true
# 重复文件检测-skip(跳过模式)、warn(警告模式)、block(阻止模式)
NUXT_UPLOAD_DUPLICATE_CHECK_MODE=skip
3. 部署方式
方式一:单容器部署
直接使用 docker run 启动:
docker run -d \
--name chronoframe \
-p 3320:3000 \
-v /www/wwwroot/img.520301.xyz:/app/data \
--env-file .env \
ghcr.io/hoshinosuzumi/chronoframe:latest
4. 访问服务
部署完成后,通过 http://localhost:3320 访问 ChronoFrame,使用配置的管理员邮箱和密码登录。
5. 常用操作(Docker Compose)
# 查看日志
docker-compose logs -f chronoframe
# 停止服务
docker-compose down
# 更新镜像并重启
docker-compose pull
docker-compose up -d
6. 反向代理
可参考官方文档,不会配置直接把下方的交给ai
server {
listen 80;
server_name your-domain.com;
# HTTPS 重定向
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
# SSL 证书配置
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
# SSL 安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# 上传大小限制
client_max_body_size 100M;
location / {
proxy_pass http://localhost:3320;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
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;
proxy_cache_bypass $http_upgrade;
# WebSocket 支持
proxy_set_header Connection "upgrade";
proxy_set_header Upgrade $http_upgrade;
# 超时设置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
# 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|webp|svg|css|js|ico|woff|woff2|ttf|eot)$ {
proxy_pass http://localhost:3000;
expires 1y;
add_header Cache-Control "public, immutable";
proxy_set_header Host $host;
}
}
登录到控制台
- 点击头像跳转到登录页面,可以使用账号密码或 GitHub 登录
上传照片
- 访问仪表板页面
/dashboard - 在
Photos页面中选择图片并点击上传(支持批量上传和拖拽上传) - 系统将自动提取 EXIF 信息、生成缩略图并逆编码照片地理位置
注意事项
-
数据会保存在你所指定的目录,例如上方:
/www/wwwroot/photo.520301.xyz,建议定期备份 -
如果后续修改了
.env文件后,需要重启 ChronoFrame 容器才能使新的配置生效。-
先停止当前运行的容器
docker stop chronoframe -
移除已停止的容器(因为 Docker 容器启动后,配置会固化,必须重建才能加载新配置)
docker rm chronoframe -
用同样的命令重新启动容器(此时会读取更新后的
.env文件)docker run -d \ --name chronoframe \ -p 3320:3000 \ -v /www/wwwroot/photo.520301.xyz:/app/data \ --env-file .env \ ghcr.io/hoshinosuzumi/chronoframe:latest
-
更新 ChronoFrame 容器的步骤:
-
停止并移除旧容器:
docker stop chronoframe docker rm chronoframe -
拉取最新镜像:
docker pull ghcr.io/hoshinosuzumi/chronoframe:latest -
用新镜像重新启动容器(使用相同的配置):
docker run -d \ --name chronoframe \ -p 3320:3000 \ -v /www/wwwroot/photo.520301.xyz:/app/data \ --env-file .env \ ghcr.io/hoshinosuzumi/chronoframe:latest