{"id":13586003,"url":"https://github.com/johnjones4/Doomsday-Machine","last_synced_at":"2025-04-07T14:33:07.751Z","repository":{"id":55770957,"uuid":"96649341","full_name":"johnjones4/Doomsday-Machine","owner":"johnjones4","description":"Doomsday Machine is a tool for backing up cloud services to a local machine.","archived":true,"fork":false,"pushed_at":"2021-06-27T14:57:32.000Z","size":165,"stargazers_count":59,"open_issues_count":0,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-04-15T02:57:38.564Z","etag":null,"topics":["backup","cloud-backup","dropbox","github","google-contacts","imap","lastpass"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/johnjones4.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"License.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-07-08T23:20:58.000Z","updated_at":"2024-01-02T15:06:18.000Z","dependencies_parsed_at":"2022-08-15T07:00:14.605Z","dependency_job_id":null,"html_url":"https://github.com/johnjones4/Doomsday-Machine","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnjones4%2FDoomsday-Machine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnjones4%2FDoomsday-Machine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnjones4%2FDoomsday-Machine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnjones4%2FDoomsday-Machine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnjones4","download_url":"https://codeload.github.com/johnjones4/Doomsday-Machine/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247670302,"owners_count":20976541,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","cloud-backup","dropbox","github","google-contacts","imap","lastpass"],"created_at":"2024-08-01T15:05:15.944Z","updated_at":"2025-04-07T14:33:07.490Z","avatar_url":"https://github.com/johnjones4.png","language":"Python","readme":"# Doomsday Machine\n\n![Screenshot of Doomsday Machine](screenshot.png)\n\n## About\n\nDoomsday Machine is a tool for backing up cloud services to a local machine.\n\n## Installation\n\nTo install the main script, run the following:\n\n```sh\n$ git clone git@github.com:johnjones4/Doomsday-Machine.git\n$ cd Doomsday-Machine\n$ make install\n```\n\nIf you would like to run Doomsday Machine on a schedule, I recommend using something like [Supervisord](http://supervisord.org/) to manage the application. Once you have Supervisord installed for your distro, you can use the following as a template Supervisord configuration for Doomsday Machine. Note that this configuration expects this project to be checked out in the directory `/usr/local/src/Doomsday-Machine/`, it expects a directory for logging named `/var/log/doomsday/`, and it expects a config file at `/var/lib/doomsday/config.yml`.\n\n```\n[program:doomsday]\ncommand=/usr/bin/python3 /usr/local/src/Doomsday-Machine/backup.py\ndirectory=/usr/local/src/Doomsday-Machine\nautostart=true\nautorestart=true\nstartretries=3\nstderr_logfile=/var/log/doomsday/supervisor-backup.err.log\nstdout_logfile=/var/log/doomsday/supervisor-backup.out.log\nuser=root\nenvironment=CONFIG_FILE='/var/lib/doomsday/config.yml'\n\n[program:doomsdaywebserver]\ncommand=/usr/bin/python3 /usr/local/src/Doomsday-Machine/webserver.py\ndirectory=/usr/local/src/Doomsday-Machine\nautostart=true\nautorestart=true\nstartretries=3\nstderr_logfile=/var/log/doomsday/supervisor-webserver.err.log\nstdout_logfile=/var/log/doomsday/supervisor-webserver.out.log\nuser=root\nenvironment=CONFIG_FILE='/var/lib/doomsday/config.yml'\n```\n\n## Setup\n\nThe file `config.sample.yml` includes all configurations for the project. Copy that file to `config.yml` and begin updating the file to meet your needs. You may remove or duplicate any job in the list. Specify the absolute path to this file as an environment variable named `CONFIG_FILE`\n\n### Backup Jobs\n\n#### Dropbox Setup\n\nTo setup Dropbox access, go to the [Dropbox App Console](https://www.dropbox.com/developers/apps) and create a new app. After setting up the app (you only need to provide basic information as you'll be the only one consuming this) under \"Generated access token\", click \"Generate.\" Copy and paste that generated code to the configuration option `oauth2_access_token`. In the Dropbox configuration, you may also specify a whitelist of paths that should be downloaded. Omit that option to download all files.\n\n#### Google Contacts\n\nSetup for this data source is a bit more complex. First, create an application on the [Google API Console](https://console.developers.google.com/), give the application access to the _Google People API_, and create Oauth credentials for a Desktop Client.\n\nNow, copy and paste new client credentials into your `config.yml` file as `client_id` and `client_secret` under `options` for the section titled `Google Contacts`. Next, run `make authenticate` which will generate an authorization URL. Open that URL in a browser, agree to give your new application access to your contact, and copy the generated token and paste it as `token`. Now run `make authenticate` one last time, which will result in a `token` and a `refresh_token`. Copy an paste those keys to `token` and `refresh_token` in your `config.yml`.\n\n#### LastPass\n\nTo setup LastPass access, specify your username and password in the options.\n\n#### GitHub\n\nTo setup GitHub access, go to your [Personal access tokens](https://github.com/settings/tokens), click \"Generate new token,\" and select everything under \"repo\" under scopes. Copy and paste that generated code to the configuration option `access_token`.\n\n#### IMAP\n\nTo add an email/IMAP account, specify all of the standard IMAP connection details as well as a list of mailboxes to download.\n\n### Other Configuration Options\n\n#### Notifications\n\nUpon completion of each backup job, Doomsday Machine can send an email notification. To allow that, specify IMAP connection details under `email_notification`.\n\n#### Delay\n\nBetween jobs and run loops, you can specify a delay time (In seconds) under `delay`.\n\n#### Outputs\n\nDoomsday Machine will loop through a list of output directories under `outputs` in case you want to keep multiple redundant backups.\n\n#### Active Job\n\nDoomsday Machine will write a JSON file with the active job information to the path specified in `active_job_file_path`.\n\n#### Logging\n\nTo control logging, set a logging level and/or output file under `logging`.\n","funding_links":[],"categories":["Python","Sync and Backup Tools"],"sub_categories":["Backup Software with Rclone Support"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnjones4%2FDoomsday-Machine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnjones4%2FDoomsday-Machine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnjones4%2FDoomsday-Machine/lists"}