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
- Visit https://yourdomain.com
- Log in with your superuser credentials
- Create a test campaign
- 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.