I write guides and step by step tutorials on Linux, DevOps, Virtualization, Kubernetes, home-labs and more. Newsletter: https://xitter.cf/t.co/sdQl6VBaxG

Joined February 2017
Home lab update: Latest overhaul - DNS, SSL, VPN, MetalLB and couple of prod ready services. I’ve made some major improvements to my home lab running on k3s Kubernetes, fully managed with FluxCD for seamless GitOps automation. Here’s what’s new: ✅ Added a dedicated DNS server with Cloudflare as the upstream resolver ✅ Mapped a custom TLD domain to my home lab environment ✅ Set up a VPN that lets me securely connect from anywhere - and the cool part? The TLD domain resolves and is fully accessible over both LAN and VPN, but stays hidden from the public internet ✅ Enabled SSL certificates across all services for secure access ✅ Deployed MetalLB to provide LoadBalancer support for services inside k3s ✅ Rolled out several key apps including AdGuard (DNS filtering), Paperless (document management), Homebox (home inventory management), Immich (photo backup), and Vaultwarden (password management) All of this is orchestrated on a lightweight, efficient Kubernetes cluster running locally - combining flexibility, security, and automation. Happy to share more details or help anyone interested in setting up something similar! #HomeLab #Kubernetes #k3s #FluxCD #Cloudflare #DevOps #Infrastructure #cloudnative #gitops
1
3
43
3,008
Replying to @tac50__
They have changed their TOS regarding user data and privacy.
1
36
I understand changes from the business side are necessary to upkeep a product but still this is quite disappointing. This should be an opt-in for users. I've been using firefox since 2004. Hopping i can make it better with betterfox profiles and on a lookout for alternatives. @firefox
1
657
Curl commands
4
96
1
577
73,273
Ansible commands cheat sheet
9
63
2
470
35,315
** Essential VIM commands cheat sheet **
49
326
23,309
** Quick Docker compose tip ** Updating image version of the running container Yes, this is possible with Docker and with almost no-downtime. In your services block, you need to define deploy options(like in the picture bellow). The important part here is the order attribute. And what this tells Docker is to create and start new container with the new image version. Once the new container is created it will redirect the traffic to the new container and delete and remove the old container. This config is best paired with the replicas option to provision multiple replicas/instances of the same container to ensure high availability. Note: this works best if you enact semantic versioning of your images.
7
58
2,743
** Kubernetes DaemonSet manifest YAML explained ** A DaemonSet ensures that a specific pod runs on all (or some) nodes in the cluster. ** Key features ** Runs one pod per node: - Unlike a deployment, DaemonSets schedule one pod per node automatically. - Used for system-wide services: often used for logging agents (Fluentd), monitoring (Prometheus node exporter), or network services. - hostPath volumes: commonly used in DaemonSets to access node-level directories. - updateStrategy(when applied): - RollingUpdate: Replaces pods one by one. - OnDelete: Pods are updated only when manually deleted.
1
20
123
6,479
** Kubernetes StatefulSet YAML manifest explained ** Used for stateful applications like databases (MySQL, PostgreSQL, Cassandra, etc.). ** Key features ** Pods have stable network IDs: - Pods are named as my-statefulset-0, my-statefulset-1, etc. - Each pod gets a stable hostname: <pod-name>.<service-name>. Uses persistent volumes: - Unlike deployments, where new pods get new storage, each pod keeps its persistent volume. - volumeClaimTemplates ensures each pod gets its own persistent volume. Rolling updates with ordering: - Pods are updated one at a time in order (when RollingUpdate strategy is applied).
34
231
11,627
** Terraform best practices you need to know ** 1. Code structure, code quality and organization Never keep your configuration in a single main .tf. Segregate the files in separate folders per resources, environments, regions and projects. If your configuration is simple, then at least utilize the terraform workspaces command for managing multiple environments. This also allows for faster terraform executions. Standardize naming conventions, input & output variables are your friends. Don't hardcode values that can be passed as variables or discovered using data sources 2. Maintainability and re-usability Create reusable modules for common infrastructure components(resource and infrastructure modules). Store modules in a separate repository or a dedicated directory (modules/). Think of them as templates for your resources. Keep resource modules as plain as possible Example of a Terraform project:
6
87
1
525
43,841
** Kubernetes deployment manifest file structure explained ** In the Kubernetes deployment YAML we define how an application should be deployed and managed within a Kubernetes cluster. Below is a breakdown of the YAML structure with explanations. ** Explanation of the key sections ** - apiVersion & kind: Defines that this is a deployment resource and uses apps/v1 Kubernetes API. - metadata: Contains details like the name and labels for app organization. - spec.replicas: Defines the desired number of running instances (pods). - spec.selector.matchLabels: Ensures the deployment controls only pods with matching labels. - spec.template: - Defines the pod template (metadata and spec). - The containers section defines container details such as the image, ports, and resources. - Environment variables, volume mounts, and resource limits can also be set. - spec.strategy: Controls the deployment update strategy (RollingUpdate or Recreate). - volumes: Allows defining persistent storage like ConfigMaps, Secrets, or Persistent Volumes. ** Optional additions ** - Liveness & Readiness Probes (for health checks) - Affinity & Node Selectors (for scheduling) - Init Containers (for pre-processing tasks)
3
59
403
28,457