# pion-turnserver **Repository Path**: mkwchecking/pion-turnserver ## Basic Information - **Project Name**: pion-turnserver - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-31 - **Last Updated**: 2025-12-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Pion SFU TURN Server 基于 Pion WebRTC 框架的 TURN 服务器实现,支持多种配置方式和灵活的认证机制。 ## 功能特性 - ✅ 支持 UDP 和 TCP 协议 - ✅ 灵活的认证机制(支持无认证模式) - ✅ 环境变量配置支持 - ✅ 命令行参数配置支持 - ✅ 流转发功能 - ✅ 多端口配置支持 - ✅ 基于 Pion/turn 实现 - ✅ 轻量级 Docker 镜像 ## 快速开始 ### 1. 通过源码编译运行 ```bash # 克隆项目 git clone cd pionsfu # 安装依赖 go mod download # 编译项目 go build -o pionsfu . # 运行 TURN 服务器 ./pionsfu ``` ### 2. 使用 Docker 运行 ```bash # 构建 Docker 镜像 docker build -t pionsfu . # 运行 Docker 容器 docker run -d -p 3478:3478/udp -p 3478:3478/tcp pionsfu ``` ## 配置选项 TURN 服务器支持通过环境变量或命令行参数进行配置,命令行参数优先级高于环境变量。 ### 环境变量配置 | 环境变量名 | 类型 | 默认值 | 描述 | |------------|------|--------|------| | TURN_LISTEN_IP | string | "127.0.0.1" | TURN 服务器的公网 IP 地址 | | TURN_RELAY_IP | string | "0.0.0.0" | TURN 服务器的中继 IP 地址 | | TURN_REALM | string | "pionsfu.example.com" | TURN 服务器的 Realm | | TURN_USERNAME | string | "" | 认证用户名(为空时启用无认证模式) | | TURN_CREDENTIAL | string | "" | 认证密码(为空时启用无认证模式) | | TURN_LISTEN_PORT | int | 3478 | TURN 服务器监听端口 | | TURN_STREAM_PORTS | string | "" | 流转发端口配置,格式如:"udp4/30000,udp4/30010-30012" | ### 命令行参数配置 ```bash ./pionsfu --public-ip 192.168.1.1 --relay-ip 10.0.0.1 --realm example.com --username user --credential pass --port 3478 ``` ## 认证机制 TURN 服务器支持两种认证模式: 1. **有认证模式**:当配置了用户名和密码时,只有提供正确凭据的客户端才能使用服务 2. **无认证模式**:当未配置用户名和密码时,所有客户端请求都会被接受 ## 流转发功能 服务器支持配置多个流转发端口,用于媒体流的中继转发。配置格式示例: ``` udp4/30000 # 单个 UDP4 端口 udp4/30010-30012 # UDP4 端口范围(3个端口) udp4/40000,40001,40002 # 多个 UDP4 端口 ``` ## 单元测试 项目包含完整的单元测试,覆盖了多种启动场景: ```bash # 运行所有测试 go test -v ./test/... ``` 测试用例包括: - 环境变量参数启动测试 - 命令行参数启动测试 - 混合参数启动测试 - 流转发功能测试 ## Docker 镜像构建 项目提供了优化的 Dockerfile,支持多阶段构建: ```bash docker build -t pionsfu . ``` 构建的镜像特点: - 基于 Alpine Linux,体积小巧 - 静态编译,无外部依赖 - 支持 UDP 和 TCP 端口映射 ## 架构设计 - **config 包**:负责加载和管理配置 - **turn 包**:实现 TURN 服务器核心逻辑 - **test 包**:包含单元测试用例 ## 技术栈 - Go 1.24.2 - Pion/turn v2.1.6 - Viper(配置管理) - Cobra(命令行工具) ## 许可证 MIT License