#
Binary Deployment
QuickDapp builds self-contained binary executables that include all dependencies and assets. This simplifies deployment by eliminating runtime dependencies.
#
Building Binaries
Create self-contained executables:
# Build binaries for all supported platforms (default behavior)
bun run build
# Binaries are created in dist/binaries/
ls dist/binaries/
# quickdapp-linux-x64
# quickdapp-darwin-x64
# quickdapp-windows-x64.exe
Each binary contains:
- Compiled server code with embedded frontend assets
- All required dependencies and runtime
- Static files (images, CSS, JavaScript)
#
Running Binaries
#
Basic Execution
# Linux/macOS
chmod +x dist/binaries/quickdapp-linux-x64
./dist/binaries/quickdapp-linux-x64
# Windows
dist\binaries\quickdapp-windows-x64.exe
#
Environment Configuration
Set environment variables before running:
# Linux/macOS - inline environment variables
DATABASE_URL="postgresql://user:pass@host:5432/db" \
CHAIN=sepolia \
FACTORY_CONTRACT_ADDRESS="0x..." \
./dist/binaries/quickdapp-linux-x64
Or use environment files:
# .env.production
DATABASE_URL=postgresql://user:password@host:5432/quickdapp
SESSION_ENCRYPTION_KEY=your_secure_32_character_key
SERVER_WALLET_PRIVATE_KEY=0xYourWalletKey
CHAIN=sepolia
CHAIN_RPC_ENDPOINT=https://sepolia.infura.io/v3/your-key
FACTORY_CONTRACT_ADDRESS=0xYourContractAddress
# Run with environment file
NODE_ENV=production ./dist/binaries/quickdapp-linux-x64
#
Server Deployment
#
Simple Upload and Run
# 1. Upload binary to server
scp dist/binaries/quickdapp-linux-x64 user@server:/opt/quickdapp/
# 2. Upload environment configuration
scp .env.production user@server:/opt/quickdapp/.env
# 3. SSH to server and run
ssh user@server
cd /opt/quickdapp
chmod +x quickdapp-linux-x64
NODE_ENV=production ./quickdapp-linux-x64
#
Background Process
Run as a background service:
# Using nohup
nohup NODE_ENV=production ./quickdapp-linux-x64 > quickdapp.log 2>&1 &
# Check if running
ps aux | grep quickdapp
# Stop the process
pkill quickdapp-linux-x64
#
Platform-Specific Notes
#
Linux Deployment
Most common for production servers:
# Make executable
chmod +x quickdapp-linux-x64
# Run directly
./quickdapp-linux-x64
#
macOS Deployment
For macOS servers or development:
# Make executable
chmod +x quickdapp-darwin-x64
# Run (may require security approval on first run)
./quickdapp-darwin-x64
# If blocked by security
xattr -d com.apple.quarantine quickdapp-darwin-x64
#
Windows Deployment
For Windows servers:
REM Run directly
quickdapp-windows-x64.exe
REM With environment variables
set DATABASE_URL=postgresql://...
set NODE_ENV=production
quickdapp-windows-x64.exe
#
Performance Optimization
#
Environment Settings
Optimize binary performance with environment variables:
# Limit memory usage
NODE_OPTIONS="--max-old-space-size=1024"
# Scale workers to CPU count
WORKER_COUNT=cpus
# Optimize database connections
DATABASE_POOL_SIZE=20
#
Health Monitoring
Binaries include built-in health endpoints:
# Basic health check
curl http://localhost:3000/health
# {"status":"ok","version":"1.0.0","timestamp":"..."}
#
Security
Basic security practices for binary deployment:
# Set proper file permissions
chmod 750 quickdapp-linux-x64 # Owner execute, group read
chmod 640 .env # Owner read/write, group read
# Create dedicated user (optional)
sudo useradd -r -s /bin/false quickdapp
sudo chown quickdapp:quickdapp quickdapp-linux-x64
sudo -u quickdapp ./quickdapp-linux-x64
#
Troubleshooting
#
Common Issues
Binary won't start:
# Check if executable
ls -la quickdapp-linux-x64
# Make executable if needed
chmod +x quickdapp-linux-x64
Environment issues:
# Verify required environment variables
echo $DATABASE_URL
echo $SESSION_ENCRYPTION_KEY
# Test with minimal environment
DATABASE_URL="postgresql://..." \
SESSION_ENCRYPTION_KEY="32_character_key" \
./quickdapp-linux-x64
Port conflicts:
# Check what's using the port
lsof -i :3000
# Use different port
PORT=3001 ./quickdapp-linux-x64
Memory issues:
# Monitor memory usage
ps -o pid,vsz,rss,comm -p $(pgrep quickdapp)
# Increase memory limit
NODE_OPTIONS="--max-old-space-size=2048" ./quickdapp-linux-x64
Binary deployment provides the simplest way to deploy QuickDapp with minimal server setup and maximum portability.