Given a URL to an image on my lemmy instance, how can I (as an admin) permanently delete the image (and all cache/variants of the image)?
I operate a lemmy instance server. One of our users just
Given a URL to an image on my lemmy instance, how can I (as an admin) permanently delete the image (and all cache/variants of the image)?
I operate a lemmy instance server. One of our users just submitted a GDPR Data Erasure request for an image. The image is orphaned, so it is not tied to any post or comment. We have a URL to the image only.
Images in lemmy are handled by the pict-rs service, which is itself distinct from lemmy. As stated in the lemmy documentation, there is a way to purge posts and comments, but there appears to be no way to purge a given image in lemmy through the WUI or lemmy API.
How can I entirely purge the image from my lemmy instance, given only the URL to the image?
file (aka the "alias") is the server filename of the
uploaded image
delete_token is the token needed to delete the image
Of course, if you didn't capture this image's `delete_token` at
upload-time, then you must fetch it from the postgres DB.
First, open a shell on your running postgres container. If you installed
Lemmy with docker compose, use `docker compose ps` to get the
"SERVICE" name of your postgres host, and then enter it with
`docker exec`
ⓘ Note: If you get an `incorrect_login` error, then try [a]
logging into the instance in your web browser and then [b] pasting the
"https://<instance_domain>/pictrs/image/delete/<pictrs_delete_token>/<image_filename>"
URL into your web browser.
The image should be deleted.
Method Two: /internal/purge?alias={alias}
Alternatively, you could execute the deletion directly inside the pictrs
container. This eliminates the need to fetch the `delete_token`.
First, open a shell on your running `pictrs` container. If you
installed Lemmy with docker compose, use `docker compose ps` to get
the "SERVICE" name of your postgres host, and then enter it with
`docker exec`
~ $ wget --server-response --post-data "" --header "X-Api-Token: ${PICTRS__SERVER__API_KEY}" "http://127.0.0.1:8080/internal/purge?alias=001665df-3b25-415f-8a59-3d836bb68dd1.webp"
Connecting to 127.0.0.1:8080 (127.0.0.1:8080)
HTTP/1.1 200 OK
content-length: 67
connection: close
content-type: application/json
date: Wed, 14 Feb 2024 12:56:24 GMT
saving to 'purge?alias=001665df-3b25-415f-8a59-3d836bb68dd1.webp'
purge?alias=001665df 100% |*****************************************************************************************************************************************************************************************************************************| 67 0:00:00 ETA
'purge?alias=001665df-3b25-415f-8a59-3d836bb68dd1.webp' saved
~ $
ⓘ Note: There's an error in the pict-rs reference documentation. It
says you can POST to `/internal/delete`, but that just returns
404 Not Found.
The image should be deleted
Further Reading
Unfortunately, it seems that the Lemmy develoeprs are not taking these moral and legal (GDPR) risks seriously (they
saidit may take years before they address them), and they threatened to ban me for trying to highlight the severity of this risk, get them to tag GDPR-related bugs, and to prioritize them.