Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Cloudron Forum

Apps | Demo | Docs | Install
  1. Cloudron Forum
  2. Linkding
  3. Linkding - HTML snapshots all fail

Linkding - HTML snapshots all fail

Scheduled Pinned Locked Moved Unsolved Linkding
9 Posts 3 Posters 107 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • necrevistonnezrN Offline
    necrevistonnezrN Offline
    necrevistonnezr
    wrote last edited by necrevistonnezr
    #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)
    
    
    jamesJ 1 Reply Last reply
    0
    • necrevistonnezrN necrevistonnezr

      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)
      
      
      jamesJ Online
      jamesJ Online
      james
      Staff
      wrote last edited by
      #2

      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?

      1 Reply Last reply
      0
      • jamesJ Online
        jamesJ Online
        james
        Staff
        wrote last edited by
        #3

        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.

        1 Reply Last reply
        1
        • jamesJ Online
          jamesJ Online
          james
          Staff
          wrote last edited by
          #4

          This might be related to: https://github.com/sissbruecker/linkding/issues/1071

          1 Reply Last reply
          1
          • jamesJ Online
            jamesJ Online
            james
            Staff
            wrote last edited by
            #5

            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.
            
            1 Reply Last reply
            1
            • jamesJ Online
              jamesJ Online
              james
              Staff
              wrote last edited by
              #6

              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.

              1 Reply Last reply
              1
              • nebulonN Offline
                nebulonN Offline
                nebulon
                Staff
                wrote last edited by
                #7

                Just for others who read this thread, the next package version will log the background task output also to the regular app logs, in case someone looks for /run/linkding/background_tasks.log

                1 Reply Last reply
                2
                • necrevistonnezrN Offline
                  necrevistonnezrN Offline
                  necrevistonnezr
                  wrote last edited by necrevistonnezr
                  #8

                  @james Thanks for investigating! I understand correctly: It's the current package that tries to write a temp file to a write-protected folder?

                  jamesJ 1 Reply Last reply
                  0
                  • necrevistonnezrN necrevistonnezr marked this topic as a question
                  • necrevistonnezrN necrevistonnezr

                    @james Thanks for investigating! I understand correctly: It's the current package that tries to write a temp file to a write-protected folder?

                    jamesJ Online
                    jamesJ Online
                    james
                    Staff
                    wrote last edited by
                    #9

                    @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
                    
                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • Bookmarks
                    • Search