目录
一、前言
二、 准备工作
注册云服务平台
购买并配置云服务器
连接并管理云服务器
三、服务器环境配置
更新系统并安装基础软件
安装Docker 和Docker Compose
(可选)安装Nginx 用于反向代理
四、Chronoframe 安装步骤
获取Chronoframe 镜像
创建环境配置文件
运行Chronoframe 容器
验证安装
前言
Chronoframe 是一个自托管的个人照片库应用,支持在线管理照片、相册,并具备地理位置识别等高级功能。对于摄影爱好者和需要管理大量照片的用户来说,
将Chronoframe 部署在自己的云服务器上,可以完全掌控数据,并享受灵活的扩展性。本教程将手把手教您如何在雨云平台上购买云服务器,并完成Chronoframe 的部署。我们将采用模块化的章节结构,循序渐进地讲解每一步, 确保新手也能轻松跟上。
准备工作
1.注册雨云账号并使用优惠码
首先,您需要在雨云平台注册一个账号。雨云是一家国内云服务提供商,提供云服务器、游戏云等多种产品。
点击网页右上角,进行注册!
注册时输入优惠码(如果提示了已通过优惠通道注册就不用输入啦) techaser 可以享受5折优惠!这个优惠码新用户专享的,可以为您节省后续的开服成本。完成注册后,建议绑定微信,以便领取我发布的五折券和永久八折券。
购买并配置云服务器
登录雨云控制台后,进入“云服务器”模块,点击“购买云服务器”开始选购。
对于部署Chronoframe这类照片管理应用,一台配置适中的云服务器即可满足需求。推荐选择2核CPU、2GB内存的入门配置,这已经能够流畅运行
Chronoframe 并处理一定量的照片访问。如果预算允许,也可以选择更高配置以 获得更好的性能和扩展空间。
在购买页面,您需要选择服务器的地域。雨云提供了包括国内(如江苏宿迁、湖北十堰)和海外(如香港、美国洛杉矶)在内的多个机房。请根据您的目标用户群体选择合适的机房:如果主要面向国内用户,建议选择国内机房以获得更低的延迟;如果需要免备案或面向海外用户,则可选择香港或美国机房。确认配置和地域后,如果你使用了我的优惠码注册,下方就可以选择5折优惠券,点击“立即购买”并完成支付。
推荐配置:香港2H4G 按流量计费
购买成功后,系统将自动为您创建一台云服务器,并跳转到管理页面。此时,您需要等待服务器状态变为“运行中”。一旦服务器运行起来,您就可以开始配置和使用它了。
连接并管理云服务器
在服务器列表中找到您刚购买的实例,点击“管理”进入详情页面。在管理页面中,您可以查看服务器的公网IP地址、远程登录端口以及初始的登录凭证(用户名和密码)。接下来,您需要通过SSH 客户端连接到这台服务器进行环境配置。
推荐使用Windows自带的OpenSSH 客户端或第三方工具如FinalShell、MobaXterm 等来连接服务器。打开SSH 客户端,输入服务器的公网IP和端口(默认为22),然后使用提供的用户名(通常为 root ) 和密码进行登录。
成功连接后,您将进入服务器的命令行界面。接下来,我们将对服务器环境进行 必要的配置,为部署Chronoframe 做好准备。
服务器环境配置
更新系统并安装基础软件
在开始安装Chronoframe 之前,确保服务器的操作系统和软件包都是最新状态。 首先,更新系统的软件包索引和已安装的包:
apt update
apt udgrade -y上述命令将更新软件包列表并升级系统中的所有包到最新版本。在执行过程中, 如果出现询问是否继续的提示,请输入Y 确认。
接下来,安装一些基础但必要的软件。Chronoframe 运行在Docker 容器中,因此我们需要安装Docker 以及用于管理Docker的Docker Compose工具。此外,为了后续方便地管理文件和编辑配置,我们还可以安装 wget (用于下载文件)和 nano (一个简单的文本编辑器)等工具:
安装完成后,启动Docker 服务并设置其开机自启:
systemctl docker
systemctl enable
docker为了验证Docker 是否安装成功,可以运行以下命令查看Docker 版本:
docker --version如果输出了Docker 的版本信息,则说明Docker 已正确安装并运行。
安装Docker Compose(雨云)
在上一步中,我们已经通过 apt 安装了Docker 。 不过,为了确保我们使用的是最新版本的Docker Compose, 推荐采用雨云提供的安装方式。 Docker Compose 是一个用于定义和运行多容器Docker 应用的工具,通过一个YAML 文件来配置应用服务,非常适合用于部署Chronoframe 这样的应用。
直接打开云服务器管理页面→重装和安装软件→选择Docker和Docker Compose即可。
(可选)安装Nginx 用于反向代理
在生产环境中,通常会在Chronoframe 前端部署一个反向代理服务器(如Nginx) 来处理HTTPS 加密、负载均衡和静态文件缓存等。不过,对于新手入门 阶段,这一步是可选的。如果您希望先让Chronoframe 以HTTP 方式运行,可以 跳过本节,待熟悉流程后再配置反向代理和SSL。
如果您决定现在就安装Nginx, 可以通过以下命令进行安装:
apt install -y nginx安装完成后,启动Nginx 并设置开机自启动
systemctl start nginx
systemctl enable
nginx此时,Nginx 已经以默认配置运行在服务器的80端口上。您可以通过浏览器访问 服务器的公网IP 地址,应该能看到Nginx 的欢迎页面。这表明Nginx 安装成功。我 们将在后续章节中配置Nginx, 使其作为Chronoframe 的反向代理。
Chronoframe安装步骤
现在,我们进入最激动人心的部分——安装Chronoframe 。我们将使用Docker来运行Chronoframe, 因为这是官方推荐的部署方式,能够简化环境配置并保证应用的一致性。
获取Chronoframe镜像
Chronoframe 的官方镜像托管在GitHub Container Registry(GHCR) 和Docker Hub上。您可以根据网络情况选择拉取其中一个源的镜像。以下是使用 GHCR 源的命令:
docker pull ghcr.io/hoshinosuzumi/chronoframe:latest或者,使用Docker Hub源:
docker pull hoshinosuzumi/chronoframe:latest上述命令会从镜像仓库拉取Chronoframe 的最新镜像到本地。拉取过程可能需要 一些时间,取决于您的网络速度。请耐心等待直到镜像下载完成。
创建环境配置文件
Chronoframe 通过环境变量来进行配置。为了方便管理,我们创建一个 .env 文 件来存储这些配置。在服务器的 /root 目录下,使用 nano 编辑器创建并打开 .env 文件:
nano .env在 .env 文件中,至少需要配置以下几项:
● 管理员邮箱(必填) : 设置Chronoframe 管理员的邮箱地址,用于接收通知等。
● 管理员用户名(可选) :自定义管理员的用户名,如果不设置,默认为 Chronoframe 。
● 管理员密码(可选): 自定义管理员的登录密码,如果不设置,默认 为 CF1234@! 。
● 站点元数据(可选) :可以设置站点的标题、标语、作者等信息,用于个性化界面。
● 地图访问令牌(可选) : Chronoframe 内置了地图功能,需要地图服务的访问令牌。您可以选择使用MapLibre 或Mapbox 作为地图提供商。如果使用Mapbox, 需要提供一个公共访问令牌;如果需要逆地理编码功能,还需要提供一个无限制的令牌。这些令牌需要您提前在 相应平台申请并填入。如果您暂时不需要地图功能,可以留空。
● 存储提供者(必填) : Chronoframe 支持多种存储后端,包括本地文 件系统和S3 兼容的对象存储。对于新手入门,我们推荐使用本地文件 系统存储,即设置 NUXT_STORAGE_PROVIDER=local 。 同时,需要指定本地存储的路径,例如
NUXT_PROVIDER_LOCAL_PATH=/app/data/storage● 会话密码(必填) :设置一个32位的随机字符串作为会话加密密钥, 用于保障用户登录状态的安全。您可以使用 openssl rand -hex 16 命令生成一个随机的32字符字符串,并将其填入。
下面是一个 .env 文件的示例内容:
# 管理员邮箱(必须)
CFRAME_ADMIN_EMAIL=
# 管理员用户名(可选,默认 ChronoFrame)
CFRAME_ADMIN_NAME=
# 管理员密码(可选,默认 CF1234@!)
CFRAME_ADMIN_PASSWORD=
# 站点信息(均可选)
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 位随机字符串)
NUXT_SESSION_PASSWORD=请根据您的实际情况修改上述配置。特别是管理员邮箱和会话密码这两项,请务必正确设置。会话密码可以使用以下命令生成:
# Linux / macOS
openssl rand -base64 32
# Windows (pwsh)
[Convert]::ToBase64String((1..32|%{[byte](Get-Random -Max 256)}))将生成的32字符字符串填入 NUXT_SESSION_PASSWORD 即可。完成编辑后,按 Ctrl+0 保存文件,然后按 Ctrl+X 退出nano 编辑器。
运行Chronoframe 容器
有了镜像和配置文件,我们就可以启动Chronoframe 容器了。推荐使用Docker Compose 来管理容器,这样可以方便地定义容器的各种参数(如端口映射、数据卷挂载等)并一键启动。在 /root 目录下,创建一个 docker-compose.yml 文件:
nano docker-compose.ymlservices:
chronoframe:
image: ghcr.io/hoshinosuzumi/chronoframe:latest
container_name: chronoframe
restart: unless-stopped
ports:
- '3000:3000'
volumes:
- ./data:/app/data
env_file:
- .env在 docker-compose.yml 中,我们定义一个服务 chronoframe , 使用刚才拉取的镜像,并指定容器的名称、重启策略、端口映射、数据卷挂载以及环境变量文件。
上述配置的含义如下:
· image : 指定使用的镜像,这里我们使用GHCR 的镜像。如果您使用的是 Docker Hub的镜像,可以替换为 hoshinosuzumi/chronoframe:latest 。
· container_name : 为容器指定一个名称,方便管理。
· restart:unless-stopped : 设置容器的重启策略为“除非手动停止,否则总是重启”,确保服务在意外退出后自动重启。
· ports : 将容器内部的3000端口映射到宿主机的3000端口。Chronoframe默认运行在3000端口,通过这样的映射,您可以通过宿主机的3000端口访问 Chronoframe 服务。
· volumes : 将宿主机当前目录下的 data 目录挂载到容器内的 /app/data目录。这样,Chronoframe 存储的照片、数据库等数据就会保存在宿主机data 目录中,即使容器销毁重建,数据也不会丢失。
· env_file : 指定环境变量文件为当前目录下的 .env 文件,这样 Chronoframe 容器启动时会读取其中的配置。
保存并退出 docker-compose.yml 文件。接下来,在 /root目录下运行以下命令 来操作Chronoframe 容器:
# 启动服务
docker compose up -d
# 查看日志
docker compose logs -f chronoframe
# 停止服务
docker compose down
# 更新到最新版本
docker compose pull
docker compose up -d验证安装
现在,Chronoframe 应该已经在您的服务器上运行了。打开浏览器,访问以下地址:
http://<IP>:3000将 <IP> 替换为您实际的IP 地址。如果一切顺利,您将看到Chronoframe 的界面。这表明Chronoframe 已经成功部署并运行在您的云服务器上。
如果您在本地无法访问,请检查以下几点:
●确保服务器的防火墙允许3000端口的访问。如果您的服务器开启了防火墙 (如 ufw ), 请运行 ufw allow 3000 开放端口。
●如果您使用了雨云提供的防火墙/安全组,请确保入站规则允许3000端口的流量。
●确认您在浏览器中输入的地址和端口号正确无误。
一旦能够访问Chronoframe 的界面,恭喜您!您已经成功完成了Chronoframe的部署。接下来,您可以点击Chronoframe的图标登陆,然后,就可以开始上传照片、创建相册,享受 Chronoframe 带来的强大功能了!