Front page/default dashboard hangs if RSS-feed is unavailable #7959

Closed
opened 2025-12-29 20:30:29 +01:00 by adam · 2 comments
Owner

Originally created by @hklygre on GitHub (Apr 28, 2023).

Originally assigned to: @jeremystretch on GitHub.

NetBox version

v3.5.0

Python version

3.9

Steps to Reproduce

Our servers are blocked from accessing the internet. Loading the front page hangs, as the RSS-widget can't download the RSS feed it needs. There appears to be no timeout.
All other pages work fine, but each attempt to load the front page causes another gunicorn thread to hang, until there are no more free threads.

Granting access to the RSS feed in the firewall resolves the problem.

This is using the default dashboard after an upgrade to 3.5

Expected Behavior

The front page/dashboard should load with an empty RSS feed

Observed Behavior

The page hangs

Originally created by @hklygre on GitHub (Apr 28, 2023). Originally assigned to: @jeremystretch on GitHub. ### NetBox version v3.5.0 ### Python version 3.9 ### Steps to Reproduce Our servers are blocked from accessing the internet. Loading the front page hangs, as the RSS-widget can't download the RSS feed it needs. There appears to be no timeout. All other pages work fine, but each attempt to load the front page causes another gunicorn thread to hang, until there are no more free threads. Granting access to the RSS feed in the firewall resolves the problem. This is using the default dashboard after an upgrade to 3.5 ### Expected Behavior The front page/dashboard should load with an empty RSS feed ### Observed Behavior The page hangs
adam added the type: bugstatus: accepted labels 2025-12-29 20:30:29 +01:00
adam closed this issue 2025-12-29 20:30:29 +01:00
Author
Owner

@jarradraumati commented on GitHub (Apr 29, 2023):

Yes this caught me out also since our instance is also blocked from the internet.
I was able to work around this by overwriting the DEFAULT_DASHBOARD constant in my configuration/extra.py (using netbox-docker v2.6.1) to remove the RSS feed. Otherwise you can find it at netbox/extras/constants.py

# Dashboard
DEFAULT_DASHBOARD = [
    {
        'widget': 'extras.ObjectCountsWidget',
        'width': 4,
        'height': 2,
        'title': 'Organization',
        'config': {
            'models': [
                'dcim.site',
                'tenancy.tenant',
                'tenancy.contact',
            ]
        }
    },
    {
        'widget': 'extras.ObjectCountsWidget',
        'width': 4,
        'height': 3,
        'title': 'IPAM',
        'config': {
            'models': [
                'ipam.vrf',
                'ipam.aggregate',
                'ipam.prefix',
                'ipam.iprange',
                'ipam.ipaddress',
                'ipam.vlan',
            ]
        }
    },
    {
        'widget': 'extras.NoteWidget',
        'width': 4,
        'height': 2,
        'title': 'Welcome!',
        'color': 'green',
        'config': {
            'content': (
                'This is your personal dashboard. Feel free to customize it by rearranging, resizing, or removing '
                'widgets. You can also add new widgets using the "add widget" button below. Any changes affect only '
                '_your_ dashboard, so feel free to experiment!'
            )
        }
    },
    {
        'widget': 'extras.ObjectCountsWidget',
        'width': 4,
        'height': 2,
        'title': 'Circuits',
        'config': {
            'models': [
                'circuits.provider',
                'circuits.circuit',
                'circuits.providernetwork',
            ]
        }
    },
    {
        'widget': 'extras.ObjectCountsWidget',
        'width': 4,
        'height': 3,
        'title': 'DCIM',
        'config': {
            'models': [
                'dcim.site',
                'dcim.rack',
                'dcim.devicetype',
                'dcim.device',
                'dcim.cable',
            ],
        }
    },
-    {
-        'widget': 'extras.RSSFeedWidget',
-        'width': 4,
-        'height': 4,
-        'title': 'NetBox News',
-        'config': {
-            'feed_url': 'http://netbox.dev/rss/',
-            'max_entries': 10,
-            'cache_timeout': 14400,
-        }
-    },
    {
        'widget': 'extras.ObjectCountsWidget',
        'width': 4,
        'height': 2,
        'title': 'Virtualization',
        'config': {
            'models': [
                'virtualization.cluster',
                'virtualization.virtualmachine',
            ]
        }
    },
    {
        'widget': 'extras.ObjectListWidget',
        'width': 12,
        'height': 5,
        'title': 'Change Log',
        'color': 'blue',
        'config': {
            'model': 'extras.objectchange',
            'page_size': 25,
        }
    },
]

This allowed the dashboard/homepage to load for any authenticated and unauthenticated sessions without the timeout delay.

@jarradraumati commented on GitHub (Apr 29, 2023): Yes this caught me out also since our instance is also blocked from the internet. I was able to work around this by overwriting the `DEFAULT_DASHBOARD` constant in my configuration/extra.py (using netbox-docker `v2.6.1`) to remove the RSS feed. Otherwise you can find it at [netbox/extras/constants.py](https://github.com/netbox-community/netbox/blob/a2f4fce5b30f5f53483f7b8d5f64ad743f9c18ef/netbox/extras/constants.py) ```diff # Dashboard DEFAULT_DASHBOARD = [ { 'widget': 'extras.ObjectCountsWidget', 'width': 4, 'height': 2, 'title': 'Organization', 'config': { 'models': [ 'dcim.site', 'tenancy.tenant', 'tenancy.contact', ] } }, { 'widget': 'extras.ObjectCountsWidget', 'width': 4, 'height': 3, 'title': 'IPAM', 'config': { 'models': [ 'ipam.vrf', 'ipam.aggregate', 'ipam.prefix', 'ipam.iprange', 'ipam.ipaddress', 'ipam.vlan', ] } }, { 'widget': 'extras.NoteWidget', 'width': 4, 'height': 2, 'title': 'Welcome!', 'color': 'green', 'config': { 'content': ( 'This is your personal dashboard. Feel free to customize it by rearranging, resizing, or removing ' 'widgets. You can also add new widgets using the "add widget" button below. Any changes affect only ' '_your_ dashboard, so feel free to experiment!' ) } }, { 'widget': 'extras.ObjectCountsWidget', 'width': 4, 'height': 2, 'title': 'Circuits', 'config': { 'models': [ 'circuits.provider', 'circuits.circuit', 'circuits.providernetwork', ] } }, { 'widget': 'extras.ObjectCountsWidget', 'width': 4, 'height': 3, 'title': 'DCIM', 'config': { 'models': [ 'dcim.site', 'dcim.rack', 'dcim.devicetype', 'dcim.device', 'dcim.cable', ], } }, - { - 'widget': 'extras.RSSFeedWidget', - 'width': 4, - 'height': 4, - 'title': 'NetBox News', - 'config': { - 'feed_url': 'http://netbox.dev/rss/', - 'max_entries': 10, - 'cache_timeout': 14400, - } - }, { 'widget': 'extras.ObjectCountsWidget', 'width': 4, 'height': 2, 'title': 'Virtualization', 'config': { 'models': [ 'virtualization.cluster', 'virtualization.virtualmachine', ] } }, { 'widget': 'extras.ObjectListWidget', 'width': 12, 'height': 5, 'title': 'Change Log', 'color': 'blue', 'config': { 'model': 'extras.objectchange', 'page_size': 25, } }, ] ``` This allowed the dashboard/homepage to load for any authenticated and unauthenticated sessions without the timeout delay.
Author
Owner

@joernheissler commented on GitHub (Apr 29, 2023):

Same as #12376.
Documentation for DEFAULT_DASHBOARD is here: https://docs.netbox.dev/en/stable/configuration/default-values/#default_dashboard

@joernheissler commented on GitHub (Apr 29, 2023): Same as #12376. Documentation for `DEFAULT_DASHBOARD` is here: https://docs.netbox.dev/en/stable/configuration/default-values/#default_dashboard
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#7959