diff --git a/haproxy/50-haproxy.sh b/haproxy/50-haproxy.sh new file mode 100644 index 0000000..568bc7b --- /dev/null +++ b/haproxy/50-haproxy.sh @@ -0,0 +1,13 @@ +#!/bin/sh +CONTAINER=haproxy + +# Starts a cloudflare ddns container that is deleted after it is stopped. +# All configs stored in /mnt/data/cloudflare-ddns +if podman container exists "$CONTAINER"; then + podman start "$CONTAINER" +else +podman run -d --net=host --restart always \ + --name haproxy \ + --hostname ha.proxy \ + -v "/mnt/data/haproxy/:/usr/local/etc/haproxy/" \ + haproxy:latest \ No newline at end of file diff --git a/haproxy/README.md b/haproxy/README.md new file mode 100644 index 0000000..ebc3359 --- /dev/null +++ b/haproxy/README.md @@ -0,0 +1,32 @@ +# Run haproxy on your UDM + +## Features + +1. Load balance services on your UDM, because why not?. +2. Persists through reboots and firmware updates. + +## Requirements + +1. You have successfully setup the on boot script described [here](https://github.com/boostchicken/udm-utilities/tree/master/on-boot-script) +2. You have to have services you want to load-balance, an example would be a multi-master k3s cluster. + +## Steps + +1. Pull your image with `podman pull docker.io/library/haproxy`. +1. (Optional) Configure a network using the generic cni network [20-dns.conflist](../cni-plugins/20-dns.conflist) and update its values to reflect your environment +1. Copy [50-haproxy.sh](./50-haproxy.sh) to `/mnt/data/on_boot.d/50-haproxy.sh`. +1. Create a persistant directory and config for haproxy to use: + + ```sh + mkdir -p /mnt/data/haproxy + touch /mnt/data/haproxy/haproxy.cfg + ``` + +1. Add your config to `/mnt/data/haproxy/haproxy.cfg`. Each configuration is unique, so check out some resouces like [haproxy.com](https://www.haproxy.com/documentation/hapee/latest/configuration/config-sections/) for basics. +1. Run `/mnt/data/on_boot.d/50-haproxy.sh` + +## Upgrading Easily (if at all) + +1. Edit [update-pihole.sh](./update-pihole.sh) to use the same command you used at installation (if changed). +2. Copy the [update-pihole.sh](./update-pihole.sh) to `/mnt/data/scripts` +3. Anytime you want to update your installation, simply run `/mnt/data/scripts/update-pihole.sh` diff --git a/haproxy/update-haproxy.sh b/haproxy/update-haproxy.sh new file mode 100644 index 0000000..5d76ae2 --- /dev/null +++ b/haproxy/update-haproxy.sh @@ -0,0 +1,8 @@ +podman pull haproxy +podman stop haproxy +podman rm haproxy +podman run -d --net=host --restart always \ + --name haproxy \ + --hostname ha.proxy \ + -v "/mnt/data/haproxy/:/usr/local/etc/haproxy/" \ + haproxy:latest \ No newline at end of file