<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Posts on Bitlager Blog</title>
    <link>https://blog.bitlager.de/posts/</link>
    <description>Recent content in Posts on Bitlager Blog</description>
    <generator>Hugo -- 0.145.0</generator>
    <language>en</language>
    <lastBuildDate>Tue, 23 Dec 2025 00:30:00 +0100</lastBuildDate>
    <atom:link href="https://blog.bitlager.de/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Umbrel on Proxmox: Bitcoin Node Data on External SSD</title>
      <link>https://blog.bitlager.de/posts/tech/umbrel-bitcoin-node-external-ssd/</link>
      <pubDate>Tue, 23 Dec 2025 00:30:00 +0100</pubDate>
      <guid>https://blog.bitlager.de/posts/tech/umbrel-bitcoin-node-external-ssd/</guid>
      <description>&lt;p&gt;Running a Bitcoin Full Node requires over ≈800GB of storage. This guide shows you how to keep Umbrel fast on an internal drive while storing blockchain data on an external drive.&lt;/p&gt;
&lt;p&gt;
    
    &lt;input type=&#34;checkbox&#34; id=&#34;zoomCheck-1a75e&#34; hidden&gt;
    &lt;label for=&#34;zoomCheck-1a75e&#34;&gt;
        &lt;img class=&#34;zoomCheck&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; 
            src=&#34;https://blog.bitlager.de/images/bitcoin/umbrel-node-ssd/fujitsu-kingston-node-ssd.jpg#center&#34; alt=&#34;Fujitsu Futro S740 with an external SSD from Kingston&#34; 
             title=&#34;Fujitsu Futro S740 with an external SSD from Kingston&#34;  /&gt;
    &lt;/label&gt;&lt;/p&gt;
&lt;h2 id=&#34;requirements&#34;&gt;Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Homeserver with Proxmox and Umbrel VM installed&lt;/li&gt;
&lt;li&gt;External USB drive (2TB SSD recommended)
&lt;ul&gt;
&lt;li&gt;Used in this tutorial: &lt;a href=&#34;https://amzlink.to/az0lq5v5jGrlb&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;🛒 Kingston XS2000 2TB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cheaper alternative: &lt;a href=&#34;https://amzlink.to/az0vZG4teOdNM&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;🛒 Kingston XS1000 2TB&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;proxmox-setup&#34;&gt;Proxmox Setup&lt;/h2&gt;
&lt;p&gt;For these steps, I followed the &lt;a href=&#34;https://youtu.be/tKD-dgSKBxU?si=786fRuFYCshwBaZb&amp;amp;t=30&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;video by @absprog&lt;/a&gt; on YouTube.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Energy Storage Comparison: Hoymiles MS-A2 versus Marstek Venus C</title>
      <link>https://blog.bitlager.de/posts/tech/hoymiles-ms-a2-vs-marstek-venus-c/</link>
      <pubDate>Tue, 01 Jul 2025 00:30:00 +0100</pubDate>
      <guid>https://blog.bitlager.de/posts/tech/hoymiles-ms-a2-vs-marstek-venus-c/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Info&lt;/strong&gt;: This article will be gradually enriched with additional information. The conclusion refers to the current state of knowledge of the characteristics compiled in the article.&lt;/p&gt;
&lt;p&gt;The top models among AC-coupled storage systems: The &lt;a href=&#34;https://amzn.to/46ipIbI&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Hoymiles MS-A2*&lt;/a&gt; and the &lt;a href=&#34;https://amzn.to/4l4GrDV&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Marstek Venus C*&lt;/a&gt;. Both storage systems can be excellently integrated into an existing balcony power plant. In this article, you&amp;rsquo;ll learn what distinguishes them and where their strengths lie.&lt;/p&gt;
&lt;h2 id=&#34;key-specifications-hoymiles-ms-a2-and-marstek-venus-c&#34;&gt;Key Specifications: Hoymiles MS-A2 and Marstek Venus C&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;strong&gt;Specification&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;strong&gt;Hoymiles MS-A2&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;strong&gt;Marstek Venus C&lt;/strong&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Capacity&lt;/td&gt;
          &lt;td&gt;2.24kWh&lt;/td&gt;
          &lt;td&gt;2.56kWh&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Cell Type&lt;/td&gt;
          &lt;td&gt;LiFePO4&lt;/td&gt;
          &lt;td&gt;LiFePO4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Weight&lt;/td&gt;
          &lt;td&gt;32kg&lt;/td&gt;
          &lt;td&gt;45kg&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Max. Input Power (AC)&lt;/td&gt;
          &lt;td&gt;1800W&lt;/td&gt;
          &lt;td&gt;2500W&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Max. Output Power (grid-tied)&lt;/td&gt;
          &lt;td&gt;800W&lt;/td&gt;
          &lt;td&gt;800W (2500W possible)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Max. Output Power (off-grid)&lt;/td&gt;
          &lt;td&gt;800W (briefly: 1200W)&lt;/td&gt;
          &lt;td&gt;2500W (briefly: 3500W)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Smart Meter&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://amzn.to/4klEkup*&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Shelly Pro 3EM*&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://amzn.to/4klEkup*&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Shelly Pro 3EM*&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Even more characteristics and comparison with many other storage systems can be found in the comprehensive &lt;a href=&#34;https://blog.bitlager.de/de/posts/tech/balkonkraftwerk-speicher-vergleich&#34;&gt;📑 Balcony Power Plant Storage Comparison (in German) as PDF&lt;/a&gt; right here on the blog.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bitaxe Gamma: Solo Mining with a Chance of finding 3.125 BTC</title>
      <link>https://blog.bitlager.de/posts/tech/bitaxe-gamma-bitcoin-miner/</link>
      <pubDate>Sat, 05 Apr 2025 00:30:00 +0100</pubDate>
      <guid>https://blog.bitlager.de/posts/tech/bitaxe-gamma-bitcoin-miner/</guid>
      <description>Discover the Bitaxe Gamma: Open source Bitcoin miner with a chance of finding 3.125 BTC, Noctua upgrade tips, and solar mining with AxeCalibur.</description>
    </item>
    <item>
      <title>AxeCalibur: Off-Grid Solar-Bitcoin-Mining – Guide &amp; Parts for Europe</title>
      <link>https://blog.bitlager.de/posts/tech/bitcoin-miner-axecalibur-eu-build/</link>
      <pubDate>Tue, 01 Apr 2025 00:30:00 +0100</pubDate>
      <guid>https://blog.bitlager.de/posts/tech/bitcoin-miner-axecalibur-eu-build/</guid>
      <description>Discover the AxeCalibur: DIY Bitcoin mining with solar energy! A replica of the AxeBox, parts list for Europe, 24/7 mining with BitAxe Gamma – sustainable &amp;amp; unstoppable!</description>
    </item>
    <item>
      <title>Buy Bitcoin or Mine It? A Plebday Experiment</title>
      <link>https://blog.bitlager.de/posts/tech/bitcoin-buy-vs-miner-buy/</link>
      <pubDate>Thu, 27 Mar 2025 00:30:00 +0100</pubDate>
      <guid>https://blog.bitlager.de/posts/tech/bitcoin-buy-vs-miner-buy/</guid>
      <description>Buy Bitcoin or get a miner like the Bitaxe Gamma? I’m starting an experiment with €130 for BTC and €130 for a miner – here’s the comparison.</description>
    </item>
    <item>
      <title>Mikrotik Back to Home Wireguard Setup</title>
      <link>https://blog.bitlager.de/posts/tech/mikrotik-back-to-home-wireguard-setup/</link>
      <pubDate>Mon, 20 Nov 2023 22:00:30 +0100</pubDate>
      <guid>https://blog.bitlager.de/posts/tech/mikrotik-back-to-home-wireguard-setup/</guid>
      <description>&lt;p&gt;In a recent article I already showed the configuration of a &lt;a href=&#34;https://blog.bitlager.de/en/posts/tech/mikrotik-wireguard-roadwarrior-setup-android&#34;&gt;Wireguard setup for Mikrotik routers and Android&lt;/a&gt;(&lt;a href=&#34;https://blog.bitlager.de/posts/tech/mikrotik-wireguard-roadwarrior-setup-android&#34;&gt;EN&lt;/a&gt;) devices. With RouterOS version v7.12, this is now even easier to do, as &lt;a href=&#34;https://mikrotik.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Mikrotik&lt;/a&gt; has announced in a &lt;a href=&#34;https://forum.mikrotik.com/viewtopic.php?t=198231#p1016150&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;forum post&lt;/a&gt; the new &amp;ldquo;Back to Home VPN&amp;rdquo; feature, which builds on a standalone app for &lt;a href=&#34;https://play.google.com/store/apps/details?id=com.mikrotik.android.freevpn&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Android&lt;/a&gt; and &lt;a href=&#34;https://apps.apple.com/lv/app/mikrotik-back-to-home/id6450679198&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;iOS&lt;/a&gt; as support, making setup much easier.&lt;/p&gt;
&lt;h2 id=&#34;requirements&#34;&gt;Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;RouterOS version required: v7.12&lt;/li&gt;
&lt;li&gt;Hardware requirements: ARM/ARM64/TILE architecture devices
&lt;ul&gt;
&lt;li&gt;🛒 &lt;a href=&#34;https://amzlink.to/az0UEyICLKDcq&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;MikroTik hAP ax2 C52iG-5HaxD2HaxD-TC*&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🛒 &lt;a href=&#34;https://amzlink.to/az0F2lcVYu7vq&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;MikroTik hAP ax3 C53UiG+5HPaxD2HPaxD*&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Packages required: routeros&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(&lt;a href=&#34;https://help.mikrotik.com/docs/display/ROS/Back&amp;#43;To&amp;#43;Home&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Source&lt;/a&gt;)&lt;/p&gt;</description>
    </item>
    <item>
      <title>VPN Mikrotik WireGuard Roadwarrior Setup Android</title>
      <link>https://blog.bitlager.de/posts/tech/mikrotik-wireguard-roadwarrior-setup-android/</link>
      <pubDate>Mon, 25 Sep 2023 00:30:00 +0100</pubDate>
      <guid>https://blog.bitlager.de/posts/tech/mikrotik-wireguard-roadwarrior-setup-android/</guid>
      <description>&lt;p&gt;In this article, I want to share how I set up a VPN connection via WireGuard between my MikroTik router and my Android phone. This VPN connection allows me to securely access my home network from anywhere in the world. &lt;a href=&#34;https://help.mikrotik.com/docs/display/ROS/WireGuard#WireGuard-RoadWarriorWireGuardtunnel&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;MikroTik documentation&lt;/a&gt; used for this guide.&lt;/p&gt;
&lt;h2 id=&#34;wireguard-vpn-setup-on-the-mikrotik-router&#34;&gt;WireGuard VPN Setup on the MikroTik Router&lt;/h2&gt;
&lt;h3 id=&#34;a-quick--easy-without-own-domain&#34;&gt;a) Quick &amp;amp; Easy (without own domain)&lt;/h3&gt;
&lt;p&gt;In this quick and easy setup, the MikroTik´s own DDNS (Dynamic DNS) service is used. This can be activated in the terminal (&lt;a href=&#34;https://help.mikrotik.com/docs/display/ROS/Cloud&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;source&lt;/a&gt;):&lt;/p&gt;</description>
    </item>
    <item>
      <title>UPDATE: Best travel (credit) card(s) in 2023 - Barclays versus Wise</title>
      <link>https://blog.bitlager.de/posts/travel/travel-credit-card-comparisson/</link>
      <pubDate>Sat, 15 Jul 2023 13:40:00 +0200</pubDate>
      <guid>https://blog.bitlager.de/posts/travel/travel-credit-card-comparisson/</guid>
      <description>&lt;h2 id=&#34;update-2024-barclays-has-updated-its-price-list-with-effect-from-07122023-and-the-conditions-mentioned-here-in-the-article-no-longer-match&#34;&gt;UPDATE (2024): Barclays has updated its price list with effect from 07.12.2023 and the conditions mentioned here in the article no longer match.&lt;/h2&gt;
&lt;h2 id=&#34;a-travel-credit-card-comparison---is-there-only-one-sitting-on-the-throne&#34;&gt;A travel (credit) card comparison - is there only one sitting on the throne?&lt;/h2&gt;
&lt;p&gt;Traveling is fun and one of the purposes of life and spending money is generally a part of it.
This guidline is based on my experiences and answers the question &amp;ldquo;&lt;strong&gt;if there is one single best (credit) card for travelling?&lt;/strong&gt;&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>*UPDATE* Reduce Energy Usage: How to Automatically Turn Off Your MikroTik Router&#39;s Wi-Fi Interfaces at Night</title>
      <link>https://blog.bitlager.de/posts/tech/mikrotik-router-schedule-wifi-save-energy/</link>
      <pubDate>Tue, 25 Apr 2023 18:00:00 +0100</pubDate>
      <guid>https://blog.bitlager.de/posts/tech/mikrotik-router-schedule-wifi-save-energy/</guid>
      <description>&lt;h2 id=&#34;disable-wi-fi-over-night-to-save-energy&#34;&gt;Disable Wi-Fi Over Night to Save Energy&lt;/h2&gt;
&lt;p&gt;This article is the first in a series where I will be discussing various topics related to MikroTik devices and their configuration.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been looking for ways to save energy and I recently discovered that turning off the Wi-Fi interfaces on my MikroTik hAP ax^3 (C53UiG+5HPaxD2HPaxD) router at night can make a difference. I used to leave my router on 24/7, but by turning off the Wi-Fi interfaces during hours when I&amp;rsquo;m not using them, I&amp;rsquo;m not only reducing my energy consumption and lowering my electricity bill, but I&amp;rsquo;m also doing my part to be more environmentally friendly. It&amp;rsquo;s a small change, but it&amp;rsquo;s an easy and effective way to make a positive impact on the planet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>*UPDATE* ServiceNow: Complete List of Syntax Editor Macros</title>
      <link>https://blog.bitlager.de/posts/servicenow/complete-list-of-syntax-editor-macros/</link>
      <pubDate>Thu, 20 Apr 2023 09:00:00 +0100</pubDate>
      <guid>https://blog.bitlager.de/posts/servicenow/complete-list-of-syntax-editor-macros/</guid>
      <description>&lt;h2 id=&#34;syntax-editor-macros-in-servicenow&#34;&gt;Syntax Editor Macros in ServiceNow&lt;/h2&gt;
&lt;p&gt;Script macros provide shortcuts for typing commonly used code. To insert macro text into a script field, enter the macro keyword followed by the Tab &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h3 id=&#34;secret-servicenow-macro&#34;&gt;Secret ServiceNow Macro&lt;/h3&gt;
&lt;p&gt;There is a hidden macro in ServiceNow&amp;rsquo;s script editor called &amp;ldquo;&lt;strong&gt;help&lt;/strong&gt;&amp;rdquo;, which fetches a list of available Script Macros from the &amp;ldquo;syntax_editor_macro&amp;rdquo; table and displays their name and comment in the script editor, allowing users to quickly reference and use the out-of-the-box macros.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Examples for Hugo Gallery Shortcode</title>
      <link>https://blog.bitlager.de/posts/tech/hugo-gallery-shortcode-example/</link>
      <pubDate>Thu, 01 Jan 1970 00:30:00 +0100</pubDate>
      <guid>https://blog.bitlager.de/posts/tech/hugo-gallery-shortcode-example/</guid>
      <description>&lt;h2 id=&#34;gallery-with-3-images&#34;&gt;Gallery with 3 images&lt;/h2&gt;
&lt;h3 id=&#34;first-gallery&#34;&gt;First gallery&lt;/h3&gt;
&lt;style&gt;
    .image-gallery {
        overflow: auto;
        margin-left: -1% !important;
    }

    .image-gallery li {
        float: left;
        display: block;
        margin: 0 0 1% 1%;
    }

    .image-gallery[data-count=&#34;2&#34;] li {
        width: 49%;
    }

    .image-gallery[data-count=&#34;3&#34;] li {
        width: 32%;
    }

    .image-gallery[data-count=&#34;4&#34;] li {
        width: 24%;
    }

    .image-gallery[data-count=&#34;5&#34;] li {
        width: 19%;
    }

    .post-content .image-gallery a {
        box-shadow: none;
        box-decoration-break: none;
        -webkit-box-decoration-break: none;
    }

    .image-gallery li a {
        text-align: center;
        text-decoration: none;
        color: #777;
        display: block;
    }

    .image-gallery li a span {
        display: block;
        text-overflow: ellipsis;
        overflow: hidden;
        white-space: nowrap;
        padding: 3px 0;
    }

    .image-gallery li a img {
        width: 100%;
        aspect-ratio: 1 / 1;
        display: block;
        border-radius: 8px;
        object-fit: cover;
        background: #f5f5f5;
        transition: transform 0.3s ease;
    }

    .image-gallery li a:hover img {
        transform: scale(1.01);
    }

    .simple-lightbox {
        display: none;
        position: fixed;
        z-index: 999;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: rgba(0, 0, 0, 0.9);
    }

    .simple-lightbox.active {
        display: flex;
        justify-content: center;
        align-items: center;
    }

    .lightbox-content {
        position: relative;
        max-width: 90%;
        max-height: 90vh;
    }

    .lightbox-content img {
        max-width: 100%;
        max-height: 90vh;
        object-fit: contain;
    }

    .lightbox-caption {
        position: absolute;
        bottom: -60px;
        left: 0;
        right: 0;
        color: white;
        text-align: center;
        padding: 10px;
    }

    .lightbox-close {
        position: absolute;
        top: 20px;
        right: 20px;
        color: white;
        font-size: 30px;
        cursor: pointer;
        width: 30px;
        height: 30px;
        line-height: 30px;
        text-align: center;
    }

    .lightbox-nav {
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        color: white;
        font-size: 30px;
        cursor: pointer;
        padding: 20px;
        user-select: none;
    }

    .lightbox-prev {
        left: 20px;
    }

    .lightbox-next {
        right: 20px;
    }
&lt;/style&gt;



&lt;div class=&#34;simple-lightbox&#34; id=&#34;simple-lightbox-gallery-49a5b11077ae441f9a5c85c7d0f031859528bcff&#34;&gt;
    &lt;div class=&#34;lightbox-content&#34;&gt;
        &lt;img src=&#34;&#34; alt=&#34;&#34;&gt;
        &lt;div class=&#34;lightbox-caption&#34;&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&#34;lightbox-close&#34;&gt;&amp;times;&lt;/div&gt;
    &lt;div class=&#34;lightbox-nav lightbox-prev&#34;&gt;&amp;lt;&lt;/div&gt;
    &lt;div class=&#34;lightbox-nav lightbox-next&#34;&gt;&amp;gt;&lt;/div&gt;
&lt;/div&gt;

&lt;ul class=&#34;image-gallery&#34; id=&#34;image-gallery-gallery-49a5b11077ae441f9a5c85c7d0f031859528bcff&#34;&gt;
    
    
    
    
    
    
    
    
    
    

    
    &lt;li&gt;
        &lt;a href=&#34;https://blog.bitlager.de/images/example/1%20Custom%20Caption.jpeg&#34; title=&#34;1 Custom Caption&#34; class=&#34;gallery-image&#34;
            data-caption=&#34;1 Custom Caption&#34;&gt;
            &lt;img src=&#34;https://blog.bitlager.de/images/example/1%20Custom%20Caption.jpeg&#34; alt=&#34;1 Custom Caption&#34; title=&#34;1 Custom Caption&#34;&gt;
            &lt;span&gt;1 Custom Caption&lt;/span&gt;
        &lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href=&#34;https://blog.bitlager.de/images/example/2-This-is-a-caption.jpeg&#34; title=&#34;2-This-is-a-caption&#34; class=&#34;gallery-image&#34;
            data-caption=&#34;2-This-is-a-caption&#34;&gt;
            &lt;img src=&#34;https://blog.bitlager.de/images/example/2-This-is-a-caption.jpeg&#34; alt=&#34;2-This-is-a-caption&#34; title=&#34;2-This-is-a-caption&#34;&gt;
            &lt;span&gt;2-This-is-a-caption&lt;/span&gt;
        &lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href=&#34;https://blog.bitlager.de/images/example/3%20Naming%20defines%20order.jpeg&#34; title=&#34;3 Naming defines order&#34; class=&#34;gallery-image&#34;
            data-caption=&#34;3 Naming defines order&#34;&gt;
            &lt;img src=&#34;https://blog.bitlager.de/images/example/3%20Naming%20defines%20order.jpeg&#34; alt=&#34;3 Naming defines order&#34; title=&#34;3 Naming defines order&#34;&gt;
            &lt;span&gt;3 Naming defines order&lt;/span&gt;
        &lt;/a&gt;
    &lt;/li&gt;
    
    
&lt;/ul&gt;

&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function () {
        const lightbox = document.querySelector(&#39;#simple-lightbox-gallery-49a5b11077ae441f9a5c85c7d0f031859528bcff&#39;);
        const lightboxImg = lightbox.querySelector(&#39;img&#39;);
        const lightboxCaption = lightbox.querySelector(&#39;.lightbox-caption&#39;);
        const gallery = document.querySelector(&#39;#image-gallery-gallery-49a5b11077ae441f9a5c85c7d0f031859528bcff&#39;);
        let currentIndex = 0;
        let images = [];

        
        const imageCount = gallery.querySelectorAll(&#39;.gallery-image&#39;).length;
        gallery.setAttribute(&#39;data-count&#39;, imageCount.toString());

        
        gallery.querySelectorAll(&#39;.gallery-image&#39;).forEach((link, index) =&gt; {
            images.push({
                src: link.href,
                title: link.getAttribute(&#39;data-caption&#39;)
            });

            link.addEventListener(&#39;click&#39;, (e) =&gt; {
                e.preventDefault();
                currentIndex = index;
                showImage(currentIndex);
            });
        });

        function showImage(index) {
            lightboxImg.src = images[index].src;
            lightboxCaption.textContent = images[index].title;
            lightbox.classList.add(&#39;active&#39;);
        }

        lightbox.querySelector(&#39;.lightbox-close&#39;).addEventListener(&#39;click&#39;, () =&gt; {
            lightbox.classList.remove(&#39;active&#39;);
        });

        lightbox.querySelector(&#39;.lightbox-prev&#39;).addEventListener(&#39;click&#39;, () =&gt; {
            currentIndex = (currentIndex - 1 + images.length) % images.length;
            showImage(currentIndex);
        });

        lightbox.querySelector(&#39;.lightbox-next&#39;).addEventListener(&#39;click&#39;, () =&gt; {
            currentIndex = (currentIndex + 1) % images.length;
            showImage(currentIndex);
        });

        document.addEventListener(&#39;keydown&#39;, (e) =&gt; {
            if (!lightbox.classList.contains(&#39;active&#39;)) return;

            if (e.key === &#39;Escape&#39;) {
                lightbox.classList.remove(&#39;active&#39;);
            } else if (e.key === &#39;ArrowLeft&#39;) {
                currentIndex = (currentIndex - 1 + images.length) % images.length;
                showImage(currentIndex);
            } else if (e.key === &#39;ArrowRight&#39;) {
                currentIndex = (currentIndex + 1) % images.length;
                showImage(currentIndex);
            }
        });

        lightbox.addEventListener(&#39;click&#39;, (e) =&gt; {
            if (e.target === lightbox) {
                lightbox.classList.remove(&#39;active&#39;);
            }
        });
    });
&lt;/script&gt;
&lt;h3 id=&#34;second-gallery&#34;&gt;Second gallery&lt;/h3&gt;
&lt;style&gt;
    .image-gallery {
        overflow: auto;
        margin-left: -1% !important;
    }

    .image-gallery li {
        float: left;
        display: block;
        margin: 0 0 1% 1%;
    }

    .image-gallery[data-count=&#34;2&#34;] li {
        width: 49%;
    }

    .image-gallery[data-count=&#34;3&#34;] li {
        width: 32%;
    }

    .image-gallery[data-count=&#34;4&#34;] li {
        width: 24%;
    }

    .image-gallery[data-count=&#34;5&#34;] li {
        width: 19%;
    }

    .post-content .image-gallery a {
        box-shadow: none;
        box-decoration-break: none;
        -webkit-box-decoration-break: none;
    }

    .image-gallery li a {
        text-align: center;
        text-decoration: none;
        color: #777;
        display: block;
    }

    .image-gallery li a span {
        display: block;
        text-overflow: ellipsis;
        overflow: hidden;
        white-space: nowrap;
        padding: 3px 0;
    }

    .image-gallery li a img {
        width: 100%;
        aspect-ratio: 1 / 1;
        display: block;
        border-radius: 8px;
        object-fit: cover;
        background: #f5f5f5;
        transition: transform 0.3s ease;
    }

    .image-gallery li a:hover img {
        transform: scale(1.01);
    }

    .simple-lightbox {
        display: none;
        position: fixed;
        z-index: 999;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: rgba(0, 0, 0, 0.9);
    }

    .simple-lightbox.active {
        display: flex;
        justify-content: center;
        align-items: center;
    }

    .lightbox-content {
        position: relative;
        max-width: 90%;
        max-height: 90vh;
    }

    .lightbox-content img {
        max-width: 100%;
        max-height: 90vh;
        object-fit: contain;
    }

    .lightbox-caption {
        position: absolute;
        bottom: -60px;
        left: 0;
        right: 0;
        color: white;
        text-align: center;
        padding: 10px;
    }

    .lightbox-close {
        position: absolute;
        top: 20px;
        right: 20px;
        color: white;
        font-size: 30px;
        cursor: pointer;
        width: 30px;
        height: 30px;
        line-height: 30px;
        text-align: center;
    }

    .lightbox-nav {
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        color: white;
        font-size: 30px;
        cursor: pointer;
        padding: 20px;
        user-select: none;
    }

    .lightbox-prev {
        left: 20px;
    }

    .lightbox-next {
        right: 20px;
    }
&lt;/style&gt;



&lt;div class=&#34;simple-lightbox&#34; id=&#34;simple-lightbox-gallery-6d118b487789e2bffdd0b20fcbeb866da062010a&#34;&gt;
    &lt;div class=&#34;lightbox-content&#34;&gt;
        &lt;img src=&#34;&#34; alt=&#34;&#34;&gt;
        &lt;div class=&#34;lightbox-caption&#34;&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&#34;lightbox-close&#34;&gt;&amp;times;&lt;/div&gt;
    &lt;div class=&#34;lightbox-nav lightbox-prev&#34;&gt;&amp;lt;&lt;/div&gt;
    &lt;div class=&#34;lightbox-nav lightbox-next&#34;&gt;&amp;gt;&lt;/div&gt;
&lt;/div&gt;

&lt;ul class=&#34;image-gallery&#34; id=&#34;image-gallery-gallery-6d118b487789e2bffdd0b20fcbeb866da062010a&#34;&gt;
    
    
    
    
    
    
    
    
    
    

    
    &lt;li&gt;
        &lt;a href=&#34;https://blog.bitlager.de/images/example2/1%20Custom%20Caption.jpeg&#34; title=&#34;1 Custom Caption&#34; class=&#34;gallery-image&#34;
            data-caption=&#34;1 Custom Caption&#34;&gt;
            &lt;img src=&#34;https://blog.bitlager.de/images/example2/1%20Custom%20Caption.jpeg&#34; alt=&#34;1 Custom Caption&#34; title=&#34;1 Custom Caption&#34;&gt;
            &lt;span&gt;1 Custom Caption&lt;/span&gt;
        &lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href=&#34;https://blog.bitlager.de/images/example2/2-This-is-a-caption.jpeg&#34; title=&#34;2-This-is-a-caption&#34; class=&#34;gallery-image&#34;
            data-caption=&#34;2-This-is-a-caption&#34;&gt;
            &lt;img src=&#34;https://blog.bitlager.de/images/example2/2-This-is-a-caption.jpeg&#34; alt=&#34;2-This-is-a-caption&#34; title=&#34;2-This-is-a-caption&#34;&gt;
            &lt;span&gt;2-This-is-a-caption&lt;/span&gt;
        &lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href=&#34;https://blog.bitlager.de/images/example2/3%20Naming%20defines%20order.jpeg&#34; title=&#34;3 Naming defines order&#34; class=&#34;gallery-image&#34;
            data-caption=&#34;3 Naming defines order&#34;&gt;
            &lt;img src=&#34;https://blog.bitlager.de/images/example2/3%20Naming%20defines%20order.jpeg&#34; alt=&#34;3 Naming defines order&#34; title=&#34;3 Naming defines order&#34;&gt;
            &lt;span&gt;3 Naming defines order&lt;/span&gt;
        &lt;/a&gt;
    &lt;/li&gt;
    
    
&lt;/ul&gt;

&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function () {
        const lightbox = document.querySelector(&#39;#simple-lightbox-gallery-6d118b487789e2bffdd0b20fcbeb866da062010a&#39;);
        const lightboxImg = lightbox.querySelector(&#39;img&#39;);
        const lightboxCaption = lightbox.querySelector(&#39;.lightbox-caption&#39;);
        const gallery = document.querySelector(&#39;#image-gallery-gallery-6d118b487789e2bffdd0b20fcbeb866da062010a&#39;);
        let currentIndex = 0;
        let images = [];

        
        const imageCount = gallery.querySelectorAll(&#39;.gallery-image&#39;).length;
        gallery.setAttribute(&#39;data-count&#39;, imageCount.toString());

        
        gallery.querySelectorAll(&#39;.gallery-image&#39;).forEach((link, index) =&gt; {
            images.push({
                src: link.href,
                title: link.getAttribute(&#39;data-caption&#39;)
            });

            link.addEventListener(&#39;click&#39;, (e) =&gt; {
                e.preventDefault();
                currentIndex = index;
                showImage(currentIndex);
            });
        });

        function showImage(index) {
            lightboxImg.src = images[index].src;
            lightboxCaption.textContent = images[index].title;
            lightbox.classList.add(&#39;active&#39;);
        }

        lightbox.querySelector(&#39;.lightbox-close&#39;).addEventListener(&#39;click&#39;, () =&gt; {
            lightbox.classList.remove(&#39;active&#39;);
        });

        lightbox.querySelector(&#39;.lightbox-prev&#39;).addEventListener(&#39;click&#39;, () =&gt; {
            currentIndex = (currentIndex - 1 + images.length) % images.length;
            showImage(currentIndex);
        });

        lightbox.querySelector(&#39;.lightbox-next&#39;).addEventListener(&#39;click&#39;, () =&gt; {
            currentIndex = (currentIndex + 1) % images.length;
            showImage(currentIndex);
        });

        document.addEventListener(&#39;keydown&#39;, (e) =&gt; {
            if (!lightbox.classList.contains(&#39;active&#39;)) return;

            if (e.key === &#39;Escape&#39;) {
                lightbox.classList.remove(&#39;active&#39;);
            } else if (e.key === &#39;ArrowLeft&#39;) {
                currentIndex = (currentIndex - 1 + images.length) % images.length;
                showImage(currentIndex);
            } else if (e.key === &#39;ArrowRight&#39;) {
                currentIndex = (currentIndex + 1) % images.length;
                showImage(currentIndex);
            }
        });

        lightbox.addEventListener(&#39;click&#39;, (e) =&gt; {
            if (e.target === lightbox) {
                lightbox.classList.remove(&#39;active&#39;);
            }
        });
    });
&lt;/script&gt;
&lt;h3 id=&#34;stacked-gallery&#34;&gt;Stacked gallery&lt;/h3&gt;
&lt;style&gt;
    .stacked-image-gallery {
        position: relative;
        max-width: 400px;
        min-height: 400px;
        margin: 0 auto;
        padding: 20px 0 420px 0;
    }.stacked-image-gallery li {
    list-style: none;
    position: absolute;
    width: 80%;
    max-width: 300px;
    transition: transform 0.3s ease, z-index 0.3s ease;
}

.stacked-image-gallery li:nth-child(1) {
    transform: rotate(2deg) translate(0, 0);
    z-index: 1;
}

.stacked-image-gallery li:nth-child(2) {
    transform: rotate(-3deg) translate(10px, 5px);
    z-index: 2;
}

.stacked-image-gallery li:nth-child(3) {
    transform: rotate(4deg) translate(-10px, 10px);
    z-index: 3;
}

.stacked-image-gallery li:nth-child(4) {
    transform: rotate(-2deg) translate(15px, -5px);
    z-index: 4;
}

.stacked-image-gallery li:nth-child(5) {
    transform: rotate(5deg) translate(-5px, 15px);
    z-index: 5;
}

.stacked-image-gallery li:hover {
    transform: scale(1.1) translateY(-20px);
    z-index: 10;
}

.stacked-image-gallery li a {
    display: block;
    text-decoration: none;
    color: #777;
    background: #fff;
    padding: 10px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
    border-radius: 4px;
}

.stacked-image-gallery li a img {
    width: 100%;
    aspect-ratio: 1 / 1;
    display: block;
    border-radius: 4px;
    object-fit: cover;
    background: #f5f5f5;
}

.stacked-image-gallery li a span {
    display: block;
    text-align: center;
    text-overflow: ellipsis;
    overflow: hidden;
    white-space: nowrap;
    padding: 5px 0;
    font-size: 14px;
}

.simple-lightbox {
    display: none;
    position: fixed;
    z-index: 999;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.9);
}

.simple-lightbox.active {
    display: flex;
    justify-content: center;
    align-items: center;
}

.lightbox-content {
    position: relative;
    max-width: 90%;
    max-height: 90vh;
}

.lightbox-content img {
    max-width: 100%;
    max-height: 90vh;
    object-fit: contain;
}

.lightbox-caption {
    position: absolute;
    bottom: -60px;
    left: 0;
    right: 0;
    color: white;
    text-align: center;
    padding: 10px;
}

.lightbox-close {
    position: absolute;
    top: 20px;
    right: 20px;
    color: white;
    font-size: 30px;
    cursor: pointer;
    width: 30px;
    height: 30px;
    line-height: 30px;
    text-align: center;
}

.lightbox-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    color: white;
    font-size: 30px;
    cursor: pointer;
    padding: 20px;
    user-select: none;
}

.lightbox-prev {
    left: 20px;
}

.lightbox-next {
    right: 20px;
}&lt;/style&gt;
&lt;div class=&#34;simple-lightbox&#34; id=&#34;simple-lightbox-stacked-gallery-49a5b11077ae441f9a5c85c7d0f031859528bcff&#34;&gt;
    &lt;div class=&#34;lightbox-content&#34;&gt;
        &lt;img src=&#34;&#34; alt=&#34;&#34;&gt;
        &lt;div class=&#34;lightbox-caption&#34;&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&#34;lightbox-close&#34;&gt;&amp;times;&lt;/div&gt;
    &lt;div class=&#34;lightbox-nav lightbox-prev&#34;&gt;&amp;lt;&lt;/div&gt;
    &lt;div class=&#34;lightbox-nav lightbox-next&#34;&gt;&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;ul class=&#34;stacked-image-gallery&#34; id=&#34;stacked-image-gallery-stacked-gallery-49a5b11077ae441f9a5c85c7d0f031859528bcff&#34;&gt;
    
    
    
    
    
    
    
    
    
    

&lt;li&gt;
    &lt;a href=&#34;https://blog.bitlager.de/images/example/1%20Custom%20Caption.jpeg&#34; title=&#34;1 Custom Caption&#34; class=&#34;gallery-image&#34;
        data-caption=&#34;1 Custom Caption&#34;&gt;
        &lt;img src=&#34;https://blog.bitlager.de/images/example/1%20Custom%20Caption.jpeg&#34; alt=&#34;1 Custom Caption&#34; title=&#34;1 Custom Caption&#34;&gt;
        &lt;span&gt;1 Custom Caption&lt;/span&gt;
    &lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;https://blog.bitlager.de/images/example/2-This-is-a-caption.jpeg&#34; title=&#34;2-This-is-a-caption&#34; class=&#34;gallery-image&#34;
        data-caption=&#34;2-This-is-a-caption&#34;&gt;
        &lt;img src=&#34;https://blog.bitlager.de/images/example/2-This-is-a-caption.jpeg&#34; alt=&#34;2-This-is-a-caption&#34; title=&#34;2-This-is-a-caption&#34;&gt;
        &lt;span&gt;2-This-is-a-caption&lt;/span&gt;
    &lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;https://blog.bitlager.de/images/example/3%20Naming%20defines%20order.jpeg&#34; title=&#34;3 Naming defines order&#34; class=&#34;gallery-image&#34;
        data-caption=&#34;3 Naming defines order&#34;&gt;
        &lt;img src=&#34;https://blog.bitlager.de/images/example/3%20Naming%20defines%20order.jpeg&#34; alt=&#34;3 Naming defines order&#34; title=&#34;3 Naming defines order&#34;&gt;
        &lt;span&gt;3 Naming defines order&lt;/span&gt;
    &lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;script&gt;
    document.addEventListener(&#39;DOMContentLoaded&#39;, function () {
        const lightbox = document.querySelector(&#39;#simple-lightbox-stacked-gallery-49a5b11077ae441f9a5c85c7d0f031859528bcff&#39;);
        const lightboxImg = lightbox.querySelector(&#39;img&#39;);
        const lightboxCaption = lightbox.querySelector(&#39;.lightbox-caption&#39;);
        const gallery = document.querySelector(&#39;#stacked-image-gallery-stacked-gallery-49a5b11077ae441f9a5c85c7d0f031859528bcff&#39;);
        let currentIndex = 0;
        let images = [];

        
        gallery.querySelectorAll(&#39;.gallery-image&#39;).forEach((link, index) =&gt; {
            images.push({
                src: link.href,
                title: link.getAttribute(&#39;data-caption&#39;)
            });

            link.addEventListener(&#39;click&#39;, (e) =&gt; {
                e.preventDefault();
                currentIndex = index;
                showImage(currentIndex);
            });
        });

        function showImage(index) {
            lightboxImg.src = images[index].src;
            lightboxCaption.textContent = images[index].title;
            lightbox.classList.add(&#39;active&#39;);
        }

        lightbox.querySelector(&#39;.lightbox-close&#39;).addEventListener(&#39;click&#39;, () =&gt; {
            lightbox.classList.remove(&#39;active&#39;);
        });

        lightbox.querySelector(&#39;.lightbox-prev&#39;).addEventListener(&#39;click&#39;, () =&gt; {
            currentIndex = (currentIndex - 1 + images.length) % images.length;
            showImage(currentIndex);
        });

        lightbox.querySelector(&#39;.lightbox-next&#39;).addEventListener(&#39;click&#39;, () =&gt; {
            currentIndex = (currentIndex + 1) % images.length;
            showImage(currentIndex);
        });

        document.addEventListener(&#39;keydown&#39;, (e) =&gt; {
            if (!lightbox.classList.contains(&#39;active&#39;)) return;

            if (e.key === &#39;Escape&#39;) {
                lightbox.classList.remove(&#39;active&#39;);
            } else if (e.key === &#39;ArrowLeft&#39;) {
                currentIndex = (currentIndex - 1 + images.length) % images.length;
                showImage(currentIndex);
            } else if (e.key === &#39;ArrowRight&#39;) {
                currentIndex = (currentIndex + 1) % images.length;
                showImage(currentIndex);
            }
        });

        lightbox.addEventListener(&#39;click&#39;, (e) =&gt; {
            if (e.target === lightbox) {
                lightbox.classList.remove(&#39;active&#39;);
            }
        });
    });
&lt;/script&gt;
&lt;p&gt;&lt;strong&gt;SOURCE&lt;/strong&gt;: &lt;a href=&#34;https://github.com/thisdev/hugo-gallery-shortcode&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Github&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
