<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Docker on Servicios Rogeliowar</title><link>https://blog.serviciosrogeliowar.com/en/tags/docker/</link><description>Recent content in Docker on Servicios Rogeliowar</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 Rogelio Guerra Riverón</copyright><lastBuildDate>Fri, 22 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.serviciosrogeliowar.com/en/tags/docker/index.xml" rel="self" type="application/rss+xml"/><item><title>Wazuh SIEM with Docker: complete deployment with SSL and compliance rules</title><link>https://blog.serviciosrogeliowar.com/en/posts/wazuh-siem-docker-ssl-cumplimiento/</link><pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/en/posts/wazuh-siem-docker-ssl-cumplimiento/</guid><description>&lt;h2 class="relative group"&gt;What is ENS and Why It Matters
 &lt;div id="what-is-ens-and-why-it-matters" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-is-ens-and-why-it-matters" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;&lt;a href="https://ens.ccn.cni.es/" target="_blank" rel="noreferrer"&gt;National Security Framework (ENS)&lt;/a&gt;&lt;/strong&gt; is the mandatory cybersecurity regulatory framework for Spanish Public Administrations and private companies that provide services to them. It is regulated by the &lt;a href="https://www.boe.es/eli/es/rd/2022/05/03/311" target="_blank" rel="noreferrer"&gt;Royal Decree 311/2022&lt;/a&gt; and establishes the principles, requirements, and security measures that must be applied to information systems that handle public data or services.&lt;/p&gt;</description></item><item><title>Migrate Grafana and Listmonk to centralized PostgreSQL in Docker</title><link>https://blog.serviciosrogeliowar.com/en/posts/migrar-grafana-y-listmonk-a-postgresql-centralizado-en-docker/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/en/posts/migrar-grafana-y-listmonk-a-postgresql-centralizado-en-docker/</guid><description>&lt;h2 class="relative group"&gt;The initial problem
 &lt;div id="the-initial-problem" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-initial-problem" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;I had Grafana and Listmonk running in Docker containers, each with its own embedded PostgreSQL instance. This worked, but it was inefficient: two database engines consuming resources and no centralized way to do backups. I decided to consolidate everything into a single shared PostgreSQL instance.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Preparation: setting up central PostgreSQL
 &lt;div id="preparation-setting-up-central-postgresql" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#preparation-setting-up-central-postgresql" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;The first step was to create the PostgreSQL server that would be the central point. I did this with a dedicated docker-compose:&lt;/p&gt;</description></item><item><title>VPN with Wireguard in Docker: Secure access to internal services without exposing ports</title><link>https://blog.serviciosrogeliowar.com/en/posts/vpn-con-wireguard-en-docker-acceso-seguro-a-servicios-internos-sin-exponer-puertos/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/en/posts/vpn-con-wireguard-en-docker-acceso-seguro-a-servicios-internos-sin-exponer-puertos/</guid><description>&lt;h2 class="relative group"&gt;Why you need this
 &lt;div id="why-you-need-this" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-you-need-this" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;A few months ago I faced a common problem: I wanted to access my internal services (Jellyfin, Home Assistant, etc.) from outside my home, but I didn&amp;rsquo;t want to expose them directly on the internet. Opening ports is an unnecessary risk. The solution was to set up a VPN with Wireguard in Docker. It was the best decision I made for my home infrastructure.&lt;/p&gt;</description></item><item><title>Monitoring Docker containers with Prometheus and Grafana: automatic alerts at home</title><link>https://blog.serviciosrogeliowar.com/en/posts/monitorizacion-de-contenedores-docker-con-prometheus-y-grafana-alertas-automaticas-en-casa/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/en/posts/monitorizacion-de-contenedores-docker-con-prometheus-y-grafana-alertas-automaticas-en-casa/</guid><description>&lt;h2 class="relative group"&gt;The Problem
 &lt;div id="the-problem" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-problem" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;After spending months running containers on my home server, I got tired of discovering issues when things were already broken. A container consuming all the memory. A volume full with no warning. I needed real visibility into what was happening in my infrastructure.&lt;/p&gt;
&lt;p&gt;I decided to implement a monitoring stack with Prometheus and Grafana. Here I document exactly how I did it.&lt;/p&gt;</description></item><item><title>Automatic backups with rsync and cron for home Docker</title><link>https://blog.serviciosrogeliowar.com/en/posts/backups-automaticos-con-rsync-y-cron-para-docker-domestico/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/en/posts/backups-automaticos-con-rsync-y-cron-para-docker-domestico/</guid><description>&lt;h2 class="relative group"&gt;The Problem
 &lt;div id="the-problem" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-problem" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Recently I lost a hard drive without warning. It wasn&amp;rsquo;t catastrophic because I had backups, but it made me aware that many hobbyists with home servers have no data protection strategy at all. If your Docker server crashes tomorrow, how long would it take you to recover it?&lt;/p&gt;
&lt;p&gt;In this article I share how I automated backups of my Docker infrastructure using rsync and cron. It&amp;rsquo;s simple, efficient, and it works.&lt;/p&gt;</description></item><item><title>Environment variables with special characters in Docker Compose: the dollar sign problem and how to recreate containers</title><link>https://blog.serviciosrogeliowar.com/en/posts/variables-de-entorno-con-caracteres-especiales-en-docker-compose-el-problema-del-dollar-y-como-recrear-contenedores/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/en/posts/variables-de-entorno-con-caracteres-especiales-en-docker-compose-el-problema-del-dollar-y-como-recrear-contenedores/</guid><description>&lt;h2 class="relative group"&gt;The Real Problem
 &lt;div id="the-real-problem" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-real-problem" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve been running services on my home server with Docker Compose for months. Recently I tried setting a password with special characters in my &lt;code&gt;.env&lt;/code&gt; file. The password was something like &lt;code&gt;Pass$word123!@&lt;/code&gt;. When starting the containers, the variable arrived empty or malformed. After investigating, I discovered that Docker Compose was interpreting the &lt;code&gt;$&lt;/code&gt; as a reference to another variable.&lt;/p&gt;</description></item><item><title>The hidden cost of --reload in uvicorn: what actually consumes CPU in production</title><link>https://blog.serviciosrogeliowar.com/en/posts/el-coste-oculto-de---reload-en-uvicorn-que-consume-cpu-realmente-en-produccion/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/en/posts/el-coste-oculto-de---reload-en-uvicorn-que-consume-cpu-realmente-en-produccion/</guid><description>&lt;h2 class="relative group"&gt;The Problem Nobody Sees
 &lt;div id="the-problem-nobody-sees" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-problem-nobody-sees" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Two months ago I deployed a FastAPI API to production and the server was behaving strangely. CPU stable at 40-50% for no apparent reason. I thought it was a memory leak, that it was the logs, that it was the database. It was &lt;code&gt;--reload&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It turns out that copy-pasting the development command directly into the Docker container is more common than it should be. And yes, uvicorn with &lt;code&gt;--reload&lt;/code&gt; works. The server responds. Requests go fast. But there&amp;rsquo;s a cost you don&amp;rsquo;t see until you have 10K requests daily.&lt;/p&gt;</description></item><item><title>CI/CD with local GitLab Runner to automatically deploy a Hugo blog</title><link>https://blog.serviciosrogeliowar.com/en/posts/cicd-con-gitlab-runner-local-para-desplegar-automaticamente-un-blog-hugo/</link><pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/en/posts/cicd-con-gitlab-runner-local-para-desplegar-automaticamente-un-blog-hugo/</guid><description>&lt;h2 class="relative group"&gt;Introduction
 &lt;div id="introduction" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#introduction" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Tired of manually deploying my Hugo blog every time I publish an article. I decided to set up a local CI/CD pipeline with GitLab Runner. The result: automatic, reliable, and without depending on external services.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Prerequisites
 &lt;div id="prerequisites" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#prerequisites" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;You need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A server with Docker installed&lt;/li&gt;
&lt;li&gt;A repository on GitLab (can be self-hosted or gitlab.com)&lt;/li&gt;
&lt;li&gt;Hugo installed locally for testing&lt;/li&gt;
&lt;li&gt;SSH access configured on your server&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Installing GitLab Runner
 &lt;div id="installing-gitlab-runner" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#installing-gitlab-runner" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;First, install GitLab Runner on your server. I did it on Docker because I already had the daemon running.&lt;/p&gt;</description></item><item><title>Complete monitoring with Prometheus, Grafana and Loki: metrics, logs and Docker containers</title><link>https://blog.serviciosrogeliowar.com/en/posts/monitoring-prometheus-grafana-loki/</link><pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/en/posts/monitoring-prometheus-grafana-loki/</guid><description>&lt;p&gt;A server without monitoring is a blind server. You don&amp;rsquo;t know when the disk fills up, which container is consuming too much RAM, or how many 404 requests your web is generating. This article documents how I configured the complete stack: &lt;a href="https://prometheus.io/" target="_blank" rel="noreferrer"&gt;Prometheus&lt;/a&gt; + &lt;a href="https://github.com/prometheus/node_exporter" target="_blank" rel="noreferrer"&gt;Node Exporter&lt;/a&gt; + &lt;a href="https://grafana.com/" target="_blank" rel="noreferrer"&gt;Grafana&lt;/a&gt; + &lt;a href="https://grafana.com/oss/loki/" target="_blank" rel="noreferrer"&gt;Loki&lt;/a&gt; + &lt;a href="https://grafana.com/docs/loki/latest/send-data/promtail/" target="_blank" rel="noreferrer"&gt;Promtail&lt;/a&gt;.&lt;/p&gt;

&lt;h2 class="relative group"&gt;The architecture
 &lt;div id="the-architecture" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-architecture" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[Servidor doméstico]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├── node-exporter → métricas del sistema (CPU, RAM, disco, red)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├── docker-stats- → métricas de contenedores (textfile collector)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; │ collector
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├── prometheus → recolecta y almacena métricas
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├── loki → agrega y almacena logs
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├── promtail → envía logs de Nginx y syslog a Loki
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── grafana → dashboards de todo lo anterior&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;All services run in Docker, coordinated by the same &lt;code&gt;docker-compose.yml&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Configure Traefik v2.11 as a reverse proxy with Docker and automatic HTTPS with Let's Encrypt</title><link>https://blog.serviciosrogeliowar.com/en/posts/configurar-traefik-v211-como-reverse-proxy-con-docker-y-https-automatico-con-lets-encrypt/</link><pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/en/posts/configurar-traefik-v211-como-reverse-proxy-con-docker-y-https-automatico-con-lets-encrypt/</guid><description>&lt;h2 class="relative group"&gt;Introduction
 &lt;div id="introduction" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#introduction" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;After months of using nginx manually, I decided to switch to Traefik. The reason is simple: managing SSL certificates for each new service is tedious. Traefik automates all of that with integrated Let&amp;rsquo;s Encrypt. Here&amp;rsquo;s my actual configuration.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Why Traefik
 &lt;div id="why-traefik" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-traefik" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;With Traefik you don&amp;rsquo;t need to reload nginx every time you add a container. It automatically detects Docker services, generates SSL certificates on demand, and redirects traffic. All declarative.&lt;/p&gt;</description></item><item><title>Emergency replica: how to have your home server backed up on a VPS</title><link>https://blog.serviciosrogeliowar.com/en/posts/replica-emergencia-vps/</link><pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/en/posts/replica-emergencia-vps/</guid><description>&lt;p&gt;Having a server at home has an obvious weak point: if the power goes out, the router fails, or the disk dies, your website disappears. The solution is to have a replica in the cloud ready to activate in minutes.&lt;/p&gt;

&lt;h2 class="relative group"&gt;The architecture
 &lt;div id="the-architecture" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-architecture" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[servidor-casa] → rsync cada 6h → [VPS réplica]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; servicios activos réplica en espera
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; TTL DNS: 5 min Uptime Kuma vigilando&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The home server pushes content to the VPS every 6 hours. If the server goes down, I change the DNS and in 5 minutes the VPS serves the site.&lt;/p&gt;</description></item><item><title>How to set up your own web infrastructure at home with Docker and Traefik: from zero to automatic HTTPS</title><link>https://blog.serviciosrogeliowar.com/en/posts/como-montar-tu-propia-infraestructura-web-en-casa-con-docker-y-traefik-desde-cero-hasta-https-automatico/</link><pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/en/posts/como-montar-tu-propia-infraestructura-web-en-casa-con-docker-y-traefik-desde-cero-hasta-https-automatico/</guid><description>&lt;h2 class="relative group"&gt;Introduction
 &lt;div id="introduction" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#introduction" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;A few months ago I decided to stop using expensive cloud services and set up my own infrastructure at home. The solution I found was combining Docker with Traefik. It works well and now I have several services running under HTTPS without manually touching a certificate. I&amp;rsquo;ll tell you how I did it.&lt;/p&gt;

&lt;h2 class="relative group"&gt;What you need
 &lt;div id="what-you-need" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-you-need" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;A server with Docker installed (any Linux machine with 2GB of RAM is enough). Your own domain. A bit of patience with DNS. That&amp;rsquo;s it.&lt;/p&gt;</description></item><item><title>WireGuard VPN: Access your home server from anywhere</title><link>https://blog.serviciosrogeliowar.com/en/posts/wireguard-vpn-servidor-dom%C3%A9stico/</link><pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/en/posts/wireguard-vpn-servidor-dom%C3%A9stico/</guid><description>&lt;p&gt;One of the classic problems with having a server at home is secure remote access. Opening SSH ports directly to the world is a bad idea — you see it in the auth logs: hundreds of attempts per day. The elegant solution is a VPN, and &lt;a href="https://www.wireguard.com/" target="_blank" rel="noreferrer"&gt;WireGuard&lt;/a&gt; is today&amp;rsquo;s best available option.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Why WireGuard?
 &lt;div id="why-wireguard" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-wireguard" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Compared to &lt;a href="https://openvpn.net/" target="_blank" rel="noreferrer"&gt;OpenVPN&lt;/a&gt; or IPSec:&lt;/p&gt;</description></item><item><title>How This Blog Was Born</title><link>https://blog.serviciosrogeliowar.com/en/posts/bienvenida/</link><pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/en/posts/bienvenida/</guid><description>&lt;p&gt;This blog was born from a real process.&lt;/p&gt;
&lt;p&gt;I had a domain, a home server, and the desire to build something of my own. Instead of following a generic tutorial, I decided to document exactly what I was doing — errors included.&lt;/p&gt;

&lt;h2 class="relative group"&gt;What you&amp;rsquo;ll find here
 &lt;div id="what-youll-find-here" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-youll-find-here" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Articles about what I&amp;rsquo;m building and learning:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux server configuration&lt;/li&gt;
&lt;li&gt;Service deployment with Docker&lt;/li&gt;
&lt;li&gt;Networks, DNS, and security&lt;/li&gt;
&lt;li&gt;Automation and infrastructure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No shortcuts, no simplifications. Real process, documented step by step.&lt;/p&gt;</description></item></channel></rss>