MachinePainting 32a3e37ba2 v1.0.2: Standardize node naming conventions
- Rename class to DropSendSetupNode
- Rename class to DropSendAutoUploaderNode
- Update NODE_CLASS_MAPPINGS keys for consistency
- Update print statement prefixes to [DropSend Setup]
- Use get_encryption_key() for consistent key lookup

BREAKING: Existing workflows using old node names will need to re-add nodes
2026-02-01 05:58:02 -08:00
2025-08-20 18:33:56 -07:00
2025-04-23 03:06:50 -07:00
2025-08-20 18:33:56 -07:00

ComfyUI DropSend Node

Automatically upload your ComfyUI output files to Dropbox with optional encryption. Set it and forget it!

Prefer Google Drive? Check out DriveSend Node

DropSend Node Overview


🔄 How It Works

┌─────────────────────────────────────────────────────────────────────────────┐
│                         CLOUD (RunPod, etc.)                                │
│                                                                             │
│      ComfyUI generates files ──→ DropSend Node ──→ Uploads to Dropbox       │
│        (png, mp4, etc.)         │                                           │
│                                 │                                           │
│                                 ▼                                           │
│                      ┌──────────────────────┐                               │
│                      │ Encryption OPTIONAL  │                               │
│                      │ ☐ OFF: file.png      │                               │
│                      │ ☑ ON:  file.png.enc  │                               │
│                      └──────────────────────┘                               │
└─────────────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
                               ☁️ DROPBOX
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                           YOUR LOCAL MACHINE                                │
│                                                                             │
│   Dropbox syncs/downloads ──→ If encrypted: Run decrypt script (local)      │
│                                             ──→ file.png (viewable!)        │
│                                                                             │
│                               If not encrypted: Ready to use!               │
└─────────────────────────────────────────────────────────────────────────────┘

Encryption is completely optional. Leave enable_encryption off and files upload directly as-is.


📤 Features

DropSend AutoUploader Node

  • Real-time folder monitoring with optional subfolder support
  • Supports: .png, .jpg, .jpeg, .webp, .gif, .mp4, .avi, .mov
  • Optional AES-128 encryption before upload
  • SHA256 checksum verification
  • Queue system for reliable uploads

DropSend Setup Node

  • Generates Dropbox refresh token from App Key/Secret
  • Outputs credentials for RunPod environment variables
  • Optional encryption key generation

Decryption Scripts (Local Use)

  • Cross-platform scripts for macOS, Windows, and Linux
  • Decrypt .enc files after downloading from Dropbox

💾 Installation

cd ComfyUI/custom_nodes/
git clone https://github.com/machinepainting/ComfyUI_DropSendNode.git
pip install -r ComfyUI_DropSendNode/requirements.txt

Restart ComfyUI after installation.


🔧 Dropbox App Setup

  1. Login to Dropbox
  2. Go to Dropbox Developers → Click Create Apps
  3. Select Scoped Access → App Folder (recommended)
  4. Name your app → Click Create app
  5. Go to Permissions tab and enable:
    • account_info.write, account_info.read
    • files.metadata.write, files.metadata.read
    • files.content.write, files.content.read
  6. Click Submit to save permissions
  7. Go to Settings tab → Note your App Key and App Secret

Note: If you can't select App Folder, create an /Apps/ folder in your Dropbox root first.


🏃‍♂️ DropSend Setup (RunPod & Cloud Users)

Step 1: Run Setup Node

  1. Add DropSend Setup Node to your workflow

  2. Configure:

    • app_key: Paste your App Key
    • app_secret: Paste your App Secret
    • auth_code: Leave blank (for now)
    • dropbox_dest_folder: /Apps/ComfyUI_Output_Files (or your choice)
    • storage_method: display_only
    • encryption_key_method: Display Only (or off if not using encryption)
  3. Run the node → Two Dropbox popups appear

  4. Accept permissions → Copy the authorization code

  5. Paste code into auth_code field

  6. Run the node again

Step 2: Copy Credentials from Console

The console displays:

DROPBOX_APP_KEY: XXXXXXXXXX
DROPBOX_APP_SECRET: XXXXXXXXXX
DROPBOX_REFRESH_TOKEN: XXXXXXXXXX
COMFYUI_ENCRYPTION_KEY=XXXXXXXXXX (if encryption enabled)

Copy only the value after the : or = sign (not the variable name).

Step 3: Create RunPod Secrets

  1. Go to RunPod.io → Click Secrets in sidebar
  2. Create these secrets:
Secret Name Secret Value
DROPBOX_APP_KEY Your app key
DROPBOX_APP_SECRET Your app secret
DROPBOX_REFRESH_TOKEN Your refresh token
COMFYUI_ENCRYPTION_KEY Your encryption key (if using encryption)

Step 4: Add Environment Variables to Pod

  1. Edit your pod template → Environment Variables dropdown
  2. Add each variable:
Key Value
DROPBOX_APP_KEY {{ RUNPOD_SECRET_DROPBOX_APP_KEY }}
DROPBOX_APP_SECRET {{ RUNPOD_SECRET_DROPBOX_APP_SECRET }}
DROPBOX_REFRESH_TOKEN {{ RUNPOD_SECRET_DROPBOX_REFRESH_TOKEN }}
COMFYUI_ENCRYPTION_KEY {{ RUNPOD_SECRET_COMFYUI_ENCRYPTION_KEY }}
  1. Click Set Overrides → Deploy

Step 5: Test Upload

  1. Add DropSend AutoUploader Node to your workflow
  2. Set run_process to True
  3. Run a workflow that generates an image
  4. Check your Dropbox folder!

💻 DropSend Setup (Local Users)

  1. Add DropSend Setup Node to your workflow

  2. Configure:

    • app_key: Paste your App Key
    • app_secret: Paste your App Secret
    • auth_code: Leave blank (for now)
    • dropbox_dest_folder: /Apps/ComfyUI_Output_Files
    • storage_method: env_file
    • encryption_key_method: save to .env (or off)
  3. Run the node → Accept Dropbox permissions → Copy auth code

  4. Paste code into auth_code field → Run again

  5. Restart ComfyUI to load the .env file

  6. Add DropSend AutoUploader Node and run!


🔐 Decryption Scripts (Local Use Only)

The /scripts/ folder contains scripts to decrypt .enc files on your local machine.

⚠️ LOCAL USE ONLY — Run these after downloading encrypted files from Dropbox.

Prerequisites

pip install cryptography

Store Your Encryption Key

macOS (Keychain):

  1. Open Keychain Access → File → New Password Item
  2. Name: ComfyUI_Encryption_Key, Account: ComfyUI, Password: your key

Windows (Environment Variable):

  1. Win + R → sysdm.cpl → Advanced → Environment Variables
  2. New User Variable: COMFYUI_ENCRYPTION_KEY = your key

Linux (Environment Variable):

echo 'export COMFYUI_ENCRYPTION_KEY="your_key_here"' >> ~/.bashrc
source ~/.bashrc

Run Decryption

cd ComfyUI/custom_nodes/ComfyUI_DropSendNode/scripts

# macOS
./decrypt_folder_mac.sh

# Windows
python decrypt_folder_win.py

# Linux
./decrypt_folder_linux.sh

# Cross-platform
python decrypt_folder.py

🛠️ Troubleshooting

Files Not Uploading

  • Check console for error messages
  • Verify run_process is True
  • Confirm Dropbox folder starts with /Apps/

Encryption Key Not Found

  • Verify secret name is exactly COMFYUI_ENCRYPTION_KEY
  • Check environment variable is set in pod template
  • Restart pod after adding environment variables

Authorization Failed

  • Re-run setup with reconnect set to true
  • Generate a new auth code

⚠️ Security Best Practices

  1. Never commit your .env file — Add to .gitignore
  2. Backup your encryption key — Without it, encrypted files cannot be recovered
  3. Use secure key storage — Prefer Keychain/Environment Variables over plain text

🧪 Tested On

  • macOS 13+ (Ventura, Sonoma)
  • Python 3.10 / 3.11
  • ComfyUI (Feb 2026)
  • RunPod GPU instances

📁 Repository Structure

ComfyUI_DropSendNode/
├── __init__.py
├── dropsend_uploader_node.py
├── dropsend_setup_node.py
├── dropbox_upload.py
├── dropbox_auth_manager.py
├── encrypt_file.py
├── monitor_output.py
├── oauth_handler.py
├── requirements.txt
├── README.md
├── .gitignore
└── scripts/
    ├── decrypt_folder.py
    ├── decrypt_folder_mac.sh
    ├── encrypt_folder_mac.sh
    ├── decrypt_folder_win.py
    ├── encrypt_folder_win.py
    ├── decrypt_folder_linux.sh
    └── encrypt_folder_linux.sh

License

MIT


Shout-out to Adam for his contributions to this node build!

S
Description
No description provided
Readme MIT
773 KiB
Languages
Python 73.9%
JavaScript 15.3%
Shell 10.8%