<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Service on Nobody&#39;s Home</title>
    <link>https://new.cloud.nobodyhome.dev/tags/service/</link>
    <description>Recent content in Service on Nobody&#39;s Home</description>
    <generator>Hugo -- 0.154.5</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 24 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://new.cloud.nobodyhome.dev/tags/service/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Hugo Static Site Generator</title>
      <link>https://new.cloud.nobodyhome.dev/posts/hugo/</link>
      <pubDate>Fri, 24 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://new.cloud.nobodyhome.dev/posts/hugo/</guid>
      <description>&lt;h2 id=&#34;hugo-site-example&#34;&gt;Hugo Site Example:&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;nobodyhome&#34; loading=&#34;lazy&#34; src=&#34;https://new.cloud.nobodyhome.dev/assets/hugo/nobodyhome.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This guide is not all inclusive. &lt;a href=&#34;https://gohugo.io/getting-started/quick-start/&#34;&gt;RTFM&lt;/a&gt;. Hugo is a static site generator, converting your .md text files, and a chosen theme into a modern looking website (like this one). There are a staggering number of &lt;a href=&#34;https://themes.gohugo.io/&#34;&gt;themes&lt;/a&gt; to give you the look and feel that your site needs.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;themes&#34; loading=&#34;lazy&#34; src=&#34;https://new.cloud.nobodyhome.dev/assets/hugo/hugo_themes.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;everything-up-front&#34;&gt;Everything Up Front&lt;/h2&gt;
&lt;p&gt;It all starts with the &lt;code&gt;hugo.yaml&lt;/code&gt; file (you can use .toml too, but that&amp;rsquo;s beyond my expertise, consult the hugo &lt;a href=&#34;https://gohugo.io/documentation/&#34;&gt;documentation&lt;/a&gt;). Here is the configuration for this site:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker Permissions</title>
      <link>https://new.cloud.nobodyhome.dev/posts/docker-permissions/</link>
      <pubDate>Sun, 12 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://new.cloud.nobodyhome.dev/posts/docker-permissions/</guid>
      <description>&lt;h3 id=&#34;references&#34;&gt;References:&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://man7.org/linux/man-pages/man7/capabilities.7.html&#34;&gt;Man Page&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://new.cloud.nobodyhome.dev/posts/install-docker/&#34;&gt;Install Docker Tutorial&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;docker-containers-can-do-too-much&#34;&gt;Docker Containers Can Do Too Much&lt;/h3&gt;
&lt;p&gt;Your containers can do too much. Look at all the capabilities a Docker container gets by default:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;  - SYS_ADMIN
  - NET_ADMIN
  - NET_RAW
  - FOWNER
  - SETGID
  - SETUID
  - CHOWN
  - AUDIT_CONTROL
  - AUDIT_READ
  - AUDIT_WRITE
  - BLOCK_SUSPEND
  - BPF
  - CHECKPOINT_RESTORE
  - DAC_READ_SEARCH
  - DAC_OVERRIDE
  - FSETID
  - IPC_LOCK
  - KILL
  - LEASE
  - LINUX_IMMUTABLE
  - MAC_ADMIN
  - MAC_OVERRIDE
  - MKNOD
  - NET_ADMIN
  - NET_BIND_SERVICE
  - NET_BROADCAST
  - PERFMON
  - SETFCAP
  - SETPCAP
  - SYS_BOOT
  - SYS_CHROOT
  - SYS_NICE
  - SYS_PACCT
  - SYS_PTRACE
  - SYS_RAWIO
  - SYS_RESOURCE
  - SYS_TIME
  - SYS_TTY_CONFIG
  - SYSLOG
  - WAKE_ALARM
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This should &lt;strong&gt;clearly&lt;/strong&gt; be limited. Containers share functions of the host kernel, it&amp;rsquo;s how they cut down on overhead. Giving unecessary permissions violates the security principle of least privilege. So, how go about it?&lt;/p&gt;</description>
    </item>
    <item>
      <title>AdGuardHome</title>
      <link>https://new.cloud.nobodyhome.dev/posts/adguardhome/</link>
      <pubDate>Sat, 14 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://new.cloud.nobodyhome.dev/posts/adguardhome/</guid>
      <description>&lt;h4 id=&#34;references&#34;&gt;References&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://adguard-dns.io/kb/adguard-home/getting-started/&#34;&gt;AdGuardHome&lt;/a&gt;
&lt;a href=&#34;https://github.com/AdguardTeam/AdGuardHome/releases/tag/v0.107.73&#34;&gt;Download AdGuardHome&lt;/a&gt;
&lt;a href=&#34;https://adguard-dns.io/kb/adguard-home/faq/&#34;&gt;Fix systemd-resolved&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;why-adguardhome&#34;&gt;Why AdGuardHome?&lt;/h4&gt;
&lt;p&gt;AdGuard has become a key service in my homelab. I&amp;rsquo;m so used to having ads blocked across my network, it&amp;rsquo;s a surprise loading a site away from home and seeing the broken hellscape of ads everywhere. Get a network level adblocker and learn how to use it. The less tech savvy folks in your home will thank you.&lt;/p&gt;
&lt;h4 id=&#34;installation&#34;&gt;Installation&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/AdguardTeam/AdGuardHome/releases/tag/v0.107.73&#34;&gt;Download&lt;/a&gt; the latest version of AdGuardHome&lt;/li&gt;
&lt;li&gt;Extract using &lt;code&gt;tar -xf AdGuardHome_linux_amd64.tar.gz&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Move the folder to the  destination: &lt;code&gt;mv AdGuardHome [DESTINATION]&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fedora&lt;/strong&gt;: &lt;code&gt;/usr/local/bin/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ubuntu&lt;/strong&gt;: &lt;code&gt;/opt/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Install using &lt;code&gt;sudo ./AdGuardHome -s install&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Set up your account at &lt;code&gt;http://ADGUARD-SERVER:3000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Set your router&amp;rsquo;s DNS server to point at your AdGuardHome server (steps will vary by router)
&lt;img alt=&#34;dns settings&#34; loading=&#34;lazy&#34; src=&#34;https://new.cloud.nobodyhome.dev/assets/adguardhome/dns_settings.png&#34;&gt;&lt;/li&gt;
&lt;li&gt;Set your AdGuard
&lt;ul&gt;
&lt;li&gt;Block Lists
&lt;img alt=&#34;dns blocklists&#34; loading=&#34;lazy&#34; src=&#34;https://new.cloud.nobodyhome.dev/assets/adguardhome/dns_blocklists.png&#34;&gt;&lt;/li&gt;
&lt;li&gt;Upstream Providers
&lt;img alt=&#34;dns providers&#34; loading=&#34;lazy&#34; src=&#34;https://new.cloud.nobodyhome.dev/assets/adguardhome/dns_providers.png&#34;&gt;&lt;/li&gt;
&lt;li&gt;DNS Rewrites&lt;/li&gt;
&lt;li&gt;Allow Lists&lt;/li&gt;
&lt;li&gt;Custom Rules
&lt;img alt=&#34;dns custom rules&#34; loading=&#34;lazy&#34; src=&#34;https://new.cloud.nobodyhome.dev/assets/adgaurdhome/dns_custom_rules.png&#34;&gt;&lt;/li&gt;
&lt;li&gt;Back up you AdGuardHome.yaml&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h5 id=&#34;deploy-with-docker-compose&#34;&gt;Deploy with Docker Compose:&lt;/h5&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;services:
  adguardhome:
    image: adguard/adguardhome
    container_name: adguardhome
    volumes:
	    #place AdGuardHome.yaml here if you already have a configured instance
      - [map to your /conf directory]:/opt/adguardhome/conf 
      - [map to your /work directory]:/opt/adguardhome/work
    deploy: 
      mode: global
    ports:
      - &amp;#34;53:53/udp&amp;#34;  # &amp;lt;Host Port&amp;gt;:&amp;lt;Container Port&amp;gt;
      - &amp;#34;53:53/tcp&amp;#34;
      - &amp;#34;67:67/udp&amp;#34;
#      - &amp;#34;68:68/udp&amp;#34;
      - &amp;#34;80:80/tcp&amp;#34;
      - &amp;#34;443:443/tcp&amp;#34;
      - &amp;#34;443:443/udp&amp;#34;
      - &amp;#34;3000:3000/tcp&amp;#34;
      - &amp;#34;853:853/tcp&amp;#34;
      - &amp;#34;853:853/udp&amp;#34;
      - &amp;#34;8853:8853/udp&amp;#34;
      - &amp;#34;784:784/udp&amp;#34;
      - &amp;#34;5443:5443/tcp&amp;#34;
      - &amp;#34;5443:5443/udp&amp;#34;
    restart: unless-stopped
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;troubleshooting&#34;&gt;Troubleshooting&lt;/h4&gt;
&lt;h5 id=&#34;systemd-resolved&#34;&gt;Systemd-Resolved&lt;/h5&gt;
&lt;p&gt;Reference: &lt;a href=&#34;https://adguard-dns.io/kb/adguard-home/faq/&#34;&gt;Fix systemd-resolved&lt;/a&gt;
Us these steps when systemd is using port 53:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Proton Sieve Filters</title>
      <link>https://new.cloud.nobodyhome.dev/posts/sieve-filters/</link>
      <pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://new.cloud.nobodyhome.dev/posts/sieve-filters/</guid>
      <description>&lt;h2 id=&#34;references&#34;&gt;References:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://proton.me/support/email-inbox-filters&#34;&gt;Proton Email Filters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://proton.me/support/sieve-advanced-custom-filters&#34;&gt;Proton Sieve Filters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;why-sieve-filters&#34;&gt;Why Sieve Filters?&lt;/h2&gt;
&lt;p&gt;Rather than a long list of email filter rules that become unmanageable, Proton encourages the use of sieve filters - and &lt;strong&gt;limits&lt;/strong&gt; users to 250 filters total. Sieve allows a user to combine what might by over a dozen filter rules down into one logical, legible, flexible flow.&lt;/p&gt;
&lt;p&gt;This little blog post is specific to Proton and how they do email filters with Sieve. This post is not all encompassing, RTFM.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dockhand</title>
      <link>https://new.cloud.nobodyhome.dev/posts/dockhand/</link>
      <pubDate>Wed, 04 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://new.cloud.nobodyhome.dev/posts/dockhand/</guid>
      <description>&lt;h3 id=&#34;references&#34;&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=dwFktbtuTFQ&#34;&gt;TechHut&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://dockhand.pro/&#34;&gt;Dockhand&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://dockhand.pro/manual/&#34;&gt;Dockhand Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt=&#34;dashboard&#34; loading=&#34;lazy&#34; src=&#34;https://new.cloud.nobodyhome.dev/assets/dockhand/dockhand-dashboard.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;setup&#34;&gt;Setup&lt;/h3&gt;
&lt;h4 id=&#34;docker-compose&#34;&gt;Docker Compose:&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;services:
  dockhand:
    image: fnsys/dockhand:latest
    container_name: dockhand
    restart: unless-stopped
    ports:
      - &amp;#34;3000:3000&amp;#34;
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data:/app/data
      - /home/mechanicus/Code/compose:/mnt/compose
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Notes: using a separate data directory instead of a volume mount will make the container easier to manage and transfer if necessary&lt;/p&gt;
&lt;h4 id=&#34;adding-environments&#34;&gt;Adding Environments&lt;/h4&gt;
&lt;p&gt;My preferred method is to use the hawser connector:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker run -d --name hawser --restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /home/mechanicus/code/docker-compose/:/mnt/compose \
-p 2376:2376 -e TOKEN==[SECURE TOKEN] \
ghcr.io/finsys/hawser:latest
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Note: Include the location of compose files for easier management&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tailscale: Easy VPN</title>
      <link>https://new.cloud.nobodyhome.dev/posts/tailscale-easy-vpn/</link>
      <pubDate>Tue, 03 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://new.cloud.nobodyhome.dev/posts/tailscale-easy-vpn/</guid>
      <description>&lt;h3 id=&#34;references&#34;&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://tailscale.com&#34;&gt;Tailscale&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://login.tailscale.com/admin/machines&#34;&gt;Tailscale Admin Console&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;overview&#34;&gt;Overview&lt;/h3&gt;
&lt;p&gt;This walkthough is the very basics of setting up a Tailscale VPN for travel.&lt;/p&gt;
&lt;p&gt;Scenario: You like to travel, but have trouble accessing your accounts (banking, social media, entertainment) while you&amp;rsquo;re abroad. You travel with a laptop, but you also have a desktop device back home. Wouldn&amp;rsquo;t it be great if you could just access your accounts and services like you were sitting at your desktop?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install Docker</title>
      <link>https://new.cloud.nobodyhome.dev/posts/install-docker/</link>
      <pubDate>Sun, 31 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://new.cloud.nobodyhome.dev/posts/install-docker/</guid>
      <description>&lt;h4 id=&#34;references&#34;&gt;References&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.docker.com/engine/install/ubuntu/&#34;&gt;Docker&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;setup-debian-based&#34;&gt;Setup: Debian Based&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Add Docker&amp;#39;s official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  &amp;#34;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;#34;$VERSION_CODENAME&amp;#34;) stable&amp;#34; | \
  sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;setup-arch-based&#34;&gt;Setup: Arch Based&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Pamac (manjaro)
sudo pamac install docker docker-compose
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Arch
sudo pacman -Syu docker docker-compose
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Enable the docker service&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kasm Workspaces</title>
      <link>https://new.cloud.nobodyhome.dev/posts/kasm-workspace/</link>
      <pubDate>Sun, 31 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://new.cloud.nobodyhome.dev/posts/kasm-workspace/</guid>
      <description>&lt;h4 id=&#34;references&#34;&gt;References&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://kasmweb.com/docs/latest/install/single_server_install.html&#34;&gt;Kasm Documentation&lt;/a&gt;
&lt;a href=&#34;https://kasmweb.com/docs/latest/install/system_requirements.html&#34;&gt;Kasm System Requirements&lt;/a&gt;
&lt;a href=&#34;https://kasmweb.com/docs/latest/how_to/gpu.html&#34;&gt;Kasm GPU Install&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://new.cloud.nobodyhome.dev/posts/install-docker/&#34;&gt;Install Docker Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Swap Space&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;installation&#34;&gt;Installation&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;NOTE: check for the latest version&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd /tmp
curl -O https://kasm-static-content.s3.amazonaws.com/kasm_release_1.18.1.tar.gz
tar -xf kasm_release_1.18.1.tar.gz
sudo bash kasm_release/install.sh --accept-eula --swap-size 8192
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;gpu-setup&#34;&gt;GPU Setup&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;The Nvidia container setup instructions, and standard GPU driver installation threw an error: &lt;code&gt;nvidia runtime not found&lt;/code&gt;. The script on Kasm&amp;rsquo;s site worked.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/bash

# Check for NVIDIA cards
if ! lspci | grep -i nvidia &amp;gt; /dev/null; then
    echo &amp;#34;No NVIDIA GPU detected&amp;#34;
    exit 0
fi

add-apt-repository -y ppa:graphics-drivers/ppa

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  &amp;amp;&amp;amp; curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed &amp;#39;s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g&amp;#39; | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

apt update
apt install -y ubuntu-drivers-common

# Run ubuntu-drivers and capture the output
DRIVER_OUTPUT=$(ubuntu-drivers list 2&amp;gt;/dev/null)
# Extract server driver versions using grep and regex
# Pattern looks for nvidia-driver-XXX-server
SERVER_VERSIONS=$(echo &amp;#34;$DRIVER_OUTPUT&amp;#34; | grep -o &amp;#39;nvidia-driver-[0-9]\+-server&amp;#39; | grep -o &amp;#39;[0-9]\+&amp;#39; | sort -n)
# Check if any server versions were found
if [ -z &amp;#34;$SERVER_VERSIONS&amp;#34; ]; then
    echo &amp;#34;Error: No NVIDIA server driver versions found.&amp;#34; &amp;gt;&amp;amp;2
    exit 1
fi
# Find the highest version number
LATEST_VERSION=$(echo &amp;#34;$SERVER_VERSIONS&amp;#34; | tail -n 1)
# Validate that the version is numeric
if ! [[ &amp;#34;$LATEST_VERSION&amp;#34; =~ ^[0-9]+$ ]]; then
    echo &amp;#34;Error: Invalid version number: $LATEST_VERSION&amp;#34; &amp;gt;&amp;amp;2
    exit 2
fi
# Output only the version number
echo &amp;#34;Latest version is: $LATEST_VERSION&amp;#34;
ubuntu-drivers install &amp;#34;nvidia:$LATEST_VERSION-server&amp;#34;
apt install -y &amp;#34;nvidia-utils-$LATEST_VERSION-server&amp;#34;
# Install NVIDIA toolkit + configure for docker
apt-get install -y nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;egress-setup-nordvpn&#34;&gt;Egress Setup: NordVPN&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Get service credentials for the VPN: &lt;a href=&#34;https://my.nordaccount.com/dashboard/nordvpn/manual-configuration/service-credentials/&#34;&gt;Available on the VPN dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Download desired OpenVPN configuration files: &lt;a href=&#34;https://my.nordaccount.com/dashboard/nordvpn/manual-configuration/service-credentials/&#34;&gt;Available on the VPN dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;On Kasm Administrator dashboard, select Egress (Infrastructure &amp;gt; Egress)
&lt;ul&gt;
&lt;li&gt;Add the egress provider:
&lt;img alt=&#34;egress&#34; loading=&#34;lazy&#34; src=&#34;https://new.cloud.nobodyhome.dev/assets/kasm/egress_provider.png&#34;&gt;&lt;/li&gt;
&lt;li&gt;Configure VPN type:
&lt;img alt=&#34;provider&#34; loading=&#34;lazy&#34; src=&#34;https://new.cloud.nobodyhome.dev/assets/kasm/add_provider.png&#34;&gt;&lt;/li&gt;
&lt;li&gt;Add egress gateways:
&lt;img alt=&#34;add route&#34; loading=&#34;lazy&#34; src=&#34;https://new.cloud.nobodyhome.dev/assets/kasm/add_egress.png&#34;&gt;
&lt;img alt=&#34;add egress&#34; loading=&#34;lazy&#34; src=&#34;https://new.cloud.nobodyhome.dev/assets/kasm/egress_setup.png&#34;&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;On the Workspaces &amp;gt; Workspace page, select the workspace to allow it to use the VPN, click &lt;code&gt;edit&lt;/code&gt; and add the egress provider on the &lt;code&gt;Egress&lt;/code&gt; tab.&lt;/li&gt;
&lt;li&gt;On the &lt;code&gt;Egress Credentials&lt;/code&gt; tab, add in the service credentials for the VPN&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Keepalived</title>
      <link>https://new.cloud.nobodyhome.dev/posts/keepalived/</link>
      <pubDate>Sat, 27 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://new.cloud.nobodyhome.dev/posts/keepalived/</guid>
      <description>&lt;h4 id=&#34;explanation&#34;&gt;Explanation:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;vrrp_instance: a virtual router&lt;/li&gt;
&lt;li&gt;state: master or backup&lt;/li&gt;
&lt;li&gt;priority: higher priority means that router gets chosen more often&lt;/li&gt;
&lt;li&gt;authentication:
&lt;ul&gt;
&lt;li&gt;auth_type: can integrate with other ticket based authentication protocols&lt;/li&gt;
&lt;li&gt;auth_pass: IPv4 sub 8 character passwords, IPv6 allows for longer passwords&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;virtual_ipaddress: the shared IP ranges for the virtual router (can be more than one)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;setup-examples&#34;&gt;Setup Examples&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Manager:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 10
        advert_int 1
        authentication {
                auth_type AH
                auth_pass adguard
        }
        virtual_ipaddress {
                10.133.7.11/24
        }
}
vrrp_instance VI_2 {
        state MASTER
        interface eth0
        virtual_router_id 52
        priority 10
        advert_int 1
        authentication {
                auth_type PASS
                auth_pass adgaurdhome
        }
        virtual_ipaddress {
	       fd48:fb0a:cb3a:b8d4::1234/64
        }
}
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Backup:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;vrrp_instance VI_1 {
	state BACKUP
	interface eth0
     virtual_router_id 51
     priority 1
     advert_int 1
     authentication {
         auth_type AH
         auth_pass adguard
     }
     virtual_ipaddress {
         10.133.7.11/24
     }
}
 vrrp_instance VI_2 {
     state BACKUP
     interface eth0
     virtual_router_id 52
     priority 1
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass adgaurdhome
     }       
     virtual_ipaddress {
         fd48:fb0a:cb3a:b8d4::1234/64
     }
}
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;notes&#34;&gt;Notes:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Separate setup for IPv4 and IPv6 addresses&lt;/li&gt;
&lt;li&gt;Can have multiple setup for different interfaces&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;references&#34;&gt;References:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.redhat.com/sysadmin/keepalived-basics&#34;&gt;redhat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/Keepalived&#34;&gt;arch wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://keepalived.readthedocs.io/en/latest/introduction.html&#34;&gt;keepalived documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Cloudflare Tunnel</title>
      <link>https://new.cloud.nobodyhome.dev/posts/cloudflare-service/</link>
      <pubDate>Thu, 04 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://new.cloud.nobodyhome.dev/posts/cloudflare-service/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;250&#34; loading=&#34;lazy&#34; src=&#34;https://upload.wikimedia.org/wikipedia/commons/4/4b/Cloudflare_Logo.svg&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;links&#34;&gt;Links&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://dash.cloudflare.com/&#34;&gt;dash.cloudflare.com&lt;/a&gt;
&lt;a href=&#34;https://one.dash.cloudflare.com&#34;&gt;one.dash.cloudflare.com&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;installing-the-service&#34;&gt;Installing the service&lt;/h3&gt;
&lt;h5 id=&#34;ubuntu&#34;&gt;Ubuntu&lt;/h5&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb &amp;amp;&amp;amp; 

sudo dpkg -i cloudflared.deb &amp;amp;&amp;amp; 

sudo cloudflared service install [TUNNEL KEY]
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;red-hat&#34;&gt;Red Hat&lt;/h5&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;curl -L --output cloudflared.rpm https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm &amp;amp;&amp;amp; 

sudo yum localinstall -y cloudflared.rpm &amp;amp;&amp;amp; 

sudo cloudflared service install [TUNNEL KEY]
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;docker&#34;&gt;Docker&lt;/h5&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token [TUNNEL KEY]
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;docker-compose&#34;&gt;Docker Compose&lt;/h5&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;version: &amp;#34;3.8&amp;#34;

services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    restart: unless-stopped
    command: tunnel run
    network_mode: host
    environment:
      - &amp;#34;TUNNEL_TOKEN=[TUNNEL KEY]&amp;#34;
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;cloudflare-as-a-docker-sidecar&#34;&gt;Cloudflare as a Docker Sidecar&lt;/h4&gt;
&lt;p&gt;Cloudflare can serve ports from other docker containers without actually exposing the container ports on the host device. See the compose example below:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Smart Cards on Linux</title>
      <link>https://new.cloud.nobodyhome.dev/posts/pcscd/</link>
      <pubDate>Wed, 03 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://new.cloud.nobodyhome.dev/posts/pcscd/</guid>
      <description>&lt;h4 id=&#34;description&#34;&gt;Description&lt;/h4&gt;
&lt;p&gt;PCSCD serves as middleware to access a smart card using PC/SC. Install this program to&lt;/p&gt;
&lt;h4 id=&#34;installation&#34;&gt;Installation&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt install pcscd -y
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;enable-socket&#34;&gt;Enable Socket&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo systemctl enable --now pcscd.socket
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;make-sure-its-working&#34;&gt;Make Sure It&amp;rsquo;s Working&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;systemctl status pcscd.service
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
  </channel>
</rss>
