{"id":36837,"date":"2025-01-27T07:01:48","date_gmt":"2025-01-27T06:01:48","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=36837"},"modified":"2025-01-27T07:01:48","modified_gmt":"2025-01-27T06:01:48","slug":"creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/","title":{"rendered":"Creating your private cloud using OpenStack \u2013 (7) \u2013 Horizon, the OpenStack dashboard"},"content":{"rendered":"\n<p>We&#8217;ve finished the last post with a working Network (Neutron) service on the controller and compute node. In this post we&#8217;ll setup the final service which is <a href=\"https:\/\/docs.openstack.org\/horizon\/latest\/\" target=\"_blank\" rel=\"noreferrer noopener\">Horizon<\/a>, the OpenStack dashboard. Once more, looking back at what we need at a minimum, we&#8217;ve done most of it by now:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keystone: Identity service (done)<\/li>\n\n\n\n<li>Glance: Image service (done)<\/li>\n\n\n\n<li>Placement: Placement service (done)<\/li>\n\n\n\n<li>Nova: Compute service (done)<\/li>\n\n\n\n<li>Neutron: Network service (done)<\/li>\n\n\n\n<li>Horizon: The OpenStack dashboard<\/li>\n<\/ul>\n\n\n\n<p>Currently, the overview of our playground looks like this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"448\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1-1024x448.png\" alt=\"\" class=\"wp-image-36839\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1-1024x448.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1-300x131.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1-768x336.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1.png 1358w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Today we&#8217;re going to setup Horizon on the controller node, which is the final part of this little blog series about creating your own OpenStack playground.<\/p>\n\n\n\n<p>Compared to the installation and configuration of the other services, the process for getting Horizon up and running is pretty simple. Horizon comes as a <a href=\"https:\/\/www.djangoproject.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Django<\/a> web application and we anyway have the web server already running on the controller node.<\/p>\n\n\n\n<p>All we need to do is to install the operating system packages and do a little bit of configuration afterwards.<\/p>\n\n\n\n<p>There are only two packages to install on the controller node:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\n&#x5B;root@controller ~]$ dnf install python3-django openstack-dashboard -y\n<\/pre><\/div>\n\n\n<p>&#8230; and there are only two configuration files to adapt:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\/etc\/openstack-dashboard\/local_settings<\/li>\n\n\n\n<li>\/etc\/httpd\/conf.d\/openstack-dashboard.conf<\/li>\n<\/ul>\n\n\n\n<p>Here is the content of the &#8220;local_settings&#8221; file (the &#8220;LOGGING&#8221; and &#8220;SECURITY_GROUP_RULES&#8221; blocks are kept out to keep this small):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\n&#x5B;root@controller ~]$ egrep -v &quot;^#|^$&quot; \/etc\/openstack-dashboard\/local_settings\nimport os\nfrom django.utils.translation import gettext_lazy as _\nfrom openstack_dashboard.settings import HORIZON_CONFIG\nDEBUG = False\nALLOWED_HOSTS = &#x5B;&#039;*&#039;]\nLOCAL_PATH = &#039;\/tmp&#039;\nSECRET_KEY=&#039;903bceffe2420fd6b5ac&#039;\nCACHES = {\n    &#039;default&#039;: {\n        &#039;BACKEND&#039;: &#039;django.core.cache.backends.memcached.PyMemcacheCache&#039;,\n        &#039;LOCATION&#039;: &#039;controller:11211&#039;,\n    },\n}\nSESSION_ENGINE = &#039;django.contrib.sessions.backends.cache&#039;\nEMAIL_BACKEND = &#039;django.core.mail.backends.console.EmailBackend&#039;\nOPENSTACK_HOST = &quot;controller&quot;\nOPENSTACK_KEYSTONE_URL = &quot;http:\/\/%s:5000\/identity\/v3&quot; % OPENSTACK_HOST\nTIME_ZONE = &quot;Europe\/Zurich&quot;\nLOGGING = {\n   ...\n}\nSECURITY_GROUP_RULES = {\n    ...\n    },\n}\nOPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True\nOPENSTACK_KEYSTONE_DEFAULT_DOMAIN = &quot;Default&quot;\nOPENSTACK_KEYSTONE_DEFAULT_ROLE = &quot;user&quot;\nOPENSTACK_NEUTRON_NETWORK = {\n    &#039;enable_router&#039;: False,\n    &#039;enable_quotas&#039;: False,\n    &#039;enable_distributed_router&#039;: False,\n    &#039;enable_ha_router&#039;: False,\n    &#039;enable_fip_topology_check&#039;: False\n}\nOPENSTACK_API_VERSIONS = {\n    &quot;identity&quot;: 3,\n    &quot;image&quot;: 2,\n    &quot;volume&quot;: 3,\n}\nWEBROOT = &#039;\/dashboard&#039;\n\n<\/pre><\/div>\n\n\n<p>The configuration for the web server is:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\n&#x5B;root@controller ~]$ cat \/etc\/httpd\/conf.d\/openstack-dashboard.conf\nWSGIDaemonProcess dashboard\nWSGIProcessGroup dashboard\nWSGISocketPrefix run\/wsgi\nWSGIApplicationGroup %{GLOBAL}\n \nWSGIScriptAlias \/dashboard \/usr\/share\/openstack-dashboard\/openstack_dashboard\/wsgi.py\nAlias \/dashboard\/static \/usr\/share\/openstack-dashboard\/static\n \n&lt;Directory \/usr\/share\/openstack-dashboard\/openstack_dashboard\/&gt;\n  Options All\n  AllowOverride All\n  Require all granted\n&lt;\/Directory&gt;\n \n&lt;Directory \/usr\/share\/openstack-dashboard\/static&gt;\n  Options All\n  AllowOverride All\n  Require all granted\n&lt;\/Directory&gt;\n<\/pre><\/div>\n\n\n<p>The only thing left to do is to restart the web server and MemcacheD:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\n&#x5B;root@controller ~]$ systemctl restart httpd.service memcached.service\n<\/pre><\/div>\n\n\n<p>The dashboard is now available at http:\/\/controller\/dashboard:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"622\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack13.png\" alt=\"\" class=\"wp-image-36844\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack13.png 624w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack13-300x300.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack13-150x150.png 150w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack13-400x400.png 400w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>As we did not configure additional domains or users, the login credentials are (if you used the same passwords as in this blog series, the password is &#8220;admin&#8221;):<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"622\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack14.png\" alt=\"\" class=\"wp-image-36845\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack14.png 624w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack14-300x300.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack14-150x150.png 150w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack14-400x400.png 400w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>This will bring you to the &#8220;Overview&#8221; <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"475\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack16-1024x475.png\" alt=\"\" class=\"wp-image-36846\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack16-1024x475.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack16-300x139.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack16-768x356.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack16-1536x713.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack16.png 1806w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>&#8230; and from there you can dive into the various sections and have a look at the currently available components, e.g. you might have a look at the image we&#8217;ve uploaded when we did the setup of <a href=\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-4-the-image-and-placement-services\/\" target=\"_blank\" rel=\"noreferrer noopener\">Glance<\/a> (Image Service):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"475\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack17-1024x475.png\" alt=\"\" class=\"wp-image-36847\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack17-1024x475.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack17-300x139.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack17-768x356.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack17-1536x713.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack17.png 1806w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>&#8230; or the service project we&#8217;ve created previously:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"475\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack18-1024x475.png\" alt=\"\" class=\"wp-image-36849\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack18-1024x475.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack18-300x139.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack18-768x356.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack18-1536x713.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack18.png 1806w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>To finalize this series, here is the complete overview of what we did:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"523\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack19-1024x523.png\" alt=\"\" class=\"wp-image-36851\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack19-1024x523.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack19-300x153.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack19-768x393.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack19.png 1346w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Happy testing with OpenStack.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We&#8217;ve finished the last post with a working Network (Neutron) service on the controller and compute node. In this post we&#8217;ll setup the final service which is Horizon, the OpenStack dashboard. Once more, looking back at what we need at a minimum, we&#8217;ve done most of it by now: Currently, the overview of our playground [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[955,1320,83],"tags":[135,73,957,2602],"type_dbi":[],"class_list":["post-36837","post","type-post","status-publish","format-standard","hentry","category-cloud","category-devops","category-postgresql","tag-cloud","tag-linux","tag-openstack","tag-postgresql-2"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Creating your private cloud using OpenStack \u2013 (7) \u2013 Horizon, the OpenStack dashboard - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Creating your private cloud using OpenStack \u2013 (7) \u2013 Horizon, the OpenStack dashboard\" \/>\n<meta property=\"og:description\" content=\"We&#8217;ve finished the last post with a working Network (Neutron) service on the controller and compute node. In this post we&#8217;ll setup the final service which is Horizon, the OpenStack dashboard. Once more, looking back at what we need at a minimum, we&#8217;ve done most of it by now: Currently, the overview of our playground [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-27T06:01:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1358\" \/>\n\t<meta property=\"og:image:height\" content=\"594\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"Creating your private cloud using OpenStack \u2013 (7) \u2013 Horizon, the OpenStack dashboard\",\"datePublished\":\"2025-01-27T06:01:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/\"},\"wordCount\":367,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1-1024x448.png\",\"keywords\":[\"Cloud\",\"Linux\",\"openstack\",\"postgresql\"],\"articleSection\":[\"Cloud\",\"DevOps\",\"PostgreSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/\",\"name\":\"Creating your private cloud using OpenStack \u2013 (7) \u2013 Horizon, the OpenStack dashboard - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1-1024x448.png\",\"datePublished\":\"2025-01-27T06:01:48+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1.png\",\"width\":1358,\"height\":594},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Creating your private cloud using OpenStack \u2013 (7) \u2013 Horizon, the OpenStack dashboard\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Creating your private cloud using OpenStack \u2013 (7) \u2013 Horizon, the OpenStack dashboard - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/","og_locale":"en_US","og_type":"article","og_title":"Creating your private cloud using OpenStack \u2013 (7) \u2013 Horizon, the OpenStack dashboard","og_description":"We&#8217;ve finished the last post with a working Network (Neutron) service on the controller and compute node. In this post we&#8217;ll setup the final service which is Horizon, the OpenStack dashboard. Once more, looking back at what we need at a minimum, we&#8217;ve done most of it by now: Currently, the overview of our playground [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/","og_site_name":"dbi Blog","article_published_time":"2025-01-27T06:01:48+00:00","og_image":[{"width":1358,"height":594,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1.png","type":"image\/png"}],"author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"Creating your private cloud using OpenStack \u2013 (7) \u2013 Horizon, the OpenStack dashboard","datePublished":"2025-01-27T06:01:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/"},"wordCount":367,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1-1024x448.png","keywords":["Cloud","Linux","openstack","postgresql"],"articleSection":["Cloud","DevOps","PostgreSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/","url":"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/","name":"Creating your private cloud using OpenStack \u2013 (7) \u2013 Horizon, the OpenStack dashboard - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1-1024x448.png","datePublished":"2025-01-27T06:01:48+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/01\/ostack12-1.png","width":1358,"height":594},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/creating-your-private-cloud-using-openstack-7-horizon-the-openstack-dashboard\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Creating your private cloud using OpenStack \u2013 (7) \u2013 Horizon, the OpenStack dashboard"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/36837","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=36837"}],"version-history":[{"count":8,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/36837\/revisions"}],"predecessor-version":[{"id":36852,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/36837\/revisions\/36852"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=36837"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=36837"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=36837"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=36837"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}