在 Debian 上部署 LibreSpeed 并用 Caddy 反向代理

LibreSpeed 的 Go 后端内置 Web 界面,提供测量下载、上传和延迟的 HTTP 接口。本文用 systemd 在 Debian 上以非 root 身份运行后端,由同一台主机上的 Caddy 提供公网 HTTPS 入口。 安装 Debian 预编译二进制 本文固定使用 LibreSpeed speedtest-go v1.1.6,命令适用于 Debian amd64 和 arm64。发布包中的 speedtest-backend 已内置默认前端资源。其他架构可查看官方发布页。 sudo apt update sudo apt install curl ca-certificates ( set -eu version=1.1.6 arch=$(dpkg --print-architecture) case "$arch" in amd64|arm64) ;; *) printf 'Select a release archive for %s\n' "$arch" >&2; exit 1 ;; esac archive="speedtest-go_${version}_linux_${arch}.tar.gz" release="https://github.com/librespeed/speedtest-go/releases/download/v${version}" workdir=$(mktemp -d) trap 'rm -rf -- "$workdir"' EXIT cd "$workdir" curl -fsSL -o "$archive" "$release/$archive" curl -fsSL -o checksums.txt "$release/checksums.txt" awk -v file="$archive" '$2 == file || $2 == "*" file' checksums.txt > archive.sha256 sha256sum -c archive.sha256 tar -xzf "$archive" sudo install -d -m 0755 /usr/local/bin sudo install -m 0755 speedtest-backend /usr/local/bin/speedtest-backend ) 配置 systemd 服务 后端监听本机回环地址,由 Caddy 终止 TLS。database_type = "none" 关闭测速结果和统计记录。参见上游的 TOML 示例和 systemd unit。 ...

November 13, 2026 · 3 min

小内存 Debian 服务器防护改造:从 CrowdSec 迁移到 Caddy GeoIP 与 Fail2ban

在一台内存较小的 Debian 服务器上,我原先使用 CrowdSec 分析 SSH 和 Web 日志,再通过 Firewall Bouncer 将封禁决策同步到 nftables。 这套方案能够根据攻击行为动态封禁 IP,但对于只有数百 MiB 内存、运行多个个人服务的服务器,资源开销需要重新权衡。最终我采用了以下组合: 网站:Caddy GeoIP 与手动 IP 白名单,按站点选择是否允许 CDN 回源豁免。 SSH:Fail2ban 读取 systemd journal,通过 nftables 封禁异常来源。 本文记录完整改造方法,以及部署过程中遇到的日志来源和启动时序问题。所有域名、地址和主机标识均已替换为示例。命令按 root 用户执行。 一、先明确防护能力的变化 项目 原方案 新方案 Web 访问控制 CrowdSec 分析日志并生成封禁决策 Caddy 按来源地区或 IP 放行 SSH 异常登录 CrowdSec SSH 场景 Fail2ban SSH jail Web 行为检测 取决于安装的 Collection 和 Scenario 本文没有保留 社区威胁情报 可使用 CrowdSec 社区名单 本文没有接入 Web 拒绝位置 Firewall Bouncer 的防火墙规则 Caddy HTTP 请求处理阶段 地区白名单不能等价替代行为检测。允许地区内的恶意请求仍可能到达应用,Caddy 的 GeoIP 规则也不会覆盖没有经过它的其他公网端口。 ...

November 10, 2026 · 7 min