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
  • Brite
  • 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 - Status | Demo | Docs | Install
  1. Cloudron Forum
  2. Linkding
  3. Linkding - HTML snapshots all fail

Linkding - HTML snapshots all fail

Scheduled Pinned Locked Moved Linkding
9 Posts 3 Posters 1.3k 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 on 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 Offline
      jamesJ Offline
      james
      Staff
      wrote on 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 Offline
        jamesJ Offline
        james
        Staff
        wrote on 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 Offline
          jamesJ Offline
          james
          Staff
          wrote on last edited by
          #4

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

          1 Reply Last reply
          1
          • jamesJ Offline
            jamesJ Offline
            james
            Staff
            wrote on 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 Offline
              jamesJ Offline
              james
              Staff
              wrote on 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 on 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 on 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 on
                  • 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 Offline
                    jamesJ Offline
                    james
                    Staff
                    wrote on 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
                    • jamesJ james marked this topic as a regular topic on

                    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                    With your input, this post could be even better 💗

                    Register Login
                    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