跳到主要内容

使用 Sakura FRP 暴露服务

Sakura FRP 是一个专业的内网穿透服务商,可以帮您将内网服务暴露到公网。

为什么选择 Sakura FRP?
  • 配置简单:Docker 部署,使用方便
  • 稳定可靠:专业服务商,多节点可选
  • 支持自定义域名:可绑定自己的域名
  • 有免费额度:基本使用免费
  • HTTP/HTTPS 支持:完美支持 Web 服务
  • 国内访问优秀:多个国内节点,访问速度快

快速开始

步骤 1:注册 Sakura FRP 账号

  1. 访问 Sakura FRP 官网
  2. 点击"注册"创建账号
  3. 完成实名认证(必需)

步骤 2:获取访问密钥

  1. 访问 https://www.natfrp.com/ 并注册一个账户
  2. 登录后,在左侧菜单进入 用户中心 -> API 信息 页面
  3. 找到您的 访问密钥,点击"复制"按钮。这个密钥就是我们需要的 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:通过管理面板(推荐)

  1. 创建隧道
    • 在左侧菜单进入 服务 -> 隧道列表 页面
    • 点击"创建隧道",配置如下图:

  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 的子域名

域名配置

使用自定义域名

  1. 域名要求

    • 内地节点:域名必须有 ICP 备案
    • 海外节点:无需备案
  2. DNS 配置

    • 添加 CNAME 记录指向节点域名
    • 例如:api.yourdomain.comcn-hk-nf-1.natfrp.cloud

使用 Sakura FRP 子域名

  1. 在控制台申请免费子域名
  2. 将子域名绑定到您的隧道
  3. 通过 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

远程管理配置

  1. 启动服务后,sakurafrp 容器应该已经成功连接到了服务器
  2. 回到 Sakura FRP 网站,在左侧菜单进入 服务 -> 远程管理
  3. 您应该能看到一个在线的设备,选择它
  4. 启动密码 处,填入 qYMeu4yq1deFoGlutd4
  5. 点击"连接",即可远程管理您的 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

安全建议

  1. 使用 HTTPS

    • 在隧道设置中启用自动 HTTPS
    • 为自定义域名使用 SSL 证书
  2. 访问控制

    • 设置强密码的 API Token
    • 考虑添加认证层
  3. 网络隔离

    • 保持服务在 Docker 网络中
    • 只暴露必要的端口

故障排除

常见问题

  1. 503 Service Unavailable

    • 检查本地服务是否运行
    • 验证端口配置
    • 确保协议正确(HTTP/HTTPS)
  2. 证书错误

    • 等待几分钟让 SSL 证书生成
    • 验证域名配置
  3. 连接超时

    • 检查防火墙设置
    • 验证节点选择
    • 确保服务绑定到正确的接口

调试命令

# 检查服务状态
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

  1. 登录您的 mytesla.cc 账户
  2. 进入 设置 页面,并切换到 Teslamate 选项卡
  3. TeslamateAPI 地址: 填写您获取的 完整公网地址,格式为 https://mycar.xxx.com:远程端口号。注意,协议是 https,并且必须包含端口号
  4. TeslamateAPI 令牌: 填写 LEM3nUfT5xFJGR9PhzLu
  5. 点击"保存"

如果配置正确,mytesla.cc 将会显示"连接成功"的提示。稍等片刻,您就可以在 mytesla.cc 的仪表盘、行程、充电等页面看到由您自己部署的 Teslamate 所提供的精准数据了!

进阶配置

配置多个隧道

如果需要同时暴露 TeslaMate 和 Grafana:

# 在 Sakura FRP 控制台创建多个隧道
# 隧道1: teslamate (端口 4000)
# 隧道2: grafana (端口 3000)
# 隧道3: teslamateapi (端口 8080)

性能优化

  1. 选择合适的节点

    • 选择距离您最近的节点
    • 查看节点负载情况
    • 考虑付费节点以获得更好性能
  2. 带宽管理

    • 在控制台监控带宽使用
    • 根据需要升级套餐
节点选择提示
  • 选择距离近的节点可以降低延迟
  • 海外节点限制较少
  • 建站节点有绿色"建站"标识
  • 注意节点的带宽限制