This repository has been archived by the owner. It is now read-only.
Please see my newer implementation of this at
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Doomsday Machine

Doomsday Machine Screenshot


Doomsday Machine is a tool for backing up cloud services to a local machine. It syncs all content to a local directory in non-vendor-specific file formats. (Whenever possible, it opts for formats such as .html, .csv, etc.) It requires a MySQL database to store backup configurations and object metadata. All configuration data is encrypted at rest, but metadata is not. Also, all backup archives are encrypted at rest, but the backup work directory is not.


Checkout and Dependencies

Check out the code and install dependencies by running:

# git clone
# cd Doomsday-Machine
# npm install

Environment Variables

There are several configurations that must be set at runtime as environment variables. These should be set in a .env file. The variables are:


  • MYSQL_HOST: The location of the MySQL server.
  • MYSQL_USER: The user used to connect to the MySQL server.
  • MYSQL_PASSWORD: The password used to connect to the MySQL server.
  • MYSQL_DATABASE: The schema to connect to on the MySQL server.
  • MYSQL_PORT: The port to connect to on the MySQL server. Defaults to 3306.


  • SECRET: The secret used to encode configurations and files.
  • WORKING_DIRECTORY: The directory used to store working files and archives.
  • BACKUP_INTERVAL: The interval to run the backup in milliseconds. Defaults to daily.
  • ARCHIVE_RETENTION: The number of archives to retain following a backup.

Web Server

  • WEB_PORT: The port for the web server to listen for connections. Defaults to 8000.
  • SITE_URL: The URL to the web server to redirect to from OAuth requests. Defaults to http://localhost:8000.
  • AUTH_USERNAME: The username for HTTP authentication.
  • AUTH_PASSWORD: The password for HTTP authentication.

Email Alerts

  • MAIL_HOST: SMTP host to connect to for sending email alerts.
  • MAIL_PORT: SMTP port to connect to for sending email alerts.
  • MAIL_SECURE: SMTP setting for secure connections.
  • MAIL_USERNAME: SMTP username to connect to for sending email alerts.
  • MAIL_PASSWORD: SMTP password to connect to for sending email alerts.
  • MAIL_FROM: From address for sending email alerts.
  • MAIL_TO: To address for sending email alerts.


To launch the application:

# node


Icon created by Arthur Shlain from the Noun Project