OpenVPN on Vyos

- 6 mins read
To always remain connected to the services running in my home lab, I use an OpenVPN connection from my mobile and laptop devices to the OpenVPN server running inside the Vyos Virtual Machine deployed in one of the Proxmox nodes in my lab. Configuration of OpenVPN in Vyos involves the installation of keys and certificates in both the server and the clients for mutual authentication. In this document we discuss the commands in Vyos, to generate and install the required certificates.

Proxmox Grafana LXC

- 2 mins read
Proxmox can be configured to export system metrics to Grafana. For this we need to install InfuxDB and Grafana. Install InfluxDB in LXC Launch an Ubuntu 24.04 LXC and install influxdb2 following the steps mentioned in the InfluxDB website Link. After this we need to create a bucket. We do this by visiting the InfluxDB web interface. For the first login you will be using the default credentials and set new password for login.

Proxmox Vyos Migration

- 5 mins read
Last week I assembled a new desktop for running a second instance of proxmox server, since my other proxmox server which hosts a lot of services has been running since a couple of years now with almost zero downtime and hence no opportunity for me to clean the dust that has accumulated inside the CPU. The old desktop acting as a server is an i5 7600K with 32 GB DDR4 ram and multiple SSDs for NAS and backups.

Custom Debian Kernel

- 3 mins read
Working with embedded systems often requires customizing the operating system as per the specific requirements of the project. This includes customizing the root filesystem, the kernel, the disk image etc. The first step towards the customisation of the linux kernel is to be able to compile the kernel. Once the debian kernel compilation steps are figured out, we can proceed with the customisation steps. In this article we explain the steps to compile the debian kernel from source inside a docker container.

Docker non root user

- 2 mins read
I have been using dockers since more than last 5 years now. So far I have always launched dockers using the root user, mostly because it is the easiest method of launching a docker. But most of the tasks that I do inside a docker does not require the root user. For example most of the time I launch docker to compile some software. This task should not be done using the root user.

Systemctl Coredump

- 4 mins read
A coredump is a snapshot of the memory associated with a process. A coredump is typically generated by the linux kernel when a process crashes due to an invalid operation leading to segmentation fault for example. There are other ways for generation of a coredump on demand. The signals that generate a coredump are listed in section Signals that generate a coredump. In this document I have documented information regarding management of coredumps using systemctl-coredump.

Ansible install docker

- 1 min read
Ansible script to install docker Installing docker on virtual machines and fresh linux installations is a frequently encountered problem. To automate this boring job I have prepared an ansible role to install docker. Initially the role was written to support only debian based linux distributions, hence the name docker_debian. But later it was modified to make it generic for any linux distribution. Install ansible Prerequisite for running any ansible script is to install ansible using following command in Ubuntu:

Ansible Errors

- 1 min read
While using ansible to install docker in my home lab servers I faced some errors and solved them. Here I document them for future references: Error related to python I was using ansible version 2.10 to install docker on ubuntu 24.04 server. I got the following error. TASK [Gathering Facts] *************************************************************************************************************** fatal: [alan-laptop]: FAILED! => {"ansible_facts": {}, "changed": false, "failed_modules": {"ansible.legacy.setup": {"failed": true, "module_stderr": "Shared connection to alan-laptop closed. ", "module_stdout": " Traceback (most recent call last): File \"/home/alan-sysop/.
Download the source from the github repository using following command: git clone --recurse-submodules https://github.com/libbpf/libbpf-bootstrap.git Install pre-requisites: apt install binutils-dev llvm clang libcap-dev libelf-dev Compile the first example: cd examples/c make minimal -j 4 Run as superuser: sudo ./minimal sudo cat /sys/kernel/debug/tracing/trace_pipe

Bpftrace

- 1 min read
Bpftrace While trying to compile bpftrace I faced a lot of difficulties due to poor documentation of the build dependencies for any particular version of the bpftrace application. You pick a version of the bpftrace and then compile it with a certain version of llvm, either it won’t compile due to unmet dependencies not available in the version of ubuntu (22.04) on which I am trying to compile, or it compiles successfully but won’t run due to llvm not being backward compatible.