DripEmail.org

Documentation

Complete guide to using DripEmails.org

Production Setup

Deploy DripEmails.org to production with Nginx, SSL, and process management.

1. Server Setup

# Update system
sudo apt update && sudo apt upgrade -y

# Install dependencies
sudo apt install python3.11 python3.11-venv python3-pip
sudo apt install postgresql postgresql-contrib
sudo apt install redis-server
sudo apt install nginx
sudo apt install supervisor
sudo apt install certbot python3-certbot-nginx

2. Create Application User

sudo adduser dripemails
sudo usermod -aG www-data dripemails

3. Configure Database

# Switch to postgres user
sudo -u postgres psql

# Create database and user
CREATE DATABASE dripemails;
CREATE USER dripemails WITH PASSWORD 'your_secure_password';
ALTER ROLE dripemails SET client_encoding TO 'utf8';
ALTER ROLE dripemails SET default_transaction_isolation TO 'read committed';
ALTER ROLE dripemails SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE dripemails TO dripemails;
\q

4. Deploy Application

# Switch to application user
sudo su - dripemails

# Clone repository
git clone https://github.com/dripemails/web.git
cd web

# Create virtual environment
python3.11 -m venv venv
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt
pip install gunicorn

# Configure .env (see Configuration Guide)
cp docs/env.example .env
nano .env

# Run migrations
python manage.py migrate

# Create superuser
python manage.py createsuperuser

# Collect static files
python manage.py collectstatic --noinput

5. Configure Gunicorn

Create /etc/systemd/system/dripemails.service:

[Unit]
Description=DripEmails Gunicorn Daemon
After=network.target

[Service]
User=dripemails
Group=www-data
WorkingDirectory=/home/dripemails/web
Environment="PATH=/home/dripemails/web/venv/bin"
ExecStart=/home/dripemails/web/venv/bin/gunicorn \
    --workers 3 \
    --bind unix:/home/dripemails/web/dripemails.sock \
    dripemails.wsgi:application

[Install]
WantedBy=multi-user.target

Enable and start the service:

sudo systemctl daemon-reload
sudo systemctl enable dripemails
sudo systemctl start dripemails
sudo systemctl status dripemails

6. Configure Nginx

Create /etc/nginx/sites-available/dripemails:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    
    location /static/ {
        alias /home/dripemails/web/staticfiles/;
    }

    location /media/ {
        alias /home/dripemails/web/media/;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/dripemails/web/dripemails.sock;
    }
}

Enable the site:

sudo ln -s /etc/nginx/sites-available/dripemails /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

7. Configure SSL with Let's Encrypt

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

8. Configure SMTP Server with Supervisord

Create /etc/supervisor/conf.d/dripemails-smtp.conf:

[program:dripemails-smtp]
command=/home/dripemails/web/venv/bin/python manage.py run_smtp_server --host 0.0.0.0 --port 1025 --save-to-db --log-to-file
directory=/home/dripemails/web
user=dripemails
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/supervisor/dripemails-smtp.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
environment=DJANGO_SETTINGS_MODULE="dripemails.settings"
stopsignal=TERM
stopwaitsecs=10

Start the SMTP server:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start dripemails-smtp
sudo supervisorctl status dripemails-smtp

9. Configure Celery (Optional)

Create /etc/supervisor/conf.d/dripemails-celery.conf:

[program:dripemails-celery-worker]
command=/home/dripemails/web/venv/bin/celery -A dripemails worker -l info
directory=/home/dripemails/web
user=dripemails
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/supervisor/dripemails-celery-worker.log

[program:dripemails-celery-beat]
command=/home/dripemails/web/venv/bin/celery -A dripemails beat -l info
directory=/home/dripemails/web
user=dripemails
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/supervisor/dripemails-celery-beat.log

Start Celery workers:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start dripemails-celery-worker
sudo supervisorctl start dripemails-celery-beat

10. Verify Deployment

✅ Check Services

# Check Gunicorn
sudo systemctl status dripemails

# Check Nginx
sudo systemctl status nginx

# Check Supervisor services
sudo supervisorctl status

✅ Test Application

  1. Visit https://yourdomain.com
  2. Log in with your superuser credentials
  3. Create a test campaign
  4. Send a test email

Maintenance Commands

# Restart application
sudo systemctl restart dripemails

# Restart Nginx
sudo systemctl restart nginx

# Restart all services
sudo supervisorctl restart all

# View logs
sudo journalctl -u dripemails -f
sudo supervisorctl tail dripemails-smtp
tail -f /var/log/nginx/access.log

🎉 Deployment Complete!

Your DripEmails.org installation is now running in production with SSL, process management, and email services.