[SOLVED] Internal Error 500 after FBX Update to 24.26 (24.26.1)

Hi,

MY FBX wouldn’t update from 24.25 so I did a “manual update” as instructed in the FBX manual.

After the update, I am getting an Internal error 500 with the following log. Any help would be appreciated.

Jan 12 09:55:51 Freedombox /usr/bin/plinth[779]: Internal Server Error: /plinth/
                                             Traceback (most recent call last):
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 829, in _resolve_lookup
                                                 current = current[bit]
                                                           ~~~~~~~^^^^^
                                             TypeError: 'Shortcut' object is not subscriptable
                                             
                                             During handling of the above exception, another exception occurred:
                                             
                                             Traceback (most recent call last):
                                               File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line 47, in inner
                                                 response = get_response(request)
                                                            ^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 204, in _get_response
                                                 response = response.render()
                                                            ^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/response.py", line 105, in render
                                                 self.content = self.rendered_content
                                                                ^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/response.py", line 83, in rendered_content
                                                 return template.render(context, self._request)
                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/backends/django.py", line 61, in render
                                                 return self.template.render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 170, in render
                                                 return self._render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 162, in _render
                                                 return self.nodelist.render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 938, in render
                                                 bit = node.render_annotated(context)
                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 905, in render_annotated
                                                 return self.render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/loader_tags.py", line 150, in render
                                                 return compiled_parent._render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 162, in _render
                                                 return self.nodelist.render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 938, in render
                                                 bit = node.render_annotated(context)
                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 905, in render_annotated
                                                 return self.render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/loader_tags.py", line 62, in render
                                                 result = block.nodelist.render(context)
                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 938, in render
                                                 bit = node.render_annotated(context)
                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 905, in render_annotated
                                                 return self.render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/defaulttags.py", line 315, in render
                                                 return nodelist.render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 938, in render
                                                 bit = node.render_annotated(context)
                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 905, in render_annotated
                                                 return self.render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/defaulttags.py", line 214, in render
                                                 nodelist.append(node.render_annotated(context))
                                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 905, in render_annotated
                                                 return self.render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/defaulttags.py", line 315, in render
                                                 return nodelist.render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 938, in render
                                                 bit = node.render_annotated(context)
                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 905, in render_annotated
                                                 return self.render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/defaulttags.py", line 315, in render
                                                 return nodelist.render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 938, in render
                                                 bit = node.render_annotated(context)
                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 905, in render_annotated
                                                 return self.render(context)
                                                        ^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/defaulttags.py", line 166, in render
                                                 values = self.sequence.resolve(context, ignore_failures=True)
                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 671, in resolve
                                                 obj = self.var.resolve(context)
                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 796, in resolve
                                                 value = self._resolve_lookup(context)
                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/django/template/base.py", line 837, in _resolve_lookup
                                                 current = getattr(current, bit)
                                                           ^^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/plinth/app.py", line 329, in app
                                                 return App.get(self.app_id)
                                                        ^^^^^^^^^^^^^^^^^^^^
                                               File "/usr/lib/python3/dist-packages/plinth/app.py", line 99, in get
                                                 return cls._all_apps[app_id]
                                                        ~~~~~~~~~~~~~^^^^^^^^
                                             KeyError: None

Thanks in advance.

EDIT: Discovered partly similar issue in bug tracker. Apparently there is a bugfix on the way. Not sure if it covers all the errors.
EDIT2: removal of /etc/plinth/custom-shortcuts.json solves the issue for now. Bugfix should work. Will close the ticket after next update.

1 Like

Thanks for sharing this.

One of my two freedombox is running 24.26.1, the other is still running 24.25, not sure why (both are Pioneer, the second one with a SATA SSD). I don’t have any error on the one with 24.26.1, but based on your report, I am hesitating to do a manual upgrade (the one now with 24.25 is running services I really want to work).

I had some custom app shortcuts on plinth. Figuring the “tags” recently added created some sort of conflict/regression - maybe thats why FBX didnt update by itself and was stuck on 24.25. Will see if next update resloves the issue.

Another explanation could be that the backport of 24.26.1 did not propagate to all mirrors yet and then it depends which mirror was used. My freedombox that did not upgrade does not have any tweak besides moving the root file system to the SSD.

I had the same error and had the suspicion, that the custom shortcut did cause this problem. I deleted the custom-shortcuts.json in /etc/ plinth, restarted the server and the problem was gone.
So we have to figure out, how to write the custom-shortcuts.json to the new settings.

1 Like

A rewrite may not be necesarry. Ill just be waiting for the merged fix to be released.

2 Likes

Sorry about the regression folks. This regression was caused due to work on tags but does not require your custom-shortcuts.json to be updated. Please note that short_description has been removed and tags have been added. So, you may want to make those updates to the custom-shortcuts.json. Documentation for custom shortcuts has been updated.

3 Likes

Thank you for updating the documentation @sunil!

@sunil Sorry, I was too fast in replying. I did adapt the file according the documentation and couldn’t access https://freedombox.local/plinth/ at all anymore: The Service Unavailable page showed up and didn’t disappear. So I had to remove the custom-shortcuts.json in /etc/ plinth again. What could cause this?

It is updated now, in the diagnostics, I see “warning” for 5 diagnostics:

  • App: Service Discovery
    – Package avahi-daemon is the latest version (0.8-10+deb12u1)
    – Package avahi-utils is the latest version (0.8-10+deb12u1)
  • App: Date & Time
    – Package systemd-timesyncd is the latest version (252.33-1~deb12u1)
  • App: Secure Shell Server
    – Package openssh-server is the latest version (1:9.2p1-2+deb12u4)
  • App: Postfix/Dovecot
    – Package redis-server is the latest version (5:7.0.15-1~deb12u2)

Something like “is the latest version” does not look like an error, so I don’t know whether any action is needed, like pressing the “Try to repair” button.

I didnt understand what the warnings are for… all seems well if they’re the latest version?

apt -s full-upgrade says that there is nothing to do.

Following the upgrade to 24.26.1, the journal shows a number of errors, I will try comparing with previous upgrades to see whether it is different or not.

EDIT: I did not do anything and I ran the diagnostics again today, there is no warning anymore.

1 Like
  • You need to update custom-shortcuts.json to see tags instead of short description.
  • Updating the custom-shortcuts.json with tags is optional. Not updating the file is not the cause for homepage not being accessible. You still the regression fix (which is available in today’s release and will reach you in 3-4 days.
  • Version related warnings are because the package are slightly outdated and an update for them is available. This is not a bug. The packages are simply waiting to get updated (which will happen at night).
  • The best way to manually update the packages is to either use the “Manual update” button in “Software update” app in FreedomBox interface or use “unattended-upgrades” on the command line. Using “apt *upgrade” commands may lead to configuration file related prompts, especially when upgrading to next stable release, which are best left to FreedomBox to handle (unattended-upgrades will automatically back-off when it sees these and FreedomBox automatically step-in).
1 Like

Update to FreedomBox version 25.1 has solved the regression. A rewrite of custom-shortcuts not necessary. Marking thread [SOLVED].
Thank you all.

2 Likes