# 06-pairdrop.md

kstack:
  book: Centerpoint Home Lab
  chapter: Utilities
  page: PairDrop
  tags: [pairdrop, file-sharing, webrtc, lan]
---

## Overview

PairDrop is a local network file sharing app inspired by Apple AirDrop. It
uses WebRTC for peer-to-peer file transfers between devices on the same LAN
session. No accounts, no file storage on the server — files transfer directly
between browsers. Internal-only access.

## Access

| Type     | URL                             | Auth          |
|----------|---------------------------------|---------------|
| Internal | `https://pairdrop.home.local`   | None (LAN only) |

## Configuration

**Image:** `lscr.io/linuxserver/pairdrop:latest`

### Environment Variables

| Variable       | Value             | Purpose                          |
|----------------|-------------------|----------------------------------|
| `TZ`           | `America/Toronto` | Timezone                         |
| `PUID`         | `1000`            | User ID                          |
| `PGID`         | `1000`            | Group ID                         |
| `WS_FALLBACK`  | `false`           | WebSocket fallback (disabled)    |
| `RATE_LIMIT`   | `false`           | Rate limiting (disabled for LAN) |
| `RTC_CONFIG`   | `false`           | External STUN/TURN (not needed on LAN) |
| `DEBUG_MODE`   | `false`           | Debug logging                    |

### Traefik Labels

```yaml
traefik.http.routers.pairdrop.rule: Host(`pairdrop.home.local`)
traefik.http.routers.pairdrop.entrypoints: websecure
traefik.http.routers.pairdrop.tls.certresolver: step-ca
traefik.http.services.pairdrop.loadbalancer.server.port: 3000
```

## Volumes / Bind Mounts

None — fully stateless. Files are transferred peer-to-peer and never stored on
the server.

## Notes / Gotchas

- PairDrop discovers peers in the same "room" — by default, all users behind the
  same NAT/gateway appear to each other. On a home LAN this means all devices
  on the network can see each other.
- `RTC_CONFIG=false` is correct for LAN use — no external STUN/TURN server is
  needed when all peers are on the same network.
- For Tailscale peers to use PairDrop, they would need a TURN server since
  Tailscale creates separate subnets. Current config is LAN-only.

---
*Last Updated: 2026-06-17*