Georgios Anestopoulos

Platform Engineer – Devops Practitioner


Automate Hugo Deployment with Gitlab CI/CD

Summary: Having my personal gitlab instance I decided to automate hugo deployment process using gitlabci and each time a new commit is merged to master branch, the site will rebuild using ‘hugo’ command and will be deployed to my server (webhosting provider in my case) using lftp. In my example ‘gitlab-ci.yaml’ configuration there are 2 stages (test-only & Deploy-Pages) If I’m pushing to a working branch will trigger the pipeline on each commit and will run only the test stage.

Joplin, my favourite note taking app, my custom dark theme

Joplin is my favourite note taking app, Im using it with encryption enabled and sync them using WebDav in my Synology NAS to all my computers. I prefer the dark note style and I spent lot of time to find a dark theme for my taste but unfortunately I was not satisfied with the themes I found, so created my own based on multiple themes I found in Github and I created my own favourite.

Argocd ApplicationSet helm subcharts example

In this post I will share how do I add and deploy upstream helm charts using ArgoCD ApplicationSet in my personal kubernetes server and how do I use ApplicationSet generators to automatically create ArgoCD Applications using the flexibility of the ApplicationSet controller. Prerequisites used in this example: git repository Kubernetes and ArgoCD allready installed. (At the time of writing: kubernetes v1.24.1, ArgoCD v2.5.0) ArgoCD deployed in “argocd” namespace I use the Git Directory Generator approach:

Mikrotik: ip cloud ddns (auto update)

I’m using Mikrotik products & routers for years, one of the features I like is the ip cloud Dynamic DNS. This enables you to access to your router from anywhere on the internet, without the need for signing up to 3rd party Dynamic DNS Services. This is handy if you need access to: Access security cameras behind your network Manage your router or router’s behind it Access a local server

wordpress & prismJS code syntax highlighting in Twenty Twenty One theme (No plugin)

In this website I’m using wordpress twenty twenty one theme with some extra child theme modifications. Trying to improve the code block and adding some syntax highlighting, I was looking on many different plugins but I decided to use prismJS without plugin. What is prismJS ? Prism is a lightweight, extensible syntax highlighter, built with modern web standards in mind. It’s used in millions of websites, including some of those you visit daily

Hugo Binary Install - Binary (Cross-platform)

Download the appropriate version for your platform from Hugo Releases. Ideally, you should install it somewhere in your PATH for easy use. /usr/local/bin is the most probable location. In my case is an ubuntu installation: 1 2 3 4 5 6 cd $HOME/Downloads && mkdir hugo-binary && cd hugo-binary wget https://github.com/gohugoio/hugo/releases/download/v0.92.0/hugo_extended_0.92.0_Linux-64bit.tar.gz tar -xvf hugo_extended_0.92.0_Linux-64bit.tar.gz sudo cp hugo /usr/local/bin cd ../ && rm -rf hugo-binary/ hugo version you should be able to see the version from the last command, in my case hugo v0.

Standard-version gitlab integration (java,pom.xml)

Standard-version is a utility using semver and CHANGELOG.md generation powered by Conventional Commits. In this tutorial I will explain how I use standard-version to generate CHANGELOG.md, update pom.xml revision version and create a git tag and run it only when a MR is merged to master by a user and not a bot. Once MR is merged to master then standard-version will do the following: Retrieve the current version of your repository by looking at packageFiles, falling back to the last git tag.

bash script to autorestart weewx if has been exited/stopped

I have a personal weather station server running on Weewx, which posts weather data to https://kvw.gr. I have a cron job that stops Weewx for 20 minutes before midnight to allow the Weatherlink IP interface to upload daily data to weatherlink.com. However, in some cases, I have observed that the Weatherlink IP interface is busy during Weewx’s start-up phase, causing Weewx to be unable to connect and retrieve LOOP data. This results in Weewx staying in this state until I manually restart the service.