<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Infrastructure on Ecostack</title>
    <link>https://ecostack.dev/categories/infrastructure/</link>
    <description>Recent content in Infrastructure on Ecostack</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>© 2026 Sebastian Scheibe</copyright>
    <lastBuildDate>Sun, 30 Mar 2025 16:18:28 +0800</lastBuildDate><atom:link href="https://ecostack.dev/categories/infrastructure/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Setting Up NGINX with Let&#39;s Encrypt for HTTPS in Docker Compose</title>
      <link>https://ecostack.dev/posts/nginx-lets-encrypt-certificate-https-docker-compose/</link>
      <pubDate>Sun, 30 Mar 2025 16:18:28 +0800</pubDate>
      
      <guid>https://ecostack.dev/posts/nginx-lets-encrypt-certificate-https-docker-compose/</guid>
      <description>Introduction #   In this guide, you’ll learn how to set up a secure HTTPS connection for your application using NGINX, Let&amp;rsquo;s Encrypt&amp;rsquo;s Certbot, and Docker Compose.
What is a secure connection (HTTPS)? #   HTTPS (HyperText Transfer Protocol Secure) is an extension of HTTP that uses encryption (SSL/TLS) to secure data exchanged between a web server and browser, ensuring privacy and data integrity.
What is Let&amp;rsquo;s Encrypt? #   Let&amp;rsquo;s Encrypt is a free and automated Certificate Authority that runs to serve the public&amp;rsquo;s benefit.</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ecostack.dev/posts/nginx-lets-encrypt-certificate-https-docker-compose/featured.webp" />
    </item>
    
    <item>
      <title>Find Which Process Is Using a Port on macOS</title>
      <link>https://ecostack.dev/posts/checking-open-ports/</link>
      <pubDate>Tue, 11 Feb 2025 11:41:42 +0800</pubDate>
      
      <guid>https://ecostack.dev/posts/checking-open-ports/</guid>
      <description>Checking Open Ports on Your System #   Need to check which applications are listening on a port? Here’s how you can do it on macOS.
Using lsof #   The lsof command lists process IDs, ports, and network addresses:
lsof -a -PiTCP -sTCP:LISTEN Example output:
lsof -a -PiTCP -sTCP:LISTEN COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rapportd 1063 user 9u IPv4 ... 0t0 TCP *:59797 (LISTEN) ControlCe 1105 user 8u IPv4 .</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ecostack.dev/posts/checking-open-ports/featured.webp" />
    </item>
    
    <item>
      <title>How to Set Up a Process Daemon on Ubuntu Linux with systemd</title>
      <link>https://ecostack.dev/posts/ubuntu-systemd-service-guide/</link>
      <pubDate>Sat, 08 Feb 2025 18:29:41 +0800</pubDate>
      
      <guid>https://ecostack.dev/posts/ubuntu-systemd-service-guide/</guid>
      <description>If you need to run a process as a daemon in Ubuntu, this guide will walk you through the steps to set it up properly using systemd.
Setting Up the Daemon #   Let&amp;rsquo;s assume your executable is named arduino-data-points, and you want to configure it as a daemon under the same name.
I assume the executable is stored here:
/root/arduino-data/arduino-data-points 1. Define the Service #   First, create a service file for systemd.</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ecostack.dev/posts/ubuntu-systemd-service-guide/featured.webp" />
    </item>
    
    <item>
      <title>Load Balancing Docker Compose Replicas Using Nginx</title>
      <link>https://ecostack.dev/posts/load-balancing-docker-compose-replicas-using-nginx/</link>
      <pubDate>Wed, 02 Oct 2024 12:00:09 +0800</pubDate>
      
      <guid>https://ecostack.dev/posts/load-balancing-docker-compose-replicas-using-nginx/</guid>
      <description>Introduction #   This is the second article in a series on how to maximize CPU utilization for single-threaded languages like Node.js and Python. In the previous article, I explored using Docker Swarm, which provides built-in load balancing. You can find that article on Docker Swarm load balancing .
In this article, however, we’ll stick with Docker Compose and look at how to effectively handle load balancing without switching to Docker Swarm.</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ecostack.dev/posts/load-balancing-docker-compose-replicas-using-nginx/featured.webp" />
    </item>
    
    <item>
      <title>Load Balancing Docker Compose Replicas Using Docker Swarm</title>
      <link>https://ecostack.dev/posts/load-balancing-docker-compose-replicas-using-docker-swarm/</link>
      <pubDate>Mon, 23 Sep 2024 10:29:09 +0800</pubDate>
      
      <guid>https://ecostack.dev/posts/load-balancing-docker-compose-replicas-using-docker-swarm/</guid>
      <description>Introduction #   Imagine you are working with Docker Compose and you have deployed your Python or Node.js app with it. You might have noticed that these are usually single-threaded, and you need multiple instances of the same app to make use of the tons of CPU your server has.
When dealing with high traffic or CPU-intensive operations, running multiple replicas of your service is crucial to distribute the load and make full use of your server&amp;rsquo;s resources.</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ecostack.dev/posts/load-balancing-docker-compose-replicas-using-docker-swarm/featured.webp" />
    </item>
    
    <item>
      <title>Seamless Integration: Setting Up Lark Webhooks for Uptime Kuma Notifications</title>
      <link>https://ecostack.dev/posts/lark-webhook-uptime-kuma-setup-guide/</link>
      <pubDate>Fri, 13 Sep 2024 20:31:03 +0800</pubDate>
      
      <guid>https://ecostack.dev/posts/lark-webhook-uptime-kuma-setup-guide/</guid>
      <description>Introduction #   In this article, we will guide you through setting up a Lark webhook to receive notifications from Uptime Kuma, a popular self-hosted monitoring tool. Using Lark for notifications ensures that your team stays informed in real-time about the status of your monitored services, allowing you to respond quickly to any downtime or issues.
Setup Lark Notification Webhook for Group #   Create Group #   Let&amp;rsquo;s create a group in which the notifications will be added.</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ecostack.dev/posts/lark-webhook-uptime-kuma-setup-guide/featured.webp" />
    </item>
    
    <item>
      <title>Free Up Disk Space on Linux: Find Big Files Fast</title>
      <link>https://ecostack.dev/posts/free-up-linux-disk-space/</link>
      <pubDate>Wed, 04 Sep 2024 22:04:57 +0800</pubDate>
      
      <guid>https://ecostack.dev/posts/free-up-linux-disk-space/</guid>
      <description>If your Linux machine&amp;rsquo;s disk is full, you might be wondering which files or directories are consuming the most space. Here is a guide that will help you, in case you have some space left you can use ncdu or otherwise just use find.
NCDU #   If there is some space left on your Linux, I highly recommend using ncdu, here is what the man page has to say:</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ecostack.dev/posts/free-up-linux-disk-space/featured.jpg" />
    </item>
    
    <item>
      <title>Automated Docker Compose Deployment with GitHub Actions</title>
      <link>https://ecostack.dev/posts/automated-docker-compose-deployment-github-actions/</link>
      <pubDate>Tue, 23 Jul 2024 08:57:48 +0800</pubDate>
      
      <guid>https://ecostack.dev/posts/automated-docker-compose-deployment-github-actions/</guid>
      <description>Overview #   This guide will show you how to set up an automatic deployment pipeline using GitHub Actions. This pipeline will connect to a target server via SSH, update the Docker image, and restart the Docker containers. Automatic deployment ensures that your applications are always running the latest code with minimal manual intervention.
Prerequisites #   Before you begin, ensure you have the following:
 Docker installed on the target server.</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ecostack.dev/posts/automated-docker-compose-deployment-github-actions/featured.webp" />
    </item>
    
    <item>
      <title>Limit Docker Log Size to Prevent Disk Exhaustion</title>
      <link>https://ecostack.dev/posts/docker-logging-limitation/</link>
      <pubDate>Tue, 02 Jul 2024 11:00:41 +0800</pubDate>
      
      <guid>https://ecostack.dev/posts/docker-logging-limitation/</guid>
      <description>Introduction #   Ever had the error No space left on device or Cannot create directory? It might be due to logs from your Docker daemon. Here is how you can limit the logs from Docker containers.
Overview of Docker Logging #   Docker logs are essential for debugging and monitoring container applications. However, unmanaged logs can quickly consume disk space, leading to system errors and degraded performance.</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ecostack.dev/posts/docker-logging-limitation/featured.webp" />
    </item>
    
    <item>
      <title>Nginx: Rewrite Path without normalizing URI in proxy_pass</title>
      <link>https://ecostack.dev/posts/nginx-rewrite-path-without-normalizing-uri-using-proxy-pass/</link>
      <pubDate>Mon, 15 Apr 2024 22:57:47 +0800</pubDate>
      
      <guid>https://ecostack.dev/posts/nginx-rewrite-path-without-normalizing-uri-using-proxy-pass/</guid>
      <description>Introduction #   Understanding Nginx&amp;rsquo;s URL rewriting capabilities can significantly enhance your web infrastructure&amp;rsquo;s flexibility and efficiency. This guide will delve into complex rewriting techniques that prevent unwanted URL normalization, which can be crucial for API gateways handling diverse service endpoints.
Original Configuration #   The initial Nginx configuration is set up to handle requests to both the root URL and the /api endpoint differently. Here&amp;rsquo;s how it looks:</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ecostack.dev/posts/nginx-rewrite-path-without-normalizing-uri-using-proxy-pass/featured.webp" />
    </item>
    
    <item>
      <title>Optimizing Nginx Startup: How to Delay DNS Lookup in proxy_pass</title>
      <link>https://ecostack.dev/posts/optimizing-nginx-startup-delay-dns-lookup/</link>
      <pubDate>Mon, 15 Apr 2024 21:11:23 +0800</pubDate>
      
      <guid>https://ecostack.dev/posts/optimizing-nginx-startup-delay-dns-lookup/</guid>
      <description>In Nginx configurations where proxy_pass directives include domain names, startup delays or failures can occur if those domains are unreachable.
You might have seen an error like this:
host not found in upstream &amp;#34;this-domain-does-not.exist&amp;#34; in /etc/nginx/sites-enabled/test.com:18 This issue can significantly slow down the server&amp;rsquo;s response time or prevent Nginx from booting entirely. Fortunately, there&amp;rsquo;s a straightforward workaround to prevent Nginx from performing DNS lookups at startup, thereby improving its initialization speed.</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ecostack.dev/posts/optimizing-nginx-startup-delay-dns-lookup/featured.webp" />
    </item>
    
    <item>
      <title>Mastering OpenTelemetry with Uptrace: A Developer&#39;s Guide</title>
      <link>https://ecostack.dev/posts/mastering-opentelemetry-uptrace-developer-guide/</link>
      <pubDate>Fri, 01 Mar 2024 23:35:48 +0800</pubDate>
      
      <guid>https://ecostack.dev/posts/mastering-opentelemetry-uptrace-developer-guide/</guid>
      <description>Introduction #   Did you ever ask yourself one of these questions?
 What tool can I use for unified log management across my entire application stack? How do I track the performance of individual functions in a microservices architecture? What&amp;rsquo;s the best way to collect metrics from different parts of a distributed system? Is there a standard solution for observing system behavior in cloud-native environments? Which open-source framework can help me in correlating logs, metrics, and traces from various sources?</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ecostack.dev/posts/mastering-opentelemetry-uptrace-developer-guide/featured.webp" />
    </item>
    
    <item>
      <title>Setting Up Nginx with Self-Signed HTTPS in Docker Compose</title>
      <link>https://ecostack.dev/posts/nginx-self-signed-https-docker-compose/</link>
      <pubDate>Mon, 04 Dec 2023 16:48:16 +0800</pubDate>
      
      <guid>https://ecostack.dev/posts/nginx-self-signed-https-docker-compose/</guid>
      <description>Introduction #   In today’s digital age, securing web traffic with HTTPS is crucial for protecting data integrity and privacy. This guide demonstrates how to leverage Nginx, a powerful web server, within Docker Compose to create a secure and scalable environment.
Note: This guide will make use of self-signed certificates. While they provide a layer of security, they are not trusted by default by web browsers and users. For production environments, it&amp;rsquo;s recommended to use certificates issued by a trusted Certificate Authority such as https://letsencrypt.</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ecostack.dev/posts/nginx-self-signed-https-docker-compose/featured.webp" />
    </item>
    
  </channel>
</rss>
