What you need to configure
When self-hosting Email Tracker, you need to set up:- Your own domain (recommended) or host/IP
- HTTPS reverse proxy for production email clients
- Server port (
PORTenvironment variable) - Strong dashboard token (
DASHBOARD_TOKENenvironment variable) - Extension configuration (tracker URL + dashboard token in popup)
Server environment variables
Required variables
Secret token for authenticating dashboard API requests. Keep this private and use a strong random value.
Optional variables
Port for the Node.js server to listen on. Use
127.0.0.1:PORT when running behind a reverse proxy.Path to the SQLite database file.
Deduplication window in milliseconds. Opens within this window from the same source are treated as duplicates.
Extension configuration
After loading the Chrome extension, configure it through the popup:-
Tracker Base URL
- For local development:
http://localhost:8090 - For production: Your HTTPS domain (e.g.,
https://tracker.yourdomain.com)
- For local development:
-
Dashboard Token
- Must match the
DASHBOARD_TOKENenvironment variable on your server
- Must match the
Operational recommendations
Process management
Run the server with a process manager to ensure it stays running:- systemd
- pm2
Create a systemd service file at Enable and start the service:
/etc/systemd/system/email-tracker.service:Database backups
Regularly back up your SQLite database file to prevent data loss:Log rotation
Monitor disk usage and rotate logs regularly:- If using systemd, logs are automatically managed by journald
- If using pm2, configure log rotation:
Security best practices
- Use a strong, randomly generated
DASHBOARD_TOKEN - Never commit the token to version control
- Use environment variables or a secrets management system
- Regularly rotate the token and update your extension configuration
Storage considerations
The SQLite database stores:- tracked_emails: Email metadata and open counts
- open_events: Individual open events with IP, User-Agent, and GeoIP data