首页
/ PairDrop项目自托管部署完全指南

PairDrop项目自托管部署完全指南

2025-07-07 02:47:09作者:温玫谨Lighthearted

前言

PairDrop是一款基于WebRTC技术的点对点文件传输工具,允许用户在局域网或互联网环境下快速分享文件和文本内容。本文将详细介绍如何自托管部署PairDrop项目,包括Docker部署、Node.js原生部署、环境变量配置以及相关服务器设置等内容。

核心组件要求

TURN服务器配置

要实现跨网络传输,必须部署自己的TURN服务器。TURN服务器在NAT穿透失败时充当数据中继,是WebRTC通信的关键组件。

推荐两种部署方式:

  1. 直接在系统上安装coturn
  2. 通过Docker容器部署coturn

安全部署建议

HTTPS强制要求

某些浏览器功能必须通过TLS安全连接才能正常工作,包括:

  • 通过"复制"按钮复制传入消息
  • 安装为PWA应用
  • 设备持久配对
  • 显示名称修改
  • 通知功能

Docker部署方案

官方镜像部署

docker run -d --restart=unless-stopped --name=pairdrop -p 127.0.0.1:3000:3000 linuxserver/pairdrop

自定义构建镜像

  1. 构建镜像:
docker build --pull . -f Dockerfile -t pairdrop
  1. 运行容器:
docker run -d --restart=unless-stopped --name=pairdrop -p 127.0.0.1:3000:3000 -it pairdrop

Docker Compose部署示例

version: "3"
services:
    pairdrop:
        image: "linuxserver/pairdrop:latest"
        container_name: pairdrop
        restart: unless-stopped
        environment:
            - PUID=1000
            - PGID=1000
            - WS_FALLBACK=false
            - RATE_LIMIT=false
            - RTC_CONFIG=false
            - DEBUG_MODE=false
            - TZ=Etc/UTC
        ports:
            - "127.0.0.1:3000:3000"

Node.js原生部署

  1. 克隆项目并安装依赖:
npm install
  1. 启动服务:
npm start

生产环境启动命令

npm run start:prod -- --localhost-only

此命令会:

  • 启用自动重启
  • 启用请求速率限制
  • 仅允许本地连接

关键环境变量配置

调试模式

DEBUG_MODE="true"

启用后会输出客户端IP调试信息,用于验证代理配置是否正确。

请求速率限制

RATE_LIMIT=1

限制客户端5分钟内最多1000次请求。需要根据实际代理层级调整数值。

WebSocket回退

WS_FALLBACK=true

当WebRTC连接不可用时启用WebSocket回退,但会牺牲端到端加密特性。

STUN/TURN服务器配置

RTC_CONFIG="rtc_config.json"

示例配置文件:

{
  "sdpSemantics": "unified-plan",
  "iceServers": [
    {
      "urls": "stun:stun.l.google.com:19302"
    }
  ]
}

反向代理配置

必须配置反向代理设置X-Forwarded-For头部,否则所有客户端将相互可见。

Nginx配置示例

server {
    listen 443 ssl http2;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Connection "upgrade";
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header X-Forwarded-for $remote_addr;
    }
}

Apache配置示例

<VirtualHost *:443>
    ProxyPass / http://127.0.0.1:3000/ upgrade=websocket
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>

Coturn与PairDrop集成部署

  1. 准备SSL证书并创建ssl目录
  2. 生成DH参数文件:
openssl dhparam -out ./ssl/dhparams.pem 4096
  1. 配置turnserver.conf和rtc_config.json文件
  2. 启动服务:
docker compose -f docker-compose-coturn.yml up -d

防火墙配置

需开放以下端口:

  • 3478 TCP/UDP
  • 5349 TCP/UDP
  • 10000-20000 TCP/UDP

开发环境搭建

开发相关文件位于./dev目录,可使用docker-compose快速搭建开发环境。

最佳实践建议

  1. 生产环境务必使用HTTPS
  2. 合理配置速率限制防止滥用
  3. 定期检查TURN服务器性能
  4. 监控服务器资源使用情况
  5. 保持PairDrop版本更新

通过本文的详细指导,您应该能够成功部署自己的PairDrop实例,并根据实际需求进行定制化配置。