This commit is contained in:
davegallant
2024-03-31 16:30:19 +00:00
parent 85cfd8245a
commit 1a919691da
90 changed files with 184 additions and 352 deletions

File diff suppressed because one or more lines are too long

View File

@@ -65,4 +65,4 @@ Let&rsquo;s try to run it.</p><div class=highlight><pre tabindex=0 style=color:#
</span></span></code></pre></div><p>This is a breaking change in Python3.8.</p><p>So what is calling <code>platform.linux_distribution</code>?</p><p>Let&rsquo;s search for it:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>$ sudo grep -r <span style=color:#e6db74>&#39;linux_distribution&#39;</span> /opt/appgate/linux/
</span></span><span style=display:flex><span>/opt/appgate/linux/nm.py: <span style=color:#66d9ef>if</span> platform.linux_distribution<span style=color:#f92672>()[</span>0<span style=color:#f92672>]</span> !<span style=color:#f92672>=</span> <span style=color:#e6db74>&#39;Fedora&#39;</span>:
</span></span></code></pre></div><p>Aha! So this is in the local AppGate source code. This should be an easy fix. Let&rsquo;s just replace this line with:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-python data-lang=python><span style=display:flex><span><span style=color:#66d9ef>if</span> <span style=color:#66d9ef>True</span>: <span style=color:#75715e># Since we are not using Fedora :)</span>
</span></span></code></pre></div><h1 id=wrapping-up>Wrapping up<a href=#wrapping-up class=post-heading__anchor aria-hidden=true>#</a></h1><p>It turns out there are <a href=https://docs.python.org/3.7/library/platform.html#platform.linux_distribution class=link--external target=_blank rel=noreferrer>breaking changes</a> in Python3.8.</p><p>The docs say <code>Deprecated since version 3.5, will be removed in version 3.8: See alternative like the distro package.</code></p><p>I suppose this highlights one of the caveats of relying upon the system&rsquo;s python, rather than having an isolated, dedicated environment for all dependencies.</p></div><script type=text/javascript src=https://storage.ko-fi.com/cdn/widget/Widget_2.js></script><script type=text/javascript>kofiwidget2.init("Buy me a coffee","#458588","F1F2S4LWI"),kofiwidget2.draw()</script><section id=comments class=comments><div class='container sep-before'><div class=comments><script>var getTheme=localStorage&&localStorage.getItem("theme"),getTheme=getTheme??(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),getTheme=getTheme??"dark";let theme=getTheme==="dark"?"gruvbox-dark":"github-light",script=document.createElement("script");script.src="https://utteranc.es/client.js",script.setAttribute("repo","davegallant/site"),script.setAttribute("issue-term","pathname"),script.setAttribute("theme",theme),script.setAttribute("crossorigin","anonymous"),script.setAttribute("async",""),document.querySelector("div.comments").innerHTML="",document.querySelector("div.comments").appendChild(script)</script></div></div></section></article></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.4be06c129d6a89e60a661c6ac8c8e0434d58fb0fa2f685f85e2c306aca62adc5e77e7c63cb1c8a2cc5794ea42927281cf868514bcdce21ddf23dc3520e6743e7.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>
</span></span></code></pre></div><h1 id=wrapping-up>Wrapping up<a href=#wrapping-up class=post-heading__anchor aria-hidden=true>#</a></h1><p>It turns out there are <a href=https://docs.python.org/3.7/library/platform.html#platform.linux_distribution class=link--external target=_blank rel=noreferrer>breaking changes</a> in Python3.8.</p><p>The docs say <code>Deprecated since version 3.5, will be removed in version 3.8: See alternative like the distro package.</code></p><p>I suppose this highlights one of the caveats of relying upon the system&rsquo;s python, rather than having an isolated, dedicated environment for all dependencies.</p></div><script type=text/javascript src=https://storage.ko-fi.com/cdn/widget/Widget_2.js></script><script type=text/javascript>kofiwidget2.init("Buy me a coffee","#458588","F1F2S4LWI"),kofiwidget2.draw()</script><section id=comments class=comments><div class='container sep-before'><div class=comments><script>var getTheme=localStorage&&localStorage.getItem("theme"),getTheme=getTheme??(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),getTheme=getTheme??"dark";let theme=getTheme==="dark"?"gruvbox-dark":"github-light",script=document.createElement("script");script.src="https://utteranc.es/client.js",script.setAttribute("repo","davegallant/site"),script.setAttribute("issue-term","pathname"),script.setAttribute("theme",theme),script.setAttribute("crossorigin","anonymous"),script.setAttribute("async",""),document.querySelector("div.comments").innerHTML="",document.querySelector("div.comments").appendChild(script)</script></div></div></section></article></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.c26c1b7b76f4923d8125720886ede9ca08bfe20b924683914ba4c1c35d53667c6c2d764f5482d3860d36b9e58a50255bc22a03ff145555979852c5ec74f15e51.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,50 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>davegallant.ca — Blog on davegallant.ca</title><link>/blog/</link><description>Recent content in davegallant.ca — Blog on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><atom:link href="/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Setting up Gitea Actions with Tailscale</title><link>/blog/setting-up-gitea-actions-with-tailscale/</link><pubDate>Sun, 10 Dec 2023 17:22:11 -0500</pubDate><guid>/blog/setting-up-gitea-actions-with-tailscale/</guid><description>&lt;p>In this post I&amp;rsquo;ll go through the process of setting up Gitea Actions and &lt;a
href="https://tailscale.com/"
class="link--external" target="_blank" rel="noreferrer"
>Tailscale&lt;/a>, unlocking a simple and secure way to automate workflows.&lt;/p></description></item><item><title>Using AKS and SOCKS to connect to a private Azure DB</title><link>/blog/using-aks-and-socks-to-connect-to-a-private-azure-db/</link><pubDate>Mon, 22 May 2023 16:31:29 -0400</pubDate><guid>/blog/using-aks-and-socks-to-connect-to-a-private-azure-db/</guid><description>&lt;p>I ran into a roadblock recently where I wanted to be able to conveniently connect to a managed postgres database within Azure that was not running on public subnets. And by conveniently, I mean that I&amp;rsquo;d rather not have to spin up an ephemeral virtual machine running in the same network and proxy the connection, and I&amp;rsquo;d like to use a local client (preferably with a GUI). After several web searches, it became evident that Azure does not readily provide much tooling to support this.&lt;/p></description></item><item><title>Watching YouTube in private</title><link>/blog/watching-youtube-in-private/</link><pubDate>Sat, 10 Dec 2022 21:46:55 -0500</pubDate><guid>/blog/watching-youtube-in-private/</guid><description>&lt;p>I recently stumbled upon &lt;a
href="https://yewtu.be"
class="link--external" target="_blank" rel="noreferrer"
>yewtu.be&lt;/a> and found it intriguing. It not only allows you to watch YouTube without &lt;em>being on YouTube&lt;/em>, but it also allows you to create an account and subscribe to channels without a Google account. What sort of wizardry is going on under the hood? It turns out that it&amp;rsquo;s a hosted instance of &lt;a
href="https://invidious.io/"
class="link--external" target="_blank" rel="noreferrer"
>invidious&lt;/a>.&lt;/p></description></item><item><title>Virtualizing my router with pfSense</title><link>/blog/virtualizing-a-router-with-pfsense/</link><pubDate>Sat, 02 Apr 2022 18:50:09 -0400</pubDate><guid>/blog/virtualizing-a-router-with-pfsense/</guid><description>&lt;p>My aging router has been running &lt;a
href="https://en.wikipedia.org/wiki/OpenWrt"
class="link--external" target="_blank" rel="noreferrer"
>OpenWrt&lt;/a> for years and for the most part has been quite reliable. OpenWrt is an open-source project used on embedded devices to route network traffic. It supports many different configurations and there exists a &lt;a
href="https://openwrt.org/packages/index/start"
class="link--external" target="_blank" rel="noreferrer"
>large index of packages&lt;/a>. Ever since I&amp;rsquo;ve connected some standalone wireless access points, I&amp;rsquo;ve had less of a need for an off-the-shelf all-in-one wireless router combo. I&amp;rsquo;ve also recently been experiencing instability with my router (likely the result of a combination of configuration tweaking and firmware updating). OpenWrt has served me well, but it is time to move on!&lt;/p></description></item><item><title>Backing up gmail with Synology</title><link>/blog/backing-up-gmail-with-synology/</link><pubDate>Sun, 13 Mar 2022 18:49:10 -0400</pubDate><guid>/blog/backing-up-gmail-with-synology/</guid><description>&lt;p>I&amp;rsquo;ve used gmail since the beta launched touting a whopping 1GB of storage. I thought this was a massive leap in email technology at the time. I was lucky enough to get an invite fairly quickly. Not suprisingly, I have many years of emails, attachments, and photos. I certainly do not want to lose the content of many of these emails. Despite the redundancy of the data that Google secures, I still feel better retaining a copy of this data on my own physical machines.&lt;/p></description></item><item><title>Running K3s in LXC on Proxmox</title><link>/blog/running-k3s-in-lxc-on-proxmox/</link><pubDate>Sun, 14 Nov 2021 10:07:03 -0500</pubDate><guid>/blog/running-k3s-in-lxc-on-proxmox/</guid><description>It has been a while since I&amp;rsquo;ve actively used Kubernetes and wanted to explore the evolution of tools such as Helm and Tekton. I decided to deploy K3s, since I&amp;rsquo;ve had success with deploying it on resource-contrained Raspberry Pis in the past. I thought that this time it&amp;rsquo;d be convenient to have K3s running in a LXC container on Proxmox. This would allow for easy snapshotting of the entire Kubernetes deployment.</description></item><item><title>Replacing docker with podman on macOS (and Linux)</title><link>/blog/replacing-docker-with-podman-on-macos/</link><pubDate>Mon, 11 Oct 2021 10:43:35 -0400</pubDate><guid>/blog/replacing-docker-with-podman-on-macos/</guid><description>&lt;p>There are a number of reasons why you might want to replace docker, especially on macOS. The following feature bundled in Docker Desktop might have motivated you enough to consider replacing docker:&lt;/p></description></item><item><title>Automatically rotating AWS access keys</title><link>/blog/automatically-rotating-aws-keys/</link><pubDate>Fri, 17 Sep 2021 12:48:33 -0400</pubDate><guid>/blog/automatically-rotating-aws-keys/</guid><description>Rotating credentials is a security best practice. This morning, I read a question about automatically rotating AWS Access Keys without having to go through the hassle of navigating the AWS console. There are some existing solutions already, but I decided to write a script since it was incredibly simple. The script could be packed up as a systemd/launchd service to continually rotate access keys in the background.
In the longer term, migrating my local workflows to aws-vault seems like a more secure solution.</description></item><item><title>Why I threw out my dotfiles</title><link>/blog/why-i-threw-out-my-dotfiles/</link><pubDate>Wed, 08 Sep 2021 00:42:33 -0400</pubDate><guid>/blog/why-i-threw-out-my-dotfiles/</guid><description>&lt;p>Over the years I have collected a number of dotfiles that I have shared across both Linux and macOS machines (&lt;code>~/.zshrc&lt;/code>, &lt;code>~/.config/git/config&lt;/code>, &lt;code>~/.config/tmux/tmux.conf&lt;/code>, etc). I have tried several different ways to manage them, including &lt;a
href="https://www.atlassian.com/git/tutorials/dotfiles"
class="link--external" target="_blank" rel="noreferrer"
>bare git repos&lt;/a> and utilities such as &lt;a
href="https://www.gnu.org/software/stow/"
class="link--external" target="_blank" rel="noreferrer"
>GNU Stow&lt;/a>. These solutions work well enough, but I have since found what I would consider a much better solution for organizing user configuration: &lt;a
href="https://github.com/nix-community/home-manager"
class="link--external" target="_blank" rel="noreferrer"
>home-manager&lt;/a>.&lt;/p></description></item><item><title>What to do with a homelab</title><link>/blog/what-to-do-with-a-homelab/</link><pubDate>Mon, 06 Sep 2021 01:12:54 -0400</pubDate><guid>/blog/what-to-do-with-a-homelab/</guid><description>&lt;p>A homelab can be an inexpensive way to host a multitude of internal/external services and learn &lt;em>a lot&lt;/em> in the process.&lt;/p></description></item><item><title>AppGate SDP on Arch Linux</title><link>/blog/appgate-sdp-on-arch-linux/</link><pubDate>Mon, 16 Mar 2020 22:00:15 -0400</pubDate><guid>/blog/appgate-sdp-on-arch-linux/</guid><description>&lt;p>AppGate SDP provides a Zero Trust network. This post describes how to get AppGate SDP &lt;code>4.3.2&lt;/code> working on Arch Linux.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

View File

@@ -49,4 +49,4 @@
</span></span><span style=display:flex><span>0
</span></span><span style=display:flex><span>podman start -a davegallant.github.io_hello_world_1
</span></span><span style=display:flex><span>Hello world
</span></span></code></pre></div><p>This should more or less provide the same results you would come to expect with docker. The README does clearly state that podman-compose is under development.</p><h3 id=summary>Summary<a href=#summary class=post-heading__anchor aria-hidden=true>#</a></h3><p>Installing Podman on macOS was not seamless, but it was manageable well within 30 minutes. I would recommend giving Podman a try to anyone who is unhappy with experiencing forced docker updates, or who is interested in using a more modern technology for running containers.</p><p>One caveat to mention is that there isn&rsquo;t an official graphical user interface for Podman, but there is an <a href=https://github.com/containers/podman/issues/11494 class=link--external target=_blank rel=noreferrer>open issue</a> considering one. If you rely heavily on Docker Desktop&rsquo;s UI, you may not be as interested in using podman yet.</p><blockquote><p>Update: After further usage, bind mounts do not seem to work out of the box when the client and host are on different machines. A rather involved solution using <a href=https://en.wikipedia.org/wiki/SSHFS class=link--external target=_blank rel=noreferrer>sshfs</a> was shared <a href=https://github.com/containers/podman/issues/8016#issuecomment-920015800 class=link--external target=_blank rel=noreferrer>here</a>.</p></blockquote><p>I had been experimenting with Podman on Linux before writing this, but after listening to this <a href=https://kubernetespodcast.com/episode/164-podman/ class=link--external target=_blank rel=noreferrer>podcast episode</a>, I was inspired to give Podman a try on macOS.</p></div><script type=text/javascript src=https://storage.ko-fi.com/cdn/widget/Widget_2.js></script><script type=text/javascript>kofiwidget2.init("Buy me a coffee","#458588","F1F2S4LWI"),kofiwidget2.draw()</script><section id=comments class=comments><div class='container sep-before'><div class=comments><script>var getTheme=localStorage&&localStorage.getItem("theme"),getTheme=getTheme??(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),getTheme=getTheme??"dark";let theme=getTheme==="dark"?"gruvbox-dark":"github-light",script=document.createElement("script");script.src="https://utteranc.es/client.js",script.setAttribute("repo","davegallant/site"),script.setAttribute("issue-term","pathname"),script.setAttribute("theme",theme),script.setAttribute("crossorigin","anonymous"),script.setAttribute("async",""),document.querySelector("div.comments").innerHTML="",document.querySelector("div.comments").appendChild(script)</script></div></div></section></article></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.4be06c129d6a89e60a661c6ac8c8e0434d58fb0fa2f685f85e2c306aca62adc5e77e7c63cb1c8a2cc5794ea42927281cf868514bcdce21ddf23dc3520e6743e7.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>
</span></span></code></pre></div><p>This should more or less provide the same results you would come to expect with docker. The README does clearly state that podman-compose is under development.</p><h3 id=summary>Summary<a href=#summary class=post-heading__anchor aria-hidden=true>#</a></h3><p>Installing Podman on macOS was not seamless, but it was manageable well within 30 minutes. I would recommend giving Podman a try to anyone who is unhappy with experiencing forced docker updates, or who is interested in using a more modern technology for running containers.</p><p>One caveat to mention is that there isn&rsquo;t an official graphical user interface for Podman, but there is an <a href=https://github.com/containers/podman/issues/11494 class=link--external target=_blank rel=noreferrer>open issue</a> considering one. If you rely heavily on Docker Desktop&rsquo;s UI, you may not be as interested in using podman yet.</p><blockquote><p>Update: After further usage, bind mounts do not seem to work out of the box when the client and host are on different machines. A rather involved solution using <a href=https://en.wikipedia.org/wiki/SSHFS class=link--external target=_blank rel=noreferrer>sshfs</a> was shared <a href=https://github.com/containers/podman/issues/8016#issuecomment-920015800 class=link--external target=_blank rel=noreferrer>here</a>.</p></blockquote><p>I had been experimenting with Podman on Linux before writing this, but after listening to this <a href=https://kubernetespodcast.com/episode/164-podman/ class=link--external target=_blank rel=noreferrer>podcast episode</a>, I was inspired to give Podman a try on macOS.</p></div><script type=text/javascript src=https://storage.ko-fi.com/cdn/widget/Widget_2.js></script><script type=text/javascript>kofiwidget2.init("Buy me a coffee","#458588","F1F2S4LWI"),kofiwidget2.draw()</script><section id=comments class=comments><div class='container sep-before'><div class=comments><script>var getTheme=localStorage&&localStorage.getItem("theme"),getTheme=getTheme??(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),getTheme=getTheme??"dark";let theme=getTheme==="dark"?"gruvbox-dark":"github-light",script=document.createElement("script");script.src="https://utteranc.es/client.js",script.setAttribute("repo","davegallant/site"),script.setAttribute("issue-term","pathname"),script.setAttribute("theme",theme),script.setAttribute("crossorigin","anonymous"),script.setAttribute("async",""),document.querySelector("div.comments").innerHTML="",document.querySelector("div.comments").appendChild(script)</script></div></div></section></article></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.c26c1b7b76f4923d8125720886ede9ca08bfe20b924683914ba4c1c35d53667c6c2d764f5482d3860d36b9e58a50255bc22a03ff145555979852c5ec74f15e51.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>

View File

@@ -50,4 +50,4 @@ As of 2021/11, it is still defaulting to the 1.19 channel, so I overrode it to 1
</span></span><span style=display:flex><span><span style=color:#960050;background-color:#1e0010>
</span></span></span><span style=display:flex><span><span style=color:#960050;background-color:#1e0010></span>NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
</span></span><span style=display:flex><span>horizontalpodautoscaler.autoscaling/tekton-pipelines-webhook Deployment/tekton-pipelines-webhook 9%/100% 1 5 1 12h
</span></span></code></pre></div><p>I made sure to install Tailscale in the container so that I can easily access K3s from anywhere.</p><p>If I&rsquo;m feeling adventurous, I might experiment with <a href=https://rancher.com/docs/k3s/latest/en/advanced/#running-k3s-with-rootless-mode-experimental class=link--external target=_blank rel=noreferrer>K3s rootless</a>.</p></div><script type=text/javascript src=https://storage.ko-fi.com/cdn/widget/Widget_2.js></script><script type=text/javascript>kofiwidget2.init("Buy me a coffee","#458588","F1F2S4LWI"),kofiwidget2.draw()</script><section id=comments class=comments><div class='container sep-before'><div class=comments><script>var getTheme=localStorage&&localStorage.getItem("theme"),getTheme=getTheme??(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),getTheme=getTheme??"dark";let theme=getTheme==="dark"?"gruvbox-dark":"github-light",script=document.createElement("script");script.src="https://utteranc.es/client.js",script.setAttribute("repo","davegallant/site"),script.setAttribute("issue-term","pathname"),script.setAttribute("theme",theme),script.setAttribute("crossorigin","anonymous"),script.setAttribute("async",""),document.querySelector("div.comments").innerHTML="",document.querySelector("div.comments").appendChild(script)</script></div></div></section></article></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.4be06c129d6a89e60a661c6ac8c8e0434d58fb0fa2f685f85e2c306aca62adc5e77e7c63cb1c8a2cc5794ea42927281cf868514bcdce21ddf23dc3520e6743e7.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>
</span></span></code></pre></div><p>I made sure to install Tailscale in the container so that I can easily access K3s from anywhere.</p><p>If I&rsquo;m feeling adventurous, I might experiment with <a href=https://rancher.com/docs/k3s/latest/en/advanced/#running-k3s-with-rootless-mode-experimental class=link--external target=_blank rel=noreferrer>K3s rootless</a>.</p></div><script type=text/javascript src=https://storage.ko-fi.com/cdn/widget/Widget_2.js></script><script type=text/javascript>kofiwidget2.init("Buy me a coffee","#458588","F1F2S4LWI"),kofiwidget2.draw()</script><section id=comments class=comments><div class='container sep-before'><div class=comments><script>var getTheme=localStorage&&localStorage.getItem("theme"),getTheme=getTheme??(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),getTheme=getTheme??"dark";let theme=getTheme==="dark"?"gruvbox-dark":"github-light",script=document.createElement("script");script.src="https://utteranc.es/client.js",script.setAttribute("repo","davegallant/site"),script.setAttribute("issue-term","pathname"),script.setAttribute("theme",theme),script.setAttribute("crossorigin","anonymous"),script.setAttribute("async",""),document.querySelector("div.comments").innerHTML="",document.querySelector("div.comments").appendChild(script)</script></div></div></section></article></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.c26c1b7b76f4923d8125720886ede9ca08bfe20b924683914ba4c1c35d53667c6c2d764f5482d3860d36b9e58a50255bc22a03ff145555979852c5ec74f15e51.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>

View File

@@ -90,4 +90,4 @@
</span></span><span style=display:flex><span> <span style=color:#f92672>from</span>: <span style=color:#ae81ff>RFD Notify</span>
</span></span><span style=display:flex><span> <span style=color:#f92672>body</span>: |<span style=color:#e6db74>
</span></span></span><span style=display:flex><span><span style=color:#e6db74> ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_number }}</span>
</span></span></code></pre></div><p>And voilà:</p><p><img src=gitea-workflow.png alt=image></p><p>You may be wondering how the gitea runner is allowed to connect to the other hosts using ansible? Well, the nodes are in the same tailnet and have <a href=https://tailscale.com/tailscale-ssh class=link--external target=_blank rel=noreferrer>tailscale ssh</a> enabled.</p><h2 id=areas-for-improvement>Areas for improvement<a href=#areas-for-improvement class=post-heading__anchor aria-hidden=true>#</a></h2><p>One enhancement that I would like to see is the ability to send notifications on workflow failures. Currently, this <a href=https://github.com/go-gitea/gitea/issues/23725 class=link--external target=_blank rel=noreferrer>doesn&rsquo;t seem possible</a> without adding logic to each workflow.</p><h2 id=conclusion>Conclusion<a href=#conclusion class=post-heading__anchor aria-hidden=true>#</a></h2><p>Gitea Actions are fast and the resource footprint is minimal. My gitea instance is currently using around 250mb of memory and a small fraction of a single cpu core (and the runner is using a similar amount of resources). This is impressive since many alternatives tend to require substantially more resources. It likely helps that the codebase is largely written in go.</p><p>By combining gitea with the networking marvel that is tailscale, running workflows becomes simple and fun. Whether you are working on a team or working alone, this setup ensures that your workflows are securely accessible from anywhere with an internet connection.</p><p>Check out my gitea instance exposed via Funnel <a href=https://gitea.snake-cloud.ts.net class=link--external target=_blank rel=noreferrer>here</a>.</p></div><script type=text/javascript src=https://storage.ko-fi.com/cdn/widget/Widget_2.js></script><script type=text/javascript>kofiwidget2.init("Buy me a coffee","#458588","F1F2S4LWI"),kofiwidget2.draw()</script><section id=comments class=comments><div class='container sep-before'><div class=comments><script>var getTheme=localStorage&&localStorage.getItem("theme"),getTheme=getTheme??(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),getTheme=getTheme??"dark";let theme=getTheme==="dark"?"gruvbox-dark":"github-light",script=document.createElement("script");script.src="https://utteranc.es/client.js",script.setAttribute("repo","davegallant/site"),script.setAttribute("issue-term","pathname"),script.setAttribute("theme",theme),script.setAttribute("crossorigin","anonymous"),script.setAttribute("async",""),document.querySelector("div.comments").innerHTML="",document.querySelector("div.comments").appendChild(script)</script></div></div></section></article></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.4be06c129d6a89e60a661c6ac8c8e0434d58fb0fa2f685f85e2c306aca62adc5e77e7c63cb1c8a2cc5794ea42927281cf868514bcdce21ddf23dc3520e6743e7.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>
</span></span></code></pre></div><p>And voilà:</p><p><img src=gitea-workflow.png alt=image></p><p>You may be wondering how the gitea runner is allowed to connect to the other hosts using ansible? Well, the nodes are in the same tailnet and have <a href=https://tailscale.com/tailscale-ssh class=link--external target=_blank rel=noreferrer>tailscale ssh</a> enabled.</p><h2 id=areas-for-improvement>Areas for improvement<a href=#areas-for-improvement class=post-heading__anchor aria-hidden=true>#</a></h2><p>One enhancement that I would like to see is the ability to send notifications on workflow failures. Currently, this <a href=https://github.com/go-gitea/gitea/issues/23725 class=link--external target=_blank rel=noreferrer>doesn&rsquo;t seem possible</a> without adding logic to each workflow.</p><h2 id=conclusion>Conclusion<a href=#conclusion class=post-heading__anchor aria-hidden=true>#</a></h2><p>Gitea Actions are fast and the resource footprint is minimal. My gitea instance is currently using around 250mb of memory and a small fraction of a single cpu core (and the runner is using a similar amount of resources). This is impressive since many alternatives tend to require substantially more resources. It likely helps that the codebase is largely written in go.</p><p>By combining gitea with the networking marvel that is tailscale, running workflows becomes simple and fun. Whether you are working on a team or working alone, this setup ensures that your workflows are securely accessible from anywhere with an internet connection.</p><p>Check out my gitea instance exposed via Funnel <a href=https://gitea.snake-cloud.ts.net class=link--external target=_blank rel=noreferrer>here</a>.</p></div><script type=text/javascript src=https://storage.ko-fi.com/cdn/widget/Widget_2.js></script><script type=text/javascript>kofiwidget2.init("Buy me a coffee","#458588","F1F2S4LWI"),kofiwidget2.draw()</script><section id=comments class=comments><div class='container sep-before'><div class=comments><script>var getTheme=localStorage&&localStorage.getItem("theme"),getTheme=getTheme??(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),getTheme=getTheme??"dark";let theme=getTheme==="dark"?"gruvbox-dark":"github-light",script=document.createElement("script");script.src="https://utteranc.es/client.js",script.setAttribute("repo","davegallant/site"),script.setAttribute("issue-term","pathname"),script.setAttribute("theme",theme),script.setAttribute("crossorigin","anonymous"),script.setAttribute("async",""),document.querySelector("div.comments").innerHTML="",document.querySelector("div.comments").appendChild(script)</script></div></div></section></article></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.c26c1b7b76f4923d8125720886ede9ca08bfe20b924683914ba4c1c35d53667c6c2d764f5482d3860d36b9e58a50255bc22a03ff145555979852c5ec74f15e51.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>

View File

@@ -17,4 +17,4 @@ If this sounds more appealing, install <a href=https://github.com/antitree/krew-
</span></span><span style=display:flex><span>using: image=serjs/go-socks5-proxy
</span></span><span style=display:flex><span>Creating SOCKS5 Proxy (Pod)...
</span></span><span style=display:flex><span>pod/davegallant-proxy created
</span></span></code></pre></div><p>With the above proxy connection open, it is possible to access both the DNS and private IPs accessible within the k8s cluster. In this case, I am able to access the private database, since there is network connectivity between the k8s cluster and the database.</p><h2 id=caveats-and-conclusion>Caveats and Conclusion<a href=#caveats-and-conclusion class=post-heading__anchor aria-hidden=true>#</a></h2><p>The above outlined solution makes some assumptions:</p><ul><li>there is a k8s cluster</li><li>the k8s cluster has network connectivity to the desired private database</li></ul><p>If these stars align, than this solution might work as a stopgap for accessing a private Azure DB (and I&rsquo;m assuming this could work similarly on AWS).</p><p>It would be nice if Azure provided tooling similar to cloud-sql-proxy, so that using private databases would be more of a convenient experience.</p><p>One other thing to note is that some clients (such as <a href=https://dbeaver.io/ class=link--external target=_blank rel=noreferrer>dbeaver</a>) <a href=https://github.com/dbeaver/dbeaver/issues/872 class=link--external target=_blank rel=noreferrer>do not provide DNS resolution over SOCKS</a>. So in this case, you won&rsquo;t be able to use DNS as if you were inside the cluster, but instead have to rely on knowing private ip addresses.</p></div><script type=text/javascript src=https://storage.ko-fi.com/cdn/widget/Widget_2.js></script><script type=text/javascript>kofiwidget2.init("Buy me a coffee","#458588","F1F2S4LWI"),kofiwidget2.draw()</script><section id=comments class=comments><div class='container sep-before'><div class=comments><script>var getTheme=localStorage&&localStorage.getItem("theme"),getTheme=getTheme??(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),getTheme=getTheme??"dark";let theme=getTheme==="dark"?"gruvbox-dark":"github-light",script=document.createElement("script");script.src="https://utteranc.es/client.js",script.setAttribute("repo","davegallant/site"),script.setAttribute("issue-term","pathname"),script.setAttribute("theme",theme),script.setAttribute("crossorigin","anonymous"),script.setAttribute("async",""),document.querySelector("div.comments").innerHTML="",document.querySelector("div.comments").appendChild(script)</script></div></div></section></article></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.4be06c129d6a89e60a661c6ac8c8e0434d58fb0fa2f685f85e2c306aca62adc5e77e7c63cb1c8a2cc5794ea42927281cf868514bcdce21ddf23dc3520e6743e7.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>
</span></span></code></pre></div><p>With the above proxy connection open, it is possible to access both the DNS and private IPs accessible within the k8s cluster. In this case, I am able to access the private database, since there is network connectivity between the k8s cluster and the database.</p><h2 id=caveats-and-conclusion>Caveats and Conclusion<a href=#caveats-and-conclusion class=post-heading__anchor aria-hidden=true>#</a></h2><p>The above outlined solution makes some assumptions:</p><ul><li>there is a k8s cluster</li><li>the k8s cluster has network connectivity to the desired private database</li></ul><p>If these stars align, than this solution might work as a stopgap for accessing a private Azure DB (and I&rsquo;m assuming this could work similarly on AWS).</p><p>It would be nice if Azure provided tooling similar to cloud-sql-proxy, so that using private databases would be more of a convenient experience.</p><p>One other thing to note is that some clients (such as <a href=https://dbeaver.io/ class=link--external target=_blank rel=noreferrer>dbeaver</a>) <a href=https://github.com/dbeaver/dbeaver/issues/872 class=link--external target=_blank rel=noreferrer>do not provide DNS resolution over SOCKS</a>. So in this case, you won&rsquo;t be able to use DNS as if you were inside the cluster, but instead have to rely on knowing private ip addresses.</p></div><script type=text/javascript src=https://storage.ko-fi.com/cdn/widget/Widget_2.js></script><script type=text/javascript>kofiwidget2.init("Buy me a coffee","#458588","F1F2S4LWI"),kofiwidget2.draw()</script><section id=comments class=comments><div class='container sep-before'><div class=comments><script>var getTheme=localStorage&&localStorage.getItem("theme"),getTheme=getTheme??(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),getTheme=getTheme??"dark";let theme=getTheme==="dark"?"gruvbox-dark":"github-light",script=document.createElement("script");script.src="https://utteranc.es/client.js",script.setAttribute("repo","davegallant/site"),script.setAttribute("issue-term","pathname"),script.setAttribute("theme",theme),script.setAttribute("crossorigin","anonymous"),script.setAttribute("async",""),document.querySelector("div.comments").innerHTML="",document.querySelector("div.comments").appendChild(script)</script></div></div></section></article></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.c26c1b7b76f4923d8125720886ede9ca08bfe20b924683914ba4c1c35d53667c6c2d764f5482d3860d36b9e58a50255bc22a03ff145555979852c5ec74f15e51.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>

File diff suppressed because one or more lines are too long

View File

@@ -48,4 +48,4 @@
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#f92672>volumes</span>:
</span></span><span style=display:flex><span> <span style=color:#f92672>postgresdata</span>:
</span></span></code></pre></div><p>After invidious was up and running, I installed <a href=https://tailscale.com/ class=link--external target=_blank rel=noreferrer>Tailscale</a> on it to leverage its MagicDNS, and I&rsquo;m now able to access this instance from anywhere at <a href=http://invidious:3000/feed/subscriptions class=link--external target=_blank rel=noreferrer>http://invidious:3000/feed/subscriptions</a>.</p><h3 id=redirecting-youtube-links>Redirecting YouTube links<a href=#redirecting-youtube-links class=post-heading__anchor aria-hidden=true>#</a></h3><p>I figured it would be nice to redirect existing YouTube links that others send me, so that I could seamlessly watch the videos using invidious.</p><p>I went looking for a way to redirect paths at the browser level. I found the lightweight proxy <a href=https://requestly.io/ class=link--external target=_blank rel=noreferrer>requestly</a>, which can be used to modify http requests in my browser. I created the following rules:</p><p><img src=requestly-rules.png alt=requestly></p><p>Now the link <a href="https://www.youtube.com/watch?v=-lz30by8-sU" class=link--external target=_blank rel=noreferrer>https://www.youtube.com/watch?v=-lz30by8-sU</a> will redirect to <a href="http://invidious:3000/watch?v=-lz30by8-sU" class=link--external target=_blank rel=noreferrer>http://invidious:3000/watch?v=-lz30by8-sU</a></p><p>I&rsquo;m still looking for ways to improve this invidious setup. There doesn&rsquo;t appear to be a way to stream in 4K yet.</p></div><script type=text/javascript src=https://storage.ko-fi.com/cdn/widget/Widget_2.js></script><script type=text/javascript>kofiwidget2.init("Buy me a coffee","#458588","F1F2S4LWI"),kofiwidget2.draw()</script><section id=comments class=comments><div class='container sep-before'><div class=comments><script>var getTheme=localStorage&&localStorage.getItem("theme"),getTheme=getTheme??(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),getTheme=getTheme??"dark";let theme=getTheme==="dark"?"gruvbox-dark":"github-light",script=document.createElement("script");script.src="https://utteranc.es/client.js",script.setAttribute("repo","davegallant/site"),script.setAttribute("issue-term","pathname"),script.setAttribute("theme",theme),script.setAttribute("crossorigin","anonymous"),script.setAttribute("async",""),document.querySelector("div.comments").innerHTML="",document.querySelector("div.comments").appendChild(script)</script></div></div></section></article></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.4be06c129d6a89e60a661c6ac8c8e0434d58fb0fa2f685f85e2c306aca62adc5e77e7c63cb1c8a2cc5794ea42927281cf868514bcdce21ddf23dc3520e6743e7.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>
</span></span></code></pre></div><p>After invidious was up and running, I installed <a href=https://tailscale.com/ class=link--external target=_blank rel=noreferrer>Tailscale</a> on it to leverage its MagicDNS, and I&rsquo;m now able to access this instance from anywhere at <a href=http://invidious:3000/feed/subscriptions class=link--external target=_blank rel=noreferrer>http://invidious:3000/feed/subscriptions</a>.</p><h3 id=redirecting-youtube-links>Redirecting YouTube links<a href=#redirecting-youtube-links class=post-heading__anchor aria-hidden=true>#</a></h3><p>I figured it would be nice to redirect existing YouTube links that others send me, so that I could seamlessly watch the videos using invidious.</p><p>I went looking for a way to redirect paths at the browser level. I found the lightweight proxy <a href=https://requestly.io/ class=link--external target=_blank rel=noreferrer>requestly</a>, which can be used to modify http requests in my browser. I created the following rules:</p><p><img src=requestly-rules.png alt=requestly></p><p>Now the link <a href="https://www.youtube.com/watch?v=-lz30by8-sU" class=link--external target=_blank rel=noreferrer>https://www.youtube.com/watch?v=-lz30by8-sU</a> will redirect to <a href="http://invidious:3000/watch?v=-lz30by8-sU" class=link--external target=_blank rel=noreferrer>http://invidious:3000/watch?v=-lz30by8-sU</a></p><p>I&rsquo;m still looking for ways to improve this invidious setup. There doesn&rsquo;t appear to be a way to stream in 4K yet.</p></div><script type=text/javascript src=https://storage.ko-fi.com/cdn/widget/Widget_2.js></script><script type=text/javascript>kofiwidget2.init("Buy me a coffee","#458588","F1F2S4LWI"),kofiwidget2.draw()</script><section id=comments class=comments><div class='container sep-before'><div class=comments><script>var getTheme=localStorage&&localStorage.getItem("theme"),getTheme=getTheme??(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),getTheme=getTheme??"dark";let theme=getTheme==="dark"?"gruvbox-dark":"github-light",script=document.createElement("script");script.src="https://utteranc.es/client.js",script.setAttribute("repo","davegallant/site"),script.setAttribute("issue-term","pathname"),script.setAttribute("theme",theme),script.setAttribute("crossorigin","anonymous"),script.setAttribute("async",""),document.querySelector("div.comments").innerHTML="",document.querySelector("div.comments").appendChild(script)</script></div></div></section></article></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.c26c1b7b76f4923d8125720886ede9ca08bfe20b924683914ba4c1c35d53667c6c2d764f5482d3860d36b9e58a50255bc22a03ff145555979852c5ec74f15e51.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>

File diff suppressed because one or more lines are too long

View File

@@ -116,4 +116,4 @@
</span></span><span style=display:flex><span> };
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><p>Save the file and run:</p><pre tabindex=0><code>home-manager switch
</code></pre><p>You should see another wave of <code>/nix/store/*</code> paths. The new configuration should now be active.</p><p>If you run <code>zsh</code>, you should see that you have <a href=https://starship.rs/ class=link--external target=_blank rel=noreferrer>starship</a> and access to several other utils such as <code>rg</code>, <code>fd</code>, and <code>exa</code>.</p><p>This basic configuration above is also defining your <code>~/.config/git/config</code> and <code>.zshrc</code>. If you already have either of these files, home-manager will complain about them already existing.</p><p>If you run <code>cat ~/.zshrc</code>, you will see the way these configuration files are generated.</p><p>You can extend this configuration for programs such as (neo)vim, emacs, alacritty, ssh, etc. To see other programs, take a look at <a href=https://github.com/nix-community/home-manager/tree/master/modules/programs class=link--external target=_blank rel=noreferrer>home-manager/modules/programs</a>.</p><h2 id=gateway-to-nix>Gateway To Nix<a href=#gateway-to-nix class=post-heading__anchor aria-hidden=true>#</a></h2><p>In ways, home-manager can be seen as a gateway to the nix ecosystem. If you have enjoyed the way you can declare user configuration with home-manager, you may be interested in expanding your configuration to include other system dependencies and configuration. For example, in Linux you can define your entire system&rsquo;s configuration (including the kernel, kernel modules, networking, filesystems, etc) in nix. For macOS, there is <a href=https://github.com/LnL7/nix-darwin class=link--external target=_blank rel=noreferrer>nix-darwin</a> that includes nix modules for configuring launchd, dock, and other preferences and services. You may also want to check out <a href=https://nixos.wiki/wiki/Flakes class=link--external target=_blank rel=noreferrer>Nix Flakes</a>: a more recent feature that allows you declare dependencies, and have them automatically pinned and hashed in <code>flake.lock</code>, similar to that of many modern package managers.</p><h2 id=wrapping-up>Wrapping up<a href=#wrapping-up class=post-heading__anchor aria-hidden=true>#</a></h2><p>The title of this post is slightly misleading, since it&rsquo;s possible to retain some of your dotfiles and have them intermingle with home-manager by including them alongside nix. The idea of defining user configuration using nix can provide a clean way to maintain your configuration, and allow it to be portable across platforms. Is it worth the effort to migrate away from shell scripts and dotfiles? I&rsquo;d say so.</p><p>You can find my nix config <a href=https://github.com/davegallant/nix-config class=link--external target=_blank rel=noreferrer>here</a>.</p></div><script type=text/javascript src=https://storage.ko-fi.com/cdn/widget/Widget_2.js></script><script type=text/javascript>kofiwidget2.init("Buy me a coffee","#458588","F1F2S4LWI"),kofiwidget2.draw()</script><section id=comments class=comments><div class='container sep-before'><div class=comments><script>var getTheme=localStorage&&localStorage.getItem("theme"),getTheme=getTheme??(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),getTheme=getTheme??"dark";let theme=getTheme==="dark"?"gruvbox-dark":"github-light",script=document.createElement("script");script.src="https://utteranc.es/client.js",script.setAttribute("repo","davegallant/site"),script.setAttribute("issue-term","pathname"),script.setAttribute("theme",theme),script.setAttribute("crossorigin","anonymous"),script.setAttribute("async",""),document.querySelector("div.comments").innerHTML="",document.querySelector("div.comments").appendChild(script)</script></div></div></section></article></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.4be06c129d6a89e60a661c6ac8c8e0434d58fb0fa2f685f85e2c306aca62adc5e77e7c63cb1c8a2cc5794ea42927281cf868514bcdce21ddf23dc3520e6743e7.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>
</code></pre><p>You should see another wave of <code>/nix/store/*</code> paths. The new configuration should now be active.</p><p>If you run <code>zsh</code>, you should see that you have <a href=https://starship.rs/ class=link--external target=_blank rel=noreferrer>starship</a> and access to several other utils such as <code>rg</code>, <code>fd</code>, and <code>exa</code>.</p><p>This basic configuration above is also defining your <code>~/.config/git/config</code> and <code>.zshrc</code>. If you already have either of these files, home-manager will complain about them already existing.</p><p>If you run <code>cat ~/.zshrc</code>, you will see the way these configuration files are generated.</p><p>You can extend this configuration for programs such as (neo)vim, emacs, alacritty, ssh, etc. To see other programs, take a look at <a href=https://github.com/nix-community/home-manager/tree/master/modules/programs class=link--external target=_blank rel=noreferrer>home-manager/modules/programs</a>.</p><h2 id=gateway-to-nix>Gateway To Nix<a href=#gateway-to-nix class=post-heading__anchor aria-hidden=true>#</a></h2><p>In ways, home-manager can be seen as a gateway to the nix ecosystem. If you have enjoyed the way you can declare user configuration with home-manager, you may be interested in expanding your configuration to include other system dependencies and configuration. For example, in Linux you can define your entire system&rsquo;s configuration (including the kernel, kernel modules, networking, filesystems, etc) in nix. For macOS, there is <a href=https://github.com/LnL7/nix-darwin class=link--external target=_blank rel=noreferrer>nix-darwin</a> that includes nix modules for configuring launchd, dock, and other preferences and services. You may also want to check out <a href=https://nixos.wiki/wiki/Flakes class=link--external target=_blank rel=noreferrer>Nix Flakes</a>: a more recent feature that allows you declare dependencies, and have them automatically pinned and hashed in <code>flake.lock</code>, similar to that of many modern package managers.</p><h2 id=wrapping-up>Wrapping up<a href=#wrapping-up class=post-heading__anchor aria-hidden=true>#</a></h2><p>The title of this post is slightly misleading, since it&rsquo;s possible to retain some of your dotfiles and have them intermingle with home-manager by including them alongside nix. The idea of defining user configuration using nix can provide a clean way to maintain your configuration, and allow it to be portable across platforms. Is it worth the effort to migrate away from shell scripts and dotfiles? I&rsquo;d say so.</p><p>You can find my nix config <a href=https://github.com/davegallant/nix-config class=link--external target=_blank rel=noreferrer>here</a>.</p></div><script type=text/javascript src=https://storage.ko-fi.com/cdn/widget/Widget_2.js></script><script type=text/javascript>kofiwidget2.init("Buy me a coffee","#458588","F1F2S4LWI"),kofiwidget2.draw()</script><section id=comments class=comments><div class='container sep-before'><div class=comments><script>var getTheme=localStorage&&localStorage.getItem("theme"),getTheme=getTheme??(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),getTheme=getTheme??"dark";let theme=getTheme==="dark"?"gruvbox-dark":"github-light",script=document.createElement("script");script.src="https://utteranc.es/client.js",script.setAttribute("repo","davegallant/site"),script.setAttribute("issue-term","pathname"),script.setAttribute("theme",theme),script.setAttribute("crossorigin","anonymous"),script.setAttribute("async",""),document.querySelector("div.comments").innerHTML="",document.querySelector("div.comments").appendChild(script)</script></div></div></section></article></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.c26c1b7b76f4923d8125720886ede9ca08bfe20b924683914ba4c1c35d53667c6c2d764f5482d3860d36b9e58a50255bc22a03ff145555979852c5ec74f15e51.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,50 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>davegallant.ca</title><link>/</link><description>Recent content on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><atom:link href="/index.xml" rel="self" type="application/rss+xml"/><item><title>Setting up Gitea Actions with Tailscale</title><link>/blog/setting-up-gitea-actions-with-tailscale/</link><pubDate>Sun, 10 Dec 2023 17:22:11 -0500</pubDate><guid>/blog/setting-up-gitea-actions-with-tailscale/</guid><description>&lt;p>In this post I&amp;rsquo;ll go through the process of setting up Gitea Actions and &lt;a
href="https://tailscale.com/"
class="link--external" target="_blank" rel="noreferrer"
>Tailscale&lt;/a>, unlocking a simple and secure way to automate workflows.&lt;/p></description></item><item><title>Using AKS and SOCKS to connect to a private Azure DB</title><link>/blog/using-aks-and-socks-to-connect-to-a-private-azure-db/</link><pubDate>Mon, 22 May 2023 16:31:29 -0400</pubDate><guid>/blog/using-aks-and-socks-to-connect-to-a-private-azure-db/</guid><description>&lt;p>I ran into a roadblock recently where I wanted to be able to conveniently connect to a managed postgres database within Azure that was not running on public subnets. And by conveniently, I mean that I&amp;rsquo;d rather not have to spin up an ephemeral virtual machine running in the same network and proxy the connection, and I&amp;rsquo;d like to use a local client (preferably with a GUI). After several web searches, it became evident that Azure does not readily provide much tooling to support this.&lt;/p></description></item><item><title>Watching YouTube in private</title><link>/blog/watching-youtube-in-private/</link><pubDate>Sat, 10 Dec 2022 21:46:55 -0500</pubDate><guid>/blog/watching-youtube-in-private/</guid><description>&lt;p>I recently stumbled upon &lt;a
href="https://yewtu.be"
class="link--external" target="_blank" rel="noreferrer"
>yewtu.be&lt;/a> and found it intriguing. It not only allows you to watch YouTube without &lt;em>being on YouTube&lt;/em>, but it also allows you to create an account and subscribe to channels without a Google account. What sort of wizardry is going on under the hood? It turns out that it&amp;rsquo;s a hosted instance of &lt;a
href="https://invidious.io/"
class="link--external" target="_blank" rel="noreferrer"
>invidious&lt;/a>.&lt;/p></description></item><item><title>Virtualizing my router with pfSense</title><link>/blog/virtualizing-a-router-with-pfsense/</link><pubDate>Sat, 02 Apr 2022 18:50:09 -0400</pubDate><guid>/blog/virtualizing-a-router-with-pfsense/</guid><description>&lt;p>My aging router has been running &lt;a
href="https://en.wikipedia.org/wiki/OpenWrt"
class="link--external" target="_blank" rel="noreferrer"
>OpenWrt&lt;/a> for years and for the most part has been quite reliable. OpenWrt is an open-source project used on embedded devices to route network traffic. It supports many different configurations and there exists a &lt;a
href="https://openwrt.org/packages/index/start"
class="link--external" target="_blank" rel="noreferrer"
>large index of packages&lt;/a>. Ever since I&amp;rsquo;ve connected some standalone wireless access points, I&amp;rsquo;ve had less of a need for an off-the-shelf all-in-one wireless router combo. I&amp;rsquo;ve also recently been experiencing instability with my router (likely the result of a combination of configuration tweaking and firmware updating). OpenWrt has served me well, but it is time to move on!&lt;/p></description></item><item><title>Backing up gmail with Synology</title><link>/blog/backing-up-gmail-with-synology/</link><pubDate>Sun, 13 Mar 2022 18:49:10 -0400</pubDate><guid>/blog/backing-up-gmail-with-synology/</guid><description>&lt;p>I&amp;rsquo;ve used gmail since the beta launched touting a whopping 1GB of storage. I thought this was a massive leap in email technology at the time. I was lucky enough to get an invite fairly quickly. Not suprisingly, I have many years of emails, attachments, and photos. I certainly do not want to lose the content of many of these emails. Despite the redundancy of the data that Google secures, I still feel better retaining a copy of this data on my own physical machines.&lt;/p></description></item><item><title>Running K3s in LXC on Proxmox</title><link>/blog/running-k3s-in-lxc-on-proxmox/</link><pubDate>Sun, 14 Nov 2021 10:07:03 -0500</pubDate><guid>/blog/running-k3s-in-lxc-on-proxmox/</guid><description>It has been a while since I&amp;rsquo;ve actively used Kubernetes and wanted to explore the evolution of tools such as Helm and Tekton. I decided to deploy K3s, since I&amp;rsquo;ve had success with deploying it on resource-contrained Raspberry Pis in the past. I thought that this time it&amp;rsquo;d be convenient to have K3s running in a LXC container on Proxmox. This would allow for easy snapshotting of the entire Kubernetes deployment.</description></item><item><title>Replacing docker with podman on macOS (and Linux)</title><link>/blog/replacing-docker-with-podman-on-macos/</link><pubDate>Mon, 11 Oct 2021 10:43:35 -0400</pubDate><guid>/blog/replacing-docker-with-podman-on-macos/</guid><description>&lt;p>There are a number of reasons why you might want to replace docker, especially on macOS. The following feature bundled in Docker Desktop might have motivated you enough to consider replacing docker:&lt;/p></description></item><item><title>Automatically rotating AWS access keys</title><link>/blog/automatically-rotating-aws-keys/</link><pubDate>Fri, 17 Sep 2021 12:48:33 -0400</pubDate><guid>/blog/automatically-rotating-aws-keys/</guid><description>Rotating credentials is a security best practice. This morning, I read a question about automatically rotating AWS Access Keys without having to go through the hassle of navigating the AWS console. There are some existing solutions already, but I decided to write a script since it was incredibly simple. The script could be packed up as a systemd/launchd service to continually rotate access keys in the background.
In the longer term, migrating my local workflows to aws-vault seems like a more secure solution.</description></item><item><title>Why I threw out my dotfiles</title><link>/blog/why-i-threw-out-my-dotfiles/</link><pubDate>Wed, 08 Sep 2021 00:42:33 -0400</pubDate><guid>/blog/why-i-threw-out-my-dotfiles/</guid><description>&lt;p>Over the years I have collected a number of dotfiles that I have shared across both Linux and macOS machines (&lt;code>~/.zshrc&lt;/code>, &lt;code>~/.config/git/config&lt;/code>, &lt;code>~/.config/tmux/tmux.conf&lt;/code>, etc). I have tried several different ways to manage them, including &lt;a
href="https://www.atlassian.com/git/tutorials/dotfiles"
class="link--external" target="_blank" rel="noreferrer"
>bare git repos&lt;/a> and utilities such as &lt;a
href="https://www.gnu.org/software/stow/"
class="link--external" target="_blank" rel="noreferrer"
>GNU Stow&lt;/a>. These solutions work well enough, but I have since found what I would consider a much better solution for organizing user configuration: &lt;a
href="https://github.com/nix-community/home-manager"
class="link--external" target="_blank" rel="noreferrer"
>home-manager&lt;/a>.&lt;/p></description></item><item><title>What to do with a homelab</title><link>/blog/what-to-do-with-a-homelab/</link><pubDate>Mon, 06 Sep 2021 01:12:54 -0400</pubDate><guid>/blog/what-to-do-with-a-homelab/</guid><description>&lt;p>A homelab can be an inexpensive way to host a multitude of internal/external services and learn &lt;em>a lot&lt;/em> in the process.&lt;/p></description></item><item><title>AppGate SDP on Arch Linux</title><link>/blog/appgate-sdp-on-arch-linux/</link><pubDate>Mon, 16 Mar 2020 22:00:15 -0400</pubDate><guid>/blog/appgate-sdp-on-arch-linux/</guid><description>&lt;p>AppGate SDP provides a Zero Trust network. This post describes how to get AppGate SDP &lt;code>4.3.2&lt;/code> working on Arch Linux.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,19 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>dotfiles on davegallant.ca</title><link>/tags/dotfiles/</link><description>Recent content in dotfiles on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Wed, 08 Sep 2021 00:42:33 -0400</lastBuildDate><atom:link href="/tags/dotfiles/index.xml" rel="self" type="application/rss+xml"/><item><title>Why I threw out my dotfiles</title><link>/blog/why-i-threw-out-my-dotfiles/</link><pubDate>Wed, 08 Sep 2021 00:42:33 -0400</pubDate><guid>/blog/why-i-threw-out-my-dotfiles/</guid><description>&lt;p>Over the years I have collected a number of dotfiles that I have shared across both Linux and macOS machines (&lt;code>~/.zshrc&lt;/code>, &lt;code>~/.config/git/config&lt;/code>, &lt;code>~/.config/tmux/tmux.conf&lt;/code>, etc). I have tried several different ways to manage them, including &lt;a
href="https://www.atlassian.com/git/tutorials/dotfiles"
class="link--external" target="_blank" rel="noreferrer"
>bare git repos&lt;/a> and utilities such as &lt;a
href="https://www.gnu.org/software/stow/"
class="link--external" target="_blank" rel="noreferrer"
>GNU Stow&lt;/a>. These solutions work well enough, but I have since found what I would consider a much better solution for organizing user configuration: &lt;a
href="https://github.com/nix-community/home-manager"
class="link--external" target="_blank" rel="noreferrer"
>home-manager&lt;/a>.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>gitea actions on davegallant.ca</title><link>/tags/gitea-actions/</link><description>Recent content in gitea actions on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sun, 10 Dec 2023 17:22:11 -0500</lastBuildDate><atom:link href="/tags/gitea-actions/index.xml" rel="self" type="application/rss+xml"/><item><title>Setting up Gitea Actions with Tailscale</title><link>/blog/setting-up-gitea-actions-with-tailscale/</link><pubDate>Sun, 10 Dec 2023 17:22:11 -0500</pubDate><guid>/blog/setting-up-gitea-actions-with-tailscale/</guid><description>&lt;p>In this post I&amp;rsquo;ll go through the process of setting up Gitea Actions and &lt;a
href="https://tailscale.com/"
class="link--external" target="_blank" rel="noreferrer"
>Tailscale&lt;/a>, unlocking a simple and secure way to automate workflows.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>gitea on davegallant.ca</title><link>/tags/gitea/</link><description>Recent content in gitea on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sun, 10 Dec 2023 17:22:11 -0500</lastBuildDate><atom:link href="/tags/gitea/index.xml" rel="self" type="application/rss+xml"/><item><title>Setting up Gitea Actions with Tailscale</title><link>/blog/setting-up-gitea-actions-with-tailscale/</link><pubDate>Sun, 10 Dec 2023 17:22:11 -0500</pubDate><guid>/blog/setting-up-gitea-actions-with-tailscale/</guid><description>&lt;p>In this post I&amp;rsquo;ll go through the process of setting up Gitea Actions and &lt;a
href="https://tailscale.com/"
class="link--external" target="_blank" rel="noreferrer"
>Tailscale&lt;/a>, unlocking a simple and secure way to automate workflows.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>github actions on davegallant.ca</title><link>/tags/github-actions/</link><description>Recent content in github actions on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sun, 10 Dec 2023 17:22:11 -0500</lastBuildDate><atom:link href="/tags/github-actions/index.xml" rel="self" type="application/rss+xml"/><item><title>Setting up Gitea Actions with Tailscale</title><link>/blog/setting-up-gitea-actions-with-tailscale/</link><pubDate>Sun, 10 Dec 2023 17:22:11 -0500</pubDate><guid>/blog/setting-up-gitea-actions-with-tailscale/</guid><description>&lt;p>In this post I&amp;rsquo;ll go through the process of setting up Gitea Actions and &lt;a
href="https://tailscale.com/"
class="link--external" target="_blank" rel="noreferrer"
>Tailscale&lt;/a>, unlocking a simple and secure way to automate workflows.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,19 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>home-manager on davegallant.ca</title><link>/tags/home-manager/</link><description>Recent content in home-manager on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Wed, 08 Sep 2021 00:42:33 -0400</lastBuildDate><atom:link href="/tags/home-manager/index.xml" rel="self" type="application/rss+xml"/><item><title>Why I threw out my dotfiles</title><link>/blog/why-i-threw-out-my-dotfiles/</link><pubDate>Wed, 08 Sep 2021 00:42:33 -0400</pubDate><guid>/blog/why-i-threw-out-my-dotfiles/</guid><description>&lt;p>Over the years I have collected a number of dotfiles that I have shared across both Linux and macOS machines (&lt;code>~/.zshrc&lt;/code>, &lt;code>~/.config/git/config&lt;/code>, &lt;code>~/.config/tmux/tmux.conf&lt;/code>, etc). I have tried several different ways to manage them, including &lt;a
href="https://www.atlassian.com/git/tutorials/dotfiles"
class="link--external" target="_blank" rel="noreferrer"
>bare git repos&lt;/a> and utilities such as &lt;a
href="https://www.gnu.org/software/stow/"
class="link--external" target="_blank" rel="noreferrer"
>GNU Stow&lt;/a>. These solutions work well enough, but I have since found what I would consider a much better solution for organizing user configuration: &lt;a
href="https://github.com/nix-community/home-manager"
class="link--external" target="_blank" rel="noreferrer"
>home-manager&lt;/a>.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,13 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>invidious on davegallant.ca</title><link>/tags/invidious/</link><description>Recent content in invidious on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sat, 10 Dec 2022 21:46:55 -0500</lastBuildDate><atom:link href="/tags/invidious/index.xml" rel="self" type="application/rss+xml"/><item><title>Watching YouTube in private</title><link>/blog/watching-youtube-in-private/</link><pubDate>Sat, 10 Dec 2022 21:46:55 -0500</pubDate><guid>/blog/watching-youtube-in-private/</guid><description>&lt;p>I recently stumbled upon &lt;a
href="https://yewtu.be"
class="link--external" target="_blank" rel="noreferrer"
>yewtu.be&lt;/a> and found it intriguing. It not only allows you to watch YouTube without &lt;em>being on YouTube&lt;/em>, but it also allows you to create an account and subscribe to channels without a Google account. What sort of wizardry is going on under the hood? It turns out that it&amp;rsquo;s a hosted instance of &lt;a
href="https://invidious.io/"
class="link--external" target="_blank" rel="noreferrer"
>invidious&lt;/a>.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,19 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>nix on davegallant.ca</title><link>/tags/nix/</link><description>Recent content in nix on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Wed, 08 Sep 2021 00:42:33 -0400</lastBuildDate><atom:link href="/tags/nix/index.xml" rel="self" type="application/rss+xml"/><item><title>Why I threw out my dotfiles</title><link>/blog/why-i-threw-out-my-dotfiles/</link><pubDate>Wed, 08 Sep 2021 00:42:33 -0400</pubDate><guid>/blog/why-i-threw-out-my-dotfiles/</guid><description>&lt;p>Over the years I have collected a number of dotfiles that I have shared across both Linux and macOS machines (&lt;code>~/.zshrc&lt;/code>, &lt;code>~/.config/git/config&lt;/code>, &lt;code>~/.config/tmux/tmux.conf&lt;/code>, etc). I have tried several different ways to manage them, including &lt;a
href="https://www.atlassian.com/git/tutorials/dotfiles"
class="link--external" target="_blank" rel="noreferrer"
>bare git repos&lt;/a> and utilities such as &lt;a
href="https://www.gnu.org/software/stow/"
class="link--external" target="_blank" rel="noreferrer"
>GNU Stow&lt;/a>. These solutions work well enough, but I have since found what I would consider a much better solution for organizing user configuration: &lt;a
href="https://github.com/nix-community/home-manager"
class="link--external" target="_blank" rel="noreferrer"
>home-manager&lt;/a>.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

View File

@@ -1,13 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>openwrt on davegallant.ca</title><link>/tags/openwrt/</link><description>Recent content in openwrt on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sat, 02 Apr 2022 18:50:09 -0400</lastBuildDate><atom:link href="/tags/openwrt/index.xml" rel="self" type="application/rss+xml"/><item><title>Virtualizing my router with pfSense</title><link>/blog/virtualizing-a-router-with-pfsense/</link><pubDate>Sat, 02 Apr 2022 18:50:09 -0400</pubDate><guid>/blog/virtualizing-a-router-with-pfsense/</guid><description>&lt;p>My aging router has been running &lt;a
href="https://en.wikipedia.org/wiki/OpenWrt"
class="link--external" target="_blank" rel="noreferrer"
>OpenWrt&lt;/a> for years and for the most part has been quite reliable. OpenWrt is an open-source project used on embedded devices to route network traffic. It supports many different configurations and there exists a &lt;a
href="https://openwrt.org/packages/index/start"
class="link--external" target="_blank" rel="noreferrer"
>large index of packages&lt;/a>. Ever since I&amp;rsquo;ve connected some standalone wireless access points, I&amp;rsquo;ve had less of a need for an off-the-shelf all-in-one wireless router combo. I&amp;rsquo;ve also recently been experiencing instability with my router (likely the result of a combination of configuration tweaking and firmware updating). OpenWrt has served me well, but it is time to move on!&lt;/p></description></item></channel></rss>

View File

@@ -9,4 +9,4 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-sun" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 12m-4 0a4 4 0 108 0 4 4 0 10-8 0"/><path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"/></svg></button>
<button class="theme__toggle dark--hidden" aria-label="Toggle dark mode"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-moon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 3c.132.0.263.0.393.0a7.5 7.5.0 007.92 12.446A9 9 0 1112 2.992z"/></svg></button></header><main><div class=content><div class=content-section><h1>Tags</h1></div><article class=post><div class=post-header><h2><a href=/tags/database/>database</a></h2><div class=post-meta><span>2023-05-22</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/eks/>eks</a></h2><div class=post-meta><span>2023-05-22</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/k8s/>k8s</a></h2><div class=post-meta><span>2023-05-22</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/kubectl-plugin-socks5-proxy/>kubectl-plugin-socks5-proxy</a></h2><div class=post-meta><span>2023-05-22</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/proxy/>proxy</a></h2><div class=post-meta><span>2023-05-22</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/socat/>socat</a></h2><div class=post-meta><span>2023-05-22</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/socks/>socks</a></h2><div class=post-meta><span>2023-05-22</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/invidious/>invidious</a></h2><div class=post-meta><span>2022-12-10</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/privacy/>privacy</a></h2><div class=post-meta><span>2022-12-10</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/yewtu.be/>yewtu.be</a></h2><div class=post-meta><span>2022-12-10</span></div></div><div class=post-content></div></article><div class=pagination><span class="pagination__button pagination__button--previous"><a href=/tags/><span>&lt;</span>
<span>Newer Posts</span>
</a></span><span class="pagination__button pagination__button--next"><a href=/tags/page/3/>Older Posts ></a></span></div></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.4be06c129d6a89e60a661c6ac8c8e0434d58fb0fa2f685f85e2c306aca62adc5e77e7c63cb1c8a2cc5794ea42927281cf868514bcdce21ddf23dc3520e6743e7.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>
</a></span><span class="pagination__button pagination__button--next"><a href=/tags/page/3/>Older Posts ></a></span></div></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.c26c1b7b76f4923d8125720886ede9ca08bfe20b924683914ba4c1c35d53667c6c2d764f5482d3860d36b9e58a50255bc22a03ff145555979852c5ec74f15e51.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>

View File

@@ -9,4 +9,4 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-sun" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 12m-4 0a4 4 0 108 0 4 4 0 10-8 0"/><path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"/></svg></button>
<button class="theme__toggle dark--hidden" aria-label="Toggle dark mode"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-moon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 3c.132.0.263.0.393.0a7.5 7.5.0 007.92 12.446A9 9 0 1112 2.992z"/></svg></button></header><main><div class=content><div class=content-section><h1>Tags</h1></div><article class=post><div class=post-header><h2><a href=/tags/youtube/>youtube</a></h2><div class=post-meta><span>2022-12-10</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/openwrt/>openwrt</a></h2><div class=post-meta><span>2022-04-02</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/pfsense/>pfsense</a></h2><div class=post-meta><span>2022-04-02</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/proxmox/>proxmox</a></h2><div class=post-meta><span>2022-04-02</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/router/>router</a></h2><div class=post-meta><span>2022-04-02</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/router-on-a-stick/>router-on-a-stick</a></h2><div class=post-meta><span>2022-04-02</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/vlan/>vlan</a></h2><div class=post-meta><span>2022-04-02</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/backup/>backup</a></h2><div class=post-meta><span>2022-03-13</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/gmail/>gmail</a></h2><div class=post-meta><span>2022-03-13</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/ransomware/>ransomware</a></h2><div class=post-meta><span>2022-03-13</span></div></div><div class=post-content></div></article><div class=pagination><span class="pagination__button pagination__button--previous"><a href=/tags/page/2/><span>&lt;</span>
<span>Newer Posts</span>
</a></span><span class="pagination__button pagination__button--next"><a href=/tags/page/4/>Older Posts ></a></span></div></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.4be06c129d6a89e60a661c6ac8c8e0434d58fb0fa2f685f85e2c306aca62adc5e77e7c63cb1c8a2cc5794ea42927281cf868514bcdce21ddf23dc3520e6743e7.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>
</a></span><span class="pagination__button pagination__button--next"><a href=/tags/page/4/>Older Posts ></a></span></div></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.c26c1b7b76f4923d8125720886ede9ca08bfe20b924683914ba4c1c35d53667c6c2d764f5482d3860d36b9e58a50255bc22a03ff145555979852c5ec74f15e51.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>

View File

@@ -9,4 +9,4 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-sun" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 12m-4 0a4 4 0 108 0 4 4 0 10-8 0"/><path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"/></svg></button>
<button class="theme__toggle dark--hidden" aria-label="Toggle dark mode"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-moon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 3c.132.0.263.0.393.0a7.5 7.5.0 007.92 12.446A9 9 0 1112 2.992z"/></svg></button></header><main><div class=content><div class=content-section><h1>Tags</h1></div><article class=post><div class=post-header><h2><a href=/tags/synology/>synology</a></h2><div class=post-meta><span>2022-03-13</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/k3s/>k3s</a></h2><div class=post-meta><span>2021-11-14</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/lxc/>lxc</a></h2><div class=post-meta><span>2021-11-14</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/containers/>containers</a></h2><div class=post-meta><span>2021-10-11</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/docker/>docker</a></h2><div class=post-meta><span>2021-10-11</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/podman/>podman</a></h2><div class=post-meta><span>2021-10-11</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/aws-vault/>aws-vault</a></h2><div class=post-meta><span>2021-09-17</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/python/>python</a></h2><div class=post-meta><span>2021-09-17</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/security/>security</a></h2><div class=post-meta><span>2021-09-17</span></div></div><div class=post-content></div></article><article class=post><div class=post-header><h2><a href=/tags/dotfiles/>dotfiles</a></h2><div class=post-meta><span>2021-09-08</span></div></div><div class=post-content></div></article><div class=pagination><span class="pagination__button pagination__button--previous"><a href=/tags/page/3/><span>&lt;</span>
<span>Newer Posts</span>
</a></span><span class="pagination__button pagination__button--next"><a href=/tags/page/5/>Older Posts ></a></span></div></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.4be06c129d6a89e60a661c6ac8c8e0434d58fb0fa2f685f85e2c306aca62adc5e77e7c63cb1c8a2cc5794ea42927281cf868514bcdce21ddf23dc3520e6743e7.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>
</a></span><span class="pagination__button pagination__button--next"><a href=/tags/page/5/>Older Posts ></a></span></div></div><div class=sidebar></div></main><footer><div class=copyright>Dave Gallant</div></footer><script src=/js/main.c26c1b7b76f4923d8125720886ede9ca08bfe20b924683914ba4c1c35d53667c6c2d764f5482d3860d36b9e58a50255bc22a03ff145555979852c5ec74f15e51.js></script><script src=/js/flexsearch.7526b4a442b29ebd1a47e1ee9eebb29ca4f8203f9ea7f7ab38af5a5a201c182e417976872cbd6aa89cb546b025df34cde72aaf65fd8732f2589e314fd47ede73.js></script><script defer src=https://static.cloudflareinsights.com/beacon.min.js data-cf-beacon='{"token": "b96799f53f9940dca6f660e6052ba009"}'></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V8WJDERTX9",{anonymize_ip:!1})}</script></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,13 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>pfsense on davegallant.ca</title><link>/tags/pfsense/</link><description>Recent content in pfsense on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sat, 02 Apr 2022 18:50:09 -0400</lastBuildDate><atom:link href="/tags/pfsense/index.xml" rel="self" type="application/rss+xml"/><item><title>Virtualizing my router with pfSense</title><link>/blog/virtualizing-a-router-with-pfsense/</link><pubDate>Sat, 02 Apr 2022 18:50:09 -0400</pubDate><guid>/blog/virtualizing-a-router-with-pfsense/</guid><description>&lt;p>My aging router has been running &lt;a
href="https://en.wikipedia.org/wiki/OpenWrt"
class="link--external" target="_blank" rel="noreferrer"
>OpenWrt&lt;/a> for years and for the most part has been quite reliable. OpenWrt is an open-source project used on embedded devices to route network traffic. It supports many different configurations and there exists a &lt;a
href="https://openwrt.org/packages/index/start"
class="link--external" target="_blank" rel="noreferrer"
>large index of packages&lt;/a>. Ever since I&amp;rsquo;ve connected some standalone wireless access points, I&amp;rsquo;ve had less of a need for an off-the-shelf all-in-one wireless router combo. I&amp;rsquo;ve also recently been experiencing instability with my router (likely the result of a combination of configuration tweaking and firmware updating). OpenWrt has served me well, but it is time to move on!&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,13 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>privacy on davegallant.ca</title><link>/tags/privacy/</link><description>Recent content in privacy on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sat, 10 Dec 2022 21:46:55 -0500</lastBuildDate><atom:link href="/tags/privacy/index.xml" rel="self" type="application/rss+xml"/><item><title>Watching YouTube in private</title><link>/blog/watching-youtube-in-private/</link><pubDate>Sat, 10 Dec 2022 21:46:55 -0500</pubDate><guid>/blog/watching-youtube-in-private/</guid><description>&lt;p>I recently stumbled upon &lt;a
href="https://yewtu.be"
class="link--external" target="_blank" rel="noreferrer"
>yewtu.be&lt;/a> and found it intriguing. It not only allows you to watch YouTube without &lt;em>being on YouTube&lt;/em>, but it also allows you to create an account and subscribe to channels without a Google account. What sort of wizardry is going on under the hood? It turns out that it&amp;rsquo;s a hosted instance of &lt;a
href="https://invidious.io/"
class="link--external" target="_blank" rel="noreferrer"
>invidious&lt;/a>.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

View File

@@ -1,13 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>proxmox on davegallant.ca</title><link>/tags/proxmox/</link><description>Recent content in proxmox on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sat, 02 Apr 2022 18:50:09 -0400</lastBuildDate><atom:link href="/tags/proxmox/index.xml" rel="self" type="application/rss+xml"/><item><title>Virtualizing my router with pfSense</title><link>/blog/virtualizing-a-router-with-pfsense/</link><pubDate>Sat, 02 Apr 2022 18:50:09 -0400</pubDate><guid>/blog/virtualizing-a-router-with-pfsense/</guid><description>&lt;p>My aging router has been running &lt;a
href="https://en.wikipedia.org/wiki/OpenWrt"
class="link--external" target="_blank" rel="noreferrer"
>OpenWrt&lt;/a> for years and for the most part has been quite reliable. OpenWrt is an open-source project used on embedded devices to route network traffic. It supports many different configurations and there exists a &lt;a
href="https://openwrt.org/packages/index/start"
class="link--external" target="_blank" rel="noreferrer"
>large index of packages&lt;/a>. Ever since I&amp;rsquo;ve connected some standalone wireless access points, I&amp;rsquo;ve had less of a need for an off-the-shelf all-in-one wireless router combo. I&amp;rsquo;ve also recently been experiencing instability with my router (likely the result of a combination of configuration tweaking and firmware updating). OpenWrt has served me well, but it is time to move on!&lt;/p></description></item><item><title>Running K3s in LXC on Proxmox</title><link>/blog/running-k3s-in-lxc-on-proxmox/</link><pubDate>Sun, 14 Nov 2021 10:07:03 -0500</pubDate><guid>/blog/running-k3s-in-lxc-on-proxmox/</guid><description>It has been a while since I&amp;rsquo;ve actively used Kubernetes and wanted to explore the evolution of tools such as Helm and Tekton. I decided to deploy K3s, since I&amp;rsquo;ve had success with deploying it on resource-contrained Raspberry Pis in the past. I thought that this time it&amp;rsquo;d be convenient to have K3s running in a LXC container on Proxmox. This would allow for easy snapshotting of the entire Kubernetes deployment.</description></item><item><title>What to do with a homelab</title><link>/blog/what-to-do-with-a-homelab/</link><pubDate>Mon, 06 Sep 2021 01:12:54 -0400</pubDate><guid>/blog/what-to-do-with-a-homelab/</guid><description>&lt;p>A homelab can be an inexpensive way to host a multitude of internal/external services and learn &lt;em>a lot&lt;/em> in the process.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,13 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>router-on-a-stick on davegallant.ca</title><link>/tags/router-on-a-stick/</link><description>Recent content in router-on-a-stick on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sat, 02 Apr 2022 18:50:09 -0400</lastBuildDate><atom:link href="/tags/router-on-a-stick/index.xml" rel="self" type="application/rss+xml"/><item><title>Virtualizing my router with pfSense</title><link>/blog/virtualizing-a-router-with-pfsense/</link><pubDate>Sat, 02 Apr 2022 18:50:09 -0400</pubDate><guid>/blog/virtualizing-a-router-with-pfsense/</guid><description>&lt;p>My aging router has been running &lt;a
href="https://en.wikipedia.org/wiki/OpenWrt"
class="link--external" target="_blank" rel="noreferrer"
>OpenWrt&lt;/a> for years and for the most part has been quite reliable. OpenWrt is an open-source project used on embedded devices to route network traffic. It supports many different configurations and there exists a &lt;a
href="https://openwrt.org/packages/index/start"
class="link--external" target="_blank" rel="noreferrer"
>large index of packages&lt;/a>. Ever since I&amp;rsquo;ve connected some standalone wireless access points, I&amp;rsquo;ve had less of a need for an off-the-shelf all-in-one wireless router combo. I&amp;rsquo;ve also recently been experiencing instability with my router (likely the result of a combination of configuration tweaking and firmware updating). OpenWrt has served me well, but it is time to move on!&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

View File

@@ -1,13 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>router on davegallant.ca</title><link>/tags/router/</link><description>Recent content in router on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sat, 02 Apr 2022 18:50:09 -0400</lastBuildDate><atom:link href="/tags/router/index.xml" rel="self" type="application/rss+xml"/><item><title>Virtualizing my router with pfSense</title><link>/blog/virtualizing-a-router-with-pfsense/</link><pubDate>Sat, 02 Apr 2022 18:50:09 -0400</pubDate><guid>/blog/virtualizing-a-router-with-pfsense/</guid><description>&lt;p>My aging router has been running &lt;a
href="https://en.wikipedia.org/wiki/OpenWrt"
class="link--external" target="_blank" rel="noreferrer"
>OpenWrt&lt;/a> for years and for the most part has been quite reliable. OpenWrt is an open-source project used on embedded devices to route network traffic. It supports many different configurations and there exists a &lt;a
href="https://openwrt.org/packages/index/start"
class="link--external" target="_blank" rel="noreferrer"
>large index of packages&lt;/a>. Ever since I&amp;rsquo;ve connected some standalone wireless access points, I&amp;rsquo;ve had less of a need for an off-the-shelf all-in-one wireless router combo. I&amp;rsquo;ve also recently been experiencing instability with my router (likely the result of a combination of configuration tweaking and firmware updating). OpenWrt has served me well, but it is time to move on!&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,31 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>self-hosted on davegallant.ca</title><link>/tags/self-hosted/</link><description>Recent content in self-hosted on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sun, 10 Dec 2023 17:22:11 -0500</lastBuildDate><atom:link href="/tags/self-hosted/index.xml" rel="self" type="application/rss+xml"/><item><title>Setting up Gitea Actions with Tailscale</title><link>/blog/setting-up-gitea-actions-with-tailscale/</link><pubDate>Sun, 10 Dec 2023 17:22:11 -0500</pubDate><guid>/blog/setting-up-gitea-actions-with-tailscale/</guid><description>&lt;p>In this post I&amp;rsquo;ll go through the process of setting up Gitea Actions and &lt;a
href="https://tailscale.com/"
class="link--external" target="_blank" rel="noreferrer"
>Tailscale&lt;/a>, unlocking a simple and secure way to automate workflows.&lt;/p></description></item><item><title>Watching YouTube in private</title><link>/blog/watching-youtube-in-private/</link><pubDate>Sat, 10 Dec 2022 21:46:55 -0500</pubDate><guid>/blog/watching-youtube-in-private/</guid><description>&lt;p>I recently stumbled upon &lt;a
href="https://yewtu.be"
class="link--external" target="_blank" rel="noreferrer"
>yewtu.be&lt;/a> and found it intriguing. It not only allows you to watch YouTube without &lt;em>being on YouTube&lt;/em>, but it also allows you to create an account and subscribe to channels without a Google account. What sort of wizardry is going on under the hood? It turns out that it&amp;rsquo;s a hosted instance of &lt;a
href="https://invidious.io/"
class="link--external" target="_blank" rel="noreferrer"
>invidious&lt;/a>.&lt;/p></description></item><item><title>Virtualizing my router with pfSense</title><link>/blog/virtualizing-a-router-with-pfsense/</link><pubDate>Sat, 02 Apr 2022 18:50:09 -0400</pubDate><guid>/blog/virtualizing-a-router-with-pfsense/</guid><description>&lt;p>My aging router has been running &lt;a
href="https://en.wikipedia.org/wiki/OpenWrt"
class="link--external" target="_blank" rel="noreferrer"
>OpenWrt&lt;/a> for years and for the most part has been quite reliable. OpenWrt is an open-source project used on embedded devices to route network traffic. It supports many different configurations and there exists a &lt;a
href="https://openwrt.org/packages/index/start"
class="link--external" target="_blank" rel="noreferrer"
>large index of packages&lt;/a>. Ever since I&amp;rsquo;ve connected some standalone wireless access points, I&amp;rsquo;ve had less of a need for an off-the-shelf all-in-one wireless router combo. I&amp;rsquo;ve also recently been experiencing instability with my router (likely the result of a combination of configuration tweaking and firmware updating). OpenWrt has served me well, but it is time to move on!&lt;/p></description></item><item><title>Running K3s in LXC on Proxmox</title><link>/blog/running-k3s-in-lxc-on-proxmox/</link><pubDate>Sun, 14 Nov 2021 10:07:03 -0500</pubDate><guid>/blog/running-k3s-in-lxc-on-proxmox/</guid><description>It has been a while since I&amp;rsquo;ve actively used Kubernetes and wanted to explore the evolution of tools such as Helm and Tekton. I decided to deploy K3s, since I&amp;rsquo;ve had success with deploying it on resource-contrained Raspberry Pis in the past. I thought that this time it&amp;rsquo;d be convenient to have K3s running in a LXC container on Proxmox. This would allow for easy snapshotting of the entire Kubernetes deployment.</description></item><item><title>What to do with a homelab</title><link>/blog/what-to-do-with-a-homelab/</link><pubDate>Mon, 06 Sep 2021 01:12:54 -0400</pubDate><guid>/blog/what-to-do-with-a-homelab/</guid><description>&lt;p>A homelab can be an inexpensive way to host a multitude of internal/external services and learn &lt;em>a lot&lt;/em> in the process.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,19 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>tailscale on davegallant.ca</title><link>/tags/tailscale/</link><description>Recent content in tailscale on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sun, 10 Dec 2023 17:22:11 -0500</lastBuildDate><atom:link href="/tags/tailscale/index.xml" rel="self" type="application/rss+xml"/><item><title>Setting up Gitea Actions with Tailscale</title><link>/blog/setting-up-gitea-actions-with-tailscale/</link><pubDate>Sun, 10 Dec 2023 17:22:11 -0500</pubDate><guid>/blog/setting-up-gitea-actions-with-tailscale/</guid><description>&lt;p>In this post I&amp;rsquo;ll go through the process of setting up Gitea Actions and &lt;a
href="https://tailscale.com/"
class="link--external" target="_blank" rel="noreferrer"
>Tailscale&lt;/a>, unlocking a simple and secure way to automate workflows.&lt;/p></description></item><item><title>Watching YouTube in private</title><link>/blog/watching-youtube-in-private/</link><pubDate>Sat, 10 Dec 2022 21:46:55 -0500</pubDate><guid>/blog/watching-youtube-in-private/</guid><description>&lt;p>I recently stumbled upon &lt;a
href="https://yewtu.be"
class="link--external" target="_blank" rel="noreferrer"
>yewtu.be&lt;/a> and found it intriguing. It not only allows you to watch YouTube without &lt;em>being on YouTube&lt;/em>, but it also allows you to create an account and subscribe to channels without a Google account. What sort of wizardry is going on under the hood? It turns out that it&amp;rsquo;s a hosted instance of &lt;a
href="https://invidious.io/"
class="link--external" target="_blank" rel="noreferrer"
>invidious&lt;/a>.&lt;/p></description></item><item><title>What to do with a homelab</title><link>/blog/what-to-do-with-a-homelab/</link><pubDate>Mon, 06 Sep 2021 01:12:54 -0400</pubDate><guid>/blog/what-to-do-with-a-homelab/</guid><description>&lt;p>A homelab can be an inexpensive way to host a multitude of internal/external services and learn &lt;em>a lot&lt;/em> in the process.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

View File

@@ -1,13 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>vlan on davegallant.ca</title><link>/tags/vlan/</link><description>Recent content in vlan on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sat, 02 Apr 2022 18:50:09 -0400</lastBuildDate><atom:link href="/tags/vlan/index.xml" rel="self" type="application/rss+xml"/><item><title>Virtualizing my router with pfSense</title><link>/blog/virtualizing-a-router-with-pfsense/</link><pubDate>Sat, 02 Apr 2022 18:50:09 -0400</pubDate><guid>/blog/virtualizing-a-router-with-pfsense/</guid><description>&lt;p>My aging router has been running &lt;a
href="https://en.wikipedia.org/wiki/OpenWrt"
class="link--external" target="_blank" rel="noreferrer"
>OpenWrt&lt;/a> for years and for the most part has been quite reliable. OpenWrt is an open-source project used on embedded devices to route network traffic. It supports many different configurations and there exists a &lt;a
href="https://openwrt.org/packages/index/start"
class="link--external" target="_blank" rel="noreferrer"
>large index of packages&lt;/a>. Ever since I&amp;rsquo;ve connected some standalone wireless access points, I&amp;rsquo;ve had less of a need for an off-the-shelf all-in-one wireless router combo. I&amp;rsquo;ve also recently been experiencing instability with my router (likely the result of a combination of configuration tweaking and firmware updating). OpenWrt has served me well, but it is time to move on!&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,13 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>yewtu.be on davegallant.ca</title><link>/tags/yewtu.be/</link><description>Recent content in yewtu.be on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sat, 10 Dec 2022 21:46:55 -0500</lastBuildDate><atom:link href="/tags/yewtu.be/index.xml" rel="self" type="application/rss+xml"/><item><title>Watching YouTube in private</title><link>/blog/watching-youtube-in-private/</link><pubDate>Sat, 10 Dec 2022 21:46:55 -0500</pubDate><guid>/blog/watching-youtube-in-private/</guid><description>&lt;p>I recently stumbled upon &lt;a
href="https://yewtu.be"
class="link--external" target="_blank" rel="noreferrer"
>yewtu.be&lt;/a> and found it intriguing. It not only allows you to watch YouTube without &lt;em>being on YouTube&lt;/em>, but it also allows you to create an account and subscribe to channels without a Google account. What sort of wizardry is going on under the hood? It turns out that it&amp;rsquo;s a hosted instance of &lt;a
href="https://invidious.io/"
class="link--external" target="_blank" rel="noreferrer"
>invidious&lt;/a>.&lt;/p></description></item></channel></rss>

File diff suppressed because one or more lines are too long

View File

@@ -1,13 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>youtube on davegallant.ca</title><link>/tags/youtube/</link><description>Recent content in youtube on davegallant.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Dave Gallant</copyright><lastBuildDate>Sat, 10 Dec 2022 21:46:55 -0500</lastBuildDate><atom:link href="/tags/youtube/index.xml" rel="self" type="application/rss+xml"/><item><title>Watching YouTube in private</title><link>/blog/watching-youtube-in-private/</link><pubDate>Sat, 10 Dec 2022 21:46:55 -0500</pubDate><guid>/blog/watching-youtube-in-private/</guid><description>&lt;p>I recently stumbled upon &lt;a
href="https://yewtu.be"
class="link--external" target="_blank" rel="noreferrer"
>yewtu.be&lt;/a> and found it intriguing. It not only allows you to watch YouTube without &lt;em>being on YouTube&lt;/em>, but it also allows you to create an account and subscribe to channels without a Google account. What sort of wizardry is going on under the hood? It turns out that it&amp;rsquo;s a hosted instance of &lt;a
href="https://invidious.io/"
class="link--external" target="_blank" rel="noreferrer"
>invidious&lt;/a>.&lt;/p></description></item></channel></rss>