一、简单的跨设备传输方案PairDrop
PairDrop适用于所有平台的本地网络上的文件共享。
- 一种可行的类似 AirDrop 的多平台解决方案。
- 通过点对点连接将图像、文档或文本发送到同一本地网络上的设备。
- 互联网传输
- 加入临时公共房间,通过网络轻松传输文件。
- Web 应用程序
- 适用于所有配备现代网络浏览器的设备。
二、Docker部署
一起搭建 STUN/TURN 服务器
- docker-compose.yml配置
services:
pairdrop:
image: "lscr.io/linuxserver/pairdrop:latest"
container_name: pairdrop
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- WS_FALLBACK=true
- RATE_LIMIT=true
- DEBUG_MODE=false
- TZ=Asia/Shanghai
- RTC_CONFIG_FILE=/config/rtc_config.json
depends_on:
- coturn
volumes:
- ./rtc_config.json:/config/rtc_config.json:ro
ports:
- "60000:3000"rtc_config.json配置文件
{
"sdpSemantics": "unified-plan",
"iceServers": [
{
"urls": "stun:公网ip:3478"
},
{
"urls": "turns:公网ip:5349",
"username": "pairdrop",
"credential": "securepassword"
}
]
}- coturn搭建,docker-compose.yml配置
coturn: image: instrumentisto/coturn container_name: coturn restart: unless-stopped network_mode: "host" environment: - REALM=pairdrop - USERNAME=pd用户名 - PASSWORD=password密码 volumes: - ./rtc_config.json:/config/rtc_config.json:ro - ./turnserver.conf:/etc/coturn/turnserver.conf - ./turn_server_cert.pem:/etc/coturn/turn_server_cert.pem - ./turn_server_pkey.pem:/etc/coturn/turn_server_pkey.pem - turnserver.conf配置
# 监听所有网卡 listening-ip=0.0.0.0 # 这里加上公网 IP external-ip=公网 IP # TURN 端口 listening-port=3478 tls-listening-port=5349 # 认证域 realm=pairdrop # 用户认证 user=pd:password 用户名密码 lt-cred-mech # 允许的 TURN 端口范围 min-port=49152 max-port=65535 # 证书 cert=/etc/coturn/turn_server_cert.pem pkey=/etc/coturn/turn_server_pkey.pem # 启用指纹,防止中间人攻击启用 fingerprint fingerprint # 允许长时间连接 stale-nonce # CLI 密码 cli-password=yourpassword - 其它
- 添加自定义TLS 证书
openssl req -x509 -newkey rsa:4096 -keyout turn_server_pkey.pem -out turn_server_cert.pem -days 365 -nodes- 挂载到 Coturn 容器
volumes: - ./turnserver.conf:/etc/coturn/turnserver.conf - ./turn_server_cert.pem:/etc/coturn/turn_server_cert.pem - ./turn_server_pkey.pem:/etc/coturn/turn_server_pkey.pem
- 防火墙
# 允许 STUN/TURN 端口 sudo iptables -A INPUT -p udp --dport 3478 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 3478 -j ACCEPT # 允许 TURN 分配 UDP 端口 sudo iptables -A INPUT -p udp --dport 49152:65535 -j ACCEPT # 如果使用 ufw 防火墙: sudo ufw allow 3478/udp sudo ufw allow 49152:65535/udp - 可能有挂载文件权限问题
chmod 644 ./rtc_config.json # 让所有者可写,其他用户可读 chown 1000:1000 ./rtc_config.json # 让 PUID=1000 的用户拥有该文件 - 如果系统用
apt install coturn -y安装过Coturn,检查 Coturn 是否被多个进程启动,彻底清理Coturnps aux | grep turnserver killall turnserver systemctl restart coturn rm -f /var/run/turnserver.pid 禁用 Coturn 开机启动 systemctl disable coturn 卸载 Coturn systemctl stop coturn apt remove --purge coturn -y 清理残留数据 rm -rf /var/lib/turn rm -rf /var/log/turnserver.log rm -rf /etc/coturn 确认 Coturn 已完全删除 which turnserver
- 添加自定义TLS 证书








