{"id":1570,"date":"2023-11-30T16:47:05","date_gmt":"2023-11-30T16:47:05","guid":{"rendered":"https:\/\/www.hammerdb.com\/blog\/?p=1570"},"modified":"2023-11-30T16:47:05","modified_gmt":"2023-11-30T16:47:05","slug":"deploy-hammerdb-as-a-web-application-with-cloudtk","status":"publish","type":"post","link":"https:\/\/www.hammerdb.com\/blog\/uncategorized\/deploy-hammerdb-as-a-web-application-with-cloudtk\/","title":{"rendered":"Deploy HammerDB as a Web Application with CloudTK"},"content":{"rendered":"<p>From HammerDB v4.9 it is possible to deploy HammerDB through a web browser, giving you access to a fully functional HammerDB GUI in Cloud environments.<\/p>\n<p>The quickest way to run HammerDB with CloudTk is through Docker and in this post will we demonstrate how to pull the HammerDB CloudTK Docker image and run it to start running HammerDB through your chosen browser.<\/p>\n<p>Firstly, pull the Docker image:<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">$ sudo docker pull tpcorg\/hammerdb:latest-cloudtk\r\nlatest-cloudtk: Pulling from tpcorg\/hammerdb\r\n96d54c3075c9: Pull complete\r\n96261b8fec13: Pull complete\r\nd2c2e5928320: Pull complete\r\n4f4fb700ef54: Pull complete\r\n0dcebfea4cd0: Pull complete\r\n4fea0d72408b: Pull complete\r\n4d35a83249fa: Pull complete\r\na20f97744e61: Pull complete\r\n181fc9db3bb2: Pull complete\r\n442899704ccd: Pull complete\r\nDigest: sha256:a73903ba354f9a7f826a69e2e1f3f8b3523220927323d0ba913efe168917ec02\r\nStatus: Downloaded newer image for tpcorg\/hammerdb:latest-cloudtk\r\ndocker.io\/tpcorg\/hammerdb:latest-cloudtk<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>And then run it. If you want access to functionality such as CPU metrics then you should use the &#8211;net-host option.<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">$ sudo docker run --net=host --name hammerdb-cloudtk tpcorg\/hammerdb:latest-cloudtk\r\ncan't find package limit\r\nRunning with default file descriptor limit\r\n\/debug user \"debug\" password \"sycu4xfc.gcw\"\r\nhttpd started on port 8081\r\nsecure httpd started on SSL port 8082<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>Otherwise, you can only expose the ports as needed, as follows.<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">  docker run -p 8081:8081 -p 8082:8082 -p 8080:8080 --name hammerdb-cloudtk hammerdb:cloudtk<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>Once running, you can connect to the port 8081 for an unencrypted connection. Once connected, click on the launcher link.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1575\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk1.png\" alt=\"\" width=\"525\" height=\"521\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk1.png 757w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk1-300x298.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk1-150x150.png 150w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk1-100x100.png 100w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<p>If preferred, you can connect to an encrypted connection on port 8082. By default, sample self-signed certificates are installed, and these should be replaced by your own certificates.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/selfsign.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1580\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/selfsign.png\" alt=\"\" width=\"777\" height=\"295\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/selfsign.png 777w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/selfsign-300x114.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/selfsign-768x292.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Whichever connection method is used, click Submit Query on the HammerDB-CloudTK application.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1576\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk2.png\" alt=\"\" width=\"525\" height=\"521\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk2.png 757w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk2-300x298.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk2-150x150.png 150w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk2-100x100.png 100w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<p>HammerDB will then run fully contained within the browser.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1577\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk3.png\" alt=\"\" width=\"525\" height=\"521\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk3.png 757w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk3-300x298.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk3-150x150.png 150w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk3-100x100.png 100w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<p>You can change viewing options with the settings on the left of the screen.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1578\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk4.png\" alt=\"\" width=\"525\" height=\"521\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk4.png 757w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk4-300x298.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk4-150x150.png 150w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtk4-100x100.png 100w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<p>You can now use HammerDB exactly as you would do with the GUI displayed on a local display.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1585\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg.png\" alt=\"\" width=\"915\" height=\"827\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg.png 915w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg-300x271.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg-768x694.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>The GUI can also be used for functionality to monitor your databases such as the PostgreSQL metrics.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1586\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg2.png\" alt=\"\" width=\"532\" height=\"481\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg2.png 915w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg2-300x271.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg2-768x694.png 768w\" sizes=\"auto, (max-width: 532px) 100vw, 532px\" \/><\/a><\/p>\n<p>The drag and drop functionality of these windows can be activated by dragging the tab to the title bar of the main HammerDB window.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1587\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg3.png\" alt=\"\" width=\"534\" height=\"483\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg3.png 915w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg3-300x271.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkpg3-768x694.png 768w\" sizes=\"auto, (max-width: 534px) 100vw, 534px\" \/><\/a><\/p>\n<p>It is also possible to start the HammerDB Web service from within the container by using the Jobs Options dialog to view the statistics from the jobs you have run.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1588\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob.png\" alt=\"\" width=\"535\" height=\"484\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob.png 915w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob-300x271.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob-768x694.png 768w\" sizes=\"auto, (max-width: 535px) 100vw, 535px\" \/><\/a><\/p>\n<p>Confirm that the web service is running.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1589\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob2.png\" alt=\"\" width=\"534\" height=\"483\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob2.png 915w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob2-300x271.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob2-768x694.png 768w\" sizes=\"auto, (max-width: 534px) 100vw, 534px\" \/><\/a><\/p>\n<p>and then connect to the web service on port 8080 using another tab in your browser. You can then view the charts related to the workloads you have run.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1590\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob3.png\" alt=\"\" width=\"532\" height=\"481\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob3.png 915w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob3-300x271.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/cloudtkjob3-768x694.png 768w\" sizes=\"auto, (max-width: 532px) 100vw, 532px\" \/><\/a><\/p>\n<p>Finally, when you have finished with your HammerDB session use the tab on the left to disconnect.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/disconnect.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1591\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/disconnect.png\" alt=\"\" width=\"533\" height=\"482\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/disconnect.png 915w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/disconnect-300x271.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/11\/disconnect-768x694.png 768w\" sizes=\"auto, (max-width: 533px) 100vw, 533px\" \/><\/a><\/p>\n<p>HammerDB with CloudTk provides you with the option to deploy the HammerDB GUI as a web application. In this post we have demonstrated the easiest way to do this with Docker, however you can also deploy CloudTK within any HammerDB for Linux installation as described in the <a href=\"https:\/\/github.com\/sm-shaw\/CloudTk\">readme<\/a> on the HammerDB CloudTK repository.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>From HammerDB v4.9 it is possible to deploy HammerDB through a web browser, giving you access to a fully functional HammerDB GUI in Cloud environments. The quickest way to run HammerDB with CloudTk is through Docker and in this post will we demonstrate how to pull the HammerDB CloudTK Docker image and run it to &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.hammerdb.com\/blog\/uncategorized\/deploy-hammerdb-as-a-web-application-with-cloudtk\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Deploy HammerDB as a Web Application with CloudTK&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"ppma_author":[5],"class_list":["post-1570","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"authors":[{"term_id":5,"user_id":2,"is_guest":0,"slug":"hammerdb","display_name":"HammerDB","avatar_url":{"url":"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2018\/10\/logo-white.png","url2x":"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2018\/10\/logo-white.png"},"author_category":"","user_url":"http:\/\/www.hammerdb.com","last_name":"","first_name":"","job_title":"","description":""}],"_links":{"self":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/comments?post=1570"}],"version-history":[{"count":14,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1570\/revisions"}],"predecessor-version":[{"id":1597,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1570\/revisions\/1597"}],"wp:attachment":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/media?parent=1570"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/categories?post=1570"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/tags?post=1570"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=1570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}