Compare commits
4 Commits
1f8681a898
...
fde769a268
Author | SHA1 | Date | |
---|---|---|---|
|
fde769a268 | ||
|
17218aa3eb | ||
|
ae4beb114b | ||
|
5434804fa1 |
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "themes/hugo-video"]
|
||||
path = themes/hugo-video
|
||||
url = https://github.com/martignoni/hugo-video.git
|
13
config.yaml
@@ -7,7 +7,9 @@ preserveTaxonomyNames: true
|
||||
pygmentsstyle: "monokai"
|
||||
pygmentscodefences: false
|
||||
pygmentscodefencesguesssyntax: true
|
||||
theme: archie
|
||||
theme:
|
||||
- archie
|
||||
- hugo-video
|
||||
title: davegallant
|
||||
|
||||
params:
|
||||
@@ -23,12 +25,15 @@ params:
|
||||
- css/custom.css
|
||||
|
||||
social:
|
||||
- name: Email
|
||||
icon: at-sign
|
||||
url: 'mailto:me@davegallant.ca'
|
||||
- name: LinkTree
|
||||
icon: compass
|
||||
url: 'https://linktr.ee/davegallant'
|
||||
- name: GitHub
|
||||
icon: github
|
||||
url: 'https://github.com/davegallant'
|
||||
- name: Twitter
|
||||
icon: twitter
|
||||
url: 'https://twitter.com/davega11ant/'
|
||||
- name: Mastodon
|
||||
icon: speaker
|
||||
url: https://mastodon.social/@davegallant
|
||||
|
@@ -48,7 +48,7 @@ Synology's MailPlus seems to be a good candidate for backing up this data. By en
|
||||
|
||||
Installing MailPlus can be done from the Package Center:
|
||||
|
||||

|
||||

|
||||
|
||||
Next, I went into **Synology MailPlus Server** and on the left, clicked on **Account** and ensured my user was marked as active.
|
||||
|
||||
@@ -60,7 +60,7 @@ I made sure to set the `Fetch Range` to `All` in order to get all emails from th
|
||||
|
||||
After this, mail started coming in.
|
||||
|
||||

|
||||

|
||||
|
||||
After fetching 19 years worth of emails, I tried searching for some emails. It only took a few seconds to search through ~50K emails, which is a relief if I ever did have to search for something important.
|
||||
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
@@ -1,35 +0,0 @@
|
||||
---
|
||||
title: "Enhancing Pfsense With Services"
|
||||
date: 2023-03-25T18:37:08-04:00
|
||||
lastmod: 2023-03-25T18:37:08-04:00
|
||||
draft: true
|
||||
keywords: []
|
||||
description: ""
|
||||
tags: []
|
||||
categories: []
|
||||
author: ""
|
||||
|
||||
# You can also close(false) or open(true) something for this content.
|
||||
# P.S. comment can only be closed
|
||||
comment: false
|
||||
toc: false
|
||||
autoCollapseToc: false
|
||||
postMetaInFooter: false
|
||||
hiddenFromHomePage: false
|
||||
# You can also define another contentCopyright. e.g. contentCopyright: "This is another copyright."
|
||||
contentCopyright: false
|
||||
reward: false
|
||||
mathjax: false
|
||||
mathjaxEnableSingleDollar: false
|
||||
|
||||
flowchartDiagrams:
|
||||
enable: false
|
||||
options: ""
|
||||
|
||||
sequenceDiagrams:
|
||||
enable: false
|
||||
options: ""
|
||||
|
||||
---
|
||||
|
||||
<!--more-->
|
After Width: | Height: | Size: 35 KiB |
206
content/post/setting-up-gitea-actions-with-tailscale/index.md
Normal file
@@ -0,0 +1,206 @@
|
||||
---
|
||||
title: "Setting Up Gitea Actions With Tailscale"
|
||||
date: 2023-12-10T17:22:11-05:00
|
||||
lastmod: 2023-12-10T17:22:11-05:00
|
||||
draft: false
|
||||
keywords: []
|
||||
description: ""
|
||||
tags: ["gitea", "gitea actions", "github actions", "tailscale"]
|
||||
categories: []
|
||||
author: ""
|
||||
|
||||
# You can also close(false) or open(true) something for this content.
|
||||
# P.S. comment can only be closed
|
||||
comment: false
|
||||
toc: false
|
||||
autoCollapseToc: false
|
||||
postMetaInFooter: false
|
||||
hiddenFromHomePage: false
|
||||
# You can also define another contentCopyright. e.g. contentCopyright: "This is another copyright."
|
||||
contentCopyright: false
|
||||
reward: false
|
||||
mathjax: false
|
||||
mathjaxEnableSingleDollar: false
|
||||
|
||||
flowchartDiagrams:
|
||||
enable: false
|
||||
options: ""
|
||||
|
||||
sequenceDiagrams:
|
||||
enable: false
|
||||
options: ""
|
||||
---
|
||||
|
||||
<!--more-->
|
||||
|
||||
In this post I'll go through the process of setting up Gitea Actions and [Tailscale](https://tailscale.com/), unlocking a simple and secure way to automate workflows.
|
||||
|
||||
## What is Gitea?
|
||||
|
||||
[Gitea](https://about.gitea.com/) is a lightweight and fast git server that has much of the same look and feel as github. I have been using it in my homelab to mirror repositories hosted on other platforms such as github and gitlab. These mirrors take advantage of the decentralized nature of git by serving as "backups". One of the main reasons I hadn't been using it more often was due to the lack of integrated CI/CD. This is no longer the case.
|
||||
|
||||
## Gitea Actions
|
||||
|
||||
[Gitea Actions](https://docs.gitea.com/usage/actions/overview) have made it into the [1.19.0 release](https://blog.gitea.com/release-of-1.19.0/). This feature had been in an experimental state up until [1.21.0](https://blog.gitea.com/release-of-1.21.0/) and is now enabled by default 🎉.
|
||||
|
||||
So what are they? If you've ever used GitHub Actions (and if you're reading this, I imagine you have), these will look familiar. Gitea Actions essentially enable the ability to run github workflows on gitea. Workflows between gitea and github are not completely interopable, but a lot of the same workflow syntax is already compatible on gitea. You can find a documented list of [unsupported workflows syntax](https://docs.gitea.com/usage/actions/comparison#unsupported-workflows-syntax).
|
||||
|
||||
Actions work by using a [custom fork](https://gitea.com/gitea/act) of [nekos/act](https://github.com/nektos/act). Workflows run in a new container for every job. If you specify an action such as 'actions/checkout@v3', it defaults to downloading the scripts from github.com. To avoid internet egress, you could always clone the required actions to your local gitea instance.
|
||||
|
||||
Actions (gitea's implementation) has me excited because it makes spinning up a network-isolated environment for workflow automation incredibly simple.
|
||||
|
||||
## Integration with Tailscale
|
||||
|
||||
So how does Tailscale help here? Well, more recently I've been exposing my self-hosted services through a combination of traefik and the tailscale (through the tailscale-traefik proxy integration described [here](https://traefik.io/blog/exploring-the-tailscale-traefik-proxy-integration/)). This allows for a nice looking dns name (i.e. gitea.my-tailnet-name.ts.net) and automatic tls certificate management. I can also share this tailscale node securely with other tailscale users without configuring any firewall rules on my router.
|
||||
|
||||
## Deploying Gitea, Traefik, and Tailscale
|
||||
|
||||
In my case, the following is already set up:
|
||||
|
||||
- [docker-compose is installed](https://docs.docker.com/compose/install/linux/)
|
||||
- [tailscale is installed on the gitea host](https://tailscale.com/kb/1017/install/)
|
||||
- [tailscale magic dns is enabled](https://tailscale.com/kb/1081/magicdns/)
|
||||
|
||||
My preferred approach to deploying code in a homelab environment is with docker compose. I have deployed this in a [proxmox lxc container](https://pve.proxmox.com/wiki/Linux_Container) based on debian with a hostname `gitea`. This could be deployed in any environment and with any hostname (as long you updated the tailscale machine name to your preferred subdomain for magic dns).
|
||||
|
||||
The `docker-compose.yaml` file looks like:
|
||||
|
||||
```yaml
|
||||
version: "3.7"
|
||||
services:
|
||||
gitea:
|
||||
image: gitea/gitea:1.21.1
|
||||
container_name: gitea
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
|
||||
- GITEA__server__DOMAIN=gitea.my-tailnet-name.ts.net
|
||||
- GITEA__server__ROOT_URL=https://gitea.my-tailnet-name.ts.net
|
||||
- GITEA__server__HTTP_ADDR=0.0.0.0
|
||||
- GITEA__server__LFS_JWT_SECRET=my-secret-jwt
|
||||
restart: always
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
traefik:
|
||||
image: traefik:v3.0.0-beta4
|
||||
container_name: traefik
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- 80:80
|
||||
- 443:443
|
||||
volumes:
|
||||
- ./traefik/data/traefik.yaml:/traefik.yaml:ro
|
||||
- ./traefik/data/dynamic.yaml:/dynamic.yaml:ro
|
||||
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
|
||||
```
|
||||
|
||||
`traefik/data/traefik.yaml`:
|
||||
|
||||
```yaml
|
||||
entryPoints:
|
||||
https:
|
||||
address: ":443"
|
||||
providers:
|
||||
file:
|
||||
filename: dynamic.yaml
|
||||
certificatesResolvers:
|
||||
myresolver:
|
||||
tailscale: {}
|
||||
log:
|
||||
level: INFO
|
||||
```
|
||||
|
||||
and finally `traefik/data/dynamic/dynamic.yaml`:
|
||||
|
||||
```yaml
|
||||
http:
|
||||
routers:
|
||||
gitea:
|
||||
rule: Host(`gitea.my-tailnet-name.ts.net`)
|
||||
entrypoints:
|
||||
- "https"
|
||||
service: gitea
|
||||
tls:
|
||||
certResolver: myresolver
|
||||
services:
|
||||
gitea:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://gitea:3000"
|
||||
```
|
||||
|
||||
Something to consider is whether or not you want to use ssh with git. One method of getting this to work with containers is to use [ssh container passthrough](https://docs.gitea.com/installation/install-with-docker#ssh-container-passthrough). I decided to keep it simple and not use ssh, since communicating over https is perfectly fine for my use case.
|
||||
|
||||
After adding the above configuration, running `docker compose up -d` should be enough to get an instance up and running. It will be accessible at [https://gitea.my-tailnet-name.ts.net](https://gitea.my-tailnet-name.ts.net) from within your tailnet.
|
||||
|
||||
## Connecting a Runner
|
||||
|
||||
I installed the runner by [following the docs](https://docs.gitea.com/usage/actions/quickstart#set-up-runner). I opted for installing it on a separate host (another lxc container) as recommended in the docs. I used the systemd unit file to ensure that the runner comes back online after system reboots. I installed tailscale on this act runner as well, so that it can have the same "networking privileges" as the main instance.
|
||||
|
||||
After registering this runner and starting the daemon, it appeared in `/admin/actions/runners`:
|
||||
|
||||

|
||||
|
||||
## Running a workflow
|
||||
|
||||
Now it's time start running some automation. I used the [demo workflow](https://docs.gitea.com/usage/actions/quickstart#use-actions) as a starting point to verify that the runner is executing workflows.
|
||||
|
||||
After this, I wanted to make sure that some of my existing workflows could be migrated over.
|
||||
|
||||
The following workflow uses a matrix to run a job for several of my hosts using ansible playbooks that will do various tasks such as patching os updates and updating container images.
|
||||
|
||||
```yaml
|
||||
name: Run ansible playbooks
|
||||
on:
|
||||
push:
|
||||
schedule:
|
||||
- cron: "0 */12 * * *"
|
||||
|
||||
jobs:
|
||||
run-ansible-playbook:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
host:
|
||||
- changedetection
|
||||
- grafana
|
||||
- homer
|
||||
- invidious
|
||||
- jackett
|
||||
- ladder
|
||||
- miniflux
|
||||
- plex
|
||||
- qbittorrent
|
||||
- tailscale-exit-node
|
||||
- uptime-kuma
|
||||
steps:
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v3
|
||||
- name: Install ansible
|
||||
run: |
|
||||
apt update && apt install ansible -y
|
||||
- name: Run playbook
|
||||
uses: dawidd6/action-ansible-playbook@v2
|
||||
with:
|
||||
playbook: playbooks/main.yml
|
||||
requirements: requirements.yml
|
||||
key: ${{ secrets.SSH_PRIVATE_KEY}}
|
||||
options: |
|
||||
--inventory inventory
|
||||
--limit ${{ matrix.host }}
|
||||
```
|
||||
|
||||
And voilà:
|
||||
|
||||
{{< video src="gitea-runner" >}}
|
||||
|
||||
## Conclusion
|
||||
|
||||
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 substantionally more resources (ahem, gitlab). It likely helps that the codebase is largely written in go.
|
||||
|
||||
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.
|
@@ -56,7 +56,7 @@ The following configuration will:
|
||||
|
||||
In the switch's web interface, I went to `VLAN` and then `802.1Q`, and then clicked on `VLAN Configuration`. I configured the ports to look like this:
|
||||
|
||||

|
||||

|
||||
|
||||
Note that the `VLAN Identifier Setting` has been setup already with two VLANs (1 and 10). More VLANs can be created (i.e. to isolate IoT devices), but 2 VLANs is all we need for the initial setup of a router.
|
||||
|
||||
@@ -64,15 +64,15 @@ To replicate the above configuration, add a new VLAN ID 10 (1 should exist by de
|
||||
|
||||
Next, go into `VLAN Membership` and configure VLAN 1's port membership to be the following:
|
||||
|
||||

|
||||

|
||||
|
||||
and then configure VLAN 10's port membership to be the following:
|
||||
|
||||

|
||||

|
||||
|
||||
Now, go into `Port PVID` and ensure that port 8 is set to PVID 10.
|
||||
|
||||

|
||||

|
||||
|
||||
This above configuration will dedicate two of the eight ports to WAN and LAN. This will allow the internet to flow into the pfSense from the modem.
|
||||
|
||||
@@ -90,7 +90,7 @@ After going through the rest of the installation, if everything is connected cor
|
||||
|
||||
If all goes well, the web interface should be running at [https://192.168.1.1](https://192.168.1.1).
|
||||
|
||||

|
||||

|
||||
|
||||
And this is where the fun begins. There are many tutorials and blogs about how to setup pfSense and various services and packages that can be installed. I've already installed [pfBlocker-NG](https://docs.netgate.com/pfsense/en/latest/packages/pfblocker.html).
|
||||
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 935 KiB After Width: | Height: | Size: 935 KiB |
@@ -5,7 +5,7 @@ lastmod: 2022-12-10T21:46:55-05:00
|
||||
draft: false
|
||||
keywords: []
|
||||
description: ""
|
||||
tags: ['invidious','degoogle', 'youtube', 'yewtu.be', 'tailscale', 'privacy']
|
||||
tags: ["invidious", "degoogle", "youtube", "yewtu.be", "tailscale", "privacy"]
|
||||
categories: []
|
||||
author: ""
|
||||
|
||||
@@ -26,18 +26,16 @@ flowchartDiagrams:
|
||||
enable: false
|
||||
options: ""
|
||||
|
||||
sequenceDiagrams:
|
||||
sequenceDiagrams:
|
||||
enable: false
|
||||
options: ""
|
||||
|
||||
---
|
||||
|
||||
<!--more-->
|
||||
|
||||
I recently stumbled upon [yewtu.be](https://yewtu.be) and found it intriguing. It not only allows you to watch YouTube without *being on YouTube*, 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's a hosted instance of [invidious](https://invidious.io/).
|
||||
I recently stumbled upon [yewtu.be](https://yewtu.be) and found it intriguing. It not only allows you to watch YouTube without _being on YouTube_, 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's a hosted instance of [invidious](https://invidious.io/).
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
The layout is simple, and **JavaScript is not required**.
|
||||
|
||||
@@ -54,7 +52,6 @@ I made a few modifications (such as pinning the container's tag), and ended up w
|
||||
```yaml
|
||||
version: "3"
|
||||
services:
|
||||
|
||||
invidious:
|
||||
image: quay.io/invidious/invidious:5160d8bae39dc5cc5d51abee90571a03c08d0f2b
|
||||
restart: unless-stopped
|
||||
@@ -103,7 +100,7 @@ I figured it would be nice to redirect existing YouTube links that others send m
|
||||
|
||||
I went looking for a way to redirect paths at the browser level. I found the lightweight proxy [requestly](https://requestly.io/), which can be used to modify http requests in my browser. I created the following rules:
|
||||
|
||||

|
||||

|
||||
|
||||
Now the link https://www.youtube.com/watch?v=-lz30by8-sU will redirect to [http://invidious:3000/watch?v=-lz30by8-sU](http://invidious:3000/watch?v=-lz30by8-sU)
|
||||
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
@@ -23,7 +23,7 @@ Having multiple machines/nodes provides the advantage of increased redundancy, b
|
||||
Virtualizing your hardware is an organized way of dividing up your machine's resources. This can be done with something such as a *Virtual Machine* or something lighter like a container using *LXC* or *runC*.
|
||||
Containers have much less overhead in terms of boot time and storage allocation. This [Stack Overflow answer](https://stackoverflow.com/questions/16047306/how-is-docker-different-from-a-virtual-machine) sums it up nicely.
|
||||
|
||||

|
||||

|
||||
|
||||
A hypervisor such as [Proxmox](https://www.proxmox.com/en/proxmox-ve/get-started) can be installed in minutes on a new machine. It provides a web interface and a straight-forward way to spin up new VMs and containers. Even if your plan is to run mostly docker containers, Proxmox can be a useful abstraction for managing VMs, disks and running scheduled backups. You can even run docker within an LXC container by enabling nested virtualization. You'll want to ensure that VT-d and VT-x are enabled in the BIOS if you decide to install a hypervisor to manage your virtualization.
|
||||
|
||||
@@ -46,7 +46,7 @@ You could certainly setup and manage your own VPN by using something like [OpenV
|
||||
|
||||
## Monitoring
|
||||
|
||||

|
||||

|
||||
|
||||
Monitoring can become an important aspect of your homelab after it starts to become something that is relied upon. One of the simplest ways to setup some monitoring is using [netdata](https://www.netdata.cloud/). It can be installed on individual containers, VMs, and also a hypervisor (such as Proxmox). All of the monitoring works out of the box by detecting disks, memory, network interfaces, etc.
|
||||
|
||||
@@ -54,7 +54,7 @@ Additionally, agents installed on different machines can all be centrally viewed
|
||||
|
||||
As mentioned above, [Uptime Kuma](https://github.com/louislam/uptime-kuma) is a convenient way to track uptime and monitor the availability of your services.
|
||||
|
||||

|
||||

|
||||
|
||||
## In Summary
|
||||
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 157 KiB After Width: | Height: | Size: 157 KiB |
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
@@ -10,6 +10,7 @@
|
||||
<meta property="og:url" content="/about/" /><meta property="article:section" content="" />
|
||||
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="About"/>
|
||||
<meta name="twitter:description" content="I’m a software engineer with a passion for open-source, infrastructure, tooling and security."/>
|
||||
@@ -111,8 +112,9 @@
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -10,6 +10,7 @@
|
||||
<meta property="og:url" content="/blog/2020/03/16/appgate-sdp-on-arch-linux/" /><meta property="article:section" content="post" />
|
||||
<meta property="article:published_time" content="2020-03-16T22:00:15-04:00" />
|
||||
<meta property="article:modified_time" content="2020-03-16T22:00:15-04:00" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="AppGate SDP on Arch Linux"/>
|
||||
<meta name="twitter:description" content="AppGate SDP provides a Zero Trust network. This post describes how to get AppGate SDP 4.3.2 working on Arch Linux."/>
|
||||
@@ -239,8 +240,9 @@ module 'platform' has no attribute 'linux_distribution'
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -10,6 +10,7 @@
|
||||
<meta property="og:url" content="/blog/2021/09/06/what-to-do-with-a-homelab/" /><meta property="article:section" content="post" />
|
||||
<meta property="article:published_time" content="2021-09-06T01:12:54-04:00" />
|
||||
<meta property="article:modified_time" content="2021-09-06T01:12:54-04:00" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="What To Do With A Homelab"/>
|
||||
<meta name="twitter:description" content="A homelab can be an inexpensive way to host a multitude of internal/external services and learn a lot in the process."/>
|
||||
@@ -110,7 +111,7 @@ Having multiple machines/nodes provides the advantage of increased redundancy, b
|
||||
<h2 id="virtualization">Virtualization<a href="#virtualization" class="hanchor" ariaLabel="Anchor">#</a></h2>
|
||||
<p>Virtualizing your hardware is an organized way of dividing up your machine’s resources. This can be done with something such as a <em>Virtual Machine</em> or something lighter like a container using <em>LXC</em> or <em>runC</em>.
|
||||
Containers have much less overhead in terms of boot time and storage allocation. This <a href="https://stackoverflow.com/questions/16047306/how-is-docker-different-from-a-virtual-machine">Stack Overflow answer</a> sums it up nicely.</p>
|
||||
<p><img src="/images/proxmox.png" alt="image"></p>
|
||||
<p><img src="proxmox.png" alt="image"></p>
|
||||
<p>A hypervisor such as <a href="https://www.proxmox.com/en/proxmox-ve/get-started">Proxmox</a> can be installed in minutes on a new machine. It provides a web interface and a straight-forward way to spin up new VMs and containers. Even if your plan is to run mostly docker containers, Proxmox can be a useful abstraction for managing VMs, disks and running scheduled backups. You can even run docker within an LXC container by enabling nested virtualization. You’ll want to ensure that VT-d and VT-x are enabled in the BIOS if you decide to install a hypervisor to manage your virtualization.</p>
|
||||
<h2 id="services">Services<a href="#services" class="hanchor" ariaLabel="Anchor">#</a></h2>
|
||||
<p>So what are some useful services to deploy?</p>
|
||||
@@ -126,11 +127,11 @@ Containers have much less overhead in terms of boot time and storage allocation.
|
||||
<h2 id="vpn">VPN<a href="#vpn" class="hanchor" ariaLabel="Anchor">#</a></h2>
|
||||
<p>You could certainly setup and manage your own VPN by using something like <a href="https://openvpn.net/community-downloads/">OpenVPN</a>, but there is also something else you can try: <a href="https://tailscale.com/">tailscale</a>. It is a very quick way to create fully-encrypted connections between clients. With its <a href="https://tailscale.com/kb/1081/magicdns/">MagicDNS</a>, your can reference the names of machines like <code>homer</code> rather than using an IP address. By using this mesh-like VPN, you can easily create a secure tunnel to your homelab from anywhere.</p>
|
||||
<h2 id="monitoring">Monitoring<a href="#monitoring" class="hanchor" ariaLabel="Anchor">#</a></h2>
|
||||
<p><img src="/images/netdata.png" alt="dashboard"></p>
|
||||
<p><img src="netdata.png" alt="dashboard"></p>
|
||||
<p>Monitoring can become an important aspect of your homelab after it starts to become something that is relied upon. One of the simplest ways to setup some monitoring is using <a href="https://www.netdata.cloud/">netdata</a>. It can be installed on individual containers, VMs, and also a hypervisor (such as Proxmox). All of the monitoring works out of the box by detecting disks, memory, network interfaces, etc.</p>
|
||||
<p>Additionally, agents installed on different machines can all be centrally viewed in netdata, and it can alert you when some of your infrastructure is down or in a degraded state. Adding additional nodes to netdata is as simple as a 1-line shell command.</p>
|
||||
<p>As mentioned above, <a href="https://github.com/louislam/uptime-kuma">Uptime Kuma</a> is a convenient way to track uptime and monitor the availability of your services.</p>
|
||||
<p><img src="/images/uptime-kuma.png" alt="uptime-kuma"></p>
|
||||
<p><img src="uptime-kuma.png" alt="uptime-kuma"></p>
|
||||
<h2 id="in-summary">In Summary<a href="#in-summary" class="hanchor" ariaLabel="Anchor">#</a></h2>
|
||||
<p>Building out a homelab can be a rewarding experience and it doesn’t require buying a rack full of expensive servers to get a significant amount of utility. There are many services that you can run that require very minimal setup, making it possible to get a server up and running in a short period of time, with monitoring, and that can be securely connected to remotely.</p></section>
|
||||
|
||||
@@ -187,8 +188,9 @@ Containers have much less overhead in terms of boot time and storage allocation.
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 157 KiB After Width: | Height: | Size: 157 KiB |
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
@@ -10,6 +10,7 @@
|
||||
<meta property="og:url" content="/blog/2021/09/08/why-i-threw-out-my-dotfiles/" /><meta property="article:section" content="post" />
|
||||
<meta property="article:published_time" content="2021-09-08T00:42:33-04:00" />
|
||||
<meta property="article:modified_time" content="2021-09-08T00:42:33-04:00" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Why I Threw Out My Dotfiles"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -283,8 +284,9 @@ nix-shell '<home-manager>' -A install
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -10,6 +10,7 @@
|
||||
<meta property="og:url" content="/blog/2021/09/17/automatically-rotating-aws-access-keys/" /><meta property="article:section" content="post" />
|
||||
<meta property="article:published_time" content="2021-09-17T12:48:33-04:00" />
|
||||
<meta property="article:modified_time" content="2021-09-17T12:48:33-04:00" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Automatically Rotating AWS Access Keys"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -147,8 +148,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -10,6 +10,7 @@
|
||||
<meta property="og:url" content="/blog/2021/10/11/replacing-docker-with-podman-on-macos-and-linux/" /><meta property="article:section" content="post" />
|
||||
<meta property="article:published_time" content="2021-10-11T10:43:35-04:00" />
|
||||
<meta property="article:modified_time" content="2021-10-11T10:43:35-04:00" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Replacing docker with podman on macOS (and Linux)"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -105,6 +106,7 @@
|
||||
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">...ignoring Docker updates is a paid feature now?? <a href="https://t.co/ZxKW3b9LQM">pic.twitter.com/ZxKW3b9LQM</a></p>— Brendan Dolan-Gavitt (@moyix) <a href="https://twitter.com/moyix/status/1388586550682861568?ref_src=twsrc%5Etfw">May 1, 2021</a></blockquote>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
|
||||
|
||||
<p>Docker has been one of the larger influencers in the container world, helping to standardize the <a href="https://github.com/opencontainers/image-spec/blob/main/spec.md">OCI Image Format Specification</a>. For many developers, containers have become synonymous with terms like <code>docker</code> and <code>Dockerfile</code> (a file containing build instructions for a container image). Docker has certainly made it very convenient to build and run containers, but it is not the only solution for doing so.</p>
|
||||
<p>This post briefly describes my experience swapping out docker for podman on macOS.</p>
|
||||
<h3 id="what-is-a-container">What is a container?<a href="#what-is-a-container" class="hanchor" ariaLabel="Anchor">#</a></h3>
|
||||
@@ -233,8 +235,9 @@ Hello world
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -10,6 +10,7 @@
|
||||
<meta property="og:url" content="/blog/2021/11/14/running-k3s-in-lxc-on-proxmox/" /><meta property="article:section" content="post" />
|
||||
<meta property="article:published_time" content="2021-11-14T10:07:03-05:00" />
|
||||
<meta property="article:modified_time" content="2021-11-14T10:07:03-05:00" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Running K3s in LXC on Proxmox"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -228,8 +229,9 @@ horizontalpodautoscaler.autoscaling/tekton-pipelines-webhook Deployment/tekton
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -10,6 +10,7 @@
|
||||
<meta property="og:url" content="/blog/2022/03/13/backing-up-gmail-with-synology/" /><meta property="article:section" content="post" />
|
||||
<meta property="article:published_time" content="2022-03-13T18:49:10-04:00" />
|
||||
<meta property="article:modified_time" content="2022-03-13T18:49:10-04:00" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Backing Up Gmail With Synology"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -108,13 +109,13 @@
|
||||
<p>I’ve used tools such as <a href="http://www.gmvault.org">gmvault</a> with success in the past. Setting this up on a cron seems like a viable option. However, I don’t really need a lot of the features it offers and do not plan to restore this data to another account.</p>
|
||||
<p>Synology’s MailPlus seems to be a good candidate for backing up this data. By enabling POP3 fetching, it’s possible to fetch all existing emails, as well as periodically fetch all new emails. If a disaster ever did occur, having these emails would be beneficial, as they are an extension of my memory bank.</p>
|
||||
<p>Installing MailPlus can be done from the Package Center:</p>
|
||||
<p><img src="/images/backing-up-gmail-with-synology/install-mailplus-server.png" alt="image"></p>
|
||||
<p><img src="install-mailplus-server.png" alt="image"></p>
|
||||
<p>Next, I went into <strong>Synology MailPlus Server</strong> and on the left, clicked on <strong>Account</strong> and ensured my user was marked as active.</p>
|
||||
<p>Afterwords, I followed <a href="https://kb.synology.com/en-in/DSM/tutorial/How_should_I_receive_external_email_messages_via_MailPlus">these instructions</a> in order to start backing up emails.</p>
|
||||
<p>When entering the POP3 credentials, I created an <a href="https://myaccount.google.com/apppasswords">app password</a> solely for authenticating to POP3 from the Synology device. This is required because I have 2-Step verification enabled on my account. There doesn’t seem to be a more secure way to access POP3 at the moment. It does seem like app password access is limited in scope (when MFA is enabled). These app passwords can’t be used to login to the main Google account.</p>
|
||||
<p>I made sure to set the <code>Fetch Range</code> to <code>All</code> in order to get all emails from the beginning of time.</p>
|
||||
<p>After this, mail started coming in.</p>
|
||||
<p><img src="/images/backing-up-gmail-with-synology/mail-plus-incoming-mail.png" alt="image"></p>
|
||||
<p><img src="mail-plus-incoming-mail.png" alt="image"></p>
|
||||
<p>After fetching 19 years worth of emails, I tried searching for some emails. It only took a few seconds to search through ~50K emails, which is a relief if I ever did have to search for something important.</p>
|
||||
<h2 id="securing-synology">Securing Synology<a href="#securing-synology" class="hanchor" ariaLabel="Anchor">#</a></h2>
|
||||
<p>Since Synology devices are not hermetically sealed, it’s best to secure them by <a href="https://kb.synology.com/en-us/DSM/tutorial/How_to_add_extra_security_to_your_Synology_NAS#x_anchor_id8">enabling MFA</a> to help prevent being the <a href="https://www.bleepingcomputer.com/news/security/qlocker-ransomware-returns-to-target-qnap-nas-devices-worldwide/">victim of ransomware</a>. It is also wise to backup your system settings and volumes to the cloud using a tool such as <a href="https://www.synology.com/en-ca/dsm/feature/hyper_backup">Hyper Backup</a>.
|
||||
@@ -167,8 +168,9 @@ Encrypting your shared volumes should also be done, since unfortunately <a href=
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
@@ -10,6 +10,7 @@
|
||||
<meta property="og:url" content="/blog/2022/04/02/virtualizing-my-router-with-pfsense/" /><meta property="article:section" content="post" />
|
||||
<meta property="article:published_time" content="2022-04-02T18:50:09-04:00" />
|
||||
<meta property="article:modified_time" content="2022-04-02T18:50:09-04:00" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Virtualizing My Router With pfSense"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -115,15 +116,15 @@
|
||||
<li>assign port 8 to be the WAN (connected to my ISP’s modem)</li>
|
||||
</ul>
|
||||
<p>In the switch’s web interface, I went to <code>VLAN</code> and then <code>802.1Q</code>, and then clicked on <code>VLAN Configuration</code>. I configured the ports to look like this:</p>
|
||||
<p><img src="/images/virtualizing-a-router-with-pfsense/netgear-vlan-configuration.png" alt="vlan-config"></p>
|
||||
<p><img src="netgear-vlan-configuration.png" alt="vlan-config"></p>
|
||||
<p>Note that the <code>VLAN Identifier Setting</code> has been setup already with two VLANs (1 and 10). More VLANs can be created (i.e. to isolate IoT devices), but 2 VLANs is all we need for the initial setup of a router.</p>
|
||||
<p>To replicate the above configuration, add a new VLAN ID 10 (1 should exist by default).</p>
|
||||
<p>Next, go into <code>VLAN Membership</code> and configure VLAN 1’s port membership to be the following:</p>
|
||||
<p><img src="/images/virtualizing-a-router-with-pfsense/netgear-vlan-membership-1.png" alt="vlan-membership-1"></p>
|
||||
<p><img src="netgear-vlan-membership-1.png" alt="vlan-membership-1"></p>
|
||||
<p>and then configure VLAN 10’s port membership to be the following:</p>
|
||||
<p><img src="/images/virtualizing-a-router-with-pfsense/netgear-vlan-membership-10.png" alt="vlan-membership-10"></p>
|
||||
<p><img src="netgear-vlan-membership-10.png" alt="vlan-membership-10"></p>
|
||||
<p>Now, go into <code>Port PVID</code> and ensure that port 8 is set to PVID 10.</p>
|
||||
<p><img src="/images/virtualizing-a-router-with-pfsense/netgear-port-pvid.png" alt="vlan-port-pvid"></p>
|
||||
<p><img src="netgear-port-pvid.png" alt="vlan-port-pvid"></p>
|
||||
<p>This above configuration will dedicate two of the eight ports to WAN and LAN. This will allow the internet to flow into the pfSense from the modem.</p>
|
||||
<h2 id="setting-up-pfsense">Setting up pfSense<a href="#setting-up-pfsense" class="hanchor" ariaLabel="Anchor">#</a></h2>
|
||||
<p>pfSense is fairly easy to setup. Just <a href="https://www.pfsense.org/download/">download the latest ISO</a> and boot up the virtual machine.
|
||||
@@ -135,7 +136,7 @@ When setting up the machine, I mostly went with all of the defaults. Configurati
|
||||
</ul>
|
||||
<p>After going through the rest of the installation, if everything is connected correctly it should display both WAN and LAN addresses.</p>
|
||||
<p>If all goes well, the web interface should be running at <a href="https://192.168.1.1">https://192.168.1.1</a>.</p>
|
||||
<p><img src="/images/virtualizing-a-router-with-pfsense/pfsense-dashboard.png" alt="pfsense-dashboard"></p>
|
||||
<p><img src="pfsense-dashboard.png" alt="pfsense-dashboard"></p>
|
||||
<p>And this is where the fun begins. There are many tutorials and blogs about how to setup pfSense and various services and packages that can be installed. I’ve already installed <a href="https://docs.netgate.com/pfsense/en/latest/packages/pfblocker.html">pfBlocker-NG</a>.</p>
|
||||
<h2 id="summary">Summary<a href="#summary" class="hanchor" ariaLabel="Anchor">#</a></h2>
|
||||
<p>It is fairly simple to setup a router with pfSense from within a virtual machine. A physical dedicated routing machine is not necessary and often does not perform as well as software running on faster and more reliable hardware. So far, pfSense has been running for over a week without a single hiccup. pfSense is a mature piece of software that is incredibly powerful and flexible. To avoid some of the instability I had experienced with OpenWrt, I enabled <a href="https://docs.netgate.com/pfsense/en/latest/backup/autoconfigbackup.html">AutoConfigBackup</a>, which is capable of automatically backing up configuration upon every change. I plan to explore and experiment with more services and configuration in the future, so the ability to track all of these changes gives me the peace of mind that experimentation is safe.</p></section>
|
||||
@@ -187,8 +188,9 @@ When setting up the machine, I mostly went with all of the defaults. Configurati
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 935 KiB After Width: | Height: | Size: 935 KiB |
@@ -10,6 +10,7 @@
|
||||
<meta property="og:url" content="/blog/2022/12/10/watching-youtube-in-private/" /><meta property="article:section" content="post" />
|
||||
<meta property="article:published_time" content="2022-12-10T21:46:55-05:00" />
|
||||
<meta property="article:modified_time" content="2022-12-10T21:46:55-05:00" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Watching YouTube in Private"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -102,7 +103,7 @@
|
||||
|
||||
|
||||
<section class="body"><p>I recently stumbled upon <a href="https://yewtu.be">yewtu.be</a> and found it intriguing. It not only allows you to watch YouTube without <em>being on YouTube</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’s a hosted instance of <a href="https://invidious.io/">invidious</a>.</p>
|
||||
<p><img src="/images/watching-youtube-in-private/computerphile.png" alt="requestly"></p>
|
||||
<p><img src="computerphile.png" alt="image"></p>
|
||||
<p>The layout is simple, and <strong>JavaScript is not required</strong>.</p>
|
||||
<p>I started using <a href="https://yewtu.be">yewtu.be</a> as my primary client for watching videos. I subscribe to several YouTube channels and I prefer the interface invidiuous provides due to its simplicity. It’s also nice to be in control of my search and watch history.</p>
|
||||
<p>A few days ago, yewtu.be went down briefly, and that motivated me enough to self-host invidious. There are several other hosted instances listed <a href="https://docs.invidious.io/instances/">here</a>, but being able to easily backup my own instance (including subscriptions and watch history) is more compelling in my case.</p>
|
||||
@@ -111,7 +112,6 @@
|
||||
<p>I made a few modifications (such as pinning the container’s tag), and ended up with:</p>
|
||||
<pre><code class="language-yaml">version: "3"
|
||||
services:
|
||||
|
||||
invidious:
|
||||
image: quay.io/invidious/invidious:5160d8bae39dc5cc5d51abee90571a03c08d0f2b
|
||||
restart: unless-stopped
|
||||
@@ -155,7 +155,7 @@ volumes:
|
||||
<h3 id="redirecting-youtube-links">Redirecting YouTube links<a href="#redirecting-youtube-links" class="hanchor" ariaLabel="Anchor">#</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/">requestly</a>, which can be used to modify http requests in my browser. I created the following rules:</p>
|
||||
<p><img src="/images/watching-youtube-in-private/requestly-rules.png" alt="requestly"></p>
|
||||
<p><img src="requestly-rules.png" alt="requestly"></p>
|
||||
<p>Now the link <a href="https://www.youtube.com/watch?v=-lz30by8-sU">https://www.youtube.com/watch?v=-lz30by8-sU</a> will redirect to <a href="http://invidious:3000/watch?v=-lz30by8-sU">http://invidious:3000/watch?v=-lz30by8-sU</a></p>
|
||||
<p>I’m still looking for ways to improve this invidious setup. There doesn’t appear to be a way to stream in 4K yet.</p></section>
|
||||
|
||||
@@ -206,8 +206,9 @@ volumes:
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
@@ -10,6 +10,7 @@
|
||||
<meta property="og:url" content="/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/" /><meta property="article:section" content="post" />
|
||||
<meta property="article:published_time" content="2023-05-22T16:31:29-04:00" />
|
||||
<meta property="article:modified_time" content="2023-05-22T16:31:29-04:00" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Using AKS and SOCKS to connect to a Private Azure DB"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -193,8 +194,9 @@ pod/davegallant-proxy created
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
After Width: | Height: | Size: 35 KiB |
@@ -0,0 +1,313 @@
|
||||
<!DOCTYPE html>
|
||||
<html><head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"><title>Setting Up Gitea Actions With Tailscale - davegallant</title><link rel="icon" type="image/png" href=https://davegallant.ca/favicon.ico /><meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="" />
|
||||
<meta property="og:image" content=""/>
|
||||
<meta property="og:title" content="Setting Up Gitea Actions With Tailscale" />
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/" /><meta property="article:section" content="post" />
|
||||
<meta property="article:published_time" content="2023-12-10T17:22:11-05:00" />
|
||||
<meta property="article:modified_time" content="2023-12-10T17:22:11-05:00" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Setting Up Gitea Actions With Tailscale"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@1,500&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Fira+Sans&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="/css/main.0e5aa3b634b92d61bafebfd908290cc7a034e4d50e6a0c59ce50044560179c4e.css" />
|
||||
<link id="darkModeStyle" rel="stylesheet" type="text/css" href="/css/dark.b11f422ffce8151207bad84653d44cb512043f9efe93a0a049f836b9cc32b34a.css" disabled />
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript"
|
||||
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({
|
||||
tex2jax: {
|
||||
inlineMath: [['$','$'], ['\\(','\\)']],
|
||||
displayMath: [['$$','$$'], ['\[','\]']],
|
||||
processEscapes: true,
|
||||
processEnvironments: true,
|
||||
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
|
||||
TeX: { equationNumbers: { autoNumber: "AMS" },
|
||||
extensions: ["AMSmath.js", "AMSsymbols.js"] }
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.css">
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/contrib/auto-render.min.js" onload="renderMathInElement(document.body);"></script>
|
||||
|
||||
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
renderMathInElement(document.body, {
|
||||
delimiters: [
|
||||
{left: "$$", right: "$$", display: true},
|
||||
{left: "$", right: "$", display: false}
|
||||
]
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/css/custom.2e59ff60a2d9c7e42e3c1af2aff0ba627da46f910a234867e98d178eb05c87dc.css">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="content"><header>
|
||||
<div class="main">
|
||||
<a href="/">davegallant</a>
|
||||
</div>
|
||||
<nav>
|
||||
|
||||
<a href="/">Home</a>
|
||||
|
||||
<a href="/post">All posts</a>
|
||||
|
||||
<a href="/index.xml">RSS</a>
|
||||
|
||||
<a href="/tags">Tags</a>
|
||||
|
||||
<a href="/about">About</a>
|
||||
|
||||
| <span id="dark-mode-toggle" onclick="toggleTheme()"></span>
|
||||
<script src="/js/themetoggle.js"></script>
|
||||
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<article>
|
||||
<div class="title">
|
||||
<h1 class="title">Setting Up Gitea Actions With Tailscale</h1>
|
||||
<div class="meta">Posted on Dec 10, 2023</div>
|
||||
</div>
|
||||
|
||||
|
||||
<section class="body"><p>In this post I’ll go through the process of setting up Gitea Actions and <a href="https://tailscale.com/">Tailscale</a>, unlocking a simple and secure way to automate workflows.</p>
|
||||
<h2 id="what-is-gitea">What is Gitea?<a href="#what-is-gitea" class="hanchor" ariaLabel="Anchor">#</a></h2>
|
||||
<p><a href="https://about.gitea.com/">Gitea</a> is a lightweight and fast git server that has much of the same look and feel as github. I have been using it in my homelab to mirror repositories hosted on other platforms such as github and gitlab. These mirrors take advantage of the decentralized nature of git by serving as “backups”. One of the main reasons I hadn’t been using it more often was due to the lack of integrated CI/CD. This is no longer the case.</p>
|
||||
<h2 id="gitea-actions">Gitea Actions<a href="#gitea-actions" class="hanchor" ariaLabel="Anchor">#</a></h2>
|
||||
<p><a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a> have made it into the <a href="https://blog.gitea.com/release-of-1.19.0/">1.19.0 release</a>. This feature had been in an experimental state up until <a href="https://blog.gitea.com/release-of-1.21.0/">1.21.0</a> and is now enabled by default 🎉.</p>
|
||||
<p>So what are they? If you’ve ever used GitHub Actions (and if you’re reading this, I imagine you have), these will look familiar. Gitea Actions essentially enable the ability to run github workflows on gitea. Workflows between gitea and github are not completely interopable, but a lot of the same workflow syntax is already compatible on gitea. You can find a documented list of <a href="https://docs.gitea.com/usage/actions/comparison#unsupported-workflows-syntax">unsupported workflows syntax</a>.</p>
|
||||
<p>Actions work by using a <a href="https://gitea.com/gitea/act">custom fork</a> of <a href="https://github.com/nektos/act">nekos/act</a>. Workflows run in a new container for every job. If you specify an action such as ‘actions/checkout@v3’, it defaults to downloading the scripts from github.com. To avoid internet egress, you could always clone the required actions to your local gitea instance.</p>
|
||||
<p>Actions (gitea’s implementation) has me excited because it makes spinning up a network-isolated environment for workflow automation incredibly simple.</p>
|
||||
<h2 id="integration-with-tailscale">Integration with Tailscale<a href="#integration-with-tailscale" class="hanchor" ariaLabel="Anchor">#</a></h2>
|
||||
<p>So how does Tailscale help here? Well, more recently I’ve been exposing my self-hosted services through a combination of traefik and the tailscale (through the tailscale-traefik proxy integration described <a href="https://traefik.io/blog/exploring-the-tailscale-traefik-proxy-integration/">here</a>). This allows for a nice looking dns name (i.e. gitea.my-tailnet-name.ts.net) and automatic tls certificate management. I can also share this tailscale node securely with other tailscale users without configuring any firewall rules on my router.</p>
|
||||
<h2 id="deploying-gitea-traefik-and-tailscale">Deploying Gitea, Traefik, and Tailscale<a href="#deploying-gitea-traefik-and-tailscale" class="hanchor" ariaLabel="Anchor">#</a></h2>
|
||||
<p>In my case, the following is already set up:</p>
|
||||
<ul>
|
||||
<li><a href="https://docs.docker.com/compose/install/linux/">docker-compose is installed</a></li>
|
||||
<li><a href="https://tailscale.com/kb/1017/install/">tailscale is installed on the gitea host</a></li>
|
||||
<li><a href="https://tailscale.com/kb/1081/magicdns/">tailscale magic dns is enabled</a></li>
|
||||
</ul>
|
||||
<p>My preferred approach to deploying code in a homelab environment is with docker compose. I have deployed this in a <a href="https://pve.proxmox.com/wiki/Linux_Container">proxmox lxc container</a> based on debian with a hostname <code>gitea</code>. This could be deployed in any environment and with any hostname (as long you updated the tailscale machine name to your preferred subdomain for magic dns).</p>
|
||||
<p>The <code>docker-compose.yaml</code> file looks like:</p>
|
||||
<pre><code class="language-yaml">version: "3.7"
|
||||
services:
|
||||
gitea:
|
||||
image: gitea/gitea:1.21.1
|
||||
container_name: gitea
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
|
||||
- GITEA__server__DOMAIN=gitea.my-tailnet-name.ts.net
|
||||
- GITEA__server__ROOT_URL=https://gitea.my-tailnet-name.ts.net
|
||||
- GITEA__server__HTTP_ADDR=0.0.0.0
|
||||
- GITEA__server__LFS_JWT_SECRET=my-secret-jwt
|
||||
restart: always
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
traefik:
|
||||
image: traefik:v3.0.0-beta4
|
||||
container_name: traefik
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- 80:80
|
||||
- 443:443
|
||||
volumes:
|
||||
- ./traefik/data/traefik.yaml:/traefik.yaml:ro
|
||||
- ./traefik/data/dynamic.yaml:/dynamic.yaml:ro
|
||||
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
|
||||
</code></pre>
|
||||
<p><code>traefik/data/traefik.yaml</code>:</p>
|
||||
<pre><code class="language-yaml">entryPoints:
|
||||
https:
|
||||
address: ":443"
|
||||
providers:
|
||||
file:
|
||||
filename: dynamic.yaml
|
||||
certificatesResolvers:
|
||||
myresolver:
|
||||
tailscale: {}
|
||||
log:
|
||||
level: INFO
|
||||
</code></pre>
|
||||
<p>and finally <code>traefik/data/dynamic/dynamic.yaml</code>:</p>
|
||||
<pre><code class="language-yaml">http:
|
||||
routers:
|
||||
gitea:
|
||||
rule: Host(`gitea.my-tailnet-name.ts.net`)
|
||||
entrypoints:
|
||||
- "https"
|
||||
service: gitea
|
||||
tls:
|
||||
certResolver: myresolver
|
||||
services:
|
||||
gitea:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://gitea:3000"
|
||||
</code></pre>
|
||||
<p>Something to consider is whether or not you want to use ssh with git. One method of getting this to work with containers is to use <a href="https://docs.gitea.com/installation/install-with-docker#ssh-container-passthrough">ssh container passthrough</a>. I decided to keep it simple and not use ssh, since communicating over https is perfectly fine for my use case.</p>
|
||||
<p>After adding the above configuration, running <code>docker compose up -d</code> should be enough to get an instance up and running. It will be accessible at <a href="https://gitea.my-tailnet-name.ts.net">https://gitea.my-tailnet-name.ts.net</a> from within your tailnet.</p>
|
||||
<h2 id="connecting-a-runner">Connecting a Runner<a href="#connecting-a-runner" class="hanchor" ariaLabel="Anchor">#</a></h2>
|
||||
<p>I installed the runner by <a href="https://docs.gitea.com/usage/actions/quickstart#set-up-runner">following the docs</a>. I opted for installing it on a separate host (another lxc container) as recommended in the docs. I used the systemd unit file to ensure that the runner comes back online after system reboots. I installed tailscale on this act runner as well, so that it can have the same “networking privileges” as the main instance.</p>
|
||||
<p>After registering this runner and starting the daemon, it appeared in <code>/admin/actions/runners</code>:</p>
|
||||
<p><img src="gitea-runners.png" alt="image"></p>
|
||||
<h2 id="running-a-workflow">Running a workflow<a href="#running-a-workflow" class="hanchor" ariaLabel="Anchor">#</a></h2>
|
||||
<p>Now it’s time start running some automation. I used the <a href="https://docs.gitea.com/usage/actions/quickstart#use-actions">demo workflow</a> as a starting point to verify that the runner is executing workflows.</p>
|
||||
<p>After this, I wanted to make sure that some of my existing workflows could be migrated over.</p>
|
||||
<p>The following workflow uses a matrix to run a job for several of my hosts using ansible playbooks that will do various tasks such as patching os updates and updating container images.</p>
|
||||
<pre><code class="language-yaml">name: Run ansible playbooks
|
||||
on:
|
||||
push:
|
||||
schedule:
|
||||
- cron: "0 */12 * * *"
|
||||
|
||||
jobs:
|
||||
run-ansible-playbook:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
host:
|
||||
- changedetection
|
||||
- grafana
|
||||
- homer
|
||||
- invidious
|
||||
- jackett
|
||||
- ladder
|
||||
- miniflux
|
||||
- plex
|
||||
- qbittorrent
|
||||
- tailscale-exit-node
|
||||
- uptime-kuma
|
||||
steps:
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v3
|
||||
- name: Install ansible
|
||||
run: |
|
||||
apt update && apt install ansible -y
|
||||
- name: Run playbook
|
||||
uses: dawidd6/action-ansible-playbook@v2
|
||||
with:
|
||||
playbook: playbooks/main.yml
|
||||
requirements: requirements.yml
|
||||
key: ${{ secrets.SSH_PRIVATE_KEY}}
|
||||
options: |
|
||||
--inventory inventory
|
||||
--limit ${{ matrix.host }}
|
||||
</code></pre>
|
||||
<p>And voilà:</p>
|
||||
<video controls preload="auto" width="100%" poster="/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/gitea-runners.png" playsinline class="html-video">
|
||||
<source src="/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/gitea-runner.webm" type="video/webm">
|
||||
<span>Your browser doesn't support embedded videos, but don't worry, you can <a href="/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/gitea-runner.webm">download it</a> and watch it with your favorite video player!</span>
|
||||
</video>
|
||||
<h2 id="conclusion">Conclusion<a href="#conclusion" class="hanchor" ariaLabel="Anchor">#</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 substantionally more resources (ahem, gitlab). 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></section>
|
||||
|
||||
<div class="post-tags">
|
||||
|
||||
|
||||
<nav class="nav tags">
|
||||
<ul class="tags">
|
||||
|
||||
<li><a href="/tags/gitea">gitea</a></li>
|
||||
|
||||
<li><a href="/tags/gitea-actions">gitea actions</a></li>
|
||||
|
||||
<li><a href="/tags/github-actions">github actions</a></li>
|
||||
|
||||
<li><a href="/tags/tailscale">tailscale</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
</div>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<section id='comments' class='comments'>
|
||||
<div class='container sep-before'>
|
||||
<div class='comments'><script>
|
||||
|
||||
var getTheme = window.localStorage && window.localStorage.getItem("theme-storage");
|
||||
getTheme = getTheme == null ? 'light' : getTheme;
|
||||
|
||||
let theme = getTheme === 'dark' ? 'github-dark' : 'github-light';
|
||||
let s = document.createElement('script');
|
||||
s.src = 'https://utteranc.es/client.js';
|
||||
s.setAttribute('repo', 'davegallant\/davegallant.github.io');
|
||||
s.setAttribute('issue-term', 'pathname');
|
||||
s.setAttribute('theme', theme);
|
||||
s.setAttribute('crossorigin', 'anonymous');
|
||||
s.setAttribute('async', '');
|
||||
document.querySelector('div.comments').innerHTML = '';
|
||||
document.querySelector('div.comments').appendChild(s);
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
<div class="footer-info">
|
||||
2023 Dave Gallant
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-V8WJDERTX9', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
feather.replace()
|
||||
</script></div>
|
||||
</body>
|
||||
</html>
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/categories/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Categories"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -128,8 +129,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -6,6 +6,7 @@
|
||||
<description>Recent content in Categories on davegallant</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright><atom:link href="/categories/index.xml" rel="self" type="application/rss+xml" />
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<atom:link href="/categories/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="generator" content="Hugo 0.111.3">
|
||||
<meta name="generator" content="Hugo 0.120.3">
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"><title>davegallant | Home </title><link rel="icon" type="image/png" href=https://davegallant.ca/favicon.ico /><meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="" />
|
||||
@@ -11,6 +11,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="davegallant"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -102,6 +103,16 @@
|
||||
|
||||
|
||||
|
||||
<section class="list-item">
|
||||
<h1 class="title"><a href="/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/">Setting Up Gitea Actions With Tailscale</a></h1>
|
||||
<time>Dec 10, 2023</time>
|
||||
<br><div class="description">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="list-item">
|
||||
<h1 class="title"><a href="/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/">Using AKS and SOCKS to connect to a Private Azure DB</a></h1>
|
||||
<time>May 22, 2023</time>
|
||||
@@ -189,26 +200,28 @@
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="list-item">
|
||||
<h1 class="title"><a href="/blog/2020/03/16/appgate-sdp-on-arch-linux/">AppGate SDP on Arch Linux</a></h1>
|
||||
<time>Mar 16, 2020</time>
|
||||
<br><div class="description">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<ul class="pagination">
|
||||
<span class="page-item page-prev">
|
||||
|
||||
</span>
|
||||
<span class="page-item page-next">
|
||||
|
||||
<a href="/page/2/" class="page-link" aria-label="Next"><span aria-hidden="true">Next →</span></a>
|
||||
|
||||
</span>
|
||||
</ul>
|
||||
|
||||
|
||||
</main>
|
||||
<footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,114 +7,98 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Sun, 10 Dec 2023 17:22:11 -0500</lastBuildDate>
|
||||
<atom:link href="/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>About</title>
|
||||
<link>/about/</link>
|
||||
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
||||
|
||||
<guid>/about/</guid>
|
||||
<description>I&rsquo;m a software engineer with a passion for open-source, infrastructure, tooling and security.</description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Setting Up Gitea Actions With Tailscale</title>
|
||||
<link>/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/</link>
|
||||
<pubDate>Sun, 10 Dec 2023 17:22:11 -0500</pubDate>
|
||||
<guid>/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Using AKS and SOCKS to connect to a Private Azure DB</title>
|
||||
<link>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</link>
|
||||
<pubDate>Mon, 22 May 2023 16:31:29 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Watching YouTube in Private</title>
|
||||
<link>/blog/2022/12/10/watching-youtube-in-private/</link>
|
||||
<pubDate>Sat, 10 Dec 2022 21:46:55 -0500</pubDate>
|
||||
|
||||
<guid>/blog/2022/12/10/watching-youtube-in-private/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Virtualizing My Router With pfSense</title>
|
||||
<link>/blog/2022/04/02/virtualizing-my-router-with-pfsense/</link>
|
||||
<pubDate>Sat, 02 Apr 2022 18:50:09 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2022/04/02/virtualizing-my-router-with-pfsense/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Backing Up Gmail With Synology</title>
|
||||
<link>/blog/2022/03/13/backing-up-gmail-with-synology/</link>
|
||||
<pubDate>Sun, 13 Mar 2022 18:49:10 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2022/03/13/backing-up-gmail-with-synology/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Running K3s in LXC on Proxmox</title>
|
||||
<link>/blog/2021/11/14/running-k3s-in-lxc-on-proxmox/</link>
|
||||
<pubDate>Sun, 14 Nov 2021 10:07:03 -0500</pubDate>
|
||||
|
||||
<guid>/blog/2021/11/14/running-k3s-in-lxc-on-proxmox/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Replacing docker with podman on macOS (and Linux)</title>
|
||||
<link>/blog/2021/10/11/replacing-docker-with-podman-on-macos-and-linux/</link>
|
||||
<pubDate>Mon, 11 Oct 2021 10:43:35 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2021/10/11/replacing-docker-with-podman-on-macos-and-linux/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Automatically Rotating AWS Access Keys</title>
|
||||
<link>/blog/2021/09/17/automatically-rotating-aws-access-keys/</link>
|
||||
<pubDate>Fri, 17 Sep 2021 12:48:33 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2021/09/17/automatically-rotating-aws-access-keys/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Why I Threw Out My Dotfiles</title>
|
||||
<link>/blog/2021/09/08/why-i-threw-out-my-dotfiles/</link>
|
||||
<pubDate>Wed, 08 Sep 2021 00:42:33 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2021/09/08/why-i-threw-out-my-dotfiles/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>What To Do With A Homelab</title>
|
||||
<link>/blog/2021/09/06/what-to-do-with-a-homelab/</link>
|
||||
<pubDate>Mon, 06 Sep 2021 01:12:54 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2021/09/06/what-to-do-with-a-homelab/</guid>
|
||||
<description><p>A homelab can be an inexpensive way to host a multitude of internal/external services and learn <em>a lot</em> in the process.</p></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>AppGate SDP on Arch Linux</title>
|
||||
<link>/blog/2020/03/16/appgate-sdp-on-arch-linux/</link>
|
||||
<pubDate>Mon, 16 Mar 2020 22:00:15 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2020/03/16/appgate-sdp-on-arch-linux/</guid>
|
||||
<description><p>AppGate SDP provides a Zero Trust network. This post describes how to get AppGate SDP <code>4.3.2</code> working on Arch Linux.</p></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title></title>
|
||||
<link>/page/search/</link>
|
||||
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
||||
|
||||
<guid>/page/search/</guid>
|
||||
<description>test</description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
161
public/page/2/index.html
Normal file
@@ -0,0 +1,161 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="generator" content="Hugo 0.120.3">
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"><title>davegallant | Home </title><link rel="icon" type="image/png" href=https://davegallant.ca/favicon.ico /><meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="" />
|
||||
<meta property="og:image" content=""/>
|
||||
<link rel="alternate" type="application/rss+xml" href="/index.xml" title="davegallant" />
|
||||
<meta property="og:title" content="davegallant" />
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="davegallant"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@1,500&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Fira+Sans&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="/css/main.0e5aa3b634b92d61bafebfd908290cc7a034e4d50e6a0c59ce50044560179c4e.css" />
|
||||
<link id="darkModeStyle" rel="stylesheet" type="text/css" href="/css/dark.b11f422ffce8151207bad84653d44cb512043f9efe93a0a049f836b9cc32b34a.css" disabled />
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript"
|
||||
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({
|
||||
tex2jax: {
|
||||
inlineMath: [['$','$'], ['\\(','\\)']],
|
||||
displayMath: [['$$','$$'], ['\[','\]']],
|
||||
processEscapes: true,
|
||||
processEnvironments: true,
|
||||
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
|
||||
TeX: { equationNumbers: { autoNumber: "AMS" },
|
||||
extensions: ["AMSmath.js", "AMSsymbols.js"] }
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.css">
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/contrib/auto-render.min.js" onload="renderMathInElement(document.body);"></script>
|
||||
|
||||
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
renderMathInElement(document.body, {
|
||||
delimiters: [
|
||||
{left: "$$", right: "$$", display: true},
|
||||
{left: "$", right: "$", display: false}
|
||||
]
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/css/custom.2e59ff60a2d9c7e42e3c1af2aff0ba627da46f910a234867e98d178eb05c87dc.css">
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="content">
|
||||
<header>
|
||||
<div class="main">
|
||||
<a href="/">davegallant</a>
|
||||
</div>
|
||||
<nav>
|
||||
|
||||
<a href="/">Home</a>
|
||||
|
||||
<a href="/post">All posts</a>
|
||||
|
||||
<a href="/index.xml">RSS</a>
|
||||
|
||||
<a href="/tags">Tags</a>
|
||||
|
||||
<a href="/about">About</a>
|
||||
|
||||
| <span id="dark-mode-toggle" onclick="toggleTheme()"></span>
|
||||
<script src="/js/themetoggle.js"></script>
|
||||
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
|
||||
<main class="list">
|
||||
<div class="site-description"><p>A personal blog</p></div>
|
||||
|
||||
|
||||
|
||||
<section class="list-item">
|
||||
<h1 class="title"><a href="/blog/2020/03/16/appgate-sdp-on-arch-linux/">AppGate SDP on Arch Linux</a></h1>
|
||||
<time>Mar 16, 2020</time>
|
||||
<br><div class="description">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<ul class="pagination">
|
||||
<span class="page-item page-prev">
|
||||
|
||||
<a href="/" class="page-link" aria-label="Previous"><span aria-hidden="true">← Prev</span></a>
|
||||
|
||||
</span>
|
||||
<span class="page-item page-next">
|
||||
|
||||
</span>
|
||||
</ul>
|
||||
|
||||
|
||||
</main>
|
||||
<footer>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
<div class="footer-info">
|
||||
2023 Dave Gallant
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-V8WJDERTX9', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
feather.replace()
|
||||
</script>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/page/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Pages"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -119,8 +120,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -6,15 +6,14 @@
|
||||
<description>Recent content in Pages on davegallant</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright><atom:link href="/page/index.xml" rel="self" type="application/rss+xml" />
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<atom:link href="/page/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title></title>
|
||||
<link>/page/search/</link>
|
||||
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
||||
|
||||
<guid>/page/search/</guid>
|
||||
<description>test</description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -10,6 +10,7 @@
|
||||
<meta property="og:url" content="/page/search/" /><meta property="article:section" content="page" />
|
||||
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content=""/>
|
||||
<meta name="twitter:description" content="test"/>
|
||||
@@ -131,8 +132,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/post/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Posts"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -97,6 +98,8 @@
|
||||
|
||||
|
||||
<ul class="posts"><li class="post">
|
||||
<a href="/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/">Setting Up Gitea Actions With Tailscale</a> <span class="meta">Dec 10, 2023</span>
|
||||
</li><li class="post">
|
||||
<a href="/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/">Using AKS and SOCKS to connect to a Private Azure DB</a> <span class="meta">May 22, 2023</span>
|
||||
</li><li class="post">
|
||||
<a href="/blog/2022/12/10/watching-youtube-in-private/">Watching YouTube in Private</a> <span class="meta">Dec 10, 2022</span>
|
||||
@@ -139,8 +142,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,96 +7,84 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate><atom:link href="/post/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Sun, 10 Dec 2023 17:22:11 -0500</lastBuildDate>
|
||||
<atom:link href="/post/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Setting Up Gitea Actions With Tailscale</title>
|
||||
<link>/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/</link>
|
||||
<pubDate>Sun, 10 Dec 2023 17:22:11 -0500</pubDate>
|
||||
<guid>/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Using AKS and SOCKS to connect to a Private Azure DB</title>
|
||||
<link>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</link>
|
||||
<pubDate>Mon, 22 May 2023 16:31:29 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Watching YouTube in Private</title>
|
||||
<link>/blog/2022/12/10/watching-youtube-in-private/</link>
|
||||
<pubDate>Sat, 10 Dec 2022 21:46:55 -0500</pubDate>
|
||||
|
||||
<guid>/blog/2022/12/10/watching-youtube-in-private/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Virtualizing My Router With pfSense</title>
|
||||
<link>/blog/2022/04/02/virtualizing-my-router-with-pfsense/</link>
|
||||
<pubDate>Sat, 02 Apr 2022 18:50:09 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2022/04/02/virtualizing-my-router-with-pfsense/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Backing Up Gmail With Synology</title>
|
||||
<link>/blog/2022/03/13/backing-up-gmail-with-synology/</link>
|
||||
<pubDate>Sun, 13 Mar 2022 18:49:10 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2022/03/13/backing-up-gmail-with-synology/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Running K3s in LXC on Proxmox</title>
|
||||
<link>/blog/2021/11/14/running-k3s-in-lxc-on-proxmox/</link>
|
||||
<pubDate>Sun, 14 Nov 2021 10:07:03 -0500</pubDate>
|
||||
|
||||
<guid>/blog/2021/11/14/running-k3s-in-lxc-on-proxmox/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Replacing docker with podman on macOS (and Linux)</title>
|
||||
<link>/blog/2021/10/11/replacing-docker-with-podman-on-macos-and-linux/</link>
|
||||
<pubDate>Mon, 11 Oct 2021 10:43:35 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2021/10/11/replacing-docker-with-podman-on-macos-and-linux/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Automatically Rotating AWS Access Keys</title>
|
||||
<link>/blog/2021/09/17/automatically-rotating-aws-access-keys/</link>
|
||||
<pubDate>Fri, 17 Sep 2021 12:48:33 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2021/09/17/automatically-rotating-aws-access-keys/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Why I Threw Out My Dotfiles</title>
|
||||
<link>/blog/2021/09/08/why-i-threw-out-my-dotfiles/</link>
|
||||
<pubDate>Wed, 08 Sep 2021 00:42:33 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2021/09/08/why-i-threw-out-my-dotfiles/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>What To Do With A Homelab</title>
|
||||
<link>/blog/2021/09/06/what-to-do-with-a-homelab/</link>
|
||||
<pubDate>Mon, 06 Sep 2021 01:12:54 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2021/09/06/what-to-do-with-a-homelab/</guid>
|
||||
<description><p>A homelab can be an inexpensive way to host a multitude of internal/external services and learn <em>a lot</em> in the process.</p></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>AppGate SDP on Arch Linux</title>
|
||||
<link>/blog/2020/03/16/appgate-sdp-on-arch-linux/</link>
|
||||
<pubDate>Mon, 16 Mar 2020 22:00:15 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2020/03/16/appgate-sdp-on-arch-linux/</guid>
|
||||
<description><p>AppGate SDP provides a Zero Trust network. This post describes how to get AppGate SDP <code>4.3.2</code> working on Arch Linux.</p></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -3,6 +3,30 @@
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
<url>
|
||||
<loc>/about/</loc>
|
||||
</url><url>
|
||||
<loc>/</loc>
|
||||
<lastmod>2023-12-10T17:22:11-05:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/gitea/</loc>
|
||||
<lastmod>2023-12-10T17:22:11-05:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/gitea-actions/</loc>
|
||||
<lastmod>2023-12-10T17:22:11-05:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/github-actions/</loc>
|
||||
<lastmod>2023-12-10T17:22:11-05:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/post/</loc>
|
||||
<lastmod>2023-12-10T17:22:11-05:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/</loc>
|
||||
<lastmod>2023-12-10T17:22:11-05:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/</loc>
|
||||
<lastmod>2023-12-10T17:22:11-05:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/tailscale/</loc>
|
||||
<lastmod>2023-12-10T17:22:11-05:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/aks/</loc>
|
||||
<lastmod>2023-05-22T16:31:29-04:00</lastmod>
|
||||
@@ -21,9 +45,6 @@
|
||||
</url><url>
|
||||
<loc>/tags/database/</loc>
|
||||
<lastmod>2023-05-22T16:31:29-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/</loc>
|
||||
<lastmod>2023-05-22T16:31:29-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/eks/</loc>
|
||||
<lastmod>2023-05-22T16:31:29-04:00</lastmod>
|
||||
@@ -33,18 +54,12 @@
|
||||
</url><url>
|
||||
<loc>/tags/kubectl-plugin-socks5-proxy/</loc>
|
||||
<lastmod>2023-05-22T16:31:29-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/post/</loc>
|
||||
<lastmod>2023-05-22T16:31:29-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/proxy/</loc>
|
||||
<lastmod>2023-05-22T16:31:29-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/socks/</loc>
|
||||
<lastmod>2023-05-22T16:31:29-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/</loc>
|
||||
<lastmod>2023-05-22T16:31:29-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</loc>
|
||||
<lastmod>2023-05-22T16:31:29-04:00</lastmod>
|
||||
@@ -57,9 +72,6 @@
|
||||
</url><url>
|
||||
<loc>/tags/privacy/</loc>
|
||||
<lastmod>2022-12-10T21:46:55-05:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/tailscale/</loc>
|
||||
<lastmod>2022-12-10T21:46:55-05:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/blog/2022/12/10/watching-youtube-in-private/</loc>
|
||||
<lastmod>2022-12-10T21:46:55-05:00</lastmod>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/adguard/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="adguard"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -121,8 +122,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,15 +7,14 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Mon, 06 Sep 2021 01:12:54 -0400</lastBuildDate><atom:link href="/tags/adguard/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Mon, 06 Sep 2021 01:12:54 -0400</lastBuildDate>
|
||||
<atom:link href="/tags/adguard/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>What To Do With A Homelab</title>
|
||||
<link>/blog/2021/09/06/what-to-do-with-a-homelab/</link>
|
||||
<pubDate>Mon, 06 Sep 2021 01:12:54 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2021/09/06/what-to-do-with-a-homelab/</guid>
|
||||
<description><p>A homelab can be an inexpensive way to host a multitude of internal/external services and learn <em>a lot</em> in the process.</p></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/aks/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="aks"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -121,8 +122,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,15 +7,14 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate><atom:link href="/tags/aks/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate>
|
||||
<atom:link href="/tags/aks/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Using AKS and SOCKS to connect to a Private Azure DB</title>
|
||||
<link>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</link>
|
||||
<pubDate>Mon, 22 May 2023 16:31:29 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/aws-vault/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="aws-vault"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -121,8 +122,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,15 +7,14 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Fri, 17 Sep 2021 12:48:33 -0400</lastBuildDate><atom:link href="/tags/aws-vault/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Fri, 17 Sep 2021 12:48:33 -0400</lastBuildDate>
|
||||
<atom:link href="/tags/aws-vault/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Automatically Rotating AWS Access Keys</title>
|
||||
<link>/blog/2021/09/17/automatically-rotating-aws-access-keys/</link>
|
||||
<pubDate>Fri, 17 Sep 2021 12:48:33 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2021/09/17/automatically-rotating-aws-access-keys/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/aws/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="aws"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -123,8 +124,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,24 +7,21 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate><atom:link href="/tags/aws/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate>
|
||||
<atom:link href="/tags/aws/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Using AKS and SOCKS to connect to a Private Azure DB</title>
|
||||
<link>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</link>
|
||||
<pubDate>Mon, 22 May 2023 16:31:29 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Automatically Rotating AWS Access Keys</title>
|
||||
<link>/blog/2021/09/17/automatically-rotating-aws-access-keys/</link>
|
||||
<pubDate>Fri, 17 Sep 2021 12:48:33 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2021/09/17/automatically-rotating-aws-access-keys/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/azure/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="azure"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -121,8 +122,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,15 +7,14 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate><atom:link href="/tags/azure/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate>
|
||||
<atom:link href="/tags/azure/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Using AKS and SOCKS to connect to a Private Azure DB</title>
|
||||
<link>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</link>
|
||||
<pubDate>Mon, 22 May 2023 16:31:29 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/backup/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="backup"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -121,8 +122,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,15 +7,14 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Sun, 13 Mar 2022 18:49:10 -0400</lastBuildDate><atom:link href="/tags/backup/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Sun, 13 Mar 2022 18:49:10 -0400</lastBuildDate>
|
||||
<atom:link href="/tags/backup/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Backing Up Gmail With Synology</title>
|
||||
<link>/blog/2022/03/13/backing-up-gmail-with-synology/</link>
|
||||
<pubDate>Sun, 13 Mar 2022 18:49:10 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2022/03/13/backing-up-gmail-with-synology/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/bastion/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="bastion"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -121,8 +122,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,15 +7,14 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate><atom:link href="/tags/bastion/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate>
|
||||
<atom:link href="/tags/bastion/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Using AKS and SOCKS to connect to a Private Azure DB</title>
|
||||
<link>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</link>
|
||||
<pubDate>Mon, 22 May 2023 16:31:29 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/cloud-sql-proxy/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="cloud-sql-proxy"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -121,8 +122,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,15 +7,14 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate><atom:link href="/tags/cloud-sql-proxy/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate>
|
||||
<atom:link href="/tags/cloud-sql-proxy/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Using AKS and SOCKS to connect to a Private Azure DB</title>
|
||||
<link>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</link>
|
||||
<pubDate>Mon, 22 May 2023 16:31:29 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/containers/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="containers"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -121,8 +122,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,15 +7,14 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Mon, 11 Oct 2021 10:43:35 -0400</lastBuildDate><atom:link href="/tags/containers/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Mon, 11 Oct 2021 10:43:35 -0400</lastBuildDate>
|
||||
<atom:link href="/tags/containers/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Replacing docker with podman on macOS (and Linux)</title>
|
||||
<link>/blog/2021/10/11/replacing-docker-with-podman-on-macos-and-linux/</link>
|
||||
<pubDate>Mon, 11 Oct 2021 10:43:35 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2021/10/11/replacing-docker-with-podman-on-macos-and-linux/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/database/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="database"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -121,8 +122,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,15 +7,14 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate><atom:link href="/tags/database/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate>
|
||||
<atom:link href="/tags/database/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Using AKS and SOCKS to connect to a Private Azure DB</title>
|
||||
<link>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</link>
|
||||
<pubDate>Mon, 22 May 2023 16:31:29 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/degoogle/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="degoogle"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -123,8 +124,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,24 +7,21 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Sat, 10 Dec 2022 21:46:55 -0500</lastBuildDate><atom:link href="/tags/degoogle/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Sat, 10 Dec 2022 21:46:55 -0500</lastBuildDate>
|
||||
<atom:link href="/tags/degoogle/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Watching YouTube in Private</title>
|
||||
<link>/blog/2022/12/10/watching-youtube-in-private/</link>
|
||||
<pubDate>Sat, 10 Dec 2022 21:46:55 -0500</pubDate>
|
||||
|
||||
<guid>/blog/2022/12/10/watching-youtube-in-private/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Backing Up Gmail With Synology</title>
|
||||
<link>/blog/2022/03/13/backing-up-gmail-with-synology/</link>
|
||||
<pubDate>Sun, 13 Mar 2022 18:49:10 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2022/03/13/backing-up-gmail-with-synology/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/docker/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="docker"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -121,8 +122,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,15 +7,14 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Mon, 11 Oct 2021 10:43:35 -0400</lastBuildDate><atom:link href="/tags/docker/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Mon, 11 Oct 2021 10:43:35 -0400</lastBuildDate>
|
||||
<atom:link href="/tags/docker/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Replacing docker with podman on macOS (and Linux)</title>
|
||||
<link>/blog/2021/10/11/replacing-docker-with-podman-on-macos-and-linux/</link>
|
||||
<pubDate>Mon, 11 Oct 2021 10:43:35 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2021/10/11/replacing-docker-with-podman-on-macos-and-linux/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/dotfiles/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="dotfiles"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -121,8 +122,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,15 +7,14 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</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" />
|
||||
<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/2021/09/08/why-i-threw-out-my-dotfiles/</link>
|
||||
<pubDate>Wed, 08 Sep 2021 00:42:33 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2021/09/08/why-i-threw-out-my-dotfiles/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/eks/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="eks"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -121,8 +122,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|
@@ -7,15 +7,14 @@
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<copyright>Dave Gallant</copyright>
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate><atom:link href="/tags/eks/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Mon, 22 May 2023 16:31:29 -0400</lastBuildDate>
|
||||
<atom:link href="/tags/eks/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Using AKS and SOCKS to connect to a Private Azure DB</title>
|
||||
<link>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</link>
|
||||
<pubDate>Mon, 22 May 2023 16:31:29 -0400</pubDate>
|
||||
|
||||
<guid>/blog/2023/05/22/using-aks-and-socks-to-connect-to-a-private-azure-db/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
152
public/tags/gitea-actions/index.html
Normal file
@@ -0,0 +1,152 @@
|
||||
<!DOCTYPE html>
|
||||
<html><head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"><title>gitea actions - davegallant</title><link rel="icon" type="image/png" href=https://davegallant.ca/favicon.ico /><meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="" />
|
||||
<meta property="og:image" content=""/>
|
||||
<link rel="alternate" type="application/rss+xml" href="/tags/gitea-actions/index.xml" title="davegallant" />
|
||||
<meta property="og:title" content="gitea actions" />
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/gitea-actions/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="gitea actions"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@1,500&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Fira+Sans&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="/css/main.0e5aa3b634b92d61bafebfd908290cc7a034e4d50e6a0c59ce50044560179c4e.css" />
|
||||
<link id="darkModeStyle" rel="stylesheet" type="text/css" href="/css/dark.b11f422ffce8151207bad84653d44cb512043f9efe93a0a049f836b9cc32b34a.css" disabled />
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript"
|
||||
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({
|
||||
tex2jax: {
|
||||
inlineMath: [['$','$'], ['\\(','\\)']],
|
||||
displayMath: [['$$','$$'], ['\[','\]']],
|
||||
processEscapes: true,
|
||||
processEnvironments: true,
|
||||
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
|
||||
TeX: { equationNumbers: { autoNumber: "AMS" },
|
||||
extensions: ["AMSmath.js", "AMSsymbols.js"] }
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.css">
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/contrib/auto-render.min.js" onload="renderMathInElement(document.body);"></script>
|
||||
|
||||
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
renderMathInElement(document.body, {
|
||||
delimiters: [
|
||||
{left: "$$", right: "$$", display: true},
|
||||
{left: "$", right: "$", display: false}
|
||||
]
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/css/custom.2e59ff60a2d9c7e42e3c1af2aff0ba627da46f910a234867e98d178eb05c87dc.css">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="content"><header>
|
||||
<div class="main">
|
||||
<a href="/">davegallant</a>
|
||||
</div>
|
||||
<nav>
|
||||
|
||||
<a href="/">Home</a>
|
||||
|
||||
<a href="/post">All posts</a>
|
||||
|
||||
<a href="/index.xml">RSS</a>
|
||||
|
||||
<a href="/tags">Tags</a>
|
||||
|
||||
<a href="/about">About</a>
|
||||
|
||||
| <span id="dark-mode-toggle" onclick="toggleTheme()"></span>
|
||||
<script src="/js/themetoggle.js"></script>
|
||||
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
|
||||
<h1>Entries tagged - "gitea actions"</h1>
|
||||
|
||||
|
||||
<ul class="posts"><li class="post">
|
||||
<a href="/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/">Setting Up Gitea Actions With Tailscale</a> <span class="meta">Dec 10, 2023</span>
|
||||
</li></ul>
|
||||
|
||||
<section id='comments' class='comments'>
|
||||
<div class='container sep-before'>
|
||||
<div class='comments'><script>
|
||||
|
||||
var getTheme = window.localStorage && window.localStorage.getItem("theme-storage");
|
||||
getTheme = getTheme == null ? 'light' : getTheme;
|
||||
|
||||
let theme = getTheme === 'dark' ? 'github-dark' : 'github-light';
|
||||
let s = document.createElement('script');
|
||||
s.src = 'https://utteranc.es/client.js';
|
||||
s.setAttribute('repo', 'davegallant\/davegallant.github.io');
|
||||
s.setAttribute('issue-term', 'pathname');
|
||||
s.setAttribute('theme', theme);
|
||||
s.setAttribute('crossorigin', 'anonymous');
|
||||
s.setAttribute('async', '');
|
||||
document.querySelector('div.comments').innerHTML = '';
|
||||
document.querySelector('div.comments').appendChild(s);
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
<div class="footer-info">
|
||||
2023 Dave Gallant
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-V8WJDERTX9', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
feather.replace()
|
||||
</script></div>
|
||||
</body>
|
||||
</html>
|
20
public/tags/gitea-actions/index.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?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</title>
|
||||
<link>/tags/gitea-actions/</link>
|
||||
<description>Recent content in gitea actions on davegallant</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</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/2023/12/10/setting-up-gitea-actions-with-tailscale/</link>
|
||||
<pubDate>Sun, 10 Dec 2023 17:22:11 -0500</pubDate>
|
||||
<guid>/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
152
public/tags/gitea/index.html
Normal file
@@ -0,0 +1,152 @@
|
||||
<!DOCTYPE html>
|
||||
<html><head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"><title>gitea - davegallant</title><link rel="icon" type="image/png" href=https://davegallant.ca/favicon.ico /><meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="" />
|
||||
<meta property="og:image" content=""/>
|
||||
<link rel="alternate" type="application/rss+xml" href="/tags/gitea/index.xml" title="davegallant" />
|
||||
<meta property="og:title" content="gitea" />
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/gitea/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="gitea"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@1,500&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Fira+Sans&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="/css/main.0e5aa3b634b92d61bafebfd908290cc7a034e4d50e6a0c59ce50044560179c4e.css" />
|
||||
<link id="darkModeStyle" rel="stylesheet" type="text/css" href="/css/dark.b11f422ffce8151207bad84653d44cb512043f9efe93a0a049f836b9cc32b34a.css" disabled />
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript"
|
||||
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({
|
||||
tex2jax: {
|
||||
inlineMath: [['$','$'], ['\\(','\\)']],
|
||||
displayMath: [['$$','$$'], ['\[','\]']],
|
||||
processEscapes: true,
|
||||
processEnvironments: true,
|
||||
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
|
||||
TeX: { equationNumbers: { autoNumber: "AMS" },
|
||||
extensions: ["AMSmath.js", "AMSsymbols.js"] }
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.css">
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/contrib/auto-render.min.js" onload="renderMathInElement(document.body);"></script>
|
||||
|
||||
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
renderMathInElement(document.body, {
|
||||
delimiters: [
|
||||
{left: "$$", right: "$$", display: true},
|
||||
{left: "$", right: "$", display: false}
|
||||
]
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/css/custom.2e59ff60a2d9c7e42e3c1af2aff0ba627da46f910a234867e98d178eb05c87dc.css">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="content"><header>
|
||||
<div class="main">
|
||||
<a href="/">davegallant</a>
|
||||
</div>
|
||||
<nav>
|
||||
|
||||
<a href="/">Home</a>
|
||||
|
||||
<a href="/post">All posts</a>
|
||||
|
||||
<a href="/index.xml">RSS</a>
|
||||
|
||||
<a href="/tags">Tags</a>
|
||||
|
||||
<a href="/about">About</a>
|
||||
|
||||
| <span id="dark-mode-toggle" onclick="toggleTheme()"></span>
|
||||
<script src="/js/themetoggle.js"></script>
|
||||
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
|
||||
<h1>Entries tagged - "gitea"</h1>
|
||||
|
||||
|
||||
<ul class="posts"><li class="post">
|
||||
<a href="/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/">Setting Up Gitea Actions With Tailscale</a> <span class="meta">Dec 10, 2023</span>
|
||||
</li></ul>
|
||||
|
||||
<section id='comments' class='comments'>
|
||||
<div class='container sep-before'>
|
||||
<div class='comments'><script>
|
||||
|
||||
var getTheme = window.localStorage && window.localStorage.getItem("theme-storage");
|
||||
getTheme = getTheme == null ? 'light' : getTheme;
|
||||
|
||||
let theme = getTheme === 'dark' ? 'github-dark' : 'github-light';
|
||||
let s = document.createElement('script');
|
||||
s.src = 'https://utteranc.es/client.js';
|
||||
s.setAttribute('repo', 'davegallant\/davegallant.github.io');
|
||||
s.setAttribute('issue-term', 'pathname');
|
||||
s.setAttribute('theme', theme);
|
||||
s.setAttribute('crossorigin', 'anonymous');
|
||||
s.setAttribute('async', '');
|
||||
document.querySelector('div.comments').innerHTML = '';
|
||||
document.querySelector('div.comments').appendChild(s);
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
<div class="footer-info">
|
||||
2023 Dave Gallant
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-V8WJDERTX9', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
feather.replace()
|
||||
</script></div>
|
||||
</body>
|
||||
</html>
|
20
public/tags/gitea/index.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?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</title>
|
||||
<link>/tags/gitea/</link>
|
||||
<description>Recent content in gitea on davegallant</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</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/2023/12/10/setting-up-gitea-actions-with-tailscale/</link>
|
||||
<pubDate>Sun, 10 Dec 2023 17:22:11 -0500</pubDate>
|
||||
<guid>/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
152
public/tags/github-actions/index.html
Normal file
@@ -0,0 +1,152 @@
|
||||
<!DOCTYPE html>
|
||||
<html><head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"><title>github actions - davegallant</title><link rel="icon" type="image/png" href=https://davegallant.ca/favicon.ico /><meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="" />
|
||||
<meta property="og:image" content=""/>
|
||||
<link rel="alternate" type="application/rss+xml" href="/tags/github-actions/index.xml" title="davegallant" />
|
||||
<meta property="og:title" content="github actions" />
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/github-actions/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="github actions"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@1,500&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Fira+Sans&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="/css/main.0e5aa3b634b92d61bafebfd908290cc7a034e4d50e6a0c59ce50044560179c4e.css" />
|
||||
<link id="darkModeStyle" rel="stylesheet" type="text/css" href="/css/dark.b11f422ffce8151207bad84653d44cb512043f9efe93a0a049f836b9cc32b34a.css" disabled />
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript"
|
||||
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({
|
||||
tex2jax: {
|
||||
inlineMath: [['$','$'], ['\\(','\\)']],
|
||||
displayMath: [['$$','$$'], ['\[','\]']],
|
||||
processEscapes: true,
|
||||
processEnvironments: true,
|
||||
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
|
||||
TeX: { equationNumbers: { autoNumber: "AMS" },
|
||||
extensions: ["AMSmath.js", "AMSsymbols.js"] }
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.css">
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/contrib/auto-render.min.js" onload="renderMathInElement(document.body);"></script>
|
||||
|
||||
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
renderMathInElement(document.body, {
|
||||
delimiters: [
|
||||
{left: "$$", right: "$$", display: true},
|
||||
{left: "$", right: "$", display: false}
|
||||
]
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/css/custom.2e59ff60a2d9c7e42e3c1af2aff0ba627da46f910a234867e98d178eb05c87dc.css">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="content"><header>
|
||||
<div class="main">
|
||||
<a href="/">davegallant</a>
|
||||
</div>
|
||||
<nav>
|
||||
|
||||
<a href="/">Home</a>
|
||||
|
||||
<a href="/post">All posts</a>
|
||||
|
||||
<a href="/index.xml">RSS</a>
|
||||
|
||||
<a href="/tags">Tags</a>
|
||||
|
||||
<a href="/about">About</a>
|
||||
|
||||
| <span id="dark-mode-toggle" onclick="toggleTheme()"></span>
|
||||
<script src="/js/themetoggle.js"></script>
|
||||
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
|
||||
<h1>Entries tagged - "github actions"</h1>
|
||||
|
||||
|
||||
<ul class="posts"><li class="post">
|
||||
<a href="/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/">Setting Up Gitea Actions With Tailscale</a> <span class="meta">Dec 10, 2023</span>
|
||||
</li></ul>
|
||||
|
||||
<section id='comments' class='comments'>
|
||||
<div class='container sep-before'>
|
||||
<div class='comments'><script>
|
||||
|
||||
var getTheme = window.localStorage && window.localStorage.getItem("theme-storage");
|
||||
getTheme = getTheme == null ? 'light' : getTheme;
|
||||
|
||||
let theme = getTheme === 'dark' ? 'github-dark' : 'github-light';
|
||||
let s = document.createElement('script');
|
||||
s.src = 'https://utteranc.es/client.js';
|
||||
s.setAttribute('repo', 'davegallant\/davegallant.github.io');
|
||||
s.setAttribute('issue-term', 'pathname');
|
||||
s.setAttribute('theme', theme);
|
||||
s.setAttribute('crossorigin', 'anonymous');
|
||||
s.setAttribute('async', '');
|
||||
document.querySelector('div.comments').innerHTML = '';
|
||||
document.querySelector('div.comments').appendChild(s);
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
<div class="footer-info">
|
||||
2023 Dave Gallant
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-V8WJDERTX9"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-V8WJDERTX9', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
feather.replace()
|
||||
</script></div>
|
||||
</body>
|
||||
</html>
|
20
public/tags/github-actions/index.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?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</title>
|
||||
<link>/tags/github-actions/</link>
|
||||
<description>Recent content in github actions on davegallant</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</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/2023/12/10/setting-up-gitea-actions-with-tailscale/</link>
|
||||
<pubDate>Sun, 10 Dec 2023 17:22:11 -0500</pubDate>
|
||||
<guid>/blog/2023/12/10/setting-up-gitea-actions-with-tailscale/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
@@ -9,6 +9,7 @@
|
||||
<meta property="og:description" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/gmail/" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="gmail"/>
|
||||
<meta name="twitter:description" content=""/>
|
||||
@@ -121,8 +122,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><footer>
|
||||
<div style="display:flex"><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://twitter.com/davega11ant/" rel="me" title="Twitter"><i data-feather="twitter"></i></a>
|
||||
<div style="display:flex"><a class="soc" href="mailto:me@davegallant.ca" rel="me" title="Email"><i data-feather="at-sign"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://linktr.ee/davegallant" rel="me" title="LinkTree"><i data-feather="compass"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://github.com/davegallant" rel="me" title="GitHub"><i data-feather="github"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://mastodon.social/@davegallant" rel="me" title="Mastodon"><i data-feather="speaker"></i></a>
|
||||
<a class="border"></a><a class="soc" href="https://www.linkedin.com/in/dave-gallant/" rel="me" title="LinkedIn"><i data-feather="linkedin"></i></a>
|
||||
<a class="border"></a></div>
|
||||
|