{"id":223,"date":"2025-09-12T15:54:21","date_gmt":"2025-09-12T15:54:21","guid":{"rendered":"https:\/\/asimali.com\/wp\/?p=223"},"modified":"2025-09-25T13:28:11","modified_gmt":"2025-09-25T13:28:11","slug":"cobbler-web-ui-deployment-guide-podman-systemd","status":"publish","type":"post","link":"https:\/\/asimali.com\/wp\/2025\/09\/12\/cobbler-web-ui-deployment-guide-podman-systemd\/","title":{"rendered":"Cobbler Web UI Deployment Guide (Podman + systemd)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Official info here: <a href=\"https:\/\/github.com\/cobbler\/cobbler-web\">https:\/\/github.com\/cobbler\/cobbler-web<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cobbler server and cobbler web are two separate products, so separately installed. This guide assumes you have cobbler server running already.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This guide shows how to run cobbler-web using Podman, but there are other ways to run it, consult official guide for more info. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Create local config File<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Create a local JSON file that defines the Cobbler API endpoint, replace the IP with your cobbler server IP or fqdn:<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-9c096f1be592a4db539fb0454b775fff\" style=\"padding-top:0;padding-right:var(--wp--preset--spacing--10);padding-bottom:0;padding-left:var(--wp--preset--spacing--10)\"><code>cat &gt; .\/app-config.json &lt;&lt;EOF\n{ \"cobblerUrls\": &#91;\"http:\/\/192.168.100.20\/cobbler_api\"] }\nEOF<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Make sure the file is readable:<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-388385cd2babb460b9f36d968f9ce6bc\" style=\"padding-top:0;padding-bottom:0\"><code>chmod 644 .\/app-config.json<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Pull the Cobbler Web Container Image<\/h3>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-8f548a378fea4984c287a12f6ee5e0fa\" style=\"padding-top:0;padding-bottom:0\"><code>podman pull ghcr.io\/cobbler\/cobbler-web:v0.0.1-rc2<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Run the Container<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Check and fix the path for &#8216;\/home\/sysadmin\/app-config.json&#8217;. Start the container with port mapping and volume mount:<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-456660c47bca02bfda9509979c1a1da1\" style=\"padding-top:0;padding-right:var(--wp--preset--spacing--10);padding-bottom:0;padding-left:var(--wp--preset--spacing--10)\"><code>podman run -d \\\n--name cobbler-web \\\n-p 8080:80 \\\n-v .\/app-config.json:\/usr\/share\/nginx\/html\/assets\/configs\/app-config.json:ro \\\n-v .\/app-config.json:\/usr\/share\/nginx\/html\/app-config.json:ro \\\nghcr.io\/cobbler\/cobbler-web:v0.0.1-rc2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Access the web UI at: <code>http:\/\/&lt;your-server-ip&gt;:8080<\/code><br>Make sure its working<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Generate a systemd Unit for Autostart<\/h3>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-51c2547200bf893e0b088f5ba9a126e5\" style=\"padding-top:0;padding-right:var(--wp--preset--spacing--10);padding-bottom:0;padding-left:var(--wp--preset--spacing--10)\"><code>podman generate systemd --name cobbler-web --files --restart-policy=always<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This generates a file named <code>container-cobbler-web.service<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Install the systemd Unit<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Move the generated unit file to the system directory:<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-dd8adc171a0400401db561c75629b146\" style=\"padding-top:0;padding-right:var(--wp--preset--spacing--10);padding-bottom:0;padding-left:var(--wp--preset--spacing--10)\"><code>mv container-cobbler-web.service \/etc\/systemd\/system\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Reload systemd to recognize the new unit:<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-99dc199bf0c57dffb06439028662faef\" style=\"padding-top:0;padding-bottom:0\"><code>systemctl daemon-reexec<br>systemctl daemon-reload<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Stop and Remove Container (Optional)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In next step, systemd will create and start the container, so you might want to stop and remove the running container.<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-b2655d850cf0fed03758b13566fda153\" style=\"padding-top:0;padding-right:var(--wp--preset--spacing--10);padding-bottom:0;padding-left:var(--wp--preset--spacing--10)\"><code>podman stop cobbler-web<br>podman rm cobbler-web<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7: Enable and Start the Service<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Enable the service to start on boot:<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-8417173bf4f5b7397744ff2dbe2ced95\" style=\"padding-top:0;padding-right:var(--wp--preset--spacing--10);padding-bottom:0;padding-left:var(--wp--preset--spacing--10)\"><code>systemctl enable container-cobbler-web.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Start the service immediately:<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-21efe8781820c0ad6e572a83a2582d13\" style=\"padding-top:0;padding-right:var(--wp--preset--spacing--10);padding-bottom:0;padding-left:var(--wp--preset--spacing--10)\"><code>systemctl start container-cobbler-web.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Check its status:<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-2a823f89f57685cfe64aa8e71468522b\" style=\"padding-top:0;padding-right:var(--wp--preset--spacing--10);padding-bottom:0;padding-left:var(--wp--preset--spacing--10)\"><code>systemctl status container-cobbler-web.service<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Final Check<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Visit <code>http:\/\/&lt;your-server-ip&gt;:8080<\/code> in your browser. You should see the Cobbler Web UI, now running and managed by systemd!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Official info here: https:\/\/github.com\/cobbler\/cobbler-web Cobbler server and cobbler web are two separate products, so separately installed. This guide assumes you have cobbler server running already. This guide shows how to run cobbler-web using Podman, but there are other ways to run it, consult official guide for more info. Step 1: Create local config File Create [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-223","post","type-post","status-publish","format-standard","hentry","category-cobbler"],"_links":{"self":[{"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/posts\/223","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/comments?post=223"}],"version-history":[{"count":3,"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/posts\/223\/revisions"}],"predecessor-version":[{"id":227,"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/posts\/223\/revisions\/227"}],"wp:attachment":[{"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/media?parent=223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/categories?post=223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/tags?post=223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}