<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>João Rocha — Posts</title><description>João Rocha is a DevOps engineer from Portugal writing about Kubernetes, CI/CD, self-hosting, homelab and cloud infrastructure.</description><link>https://joao-rocha.com/</link><language>en</language><item><title>Reduce Memory Usage of Gitlab Server</title><link>https://joao-rocha.com/posts/gitlab-reduce-memory-usage/</link><guid isPermaLink="true">https://joao-rocha.com/posts/gitlab-reduce-memory-usage/</guid><description>How I reduced a self-hosted GitLab server&apos;s memory usage from 8GB to about 3.6GB by tuning Puma, Sidekiq, Prometheus and swap.</description><pubDate>Tue, 30 Sep 2025 00:00:00 GMT</pubDate><category>gitlab</category><category>homelab</category><category>self-hosted</category><category>performance</category></item><item><title>Migrate GCP CloudSQL Between Projects</title><link>https://joao-rocha.com/posts/gcp-migrate-cloudsql-between-projects/</link><guid isPermaLink="true">https://joao-rocha.com/posts/gcp-migrate-cloudsql-between-projects/</guid><description>How to migrate a Google Cloud SQL database between GCP projects using the Cloud SQL Admin API, since there is no direct Web UI or CLI option.</description><pubDate>Tue, 30 Sep 2025 00:00:00 GMT</pubDate><category>gcp</category><category>cloudsql</category><category>migration</category><category>database</category><category>cloud</category></item><item><title>Dump and restore Postgres database using Docker</title><link>https://joao-rocha.com/posts/dump-restore-postgres-docker/</link><guid isPermaLink="true">https://joao-rocha.com/posts/dump-restore-postgres-docker/</guid><description>How to dump and restore a PostgreSQL database using Docker containers, without installing Postgres on your machine.</description><pubDate>Fri, 12 Jan 2024 00:00:00 GMT</pubDate><category>docker</category><category>postgres</category><category>database</category><category>backup</category></item><item><title>Configuring S3 backup for Longhorn</title><link>https://joao-rocha.com/posts/longhorn-backup-s3/</link><guid isPermaLink="true">https://joao-rocha.com/posts/longhorn-backup-s3/</guid><description>A guide on how to configure an S3 backup target (MinIO or Backblaze) for Longhorn on a k3s/Kubernetes cluster.</description><pubDate>Fri, 15 Dec 2023 00:00:00 GMT</pubDate><category>k3s</category><category>k8s</category><category>longhorn</category><category>backup</category><category>s3</category><category>minio</category><category>storage</category></item><item><title>Docker in WSL 2</title><link>https://joao-rocha.com/posts/docker-wsl2/</link><guid isPermaLink="true">https://joao-rocha.com/posts/docker-wsl2/</guid><description>A guide on how to install and run Docker natively in WSL 2 on Windows, without Docker Desktop.</description><pubDate>Sun, 01 Oct 2023 00:00:00 GMT</pubDate><category>wsl2</category><category>windows</category><category>docker</category><category>linux</category></item><item><title>Certbot DNS Challenge</title><link>https://joao-rocha.com/posts/certbot-dns-challenge/</link><guid isPermaLink="true">https://joao-rocha.com/posts/certbot-dns-challenge/</guid><description>A guide on how to use the DNS challenge with Cloudflare and Certbot to issue and renew SSL certificates without stopping NGINX.</description><pubDate>Sat, 30 Sep 2023 00:00:00 GMT</pubDate><category>certbot</category><category>ssl</category><category>linux</category><category>nginx</category><category>cloudflare</category><category>dns</category></item></channel></rss>