Docker-compose搭建PairDrop——跨设备传输方案

0
55

 一、简单的跨设备传输方案PairDrop

PairDrop适用于所有平台的本地网络上的文件共享。

  • 一种可行的类似 AirDrop 的多平台解决方案。
    • 通过点对点连接将图像、文档或文本发送到同一本地网络上的设备。
  • 互联网传输
    • 加入临时公共房间,通过网络轻松传输文件。
  • Web 应用程序
    • 适用于所有配备现代网络浏览器的设备。

二、Docker部署

一起搭建 STUN/TURN 服务器

  1. 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"
  1. rtc_config.json配置文件
{
  "sdpSemantics": "unified-plan",
  "iceServers": [
    {
      "urls": "stun:公网ip:3478"
    },
    {
      "urls": "turns:公网ip:5349",
      "username": "pairdrop",
      "credential": "securepassword"
    }
  ]
}
  1. 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
    
  2. 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
    
  3. 其它
    1. 添加自定义TLS 证书
      1. openssl req -x509 -newkey rsa:4096 -keyout turn_server_pkey.pem -out turn_server_cert.pem -days 365 -nodes
      2. 挂载到 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
    2. 防火墙
      # 允许 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
    3. 可能有挂载文件权限问题
      chmod 644 ./rtc_config.json  # 让所有者可写,其他用户可读
      chown 1000:1000 ./rtc_config.json  # 让 PUID=1000 的用户拥有该文件
    4. 如果系统用apt install coturn -y安装过Coturn,检查 Coturn 是否被多个进程启动,彻底清理Coturn
      ps 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
      

发布回复

请输入评论!
请输入你的名字