静看光阴荏苒
不管不顾不问不说也不念

ChronoFrame:美观的照片展示和管理应用

ChronoFrame非常适合喜欢玩摄影、拍照的用户食用。我觉得这程序的UI设计的是真好看,无论是前台还是后台都好看,非常符合我的审美,没需求的我都想怼几张图片上去挂着了= =

ChronoFrame特性(摘自项目页面)

在线管理照片 – 通过 Web 界面轻松管理和浏览照片
探索地图 – 在地图上浏览照片拍摄位置
智能 EXIF 解析 – 自动提取拍摄时间、地理位置、相机参数等元数据
地理位置识别 – 自动识别(Reverse Geocoding)照片拍摄地点
多格式支持 – 支持 JPEG、PNG、HEIC/HEIF 等主流图片格式
智能缩略图 – 基于 ThumbHash 技术的高效缩略图生成

现代技术栈
Nuxt 4 – 基于最新的 Nuxt 框架,提供 SSR/SSG 支持
TypeScript – 完整的类型安全保障
TailwindCSS – 现代化的 CSS 框架
Drizzle ORM – 类型安全的数据库 ORM

灵活的存储方案
多存储后端 – 支持 S3 兼容存储、本地文件系统
CDN 加速 – 可配置 CDN 地址加速图片访问

安装Docker:

apt -y update
apt -y install curl
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

创建目录新建compose文件:

mkdir /opt/chronoframe && cd /opt/chronoframe && nano docker-compose.yml

写入如下内容:

services:
  chronoframe:
    image: ghcr.io/hoshinosuzumi/chronoframe:latest
    container_name: chronoframe
    restart: unless-stopped
    ports:
      - '127.0.0.1:3000:3000'
    volumes:
      - ./data:/app/data
    env_file:
      - .env

创建.env文件:

nano .env

写入如下内容,自行按注释内容修改:

# 管理员邮箱(必须)
CFRAME_ADMIN_EMAIL=imlala@example.com
# 管理员用户名(可选,默认ChronoFrame)
CFRAME_ADMIN_NAME=imlala
# 管理员密码(可选,默认 CF1234@!)
CFRAME_ADMIN_PASSWORD=passwd

# 站点信息(全部可选)
NUXT_PUBLIC_APP_TITLE=
NUXT_PUBLIC_APP_SLOGAN=
NUXT_PUBLIC_APP_AUTHOR=
NUXT_PUBLIC_APP_AVATAR_URL=

# 地图提供器 (maplibre/mapbox)
NUXT_PUBLIC_MAP_PROVIDER=maplibre
# 使用MapLibre需要MapTiler的访问令牌
NUXT_PUBLIC_MAP_MAPLIBRE_TOKEN=
# 使用Mapbox需要Mapbox的访问令牌
NUXT_PUBLIC_MAPBOX_ACCESS_TOKEN=

# 存储提供者(支持local/s3/openlist)
NUXT_STORAGE_PROVIDER=local
NUXT_PROVIDER_LOCAL_PATH=/app/data/storage

# 会话密码(必须,32位随机字符串,使用命令生成:openssl rand -base64 32)
NUXT_SESSION_PASSWORD=

若选择使用s3,则将存储部分替换为:

NUXT_STORAGE_PROVIDER=s3
NUXT_PROVIDER_S3_ENDPOINT=
NUXT_PROVIDER_S3_BUCKET=chronoframe
NUXT_PROVIDER_S3_REGION=auto
NUXT_PROVIDER_S3_ACCESS_KEY_ID=
NUXT_PROVIDER_S3_SECRET_ACCESS_KEY=
NUXT_PROVIDER_S3_PREFIX=photos/
NUXT_PROVIDER_S3_CDN_URL=

启动:

docker compose up -d

ChronoFrame建议生产环境使用反向代理,如果您必须使用IP+端口来访问,请在.env文件内添加如下内容:

NUXT_ALLOW_INSECURE_COOKIE=true

以解决类似问题:https://github.com/HoshinoSuzumi/chronoframe/issues/14#issuecomment-3333256569

我这里配置Ferron反向代理:

nano /etc/ferron.kdl

写入如下内容:

chronoframe.example.com {
    proxy "http://127.0.0.1:3000/"
}

重载Ferron:

systemctl reload ferron

前台的效果参考项目页面,我这里放两张后台的效果图:

赞(0)
未经允许不得转载:荒岛 » ChronoFrame:美观的照片展示和管理应用
分享到: 更多 (0)

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    还是觉得之前的 Slink 瀑布墙好看,毕竟作者更新挺勤快的。

    Tevin2小时前 Google Chrome 143.0.0.0 Google Chrome 143.0.0.0 Android 10 Android 10回复

分享创造快乐

广告合作资源投稿