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