A Python app that can be run regularly against a Postgres Hedgedoc database to remove old notes. Notes that are expired can be emailed to the author as a backup.
Find a file
Stefan Bethke 5c37e0a2b4
Some checks failed
docker-image / docker (push) Failing after 5s
Try just docker
2024-05-18 22:52:04 +02:00
.forgejo/workflows Try just docker 2024-05-18 22:52:04 +02:00
docker-compose.yaml Build an image and add it to compose 2024-05-18 18:56:22 +02:00
Dockerfile Build an image and add it to compose 2024-05-18 18:56:22 +02:00
hedgedoc-expire.py Set default for revisions to 14 days 2024-05-18 22:04:57 +02:00
LICENSE first version of the script 2024-05-18 18:31:30 +02:00
poetry.lock first version of the script 2024-05-18 18:31:30 +02:00
pyproject.toml first version of the script 2024-05-18 18:31:30 +02:00
README.md improve docs 2024-05-18 19:19:06 +02:00

hedgedoc-expire - remove old notes

A Python app that can be run regularly against a Postgres Hedgedoc database to remove old notes. Notes that are expired can be emailed to the author as a backup.

Expiring old notes and revisions

Hedgedoc keeps notes and revisions (versions) of those notes forever. This might not be desirable, for example because of data protection reasons. With this utility, you can remove old revisions and old notes from the database.

Expiring old revisions

All revisions that have been created before the specified age will be removed. If all revisions are older the newest revision that represents the current contents of the note will be retained.

Running hedgedoc-expire.py

Locally from the command line:

poetry run python ./hedgedoc-expire.py ...

From Docker Compose:

  hedgedoc-expire:
    image: hedgedoc-expire
    command: "-c -r .001 -n .001"
    environment:
      - "POSTGRES_HOSTNAME=database"
    depends_on:
      - database

Arguments and Environment Variables

There are two main modes to run hedgedoc-require: check and expire. With -c, a report is generated on standard out. Without it, the expiry action will be taken.

Option Default Description
-c Create a report which revisions and notes will be expired
-n 90 remove all notes not changed in these many days
-r 7 remove all revisions created more than these many days ago

Environment variables

To configure the Postgres database connection and the SMTP parameters to send mail, set these variables.

For the SMTP connection, the code assumes a standard submission protocol setup with enable StartTLS and authentication, so you will need to configure a username and password.

Variable Default Description
POSTGRES_DATABASE hedgedoc database to connect to
POSTGRES_HOSTNAME localhost host of the database server
POSTGRES_PASSWORD geheim password for the database
POSTGRES_PORT 5432 port number of the database server
POSTGRES_USERNAME hedgedoc username for the database
SMTP_FROM sender address for the expiry mails
SMTP_HOSTNAME localhost mail server hostname
SMTP_PASSWORD SMTP password
SMTP_PORT 587 port to connect to
SMTP_USERNAME SMTP username
URL http://localhost:3000 base URL for linking to notes

Local Development Setup

Use Docker Compose to bring up a local development environment.

You will need to create a user using the command line:

docker compose exec -it hedgedoc bin/manage_users --add foo@example.com --pass geheim