解决 Cloudreve 无法通过 HTTPS 连接自签名证书 MinIO

背景与问题描述 Cloudreve是一个自托管文件管理与共享系统,支持多存储提供商。 在部署 Cloudreve 存储策略时,我们需要集成内网环境下的 MinIO S3 服务。由于 MinIO 部署在内网并配合内网穿透暴露至公网,且使用了自签名证书,我们在配置完成后发现客户端无法正常上传文件。 初步排查: 确认内网穿透链路正常。 使用 MinIO 客户端工具 mc 测试,发现必须带上 –insecure 参数才能正常访问,明确了核心矛盾在于 SSL 证书验证失败。 尝试将证书放置在自定义目录并使用 mc –config-dir 指定,虽能连接成功,但 Cloudreve 无法直接复用该配置,且即便在同目录下放置证书也未能生效。 最终方案: 将自定义 CA 证书导入系统信任库,使 Cloudreve(Go 环境)能够原生识别。 解决方案:在 CentOS 系统中安装并激活自定义证书 1,检查证书是否PEM格式? Go 程序通常识别PEM格式的证书。 使用以下命令检查证书文件(如public.crt): cat public.crt 如果开头是 —–BEGIN CERTIFICATE—–,则是 PEM 格式。 如果是一堆乱码,则是 DER 格式。 需要转换为PEM格式: openssl x509 -inform der -in public.crt -out public.pem 2,放置证书 在CentOS Linux中,需要将证书文件放在/etc/pki/ca-trust/source/anchors/目录下,并且后缀必须为.crt。如果文件名为public.pem,需要改为public.crt。 确认文件是否放置正确? ls /etc/pki/ca-trust/source/anchors/ 输出中应包含我们的证书。 3,激活证书 执行以下命令激活,让系统重新扫描目录并生成全局信任束,依次执行: update-ca-trust extract update-ca-trust 4,验证证书是否激活成功 检查系统全局证书合集ca-bundle.crt是否已包含你的证书信息: ...

2026-03-11 · 1 min · Eagle

拒绝频繁上传:基于 Dufs + Mole-go (FRP) 快速搭建高效的内网穿透演示环境

最近开发完 Mole-go,想给它做个网站用来展示和下载。但我这个后端糙汉子,样式真搞不定,求助 AI 调了半天还是差点意思。最头疼的是,手机端调试得一遍遍输 IP,给朋友演示也得发一串 IP 端口,太不专业了!于是我一顿折腾,搞出了这套方案…… 为了解决这些痛点,我摸索出了一套“黄金组合”:Dufs + Mole-go + FRP + Caddy。这套方案打通了从本地到公网域名的全链路,实现了自动 HTTPS、域名访问以及极致的访问体验。 第一步:构建本地内容基石(Dufs) 一切的起点是本地文件服务。我选择使用 Dufs 作为静态服务器。它极其轻量,支持上传、搜索、打包下载甚至 WebDAV,是我演示 Web 应用或分发安装包的首选。 通过简单的命令,我在本地 5000 端口启动了服务。虽然此时它还被“困”在局域网内,但它为后续的展示提供了稳固的基础。 第二步:突破局域网束缚(FRP 与 Mole-go) 为了让公网流量能精准触达内网,我采用了经典的 FRP 方案,但在客户端层面,我使用了自己开发的 Mole-go。 服务端 (FRP Server):部署在具备公网 IP 的云服务器上,充当流量中转站。这个服务器配置可以很低,网站服务都在本地电脑,如果本地有数据库,也非常方便调试。 客户端 (Mole-go):这是我为 FRP 打造的桌面管理客户端。它封装了 frpc 核心,不仅提供了直观的 UI,还通过系统托盘设计彻底解决了“关闭窗口即断连”的痛点。 使用 Mole-go,我可以将本地 5000 端口通过加密隧道安全地映射到云端。它出色的资源管理和连接稳定性,确保了演示过程中即便网络波动,链接依然稳固如初。 第三步:优雅的网关入口(Caddy) 即便流量已到达公网,我也不希望朋友们通过 http://IP:端口 这种生硬的方式访问。我追求的是“域名+HTTPS”的专业感,这不仅是为了美观,更是为了开发环境需求,下次开发公众号等必须 HTTPS 环境时可以拿来就直接使用。 我选择了 Caddy 担任“守门人”。Caddy 的魅力在于其近乎零配置的 自动 HTTPS 功能。看中了它的简单方便,非常符合我的场景。在 Caddyfile 中,我只需写下: example.com { reverse_proxy localhost:7000 # 指向 FRP 映射出的本地端口 } 仅需这一行配置,Caddy 就会自动搞定 SSL 证书的申请与续签。当访问者输入域名时,映入眼帘的是受信任的绿色小锁头,所有的复杂端口逻辑都被完美隐藏。 ...

2026-01-15 · 1 min · Eagle

FRP 图形化管理新方案:基于 Wails 3 的 Mole-go 桌面客户端部署指南

本文将带你从零开始,快速完成基于 Mole 的内网穿透服务部署,包含服务端 (frps) 与桌面客户端 (Mole/frpc) 的配置与排查要点。 📖 核心概念 什么是 FRP? FRP (Fast Reverse Proxy) 是一款高性能的反向代理/内网穿透工具,它通过在公网服务器和内网客户端之间建立隧道,使外网可以访问内网服务(如 NAS、树莓派、开发环境等)。 什么是 Mole? Mole 是一款基于 wails3 开发的 FRP 桌面客户端,提供图形化管理界面,简化 frpc 的配置与使用: 告别繁琐命令行 支持系统托盘常驻,防止误关窗口导致中断 支持 HTTP/HTTPS、TCP、UDP 等多种协议 🛠️ 部署前准备 一台拥有公网 IP 的低配云服务器(例如1核1G内存的阿里云、腾讯云等) FRP 服务端(frps)与客户端(frpc)二进制文件,建议使用 FRP Releases 的 v0.65.0 或更高版本 Mole 桌面客户端安装包(对应你操作系统的版本) 基本网络与防火墙管理权限 1. 服务端配置(frps) 在拥有公网IP的云服务器上部署frps服务端: 下载并解压 FRP 服务端(以 Linux 为例) 访问 FRP 的 Releases 页面下载对应版本并解压(示例为 v0.65.0 或更高)。 编写 frps.toml 配置文件(示例) 将以下内容写入 frps.toml,并根据实际需求调整端口与 token: bindPort = 7000 # 客户端连接端口(frpc 连接到此端口) vhostHTTPPort = 8080 # HTTP 映射的公网访问端口(可选) # 建议设置 auth.token 为复杂字符串,防止未授权连接 auth.token = "你的复杂密匙" 启动 frps(示例) 在服务端目录运行: ...

2026-01-07 · 2 min · Eagle

Mosquitto 安全加固指南:从匿名访问到多用户 ACL 细粒度权限控制

在 Mosquitto 实例上配置身份验证非常重要,这样未经授权的客户端就无法连接。 在 Mosquitto 2.0 及更高版本中,你必须明确选择身份验证选项,然后客户端才能连接。早期版本中,默认设置是允许客户端无需身份验证即可连接。 身份验证有三种选择:密码文件、身份验证插件和匿名访问。可以使用三个选项的组合。 在 Mosquitto2.0 及更高版本中,可以通过配置文件中将 per_listener_settings 设置为 true,让不同的侦听器使用不同的身份验证方法。 除了身份验证,您还应该考虑访问权限控制,以确定哪些客户端可以访问哪些主题。 密码文件设置 密码文件是一种将用户名和密码存储在单个文件中的简单机制。适合于有相对较少的静态用户。请注意,修改了密码文件后,需要重新加载 mosquitto。 创建密码文件,可以使用mosquitto_passwd工具,命令如下: mosquitto_passwd -c <password file> <username> 请注意,使用-c 标志将覆盖已存在的文件,如果向已存在文件添加,请去掉-c 标志。 要开始使用密码文件,需要配置 broker,在配置文件中,添加如下项: password_file <path to the configuration file> 密码文件必须能够被运行 mosquitto 的用户读取。 身份验证插件设置 如果你需要更多的控制来认证用户,你需要使用认证插件。具体的特性依赖于你使用的认证插件。 可使用的插件: mosquitto-go-auth ,它提供了各种后端来存储用户数据,例如 mysql,postgresql,jwt 或 redis 等。 Dynamic security,动态安全插件,仅适用于 2.0 及更高版本,可提供原创管理的灵活的代理客户端、组和角色。 配置身份验证插件依赖你的 Mosquitto 的版本。 版本 1.6.x 和以前的版本,使用auth_plugin选项。这个选项在版本 2.0 也被支持。 listener 1883 auth_plugin <path to plugin> 版本 2.0 及更高,使用plugin选项。 listener 1883 plugin <path to plugin> 匿名访问设置 配置匿名访问,请使用allow_anonymous选项。 ...

2025-11-01 · 1 min · Eagle

在 mdbook 中集成 Mermaid 实现自动化流程图渲染

mermaid 是很强大的一个库,可以使用文本展示图表。mdbook 是一个可以通过 Markdown 格式的文章内容生成在线书籍网站。mdbook-mermaid 这个库将 mermaid 和 mdbook 粘合在了一起。 下面是 mdbook-mermaid 的一个示例, graph TD; A-->B; A-->C; B-->D; C-->D; 该插件使用 Rust 开发,可以通过 Cargo 安装, cargo install mdbook-mermaid 在首次使用 mdbook-mermaid 时,需要下载一些依赖文件和配置,使用命令: mdbook-mermaid install path/to/your/book 上面的/path/to/your/book 是你的数据路径,运行之后,将会在你的书籍 book.toml 配置文件中添加如下内容: [preprocessor.mermaid] command = "mdbook-mermaid" [output.html] additional-js = ["mermaid.min.js", "mermaid-init.js"] 插件将检测是否已配置 mdbbok-mermaid,如果已配置将跳过。否则,将添加上面的内容到 book.toml 配置文件中,并将文件 mermaid.min.js,mermaid-init.js 复制到你书籍的目录中。你可以在 src/bin/assets 目录中找到这些文件。你还可以修改 mermaid-init.js 来配置 mermaid。 最后,重新编译书籍上传即可。

2025-01-01 · 1 min · Eagle