chore(): Getting the hugo blog fixed up and looking ready to deploy

This commit is contained in:
Elia el Lazkani 2021-07-04 07:43:43 +02:00
parent 4199314f65
commit 830e9b6320
4 changed files with 91 additions and 50 deletions

View File

@ -9,10 +9,33 @@ pygmentsUseClasses: false
pygmentsCodefences: true
pygmentsStyle: monokai
description: 'The DevOps Blog'
title: The DevOps Blog
show_updated: true
showReadTime: true
rss: true
logo: false
tagsOverview: false
mainSectionTitle: Blog Posts
showProjectsList: true
projectsUrl: ""
- "css/custom.css"
- name: rss
link: /posts/index.xml
- name: git-alt
- name: github
- name: gitlab
- name: email
description: |
# Welcome {#welcome}
Welcome to my humble abode. Sit back, relax and enjoy the ride.
anchorLineNos: false
@ -46,7 +69,3 @@ menu:
name: "Tags"
url: "/tags/"
weight: 4
- identifier: "rss"
name: "RSS"
url: "/posts/index.xml"
weight: 5

View File

@ -14,6 +14,9 @@
** FAQ
:EXPORT_DATE: 2021-07-04
:CUSTOM_ID: borgbackup
*** What is this ?
@ -49,6 +52,9 @@ Yup, here's the [[/posts/index.xml][link]].
** About
:EXPORT_DATE: 2019-06-21
:CUSTOM_ID: borgbackup
*** Who am I ?
@ -66,21 +72,14 @@ If, for some reason, you'd like to get in touch you have sevaral options.
If you use /GPG/ and you should, my public key is ~2383 8945 E07E 670A 4BFE 39E6 FBD8 1F2B 1F48 8C2B~
*** Projects
- [[][]]: The DevOps [[][blog]]
- [[][weenotify]]: an official [[][weechat]] notification plugin.
- [[][go-cmw]]: a terminal weather application. It can be easily integrated into =tmux= or used in all sorts of ways.
- [[][rundeck-resources]]: python tool to query resources from different sources and export them into a data structure that [[][Rundeck]] can consume. This tool can be found on [[][PyPI]].
* Posts
** Backup :@backup:
*** DONE BorgBackup :borg:borgbackup:
CLOSED: <2020-01-30 Thu 21:00>
:EXPORT_DATE: 2020-01-30
:EXPORT_FILE_NAME: borgbackup
:CUSTOM_ID: borgbackup
@ -186,8 +185,8 @@ It offers you all the features you need to do off-site and on-site backups of al
I'll be testing *Borg* moving forward for my data. I'll make sure to report back anything I find, in the future, related to the subject.
*** DONE Automating Borg :borgmatic:borgbackup:borg:
CLOSED: <2020-02-02 Sun 21:00>
:EXPORT_DATE: 2020-02-02
:EXPORT_FILE_NAME: automating-borg
:CUSTOM_ID: automating-borg
@ -420,8 +419,8 @@ I recently hooked it to a monitoring system so I will have a better view on when
Also, if any of my backups fail I get notified by email. I hope you enjoy *borg* and *borgmatic* as much as I am.
*** DONE Dotfiles with /Chezmoi/ :dotfiles:chezmoi:encryption:templates:
CLOSED: <2020-10-05 Mon 21:00>
:EXPORT_DATE: 2020-10-05
:EXPORT_FILE_NAME: dotfiles-with-chezmoi
:CUSTOM_ID: dotfiles-with-chezmoi
@ -753,9 +752,9 @@ I find myself, often, editing the /dotfiles/ in my /home/ directory as a /dev/ v
I understand it adds a little bit of /overhead/ with the use of =chezmoi= commands, which I aliased to =cm=. But the end result is a /home/ directory which seems untouched by any tools (no symlinks, no copies, etc...) making it easier to migrate /out/ of /Chezmoi/ as a solution and into another one if I ever choose in the future.
** Configuration Management :@configuration_management:
*** DONE Ansible testing with Molecule :ansible:molecule:
CLOSED: <2019-06-21 Fri 21:00>
:EXPORT_DATE: 2020-01-11
:EXPORT_DATE: 2019-01-11
:EXPORT_FILE_NAME: ansible-testing-with-molecule
:CUSTOM_ID: ansible-testing-with-molecule
@ -1231,8 +1230,8 @@ projects that will test all aspects of your ansible code. I suggest you start
using it when writing new ansible roles.
** Container :@container:
*** DONE Linux Containers :linux:kernel:docker:podman:dockerfile:
CLOSED: <2021-02-27 Thu 21:00>
:EXPORT_DATE: 2021-02-27
:EXPORT_FILE_NAME: linux-containers
:CUSTOM_ID: linux-containers
@ -1735,8 +1734,8 @@ podman run -it neofetch-fedora:20.04 neofetch
Finally thought /before/ I let you go. You may have noticed that I used =Podman= instead of =Docker=. In these examples, both commands should be interchangeable.
Remember kids, /containers/ are cool! They can be used for a wide variety of things. They are great at many things and with the help of /container orchestration/ platforms, they can scale better than ever. They are also very bad at certain things. Be careful where to use them, how to use and when to use them. Stay safe and mainly have fun!
*** DONE Playing with containers and Tor :docker:linux:@text_editors:ubuntu:fedora:proxy:privoxy:
CLOSED: <2021-06-21 Mon 21:00>
:EXPORT_DATE: 2021-06-21
:EXPORT_FILE_NAME: playing-with-containers-and-tor
:CUSTOM_ID: playing-with-containers-and-tor
@ -1984,8 +1983,8 @@ Is it possible to route a container through another *Tor* container ?
The answer is /obviously/ *Yes* and this is the way to do it. Enjoy.
*** DONE Let's play with Traefik :docker:linux:traefik:nginx:ssl:letsencrypt:
CLOSED: <2021-06-24 Thu 21:00>
:EXPORT_DATE: 2021-06-24
:EXPORT_FILE_NAME: let-s-play-with-traefik
:CUSTOM_ID: let-s-play-with-traefik
@ -2326,8 +2325,8 @@ If everything is configured correctly, your blog should pop-up momentarily.
*Enjoy !*
** K3s :@k3s:
*** DONE Building k3s on a Pi :arm:kubernetes:
CLOSED: <2020-08-09 Sun 21:00>
:EXPORT_DATE: 2020-08-09
:EXPORT_FILE_NAME: building-k3s-on-a-pi
:CUSTOM_ID: building-k3s-on-a-pi
@ -2484,8 +2483,8 @@ If you've made it so far, you should have a *k3s* cluster running on a single /R
The next steps you might want to look into is disable the /metrics/ server and use the resources for other things.
** Kubernetes :@kubernetes:
*** DONE Minikube Setup :minikube:ingress:ingress_controller:
CLOSED: <2019-07-02 Tue 21:00>
:EXPORT_DATE: 2019-02-09
:EXPORT_FILE_NAME: minikube-setup
:CUSTOM_ID: minikube-setup
@ -2651,8 +2650,8 @@ Now if you go to [[http://dashboard.kube.local]] in your browser, you will be we
You can deploy multiple services that can be accessed this way, you can also integrate this with a service mesh or a service discovery which could find the up and running nodes that can redirect you to point to at all times. But this is the clean way to expose services outside the cluster.
*** DONE Your First Minikube Helm Deployment :minikube:ingress:helm:prometheus:grafana:
CLOSED: <2019-06-21 Fri 21:00>
:EXPORT_DATE: 2019-02-10
:EXPORT_FILE_NAME: your-first-minikube-helm-deployment
:CUSTOM_ID: your-first-minikube-helm-deployment
@ -3033,8 +3032,8 @@ And let's not forget =/etc/hosts=.
And the grafana dashboard should appear if you visit [[http://grafana.kube.local]].
*** DONE Local Kubernetes Cluster on KVM :rancher:rancheros:kvm:libvirt:
CLOSED: <2019-06-21 Fri 21:00>
:EXPORT_DATE: 2019-02-17
:EXPORT_FILE_NAME: local-kubernetes-cluster-on-kvm
:CUSTOM_ID: local-kubernetes-cluster-on-kvm
@ -3226,8 +3225,8 @@ At this point, you can check that all the nodes are healthy and you got yourself
But for now, you got yourself a kubernetes cluster to play with. Enjoy.
*** DONE Deploying Helm in your Kubernetes Cluster :helm:tiller:
CLOSED: <2019-07-02 Tue 21:00>
:EXPORT_DATE: 2019-03-16
:EXPORT_FILE_NAME: deploying-helm-in-your-kubernetes-cluster
:CUSTOM_ID: deploying-helm-in-your-kubernetes-cluster
@ -3365,9 +3364,9 @@ After a few minutes, your /Tiller/ deployment or as it's commonly known as a =he
Everything seems to be working properly. In future posts, we will be leveraging the power and convenience of helm to expand our cluster's capabilities and learn more about what we can do with kubernetes.
** MISC :@misc:
*** DONE A Quick ZFS Overview on Linux :zfs:file_system:
CLOSED: <2020-01-27 Mon 21:00>
:EXPORT_DATE: 2021-01-27
:EXPORT_DATE: 2020-01-27
:EXPORT_FILE_NAME: a-quick-zfs-overview-on-linux
:CUSTOM_ID: a-quick-zfs-overview-on-linux
@ -3525,8 +3524,8 @@ I read in a blog post that the *Ubuntu* team responsible for the *ZFS* support h
I have no way of verifying that as I am not a *ZFS* expert but I'll be happy to take their word for it until I learn more.
What is certain for now is that I am running on *ZFS*, and I will be enjoying its features to the fullest.
*** DONE Email Setup with isync, notmuch, afew, msmtp and Emacs :email:isync:notmuch:afew:msmtp:emacs:
CLOSED: <2020-12-02 Wed 21:00>
:EXPORT_DATE: 2020-11-29
:EXPORT_FILE_NAME: email-setup-with-isync-notmuch-afew-msmtp-and-emacs
:CUSTOM_ID: email-setup-with-isync-notmuch-afew-msmtp-and-emacs
@ -3931,8 +3930,8 @@ Future improvements I have to think about is the best way to do email notificati
I want email to be simple and this makes it simple for me. How are you making email simple for you ?
*** DONE Email IMAP Setup with isync :email:isync:imap:
CLOSED: <2020-12-03 Thu 21:00>
:EXPORT_DATE: 2020-12-03
:EXPORT_FILE_NAME: email-imap-setup-with-isync
:CUSTOM_ID: email-imap-setup-with-isync
@ -4090,8 +4089,8 @@ Channel sync-personal-trash
This is pretty much it. It is that simple. This is how I synchronize my email. How do you ?
*** DONE A Python Environment Setup :python:pipx:pyenv:virtual_environment:virtualfish:
CLOSED: <2021-06-17 Thu 21:00>
:EXPORT_DATE: 2021-06-17
:EXPORT_FILE_NAME: a-python-environment-setup
:CUSTOM_ID: a-python-environment-setup
@ -4305,8 +4304,8 @@ You have full access to a wide array of Python distributions to play with. Endle
If you create /virtual environments/ for each of your projects, you won't fall in the common pitfalls of versioning hell.
Keep your /virtual environments/ numerous and dedicated to projects, small sets, and you won't face any major problems with keeping your system clean yet up to date.
*** DONE My Path Down The Road of Cloudflare's Redirect Loop :cloudflare:cdn:
CLOSED: <2020-01-27 Thu 21:00>
:EXPORT_DATE: 2020-01-27
:EXPORT_FILE_NAME: my-path-down-the-road-of-cloudflare-s-redirect-loop
:CUSTOM_ID: my-path-down-the-road-of-cloudflare-s-redirect-loop
@ -4400,8 +4399,8 @@ Alright, let's move this to what they call "Full Encryption", which calls my ser
After this change, all the errors cleared up and got my blog up and
running again.
*** DONE The Story Behind cmw :python:development:
CLOSED: <2019-08-31 Sat 21:00>
:EXPORT_DATE: 2019-08-31
:EXPORT_FILE_NAME: the-story-behind-cmw
:CUSTOM_ID: the-story-behind-cmw
@ -4549,8 +4548,8 @@ I'm not going to publish the package on [[][PyPI]] because seri
But if you are interested in making changes to the repository, make an MR.
** Monitoring :@monitoring:
*** DONE Simple cron monitoring with HealthChecks :healthchecks:cron:
CLOSED: <2020-02-09 Sun 21:00>
:EXPORT_DATE: 2020-02-09
:EXPORT_FILE_NAME: simple-cron-monitoring-with-healthchecks
:CUSTOM_ID: simple-cron-monitoring-with-healthchecks
@ -4687,8 +4686,8 @@ The question of deploying one's own monitoring system is a personal choice.
After all, one can use free third party services if they would like.
The correct answer though is to always monitor.
*** DONE Building up simple monitoring on Healthchecks :healthchecks:cron:curl:
CLOSED: <2020-02-11 Tue 21:00>
:EXPORT_DATE: 2020-02-11
:EXPORT_FILE_NAME: building-up-simple-monitoring-on-healthchecks
:CUSTOM_ID: building-up-simple-monitoring-on-healthchecks
@ -4808,8 +4807,8 @@ Don't judge something by its simplicity. Somethings, out of simple components ti
With a little of scripting, couple of commands and the power of cron we were able to make /healthchecks/ monitor our websites.
** Nikola :@nikola:
*** DONE Welcome back to the old world :blog:org_mode:emacs:rst:
CLOSED: <2020-09-01 Tue 21:00>
:EXPORT_DATE: 2020-08-31
:EXPORT_FILE_NAME: welcome-back-to-the-old-world
:CUSTOM_ID: welcome-back-to-the-old-world
@ -5020,8 +5019,8 @@ I know, I know. It does a pretty good initial job but you will need to touch up
**** Conclusion
This was a long overdue project, I am happy to finally put it behind me and move foward with something simple that works with my current flow.
*** DONE Modifying a /Nikola/ theme :theme:blog:
CLOSED: <2020-09-01 Tue 21:00>
:EXPORT_DATE: 2020-09-01
:EXPORT_FILE_NAME: modifying-a-nikola-theme
:CUSTOM_ID: modifying-a-nikola-theme
@ -5086,8 +5085,8 @@ I made my modification to the =base.tmpl= and rendered the blog. It was that sim
You can always clone the /theme repository/ and make your modifications to it. But maintenance becomes an issue. This seems to be a cleaner way for me to make modifications on the original /theme/ I'm using. This is how you can too.
** Revision Control :@revision_control:
*** DONE Git! First Steps... :git:
CLOSED: <2019-07-23 Mon 21:00>
:EXPORT_DATE: 2019-07-22
:EXPORT_FILE_NAME: git-first-steps
:CUSTOM_ID: git-first-steps
@ -5277,8 +5276,8 @@ You can definitely see who committed it, when and what the message was. You also
I'm going to end this post here, and will continue to build up the knowledge in new posts to come. For now, I think it's a good idea to simply work with commits.
Next concepts to cover would be branching and merging.
*** DONE Git! Branching and Merging :git:branch:merge:
CLOSED: <2019-08-01 Thu 21:00>
:EXPORT_DATE: 2020-08-01
:EXPORT_FILE_NAME: git-branching-and-merging
:CUSTOM_ID: git-branching-and-merging
@ -5499,9 +5498,9 @@ In this post, I talked about what are branches. We went ahead and worked a littl
In the next post, I will be talking about remotes.
*** DONE Git! Remotes... :rebase:remotes:git:
CLOSED: <2019-08-07 Wed 21:00>
:EXPORT_DATE: 2020-08-07
:EXPORT_DATE: 2019-08-07
:EXPORT_FILE_NAME: git-remotes
:CUSTOM_ID: git-remotes
@ -5683,9 +5682,9 @@ Make use of merging.
After talking about remotes in this post, you have some reading to do. I
hope I've made your journey much simpler moving forward with this topic.
*** DONE Git! Rebase and Strategies :git:rebase:strategies:
CLOSED: <2019-08-10 Sat 21:00>
:EXPORT_DATE: 2020-08-10
:EXPORT_DATE: 2019-08-10
:EXPORT_FILE_NAME: git-rebase-and-strategies
:CUSTOM_ID: git-rebase-and-strategies
@ -5835,8 +5834,8 @@ works for me. And if I need to adapt that for one reason or another, I
*** DONE Git binary clean up :git:git_filter_repo:git_lfs:
CLOSED: <2020-09-02 Wed 21:00>
:EXPORT_DATE: 2020-09-02
:EXPORT_FILE_NAME: git-binary-clean-up
:CUSTOM_ID: git-binary-clean-up
@ -6071,8 +6070,8 @@ I think it's clearner now. The *1.2MB* size on the /repository/ is no longer
bothering me.
** RSS :@rss:
*** DONE Yet Another RSS Reader Move ? :emacs:org_mode:configuration:
CLOSED: <2020-09-15 Tue 21:00>
:EXPORT_DATE: 2020-09-14
:EXPORT_FILE_NAME: yet-another-rss-reader-move
:CUSTOM_ID: yet-another-rss-reader-move
@ -6239,8 +6238,8 @@ Looks nice huh ?! Not bad at all.
There was nothing hard about the setup, whatsoever. It took me a bit to go through the relevant bits of the documentation for /my use cases/ which are, I admit, simple. I can now decommission my /miniflux/ instance as I have already found my future /rss/ reader.
** IRC :@irc:
*** DONE Weechat, SSH and Notification :weechat:notification:ssh:
CLOSED: [2019-07-02 Fri 21:00]
:EXPORT_DATE: 2019-01-01
:EXPORT_FILE_NAME: weechat-ssh-and-notification
:CUSTOM_ID: weechat-ssh-and-notification
@ -6332,8 +6331,8 @@ Make sure that the plugin *enable* value is *on* and that the *mode* is *remote*
If you followed this post so far, then whenever someone highlights you on weechat you should get a pop-up on your system notifying you about it.
*** DONE Weechat and Emacs :weechat:emacs:weechat_el:
CLOSED: <2020-09-03 Thu 21:00>
:EXPORT_DATE: 2020-09-03
:EXPORT_FILE_NAME: weechat-and-emacs
:CUSTOM_ID: weechat-and-emacs
@ -6407,8 +6406,8 @@ I'm also thankful to have so many different awesome projects created by the open
** Text Editors :@text_editors:
*** DONE Emacs and Org-mode :emacs:org_mode:configuration:
CLOSED: <2020-08-22 Sat 21:00>
:EXPORT_DATE: 2020-08-22
:EXPORT_FILE_NAME: emacs-and-org-mode
:CUSTOM_ID: emacs-and-org-mode
@ -6638,8 +6637,8 @@ This should help me pick up the usage of /Org-mode/ faster. It is also a good
idea if you've already configured your /Emacs/ to read all your /org file/ for a
wider *agenda* view.
*** DONE Literate Programming Emacs Configuration :emacs:org_mode:configuration:
CLOSED: <2020-09-12 Sat 21:00>
:EXPORT_DATE: 2020-09-12
:EXPORT_FILE_NAME: literate-programing-emacs-configuration
:CUSTOM_ID: literate-programing-emacs-configuration
@ -6757,8 +6756,8 @@ I went through my /emacs configuration/ and transformed it into a /documented or
The capabilities of /literal programming/ goes way beyond this post, which goes without saying, and this is not the only use case for it.
*** DONE Bookmark with Org-capture :org_mode:emacs:org_capture:org_web_tools:org_cliplink:
CLOSED: <2021-05-27 Thu 21:00>
:EXPORT_DATE: 2020-09-17
:EXPORT_FILE_NAME: bookmark-with-org-capture
:CUSTOM_ID: bookmark-with-org-capture
@ -6878,8 +6877,8 @@ Now, you should have a working setup... =org-cliplink= willing !
**** Conclusion
I thought this was going to be harder to pull off but, alas, it was simple, even for someone who doesn't know /emacs-lisp/, to figure out. I hope I'd get more familiar with /emacs-lisp/ with time and be able to do more. Until next time, I recommend you hook =org-capture= into your workflow. Make sure it fits your work style, otherwise you will not use it, and make your path a more productive one.
*** DONE Calendar Organization with Org :emacs:org_mode:calendar:organization:
CLOSED: <2021-05-31 Mon 21:00>
:EXPORT_DATE: 2021-05-30
:EXPORT_FILE_NAME: calendar-organization-with-org
:CUSTOM_ID: calendar-organization-with-org

data/projects.yaml Normal file
View File

@ -0,0 +1,20 @@
- name: The DevOps Blog
desc: The blog's repository
- name: weenotify
desc: An official [weechat]( notification plugin.
- name: cmw
desc: Command line weather application that queries [](
- name: go-cmw
desc: A terminal weather application. It can be easily integrated into `tmux` or used in all sorts of ways.
- name: rundeck-resources
desc: python tool to query resources from different sources and export them into a data structure that [Rundeck]( can consume. This tool can be found on [PyPI](

static/css/custom.css Normal file
View File

@ -0,0 +1,3 @@
#header {
text-align: center;