正在加载...
1260 字
6 分钟
[开源] 初春图床 v3.5.7 更新:修复 MySQL 无法启动、新增 DB_TLS_MODE 与 Windows arm64 原生构建~
2026-10-24

初春图床 v3.5.7 更新来了!本版本在 v3.5.6 基础上合并了社区反馈的 2 个问题修复(#36、#37,对应 PR #39、#40,感谢 @MousseC),并新增 Windows arm64 原生构建产物。

本版本不含破坏性变更,可直接覆盖升级;升级前建议备份数据库。

[修复] MySQL 无法启动(Issue #36 / PR #39)#

MySQL 8 建表时直接报错退出:

Error 1101 (42000): BLOB, TEXT, GEOMETRY or JSON column 'description' can't have a default value

原因是 folders 表的 description 字段声明了 type:text;not null;default:''。MySQL 严格模式不允许 TEXT / BLOB / JSON 列带字面默认值,SQLite 与 PostgreSQL 则允许,所以只有 MySQL 部署起不来。

修复后该字段为 gorm:"type:text;not null"(backend/models/Folder.go:15),MySQL 建表语句变为 `description` text NOT NULL。已存在的 SQLite / PostgreSQL 库不受影响,无需迁移。

[新增] DB_TLS_MODE:自建数据库默认可连接(Issue #37 / PR #40)#

此前 MySQL / PostgreSQL 的 TLS 行为写死,自建数据库基本连不上:

  • MySQL 默认 ServerName=DB_HOST 且要求校验,报 x509: certificate is not valid for any names, but wanted to match mysql
  • PostgreSQL 设 ssl=off 时被强制要求 TLS,报 server refused TLS connection

即用户既无法关闭 TLS,也无法放宽校验,只能用云厂商证书或改代码。

本版本新增 DB_TLS_MODE(backend/database/tls.go):

取值行为
auto(默认)DB_HOST 全部解析为本机/私有地址(含 Docker 网络)时用 preferred,公网地址用 verify-full;解析失败按 verify-full 处理,不做静默降级
disable完全关闭 TLS
preferred尝试 TLS,失败回退明文(MySQL 语义)
required必须 TLS,不校验证书
verify-ca校验 CA,不校验主机名
verify-full校验 CA + 主机名

兼容别名:prefer / require / disabled。另有:

  • DB_TLS_SERVER_NAME:校验证书时使用的主机名,留空等于 DB_HOST(仅 verify-full 生效)
  • DB_SKIP_CERT_VERIFY=true:旧配置兼容,DB_TLS_MODE 未设置或为 auto 时等价于 required

启动日志会输出最终生效的模式,例如:

DB_TLS_MODE=auto(DB_HOST=mysql → 172.22.0.2,本机/私有地址)→ preferred

空值、auto 与无法识别的取值都有明确报错,不会悄悄连不上:

DB_TLS_MODE 取值无效: "bogus"(可选 auto | disable | preferred | required | verify-ca | verify-full)

已实测:MySQL 8.0 + 自签证书下 auto / disable / preferred / required / DB_SKIP_CERT_VERIFY=true 均可连接,verify-full 正确拒绝自签证书且不回退。

[新增] Windows arm64 构建产物#

Windows on ARM 设备(骁龙 X 系列、Surface Pro X 等)现在有原生 arm64 版本,不再需要 x64 模拟层。

为此把 github.com/go-ole/go-ole 从 v1.2.4 升到 v1.3.0——v1.2.4 的 VARIANT 类型没有 arm64 实现,交叉编译直接报 undefined: VARIANT。该依赖只经 gopsutil → StackExchange/wmi 间接引入,v1.3.0 同主版本号、无 API 变更。

[更新] 依赖升级#

随 PR #35 合入(v3.5.6 之后):golang.org/x/image、golang.org/x/net、golang.org/x/text、github.com/jackc/pgx/v5、quic-go 等升级到修复了安全通告的版本。

下载与部署#

产物说明
oneImg_Win_amd64_v3.5.7.zipWindows amd64(含 README,UPX -9)
oneImg_Win_arm64_v3.5.7.zipWindows arm64(含 README,UPX -9)本版本新增
oneImg_Linux_amd64_v3.5.7.tar.gzLinux amd64 静态二进制(UPX -9)
oneImg_Linux_arm64_v3.5.7.tar.gzLinux arm64 静态二进制(UPX -9)
oneImg_Docker_amd64_v3.5.7.tarDocker 镜像,docker load 导入后标签 oneimg:v3.5.7-amd64
oneImg_Docker_arm64_v3.5.7.tarDocker 镜像,docker load 导入后标签 oneimg:v3.5.7-arm64
  • 全部二进制为静态链接(webp / sqlite3 由 cgo 内嵌编译),无运行时依赖,UPX -9 压缩后约 16-17MB。
  • Windows arm64 版用 llvm-mingw 交叉编译,同样内嵌 cgo,运行时只依赖系统自带的 UCRT(Windows 10 起内置)。
  • Docker 镜像 runtime 层与官方 Dockerfile 一致(alpine:3.23 + ca-certificates + tzdata),amd64 / arm64 均已推送至 Docker Hub:onexru/oneimg-oneimg:v3.5.7(多架构 manifest)与 onexru/oneimg-oneimg:latest。

首次运行的管理员密码(重要)#

v3.5.5 及更早版本,初始管理员密码固定为 123456。从 v3.5.6 起改为随机生成。

v3.5.7 沿用 v3.5.6 起的规则:

DEFAULT_PASS行为
留空(推荐)仅在数据库还没有任何用户时生成 43 字符随机密码,写入 data/.initial_admin_password(权限 0600),不打印到日志
非空直接作为初始管理员密码
  • 该文件只写一次,重启不覆盖,也不会重置已有账号的密码。
  • Docker 查看:docker exec oneimg cat /app/data/.initial_admin_password
  • ⚠️ 从 v3.5.5 及更早版本升级时,若 .env 里还留着 DEFAULT_PASS=123456,它会被当作初始密码继续生效(仅影响还没有任何用户的空库)。请删除该行或改成强密码。

配置:直接在容器编排中设置#

所有变量都可以在 compose 的 environment 或 docker run -e 里设置,不需要进容器改 /app/.env:

services:
oneimg:
image: onexru/oneimg-oneimg
ports: ["8080:8080"]
environment:
- APP_URL=https://img.example.com
- DEFAULT_USER=admin
- DEFAULT_PASS= # 留空 → 自动生成随机密码
- DB_TYPE=mysql
- DB_HOST=mysql
- DB_TLS_MODE=auto # 自建/内网数据库自动降为 preferred
- MAX_FILE_SIZE=10485760
- TRUSTED_PROXIES=172.17.0.0/16
volumes:
- ./data:/app/data
- ./uploads:/app/uploads

优先级:编排注入的环境变量 > 容器内自动生成的 /app/.env。应用首次启动会生成 .env 模板,但加载时(godotenv)不覆盖已存在的环境变量,因此编排注入的值始终生效,容器内 .env 只补全未注入的默认项。密钥类自动生成值(data/.config_secret、data/.initial_admin_password)都落在 ./data 卷内,重建容器不会丢失。

完整变量清单见仓库 .env.example。

  • 部署提醒:APP_URL 必须设为实际访问地址(图片 URL 取自该值);显式配置的 CONFIG_SECRET 必须 ≥32 字符,且启用加密存储后不可更换。

项目地址#

项目地址:

onexru
/
oneimg
Waiting for api.github.com...
00K
0K
0K
Waiting...
[开源] 初春图床 v3.5.7 更新:修复 MySQL 无法启动、新增 DB_TLS_MODE 与 Windows arm64 原生构建~
https://www.tr0.cn/oneimg_v357/
作者
小森
发布于
2026-10-24
许可协议
CC BY-NC-SA 4.0