summaryrefslogtreecommitdiffstats
path: root/docker-compose.yml
blob: df4f9ec06cd75bf64afc92fe6ba69c740757443e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
version: '3.8'

# =============================================================================
# VAPORDROP - Zero-Knowledge Dead Drop
# Stack: Go + Tor + X25519 + XChaCha20 + BLAKE3 (all non-NIST)
# =============================================================================

services:
  vapordrop:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: vapordrop
    restart: unless-stopped
    
    # Key from file (create .env with: VAPOR_KEY=your-passphrase)
    env_file:
      - .env
    
    volumes:
      # Persistent Tor keys (same onion address across restarts)
      - tor-data:/app/.tor
      # File storage (ephemeral, but survives container restart)
      - file-storage:/app/file_storage
    
    # Security hardening
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL
    cap_add:
      - NET_BIND_SERVICE  # For Tor
    
    # Read-only root filesystem
    read_only: true
    tmpfs:
      - /tmp:size=256M,mode=1777
    
    # Resource limits
    deploy:
      resources:
        limits:
          memory: 512M
          cpus: '1.0'
        reservations:
          memory: 128M
    
    # Logging (minimal for privacy)
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

volumes:
  tor-data:
    driver: local
  file-storage:
    driver: local