notion-backup
notion-backup copied to clipboard
Automatic Notion workspace backup to Google Drive, Dropbox, pCloud, Nextcloud or to your local machine.
notion-backup
Automatically backup your Notion workspace to Google Drive, Dropbox, pCloud, Nextcloud or to your local machine.
Set Credentials
Create a .env
file with the following properties (How do I find all these values?):
# Make sure not to use any quotes around these environment variables
# Notion (Required)
NOTION_SPACE_ID=
NOTION_EMAIL=
NOTION_PASSWORD=
# Options: markdown, html (default is markdown)
NOTION_EXPORT_TYPE=markdown
# Create folders for nested pages? Options: true, false (default is false)
NOTION_FLATTEN_EXPORT_FILETREE=false
# Google Drive (Optional)
GOOGLE_DRIVE_ROOT_FOLDER_ID=
GOOGLE_DRIVE_SERVICE_ACCOUNT=
# Provide either secret json or the path to the secret file
GOOGLE_DRIVE_SERVICE_ACCOUNT_SECRET_JSON=
GOOGLE_DRIVE_SERVICE_ACCOUNT_SECRET_FILE_PATH=
# Dropbox (Optional)
DROPBOX_ACCESS_TOKEN=
# Nextcloud (Optional)
NEXTCLOUD_EMAIL=
NEXTCLOUD_PASSWORD=
NEXTCLOUD_WEBDAV_URL=
# pCloud (Optional)
PCLOUD_ACCESS_TOKEN=
PCLOUD_API_HOST=
PCLOUD_FOLDER_ID=
Backup to Cloud With Docker
Once you created your .env
file, you can run the following command to start your backup:
docker run \
--rm=true \
--env-file=.env \
jckleiner/notion-backup
The downloaded Notion export file will be saved to the /downloads
folder within the Docker container and the container
will be removed after the backup is done (because of the --rm=true
flag).
If you want automatic backups in regular intervals, you could either set up a cronjob on your local machine or fork this repo and let GitHub Actions do the job.
Local Backup With Docker
If you want to keep the downloaded files locally, you could mount the /downloads
folder from the container somewhere
on your machine:
docker run \
--rm=true \
--env-file=.env \
-v <backup-dir-absolute-path-on-your-machine>:/downloads \
jckleiner/notion-backup
If you want automatic backups in regular intervals, you could either set up a cronjob on your local machine or fork this repo and let GitHub Actions do the job.
Fork (GitHub Actions)
Another way to do automated backups is using GitHub Actions. You can simply:
- Fork this repository.
- Create repository secrets: Go to
notion-backup (your forked repo) > Settings > Secrets > Actions
and create all the necessary environment variables. - Go to
notion-backup (your forked repo) > Actions
to see the workflows and make sure thenotion-backup-build-run
workflow is enabled. This is the workflow which will periodically build and run the application. - You can adjust when the action will be triggered by editing the
schedule > cron
property in your notion-backup/.github/workflows/build-run.yml workflow file (to convert time values into cron expressions: crontab.guru).
That's it. GitHub Actions will now run your workflow regularly at your defined time interval.
Troubleshooting
Dropbox
If you get the exception: com.dropbox.core.BadResponseException: Bad JSON: expected object value.
, then try to
re-generate your Dropbox access token and run the application again.
pCloud
If you get the exception: com.pcloud.sdk.ApiError: 2094 - Invalid 'access_token' provided.
,
please also make sure that the PCLOUD_API_HOST
environment variable is correct. There are currently two API hosts:
one for Europe (eapi.pcloud.com
) and one for the rest (api.pcloud.com
).
If you still get the error, please try and regenerate the access token as described in the pCloud section
of the documentation.