<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <?xml-stylesheet href="/s/inc/rss.xsl" type="text/xsl"?>
    <rss version="2.0"  xmlns:atom="http://www.w3.org/2005/Atom">
        <channel>
            <title>RSS feed for tag tutorials on Raymii.org</title> 
            <link>https://raymii.org/s/tags/tutorials.xml</link> 
            <description>RSS feed for tag tutorials on Raymii.org</description>
            <atom:link href="https://raymii.org/s/tags/tutorials.xml" rel="self" type="application/rss+xml" />
    
            <item>
                <title>Put your SSH keys in your TPM chip!</title> 
                <link>https://raymii.org/s/tutorials/Put_your_SSH_keys_in_your_TPM_chip.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Put_your_SSH_keys_in_your_TPM_chip.html</guid>
                <description>I've got a [long](/s/articles/Get_Started_With_The_Nitrokey_HSM.html) [history](/s/tags/hsm.html) [with](/s/tags/yubikey.html) [hardware security modules](/s/articles/Nitrokey_HSM_web_cluster.html), both professionally and for fun. For the longest time, my SSH private key has lived inside a hardware token of some sort, be it the Nitrokey, the Smartcard-HSM or a Yubikey.
The private key never leaves the device, you yourself can't even extract it, neither can malware. It does not live on your filesystem or in an `ssh-agent` (in memory) and some hardware keys even require a physical touch to use the key. Way more secure than the file  `~/.ssh/id_rsa`. I do hope you have a password on your private keys.
Most, if not all modern machines come with a comparable hardware solution, a [TPM](https://en.wikipedia.org/wiki/Trusted_Platform_Module) (trusted platform module). It's required for Windows 11 so most hardware has one. Its often used to verify the boot process. You can however, also use it to store your SSH keys and in this guide I'll show you how I recently did just that.</description> 
                <pubDate>Fri, 10 Apr 2026 19:37:00 GMT</pubDate>
                <lastBuildDate>Fri, 10 Apr 2026 19:37:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Finally, run Docker containers natively in Proxmox 9.1 (OCI images)</title> 
                <link>https://raymii.org/s/tutorials/Finally_run_Docker_containers_natively_in_Proxmox_9.1.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Finally_run_Docker_containers_natively_in_Proxmox_9.1.html</guid>
                <description>Proxmox VE is a virtualization platform, like VMWare, but open source, based on Debian. It can run KVM virtual machines and Linux Containers (LXC). I've been using it for over 10 years, the [first article I wrote mentioning it was in 2012](/s/tags/proxmox.html). At home I have a 2 node Proxmox VE cluster consisting of 2 HP EliteDesk Mini machines, both running with 16 GB RAM and both an NVMe and SATA SSD with ZFS on root (256 GB). It's small enough (physically) and is just enough for my homelab needs specs wise. Proxmox VE 9.1 was released [recently](https://www.proxmox.com/en/about/company-details/press-releases/proxmox-virtual-environment-9-1) and this new version is able to run Docker containers / OCI images natively, no more hacks or VM's required to run docker. This post shows you how to run a simple container from a docker image.</description> 
                <pubDate>Thu, 20 Nov 2025 22:34:00 GMT</pubDate>
                <lastBuildDate>Thu, 20 Nov 2025 22:34:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Local incremental backups of Google Photos on Ubuntu with gphotos-sync</title> 
                <link>https://raymii.org/s/tutorials/Local_incremental_Google_Photos_backup_on_Ubuntu.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Local_incremental_Google_Photos_backup_on_Ubuntu.html</guid>
                <description>'Google Photos' no longer syncs with 'Google Drive' or with their 'Backup and Sync' desktop software. There used to be a checkbox to get your 'Google Photos' pictures in 'Google Drive' but that has been disabled. I used that feature together with their 'Backup and Sync' tool to sync all the photos in 'Google Photos' to my local Windows computer. From there I use 'DigiKam'  to manage the photos and backup them offline and offsite. Due to Google removing that feature, I had to go find another way to get the pictures out of 'Google Photos', which, after a few months of (automated) use, 'gphotos-sync' on Ubuntu seems to be the best, stable choice. In this guide I'll show you how to setup incremental backups from 'Google Photos' on Ubuntu. My 'DigiKam' database moved over without problems, and now I'm glad I don't have to use Windows for picture managemant anymore.</description> 
                <pubDate>Mon, 24 Aug 2020 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 31 May 2025 21:30:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>High Available Mosquitto MQTT on Kubernetes</title> 
                <link>https://raymii.org/s/tutorials/High_Available_Mosquitto_MQTT_Broker_on_Kubernetes.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/High_Available_Mosquitto_MQTT_Broker_on_Kubernetes.html</guid>
                <description>In this post, we'll walk through a fully declarative, Kubernetes-native setup for running a highly available MQTT broker using Eclipse Mosquitto. This configuration leverages core Kubernetes primitives (`Deployments`, `Services`, `ConfigMaps`, and `RBAC`), alongside Traefik `IngressRouteTCP` to expose MQTT traffic externally. It introduces a lightweight, self-healing failover mechanism that automatically reroutes traffic to a secondary broker if the primary becomes unhealthy. The setup also demonstrates internal MQTT bridging, allowing seamless message propagation between brokers. The big advantage over a single Pod deployment (which, in case of node failure, k8s will restart after 5 minutes) is that this setup has a downtime of only 5 seconds and shared state, so all messages will be available on a failover.</description> 
                <pubDate>Wed, 14 May 2025 22:11:00 GMT</pubDate>
                <lastBuildDate>Wed, 14 May 2025 22:11:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Safely expose the Kubernetes Dashboard in Traefik k3s via a ServersTransport</title> 
                <link>https://raymii.org/s/tutorials/Safely_expose_the_Kubernetes_Dashboard_in_Traefik_k3s_via_a_ServersTransport.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Safely_expose_the_Kubernetes_Dashboard_in_Traefik_k3s_via_a_ServersTransport.html</guid>
                <description>I'm using the Headlamp dashboard for my [high-available local kubernetes cluster](/s/tutorials/High_Available_k3s_kubernetes_cluster_with_keepalived_galera_and_longhorn.html) because I find that to be faster, more clear and useful than the full blown Kubernetes Dashboard. In [my first article](/s/tutorials/My_First_Kubernetes_k3s_cluster_on_3_Orange_Pi_Zero_3s_including_k8s_dashboard_hello-node_and_failover.html#toc_4) I accessed the dashboard via a local port forward.
This article documents how to expose the dashboard via an `Ingress` and some `Traefik` specific `annotations`. The dashboard helm chart sets up HTTPS internally, `Traefik` does not like that by default. Most of the time, all internal cluster communication is insecure (I'm not sure why, seems to be a bad idea).
A few of the guides online suggest disabling HTTPS for the dashboard internally or, for the k3s specific case, disabling HTTPS validation entirely. Both of those are too broad for my use case, so I decided to figure out how to make `Traefik` talk to the `kubernetes-dashboard-kong-proxy` via `https`, without disabling certificate validation.</description> 
                <pubDate>Tue, 11 Mar 2025 22:11:00 GMT</pubDate>
                <lastBuildDate>Tue, 11 Mar 2025 22:11:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Create Kubernetes user restricted to one namespace with resource limits</title> 
                <link>https://raymii.org/s/tutorials/Create_Kubernetes_user_restricted_to_one_namespace_with_resource_limits.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Create_Kubernetes_user_restricted_to_one_namespace_with_resource_limits.html</guid>
                <description>This guide shows you how to use Role-based access control (RBAC) to create a user account that only has rights for one specific namespace. I'll also show you how to limit the resource usage of that  `Namespace`.  Last but not least, I'll also show you how to create a `kubeconfig` file for that specific user.</description> 
                <pubDate>Mon, 29 Jul 2024 04:39:00 GMT</pubDate>
                <lastBuildDate>Mon, 29 Jul 2024 04:39:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>nameConstraints on your Self Signed Root CA in Kubernetes with cert-manager</title> 
                <link>https://raymii.org/s/tutorials/nameConstraints_on_your_Self_Signed_Root_CA_in_Kubernetes_with_cert_manager.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/nameConstraints_on_your_Self_Signed_Root_CA_in_Kubernetes_with_cert_manager.html</guid>
                <description>If you have [set up a Self Signed Root CA](/s/tutorials/Self_signed_Root_CA_in_Kubernetes_with_k3s_cert-manager_and_traefik.html) for your local Kubernetes Cluster and have trusted the Root Certificate, you are at risk if the key is compromised. If the key is stolen, it can be used to create trusted certificates for everything. Luckily there is something we can do, using `nameConstraints` to limit the scope of the Root Certificate to, in our case, a single domain (`k3s.homelab.mydomain.org`). This means that if your key would be compromised, it would only be able to issue certificates for anything under that domain, not your bank for example. </description> 
                <pubDate>Wed, 17 Jul 2024 23:22:00 GMT</pubDate>
                <lastBuildDate>Wed, 17 Jul 2024 23:22:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Self-signed Root CA in Kubernetes with k3s, cert-manager and traefik. Bonus howto on regular certificates</title> 
                <link>https://raymii.org/s/tutorials/Self_signed_Root_CA_in_Kubernetes_with_k3s_cert-manager_and_traefik.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Self_signed_Root_CA_in_Kubernetes_with_k3s_cert-manager_and_traefik.html</guid>
                <description>Now that I'm learning Kubernetes for a few weeks, I'm finally at the point where I was 20 years ago with regular boring old tech, being able to [host multiple domains](/s/tutorials/Kubernetes_k3s_Ingress_for_different_domains_like_virtual_hosts.html), [password protection](/s/tutorials/Password_protect_web_services_in_Kubernetes_k3s_traefik_with_basic_auth.html) and [high available clusters](/s/tutorials/High_Available_k3s_kubernetes_cluster_with_keepalived_galera_and_longhorn.html). It seems we have to re-invent the wheel every time but in the end, it's just resume-driven development, the underlying stack costs more, is way more complex but for the user, nothing changes, they see the same website as always. [Not all change is progress](https://luddites.latenightlinux.com/). Enough of being a curmudgeon, time to continue with Kubernetes. In this episode of 'Remy discovers Kubernetes', I'm setting up `cert-manager`, **not with Lets Encrypt**, but with a self-signed certificate authority. I'll also show you how to set up a regular certificate, one you've for example bought somewhere. I'll also cover `nameConstraints` to make the risk of compromise of your trusted root ca lower. </description> 
                <pubDate>Wed, 17 Jul 2024 04:22:00 GMT</pubDate>
                <lastBuildDate>Wed, 17 Jul 2024 04:22:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Password protect web services in Kubernetes (k3s/traefik) with basic auth</title> 
                <link>https://raymii.org/s/tutorials/Password_protect_web_services_in_Kubernetes_k3s_traefik_with_basic_auth.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Password_protect_web_services_in_Kubernetes_k3s_traefik_with_basic_auth.html</guid>
                <description>Now that I have a [high-available local kubernetes cluster](/s/tutorials/High_Available_k3s_kubernetes_cluster_with_keepalived_galera_and_longhorn.html) and am [experimenting with deploying apps](/s/snippets/Using_nodeSelector_to_deploy_a_Kubernetes_Helm_chart_only_on_x86_or_amd64_nodes_not_arm64.html), it's also time to look into securing those apps using certificates and passwords. In this case I'm going to set up password authentication, like a `.htaccess` file in `Apache2`, to protect the `Longhorn` dashboad, which by default requires no authentication. This means deploying an `Ingress`, a `Middleware` and a `Secret`. </description> 
                <pubDate>Mon, 15 Jul 2024 20:11:00 GMT</pubDate>
                <lastBuildDate>Mon, 15 Jul 2024 20:11:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Kubernetes (k3s) Ingress for different domains (virtual hosts)</title> 
                <link>https://raymii.org/s/tutorials/Kubernetes_k3s_Ingress_for_different_domains_like_virtual_hosts.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Kubernetes_k3s_Ingress_for_different_domains_like_virtual_hosts.html</guid>
                <description>Now that I have a [high-available local kubernetes cluster](/s/tutorials/High_Available_k3s_kubernetes_cluster_with_keepalived_galera_and_longhorn.html) it's time to learn not just managing the cluster but actually deploying some services on there. Most examples online use a `NodePort` or a `LoadBalancer` to expose a service on a port, but I want to have domains, like, `grafana.homelab.mydomain.org` instead of `192.0.2.50:3000`. Back in the old days this was called [Virtual Host](https://web.archive.org/web/20240515131604/https://httpd.apache.org/docs/2.4/vhosts/), using 1 IP for multiple domains. My k3s cluster uses `traefik` for its incoming traffic and by defining an `Ingress` we can route a domain to a service (like a `ClusterIP`). This page will show you how. </description> 
                <pubDate>Wed, 10 Jul 2024 20:39:00 GMT</pubDate>
                <lastBuildDate>Wed, 10 Jul 2024 20:39:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>High Available k3s kubernetes cluster with keepalived, galera and longhorn</title> 
                <link>https://raymii.org/s/tutorials/High_Available_k3s_kubernetes_cluster_with_keepalived_galera_and_longhorn.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/High_Available_k3s_kubernetes_cluster_with_keepalived_galera_and_longhorn.html</guid>
                <description> After my [first adventure with Kubernetes](/s/tutorials/My_First_Kubernetes_k3s_cluster_on_3_Orange_Pi_Zero_3s_including_k8s_dashboard_hello-node_and_failover.html), getting started with k3s on my small 3 node ARM cluster that [boots via PXE / NFS](/s/tutorials/Netboot_PXE_Armbian_on_an_Orange_Pi_Zero_3_from_SPI_with_NFS_root_filesystem.html), I noticed that there is only one k3s node that has the `control-plane,master` role. If that node fails you can no longer manager the cluster. Other nodes can fail and then the workloads (pods) will be restarted eventually after 5 minutes, but this node is special. Time to change that and make it a high available cluster.
K3s [supports](https://web.archive.org/web/20240703112841/https://docs.k3s.io/datastore/ha) high-availability with embedded `etcd` and with external databases like `MySQL` and `postgres`. `etcd` will thrash your storage (SD cards) so I decided to go with a `MySQL` cluster using `Galera` for the database and `keepalived` for the High Available Cluster IP. This guide will show you how to configure the HA database and HA-IP and I'll also setup [longhorn](https://web.archive.org/web/20240707025724/https://longhorn.io/) for high-available block storage inside kubernetes. The end result is that I can pull the power from any two of the three nodes without the k3s cluster or workloads going down. </description> 
                <pubDate>Tue, 09 Jul 2024 22:30:00 GMT</pubDate>
                <lastBuildDate>Tue, 09 Jul 2024 22:30:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>My First Kubernetes: k3s 'cluster' on 3 Orange Pi Zero 3's, including the dashboard, hello-node and failover</title> 
                <link>https://raymii.org/s/tutorials/My_First_Kubernetes_k3s_cluster_on_3_Orange_Pi_Zero_3s_including_k8s_dashboard_hello-node_and_failover.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/My_First_Kubernetes_k3s_cluster_on_3_Orange_Pi_Zero_3s_including_k8s_dashboard_hello-node_and_failover.html</guid>
                <description>I've been working as an embedded C++ developer for over 5 years now so my sysadmin / devops skills are becoming a bit rusty. The odd bit of Ansible here and there but no new stuff. I figured it was time to expore Kubernetes, as it is what all the cool kids do these days. So I [got myself 3 new SBC's] (/s/tutorials/Netboot_PXE_Armbian_on_an_Orange_Pi_Zero_3_from_SPI_with_NFS_root_filesystem.html), the [Orange Pi Zero 3] (https://web.archive.org/web/20240623200133/http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-3.html). I'll be using these to install and setup a basic Kubernetes cluster, getting the Dashboard working, installing a Hello World app and testing how the failover works. </description> 
                <pubDate>Fri, 28 Jun 2024 22:30:00 GMT</pubDate>
                <lastBuildDate>Fri, 28 Jun 2024 22:30:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Netboot (PXE) Armbian on an Orange Pi Zero 3 from SPI with NFS root filesystem</title> 
                <link>https://raymii.org/s/tutorials/Netboot_PXE_Armbian_on_an_Orange_Pi_Zero_3_from_SPI_with_NFS_root_filesystem.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Netboot_PXE_Armbian_on_an_Orange_Pi_Zero_3_from_SPI_with_NFS_root_filesystem.html</guid>
                <description>Because I wanted to experiment with Kubernetes I bought a few cheap SBC's and a Power over Ethernet switch to run `k3s`. Since Kubernetes is very resource intensive I wanted to try to boot the boards via the network without causing wear on the Micro SD card. The boards have built-in SPI flash from which it can boot `u-boot` and Armbian works quite well with a root filesystem over NFS. This guide will help you with netbooting an Orange Pi Zero 3 running Armbian.</description> 
                <pubDate>Tue, 25 Jun 2024 22:30:00 GMT</pubDate>
                <lastBuildDate>Tue, 25 Jun 2024 22:30:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Qt 5.15 LTS on Windows without a Qt Account</title> 
                <link>https://raymii.org/s/tutorials/Qt_5.15_LTS_on_Windows_without_a_Qt_Account.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Qt_5.15_LTS_on_Windows_without_a_Qt_Account.html</guid>
                <description>I recently had to setup a Windows development environment with Qt 5.15. Qt 5.15 is still developed by the Qt company, but only released in binary form for paying customers. The [source code is released after 1 year](/s/blog/Qt_5.15_LTS_Docker_Image_for_Android_with_OpenSSL.html#toc_0).  Via the Online Installer you can only install 5.15.2 and you must login with a Qt account. This guide shows you how to install the most recent Qt 5.15 (as of writing it's 5.15.13) and Qt Creator, **without** a Qt account. We're using `vcpkg` to compile Qt and a specific offline-enabled installer for Qt Creator.</description> 
                <pubDate>Sun, 19 May 2024 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 19 May 2024 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Proxmox VE 7 Corosync QDevice in a Docker container</title> 
                <link>https://raymii.org/s/tutorials/Proxmox_VE_7_Corosync_QDevice_in_Docker.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Proxmox_VE_7_Corosync_QDevice_in_Docker.html</guid>
                <description>At home I have a 2 node Proxmox VE cluster consisting of 2 HP EliteDesk Mini machines, both running with 16 GB RAM and both an NVMe and SATA SSD with ZFS on root (256 GB). It's small enough (physically) and is just enough for my homelab needs specs wise. Proxmox VE has support for clustering. For a cluster (in any sense of the word), you need at least 3 nodes, otherwise there is no quorum. Corosync, the cluster software used by Proxmox, supports an external Quorum device. This is a small piece of software running on a third node which provides an extra vote for the quorum. In my case I wanted to run this on my NAS, since (physical) space is a premium. The NAS supports Docker, this guide explains how to run the QDevice for Proxmox VE 7 in a Docker container. There is a qdevice Docker image on the Docker hub but that guide does not work for Proxmox VE 7 and requires a lot of manual setup. Using my method involves a lot less steps, since you're basically running an extra debian VPS (a container with systemd and openssh).</description> 
                <pubDate>Sun, 17 Apr 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 29 Jan 2024 04:30:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>OpenSSL generate self signed certificate with SAN in one command (subject alternative name)</title> 
                <link>https://raymii.org/s/tutorials/OpenSSL_generate_self_signed_cert_with_Subject_Alternative_name_oneliner.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/OpenSSL_generate_self_signed_cert_with_Subject_Alternative_name_oneliner.html</guid>
                <description>This small one liner lets you generate an OpenSSL self signed certificate with both a common name and a [Subject Alternative Name (SAN)](https://en.wikipedia.org/wiki/Subject_Alternative_Name). Most guides online require you to specify a separate config file but this guide uses a bash trick [(process substitution)](https://web.archive.org/web/20221014191420/https://superuser.com/questions/1059781/what-exactly-is-in-bash-and-in-zsh) to pass such a config file to OpenSSL via the command line. If you are using OpenSSL 1.1.1 or higher, there now finally is a built in command line option which I'll also cover. </description> 
                <pubDate>Fri, 14 Oct 2022 22:02:00 GMT</pubDate>
                <lastBuildDate>Fri, 14 Oct 2022 22:02:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Fade in / fade out in Qt/QML</title> 
                <link>https://raymii.org/s/tutorials/Fade_in_Fade_out_in_QML.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Fade_in_Fade_out_in_QML.html</guid>
                <description>This guide shows you how to add a fade in / fade out effect to a control in QML. There are a lot of built in animations in Qt/QML, but no fade in/fade out. Using a state machine and a `SequentialAnimation`, we can first animate the opacity, then set the visibility, achieving a fade in / fade out effect. Other ways like a `PropertyAnimation` are also available but are less expressive or configurable.</description> 
                <pubDate>Fri, 19 Aug 2022 21:30:00 GMT</pubDate>
                <lastBuildDate>Fri, 19 Aug 2022 21:30:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>HTTP GET requests with Qt and in Qml (async)</title> 
                <link>https://raymii.org/s/tutorials/HTTP_GET_requests_in_Qt_and_Qml_async.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/HTTP_GET_requests_in_Qt_and_Qml_async.html</guid>
                <description>With Qt it's very easy to work with (async) HTTP requests. This guide shows you how to do it with Qt core and in Qml. The two examples print the output of a HTTP GET request on screen after pressing a button. The Qml method uses JavaScript, so that's cheating a bit, the other method uses plain C++ with Qt's libraries for networking (`QNetworkAccessManager`) and signals and slots for the async part.</description> 
                <pubDate>Fri, 29 Apr 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 29 Apr 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Yocto boot2qt for the Seeed reTerminal (Qt 6)</title> 
                <link>https://raymii.org/s/tutorials/Yocto_boot2qt_for_the_Seeed_reTerminal_qt6.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Yocto_boot2qt_for_the_Seeed_reTerminal_qt6.html</guid>
                <description>In this guide we'll build a linux distribution for Seeed reTerminal, using the Yocto project and the `boot2qt` stack provided by Qt. This `boot2qt` image can be written to the internal eMMC and when booted up, the Seeed reTerminal runs a software stack that integrates nicely with Qt Creator (the Qt IDE), for example, one click deployment to the device. You can run your own Qt application on the reTerminal, full screen, it will boot right into it.
This guide covers Qt 6.2. The guide also covers changing the default startup app to your own app, Qt Creator integration and rotating your Qt app, both Widgets and QML, the latter via Wayland and Weston.</description> 
                <pubDate>Fri, 18 Mar 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 04 Apr 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Build a WeatherTerminal app for the Seeed reTerminal (with Qt 6 &amp; QML)</title> 
                <link>https://raymii.org/s/tutorials/Qt_QML_WeatherTerminal_app_for_the_Seeed_reTerminal.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Qt_QML_WeatherTerminal_app_for_the_Seeed_reTerminal.html</guid>
                <description>In this guide I'll show you how to build a weather app for the Seeed reTerminal using Qt and QML. Imagine the reTerminal in your entrance hallway and with just a quick glance at the screen you'll know what the weather will be the next few hours, if you need an umbrella, if you'll have a headwind on your bicycle ride or if it's just going to be clear and sunny. This tutorial builds on the [reTerminal Yocto boot2qt distro](/s/tutorials/Yocto_boot2qt_for_the_Seeed_reTerminal_qt6.html) we've built in the previous article and uses Qt 6. Qt is a C++ framework, but this Weather app will use QML almost exclusively. I'm using just QML to make the guide more accessible and also because I'm used to doing everything in C++, so a sidestep to QML is fun for me as well. </description> 
                <pubDate>Sat, 02 Apr 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 02 Apr 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Yocto boot2qt for the Raspberry Pi 4, both Qt 5.15 and 6.2</title> 
                <link>https://raymii.org/s/tutorials/Yocto_boot2qt_for_the_Raspberry_Pi_4_both_Qt_6_and_Qt_5.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Yocto_boot2qt_for_the_Raspberry_Pi_4_both_Qt_6_and_Qt_5.html</guid>
                <description>In this guide we'll build a linux distribution for Raspberry Pi 4, using the Yocto project and the `boot2qt` stack provided by Qt. This `boot2qt` image can be written to an SD card and when booted up, the Raspberry Pi runs a software stack that integrates nicely with Qt Creator (the Qt IDE), for example, one click deployment to the device. You can run your own Qt application on the Pi, full screen, it will boot right into it.
This guide covers both Qt 5.15 and Qt 6.2. The 5.15 build process is a bit convoluted due to a few upstream issues. The guide also covers changing the default startup app to your own app and Qt Creator integration.</description> 
                <pubDate>Mon, 21 Feb 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 21 Feb 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>QML Touch Area visualization with QML_VISUAL_TOUCH_DEBUGGING</title> 
                <link>https://raymii.org/s/tutorials/Qml_Touch_Area_Visualization_QML_VISUAL_TOUCH_DEBUGGING.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Qml_Touch_Area_Visualization_QML_VISUAL_TOUCH_DEBUGGING.html</guid>
                <description>This guide shows you how to enable a red visual square around your `Mouseareas` and `MultiPointTouchArea` controls. It visualizes where you can click/touch and also shows any overlapping touch area's. It's helpful on full screen device interfaces like a coffee-machine or other HMI.
The environment flag `QML_VISUAL_TOUCH_DEBUGGING` needs to be set, but this is not documented on the Qt Docs site, only on a cheat sheet from 2016 by ISC. If you google for the environment flag, the only pages you get are the Qt source code and that cheat sheet. I've found this flag to be very useful when debugging touch issues, like overlapping touch or when a touch area is too small to use.
One of my co-workers found it when we had touch issues and since there is a lack of documentation, perfect for a small guide.</description> 
                <pubDate>Mon, 07 Feb 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 07 Feb 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>QML Drag and Drop including reordering the C++ model</title> 
                <link>https://raymii.org/s/tutorials/Qml_Drag_and_Drop_example_including_reordering_the_Cpp_Model.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Qml_Drag_and_Drop_example_including_reordering_the_Cpp_Model.html</guid>
                <description>This guide shows you how to implement drag and drop in Qml including how to reorder the backing C++ (`QAbstractListModel` derived) data model.
Most QML Drag and Drop examples you find online, including the Qt official example, use a `ListModel` in the same Qml file which has the data, but no example I found actually reordered a C++ model.
This example has a simple `MVVM (model-view-viewmodel)` C++ structure and a QML file with a drag and drop grid. The dragable example items come from the C++ model, which is derived from `QAbstractListModel`.</description> 
                <pubDate>Fri, 21 Jan 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 21 Jan 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>C++ std::async with a concurrency limit (via semaphores)</title> 
                <link>https://raymii.org/s/tutorials/Cpp_std_async_with_a_concurrency_limit.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Cpp_std_async_with_a_concurrency_limit.html</guid>
                <description>std::async is an easy way to do multiple things concurrently, without the hurdle of manual thread management in C++. Like batch converting images, database calls, http requests, you name it. Create a few 'std::futures' and later on when they're ready, '.get()' 'm while they're still hot. A 'future' is an object which handles the synchronization and guarantees that the results of the invocation are ready. If you '.get()' it and it's not ready, it will block.
Recently I had a use case for concurrency with a limit. I needed to do hundreds of HTTP calls to a JSON API. The concurrency limit was not for the hardware, but for the server on the other side. I didn't want to hammer it with requests.
There is no standard way to limit the amount of concurrent jobs via 'std::async'. You can fire of a hundred jobs and it is up to the implementation to not fry the hardware. On linux/gcc it will probably use a thread pool so you're lucky, but you cant assume that.
This article will show you a simple short solution to implement a concurrency limit together with std::async, by using a semaphore, implemented with modern (C++ 11) standard library features ('std::mutex', 'std::condition_variable' and such). It also has a C++ 17 version which replaces our custom CriticalSection class with the use of an 'std::scoped_lock' and 'BasicLockable'.
We start off with a shorter example showing how to fire off a set number of jobs and wait until all of those are finished before continuing. That is very useful if you have a set number of jobs and want the implementation to handle all the thread work for you.</description> 
                <pubDate>Sat, 09 Jan 2021 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 10 Jan 2021 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>C++ set up cpp-httplib with SSL support with cMake</title> 
                <link>https://raymii.org/s/tutorials/Cpp_set_up_cpp-httplib_with_ssl_support_with_cmake.md.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Cpp_set_up_cpp-httplib_with_ssl_support_with_cmake.md.html</guid>
                <description>For a small personal project that talks to a few JSON API's and does some data parsing I needed a header only C++ HTTP library. Header only because that is the simplest way to include it in my project, just copy and paste the file. I came across the project cpp-httplib, which fits my needs, does all the http methods, small, a few examples and it looks modern and has recent development commits. Setup and getting it working was easy, but as soon as I tried an https url, I got an exception ('https scheme is not supported.'). This guide shows you how to setup cpp-httplib for SSL support with cmake. It took me a bit longer than I wanted to set it up correctly, so why not save you the effort.</description> 
                <pubDate>Mon, 14 Dec 2020 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 14 Dec 2020 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Semi-accurate live stream viewer count (hls/rtmp/restreamer) on the command line</title> 
                <link>https://raymii.org/s/tutorials/Semi-accurate_live_stream_viewer_count.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Semi-accurate_live_stream_viewer_count.html</guid>
                <description>Due to all the working-from-home in the past few months I had to setup a live stream. At first the stream went directly to YouTube, but after they've screwed up multiple times, we decided to not be dependent on them. Using restreamer, a piece of open source software to live stream both to your own server and to another (YouTube) at the same time, we have more control over the stream and are not surprised by YouTube doing stupid stuff unannounced. Restreamer provides a simple web player that works on all major platforms and streams to YouTube, but one thing it lacks is a live viewer count. That's a hard problem to solve correctly and accurately, in this article I'll show you how to do it semi-accurately via multiple ways, including live graphs. This article contains a rant on YouTube breaking stuff and the commands used to get a live viewer count. </description> 
                <pubDate>Wed, 25 Nov 2020 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 25 Nov 2020 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Installing OpenVMS 8.4 Alpha inside AXPbox on Debian 10 / Ubuntu 20.04 with networking</title> 
                <link>https://raymii.org/s/tutorials/Installing_OpenVMS_8.4_Alpha_in_AXPbox_with_networking.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Installing_OpenVMS_8.4_Alpha_in_AXPbox_with_networking.html</guid>
                <description>In my previous article I announced the fork of the `es40` emulator to `AXPbox` by Tom&amp;aacute;&amp;scaron; including bug fixes and rework allowing it to install OpenVMS 8.4 without problems. Since then I've contributed a few patches and doc updates, now NetBSD boots as well (the patches for netbsd were from other es40 forks). I've also looked into getting networking setup, since that is a bit of a tedious process due to pcap and linux, pcap being used for network emulation. SIMH (among others, a great VAX emulator) suffers from the same problems with networking. This guide will show you how to install AXPbox and get OpenVMS 8.4 ready and running with networking inside AXPbox. It's a rather long guide with a lot of information and output.</description> 
                <pubDate>Wed, 04 Nov 2020 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 08 Nov 2020 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Get webcam resolution and info on Ubuntu and fix HD</title> 
                <link>https://raymii.org/s/tutorials/Get_webcam_resolution_and_info_on_Ubuntu_and_fix_HD.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Get_webcam_resolution_and_info_on_Ubuntu_and_fix_HD.html</guid>
                <description>With all the video calling nowdays due to working from home I decided to get a webcam. Since I mostly work at a workstation, I have no microphone or camera built in. A friend gave me a spare webcam, a generic non-brand. It says 'HD Camera' on the box, but by default it records in 640x480. Using a few tools on Ubuntu you can figure out what resolutions are supported for your device. It turned out to be Cheese, the webcam capture program I used, not supporting the 'mjpeg' format, just the 'yuyv' RAW format. Using another webcam program named Webcamoid solved it, that program was able to use mjpeg.</description> 
                <pubDate>Sun, 23 Aug 2020 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 23 Aug 2020 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Running gnash on Ubuntu 20.04 (in Docker with X11 forwarding)</title> 
                <link>https://raymii.org/s/tutorials/Running_gnash_on_Ubuntu_20.04.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Running_gnash_on_Ubuntu_20.04.html</guid>
                <description>As you might have noticed, I'm slowly updating servers and workstations to Ubuntu 20.04, and as always with major upgrades, things break or are removed. Earlier this week I fixed up pygopherd and today I'll get gnash running again. Gnash is not updated since 2011 and therefore, finally, removed from the Ubuntu 20.04 repositories. Compiling it from source proved to be a lot of effort due to gstreamer dependencies and after a few hours I thought, why not just spin up a Ubuntu 18.04 Docker container, install gnash and forward X11. That took just about 10 minutes and now I'm happily running gnash again. In this tutorial I'll show you how to setup gnash in a docker container with x11 forwarding and host networking.</description> 
                <pubDate>Sun, 05 Jul 2020 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 05 Jul 2020 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Installing PyGopherd on Ubuntu 20.04</title> 
                <link>https://raymii.org/s/tutorials/Installing_PyGopherd_on_Ubuntu_20.04.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Installing_PyGopherd_on_Ubuntu_20.04.html</guid>
                <description>Ubuntu 20.04 dropped the Pygopherd package. There is no way to install it from the official repositories. In this guide I'll show you two ways to install the version from Ubuntu 18.04, which still works perfectly on 20.04. Either via just downloading the 2 deb packages, or via `apt pinning` from the previous (18.04) repository.</description> 
                <pubDate>Sat, 04 Jul 2020 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 04 Jul 2020 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Personal Wireguard VPN on a Freedombox with Debian</title> 
                <link>https://raymii.org/s/tutorials/Wireguard_VPN_on_Freedombox.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Wireguard_VPN_on_Freedombox.html</guid>
                <description>This guide will show you how to set up a personal Wireguard VPN server on Debian or Ubuntu with Freedombox. Freedombox will be used to manage the VPN software, firewall and users. Wireguard is a relatively new VPN built in to the linux kernel. Freedombox is a long running project under the Debian umbrella providing a private server for non experts with focus on user freedom, ease of use and privacy. Combined, those two make a great pair. In the past I've written many articles on how to setup your own personal VPN server, but those all required manual setup and maintenance. With freedombox, the updates are automatic and the management is hidden away behind a convenient web interface. </description> 
                <pubDate>Mon, 03 Feb 2020 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 03 Feb 2020 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Installing Freedombox on Armbian on the Olimex Pioneer</title> 
                <link>https://raymii.org/s/tutorials/Installing_Freedombox_On_Armbian_On_The_Olimex_A20_Pioneer.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Installing_Freedombox_On_Armbian_On_The_Olimex_A20_Pioneer.html</guid>
                <description>FreedomBox is a private server for non-experts: it lets you install and configure server applications with only a few clicks. It runs on cheap hardware of your choice, uses your internet connection and power, and is under your control. Last year the Pioneer became available, officially supported and sanctioned by the Freedombox Foundation. This is a home server you can buy from Olimex, comes in a nice metal case with a proper power supply, network cable, battery and SD card preloaded with Freedombox. Plug in and go. Perfect for users that don't want to tinker but do want their freedom and control. With the Pioneer, both the hardware and software are fully open source. In the default provided distribution for the Pioneer there are a few things I dislike. This guide covers the installation of Freedombox and Debian for the Olimex A20 Lime2 Pioneer with Armbian including reinstalling, Apache SSL certificate and LDAP issues.</description> 
                <pubDate>Wed, 29 Jan 2020 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 29 Jan 2020 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>nginx 1.15.2, ssl_preread_protocol, multiplex HTTPS and SSH on the same port</title> 
                <link>https://raymii.org/s/tutorials/nginx_1.15.2_ssl_preread_protocol_multiplex_https_and_ssh_on_the_same_port.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/nginx_1.15.2_ssl_preread_protocol_multiplex_https_and_ssh_on_the_same_port.html</guid>
                <description>The NGINX blog recently had a nice article on a new feature of NGINX 1.15.2, $ssl_preread_protocol. This allows you to multiplex HTTPS and other SSL protocols on the same port, or as their blog states, 'to distinguish between SSL/TLS and other protocols when forwarding traffic using a TCP (stream) proxy'. This can be used to run SSH and HTTPS on the same port (or any other SSL protocol next to HTTPS). By running SSH and HTTPS on the same port, one can circumvent certain firewall restrictions. If the session looks like HTTPS, nginx will handle it, if it looks like something else, it will forward it to the configured other program. I used to use SSHL to get this functionality, but now it's built into the nginx webserver. This small guide will cover the installation of the latest version of nginx on Ubuntu (16.04) and configuring this multiplex feature.</description> 
                <pubDate>Mon, 06 Aug 2018 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 12 Jan 2020 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>C++ project setup with CMake &amp; unit tests (google test)</title> 
                <link>https://raymii.org/s/tutorials/Cpp_project_setup_with_cmake_and_unit_tests.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Cpp_project_setup_with_cmake_and_unit_tests.html</guid>
                <description>This guide will show you how to setup a new C++ project with CMake and unit tests via Google's test framework. With this setup you can get started right away with test-driven-development in C++. It is also simple enough to look and figure out how to add gtest to your existing project and start doing TDD on your legacy (existing) codebase.</description> 
                <pubDate>Tue, 01 Oct 2019 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 06 Nov 2019 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Bash bits: split a file in blocks and do something with each block</title> 
                <link>https://raymii.org/s/tutorials/Bash_bits_split_a_file_in_blocks_and_do_something_with_each_block.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Bash_bits_split_a_file_in_blocks_and_do_something_with_each_block.html</guid>
                <description>Bash Bits are small examples, tips and tutorials for the bash shell. This bash bit shows you how to split a file into blocks (multiline) and do something with each block. This can be used for certificate chains or other files which have multiline blocks.</description> 
                <pubDate>Mon, 02 Sep 2019 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 02 Sep 2019 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>GNUplot tips for nice looking charts from a CSV file</title> 
                <link>https://raymii.org/s/tutorials/GNUplot_tips_for_nice_looking_charts_from_a_CSV_file.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/GNUplot_tips_for_nice_looking_charts_from_a_CSV_file.html</guid>
                <description>Recently I had to do some testing which resulted in a lot of log data. Looking at a bunch of text is not the same as seeing things graphically, this particular logdata was perfect to put in a graph. My goto favorite tool for graphs and charts is gnuplot. Not only is it very extensible, it is also reproducable. Give me a configfile and command over 'do this, then this and then such and such' in Excel to get a consistent result. In this article I'll give tips for using gnuplot, which include parsing a CSV file, a second axis, environment variables, A4 PDF's and a ton of styling options for a nice looking chart.</description> 
                <pubDate>Sat, 06 Jul 2019 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 06 Jul 2019 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>OpenSSL test TLSv1.3 connection and ciphersuites with s_client</title> 
                <link>https://raymii.org/s/tutorials/OpenSSL_test_TLSv1.3_connection_with_s_client.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/OpenSSL_test_TLSv1.3_connection_with_s_client.html</guid>
                <description>This guide shows you how to test a server's TLSv1.3 connection and use specific ciphersuites with the command line s_client client from the OpenSSL project. With OpenSSL 1.1.1 you can use TLSv1.3. This guide covers the installation of OpenSSL 1.1.1 on Ubuntu, testing the connection to a server  and specific ciphersuites. It also covers the big differences between TLSv1.3 and lower.</description> 
                <pubDate>Sun, 28 Apr 2019 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 28 Apr 2019 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Strong SSL Security on Apache2</title> 
                <link>https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html</guid>
                <description>This tutorial shows you how to set up strong SSL security on the Apache2 webserver. We do this by updating OpenSSL to the latest version to mitigate attacks like Heartbleed, disabling SSL Compression and EXPORT ciphers to mitigate attacks like FREAK, CRIME and LogJAM, disabling SSLv3 and below because of vulnerabilities in the protocol and we will set up a strong ciphersuite that enables Forward Secrecy when possible. We also enable HSTS and HPKP. This way we have a strong and future proof ssl configuration and we get an A+ on the Qually Labs SSL Test.</description> 
                <pubDate>Sun, 14 Jun 2015 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 27 Apr 2019 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Strong SSL Security on lighttpd</title> 
                <link>https://raymii.org/s/tutorials/Strong_SSL_Security_On_lighttpd.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Strong_SSL_Security_On_lighttpd.html</guid>
                <description>This tutorial shows you how to set up strong SSL security on the lighttpd webserver. We do this by updating OpenSSL to the latest version to mitigate attacks like Heartbleed, disabling SSL Compression and EXPORT ciphers to mitigate attacks like FREAK, CRIME and LogJAM, disabling SSLv3 and below because of vulnerabilities in the protocol and we will set up a strong ciphersuite that enables Forward Secrecy when possible. We also enable HSTS and HPKP. This way we have a strong and future proof ssl configuration and we get an A+ on the Qually Labs SSL Test.</description> 
                <pubDate>Sun, 14 Jun 2015 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 27 Apr 2019 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Strong SSL Security on nginx</title> 
                <link>https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html</guid>
                <description>This tutorial shows you how to set up strong SSL security on the nginx webserver. We do this by updating OpenSSL to the latest version to mitigate attacks like Heartbleed, disabling SSL Compression and EXPORT ciphers to mitigate attacks like FREAK, CRIME and LogJAM, disabling SSLv3 and below because of vulnerabilities in the protocol and we will set up a strong ciphersuite that enables Forward Secrecy when possible. We also enable HSTS and HPKP. This way we have a strong and future proof ssl configuration and we get an A+ on the Qually Labs SSL Test.</description> 
                <pubDate>Sun, 14 Jun 2015 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 27 Apr 2019 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Building opkg .ipk packages by hand (for OpenEmbedded/Yocto/OpenWRT)</title> 
                <link>https://raymii.org/s/tutorials/Building_IPK_packages_by_hand.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Building_IPK_packages_by_hand.html</guid>
                <description>.ipk packages are used by a variety of embedded linux systems, like routers running OpenWRT and appliances running on OpenEmbedded (Yocto). The opkg command installs these packages and OpenEmbedded comes with a set of tools to build .ipk packages. Recently I had to create ipk packages in a scripted fashion for a few hundred systems, all unique per system. The .ipk packages includes a few software changes for debugging, a systemd service and one precompiled binary. The yocto build tools were not available on the machine where these packages would be made so I had to figure out how to make them by hand, which means, automatically. The packages are actually just compressed files containing a few control files and the data to be extracted on the filesystem. This article will walk you through the steps of creating these packages by hand.</description> 
                <pubDate>Fri, 05 Apr 2019 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 05 Apr 2019 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Disable motd news or (parts of) the dynamic motd on Ubuntu</title> 
                <link>https://raymii.org/s/tutorials/Disable_dynamic_motd_and_motd_news_spam_on_Ubuntu_18.04.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Disable_dynamic_motd_and_motd_news_spam_on_Ubuntu_18.04.html</guid>
                <description>On Ubuntu 18.04 and up, when you login via SSH you are greeted with some news via motd (message of the day) that includes advertisements and messages from Canonical (via motd.ubuntu.com). This small guide shows you how to disable news, (parts of) the dynamic motd or just revert back to a plain old /etc/motd file.</description> 
                <pubDate>Mon, 18 Mar 2019 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 19 Mar 2019 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>SSH on Windows Server 2019 (including how to sudo)</title> 
                <link>https://raymii.org/s/tutorials/SSH_on_Windows_Server_2019.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/SSH_on_Windows_Server_2019.html</guid>
                <description>On hackernews I saw a Microsoft blog post stating that Windows Server 2019 now includes OpenSSH. In this post I'll try out both the client and server on a Windows 2019 server, including how to login as a Active Directory Domain user and how to generate and place and SSH keypair. The bonus this time is how to elevate permissions via SSH on Windows, sudo but way more complicated. This guide is also applicable on Windows 10, build 1809 and up.</description> 
                <pubDate>Tue, 18 Dec 2018 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 18 Dec 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>OpenSSL command line Root and Intermediate CA including OCSP, CRL and revocation</title> 
                <link>https://raymii.org/s/tutorials/OpenSSL_command_line_Root_and_Intermediate_CA_including_OCSP_CRL_and_revocation.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/OpenSSL_command_line_Root_and_Intermediate_CA_including_OCSP_CRL_and_revocation.html</guid>
                <description>These are quick and dirty notes on generating a certificate authority (CA), intermediate certificate authorities and end certificates using the OpenSSL command line tools. It includes OCSP, CRL and CA Issuer information and specific issue and expiry dates. We'll set up our own root CA. We'll use the root CA to generate an example intermediate CA. We'll use the intermediate CA to sign end user certificates.</description> 
                <pubDate>Tue, 03 Mar 2015 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 17 Dec 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Ansible - Only do action if on specific distribution (Debian, Ubuntu, CentOS or RHEL) or distribution version (ubuntu precise, ubuntu trusty)</title> 
                <link>https://raymii.org/s/tutorials/Ansible_-_Only_if_on_specific_distribution_or_distribution_version.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Ansible_-_Only_if_on_specific_distribution_or_distribution_version.html</guid>
                <description>This ansible playbook example helps you execute actions only if you are on a certain distribution. You might have a mixed environment with CentOS and Debian, when using ansible to execute actions on different servers you don't need to run yum on debian, or apt on CentOS. Some package names are different and such, so this helps you with a when statement to select a specific distribution. As a bonus, you also get a when for specific distribution versions, like Ubuntu precise (12.04 LTS) or Ubuntu trusty (14.04 LTS).</description> 
                <pubDate>Sun, 09 Nov 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 16 Dec 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Ansible - Only do something if another action changed</title> 
                <link>https://raymii.org/s/tutorials/Ansible_-_Only-do-something-if-another-action-changed.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Ansible_-_Only-do-something-if-another-action-changed.html</guid>
                <description>This Ansible tutorial shows you how execute actions only if another action has changed. For example, a playbook which downloads a remote key for package signing but only executes the apt-add command if the key has changed. Or a playbook which clones a git repository and only restarts a service if the git repository has changed.</description> 
                <pubDate>Sun, 22 Dec 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 15 Dec 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Ansible - Add an apt-repository on Debian and Ubuntu</title> 
                <link>https://raymii.org/s/tutorials/Ansible_-_Add_an_apt-repository_on_Debian_and_Ubuntu.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Ansible_-_Add_an_apt-repository_on_Debian_and_Ubuntu.html</guid>
                <description>This is a guide that shows you how to add an apt repository to Debian and Ubuntu using Ansible. It includes both the old way, when the apt modules only worked on Ubuntu, and the new way, now that the apt-modules also support Debian, plus some other tricks.</description> 
                <pubDate>Sun, 15 May 2016 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 14 Dec 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Line total (up+down sum) in PHP Network Weathermap</title> 
                <link>https://raymii.org/s/tutorials/Line_total_up_down_sum_in_php_weathermap.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Line_total_up_down_sum_in_php_weathermap.html</guid>
                <description>With PHP Network Weathermap you can create a birds-eye view of network components from your monitoring system (like LibreNMS, Cacti or anything else with an RRD database). It can display simple maps with components and links between, showing up and down traffic, but also complex systems with custom components, like Nagios status, temperature or other information. For network and system administrators seeing the seperate in and out traffic of a link is fine, we can sum up two numbers. A co worker filling the role of service manager asked me if it was possible to sum up in and out and show that, including the scale (different colours depending on link usage). This co worker is not interested in the seperate up/down link speed but wants to know how much traffic a location is using in total. Using a clever workaround, you can display a line's total usage, including the scale. This article also gives some more tips on weathermap, colouring and scale.</description> 
                <pubDate>Tue, 13 Nov 2018 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 13 Nov 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Three new NitroKeys! Nitrokey Pro 2, Storage 2 and a FIDO-U2F Nitrokey</title> 
                <link>https://raymii.org/s/tutorials/Three_New_Nitrokeys_Pro_2_Storage_2_and_Fido_u2f.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Three_New_Nitrokeys_Pro_2_Storage_2_and_Fido_u2f.html</guid>
                <description>Last week I received several newsletters from Nitrokey. As you might know, I'm a fan of their (mostly open source) hardware security devices. Their newsletters introduced two new keys, the Nitrokey Pro 2 and the Nitrokey FIDO-U2F key. On their website I also saw the Nitrokey Storage Pro 2. This article is a summary of the newsletters and goes over the new features in the new hardware. It boils down to a new OpenPGP smartcard version (3.3, it was 2.1) in the Nitrokey Pro 2 and Storage 2. The FIDO-U2F device is an entirely new Nitrokey (with a button).</description> 
                <pubDate>Thu, 08 Nov 2018 00:00:00 GMT</pubDate>
                <lastBuildDate>Thu, 08 Nov 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Use Ubuntu behind a Microsoft ForeFront TMG proxy with cntlm</title> 
                <link>https://raymii.org/s/tutorials/Use_Ubuntu_behind_a_Microsoft_ForeFront_TMG_proxy_with_cntlm.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Use_Ubuntu_behind_a_Microsoft_ForeFront_TMG_proxy_with_cntlm.html</guid>
                <description>Recently I had to deploy a few machines in a network where outgoing network access was forced through a Microsoft Forefront TMG proxy. For all the Windows clients this went automatically due to domain policies, for Linux this has to be set up manually. Defining the proxy in /etc/environment was not enough since NTML authentication is required, which is not supported by default. I found cntlm, a piece of software which acts as a local proxy, translating all requests to authenticated NTLM requests to your upstream proxy. This guide covers the (offline) installation, setup, getting the correct password hash and system-wide configuration. It should work on a desktop as well, but I did not test that.</description> 
                <pubDate>Sat, 27 Oct 2018 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 27 Oct 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Encrypt and decrypt files to public keys via the OpenSSL Command Line</title> 
                <link>https://raymii.org/s/tutorials/Encrypt_and_decrypt_files_to_public_keys_via_the_OpenSSL_Command_Line.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Encrypt_and_decrypt_files_to_public_keys_via_the_OpenSSL_Command_Line.html</guid>
                <description>This small tutorial will show you how to use the openssl command line to encrypt and decrypt a file using a public key. We will first generate a random key, encrypt that random key against the public key of the other person and use that random key to encrypt the actual file with using symmetric encryption.</description> 
                <pubDate>Thu, 25 Oct 2018 00:00:00 GMT</pubDate>
                <lastBuildDate>Thu, 25 Oct 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Service checks in LibreNMS (http, all other Nagios plugins)</title> 
                <link>https://raymii.org/s/tutorials/Service_checks_in_LibreNMS_nagios_plugins.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Service_checks_in_LibreNMS_nagios_plugins.html</guid>
                <description>LibreNMS is becoming one of my favorite monitoring tools. Setup and getting started is easy and it has enough advanced options and tunables. I recently discovered that LibreNMS is able to check services as well. Services, in this context, means, executing Nagios plugins (like check_http, check_ping, etc). This allows you to check services that SNMP does not cover by default, like HTTP(s) health checks, certificate expiry, tcp port checks (e.g. rdp) and anything for which you can write a Nagios plugin yourself. The performance data, if available, is graphed automatically. Alerting is done with the regular LibreNMS alerts. This guide covers the setup of services (it's not enabled by default) and a few basic checks, like an http health check, certificate expiry and SSH monitoring.</description> 
                <pubDate>Mon, 10 Sep 2018 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 10 Sep 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Windows 7 installer on a KVM Linux VPS (Windows on Digital Ocean)</title> 
                <link>https://raymii.org/s/tutorials/Windows_7_Installer_on_KVM_Linux_VPS_Digital_Ocean.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Windows_7_Installer_on_KVM_Linux_VPS_Digital_Ocean.html</guid>
                <description>For fun I wanted to install Windows 7 on a KVM Linux VPS (on [Digital Ocean) but it should work for any KVM or XEN-HVM VPS with console access). I was experimenting with Grub2 and ISO booting, since grub2 can natively boot a linux ISO. For Windows this is not possible, the installer needs to be extracted on a FAT32 partition from which you boot. On a normal system I would repartition the disk using a live CD, but on a VPS where an ISO cannot be booted this is troublesome. If I could boot from an ISO I would use that to install Windows, but where's the fun in that? I had to figure out how to shrink an EXT4 filesystem from a running Ubuntu VPS, which is possible, however very risky, with pivot_root. Next the partiton table can be converted to MBR, the partition can be resized, a FAT32 partiton and filesystem can be created, the Windows Installer files copied onto that, some Grub config and a reboot later, you're in the Windows 7 Installer.</description> 
                <pubDate>Sun, 01 Jul 2018 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 01 Jul 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Syslog configuration for remote logservers for syslog-ng and rsyslog, both client and server</title> 
                <link>https://raymii.org/s/tutorials/Syslog_config_for_remote_logservers_for_syslog-ng_and_rsyslog_client_server.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Syslog_config_for_remote_logservers_for_syslog-ng_and_rsyslog_client_server.html</guid>
                <description> Syslog is the protocol, format (and software) linux and most networking devices use to log messages. All kinds of messages, system, authentication, login and applications. There are multiple implementations of syslog, like syslog-ng and rsyslog. Syslog has the option to log to a remote server and to act as a remote logserver (that receives logs). With a remote logging server you can archive your logs and keep them secure (when a machine gets hacked, if root is compromised the logs on the machine are no longer trustworthy). This tutorial shows how to set up a syslog server with rsyslog and syslog-ng and shows how to setup servers as a syslog client (that log to a remote server) with syslog-ng and rsyslog.</description> 
                <pubDate>Thu, 21 Jun 2018 00:00:00 GMT</pubDate>
                <lastBuildDate>Thu, 21 Jun 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>HP-UX 11.31 System information and find out part number of a failed disk with sasmgr</title> 
                <link>https://raymii.org/s/tutorials/Find_part_number_of_failed_disk_on_HP-UX_with_sasmgr.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Find_part_number_of_failed_disk_on_HP-UX_with_sasmgr.html</guid>
                <description>On one of my regular scheduled datacenter visits one of the older HP-UX Itanium machines had an orange light on the front. These systems are not (yet) monitored, but still in use so the disk had to be replaced. Not knowing anything about this system or which parts were used, I managed to find the exact part number and device type so we could order a spare. This small guide uses sasmgr to get the data on HP-UX 11.31.</description> 
                <pubDate>Fri, 18 May 2018 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 18 May 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Icinga2 / Nagios / Net::SNMP change the default timeout of 60 seconds</title> 
                <link>https://raymii.org/s/tutorials/Icinga2_Nagios_Net_SNMP_raise_default_timeout.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Icinga2_Nagios_Net_SNMP_raise_default_timeout.html</guid>
                <description>Recently a rather large amount of new infrastructure was added to one of my monitoring instances. Using SNMP exclusively, but not the fastest network or infrastructure. The SNMP checks in the Icinga2 instance started giving timeouts, which look like false positives and give unclean logs. Raising the SNMP timeout for the checks above 60 seconds was not that easy since the 60 second timeout is hardcoded in the underlying library (NET::SNMP). This article shows you how to raise that timeout on an Ubuntu 16.04 system.</description> 
                <pubDate>Wed, 16 May 2018 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 16 May 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>OpenStack nova get-password, set-password and post encrypted password to metadata service</title> 
                <link>https://raymii.org/s/tutorials/OpenStack_nova_get_-_password_set_-_password_and_post_encrypted_password_to_metadata_service.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/OpenStack_nova_get_-_password_set_-_password_and_post_encrypted_password_to_metadata_service.html</guid>
                <description>When you create images for an OpenStack Cloud you want to use 'cloud' features. Fancy term for automatic resizing of your instance disk, adding an SSH key, (re)setting passwords and executing scripts on first boot to configure your instance further. OpenStack provides the metadata service for instances, which supplies information for the instance, like its public IP, SSH public key that was provided and vendor or user provided data like scripts or information. The OpenStack metadata service allows an instance to post data to an endpoint wich can be retreived with the 'nova get-password' command. It is meant to be an encrypted password (with the public SSH key) but it can be any plain text as well and it doesn't have to be the root password. In this guide I'll go over the scripts I use inside linux images to post a password to the metadata service and the 'nova' commands such as 'set-password' and 'get-password'. That includes decrypting a password with an SSH key that is password-protected (Horizon and nova don't support that) and the 'nova set-password' command, which sets the root password inside an instance when it has the 'qemu-guest-agent' installed and running.</description> 
                <pubDate>Sun, 25 Mar 2018 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 25 Mar 2018 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Backup OpenStack object store or S3 with rclone</title> 
                <link>https://raymii.org/s/tutorials/Backup_or_Sync_OpenStack_object_store_or_other_cloud_storage_with_rclone.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Backup_or_Sync_OpenStack_object_store_or_other_cloud_storage_with_rclone.html</guid>
                <description>This is a guide that shows you how to make backups of an object storage service like OpenStack swift or S3. Most object store services save data on multiple servers, but deleting a file also deletes it from all servers. Tools like rsync or scp are not compatible most of the time with these services, unless there is a proxy that translates the object store protocol to something like SFTP. rclone is an rsync-like, command line tool that syncs files and directories from cloud storage services like OpenStack swift, Amazon S3, Google cloud/drive, dropbox and more. By having a local backup of the contents of your cloud object store you can restore from accidental deletion or easily migrate between cloud providers. Syncing between cloud providers is also possible. It can also help to lower the RTO (recovery time objective) and backups are just always a good thing to have and test.</description> 
                <pubDate>Thu, 17 Aug 2017 00:00:00 GMT</pubDate>
                <lastBuildDate>Thu, 17 Aug 2017 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Run software on the tty1 console instead of getty login on Ubuntu 14.04 and 16.04</title> 
                <link>https://raymii.org/s/tutorials/Run_software_on_tty1_console_instead_of_login_getty.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Run_software_on_tty1_console_instead_of_login_getty.html</guid>
                <description>Recently I wanted to change the default login prompt on the tty1 console on an OpenStack instance to automatically run htop. Instead of logging in via the console, I wanted it to start up htop right away and nothing else. Ubuntu 14.04 uses init and Ubuntu 16.04 uses systemd. Both ways are shown in this tutorial.</description> 
                <pubDate>Mon, 10 Apr 2017 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 10 Apr 2017 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Ansible: access group vars for groups the current host is not a member of</title> 
                <link>https://raymii.org/s/tutorials/Ansible_access_other_groups_group_vars.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Ansible_access_other_groups_group_vars.html</guid>
                <description>This guide shows you how to access group variables for a group the current host is not a member of. In Ansible you can access other host variables using `hostvars['hostname']` but not group variables. The way described here is workable, but do I consider it a dirty hack. So why did I need this? I have a setup where ssl is offloaded by haproxy servers, but the virtual hosts and ssl configuration are defined in Apache servers. The loadbalancers and appservers are two different hostgroups, the ssl settings are in the appserver group_vars, which the hosts in the loadbalancer group need to access. The best way to do this is change the haproxy playbooks and configuration and define the certificates there, but in this specific case that wasn't a workable solution. Editing two yaml files (one for the appservers and one for the loadbalancers) was not an option in this situation.</description> 
                <pubDate>Fri, 27 Jan 2017 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 27 Jan 2017 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>OpenStack: Quick and automatic instance snapshot backup and restore (and before an apt upgrade) with nova backup</title> 
                <link>https://raymii.org/s/tutorials/OpenStack_Quick_and_automatic_instance_snapshot_backups.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/OpenStack_Quick_and_automatic_instance_snapshot_backups.html</guid>
                <description>This is a guide that shows you how to create OpenStack instance snapshots automatically, quick and easy. This allows you to create a full backup of the entire instance. This guide has a script that makes creating snapshots from an OpenStack VM automatic via cron. The script uses the `nova backup` function, therefore it also has retention and rotation of the backups. It also features an option to create a snapshot before every apt action, upgrade/install/remove. This way, you can easily restore from the snapshot when something goes wrong after an upgrade. Snapshots are very usefull to restore the entire instance to an earlier state. Do note that this is not the same as a file based backup, you can't select a few files to restore, it's all or nothing.</description> 
                <pubDate>Tue, 20 Dec 2016 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 20 Dec 2016 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Build a FreeBSD 11.0-release Openstack Image with bsd-cloudinit</title> 
                <link>https://raymii.org/s/tutorials/FreeBSD_11.0-release_Openstack_Image.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/FreeBSD_11.0-release_Openstack_Image.html</guid>
                <description>We are going to prepare a FreeBSD image for Openstack deployment. We do this by creating a FreeBSD 11.0-RELEASE instance, installing it and converting it using bsd-cloudinit. We'll use the CloudVPS public Openstack cloud for this. We'll be using the Openstack command line tools, like nova, cinder and glance. A FreeBSD image with Cloud Init will automatically resize the disk to the size of the flavor and it will add your SSH key right at boot. You can use Cloud Config to execute a script at first boott, for example, to bootstrap your system into Puppet or Ansible. If you use Ansible to manage OpenStack instances you can integrate it without manually logging in or doing anything manually.</description> 
                <pubDate>Mon, 14 Nov 2016 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 14 Nov 2016 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Nitrokey gnuk firmware update via DFU</title> 
                <link>https://raymii.org/s/tutorials/Nitrokey_gnuk_firmware_update_via_DFU.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Nitrokey_gnuk_firmware_update_via_DFU.html</guid>
                <description>The Nitrokey (start, all of them) can be upgraded to a newer GNUK firmware. However, this can only be done via ST Link or DFU, if you use the Gnuk USB firmware upgrade you will brick the device. This guide shows you how to attach a DFU adapter and how to flash firmware to a Nitrokey, both for upgrading or unbricking an USB upgraded one.</description> 
                <pubDate>Tue, 11 Oct 2016 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 11 Oct 2016 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>IPSEC VPN on Ubuntu 16.04 with StrongSwan</title> 
                <link>https://raymii.org/s/tutorials/IPSEC_vpn_with_Ubuntu_16.04.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/IPSEC_vpn_with_Ubuntu_16.04.html</guid>
                <description>This is a guide on setting up an IPSEC VPN server on Ubuntu 16.04 using StrongSwan as the IPsec server and for authentication. It has a detailed explanation with every step. We choose the IPSEC protocol stack because of vulnerabilities found in pptpd VPNs and because it is supported on all recent operating systems by default. More than ever, your freedom and privacy when online is under threat. Governments and ISPs want to control what you can and can't see while keeping a record of everything you do, and even the shady-looking guy lurking around your coffee shop or the airport gate can grab your bank details easier than you may think. A self hosted VPN lets you surf the web the way it was intended: anonymously and without oversight.</description> 
                <pubDate>Mon, 12 Sep 2016 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 12 Sep 2016 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Nagios 4 + Nagiosgraph (latest) installation on Ubuntu 12.04 &amp; 14.04</title> 
                <link>https://raymii.org/s/tutorials/Nagios_Core_4_Installation_on_Ubuntu_12.04.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Nagios_Core_4_Installation_on_Ubuntu_12.04.html</guid>
                <description>This is a guide on installing the latest Nagios Core (4.2.1) on Ubuntu 12.04 and 14.04. Nagios is an open source computer system monitoring, network monitoring and infrastructure monitoring software application. Nagios offers monitoring and alerting services for servers, switches, applications, and services. It alerts the users when things go wrong and alerts them a second time when the problem has been resolved. The version in the Ubuntu 12.04 repositories is quite old, it is still the in the 3 branch. This guide helps to fix that by using the latest Nagios version. We also install Nagiosgraph, a plugin for Nagios which gives you graps of the metrics.</description> 
                <pubDate>Sun, 11 Sep 2016 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 11 Sep 2016 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Ansible - Create OpenStack servers with Ansible 2.0 and the os_server module and a dynamic inventory</title> 
                <link>https://raymii.org/s/tutorials/Ansible_-_create_OpenStack_servers_with_os_server.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Ansible_-_create_OpenStack_servers_with_os_server.html</guid>
                <description>I regularly deploy clusters and single servers on OpenStack with Ansible. However, Ansible 2.0 comes with new OpenStack modules my playbooks still used the old ones. I reserved some time to convert these playbooks to the new modules and ansible 2. This article shows a very simple example, it creates three servers in OpenStack and adds them to different hostgroups based on variables. For example, to create one loadbalancer and two appservers and run specific playbooks on those hosts based on their role.</description> 
                <pubDate>Sat, 10 Sep 2016 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 10 Sep 2016 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>FST-01 gnuk firmware update via USB</title> 
                <link>https://raymii.org/s/tutorials/FST-01_firmware_upgrade_via_usb.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/FST-01_firmware_upgrade_via_usb.html</guid>
                <description>The FST-01 (Flying Stone 1) is a small STM32F103TB based USB device designed to run gnuk and NeuG (gpg usb token or true random number generator). This guide shows you how to upgrade the firmware on the FST-01 so that you can enjoy newer gnuk features like 4096 bit RSA keys.</description> 
                <pubDate>Fri, 09 Sep 2016 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 09 Sep 2016 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>HTTP Strict Transport Security for Apache, NGINX and Lighttpd</title> 
                <link>https://raymii.org/s/tutorials/HTTP_Strict_Transport_Security_for_Apache_NGINX_and_Lighttpd.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/HTTP_Strict_Transport_Security_for_Apache_NGINX_and_Lighttpd.html</guid>
                <description>HTTP Strict Transport Security (often abbreviated as HSTS) is a security feature that lets a web site tell browsers that it should only be communicated with using HTTPS, instead of using HTTP. This tutorial will show you how to set up HSTS in Apache2, NGINX and Lighttpd.</description> 
                <pubDate>Fri, 17 Jun 2016 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 17 Jun 2016 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Build a FreeBSD 10.3-release Openstack Image with bsd-cloudinit</title> 
                <link>https://raymii.org/s/tutorials/FreeBSD_10.3-release_Openstack_Image.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/FreeBSD_10.3-release_Openstack_Image.html</guid>
                <description>We are going to prepare a FreeBSD image for Openstack deployment. We do this by creating a FreeBSD 10.3-RELEASE instance, installing it and converting it using bsd-cloudinit. We'll use the CloudVPS public Openstack cloud for this. We'll be using the Openstack command line tools, like nova, cinder and glance.</description> 
                <pubDate>Wed, 27 Apr 2016 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 27 Apr 2016 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Microsoft Office 2013 and 2010 on Linux</title> 
                <link>https://raymii.org/s/tutorials/Office_2013_and_2010_on_Linux.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Office_2013_and_2010_on_Linux.html</guid>
                <description>This guide shows you how to run Microsoft Office 2013 and 2010 on Linux using CrossOver. It guides you through the installation and gives a review on what parts of the Office suite work with Linux.</description> 
                <pubDate>Sat, 02 Jan 2016 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 02 Jan 2016 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>IPSEC VPN on Ubuntu 15.04 with StrongSwan</title> 
                <link>https://raymii.org/s/tutorials/IPSEC_vpn_with_Ubuntu_15.04.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/IPSEC_vpn_with_Ubuntu_15.04.html</guid>
                <description>This is a guide on setting up an IPSEC VPN server on Ubuntu 15.04 using StrongSwan as the IPsec server and for authentication. It has a detailed explanation with every step. We choose the IPSEC protocol stack because of vulnerabilities found in pptpd VPNs and because it is supported on all recent operating systems by default. More than ever, your freedom and privacy when online is under threat. Governments and ISPs want to control what you can and can't see while keeping a record of everything you do, and even the shady-looking guy lurking around your coffee shop or the airport gate can grab your bank details easier than you may think. A self hosted VPN lets you surf the web the way it was intended: anonymously and without oversight.</description> 
                <pubDate>Sun, 20 Dec 2015 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 20 Dec 2015 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>IPSEC VPN on Ubuntu 15.10 with StrongSwan</title> 
                <link>https://raymii.org/s/tutorials/IPSEC_vpn_with_Ubuntu_15.10.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/IPSEC_vpn_with_Ubuntu_15.10.html</guid>
                <description>This is a guide on setting up an IPSEC VPN server on Ubuntu 15.04 using StrongSwan as the IPsec server and for authentication. It has a detailed explanation with every step. We choose the IPSEC protocol stack because of vulnerabilities found in pptpd VPNs and because it is supported on all recent operating systems by default. More than ever, your freedom and privacy when online is under threat. Governments and ISPs want to control what you can and can't see while keeping a record of everything you do, and even the shady-looking guy lurking around your coffee shop or the airport gate can grab your bank details easier than you may think. A self hosted VPN lets you surf the web the way it was intended: anonymously and without oversight.</description> 
                <pubDate>Sun, 20 Dec 2015 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 20 Dec 2015 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Sign and verify text/files to public keys via the OpenSSL Command Line</title> 
                <link>https://raymii.org/s/tutorials/Sign_and_verify_text_files_to_public_keys_via_the_OpenSSL_Command_Line.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Sign_and_verify_text_files_to_public_keys_via_the_OpenSSL_Command_Line.html</guid>
                <description>This small guide will shows you how to use the OpenSSL Command Line to sign a file, and how to verify the signing of this file. You can do this to prove ownership of a key, or to prove that a file hasn't been modified since you signed it. This works both with small text files as well as huge photo's, documents or PDF files.</description> 
                <pubDate>Mon, 09 Nov 2015 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 09 Nov 2015 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Make OpenELEC/Kodi work with the Sitecom CN-524/ Cambridge Silicon Radio (CSR) 8510 A10 Bluetooth USB adapter on the Raspberry Pi.</title> 
                <link>https://raymii.org/s/tutorials/Make_Openelec_Kodi_work_with_the_Sitecom_CN-524_Cambridge_Silicon_Radio_CSR_8510_A10_Bluetooth_USB_adapter_on_the_Raspberry_Pi.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Make_Openelec_Kodi_work_with_the_Sitecom_CN-524_Cambridge_Silicon_Radio_CSR_8510_A10_Bluetooth_USB_adapter_on_the_Raspberry_Pi.html</guid>
                <description>Recently I set up a Kodi (XMBC) media center on a Raspberry Pi.  The setup is mounted on a flatscreen TV and uses a small Wifi dongle for network access and a small Bluetooth dongle for a Rapoo E6700 wireless bluetooth keyboard/touchpad. This is a nice bluetooth keyboard/mouse combo for a media center, it charges via micro USB. That saves a lot of battery hassle. The bluetooth adapter is a Sitecom CN-524, which was the only one my local electronic store had available. It however does not work with linux/Kodi by default. This is because the device boots in a wrong mode. This guide shows you how this can be fixed and the necessary software changes for OpenELEC.</description> 
                <pubDate>Thu, 01 Oct 2015 00:00:00 GMT</pubDate>
                <lastBuildDate>Thu, 01 Oct 2015 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Automating Openstack with cloud init run a script on VM's first boot</title> 
                <link>https://raymii.org/s/tutorials/Automating_Openstack_with_Cloud_init_run_a_script_on_VMs_first_boot.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Automating_Openstack_with_Cloud_init_run_a_script_on_VMs_first_boot.html</guid>
                <description>This tutorial will show you how to create a VM in Openstack and execute a script at the first boot using cloud-init's user-data feature. This way you can eliminate some more manual labor and keep a small base image, instead of requiring all kinds of specific images for specific tasks. This tutorial will also give you a few example scripts to use with cloud-init and to create Openstack virtual machines from the command line. </description> 
                <pubDate>Wed, 11 Mar 2015 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 11 Mar 2015 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Openstack Glance Image Download, download Openstack images</title> 
                <link>https://raymii.org/s/tutorials/Openstack_Glance_Image_Download.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Openstack_Glance_Image_Download.html</guid>
                <description>This guide shows you how download Openstack Images to your local machine using the command line Glance client. You can use this, for example, to download a copy of an image created from a VM, or to download the images your Openstack provider provides and adapt those.</description> 
                <pubDate>Wed, 25 Feb 2015 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 25 Feb 2015 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Shared Git repository over ssh for multiple users</title> 
                <link>https://raymii.org/s/tutorials/Shared_Git_repository_via_ssh_for_multiple_users.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Shared_Git_repository_via_ssh_for_multiple_users.html</guid>
                <description>This tutorial will show you how to set up a shared git repo with multiple accounts over ssh. Only ssh, not gitolite or any other software. This is usefull if you have a small team of people that don't often need access to the repo and don't want something like github or bitbucket. With this you can use existing infrastructure.</description> 
                <pubDate>Mon, 05 Jan 2015 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 05 Jan 2015 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>IPSEC VPN on Centos 7 with StrongSwan</title> 
                <link>https://raymii.org/s/tutorials/IPSEC_vpn_with_CentOS_7.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/IPSEC_vpn_with_CentOS_7.html</guid>
                <description>This is a guide on setting up an IPSEC VPN server with CentOS 7 using StrongSwan as the IPsec server and for authentication. It has a detailed explanation with every step. We choose the IPSECP protocol stack because of recent vulnerabilities found in pptpd VPNs and because it is supported on all recent operating systems by default. More than ever, your freedom and privacy when online is under threat. Governments and ISPs want to control what you can and can't see while keeping a record of everything you do, and even the shady-looking guy lurking around your coffee shop or the airport gate can grab your bank details easier than you may think. A self hosted VPN lets you surf the web the way it was intended: anonymously and without oversight.</description> 
                <pubDate>Tue, 30 Dec 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 30 Dec 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Ansible - Only if a file exists or does not exist</title> 
                <link>https://raymii.org/s/tutorials/Ansible_-_Only_if_a_file_exists_or_does_not_exist.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Ansible_-_Only_if_a_file_exists_or_does_not_exist.html</guid>
                <description>This Ansible playbook example helps you execute actions only if a file exists or does not exist. If you for example have a command you need to run to generate a certificate (or Diffie Hellman parameters for nginx) you only want to do that once. The command itself is not convergent so it will run with every ansible run. However, the command creates a file and Ansible is able to check if that file exists. If the file exists, it will not execute the action. The same goes for checking if a file does exist and only executing the action if it exists. (The action you want to do will remove that file).</description> 
                <pubDate>Sat, 27 Dec 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 27 Dec 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>IPSEC L2TP VPN on Arch Linux on a Raspberry Pi with OpenSwan, xl2tpd and ppp</title> 
                <link>https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_on_a_Raspberry_Pi_with_Arch_Linux.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_on_a_Raspberry_Pi_with_Arch_Linux.html</guid>
                <description>This is a guide on setting up an IPSEC/L2TP vpn server with Arch Linux on a Raspberry Pi using Openswan as the IPsec server, xl2tpd as the l2tp provider and ppp or local users / PAM for authentication. It has a detailed explanation with every step.</description> 
                <pubDate>Mon, 01 Dec 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 01 Dec 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>IPSEC L2TP VPN on CentOS 6 / Red Hat Enterprise Linux 6 / Scientific Linux 6</title> 
                <link>https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_on_CentOS_-_Red_Hat_Enterprise_Linux_or_Scientific_-_Linux_6.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_on_CentOS_-_Red_Hat_Enterprise_Linux_or_Scientific_-_Linux_6.html</guid>
                <description>Not available.</description> 
                <pubDate>Mon, 01 Dec 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 01 Dec 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>IPSEC L2TP VPN on Ubuntu 12.04 with OpenSwan, xl2tpd and ppp</title> 
                <link>https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_with_Ubuntu_12.04.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_with_Ubuntu_12.04.html</guid>
                <description>Not available.</description> 
                <pubDate>Mon, 01 Dec 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 01 Dec 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>IPSEC L2TP VPN on Ubuntu 12.10 with OpenSwan, xl2tpd and ppp</title> 
                <link>https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_with_Ubuntu_12.10.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_with_Ubuntu_12.10.html</guid>
                <description>Not available.</description> 
                <pubDate>Mon, 01 Dec 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 01 Dec 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>IPSEC L2TP VPN on Ubuntu 13.04 with OpenSwan, xl2tpd and ppp</title> 
                <link>https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_with_Ubuntu_13.04.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_with_Ubuntu_13.04.html</guid>
                <description>This is a guide on setting up an IPSEC/L2TP vpn server with Ubuntu 13.04 using Openswan as the IPsec server, xl2tpd as the l2tp provider and ppp or local users / PAM for authentication. It has a detailed explanation with every step.</description> 
                <pubDate>Mon, 01 Dec 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 01 Dec 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>IPSEC L2TP VPN on Ubuntu 13.10 with OpenSwan, xl2tpd and ppp</title> 
                <link>https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_with_Ubuntu_13.10.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_with_Ubuntu_13.10.html</guid>
                <description>This is a guide on setting up an IPSEC/L2TP vpn server with Ubuntu 13.10 using Openswan as the IPsec server, xl2tpd as the l2tp provider and ppp or local users / PAM for authentication. It has a detailed explanation with every step.</description> 
                <pubDate>Mon, 01 Dec 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 01 Dec 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>IPSEC L2TP VPN on Ubuntu 14.04 with OpenSwan, xl2tpd and ppp</title> 
                <link>https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_with_Ubuntu_14.04.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_with_Ubuntu_14.04.html</guid>
                <description>This is a guide on setting up an IPSEC/L2TP vpn server with Ubuntu 14.04 using Openswan as the IPsec server, xl2tpd as the l2tp provider and ppp or local users / PAM for authentication. It has a detailed explanation with every step. We choose the IPSEC/L2TP protocol stack because of recent vulnerabilities found in pptpd VPNs and because it is supported on all major operating systems by default. More than ever, your freedom and privacy when online is under threat. Governments and ISPs want to control what you can and can't see while keeping a record of everything you do, and even the shady-looking guy lurking around your coffee shop or the airport gate can grab your bank details easier than you may think. A self hosted VPN lets you surf the web the way it was intended: anonymously and without oversight.</description> 
                <pubDate>Mon, 01 Dec 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 01 Dec 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Ansible - Only if host is also in other hostgroup</title> 
                <link>https://raymii.org/s/tutorials/Ansible_-_Only_if_host_is_also_in_other_hostgroup.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Ansible_-_Only_if_host_is_also_in_other_hostgroup.html</guid>
                <description>This snippet helps you execute actions only when a host is in another hostgroup in Ansible. For example, you might deploy munin-node via ansible, but you only want your apache and NGINX plugins deployed on your webservers, not on your database servers.</description> 
                <pubDate>Tue, 25 Nov 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 25 Nov 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Build a FreeBSD 10.1-release Openstack Image with bsd-cloudinit</title> 
                <link>https://raymii.org/s/tutorials/FreeBSD_10.1-release_Openstack_Image.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/FreeBSD_10.1-release_Openstack_Image.html</guid>
                <description>We are going to prepare a FreeBSD image for Openstack deployment. We do this by creating a FreeBSD 10.1-RELEASE instance, installing it and converting it using bsd-cloudinit. We'll use the CloudVPS public Openstack cloud for this. We'll be using the Openstack command line tools, like nova, cinder and glance.</description> 
                <pubDate>Sun, 23 Nov 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 23 Nov 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Keepalived notify script, execute action on failover</title> 
                <link>https://raymii.org/s/tutorials/Keepalived_notify_script_execute_action_on_failover.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Keepalived_notify_script_execute_action_on_failover.html</guid>
                <description>Keepalived supports running scripts on VRRP state change. This can come in handy when you need to execute an action when a failover occurs. In my case, I have a VPN running on a Virtual IP and want to make sure the VPN only runs on the node with the Virtual IP.</description> 
                <pubDate>Sun, 26 Oct 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 26 Oct 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Set your IP as wallpaper</title> 
                <link>https://raymii.org/s/tutorials/Set-your-ip-as-wallpaper.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Set-your-ip-as-wallpaper.html</guid>
                <description>This  tutorial shows you how to set your IP address as wallpaper using Imagemagick</description> 
                <pubDate>Sun, 14 Sep 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 14 Sep 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>OpenVZ/Proxmox - Container to Template</title> 
                <link>https://raymii.org/s/tutorials/OpenVZ_Proxmox_Container_to_Template.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/OpenVZ_Proxmox_Container_to_Template.html</guid>
                <description>This guide will show you how to convert an OpenVZ (Proxmox) container to a template. You can then use this template on any other OpenVZ (or proxmox) host. This can be used either to migrate containers or to create a kind of master image to deploy new hosts from.</description> 
                <pubDate>Fri, 11 Jul 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 11 Jul 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Proxmox VE - One Public IP</title> 
                <link>https://raymii.org/s/tutorials/Proxmox_VE_One_Public_IP.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Proxmox_VE_One_Public_IP.html</guid>
                <description>This guide will show you how to set up Proxmox with only one public IP. We will configure an extra interface bridge and make sure VM traffic is NATed. I have a few dedicated servers, some run Proxmox. Most of them however have only a few IP's. Therefore the VM's in proxmox cannot all have a public IP. For most of them that is not a problem. If needed I run a proxy or set up iptables to forward ports to the VM's.</description> 
                <pubDate>Thu, 10 Jul 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Thu, 10 Jul 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Simple keepalived failover setup on Ubuntu 14.04</title> 
                <link>https://raymii.org/s/tutorials/Keepalived-Simple-IP-failover-on-Ubuntu.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Keepalived-Simple-IP-failover-on-Ubuntu.html</guid>
                <description>We are going to set up very simple keepalived IP failover on Ubuntu 14.04. Keepalived is a piece of software which can be used to achieve high availability by assigning two or more nodes a virtual IP and monitoring those nodes, failing over when one goes down.  Keepalived can do more, like load balancing and monitoring, but this tutorial focusses on a very simple setup, just IP failover.</description> 
                <pubDate>Fri, 13 Jun 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 13 Jun 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Build a FreeBSD 10.0-release Openstack Image with bsd-cloudinit</title> 
                <link>https://raymii.org/s/tutorials/FreeBSD_10.0-release_Openstack_Image.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/FreeBSD_10.0-release_Openstack_Image.html</guid>
                <description>We are going to prepare a FreeBSD image for Openstack deployment. We do this by creating a FreeBSD 10.0-RELEASE instance, installing it and converting it using bsd-cloudinit. We'll use the CloudVPS public Openstack cloud for this. We'll be using the Openstack command line tools, like nova, cinder and glance. This tutorial is more a collection of notes than what you are used of me, it has less explanation and such, just right on steps to get started.</description> 
                <pubDate>Wed, 11 Jun 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 11 Jun 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>OSSEC 2.8 Server, Client, Web UI and Analogi Dashboard Installation tutorial</title> 
                <link>https://raymii.org/s/tutorials/OSSEC_2.8.0_Server_Client_and_Analogi_Dashboard_on_Ubuntu.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/OSSEC_2.8.0_Server_Client_and_Analogi_Dashboard_on_Ubuntu.html</guid>
                <description>OSSEC is an Open Source Host-based Intrusion Detection System that performs log analysis, file integrity checking, policy monitoring, rootkit detection, real-time alerting and active response. It runs on most operating systems, including Linux, MacOS, Solaris, HP-UX, AIX and Windows. It also includes agentless monitoring for use with for example Cisco or Juniper hardware. This tutorial covers the installation of the OSSEC 2.8 server, the standard OSSEC Web UI and the Analogi dashboard on Ubuntu 14.04. It also covers OSSEC setup with MySQL support. Last but not least it shows you how to install the OSSEC agent on a *NIX system.</description> 
                <pubDate>Wed, 11 Jun 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 11 Jun 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Openstack Horizon installation with SSL on Ubuntu</title> 
                <link>https://raymii.org/s/tutorials/Openstack-Set-Up-Horizon-Dashboard-on-Ubuntu.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Openstack-Set-Up-Horizon-Dashboard-on-Ubuntu.html</guid>
                <description>This is a guide on installing the Openstack Horizon (icehouse) dashboard on Ubuntu 12.04 or 14.04, including SSL setup. It features nice screenshots and even an Ansible playbook to automate it all.</description> 
                <pubDate>Thu, 29 May 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Thu, 29 May 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Openstack Swift Objectstore Access via FTP</title> 
                <link>https://raymii.org/s/tutorials/Openstack-Swift-Objectstore-FTP-Access.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Openstack-Swift-Objectstore-FTP-Access.html</guid>
                <description>This is a guide on accessing the Openstack Swift Object Storage system using an FTP client. Openstack Swift has a beautiful API which you can program to. However, sometimes it is handy to quickly be able to access your Swift/Objectstore data without programming around it. We will use ftp-cloudfs to do this. There is also Softlayers swftp, but that does not support Keystone Authentication (2.0). ftp-cloudfs does support this. The OS X Cyberduck FTP client also has Openstack Swift support, however that is a native implementation, not using FTP. With ftp-cloudfs we can use any ftp client, from Filezilla to midnight commander.</description> 
                <pubDate>Sun, 25 May 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 25 May 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Encrypted Duplicity Backups to Openstack Swift Objectstore</title> 
                <link>https://raymii.org/s/tutorials/Encrypted_Duplicity_Backups_to_Openstack_Swift_Objectstore.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Encrypted_Duplicity_Backups_to_Openstack_Swift_Objectstore.html</guid>
                <description>This is a guide on backing up your data to an Openstack Swift (Objectstore) instance using Duplicity. It provides encrypted backups using gpg so that you can safely use any public cloud storage to store them. This tutorial is for Ubuntu and CentOS and includes initial setup plus a script to automate it all. We will be using the Dutch provider CloudVPS, which is a non american company, so your data is more safe than it is with a provider that is vulnerable to the patriot act. Although your data is already encrypted with GPG, you can never be to sure. CloudVPS provides 10GB free ObjectStore, if you have VPS with them, the data is stored on at least 3 machines in 3 locations and they have a boatload of certifications.</description> 
                <pubDate>Mon, 19 May 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 19 May 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>KVM add disk image or swap image to virtual machine with virsh</title> 
                <link>https://raymii.org/s/tutorials/KVM_add_disk_image_or_swap_image_to_virtual_machine_with_virsh.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/KVM_add_disk_image_or_swap_image_to_virtual_machine_with_virsh.html</guid>
                <description>This tutorial shows you how to create and add a disk image to a KVM vm using virsh. This is useful when you for example want to expand the disk space of your virtual machine when it is using LVM, or if you want to add a swap disk to a virtual machine.</description> 
                <pubDate>Sun, 23 Feb 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 23 Feb 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>KVM convert qcow2 disk images to raw disk images for performance</title> 
                <link>https://raymii.org/s/tutorials/KVM_convert_qcow2_disk_images_to_raw_disk_images_for_performance.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/KVM_convert_qcow2_disk_images_to_raw_disk_images_for_performance.html</guid>
                <description>This tutorial shows you how to convert KVM qcow2 disk images to raw disk images. The qcow2 disk format has some decent features like encryption, compression and copy to write support. However, the compression and the copy processes make it quite a bit slower than raw disk images. Sometimes you want to convert the disk images so that the VM will perform better. </description> 
                <pubDate>Sun, 16 Feb 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 16 Feb 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>KVM host with bonding and VLAN tagged Virtual Machines setup on Ubuntu 12.04</title> 
                <link>https://raymii.org/s/tutorials/KVM_with_bonding_and_VLAN_tagging_setup_on_Ubuntu_12.04.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/KVM_with_bonding_and_VLAN_tagging_setup_on_Ubuntu_12.04.html</guid>
                <description>This tutorial shows you how to setup Ubuntu 12.04 as a KVM host with multiple virtual machines. The kvm host will have VM's in multiple VLAN's and will handle the VLAN tagging over a bonded interface. It also covers creation of an example virtual machine with the ubuntu vmbuilder tool and shows you how to add a serial console to an ubuntu 12.04 virtual machine for troubleshooting.</description> 
                <pubDate>Sat, 15 Feb 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 15 Feb 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Bonding NIC Teaming on Ubuntu 12.04</title> 
                <link>https://raymii.org/s/tutorials/NIC_Bonding_on_Ubuntu_12.04.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/NIC_Bonding_on_Ubuntu_12.04.html</guid>
                <description>This tutorial shows you how to setup NIC bonding / NIC teaming on Ubuntu 12.04. Bonding, also called port trunking or link aggregation means combining several network interfaces (NICs) to a single link, providing either high-availability, load-balancing, maximum throughput, or a combination of these.</description> 
                <pubDate>Fri, 14 Feb 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 14 Feb 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Install extra software in the VMWare vCenter Appliance (VCSA)</title> 
                <link>https://raymii.org/s/tutorials/VMWare_vCenter_Appliance_Install_Extra_Software.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/VMWare_vCenter_Appliance_Install_Extra_Software.html</guid>
                <description>This tutorial shows you how to install extra software in the VMWare vCenter appliance (VCSA). VMWare provides a vCenter appliance, which is a SUSE Linux Enterprise Server appliance with the VMWare vCenter server software installed. Because this is SUSE, we can add repositories and install software from there. By default it comes without repositories enabled. I needed to do this because I want to use NRPE on the vCenter appliance.</description> 
                <pubDate>Wed, 05 Feb 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 05 Feb 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>OCSP Stapling on Apache</title> 
                <link>https://raymii.org/s/tutorials/OCSP_Stapling_on_Apache2.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/OCSP_Stapling_on_Apache2.html</guid>
                <description>This tutorial shows you how to set up OCSP stapling on Apache. OCSP stapling is an enhancement to the standard OCSP protocol that delivers OCSP responses from the server with the certificate, eliminating the need for relying parties (web users) to check OCSP responses with the issuing CA. This has the effect of reducing bandwidth, improving perceived site performance, and increasing security for everyone involved in establishing the secure session.</description> 
                <pubDate>Mon, 03 Feb 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 03 Feb 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>OCSP Stapling on nginx</title> 
                <link>https://raymii.org/s/tutorials/OCSP_Stapling_on_nginx.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/OCSP_Stapling_on_nginx.html</guid>
                <description>This tutorial shows you how to set up OCSP stapling on nginx. OCSP stapling is an enhancement to the standard OCSP protocol that delivers OCSP responses from the server with the certificate, eliminating the need for relying parties (web users) to check OCSP responses with the issuing CA. This has the effect of reducing bandwidth, improving perceived site performance, and increasing security for everyone involved in establishing the secure session.</description> 
                <pubDate>Mon, 03 Feb 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 03 Feb 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>haproxy: intercept all cookies and set secure attribute</title> 
                <link>https://raymii.org/s/tutorials/haproxy_intercept_all_cookies_and_set_secure_attribute.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/haproxy_intercept_all_cookies_and_set_secure_attribute.html</guid>
                <description>This snippet shows you how to use haproxy to set the secure attribute on cookies. You might have a backend application which is not able to set the secure attribute on cookies or for which haproxy does the ssl offloading. This simple frontend rspirep sets the secure attribute for all cookies.</description> 
                <pubDate>Sat, 01 Feb 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 01 Feb 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>rc.local support on Arch Linux with systemd</title> 
                <link>https://raymii.org/s/tutorials/rc.local_support_on_Arch_Linux_and_systemd.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/rc.local_support_on_Arch_Linux_and_systemd.html</guid>
                <description>This is a simple tutorial on how to get /etc/rc.local support back in Arch Linux or any distro with systemd. Arch Linux uses systemd. Therefore, init functions like rc.local are not supported anymore. This systemd service allows you to have support for `/etc/rc.local`.</description> 
                <pubDate>Mon, 13 Jan 2014 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 13 Jan 2014 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Ansible - Playbook Testing</title> 
                <link>https://raymii.org/s/tutorials/Ansible_-_Playbook_Testing.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Ansible_-_Playbook_Testing.html</guid>
                <description>This Ansible article shows you how to run a basic test on your playbooks to check if their syntax is correct. It shows methods for both Ansible 1.3 and 1.4. When you get more complicated Ansible playbooks you sometimes have syntax (YAML) errors in them. It sometimes can take a while before those errors show up because they are lower in a playbook. By running the syntax check you make sure this won't happen.</description> 
                <pubDate>Sun, 29 Dec 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 29 Dec 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Local W3C HTML5 Validator Server</title> 
                <link>https://raymii.org/s/tutorials/Local_W3C_HTML5_Validator_Server.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Local_W3C_HTML5_Validator_Server.html</guid>
                <description>This tutorial shows you how to set up a local instance of the w3c html validator, including HTML5 validation support via a local instance of the Validator.nu HTML5 validator. The online w3 validator has strict limits and will ban you for some time if you validate to often. So if you for example have a local unit test to check a website you will get banned a lot. Which is understandable of course, it is a free service. They provide all source code plus it is in the debian repositories, it is dead simple to set up one yourself.</description> 
                <pubDate>Fri, 27 Dec 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 27 Dec 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Ansible - Sudo sometimes</title> 
                <link>https://raymii.org/s/tutorials/Ansible_-_Better_sudo_control.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Ansible_-_Better_sudo_control.html</guid>
                <description>This Ansible tutorial shows you how run some actions via sudo and some not. It also shows you how to run an entire role via sudo or not.</description> 
                <pubDate>Sat, 21 Dec 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 21 Dec 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>haproxy: client side ssl certificates</title> 
                <link>https://raymii.org/s/tutorials/haproxy_client_side_ssl_certificates.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/haproxy_client_side_ssl_certificates.html</guid>
                <description>This tutorial shows you how to configure haproxy and client side ssl certificates. It features a few comprehensive examples.</description> 
                <pubDate>Wed, 18 Dec 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 18 Dec 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Back Up Thunderbird Message Filters</title> 
                <link>https://raymii.org/s/tutorials/Thunderbird_Back_Up_Mail__Message_Filters.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Thunderbird_Back_Up_Mail__Message_Filters.html</guid>
                <description>This tutorial shows you how to backup and restore the message filters in Thunderbird on multiple platforms.</description> 
                <pubDate>Sun, 15 Dec 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 15 Dec 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Install nmap 6.40 on Ubuntu 12.04</title> 
                <link>https://raymii.org/s/tutorials/Install_nmap_6_on_Ubuntu_12.04.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Install_nmap_6_on_Ubuntu_12.04.html</guid>
                <description>This tutorial shows you how to install nmap 6.40 on Ubuntu 12.04. Ubuntu 12.04 has nmap 5.21 in the repositories. nmap 6 features a lot of improvements like full IPv6 support and better and faster scanning.</description> 
                <pubDate>Fri, 13 Dec 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 13 Dec 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>ntop-ng 1.1 installation on Ubuntu 12.04</title> 
                <link>https://raymii.org/s/tutorials/ntop-ng-installation-on-Ubuntu.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/ntop-ng-installation-on-Ubuntu.html</guid>
                <description>This is a guide on installing the latest ntop-ng (1.1) on Ubuntu 12.04. ntopng is the next generation version of the original ntop, a network traffic probe that shows the network usage, similar to what the popular top Unix command does. ntop is based on libpcap and it has been written in a portable way in order to virtually run on every Unix platform, MacOSX and on Win32 as well. ntopng users can use a a web browser to navigate through ntop (that acts as a web server) traffic information and get a dump of the network status. In the latter case, ntop can be seen as a simple RMON-like agent with an embedded web interface. This tutorial will walk you through the compilation and installation of ntopng from source.</description> 
                <pubDate>Fri, 29 Nov 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 29 Nov 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Corosync Pacemaker - Execute script on failover</title> 
                <link>https://raymii.org/s/tutorials/Corosync_Pacemaker_-_Execute_a_script_on_failover.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Corosync_Pacemaker_-_Execute_a_script_on_failover.html</guid>
                <description>With Corosync/Pacemaker there is no easy way to simply run a script on failover. There are good reasons for this, but sometimes you want to do something simple. This tutorial describes how to change the Dummy OCF resource to execute a script on failover.</description> 
                <pubDate>Wed, 20 Nov 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 20 Nov 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Self Hosted CryptoCat - Secure self hosted multiuser webchat</title> 
                <link>https://raymii.org/s/tutorials/Self_Hosted_CryptoCat_-_Secure_Self_Hosted_Multiuser_Webchat.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Self_Hosted_CryptoCat_-_Secure_Self_Hosted_Multiuser_Webchat.html</guid>
                <description>This is a guide on setting up a self hosted secure multiuser webchat service with CryptoCat. It covers the set up of ejabberd, nginx and the web interface for CryptoCat. It supports secure encrypted group chat, secure encrypted private chat and file and photo sharing.</description> 
                <pubDate>Sat, 09 Nov 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 09 Nov 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Install the latest ZNC from source on Ubuntu</title> 
                <link>https://raymii.org/s/tutorials/Install_the_Lastest_ZNC_from_Source_in_Ubuntu.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Install_the_Lastest_ZNC_from_Source_in_Ubuntu.html</guid>
                <description>This tutorial will show you how to install the latest (1.0) version of ZNC (an advanced IRC bouncer) on Ubuntu from source. Why from source? The package in the repositories is quite old and missing features like multiple IRC networks. It also includes an upstart script, and an example config for ZNC. ZNC is an advanced IRC bouncer that is left connected so an IRC client can disconnect/reconnect without losing the chat session.</description> 
                <pubDate>Fri, 25 Oct 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 25 Oct 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Chef: search in recipe based on roles or recipes</title> 
                <link>https://raymii.org/s/tutorials/Chef_search_in_recipe_on_roles_or_recipes.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Chef_search_in_recipe_on_roles_or_recipes.html</guid>
                <description>Chef supports a very powerfull search syntax which allows you for example to search all nodes with the graphite-server role and get their IP addresses. This tutorial shows you how to search based on a role a node has or a recipe a node has, plus an example config file with erb syntax. It has an example cookbook which sets up collectd as client and graphite as server. It shows you how to use the search function of Chef to get the IP addresses of the graphite servers and place those in the collectd config files. This technique is applicable to all kinds of services that use a client-server model, for example, munin, haproxy, zabbix and many more.</description> 
                <pubDate>Tue, 08 Oct 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 08 Oct 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Chef: include_recipe only_if or not_if</title> 
                <link>https://raymii.org/s/tutorials/Chef_include_recipe_only_if_not_if.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Chef_include_recipe_only_if_not_if.html</guid>
                <description>Chef supports including other recipes in cookbooks, for example, I can include the MySQL recipe from a PHP recipe. However, this is not a normal resource but a normal method. Therefore it ignores anything passed to it, including only_if or not_if. This tutorial shows you how to include or not include a recipe based on a variable, comparable with not_if or only_if.</description> 
                <pubDate>Sun, 06 Oct 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 06 Oct 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Uninstall and Remove OSSEC</title> 
                <link>https://raymii.org/s/tutorials/Uninstall_OSSEC.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Uninstall_OSSEC.html</guid>
                <description>This small tutorial shows you how to remove an OSSEC installation. OSSEC is installed from source (via a script), so you have to remove all the things manually instead of with your package manager.</description> 
                <pubDate>Tue, 01 Oct 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 01 Oct 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>OSSEC Server, Client, Web UI and Analogi Dashboard Installation tutorial</title> 
                <link>https://raymii.org/s/tutorials/OSSEC_and_webui_and_analogi_dashboard_installation_on_Ubuntu.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/OSSEC_and_webui_and_analogi_dashboard_installation_on_Ubuntu.html</guid>
                <description>OSSEC is an Open Source Host-based Intrusion Detection System that performs log analysis, file integrity checking, policy monitoring, rootkit detection, real-time alerting and active response. It runs on most operating systems, including Linux, MacOS, Solaris, HP-UX, AIX and Windows. It also includes agentless monitoring for use with for example Cisco or Juniper hardware. This tutorial covers the installation of the OSSEC server, the standard OSSEC Web UI and the Analogi dashboard on Ubuntu 12.04. It also covers OSSEC setup with MySQL support, including a Makefile bugfix. Last but not least it shows you how to install the OSSEC agent on a *NIX system.</description> 
                <pubDate>Sat, 07 Sep 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 07 Sep 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Nagios - Hide all hosts in hostgroup</title> 
                <link>https://raymii.org/s/tutorials/Nagios_-_Hide-entire-hostgroup.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Nagios_-_Hide-entire-hostgroup.html</guid>
                <description>This tutorial shows you how to hide all hosts from a hostgroup in Nagios, including the webinterface and email/sms notifications. It does however monitors and checks all the hosts in the hostgroup, so when there are problems you can view the hosts in Nagios. This is usefull for example when you have a staging, preproduction and production environment monitored by the same Nagios host, or by a Nagios cluster, and want to hide all of staging, but do want to quickly view the status when developers complain about a node.</description> 
                <pubDate>Tue, 30 Jul 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 30 Jul 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Stong SSL Security on Lighttpd</title> 
                <link>https://raymii.org/s/tutorials/Pass_the_SSL_Labs_Test_on_Lighttpd_(Mitigate_the_CRIME_and_BEAST_attack_-_Disable_SSLv2_-_Enable_PFS).html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Pass_the_SSL_Labs_Test_on_Lighttpd_(Mitigate_the_CRIME_and_BEAST_attack_-_Disable_SSLv2_-_Enable_PFS).html</guid>
                <description>This tutorial shows you how to set up strong SSL security on the lighttpd webserver. We do this by disabling SSL Compression to mitigate the CRIME attack, disable SSLv3 and below because of vulnerabilities in the protocol and we will set up a strong ciphersuite that enables Forward Secrecy when possible. This way we have a strong and future proof ssl configuration and we get an A on the Qually Labs SSL Test.</description> 
                <pubDate>Wed, 24 Jul 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 24 Jul 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Pass the SSL Labs Test on NGINX (Mitigate the CRIME and BEAST attack, Disable SSLv2 and Enable Perfect Forward Secrecy).</title> 
                <link>https://raymii.org/s/tutorials/Pass_the_SSL_Labs_Test_on_NGINX_(Mitigate_the_CRIME_and_BEAST_attack_-_Disable_SSLv2_-_Enable_PFS).html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Pass_the_SSL_Labs_Test_on_NGINX_(Mitigate_the_CRIME_and_BEAST_attack_-_Disable_SSLv2_-_Enable_PFS).html</guid>
                <description>This tutorial shows you how to get an A on the SSL Labs test using the NGINX webserver. We do this by disabling CBC based ciphers to mitigate the BEAST attack, disabling SSL Compression to mitigate the CRIME attack, disable SSLv2 and below because of vulnerabilities in the protocol and we will enable Perfect Forward Secrecy when possible. This way we have a future proof ssl configuration and we get an A on the Qually Labs SSL Test.</description> 
                <pubDate>Tue, 23 Jul 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 23 Jul 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Pass the SSL Labs Test on Apache2 (Mitigate the CRIME and BEAST attack, Disable SSLv2 and Enable Perfect Forward Secrecy).</title> 
                <link>https://raymii.org/s/tutorials/Pass_the_SSL_Labs_Test_on_Apache2_(Mitigate_the_CRIME_and_BEAST_attack_-_Disable_SSLv2_-_Enable_PFS).html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Pass_the_SSL_Labs_Test_on_Apache2_(Mitigate_the_CRIME_and_BEAST_attack_-_Disable_SSLv2_-_Enable_PFS).html</guid>
                <description>This tutorial shows you how to get an A on the SSL Labs test using the Apache2 webserver. We do this by disabling CBC based ciphers to mitigate the BEAST attack, disabling SSL Compression to mitigate the CRIME attack, disable SSLv2 and below because of vulnerabilities in the protocol and we will enable Perfect Forward Secrecy when possible. This way we have a future proof ssl configuration and we get an A on the Qually Labs SSL Test.</description> 
                <pubDate>Sat, 20 Jul 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 20 Jul 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Samba Shares with Active Directory Login on Ubuntu 12.04</title> 
                <link>https://raymii.org/s/tutorials/SAMBA_Share_with_Active_Directory_Login_on_Ubuntu_12.04.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/SAMBA_Share_with_Active_Directory_Login_on_Ubuntu_12.04.html</guid>
                <description>This tutorial shows you how to set up a SAMBA server which authenticates all users to an Active Directory, including group based permissions. It uses Samba, Winbind, Kerberos and nsswitch. This allows you to have a Linux machine serving files via SMB, where your authentication and autorization for the files and folders is done via Active Directory.</description> 
                <pubDate>Thu, 27 Jun 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Thu, 27 Jun 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Dogtag / Red Hat Certificate System reset admin pkiconsole password</title> 
                <link>https://raymii.org/s/tutorials/Dogtag_Red_Hat_Certificate_System_Reset_Admin_pkiconsole_Password.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Dogtag_Red_Hat_Certificate_System_Reset_Admin_pkiconsole_Password.html</guid>
                <description>This tutorial shows you how to reset the password for the PKI Console within the Red Hat Certificate System (Dogtag).</description> 
                <pubDate>Wed, 19 Jun 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 19 Jun 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Ejabberd SSL Certificate</title> 
                <link>https://raymii.org/s/tutorials/Ejabberd_SSL_Certificate.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Ejabberd_SSL_Certificate.html</guid>
                <description>This tutorial shows you how to set up an SSL Certificate for use with Ejabberd. It covers both the creation of the Certificate Signing Request, the preparing of the certificate for use with Ejabberd and the installation of the certificate.</description> 
                <pubDate>Thu, 13 Jun 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Thu, 13 Jun 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Ejabberd Active Directory LDAP Login</title> 
                <link>https://raymii.org/s/tutorials/Ejabberd_Active_Directory_LDAP_Login.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Ejabberd_Active_Directory_LDAP_Login.html</guid>
                <description>This tutorial shows you how to set up ejabberd to authenticate to an Active Directory LDAP.</description> 
                <pubDate>Wed, 12 Jun 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 12 Jun 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Set up a federated XMPP Chat Network with ejabberd, your own Google Talk Hangouts alternative</title> 
                <link>https://raymii.org/s/tutorials/Set_up_a_federated_XMPP_Chat_Network_with_ejabberd.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Set_up_a_federated_XMPP_Chat_Network_with_ejabberd.html</guid>
                <description>This tutorial shows you how to set up your own federated chat network using ejabberd. It covers a basic single node ejabberd server and also the setup of an ejabberd cluster, including errors and DNS SRV record examples. Last but not least federation is also covered.</description> 
                <pubDate>Tue, 11 Jun 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 11 Jun 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Gitlab Active Directory LDAP Authentication</title> 
                <link>https://raymii.org/s/tutorials/Gitlab_and_Active_Directory_LDAP_Authentication.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Gitlab_and_Active_Directory_LDAP_Authentication.html</guid>
                <description>Gitlab is a self hosted git based source control application similar to Github, written in Ruby on Rails. It is used by many organisations and is a wonderfull piece of software. It supports LDAP Authentication (via the OmniAuth Gem), but it is tricky to set up with Active Directory and Windows Server 2003/2008/2012. This tutorials shows you how to set up Gitlab to authenticate against Active Directory LDAP.</description> 
                <pubDate>Tue, 28 May 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 28 May 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Exchange 2007 and 2010 Autodiscovery DNS SRV record for BIND</title> 
                <link>https://raymii.org/s/tutorials/Exchange_2007_2010_Autodiscovery_DNS_SRV_record_for_BIND.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Exchange_2007_2010_Autodiscovery_DNS_SRV_record_for_BIND.html</guid>
                <description>This is a BIND configuration example to set up Exchange Autodiscovery. Autodiscovery is the ability for Outlook to automatically configure itself to an Exchange 2007/2010 server. The main benefit is for remote users to use Outlook on the Internet as if it was connected on the LAN, this is called Outlook Anywhere or Outlook RPC over HTTP. This is very easily accomplished by having a specific DNS record available for the domain. However, the only examples Microsoft gives you are for their own software. This is the BIND version of the record.</description> 
                <pubDate>Thu, 09 May 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Thu, 09 May 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Hide or determine BIND version number</title> 
                <link>https://raymii.org/s/tutorials/Get_DNS_server_version_and_hide_it_in_BIND.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Get_DNS_server_version_and_hide_it_in_BIND.html</guid>
                <description>The BIND nameserver (and many others) return their version number when queried a special DNS query. This tutorial shows you how to query the BIND version and how to stop your own BIND server sending its version out.</description> 
                <pubDate>Wed, 08 May 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 08 May 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Set up a Collectd client</title> 
                <link>https://raymii.org/s/tutorials/Collectd_client_setup_tutorial.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Collectd_client_setup_tutorial.html</guid>
                <description>This tutorial shows you how to set up a collectd client for use with a collectd server. What is collectd? collectd gathers statistics about the system it is running on and stores this information. Those statistics can then be used to find current performance bottlenecks (i.e. performance analysis) and predict future system load (i.e. capacity planning). Or if you just want pretty graphs of your private server and are fed up with some homegrown solution you're at the right place, too ;).</description> 
                <pubDate>Tue, 09 Apr 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 09 Apr 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Set up a Collectd server with web frontend</title> 
                <link>https://raymii.org/s/tutorials/Collectd_server_setup_tutorial_with_web_frontend.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Collectd_server_setup_tutorial_with_web_frontend.html</guid>
                <description>This tutorial shows you how to set up a collectd server. It also shows you how to set up the collectd-web frontend, an interactive gui for collectd, and has it all firewalled. What is collectd? collectd gathers statistics about the system it is running on and stores this information. Those statistics can then be used to find current performance bottlenecks (i.e. performance analysis) and predict future system load (i.e. capacity planning). Or if you just want pretty graphs of your private server and are fed up with some homegrown solution you're at the right place, too ;). A collectd server is able to receive data from collectd clients.</description> 
                <pubDate>Tue, 09 Apr 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 09 Apr 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>NGINX: Proxy folders to different root</title> 
                <link>https://raymii.org/s/tutorials/NGINX_proxy_folder_to_different_root.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/NGINX_proxy_folder_to_different_root.html</guid>
                <description>This tutorial shows you how to have NGINX use different folders as different upstream proxy's, without the proxy also having the folder. For example, if you proxy www.example.com/wiki to server wiki.example.com, by default it will go to wiki.example.com/wiki. This tutorial has a rewrite rule to fix that.</description> 
                <pubDate>Thu, 04 Apr 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Thu, 04 Apr 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Silent unatended apt-get upgrade</title> 
                <link>https://raymii.org/s/tutorials/Silent-automatic-apt-get-upgrade.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Silent-automatic-apt-get-upgrade.html</guid>
                <description>This tutorial will show you how to setup completely silent apt-get upgrade via cron. It also defaults to not overwriting config files if a package has a newer version.</description> 
                <pubDate>Sat, 30 Mar 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 30 Mar 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Ansible - sudoers safety and sanity checking in playbook</title> 
                <link>https://raymii.org/s/tutorials/Ansible_-_Sudo_Safety_and_Sanity_Checks.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Ansible_-_Sudo_Safety_and_Sanity_Checks.html</guid>
                <description>Using Ansible to manage the /etc/sudoers file is fine, except when you have a syntax error in your template. This method helps you to only deploy a correct sudoers file.</description> 
                <pubDate>Sat, 23 Mar 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 23 Mar 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Ansible - pure ssh based configuration management and deployment</title> 
                <link>https://raymii.org/s/tutorials/Ansible_Deployment_Framework.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Ansible_Deployment_Framework.html</guid>
                <description>This tutorial will get you started with Ansible. Ansible is a radically simple model-driven configuration management, deployment, and command execution framework. Other tools in this space have been too complicated for too long, require too much bootstrapping, and have too much learning curve. By comparison, Ansible is dead simple and painless to extend. Puppet and Chef have about 60k lines of code. Ansibles core is a little over 2000 lines.</description> 
                <pubDate>Sat, 09 Mar 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 09 Mar 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Screenfetch installation tutorial</title> 
                <link>https://raymii.org/s/tutorials/Screenfetch_installation_tutorial.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Screenfetch_installation_tutorial.html</guid>
                <description>This tutorial will show you how to install screenfetch, a bash information tool. It displays handy system information at login, including distro name, kernel, uptime, cpu, ram and nice distro-based artwork. The tutorial includes support for bash and zsh, for every supported linux OS (ubuntu, centos, arch, redhat, solusOS, linux mint and more.)</description> 
                <pubDate>Sat, 09 Mar 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 09 Mar 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Better Cron env and shell control with the SHELL variable</title> 
                <link>https://raymii.org/s/tutorials/Better_cron_env_and_shell_control_with_the_SHELL_variale.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Better_cron_env_and_shell_control_with_the_SHELL_variale.html</guid>
                <description>Have better control over env variables and shell settings in cron via the SHELL variable and a few scripts.</description> 
                <pubDate>Fri, 08 Mar 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 08 Mar 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Create a VMWare ESXi 5  5.1 5.5 USB install disk</title> 
                <link>https://raymii.org/s/tutorials/VMWare-ESXi-5-USB-installer.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/VMWare-ESXi-5-USB-installer.html</guid>
                <description>This tutorial will show you how you can convert a VMWare ESXi 5, 5.1 and 5.5 iso image to a USB install disk. You will learn how to create a USB drive from which you can install VMWare ESXi 5.1. This also works for the special HP version of ESXi with all the drivers.</description> 
                <pubDate>Wed, 27 Feb 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 27 Feb 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Basic website and database backups with Duplicity</title> 
                <link>https://raymii.org/s/tutorials/Website-and-database-backup-with-Duplicity.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Website-and-database-backup-with-Duplicity.html</guid>
                <description>This tutorial will help you backup your website and database with Duplicity. You can safely backup your MySQL, MongoDB, website and other data to an off-site location.</description> 
                <pubDate>Fri, 15 Feb 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 15 Feb 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>RT (Request Tracker) - find and delete big attachments</title> 
                <link>https://raymii.org/s/tutorials/RT_find__and_delete_big_attachments.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/RT_find__and_delete_big_attachments.html</guid>
                <description>RT (Request Tracker) can save attachments. It saves these in the database (mysql). I had an issue where my mysqldump used in backupping RT would fail due to an mysqldump: Error 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table Attachments at row: xxxxx error. Adding the --max_allowed_packet=500M parameter to the mysqldump command didn't work, so here is how to search and find big attachments in RT using mysql.</description> 
                <pubDate>Thu, 17 Jan 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Thu, 17 Jan 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Install python 2.7 or 3 under Debian 6</title> 
                <link>https://raymii.org/s/tutorials/Install_Python_2.7_or_3_on_debian_6.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Install_Python_2.7_or_3_on_debian_6.html</guid>
                <description>Debian 6 by default ships with python 2.6.6. If for some reason need a newer version of python you can either mess with repo's, compile from source or use pythonbrew. This tutorial will show you how to install python 2.7 or 3 under debian 6 using pythonbrew.</description> 
                <pubDate>Tue, 15 Jan 2013 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 15 Jan 2013 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Exchange 2010 - OWA - Lock user after x amount of failed logins</title> 
                <link>https://raymii.org/s/tutorials/Exchange_2010_OWA_lock_users_after_x_amount_of_failed_logins.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Exchange_2010_OWA_lock_users_after_x_amount_of_failed_logins.html</guid>
                <description>This is a tutorial to set up automatic user lockout in Exchange 2010 - Outlook Web Acces (OWA). When a user does 5 wrong login attempts, he/she is locked out from the webinterface. After for example 5 minutes he or she is unlocked again automatically. This helps you mitigate brute force attacks, since an attacker can only try 1 password/minute, but the user will not be blocked for to long. Exchange 2010 has some special register settings to make IIS stop caching, otherwise it would not work. As a bonus you get an LDAP saved search query to view locked out users</description> 
                <pubDate>Wed, 19 Dec 2012 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 19 Dec 2012 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Restore iptables rules after a reboot on debian</title> 
                <link>https://raymii.org/s/tutorials/Restore-iptables-rules-after-a-reboot-on-debian.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Restore-iptables-rules-after-a-reboot-on-debian.html</guid>
                <description>This small tutorial will help you set up iptables to survive a reboot.</description> 
                <pubDate>Wed, 12 Dec 2012 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 12 Dec 2012 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Resize OS X Mountain Lion installer to fit on a single layer 4.7 GB DVD</title> 
                <link>https://raymii.org/s/tutorials/OS-X-Mountain_Lion_iso_resize_to_fit_on_a_single_layer_dvd.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/OS-X-Mountain_Lion_iso_resize_to_fit_on_a_single_layer_dvd.html</guid>
                <description>This script will help you resize the OS X Mountain Lion InstallESD.dmg file to fit on a single layer DVD. The normal .dmg file will give an error that it is to big for a single layer DVD. The install works fine afterwards, the .dmg file just has a defined size of 4.75 GB. Resizing it via the Disk Utility will not work because it is a read only dmg image.</description> 
                <pubDate>Tue, 11 Dec 2012 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 11 Dec 2012 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Munin optimization guide for Debian (rrdcached, tmpfs, ionice and nice)</title> 
                <link>https://raymii.org/s/tutorials/Munin_optimalization_on_Debian.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Munin_optimalization_on_Debian.html</guid>
                <description>This is a tutorial to help you tune the performance of Munin using rrdcached, tmpfs, ionice, nice and a few other tricks.</description> 
                <pubDate>Sat, 08 Dec 2012 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 08 Dec 2012 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>ClamAV installation and daily scan + report on Ubuntu</title> 
                <link>https://raymii.org/s/tutorials/ClamAV.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/ClamAV.html</guid>
                <description>Not available.</description> 
                <pubDate>Sat, 01 Dec 2012 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 01 Dec 2012 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Limit access to openssh features with the Match option</title> 
                <link>https://raymii.org/s/tutorials/Limit_access_to_openssh_features_with_the_Match_keyword.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Limit_access_to_openssh_features_with_the_Match_keyword.html</guid>
                <description>Not available.</description> 
                <pubDate>Sat, 24 Nov 2012 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 24 Nov 2012 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Set up your own distributed, redundant, and encrypted storage grid with Tahoe-LAFS</title> 
                <link>https://raymii.org/s/tutorials/Tahoe_LAFS_Storage_Grid.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Tahoe_LAFS_Storage_Grid.html</guid>
                <description>This article covers the installation and configuration of Tahoe/LAFS, a distributed, encrypted and redundant storage clustering grid.</description> 
                <pubDate>Thu, 08 Nov 2012 00:00:00 GMT</pubDate>
                <lastBuildDate>Thu, 08 Nov 2012 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>ed cheatsheet</title> 
                <link>https://raymii.org/s/tutorials/ed_cheatsheet.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/ed_cheatsheet.html</guid>
                <description>Not available.</description> 
                <pubDate>Sat, 06 Oct 2012 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 06 Oct 2012 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Persistent reverse (NAT bypassing) SSH tunnel access with autossh</title> 
                <link>https://raymii.org/s/tutorials/Autossh_persistent_tunnels.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Autossh_persistent_tunnels.html</guid>
                <description>Not available.</description> 
                <pubDate>Fri, 05 Oct 2012 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 05 Oct 2012 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Set up a local Ubuntu (apt) repository with apt-mirror</title> 
                <link>https://raymii.org/s/tutorials/Set_up_a_local_Ubuntu_debian_apt_mirror.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Set_up_a_local_Ubuntu_debian_apt_mirror.html</guid>
                <description>This tutorial shows you how to setup your own debian/ubuntu package repository with apt-mirror.</description> 
                <pubDate>Wed, 28 Mar 2012 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 28 Mar 2012 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Stopping fail2ban.server : ERROR Unexpected communication error and other errors in fail2ban on ubuntu 9.04</title> 
                <link>https://raymii.org/s/tutorials/Stopping-fail2ban.server-ERROR-Unexpected-communication-error-and-other-errors-in-fail2ban-on-ubuntu-9.04.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Stopping-fail2ban.server-ERROR-Unexpected-communication-error-and-other-errors-in-fail2ban-on-ubuntu-9.04.html</guid>
                <description>This tutorial will show you how to stop fail2ban.server : ERROR Unexpected communication errors on Ubuntu 9.04.</description> 
                <pubDate>Thu, 23 Jun 2011 00:00:00 GMT</pubDate>
                <lastBuildDate>Thu, 23 Jun 2011 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Introduction to DokuWiki</title> 
                <link>https://raymii.org/s/tutorials/Dokuwiki_Overview.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Dokuwiki_Overview.html</guid>
                <description>Not available.</description> 
                <pubDate>Wed, 15 Jun 2011 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 15 Jun 2011 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Introduction to Markdown</title> 
                <link>https://raymii.org/s/tutorials/Markdown_Introduction_Tutorial_Overview.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Markdown_Introduction_Tutorial_Overview.html</guid>
                <description>Not available.</description> 
                <pubDate>Sun, 12 Jun 2011 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 12 Jun 2011 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Tether your Sonim XP3 phone with Linux</title> 
                <link>https://raymii.org/s/tutorials/Tether-your-sonim-xp3-phone-with-linux.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Tether-your-sonim-xp3-phone-with-linux.html</guid>
                <description>This tutorial shows you how tot tether your sonim xp3 phone with (arch) linux.</description> 
                <pubDate>Tue, 08 Feb 2011 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 08 Feb 2011 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>What to do if you cannot execute CHMOD</title> 
                <link>https://raymii.org/s/tutorials/What-to-do-if-you-cannot-execute-chmod.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/What-to-do-if-you-cannot-execute-chmod.html</guid>
                <description>This tutorial shows you how to execute chmod when you have screwed up the permissions of chmod.</description> 
                <pubDate>Sat, 15 May 2010 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 15 May 2010 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Customize your Clonezilla Live CD</title> 
                <link>https://raymii.org/s/tutorials/Customize-your-clonezilla-live-CD.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Customize-your-clonezilla-live-CD.html</guid>
                <description>Not available.</description> 
                <pubDate>Fri, 01 Jan 2010 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 01 Jan 2010 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Debian packages clean up commands</title> 
                <link>https://raymii.org/s/tutorials/Debian-apt-get-dpkg-packages-cleanup-commands.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Debian-apt-get-dpkg-packages-cleanup-commands.html</guid>
                <description>Not available.</description> 
                <pubDate>Fri, 01 Jan 2010 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 01 Jan 2010 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Postfix: log message from, to and subject</title> 
                <link>https://raymii.org/s/tutorials/Postfix_Log_message_from_to_and_subject_headers.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Postfix_Log_message_from_to_and_subject_headers.html</guid>
                <description>This tutorial shows you how to set up postfix to log email subject and other headers.</description> 
                <pubDate>Sat, 28 Mar 2009 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 28 Mar 2009 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Setting up Motion with FTP and Email! support</title> 
                <link>https://raymii.org/s/tutorials/Setting-up-motion-with-ftp-and-email-support.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Setting-up-motion-with-ftp-and-email-support.html</guid>
                <description>Not available.</description> 
                <pubDate>Wed, 09 Apr 2008 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 09 Apr 2008 00:00:00 GMT</lastBuildDate>
            </item>
    
        </channel>
    </rss>
    
    