

{"id":860,"date":"2025-06-20T18:47:49","date_gmt":"2025-06-20T16:47:49","guid":{"rendered":"https:\/\/blog.koeckeis-fresel.net\/?p=860"},"modified":"2025-06-21T19:57:55","modified_gmt":"2025-06-21T17:57:55","slug":"deploy-bunkerweb-within-minutes-docker","status":"publish","type":"post","link":"https:\/\/blog.koeckeis-fresel.net\/?p=860","title":{"rendered":"Deploy BunkerWeb within minutes (docker on debian 12)"},"content":{"rendered":"\n<p>As you know my servers are hosted at hetzner.de &#8211; <a href=\"https:\/\/blog.koeckeis-fresel.net\/?p=719\" target=\"_blank\" rel=\"noreferrer noopener\">use this Link <\/a><a href=\"https:\/\/hetzner.cloud\/?ref=7NRhCBgXxWdx\" target=\"_blank\" rel=\"noreferrer noopener\">to<\/a><a href=\"https:\/\/blog.koeckeis-fresel.net\/?p=719\" target=\"_blank\" rel=\"noreferrer noopener\"> get a 20\u20ac start credit<\/a> for your first servers.<\/p>\n\n\n\n<p>Now we will install a new virtual server with preparations for BunkerWeb WAF on Hetzner server.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Preparations<\/h2>\n\n\n\n<p>Select Debian 12 as your system!<\/p>\n\n\n\n<p><strong>Use the FQDN as servername! <\/strong><\/p>\n\n\n\n<p><strong>We will check the FQDN before applying for Let&#8217;s Encrypt certificates later!<\/strong><\/p>\n\n\n\n<p>Follow the steps in the Article <a href=\"https:\/\/blog.koeckeis-fresel.net\/?p=719\" target=\"_blank\" rel=\"noreferrer noopener\">How to install a virtual private server hosted by hetzner.de<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cloud-Init<\/h2>\n\n\n\n<p>Use the content of the following script <a href=\"https:\/\/raw.githubusercontent.com\/Michal-Koeckeis-Fresel\/server-deployment\/refs\/heads\/main\/linux\/cloudinit\/cloudinit-BunkerWeb.yaml\" target=\"_blank\" rel=\"noreferrer noopener\">cloudinit-BunkerWeb.yaml<\/a><\/p>\n\n\n\n<p>After the installation the server reboots once and is ready for your BunkerWeb installation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">I already have a server<\/h2>\n\n\n\n<p>Please prepare your system for the next steps<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl https:\/\/raw.githubusercontent.com\/Michal-Koeckeis-Fresel\/server-deployment\/refs\/heads\/main\/linux\/deploy_scripts\/01_deploy_basics.sh | bash<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Install the rest<\/h2>\n\n\n\n<p>After the deployment of the VPS you can connect using SSH. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Install Docker from the official repository<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>curl \"https:\/\/raw.githubusercontent.com\/Michal-Koeckeis-Fresel\/server-deployment\/refs\/heads\/main\/linux\/deploy_scripts\/deploy_docker.sh\" | bash<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Deploy the BunkerWeb basics<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>curl \"https:\/\/raw.githubusercontent.com\/Michal-Koeckeis-Fresel\/server-deployment\/refs\/heads\/main\/linux\/deploy_scripts\/deploy_bunkerweb.sh\" | bash<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Edit the default config<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/root\/BunkerWeb.conf<\/code><\/pre>\n\n\n\n<p>You <strong>MUST<\/strong> edit the email-address in the variable <strong>AUTO_CERT_CONTACT<\/strong>. Otherwise the deployment-script will fail.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Change the directory to \/data\/BunkerWeb\/<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/data\/BunkerWeb\/<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Select the release channel tag<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/script_template_selector.sh<\/code><\/pre>\n\n\n\n<p>Select the release channel tag you want to use. <strong>The stable release is &#8220;latest&#8221;.<\/strong> <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Run the autoconfiguration-script<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/script_autoconf_display.sh --type autoconf<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Inspect the docker-compose.yml<\/h3>\n\n\n\n<p>You can inspect the configuration before running the containers:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat docker-compose.yml<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Start the containers<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d ; docker compose logs -f<\/code><\/pre>\n\n\n\n<p>You will now see the deployment of BunkerWeb.<\/p>\n\n\n\n<p>You can exit the log-viewer with CTRL+C<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Enjoy<\/h2>\n\n\n\n<p>Connect to your instance and use the URL and credentials from the \/data\/BunkerWeb\/credentials.txt file<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> cat \/data\/BunkerWeb\/credentials.txt |grep \"Full UI URL:\"\n cat \/data\/BunkerWeb\/credentials.txt |grep \"Admin Username:\"\n cat \/data\/BunkerWeb\/credentials.txt |grep \"Admin Password:\"<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>As you know my servers are hosted at hetzner.de &#8211; use this Link to get a 20\u20ac start credit for your first servers. Now we will install a new virtual server with preparations for BunkerWeb WAF on Hetzner server. Preparations Select Debian 12 as your system! Use the FQDN as servername! We will check the [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[8,19,1,10],"tags":[41,30,25,39],"class_list":["post-860","post","type-post","status-publish","format-standard","hentry","category-debian","category-deployment-linux","category-general","category-waf","tag-hetzner","tag-linux","tag-tls","tag-waf"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":847,"url":"https:\/\/blog.koeckeis-fresel.net\/?p=847","url_meta":{"origin":860,"position":0},"title":"Install SafeLine WAF on Hetzner VPS even faster with cloud-init script on Debian 12","author":"Michal","date":"2025-06-10","format":false,"excerpt":"As you know my servers are hosted at hetzner.de - use this Link to get a 20\u20ac start credit for your first servers. Now we will install a new virtual server with preparations for SafeLine WAF on Hetzner server. Preparations Select Debian 12 as your system! Follow the steps in\u2026","rel":"","context":"In &quot;debian&quot;","block_context":{"text":"debian","link":"https:\/\/blog.koeckeis-fresel.net\/?cat=8"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":719,"url":"https:\/\/blog.koeckeis-fresel.net\/?p=719","url_meta":{"origin":860,"position":1},"title":"How to install a virtual private server hosted by hetzner.de (get 20\u20ac credit for your first server)","author":"Michal","date":"2025-06-08","format":false,"excerpt":"this is an installation instruction to set up your virtual private server at hetzner.de","rel":"","context":"In &quot;deployment&quot;","block_context":{"text":"deployment","link":"https:\/\/blog.koeckeis-fresel.net\/?cat=16"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":792,"url":"https:\/\/blog.koeckeis-fresel.net\/?p=792","url_meta":{"origin":860,"position":2},"title":"What is a Web Application Firewall (WAF)","author":"Michal","date":"2025-06-09","format":false,"excerpt":"What is a WAF A Web Application Firewall (WAF) is a security tool that monitors, filters, and blocks HTTP\/HTTPS traffic between web applications and the internet. It acts as a protective barrier specifically designed to defend web applications from various cyber attacks. When should I use a WAF - is\u2026","rel":"","context":"In &quot;http&quot;","block_context":{"text":"http","link":"https:\/\/blog.koeckeis-fresel.net\/?cat=2"},"img":{"alt_text":"Traffic flow from client to protected server","src":"https:\/\/i0.wp.com\/blog.koeckeis-fresel.net\/wp-content\/uploads\/WAF-traffic-scaled.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.koeckeis-fresel.net\/wp-content\/uploads\/WAF-traffic-scaled.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.koeckeis-fresel.net\/wp-content\/uploads\/WAF-traffic-scaled.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.koeckeis-fresel.net\/wp-content\/uploads\/WAF-traffic-scaled.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.koeckeis-fresel.net\/wp-content\/uploads\/WAF-traffic-scaled.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.koeckeis-fresel.net\/wp-content\/uploads\/WAF-traffic-scaled.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":838,"url":"https:\/\/blog.koeckeis-fresel.net\/?p=838","url_meta":{"origin":860,"position":3},"title":"How to install SafeLine WAF within minutes","author":"Michal","date":"2025-06-09","format":false,"excerpt":"If you want to install the SafeLine WAF, here are some scripts to speed up your deployment. You must run the script as root as we need to install some packages from the official docker repository. I know - the official SafeLine installer already will install the needed packages. But\u2026","rel":"","context":"In &quot;debian&quot;","block_context":{"text":"debian","link":"https:\/\/blog.koeckeis-fresel.net\/?cat=8"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":880,"url":"https:\/\/blog.koeckeis-fresel.net\/?p=880","url_meta":{"origin":860,"position":4},"title":"HTTPS Certificate Validation: Overview","author":"Michal","date":"2025-07-26","format":false,"excerpt":"When you visit a secure website (HTTPS), your browser needs to verify that the website's security certificate is legitimate and hasn't been compromised. This is like checking if an ID card is still valid and hasn't been reported stolen. There are three main methods websites use to prove their certificates\u2026","rel":"","context":"In &quot;general&quot;","block_context":{"text":"general","link":"https:\/\/blog.koeckeis-fresel.net\/?cat=1"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.koeckeis-fresel.net\/wp-content\/uploads\/comparison_table-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.koeckeis-fresel.net\/wp-content\/uploads\/comparison_table-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.koeckeis-fresel.net\/wp-content\/uploads\/comparison_table-1.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.koeckeis-fresel.net\/index.php?rest_route=\/wp\/v2\/posts\/860","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.koeckeis-fresel.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.koeckeis-fresel.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.koeckeis-fresel.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.koeckeis-fresel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=860"}],"version-history":[{"count":8,"href":"https:\/\/blog.koeckeis-fresel.net\/index.php?rest_route=\/wp\/v2\/posts\/860\/revisions"}],"predecessor-version":[{"id":870,"href":"https:\/\/blog.koeckeis-fresel.net\/index.php?rest_route=\/wp\/v2\/posts\/860\/revisions\/870"}],"wp:attachment":[{"href":"https:\/\/blog.koeckeis-fresel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=860"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.koeckeis-fresel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=860"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.koeckeis-fresel.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=860"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}