使用 Sakura FRP 暴露服务
Sakura FRP 是一个专业的内网穿透服务商,可以帮您将内网服务暴露到公网。
为什么选择 Sakura FRP?
- ✅ 配置简单:Docker 部署,使用方便
- ✅ 稳定可靠:专业服务商,多节点可选
- ✅ 支持自定义域名:可绑定自己的域名
- ✅ 有免费额度:基本使用免费
- ✅ HTTP/HTTPS 支持:完美支持 Web 服务
- ✅ 国内访问优秀:多个国内节点,访问速度快
快速开始
步骤 1:注册 Sakura FRP 账号
- 访问 Sakura FRP 官网
- 点击"注册"创建账号
- 完成实名认证(必需)
步骤 2:获取访问密钥
- 访问 https://www.natfrp.com/ 并注册一个账户
- 登录后,在左侧菜单进入 用户中心 -> API 信息 页面
- 找到您的 访问密钥,点击"复制"按钮。这个密钥就是我们需要的
NATFRP_TOKEN
安全提醒
请妥善保管您的访问密钥,不要公开分享!
步骤 3:配置 Docker Compose
在您的 docker-compose.yml
中添加 Sakura FRP 服务:
services:
sakurafrp:
image: natfrp.com/launcher:latest
restart: always
ports:
- "7102:7102"
environment:
LANG: zh_CN.UTF-8
TZ: Asia/Shanghai
NATFRP_TOKEN: ${NATFRP_TOKEN}
NATFRP_REMOTE: qYMeu4yq1deFoGlutd4
volumes:
- sakurafrp-data:/run
teslamateapi:
image: mytesla/teslamateapi:latest
container_name: teslamateapi
restart: unless-stopped
environment:
- DATABASE_USER=teslamate
- DATABASE_PASS=44TqZYlH8odDc2hqPYE
- DATABASE_NAME=teslamate
- DATABASE_HOST=database
- ENCRYPTION_KEY=wJrM9nILN5wM5Zm4Z
- MQTT_HOST=mosquitto
- TZ=Asia/Shanghai
- API_TOKEN=LEM3nUfT5xFJGR9PhzLu
ports:
- "8080:8080"
volumes:
- teslamateapi-data:/opt/app/data
depends_on:
- database
- teslamate
- mosquitto
volumes:
sakurafrp-data:
teslamateapi-data:
步骤 4:配置环境变量
在 .env
文件中添加以下内容:
# Sakura FRP 配置
NATFRP_TOKEN=你的访问密钥
创建隧道配置
方法 1:通过管理面板(推荐)
- 创建隧道
- 在左侧菜单进入 服务 -> 隧道列表 页面
- 点击"创建隧道",配置如下图:
- 绑定子域名
- 在左侧菜单进入 服务 -> 子域绑定 页面
- 点击"绑定子域名",配置如下图:
至此,您应该拥有了两个关键信息:
- 公网地址:
mycar.xxx.com:远程端口号
(请替换为您自己的子域名和端口号) - 访问密钥 (Token): 从第一步获取的一长串字符
方法 2:通过配置文件
创建 sakurafrp_data/config.ini
:
[common]
server_addr = auto
tcp_mux = true
protocol = tcp
user = ${NATFRP_TOKEN}
[teslamateapi]
type = http
local_ip = 127.0.0.1
local_port = 8080
subdomain = teslamateapi # 将生成类似 teslamateapi.xxx.natfrp.cloud 的子域名
域名配置
使用自定义域名
-
域名要求:
- 内地节点:域名必须有 ICP 备案
- 海外节点:无需备案
-
DNS 配置:
- 添加 CNAME 记录指向节点域名
- 例如:
api.yourdomain.com
→cn-hk-nf-1.natfrp.cloud
使用 Sakura FRP 子域名
- 在控制台申请免费子域名
- 将子域名绑定到您的隧道
- 通过
https://your-subdomain.nyat.app
访问
完整配置示例
已有 TeslaMate 的配置
如果您已经有运行的 TeslaMate,请参考 已有 TeslaMate 集成 指南。
在您现有的 docker-compose.yml
中添加以下服务:
# 添加 TeslaMateAPI 服务
teslamateapi:
image: mytesla/teslamateapi:latest
container_name: teslamateapi
restart: unless-stopped
environment:
- DATABASE_USER=${TM_DB_USER}
- DATABASE_PASS=${TM_DB_PASS}
- DATABASE_NAME=${TM_DB_NAME}
- DATABASE_HOST=database
- ENCRYPTION_KEY=${TM_ENCRYPTION_KEY} # ⚠️ 必须与 TeslaMate 完全相同!
- MQTT_HOST=mosquitto
- TZ=Asia/Shanghai
- API_TOKEN=LEM3nUfT5xFJGR9PhzLu
ports:
- "8080:8080"
volumes:
- teslamateapi-data:/opt/app/data
depends_on:
- database
- teslamate
- mosquitto
# 添加 Sakura FRP 服务
sakurafrp:
image: natfrp.com/launcher:latest
restart: always
ports:
- "7102:7102"
environment:
LANG: zh_CN.UTF-8
TZ: Asia/Shanghai
NATFRP_TOKEN: ${NATFRP_TOKEN}
NATFRP_REMOTE: qYMeu4yq1deFoGlutd4
volumes:
- sakurafrp-data:/run
volumes:
teslamateapi-data:
sakurafrp-data:
全新安装的配置
参考全新安装指南进行完整配置。
启动服务
# 启动所有服务
docker-compose up -d
# 查看 Sakura FRP 日志
docker logs -f sakurafrp
# 检查服务状态
docker-compose ps
远程管理配置
- 启动服务后,
sakurafrp
容器应该已经成功连接到了服务器 - 回到 Sakura FRP 网站,在左侧菜单进入 服务 -> 远程管理
- 您应该能看到一个在线的设备,选择它
- 在 启动密码 处,填入
qYMeu4yq1deFoGlutd4
- 点击"连接",即可远程管理您的 FRP 客户端(例如查看日志、重载配置等)
验证连接
隧道建立成功后,您应该看到类似的日志:
隧道启动成功
使用 >>your-domain.com<< 连接你的隧道
或使用 IP 地址连接: >>x.x.x.x:xxxxx<<
访问您的 TeslaMateAPI:
- 自定义域名:
https://api.yourdomain.com
- Sakura 子域名:
https://your-subdomain.nyat.app
- 直接 IP:
http://x.x.x.x:xxxxx
安全建议
-
使用 HTTPS:
- 在隧道设置中启用自动 HTTPS
- 为自定义域名使用 SSL 证书
-
访问控制:
- 设置强密码的 API Token
- 考虑添加认证层
-
网络隔离:
- 保持服务在 Docker 网络中
- 只暴露必要的端口
故障排除
常见问题
-
503 Service Unavailable
- 检查本地服务是否运行
- 验证端口配置
- 确保协议正确(HTTP/HTTPS)
-
证书错误
- 等待几分钟让 SSL 证书生成
- 验证域名配置
-
连接超时
- 检查防火墙设置
- 验证节点选择
- 确保服务绑定到正确的接口
调试命令
# 检查服务状态
docker ps
# 查看 Sakura FRP 日志
docker logs sakurafrp
# 测试本地连接
curl http://localhost:8080/api/ping
# 检查隧道配置
docker exec sakurafrp natfrpc list
配置 Mytesla
获取 API 访问地址
根据您的配置方式,API 地址为:
- 自定义域名:
https://api.yourdomain.com
- Sakura 子域名:
https://your-subdomain.nyat.app
- 节点直连:
http://节点IP:端口
在 portal.mytesla.cc 中配置 API
- 登录您的 mytesla.cc 账户
- 进入 设置 页面,并切换到 Teslamate 选项卡
- TeslamateAPI 地址: 填写您获取的 完整公网地址,格式为
https://mycar.xxx.com:远程端口号
。注意,协议是https
,并且必须包含端口号 - TeslamateAPI 令牌: 填写
LEM3nUfT5xFJGR9PhzLu
- 点击"保存"
如果配置正确,mytesla.cc
将会显示"连接成功"的提示。稍等片刻,您就可以在 mytesla.cc
的仪表盘、行程、充电等页面看到由您自己部署的 Teslamate 所提供的精准数据了!
进阶配置
配置多个隧道
如果需要同时暴露 TeslaMate 和 Grafana:
# 在 Sakura FRP 控制台创建多个隧道
# 隧道1: teslamate (端口 4000)
# 隧道2: grafana (端口 3000)
# 隧道3: teslamateapi (端口 8080)
性能优化
-
选择合适的节点:
- 选择距离您最近的节点
- 查看节点负载情况
- 考虑付费节点以获得更好性能
-
带宽管理:
- 在控制台监控带宽使用
- 根据需要升级套餐
节点选择提示
- 选择距离近的节点可以降低延迟
- 海外节点限制较少
- 建站节点有绿色"建站"标识
- 注意节点的带宽限制