Posts for: #Technical

Self-Hosted GitHub Action Runner on Kubernetes

I recently set up a self-hosted GitHub Action Runner on Kubernetes using the Action Runner Controller, aiming for more control over my CI/CD pipeline. This involved configuring Kubernetes with DNS, ingress, and microk8s, and securing my private Docker registry with TLS and a custom Certificate Authority.

Create GitHub App and Secrets

On your repository, go to Developer settings and create and install a GitHub App. You will obtain the necessary details for creating a Kubernetes secret:

Read More

SSH in Visual Studio Code with KeePass

Remote SSH extension in Visual Studio Code allows you to directly edit files on a Linux machine and access the Linux console from your Windows workstation. For the best comfort when accessing a remote SSH server from Visual Studio Code, use KeePass with KeeAgent, which works as an SSH agent. Why Use KeePass and KeeAgent?

Read More

WebSocket Connection to WireGuard

In some countries (e.g. Egypt) or some hotels, VPN connections are blocked and the only possibility is to tunnel them through WebSocket. In this article, I will focus on that.

Read More

How I Used HashiCorp Vault and External Secrets Operator

When building a Kubernetes deployment for an application using MySQL, I initially considered using a ConfigMap to store my database connection details. However, I quickly ran into a problem: ConfigMaps are not designed for sensitive data like passwords, and more importantly, I was using Argo CD for GitOps.

Read More

RPI Zero Ethernet Gadget Mode

Using USB Gadget Mode on Raspberry Pi Zero for SSH/RDP Access on Windows 11

The Raspberry Pi Zero is a versatile device that can be configured to act as a USB Ethernet gadget, allowing you to connect to it via SSH or RDP over a single USB cable. This is especially useful when you want a direct network connection without additional hardware. In this article, we will guide you through setting up the Pi Zero in USB gadget mode and installing the necessary Windows 11 drivers for seamless connectivity.

Read More

Loki, Promtail and Syslog

On my home server, I was slowly getting annoyed that I didn’t really have an idea of what was happening in the syslog, and when an application, for example, throws an Out of memory error, I simply don’t know about it. That’s why I decided to send syslog to Promtail, which pushes it to Loki (Grafana) and processes it.

Read More

Outdated library in my scraper

Today I discovered that a container in my home Kubernetes crashed, which is responsible for downloading the price of the SP500 ETF fund, which is then taken by Prometheus and passed to my Grafana.

Read More

MicroK8s and DockerHub

If you work with Docker, you’ve surely noticed recently that DockerHub requires authentication when you download a bit more from it. In this article, I’ve decided to describe how to handle this in connection with MicroK8s.

The first thing we need to modify is the file /var/snap/microk8s/current/args/certs.d/docker.io/hosts.toml. If any subdirectory or file doesn’t exist, create it. The file should look like this:

server = "https://docker.io"

[host."https://registry-1.docker.io"]
  capabilities = ["pull", "resolve"]
  [host."https://registry-1.docker.io".auth]
    username = "YOUR_DOCKERHUB_USERNAME"
    identitytoken = "dckr_pat_TOKEN"

You need to generate a token on the DockerHub website. You can do this by clicking on Account -> Personal Access Tokens

Read More

Work on Home Server

So today I was working on my home server, and I accidentally discovered from monitoring that some services weren’t running. Since my home Kubernetes server is more for playing around, but also hosts some public things, I get messages from Nagios once every 24 hours, so it doesn’t disturb me too much, but at the same time makes me aware of the need to address issues.

Read More

My Home Server with Kubernetes

It’s true that I run my own server with Kubernetes at home, but what does it actually look like, and what do I test on it? At the beginning, I built an “enterprise” solution that is on the level of large corporations, at least on the surface - I have my own repository for OCI images, my own pipelines in GitHub for creating OCI images, and even my own installation of ArgoCD.

Read More