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
string
required
Secret token for authenticating dashboard API requests. Keep this private and use a strong random value.
Optional variables
number
default:"8080"
Port for the Node.js server to listen on. Use
127.0.0.1:PORT when running behind a reverse proxy.string
default:"server/data/tracker.db"
Path to the SQLite database file.
number
default:"30000"
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