Linkding - HTML snapshots all fail
-
Linkding is not generating any new HTML snapshots of existing or newly added links, anymore
I don’t see anything specific in the logs, here’s an example of adding a link to an article in zeit.de:
Jun 03 06:20:10 [pid: 15|app: 0|req: 2442/5801] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:20:10 2025] GET / => generated 0 bytes in 18 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 0) Jun 03 06:20:20 [pid: 17|app: 0|req: 3286/5802] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:20:20 2025] GET / => generated 0 bytes in 19 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 1) Jun 03 06:20:30 [pid: 17|app: 0|req: 3287/5803] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:20:30 2025] GET / => generated 0 bytes in 19 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 0) Jun 03 06:20:40 [pid: 15|app: 0|req: 2443/5806] 93.159.105.156 () {58 vars in 1384 bytes} [Tue Jun 3 04:20:40 2025] GET /api/bookmarks/check?url=https%3A%2F%2Fwww.zeit.de%2Fzeit-magazin%2F2025%2F23%2Fverena-kast-aelter-werden-psychologie-glueck%2Fkomplettansicht => generated 0 bytes in 24 msecs (HTTP/1.1 301) 6 headers in 347 bytes (1 switches on core 1) Jun 03 06:20:40 [pid: 17|app: 0|req: 3288/5804] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:20:40 2025] GET / => generated 0 bytes in 21 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 1) Jun 03 06:20:40 [pid: 17|app: 0|req: 3289/5805] 93.159.105.156 () {56 vars in 1254 bytes} [Tue Jun 3 04:20:40 2025] GET /bookmarks/new?url=https://www.zeit.de/zeit-magazin/2025/23/verena-kast-aelter-werden-psychologie-glueck/komplettansicht&auto_close => generated 17076 bytes in 35 msecs (HTTP/1.1 200) 9 headers in 398 bytes (1 switches on core 0) Jun 03 06:20:40 [pid: 17|app: 0|req: 3290/5807] 93.159.105.156 () {58 vars in 1132 bytes} [Tue Jun 3 04:20:40 2025] GET /manifest.json => generated 1390 bytes in 25 msecs (HTTP/1.1 200) 8 headers in 253 bytes (1 switches on core 1) Jun 03 06:20:41 [pid: 17|app: 0|req: 3291/5808] 93.159.105.156 () {58 vars in 1386 bytes} [Tue Jun 3 04:20:40 2025] GET /api/bookmarks/check/?url=https%3A%2F%2Fwww.zeit.de%2Fzeit-magazin%2F2025%2F23%2Fverena-kast-aelter-werden-psychologie-glueck%2Fkomplettansicht => generated 555 bytes in 635 msecs (HTTP/1.1 200) 9 headers in 287 bytes (1 switches on core 0) Jun 03 06:20:44 [pid: 17|app: 0|req: 3292/5809] 93.159.105.156 () {58 vars in 1161 bytes} [Tue Jun 3 04:20:44 2025] GET /api/tags/?limit=5000&offset=0 => generated 8071 bytes in 30 msecs (HTTP/1.1 200) 9 headers in 294 bytes (1 switches on core 1) Jun 03 06:20:50 [pid: 17|app: 0|req: 3293/5810] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:20:50 2025] GET / => generated 0 bytes in 14 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 0) Jun 03 06:20:51 [pid: 17|app: 0|req: 3294/5811] 93.159.105.156 () {66 vars in 1372 bytes} [Tue Jun 3 04:20:51 2025] POST /bookmarks/new => generated 0 bytes in 65 msecs (HTTP/1.1 302) 9 headers in 289 bytes (1 switches on core 1) Jun 03 06:20:51 [pid: 17|app: 0|req: 3295/5812] 93.159.105.156 () {62 vars in 1291 bytes} [Tue Jun 3 04:20:51 2025] GET /bookmarks/close => generated 7934 bytes in 24 msecs (HTTP/1.1 200) 9 headers in 397 bytes (1 switches on core 0) Jun 03 06:21:00 [pid: 15|app: 0|req: 2444/5813] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:21:00 2025] GET / => generated 0 bytes in 22 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 0) Jun 03 06:21:10 [pid: 17|app: 0|req: 3296/5814] 172.18.0.1 () {30 vars in 374 bytes} [Tue Jun 3 04:21:10 2025] GET / => generated 0 bytes in 26 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 1) Jun 03 06:21:20 [pid: 17|app: 0|req: 3297/5815] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:21:20 2025] GET / => generated 0 bytes in 17 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 0) Jun 03 06:21:30 [pid: 17|app: 0|req: 3298/5816] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:21:30 2025] GET / => generated 0 bytes in 18 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 1) Jun 03 06:21:40 [pid: 17|app: 0|req: 3299/5817] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:21:40 2025] GET / => generated 0 bytes in 17 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 0) Jun 03 06:21:50 [pid: 17|app: 0|req: 3300/5818] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:21:50 2025] GET / => generated 0 bytes in 11 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 1) Jun 03 06:21:50 2025-06-03 04:21:50,033 INFO reaped unknown pid 56 (exit status 1)
-
Linkding is not generating any new HTML snapshots of existing or newly added links, anymore
I don’t see anything specific in the logs, here’s an example of adding a link to an article in zeit.de:
Jun 03 06:20:10 [pid: 15|app: 0|req: 2442/5801] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:20:10 2025] GET / => generated 0 bytes in 18 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 0) Jun 03 06:20:20 [pid: 17|app: 0|req: 3286/5802] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:20:20 2025] GET / => generated 0 bytes in 19 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 1) Jun 03 06:20:30 [pid: 17|app: 0|req: 3287/5803] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:20:30 2025] GET / => generated 0 bytes in 19 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 0) Jun 03 06:20:40 [pid: 15|app: 0|req: 2443/5806] 93.159.105.156 () {58 vars in 1384 bytes} [Tue Jun 3 04:20:40 2025] GET /api/bookmarks/check?url=https%3A%2F%2Fwww.zeit.de%2Fzeit-magazin%2F2025%2F23%2Fverena-kast-aelter-werden-psychologie-glueck%2Fkomplettansicht => generated 0 bytes in 24 msecs (HTTP/1.1 301) 6 headers in 347 bytes (1 switches on core 1) Jun 03 06:20:40 [pid: 17|app: 0|req: 3288/5804] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:20:40 2025] GET / => generated 0 bytes in 21 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 1) Jun 03 06:20:40 [pid: 17|app: 0|req: 3289/5805] 93.159.105.156 () {56 vars in 1254 bytes} [Tue Jun 3 04:20:40 2025] GET /bookmarks/new?url=https://www.zeit.de/zeit-magazin/2025/23/verena-kast-aelter-werden-psychologie-glueck/komplettansicht&auto_close => generated 17076 bytes in 35 msecs (HTTP/1.1 200) 9 headers in 398 bytes (1 switches on core 0) Jun 03 06:20:40 [pid: 17|app: 0|req: 3290/5807] 93.159.105.156 () {58 vars in 1132 bytes} [Tue Jun 3 04:20:40 2025] GET /manifest.json => generated 1390 bytes in 25 msecs (HTTP/1.1 200) 8 headers in 253 bytes (1 switches on core 1) Jun 03 06:20:41 [pid: 17|app: 0|req: 3291/5808] 93.159.105.156 () {58 vars in 1386 bytes} [Tue Jun 3 04:20:40 2025] GET /api/bookmarks/check/?url=https%3A%2F%2Fwww.zeit.de%2Fzeit-magazin%2F2025%2F23%2Fverena-kast-aelter-werden-psychologie-glueck%2Fkomplettansicht => generated 555 bytes in 635 msecs (HTTP/1.1 200) 9 headers in 287 bytes (1 switches on core 0) Jun 03 06:20:44 [pid: 17|app: 0|req: 3292/5809] 93.159.105.156 () {58 vars in 1161 bytes} [Tue Jun 3 04:20:44 2025] GET /api/tags/?limit=5000&offset=0 => generated 8071 bytes in 30 msecs (HTTP/1.1 200) 9 headers in 294 bytes (1 switches on core 1) Jun 03 06:20:50 [pid: 17|app: 0|req: 3293/5810] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:20:50 2025] GET / => generated 0 bytes in 14 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 0) Jun 03 06:20:51 [pid: 17|app: 0|req: 3294/5811] 93.159.105.156 () {66 vars in 1372 bytes} [Tue Jun 3 04:20:51 2025] POST /bookmarks/new => generated 0 bytes in 65 msecs (HTTP/1.1 302) 9 headers in 289 bytes (1 switches on core 1) Jun 03 06:20:51 [pid: 17|app: 0|req: 3295/5812] 93.159.105.156 () {62 vars in 1291 bytes} [Tue Jun 3 04:20:51 2025] GET /bookmarks/close => generated 7934 bytes in 24 msecs (HTTP/1.1 200) 9 headers in 397 bytes (1 switches on core 0) Jun 03 06:21:00 [pid: 15|app: 0|req: 2444/5813] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:21:00 2025] GET / => generated 0 bytes in 22 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 0) Jun 03 06:21:10 [pid: 17|app: 0|req: 3296/5814] 172.18.0.1 () {30 vars in 374 bytes} [Tue Jun 3 04:21:10 2025] GET / => generated 0 bytes in 26 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 1) Jun 03 06:21:20 [pid: 17|app: 0|req: 3297/5815] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:21:20 2025] GET / => generated 0 bytes in 17 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 0) Jun 03 06:21:30 [pid: 17|app: 0|req: 3298/5816] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:21:30 2025] GET / => generated 0 bytes in 18 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 1) Jun 03 06:21:40 [pid: 17|app: 0|req: 3299/5817] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:21:40 2025] GET / => generated 0 bytes in 17 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 0) Jun 03 06:21:50 [pid: 17|app: 0|req: 3300/5818] 172.18.0.1 () {30 vars in 375 bytes} [Tue Jun 3 04:21:50 2025] GET / => generated 0 bytes in 11 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 1) Jun 03 06:21:50 2025-06-03 04:21:50,033 INFO reaped unknown pid 56 (exit status 1)
Hello @necrevistonnezr
@necrevistonnezr said in Linkding - HTML snapshots all fail:
anymore
means it was working before?
What has changed since then? Did the app update or anything? -
I've reproduced this issue with the given URL https://www.zeit.de/zeit-magazin/2025/23/verena-kast-aelter-werden-psychologie-glueck/komplettansicht
When pressing
Create HTML snapshot
.Jun 03 11:27:21 [pid: 21|app: 0|req: 159/285] 2a00:20:6353:7887:65ef:3314:2fa6:31ae () {74 vars in 1592 bytes} [Tue Jun 3 09:27:21 2025] POST /bookmarks/action?details=1 => generated 9022 bytes in 26 msecs (HTTP/1.1 200) 9 headers in 399 bytes (1 switches on core 1) Jun 03 11:27:22 [pid: 19|app: 0|req: 91/286] 172.18.0.1 () {28 vars in 367 bytes} [Tue Jun 3 09:27:22 2025] GET / => generated 0 bytes in 13 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 1) Jun 03 11:27:30 [pid: 21|app: 0|req: 160/287] 172.18.0.1 () {28 vars in 367 bytes} [Tue Jun 3 09:27:30 2025] GET / => generated 0 bytes in 10 msecs (HTTP/1.1 302) 9 headers in 280 bytes (1 switches on core 0) Jun 03 11:27:35 2025-06-03 09:27:35,546 INFO reaped unknown pid 68 (exit status 1)
Testing with a different URL https://www.heise.de/news/Microsoft-loest-Dual-Boot-Probleme-von-Windows-und-Linux-10386354.html
Also ended in:
Jun 03 11:32:35 2025-06-03 09:32:35,198 INFO reaped unknown pid 82 (exit status 1)
Just for testing I also installed a Cloudron LAMP App and tried to snapshot that one.
Even that failed.Have to start looking into the process what is happening.
-
In the file
/run/linkding/background_tasks.log
I found the following log:INFO 2025-06-03 09:53:30,980 tasks: Create HTML snapshot for bookmark. url=https://lamp.cloudronapp.php74.cloudron.dev/ Process exited with code null file:///usr/local/node-20.11.1/lib/node_modules/single-file-cli/lib/deno-polyfill.js:86 reject(new Error(`Process exited with code ${code}`)); ^ Error: Process exited with code null at ChildProcess.<anonymous> (file:///usr/local/node-20.11.1/lib/node_modules/single-file-cli/lib/deno-polyfill.js:86:14) at ChildProcess.emit (node:events:518:28) at ChildProcess._handle.onexit (node:internal/child_process:294:12) Node.js v20.11.1 ERROR 2025-06-03 09:53:31,999 tasks: Failed to HTML snapshot for bookmark. url=https://lamp.cloudronapp.php74.cloudron.dev/ Traceback (most recent call last): File "/app/code/bookmarks/services/tasks.py", line 304, in _create_html_snapshot_task assets.create_snapshot(asset) File "/app/code/bookmarks/services/assets.py", line 60, in create_snapshot raise error File "/app/code/bookmarks/services/assets.py", line 37, in create_snapshot singlefile.create_snapshot(asset.bookmark.url, temp_filepath) File "/app/code/bookmarks/services/singlefile.py", line 32, in create_snapshot raise SingleFileError("Failed to create snapshot") bookmarks.services.singlefile.SingleFileError: Failed to create snapshot INFO 2025-06-03 09:53:32,000 api: bookmarks.services.tasks._schedule_html_snapshots_task: f66a211f-b174-4345-8329-31404630c9b2 executed in 1.023s INFO 2025-06-03 09:54:27,246 consumer: Enqueueing periodic task bookmarks.services.tasks._schedule_html_snapshots_task: 26ff4c55-5203-4e57-a845-9cd3de16dbac. INFO 2025-06-03 09:54:30,264 consumer: Received SIGTERM INFO 2025-06-03 09:54:30,363 consumer: Shutting down INFO 2025-06-03 09:54:30,363 consumer: Consumer exiting.
-
Was able to get some more details:
File "/app/code/bookmarks/services/singlefile.py", line 32, in create_snapshot raise SingleFileError(f"FAILED TO CREATE SNAPSHOT! - args: {args}") bookmarks.services.singlefile.SingleFileError: FAILED TO CREATE SNAPSHOT! - args: ['single-file', '--browser-arg=--user-data-dir=/run/linkding/chromium-profile', 'https://lamp.cloudronapp.php74.cloudron.dev/', '/app/code/data/assets/snapshot_2025-06-03_102124_https___lamp.cloudronapp.php74.cloudron.dev_.tmp']
What is suspicious is that the tmp files is written to:
/app/code/data/assets/snapshot_2025-06-03_102124_https___lamp.cloudronapp.php74.cloudron.dev_.tmp
This should then be reflected in the app with either https://docs.cloudron.io/packaging/manifest/#runtimedirs or a workaround with symlinks.
But since I am currently debugging the app in recovery mode, the app is able to write
/app/code
and still fails.
Might just be something to keep in mind. -
@james Thanks for investigating! I understand correctly: It's the current package that tries to write a temp file to a write-protected folder?
-
N necrevistonnezr marked this topic as a question
-
@james Thanks for investigating! I understand correctly: It's the current package that tries to write a temp file to a write-protected folder?
@necrevistonnezr No sadly not.
Noticed later that this is already symlinked correctly:s -lah /app/code/data/ total 40K drwxr-xr-x 1 cloudron cloudron 4.0K May 20 09:43 . drwxr-xr-x 1 cloudron cloudron 4.0K Jun 3 11:20 .. lrwxrwxrwx 1 cloudron cloudron 21 May 20 09:42 assets -> /app/data/data/assets lrwxrwxrwx 1 cloudron cloudron 18 May 20 09:42 favicons -> /app/data/favicons lrwxrwxrwx 1 cloudron cloudron 23 May 20 09:42 previews -> /app/data/data/previews lrwxrwxrwx 1 cloudron cloudron 23 May 20 09:42 secretkey.txt -> /app/data/secretkey.txt lrwxrwxrwx 1 cloudron cloudron 28 May 20 09:43 tasks.sqlite3 -> /app/data/data/tasks.sqlite3 -rw-r--r-- 1 cloudron cloudron 28K May 20 09:43 tasks.sqlite3.orig