前言
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,既方便备份又方便管理。
- 登录 1Panel 面板,点击左侧菜单 数据库 -> MariaDB。
- 点击 创建数据库。
填写如下信息(请根据实际情况设置密码):
- 名称:
chevereto - 用户名:
chevereto - 密码:
pXGm3CpwCp5cnWbi(示例密码,请务必修改为强密码) - 权限:读写 (默认)
- 名称:
- 点击确认。
创建完成后,请确保数据库状态为 “已启动”。
因为 Chevereto 运行在独立的 Docker 容器内,而 1Panel 的 MariaDB 运行在宿主机(或另一个网络栈)中。所以在后续配置连接时,不能填写
127.0.0.1 或 localhost,必须填写宿主机的 内网 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/images2. 修正目录权限
这是最容易出错的一步。必须将该目录的所有者修改为 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 中创建一个反代网站。
- 进入 1Panel 网站 -> 创建网站 -> 反向代理。
- 主域名:填写你的域名(例如
img.example.com)。 - 代理地址:
127.0.0.1:8090。 - 提交创建。
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 部署的灵活性。