623 lines
8.1 KiB
Markdown
623 lines
8.1 KiB
Markdown
---
|
||
title:
|
||
source:
|
||
author: shenwei
|
||
published:
|
||
created:
|
||
description:
|
||
tags: [frp, frpc, gatekeeper, mac-mini, macos]
|
||
---
|
||
|
||
#mac-mini #frp #frpc #macos #gatekeeper
|
||
|
||
```table-of-contents
|
||
```
|
||
|
||
- **FRP版本**:0.65.0
|
||
- **CPU架构**:Apple Silicon(arm64)
|
||
- **安装路径**:`/opt/frp/frp_0.65.0_darwin_arm64`
|
||
- **下载地址**:GitHub Release
|
||
- **配置文件**:`frpc.toml`
|
||
- **包含 macOS Gatekeeper 处理**
|
||
|
||
此文档可以直接保存为 **README.md 或运维手册**。
|
||
|
||
---
|
||
|
||
## 一、环境信息
|
||
|
||
| 项目 | 内容 |
|
||
| ----- | ---------------------------------- |
|
||
| 系统 | macOS(Mac Mini M4) |
|
||
| 架构 | Apple Silicon (ARM64) |
|
||
| 软件 | FRP 0.65.0 |
|
||
| 安装目录 | `/opt/frp/frp_0.65.0_darwin_arm64` |
|
||
| 客户端程序 | `frpc` |
|
||
| 配置文件 | `frpc.toml` |
|
||
|
||
---
|
||
|
||
## 二、创建安装目录
|
||
|
||
macOS 默认 `/opt` 需要手动创建。
|
||
|
||
```bash
|
||
sudo mkdir -p /opt/frp
|
||
sudo chown -R $(whoami) /opt/frp
|
||
```
|
||
|
||
进入目录:
|
||
|
||
```bash
|
||
cd /opt/frp
|
||
```
|
||
|
||
---
|
||
|
||
## 三、下载 FRP
|
||
|
||
下载 **ARM64 版本**:
|
||
|
||
```bash
|
||
wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_darwin_arm64.tar.gz
|
||
```
|
||
|
||
如果没有 wget:
|
||
|
||
```bash
|
||
brew install wget
|
||
```
|
||
|
||
---
|
||
|
||
## 四、解压 FRP
|
||
|
||
```bash
|
||
tar -xzf frp_0.65.0_darwin_arm64.tar.gz
|
||
```
|
||
|
||
解压后目录结构:
|
||
|
||
```
|
||
/opt/frp
|
||
└── frp_0.65.0_darwin_arm64
|
||
├── frpc
|
||
├── frps
|
||
├── frpc.toml
|
||
├── frps.toml
|
||
└── LICENSE
|
||
```
|
||
|
||
进入目录:
|
||
|
||
```bash
|
||
cd /opt/frp/frp_0.65.0_darwin_arm64
|
||
```
|
||
|
||
---
|
||
|
||
## 五、解除 macOS Gatekeeper 限制
|
||
|
||
macOS 会阻止未签名程序运行。
|
||
|
||
需要删除 quarantine 属性:
|
||
|
||
```bash
|
||
xattr -rd com.apple.quarantine .
|
||
```
|
||
|
||
验证:
|
||
|
||
```bash
|
||
xattr frpc
|
||
```
|
||
|
||
如果没有输出说明解除成功。
|
||
|
||
---
|
||
|
||
## 六、修改 frpc.toml 配置
|
||
|
||
编辑配置:
|
||
|
||
```bash
|
||
nano /opt/frp/frp_0.65.0_darwin_arm64/frpc.toml
|
||
```
|
||
|
||
示例配置:
|
||
|
||
```toml
|
||
serverAddr = "192.227.222.142"
|
||
serverPort = 7000
|
||
|
||
auth.method = "token"
|
||
auth.token = "your_token_here"
|
||
|
||
[[proxies]]
|
||
name = "ssh"
|
||
type = "tcp"
|
||
localIP = "127.0.0.1"
|
||
localPort = 22
|
||
remotePort = 6000
|
||
```
|
||
|
||
参数说明:
|
||
|
||
|参数|说明|
|
||
|---|---|
|
||
|serverAddr|frps服务器地址|
|
||
|serverPort|frps监听端口|
|
||
|auth.token|认证token|
|
||
|localIP|本地服务地址|
|
||
|localPort|本地端口|
|
||
|remotePort|frps映射端口|
|
||
|
||
---
|
||
|
||
## 七、测试运行
|
||
|
||
进入目录:
|
||
|
||
```bash
|
||
cd /opt/frp/frp_0.65.0_darwin_arm64
|
||
```
|
||
|
||
启动客户端:
|
||
|
||
```bash
|
||
./frpc -c frpc.toml
|
||
```
|
||
|
||
成功日志示例:
|
||
|
||
```
|
||
login to server success
|
||
proxy added: ssh
|
||
start proxy success
|
||
```
|
||
|
||
---
|
||
|
||
## 八、后台运行方式
|
||
|
||
推荐三种方式。
|
||
|
||
---
|
||
|
||
### 方式一:tmux(推荐)
|
||
|
||
安装 tmux:
|
||
|
||
```bash
|
||
brew install tmux
|
||
```
|
||
|
||
创建会话:
|
||
|
||
```bash
|
||
tmux new -s frpc
|
||
```
|
||
|
||
启动程序:
|
||
|
||
```bash
|
||
cd /opt/frp/frp_0.65.0_darwin_arm64
|
||
./frpc -c frpc.toml
|
||
```
|
||
|
||
后台运行:
|
||
|
||
```
|
||
Ctrl + B
|
||
D
|
||
```
|
||
|
||
重新进入:
|
||
|
||
```bash
|
||
tmux attach -t frpc
|
||
```
|
||
|
||
查看会话:
|
||
|
||
```bash
|
||
tmux ls
|
||
```
|
||
|
||
---
|
||
|
||
### 方式二:nohup
|
||
|
||
后台启动:
|
||
|
||
```bash
|
||
cd /opt/frp/frp_0.65.0_darwin_arm64
|
||
|
||
nohup ./frpc -c frpc.toml > frpc.log 2>&1 &
|
||
```
|
||
|
||
查看进程:
|
||
|
||
```bash
|
||
ps aux | grep frpc
|
||
```
|
||
|
||
查看日志:
|
||
|
||
```bash
|
||
tail -f frpc.log
|
||
```
|
||
|
||
停止:
|
||
|
||
```bash
|
||
pkill frpc
|
||
```
|
||
|
||
---
|
||
|
||
### 方式三:launchd(推荐开机自启)
|
||
|
||
创建配置文件:
|
||
|
||
```bash
|
||
nano ~/Library/LaunchAgents/com.frpc.client.plist
|
||
```
|
||
|
||
配置内容:
|
||
|
||
```xml
|
||
<?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.frpc.client</string>
|
||
|
||
<key>ProgramArguments</key>
|
||
<array>
|
||
<string>/opt/frp/frp_0.65.0_darwin_arm64/frpc</string>
|
||
<string>-c</string>
|
||
<string>/opt/frp/frp_0.65.0_darwin_arm64/frpc.toml</string>
|
||
</array>
|
||
|
||
<key>RunAtLoad</key>
|
||
<true/>
|
||
|
||
<key>KeepAlive</key>
|
||
<true/>
|
||
|
||
<key>StandardOutPath</key>
|
||
<string>/opt/frp/frp_0.65.0_darwin_arm64/frpc.log</string>
|
||
|
||
<key>StandardErrorPath</key>
|
||
<string>/opt/frp/frp_0.65.0_darwin_arm64/frpc.error.log</string>
|
||
|
||
</dict>
|
||
</plist>
|
||
```
|
||
|
||
加载服务:
|
||
|
||
```bash
|
||
launchctl load ~/Library/LaunchAgents/com.frpc.client.plist
|
||
```
|
||
|
||
启动:
|
||
|
||
```bash
|
||
launchctl start com.frpc.client
|
||
```
|
||
|
||
停止:
|
||
|
||
```bash
|
||
launchctl stop com.frpc.client
|
||
```
|
||
|
||
卸载:
|
||
|
||
```bash
|
||
launchctl unload ~/Library/LaunchAgents/com.frpc.client.plist
|
||
```
|
||
|
||
---
|
||
|
||
## 九、常用维护命令
|
||
|
||
### 查看 frpc 进程
|
||
|
||
```bash
|
||
ps aux | grep frpc
|
||
```
|
||
|
||
---
|
||
|
||
### 查看日志
|
||
|
||
```bash
|
||
tail -f /opt/frp/frp_0.65.0_darwin_arm64/frpc.log
|
||
```
|
||
|
||
---
|
||
|
||
### 重启 frpc
|
||
|
||
```bash
|
||
pkill frpc
|
||
cd /opt/frp/frp_0.65.0_darwin_arm64
|
||
./frpc -c frpc.toml
|
||
```
|
||
|
||
---
|
||
|
||
## 十、升级 FRP
|
||
|
||
升级步骤:
|
||
|
||
```
|
||
停止 frpc
|
||
↓
|
||
下载新版本
|
||
↓
|
||
解压
|
||
↓
|
||
替换目录
|
||
↓
|
||
重新运行
|
||
```
|
||
|
||
示例:
|
||
|
||
```bash
|
||
pkill frpc
|
||
cd /opt/frp
|
||
wget 新版本
|
||
tar -xzf
|
||
```
|
||
|
||
---
|
||
|
||
## 十一、最终目录结构
|
||
|
||
```
|
||
/opt/frp
|
||
└── frp_0.65.0_darwin_arm64
|
||
├── frpc
|
||
├── frps
|
||
├── frpc.toml
|
||
├── frpc.log
|
||
└── frpc.error.log
|
||
```
|
||
|
||
---
|
||
|
||
## 十二、快速启动命令
|
||
|
||
日常手动运行:
|
||
|
||
```bash
|
||
cd /opt/frp/frp_0.65.0_darwin_arm64
|
||
|
||
xattr -rd com.apple.quarantine .
|
||
|
||
./frpc -c frpc.toml
|
||
```
|
||
|
||
---
|
||
|
||
## 十三、生产环境最佳实践
|
||
|
||
建议:
|
||
|
||
### 1 统一路径
|
||
|
||
```
|
||
/opt/frp/<version>
|
||
```
|
||
|
||
方便版本切换。
|
||
|
||
例如:
|
||
|
||
```
|
||
/opt/frp/frp_0.65.0_darwin_arm64
|
||
/opt/frp/frp_0.66.0_darwin_arm64
|
||
```
|
||
|
||
---
|
||
|
||
### 2 创建软链接
|
||
|
||
```
|
||
/opt/frp/current
|
||
```
|
||
|
||
示例:
|
||
|
||
```bash
|
||
ln -sfn /opt/frp/frp_0.65.0_darwin_arm64 /opt/frp/current
|
||
```
|
||
|
||
启动时:
|
||
|
||
```
|
||
/opt/frp/current/frpc
|
||
```
|
||
|
||
升级时只需要切换 symlink。
|
||
|
||
---
|
||
|
||
### 3 日志独立
|
||
|
||
```
|
||
/opt/frp/logs
|
||
```
|
||
|
||
更利于监控。
|
||
|
||
---
|
||
|
||
如果你愿意,我可以再帮你整理一份 **Mac Mini 服务器化运维方案(FRP + OpenClaw + n8n + Clash)统一进程管理架构**,解决几个你现在已经遇到的问题:
|
||
|
||
- frp
|
||
|
||
- openclaw
|
||
|
||
- proxychains
|
||
|
||
- tmux
|
||
|
||
- telegram bot
|
||
|
||
- n8n
|
||
|
||
|
||
统一用 **macOS launchd + 进程依赖管理** 管理,这样你的 **Mac Mini 就可以像一台真正的 Linux server 一样稳定运行**。
|
||
|
||
|
||
---
|
||
## 十四、实际案例:通过 FRP 远程 SSH 登录 Mac Mini
|
||
|
||
本案例用于 **通过 VPS 作为中转服务器,从公网 SSH 访问 Mac Mini**。
|
||
|
||
架构如下:
|
||
|
||
本地 Mac Mini
|
||
│
|
||
│ SSH 22
|
||
│
|
||
frpc 客户端
|
||
│
|
||
│ FRP 隧道
|
||
│
|
||
远端 VPS (frps)
|
||
│
|
||
│ 60026
|
||
│
|
||
公网 SSH 访问
|
||
|
||
公网访问方式:
|
||
|
||
ssh 用户名@VPS_IP -p 60026
|
||
|
||
---
|
||
|
||
### 1 VPS 服务器开放防火墙端口
|
||
|
||
如果 VPS 使用 **UFW 防火墙**,需要允许 FRP 映射端口。
|
||
|
||
执行:
|
||
|
||
sudo ufw allow 60026
|
||
|
||
检查防火墙状态:
|
||
|
||
sudo ufw status
|
||
|
||
输出示例:
|
||
|
||
60026/tcp ALLOW Anywhere
|
||
|
||
说明端口已开放。
|
||
|
||
---
|
||
|
||
### 2 修改 frpc.toml 配置
|
||
|
||
编辑配置文件:
|
||
|
||
nano /opt/frp/frp_0.65.0_darwin_arm64/frpc.toml
|
||
|
||
增加如下代理配置:
|
||
|
||
[[proxies]]
|
||
name = "macmini-ssh"
|
||
type = "tcp"
|
||
localIP = "127.0.0.1"
|
||
localPort = 22
|
||
remotePort = 60026
|
||
|
||
配置说明:
|
||
|
||
|参数|说明|
|
||
|---|---|
|
||
|name|代理名称|
|
||
|type|TCP转发|
|
||
|localIP|本地 SSH 地址|
|
||
|localPort|本地 SSH 端口|
|
||
|remotePort|VPS 上映射端口|
|
||
|
||
---
|
||
|
||
### 3 完整 frpc.toml 示例
|
||
|
||
示例:
|
||
|
||
serverAddr = "VPS_IP"
|
||
serverPort = 7000
|
||
|
||
auth.method = "token"
|
||
auth.token = "your_token"
|
||
|
||
[[proxies]]
|
||
name = "macmini-ssh"
|
||
type = "tcp"
|
||
localIP = "127.0.0.1"
|
||
localPort = 22
|
||
remotePort = 60026
|
||
|
||
---
|
||
|
||
### 4 重启 frpc
|
||
|
||
重新启动客户端:
|
||
|
||
pkill frpc
|
||
|
||
cd /opt/frp/frp_0.65.0_darwin_arm64
|
||
|
||
./frpc -c frpc.toml
|
||
|
||
成功日志示例:
|
||
|
||
proxy added: macmini-ssh
|
||
start proxy success
|
||
|
||
---
|
||
|
||
### 5 测试远程 SSH
|
||
|
||
在任意公网机器执行:
|
||
|
||
ssh username@VPS_IP -p 60026
|
||
|
||
示例:
|
||
|
||
ssh billy@192.227.xxx.xxx -p 60026
|
||
|
||
成功后即可登录 Mac Mini。
|
||
|
||
---
|
||
|
||
### 6 推荐 SSH 使用方式
|
||
|
||
为了方便使用,可以在 **客户端 ~/.ssh/config** 添加配置:
|
||
|
||
nano ~/.ssh/config
|
||
|
||
增加:
|
||
|
||
Host macmini
|
||
HostName VPS_IP
|
||
Port 60026
|
||
User billy
|
||
|
||
之后直接:
|
||
|
||
ssh macmini
|
||
|
||
即可登录 Mac Mini。 |