CVE and update status of the FreeBSD ports tree3,298 unaddressed CVEs in 671 portsAll times are CET
Port details

www/py-horizon 27.0.0

OpenStack Dashboard (Horizon)

Port info

Maintainer
sunpoet@FreeBSD.org
Packages
latest: 27.0.0
Upstream
up to date
Last update
to 27.0.0 · 25f1226ffe
Quarterly
2026Q4: 27.0.0
WWW
https://docs.openstack.org/horizon/latest/
Links
cgit · VuXML · Report wrong data

Install

Package
# pkg install py312-horizon
installs 27.0.0 from latest; from quarterly (2026Q4) 27.0.0
Port
# cd /usr/ports/www/py-horizon && make install clean
# make -C /usr/ports/www/py-horizon config  # change options first
Size
4.0 MiB download · 32 MiB installed
Depends on
databases/py-python-memcached 1.62_1, databases/py-python-swiftclient 4.11.0, devel/py-babel 2.18.0, devel/py-futurist 3.5.0, devel/py-iso8601 2.1.0, devel/py-keystoneauth1 5.17.0, devel/py-openstacksdk 4.20.0, devel/py-oslo.concurrency 7.6.1, devel/py-oslo.config 10.7.0, devel/py-oslo.i18n 6.9.0, devel/py-oslo.policy 6.0.1, devel/py-oslo.serialization 5.11.0, devel/py-oslo.upgradecheck 2.8.0, devel/py-oslo.utils 10.2.0, devel/py-osprofiler 4.4.0, devel/py-pbr 7.1.2, devel/py-pyyaml 6.0.3_1, devel/py-semantic-version 2.10.0_1, devel/py-xstatic-angular 1.8.2.3, devel/py-xstatic-angular-bootstrap 2.5.0.1, devel/py-xstatic-angular-fileupload 12.2.13.2, devel/py-xstatic-angular-gettext 2.4.1.1, devel/py-xstatic-angular-lrdragndrop 1.0.2.7, devel/py-xstatic-angular-schema-form 0.8.13.1, devel/py-xstatic-bootstrap-datepicker 1.4.0.1, devel/py-xstatic-bootstrap-scss 3.4.1.1, devel/py-xstatic-bootswatch 3.3.7.1, devel/py-xstatic-d3 3.5.17.1, devel/py-xstatic-font-awesome 6.2.1.2, devel/py-xstatic-hogan 2.0.0.5, devel/py-xstatic-jasmine 2.4.1.3, devel/py-xstatic-jquery 3.7.1.1, devel/py-xstatic-jquery-migrate 3.3.2.2, devel/py-xstatic-jquery-ui 1.13.0.2, devel/py-xstatic-jquery.quicksearch 2.0.3.3, devel/py-xstatic-jquery.tablesorter 2.14.5.3, devel/py-xstatic-jsencrypt 2.3.1.2, devel/py-xstatic-mdi 1.6.50.3, devel/py-xstatic-objectpath 1.2.1.1, devel/py-xstatic-rickshaw 1.5.1.3, devel/py-xstatic-roboto-fontface 0.8.0.1, devel/py-xstatic-smart-table 1.4.13.3, devel/py-xstatic-spin 1.2.5.3_2, devel/py-xstatic-term.js 0.0.7.1, devel/py-xstatic-tv4 1.2.7.1, graphics/py-pillow 12.3.0, lang/python312 3.12.15, net/py-netaddr 1.3.0, net/py-python-cinderclient 9.10.0, net/py-python-glanceclient 4.13.0, net/py-python-keystoneclient 6.0.0, net/py-python-novaclient 18.13.1, textproc/py-qrcode 8.2_1, www/py-django-debreach 2.1.0_2, www/py-django52 5.2.18, www/py-django_compressor 4.5_4, www/py-libsass 0.23.0_1, www/py-requests 2.34.2
License
APACHE20
Creates
user horizon, group horizon
Options
1 of 2 on in the package: MEMCACHED
Show the 1 options that are off
REDIS
pkg-message
Shown after installing
======================
 Apache configuration
======================

If you plan to use apache make sure that the mod_wsgi module is enabled and the
correct ownership for static/local libraries for the openstack_dashboard are
set:

# chown -R horizon /usr/local/lib/python3.12/site-packages/openstack_dashboard/static
# chown -R horizon /usr/local/lib/python3.12/site-packages/openstack_dashboard/local

Use the following snippet as reference:

### Start

<VirtualHost *:80>
        WSGIScriptAlias / /usr/local/lib/python3.12/site-packages/openstack_dashboard/wsgi/django.wsgi
        WSGIDaemonProcess horizon user=horizon group=horizon processes=3 threads=10 display-name=%{GROUP}
        WSGIProcessGroup horizon
        WSGIApplicationGroup %{GLOBAL}

        DocumentRoot /var/lib/horizon

        Alias /static/horizon/lib/angular/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/angular/data/
        Alias /static/horizon/lib/angular_bootstrap/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/angular_bootstrap/data/
        Alias /static/horizon/lib/angular_fileupload/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/angular_fileupload/data/
        Alias /static/horizon/lib/angular_gettext/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/angular_gettext/data/
        Alias /static/horizon/lib/angular_lrdragndrop/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/angular_lrdragndrop/data/
        Alias /static/horizon/lib/angular_schemaform/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/angular_schemaform/data/
        Alias /static/horizon/lib/angular_smart_table/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/angular_smart_table/data/
        Alias /static/horizon/lib/bootstrap_datepicker/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/bootstrap_datepicker/data/
        Alias /static/horizon/lib/bootstrap_scss/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/bootstrap_scss/data/
        Alias /static/horizon/lib/bootswatch/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/bootswatch/data/
        Alias /static/horizon/lib/d3/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/d3/data/
        Alias /static/horizon/lib/font_awesome/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/font_awesome/data/
        Alias /static/horizon/lib/hogan/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/hogan/data/
        Alias /static/horizon/lib/jasmine/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/jasmine/data/
        Alias /static/horizon/lib/jquery_migrate/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/jquery_migrate/data/
        Alias /static/horizon/lib/jquery_quicksearch/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/jquery_quicksearch/data/
        Alias /static/horizon/lib/jquery_tablesorter/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/jquery_tablesorter/data/
        Alias /static/horizon/lib/jsencrypt/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/jsencrypt/data/
        Alias /static/horizon/lib/mdi/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/mdi/data/
        Alias /static/horizon/lib/objectpath/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/objectpath/data/
        Alias /static/horizon/lib/rickshaw/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/rickshaw/data/
        Alias /static/horizon/lib/roboto_fontface/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/roboto_fontface/data/
        Alias /static/horizon/lib/spin/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/spin/data/
        Alias /static/horizon/lib/termjs/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/termjs/data/
        Alias /static/horizon/lib/tv4/ /usr/local/lib/python3.12/site-packages/xstatic/pkg/tv4/data/
        Alias /static/horizon /usr/local/lib/python3.12/site-packages/horizon/static/horizon
        Alias /static /usr/local/lib/python3.12/site-packages/openstack_dashboard/static

        <Directory />
                AllowOverride None
        </Directory>

        <Directory /usr/local/lib/python3.12/site-packages/openstack_dashboard/wsgi>
                Require all granted
        </Directory>

        <Directory /usr/local/lib/python3.12/site-packages/openstack_dashboard/static>
                Require all granted
        </Directory>

        <Directory /usr/local/lib/python3.12/site-packages/horizon/static>
                Require all granted
        </Directory>

        <Directory /usr/local/lib/python3.12/site-packages/xstatic/pkg/*/data>
                Require all granted
        </Directory>

</VirtualHost>

### End

======================
 Custom configuration
======================

Create the configuration:

# cd /usr/local/lib/python3.12/site-packages/openstack_dashboard/local
# cp local_settings.py.example local_settings.py

Add one or more entries to the ALLOWED_HOSTS directive:

ALLOWED_HOSTS = [ 'host1', '192.168.0.1' ]

Horizon must be configured for at least one Keystone server to work properly:

OPENSTACK_HOST = "127.0.0.1"
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "_member_"

To enable django-compressor add this option:

STATIC_ROOT = '/usr/local/lib/python3.12/site-packages/openstack_dashboard/static'

Packages by version and architecture

latest

FreeBSD versionamd64aarch64i386
FreeBSD 1627.0.027.0.0–
FreeBSD 1527.0.027.0.0–
FreeBSD 1427.0.027.0.027.0.0

quarterly (2026Q4)

FreeBSD versionamd64aarch64i386
FreeBSD 1527.0.027.0.0–
FreeBSD 1427.0.027.0.027.0.0

version as in the ports tree (latest) or the most common one (quarterly) · different version · ✗ not built · – no packages for this platform. Package sets that have not been rebuilt for 60 days are left out.

Unaddressed and VuXML only (0)

No unaddressed CVE and nothing reported by pkg audit for the packaged version 27.0.0.

Fixed (0)

No VuXML entries for this package.

Problem reports (0) · open in Bugzilla, most recently changed first

None.

Commits (55)

Mathieu Arnold (mat) · 10.0.1_1
Use PY_FLAVOR for dependencies.

FLAVOR is the current port's flavor, it should not be used outside of
this scope.

Sponsored by:	Absolight
4376dbbb58
Sunpoet Po-Chuan Hsieh (sunpoet) · 10.0.1_1
Fix WWW

Approved by:	portmgr (blanket)
ca3443c837
Mathieu Arnold (mat) · 10.0.1_1
Convert Python ports to FLAVORS.

Ports using USE_PYTHON=distutils are now flavored.  They will
  automatically get flavors (py27, py34, py35, py36) depending on what
  versions they support.

  There is also a USE_PYTHON=flavors for ports that do not use distutils
  but need FLAVORS to be set.  A USE_PYTHON=noflavors can be set if
  using distutils but flavors are not wanted.

  A new USE_PYTHON=optsuffix that will add PYTHON_PKGNAMESUFFIX has been
  added to cope with Python ports that did not have the Python
  PKGNAMEPREFIX but are flavored.

  USES=python now also exports a PY_FLAVOR variable that contains the
  current python flavor.  It can be used in dependency lines when the
  port itself is not python flavored.  For example, deskutils/calibre.

  By default, all the flavors are generated.  To only generate flavors
  for the versions in PYTHON2_DEFAULT and PYTHON3_DEFAULT, define
  BUILD_DEFAULT_PYTHON_FLAVORS in your make.conf.

  In all the ports with Python dependencies, the *_DEPENDS entries MUST
  end with the flavor so that the framework knows which to build/use.
  This is done by appending '@${PY_FLAVOR}' after the origin (or
  @${FLAVOR} if in a Python module with Python flavors, as the content
  will be the same).  For example:

    RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR}

PR:		223071
Reviewed by:	portmgr, python
Sponsored by:	Absolight
Differential Revision:	https://reviews.freebsd.org/D12464
551be3c723
Roman Bogorodskiy (novel) · 10.0.1_1
www/py-horizon: fix floating ips

Fix an issue with listing and disassociating floating IP addresses
from the Horizon dashboard.

PR:		216375
Submitted by:	maintainer
2708105009
Roman Bogorodskiy (novel) · 10.0.1
Add www/py-horizon, OpenStack Dashboard

Horizon is a Django-based project aimed at providing
a complete OpenStack Dashboard along with an extensible framework
for building new dashboards from reusable components.

PR:		215155
Submitted by:	Alexander Nusov (alexander.nusov@nfvexpress.com)
89a50dd083