自己Mac上部署了一些服务,希望在家里或公网可以直接访问,使用frpc可以实现内网穿透。
本文主要介绍在Mac上如何像Linux一样实现 frpc 的自动启动。

下载并配置 frpc

这里将 frpc 程序及配置放在目录 /app/frpc/ 下,大家可以根据个人习惯放在其他目录,
修改 /app/frpc/frpc.ini ,具体参考官方文档。

创建 Plist

简单了解什么是Plist
https://discussions.apple.com/thread/1869002

https://wikipedia.xxlab.tech/viewer#wikipedia_zh_all_maxi_2023-02/A/属性列表

PLIST 文件是一个特殊的文本文件,其中包含属性列表格式的数据。macOS、iOS 和 iPadOS 应用程序使用该文件以具有XML结构的键值格式存储设置和其他数据。例如,每个 iPhone 应用程序都至少包含一个名为Info.plist的 PLIST 文件,其中包含应用程序的基本配置信息。

  • 如果需要 root,并且是需要用户登陆后才能运行,把 plist 放在 /Library/LaunchAgents/
  • 如果需要 root,并且不需要用户登陆后都能运行,把 plist 放在 /Library/LaunchDaemons/

因为我们需要开机启动,所以

sudo vim  /Library/LaunchDaemons/frpc.plist

内容如下,注意,这里需要改成你的 frpc 程序及配置所在目录

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>frpc</string>
    <key>ProgramArguments</key>
    <array>
         <string>/app/frpc/frpc</string>
         <string>-c</string>
         <string>/app/frpc/frpc.ini</string>
    </array>
    <key>KeepAlive</key>
    <true/>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

使用 launchd 将 frpc 设置为守护进程

什么是 launchd: https://support.apple.com/zh-cn/guide/terminal/apdc6c1077b-5d5d-4d35-9c19-60f2397b2369/mac

执行如下命令,将 frpc 设置为守护进程

sudo launchctl load -w /Library/LaunchDaemons/frpc.plist

这样,frpc 就成功设置开机启动了,可以重启电脑进行验证。

取消开机启动

执行下面命令

sudo launchctl unload -w /Library/LaunchDaemons/frpc.plist