前言

Chevereto 是目前功能最强大的自托管图床程序之一,支持多用户、多语言、自动压缩、外部存储(S3/MinIO)等丰富功能。

由于目前 1Panel 官方应用商店暂未收录 Chevereto,我们需要通过手动运行 Docker 容器的方式进行部署。对于习惯了“一键安装”的用户来说,手动部署最大的难点在于:如何让 Docker 容器连接到 1Panel 已经管理好的 MariaDB 数据库,以及如何处理目录权限问题。

本文将手把手教你在 1Panel 面板中,利用现有的 MariaDB 环境,通过一条 Docker 命令完美部署 Chevereto。

环境准备

  • 面板版本:1Panel (最新版)
  • 数据库:MariaDB 11.8.5 (通过 1Panel 安装)
  • 容器引擎:Docker (1Panel 内置)
  • 图床镜像ghcr.io/chevereto/chevereto:latest

第一步:准备数据库

虽然我们是手动运行 Chevereto 容器,但数据库完全可以利用 1Panel 管理的 MariaDB,既方便备份又方便管理。

  1. 登录 1Panel 面板,点击左侧菜单 数据库 -> MariaDB
  2. 点击 创建数据库
  3. 填写如下信息(请根据实际情况设置密码):

    • 名称chevereto
    • 用户名chevereto
    • 密码pXGm3CpwCp5cnWbi (示例密码,请务必修改为强密码)
    • 权限:读写 (默认)
  4. 点击确认。

创建完成后,请确保数据库状态为 “已启动”

核心注意点
因为 Chevereto 运行在独立的 Docker 容器内,而 1Panel 的 MariaDB 运行在宿主机(或另一个网络栈)中。所以在后续配置连接时,不能填写 127.0.0.1localhost,必须填写宿主机的 内网 IP(例如 192.168.5.200)或者 Docker 网桥网关 IP(通常是 172.17.0.1)。


第二步:配置存储目录与权限(避坑关键)

Chevereto 需要一个持久化目录来保存上传的图片。如果不挂载目录,重启容器后数据会丢失。
此外,Chevereto 容器内部默认使用 www-data 用户(UID 为 33),如果宿主机目录权限不匹配,会导致上传失败。

1. 创建挂载目录

在服务器终端执行(或通过 1Panel “主机”->“文件”管理):

mkdir -p /opt/1panel/apps/chevereto/images

2. 修正目录权限

这是最容易出错的一步。必须将该目录的所有者修改为 UID 33,否则容器无法写入。

# 修改所有者为 www-data (UID 33)
sudo chown -R 33:33 /opt/1panel/apps/chevereto/images

# 赋予读写执行权限
sudo chmod -R 775 /opt/1panel/apps/chevereto/images

第三步:运行 Docker 命令

准备工作完成后,我们可以直接在终端运行 Docker 启动命令。

命令说明

我们将 Chevereto 官方命令进行了定制化修改,以适配 1Panel 环境:

  • -p 8090:80:将容器 80 端口映射到宿主机 8090,避免占用主端口。
  • -e CHEVERETO_DB_HOST=...:指向你的内网 IP,确保能连上数据库。
  • -v ...:挂载刚才创建并授权的目录。

执行部署

请复制以下命令,在 SSH 终端中执行(注意替换你的数据库密码和宿主机 IP):

docker run -d \
  --name chevereto \
  -p 8090:80 \
  -e CHEVERETO_DB_HOST=192.168.5.200 \
  -e CHEVERETO_DB_USER=chevereto \
  -e CHEVERETO_DB_PASS=pXGm3CpwCp5cnWbi \
  -e CHEVERETO_DB_PORT=3306 \
  -e CHEVERETO_DB_NAME=chevereto \
  -e CHEVERETO_MAX_POST_SIZE=2G \
  -e CHEVERETO_MAX_UPLOAD_SIZE=2G \
  -e CHEVERETO_SERVICING=server \
  -v /opt/1panel/apps/chevereto/images:/var/www/html/images \
  ghcr.io/chevereto/chevereto:latest

运行后,使用 docker ps 检查容器状态。


第四步:配置反向代理与安装

1. 创建反向代理

为了使用域名访问并配置 SSL 证书,我们需要在 1Panel 中创建一个反代网站。

  1. 进入 1Panel 网站 -> 创建网站 -> 反向代理
  2. 主域名:填写你的域名(例如 img.example.com)。
  3. 代理地址127.0.0.1:8090
  4. 提交创建。

2. 完成安装向导

在浏览器访问你的域名(http://img.example.com)。

  • 由于我们在 Docker 命令中已经注入了数据库信息,Chevereto 会自动跳过数据库配置页
  • 你将直接看到管理员账号设置页面,填写邮箱和密码即可完成安装。

常见问题排查

Q: 容器启动了,但网页提示 "Database connection failed"?

A: 99% 是因为 IP 填错了。请检查 -e CHEVERETO_DB_HOST 填写的 IP 是否为宿主机的局域网 IP。同时检查 1Panel 的防火墙(或系统防火墙)是否放行了 3306 端口。

Q: 上传图片时提示 "Permission denied" 或 "Can't write to directory"?

A: 目录权限不对。请重新执行第二步中的 chown 命令。

Q: 上传大文件(如 10MB 以上)失败?

A: 这里的瓶颈通常在 Nginx。请在 1Panel 网站配置中,修改 Nginx 配置,增加或修改 client_max_body_size 2048m;

通过以上步骤,你就成功在 1Panel 上“手动”部署了一个生产环境级别的 Chevereto 图床,既享受了 1Panel 管理数据库和反代的便利,又拥有了 Docker 部署的灵活性。

最后修改:2025 年 12 月 19 日
如果觉得我的文章对你有用,请随意赞赏