macOS 本地反向代理持久化教程
引言
如果你希望跳过繁琐的手动配置,可以先下载一键配置工具直接完成部署。下文仍会介绍其背后的实现原理和手动配置方法。
Steamcommunity302 是一款非常优秀的本地反代工具,其核心反向代理能力正是基于 Caddy 实现的。不过这款工具基于 AvaloniaUI 开发,本身会产生一定的内存开销;在 macOS 平台上使用时,不仅每次都需要通过 run.command 脚本手动启动,所有核心配置也必须打开 GUI 界面才能操作。对于仅需稳定运行反代服务的场景来说,整套流程显得冗余笨重。此外它无法正常配置开机自启,每次启动还需要输入密码,日常使用颇为不便。既然工具的反代核心就是 Caddy,我们完全可以绕开图形界面,直接将 Caddy 配置为系统服务实现开机自启。基于这个思路,便诞生了这篇教程。
准备工具
- Steamcommunity302 (提供代理服务器)
- Caddy (实现本地反代)
操作步骤
提示:本教程中测试用户名为
sylker,实际操作时请根据具体情况修改。
在羽翼城大佬的个人博客下载 Steamcommunity302 Mac – Apple Silicon (详见准备工具),下载后执行 ./run.command 启动程序

根据终端的提示进行简单操作后便可看到弹出的 GUI 界面,在该界面中勾选自己需要的代理服务并点击启动服务按钮

需要注意的是,在默认配置下,关闭 Steamcommunity302 后 hosts 文件会被它自动还原,因此需要在运行时手动备份一份,待关闭后再将备份文件复制回去。参考命令如下(路径可根据实际情况调整):
运行 Steamcommunity302 时,本地备份 hosts 文件
sudo cp /etc/hosts /Applications/Caddy/hosts
关闭 Steamcommunity302 后,永久保存 hosts 文件
sudo cp /Applications/Caddy/hosts /etc/hosts
在终端执行 cat /etc/hosts 以确认是否成功获取最新 hosts 信息。
接下来复制 Steamcommunity302 的核心文件,执行以下命令:sudo cp -r '/var/root/Library/Application Support/com.Dogfight360.SteamCommunity302/' '/Applications/Caddy/'
复制完成后可以看到核心文件已就位

批量修正所复制文件的权限(当前系统用户名)
sudo chown -R sylker:staff /Applications/Caddy
打开复制的 steamcommunity_302.caddy.json,将其中的端口号(随机端口,需具体修改)修改为 443,例如将 :11170 替换为 :443,批量替换即可。
将下载好的 Caddy 二进制文件放到复制目标路径的同级目录下
为了让 Caddy 作为系统服务开机自启,有以下两种方式:
方式一:用户级 LaunchAgents
在 ~/Library/LaunchAgents 目录下新建一个 plist 文件(例如 com.sylker.caddy.plist),无需额外权限设置,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.sylker.caddy</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/Caddy/caddy</string>
<string>run</string>
<string>--config</string>
<string>/Applications/Caddy/steamcommunity_302.caddy.json</string>
<string>--adapter</string>
<string>caddyfile</string>
</array>
<key>WorkingDirectory</key>
<string>/Applications/Caddy</string>
<key>StandardOutPath</key>
<string>/Applications/Caddy/caddy.log</string>
<key>StandardErrorPath</key>
<string>/Applications/Caddy/caddy.error.log</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
最后执行以下命令立即加载 plist,以后 Caddy 就会随用户登录而自启了:
launchctl load ~/Library/LaunchAgents/com.sylker.caddy.plist
launchctl list | grep caddy
卸载使用:launchctl unload ~/Library/LaunchAgents/com.sylker.caddy.plist
方式二:系统级 LaunchDaemons(推荐)
如果需要将 plist 存放到 /Library/LaunchDaemons,则必须执行以下命令修正文件权限与属主:
sudo chown root:wheel /Library/LaunchDaemons/com.sylker.caddy.plist
sudo chmod 644 /Library/LaunchDaemons/com.sylker.caddy.plist
立即加载则推荐使用 bootstrap 指令:
sudo launchctl bootstrap system /Library/LaunchDaemons/com.sylker.caddy.plist
sudo launchctl list | grep caddy
卸载使用:sudo launchctl bootout system /Library/LaunchDaemons/com.sylker.caddy.plist
效果展示
Caddy 作为轻量级反向代理服务器,以系统服务方式运行时所占用内存非常小,不会对系统造成额外负担!
