From bb058597e87d62b02620a2b708f3a1fb249ae76e Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Thu, 28 Nov 2024 13:34:56 -0700 Subject: [PATCH] Buncha changes --- homelab/.gitignore | 1 + homelab/auth/run | 13 +++ homelab/btrfs-scrub/run | 17 +++ homelab/caddy/Caddyfile | 44 ++++++-- homelab/caddy/Caddyfile.simpleauth | 106 ++++++++++++++++++ homelab/caddy/run | 5 +- homelab/coredns/Corefile | 2 +- homelab/{pigallery2 => imgme}/finish | 0 homelab/imgme/run | 8 ++ homelab/ircd/finish | 3 + homelab/ircd/run | 14 +++ homelab/photos/photofield.yaml | 11 ++ homelab/photos/run | 1 + homelab/photos/run.photofield | 13 +++ homelab/photos/run.photoprism | 16 +++ .../{pigallery2/run => photos/run.pigallery2} | 4 +- homelab/pigallery2/deergrove.png | Bin 30184 -> 0 bytes homelab/pigallery2/portal.json | 76 ------------- homelab/plex/README.md | 15 +++ homelab/plex/run | 1 - homelab/portal/portal.json | 15 +-- homelab/samba/run | 5 +- homelab/skeleton/down | 0 homelab/skeleton/run | 10 ++ homelab/sucker/run | 2 +- homelab/webfs/run | 6 +- 26 files changed, 285 insertions(+), 103 deletions(-) create mode 100644 homelab/.gitignore create mode 100755 homelab/auth/run create mode 100755 homelab/btrfs-scrub/run create mode 100644 homelab/caddy/Caddyfile.simpleauth rename homelab/{pigallery2 => imgme}/finish (100%) create mode 100755 homelab/imgme/run create mode 100755 homelab/ircd/finish create mode 100755 homelab/ircd/run create mode 100644 homelab/photos/photofield.yaml create mode 120000 homelab/photos/run create mode 100755 homelab/photos/run.photofield create mode 100755 homelab/photos/run.photoprism rename homelab/{pigallery2/run => photos/run.pigallery2} (81%) delete mode 100644 homelab/pigallery2/deergrove.png delete mode 100644 homelab/pigallery2/portal.json create mode 100644 homelab/plex/README.md create mode 100644 homelab/skeleton/down create mode 100755 homelab/skeleton/run diff --git a/homelab/.gitignore b/homelab/.gitignore new file mode 100644 index 0000000..8b7b6c0 --- /dev/null +++ b/homelab/.gitignore @@ -0,0 +1 @@ +*/log/ diff --git a/homelab/auth/run b/homelab/auth/run new file mode 100755 index 0000000..9a58241 --- /dev/null +++ b/homelab/auth/run @@ -0,0 +1,13 @@ +#! /bin/sh + +exec 2>&1 + +me=$(basename $(pwd)) +podman rm -f $me +podman run \ + --name $me \ + --network homelab \ + --name auth \ + --volume /srv/secrets/oauth2-proxy.cfg:/etc/oauth2-proxy.cfg:ro \ + quay.io/oauth2-proxy/oauth2-proxy \ + --config=/etc/oauth2-proxy.cfg diff --git a/homelab/btrfs-scrub/run b/homelab/btrfs-scrub/run new file mode 100755 index 0000000..3ffea8e --- /dev/null +++ b/homelab/btrfs-scrub/run @@ -0,0 +1,17 @@ +#! /bin/sh + +set -e + +# Wait 7 days +sleep 7d + +# Wait until it's after 10pm +while [ $(TZ=US/Mountain date +%H) -lt 22 ]; do + sleep 10m +done + +# Limit scrub speed to 100m. Is this a good limit? I don't know! +btrfs scrub limit --limit 100m --all /sys + +# Start the scrub! +btrfs scrub start /sys diff --git a/homelab/caddy/Caddyfile b/homelab/caddy/Caddyfile index e1d5d86..3f455eb 100644 --- a/homelab/caddy/Caddyfile +++ b/homelab/caddy/Caddyfile @@ -4,21 +4,42 @@ } (restricted-access) { - forward_auth simpleauth:8080 { - uri / - copy_headers X-Simpleauth-Username - header_down X-Simpleauth-Domain "woozle.org" + forward_auth auth:4180 { + uri /oauth2/auth + copy_headers Authorization X-Auth-Request-Access-Token + + @bad status 4xx + handle_response { + redir https://auth.woozle.org/oauth2/start?rd={scheme}://{host}{uri} + } } } +(restricted-access-naiive) { + forward_auth auth:4180 { + uri /oauth2/auth + # No copy-headers, so things don't get confused + + @bad status 4xx + handle_response { + redir https://auth.woozle.org/oauth2/start?rd={scheme}://{host}{uri} + } + } +} + +auth.woozle.org { + reverse_proxy auth:4180 +} + git.woozle.org { reverse_proxy gitea:3000 } drive.woozle.org { - import restricted-access + import restricted-access-naiive reverse_proxy webfs:5000 #reverse_proxy filebrowser:80 + #reverse_proxy nextcloud:80 } # XXX: have this use caddy auth @@ -28,13 +49,23 @@ ancestry.woozle.org { photos.woozle.org { import restricted-access - reverse_proxy pigallery2:80 + reverse_proxy photos:8080 # photofield, photoprism, pigallery2 } xfer.woozle.org { reverse_proxy picoshare:4001 } +irc.woozle.org, irc.entar.net { + handle_path /socket { + reverse_proxy ircd:8067 + } + handle /imgme/* { + reverse_proxy imgme:8080 + } + root * /srv/sys/www/irc.woozle.org/ + file_server +} ## ## handle sends original path @@ -71,7 +102,6 @@ deergrove.woozle.org { handle /prowlarr/* { reverse_proxy prowlarr:9696 } - handle_path /sucker/* { reverse_proxy sucker:8080 } diff --git a/homelab/caddy/Caddyfile.simpleauth b/homelab/caddy/Caddyfile.simpleauth new file mode 100644 index 0000000..c7b15d8 --- /dev/null +++ b/homelab/caddy/Caddyfile.simpleauth @@ -0,0 +1,106 @@ +{ + email neale@woozle.org + #debug +} + +(restricted-access) { + forward_auth simpleauth:8080 { + uri / + copy_headers X-Simpleauth-Username + header_down X-Simpleauth-Domain "woozle.org" + } +} + +git.woozle.org { + reverse_proxy gitea:3000 +} + +drive.woozle.org { + import restricted-access + reverse_proxy webfs:5000 + #reverse_proxy filebrowser:80 +} + +# XXX: have this use caddy auth +ancestry.woozle.org { + reverse_proxy geneweb:2317 +} + +photos.woozle.org { + import restricted-access + #reverse_proxy photos:8080 + reverse_proxy photos:2342 +} + +xfer.woozle.org { + reverse_proxy picoshare:4001 +} + +irc.woozle.org, irc.entar.net { + handle_path /socket { + reverse_proxy ircd:8067 + } + handle /imgme/* { + reverse_proxy imgme:8080 + } + root * /srv/sys/www/irc.woozle.org/ + file_server +} + +## +## handle sends original path +## handle_path truncates path +## + +deergrove.woozle.org { + import restricted-access + + handle_path /ddns/* { + reverse_proxy ddns:8000 + } + + handle /transmission/* { + reverse_proxy transmission:9091 + } + + handle /nzbget/* { + reverse_proxy nzbget:6789 + } + + handle /sonarr/* { + reverse_proxy sonarr:8989 + } + handle /radarr/* { + reverse_proxy radarr:7878 + } + handle /readarr/* { + reverse_proxy readarr:8787 + } + handle /lidarr/* { + reverse_proxy lidarr:8686 + } + handle /prowlarr/* { + reverse_proxy prowlarr:9696 + } + + handle_path /sucker/* { + reverse_proxy sucker:8080 + } + + handle_path /netdata/* { + reverse_proxy netdata:19999 + } + + # Octoprint serves up broken webcam URLs + uri replace /webcam/ /octoprint/webcam/ + handle_path /octoprint/* { + reverse_proxy { + to 192.168.86.20:80 + header_up X-Script-Name "/octoprint" + } + } + + handle { + reverse_proxy portal:8080 + } +} diff --git a/homelab/caddy/run b/homelab/caddy/run index 61c9d75..9f4d42a 100755 --- a/homelab/caddy/run +++ b/homelab/caddy/run @@ -1,6 +1,9 @@ #! /bin/sh + +exec 2>&1 + me=$(basename $(pwd)) -podman rm $me +podman rm -f $me podman run \ --name $me \ --network homelab \ diff --git a/homelab/coredns/Corefile b/homelab/coredns/Corefile index 3f5254a..82c09ff 100644 --- a/homelab/coredns/Corefile +++ b/homelab/coredns/Corefile @@ -1,7 +1,7 @@ . { bind 192.168.86.2 hosts { - 192.168.86.2 sweetums.woozle.org deergrove.woozle.org drive.woozle.org git.woozle.org ancestry.woozle.org media.woozle.org photos.woozle.org auth.woozle.org xfer.woozle.org + 192.168.86.2 sweetums.woozle.org deergrove.woozle.org drive.woozle.org git.woozle.org ancestry.woozle.org media.woozle.org photos.woozle.org auth.woozle.org xfer.woozle.org irc.woozle.org irc.entar.net fallthrough } forward . 1.1.1.1 1.0.0.1 8.8.8.8 diff --git a/homelab/pigallery2/finish b/homelab/imgme/finish similarity index 100% rename from homelab/pigallery2/finish rename to homelab/imgme/finish diff --git a/homelab/imgme/run b/homelab/imgme/run new file mode 100755 index 0000000..7a20a39 --- /dev/null +++ b/homelab/imgme/run @@ -0,0 +1,8 @@ +#! /bin/sh +me=$(basename $(pwd)) +podman rm $me +podman run \ + --name $me \ + --network homelab \ + --volume /srv/sys/imgme:/cache \ + git.woozle.org/neale/imgme diff --git a/homelab/ircd/finish b/homelab/ircd/finish new file mode 100755 index 0000000..0428209 --- /dev/null +++ b/homelab/ircd/finish @@ -0,0 +1,3 @@ +#! /bin/sh +me=$(basename $(pwd)) +podman stop $me diff --git a/homelab/ircd/run b/homelab/ircd/run new file mode 100755 index 0000000..af076d1 --- /dev/null +++ b/homelab/ircd/run @@ -0,0 +1,14 @@ +#! /bin/sh + +exec 2>&1 + +me=$(basename $(pwd)) + +podman rm -f $me +podman run \ + --name $me \ + --publish 6697:6697 \ + --network homelab \ + --volume /srv/sys/ircd:/ircd/ \ + --volume /srv/sys/caddy/certificates/acme-v02.api.letsencrypt.org-directory/irc.woozle.org/:/ircd/certs:ro \ + ghcr.io/ergochat/ergo diff --git a/homelab/photos/photofield.yaml b/homelab/photos/photofield.yaml new file mode 100644 index 0000000..a36d565 --- /dev/null +++ b/homelab/photos/photofield.yaml @@ -0,0 +1,11 @@ +collections: + - name: Fam + layout: timeline + dirs: + - /srv/storage/fam/Photos + + - name: Ginnie + layout: timeline + dirs: + - /srv/storage/ginnie/Photos + diff --git a/homelab/photos/run b/homelab/photos/run new file mode 120000 index 0000000..3b5b5df --- /dev/null +++ b/homelab/photos/run @@ -0,0 +1 @@ +run.pigallery2 \ No newline at end of file diff --git a/homelab/photos/run.photofield b/homelab/photos/run.photofield new file mode 100755 index 0000000..577bca5 --- /dev/null +++ b/homelab/photos/run.photofield @@ -0,0 +1,13 @@ +#! /bin/sh + +podman rm -f photos +podman run \ + --name=photos \ + --network=homelab \ + --cpu-shares=256 \ + -v /srv/sys/photofield/:/app/data \ + -v /srv/storage/fam/Photos:/srv/storage/fam/Photos:ro \ + -v /srv/storage/ginnie/Photos:/srv/storage/ginnie/Photos:ro \ + -v /etc/service/photos/photofield.yaml:/app/data/configuration.yaml:ro \ + ghcr.io/smilyorg/photofield + diff --git a/homelab/photos/run.photoprism b/homelab/photos/run.photoprism new file mode 100755 index 0000000..8af95a3 --- /dev/null +++ b/homelab/photos/run.photoprism @@ -0,0 +1,16 @@ +#! /bin/sh + +podman rm -f photos +podman run \ + --name=photos \ + --network=homelab \ + --cpu-shares=256 \ + --env PHOTOPRISM_SITE_URL=https://photos.woozle.org/ \ + --env PHOTOPRISM_AUTH_MODE=public \ + --env PHOTOPRISM_READONLY=true \ + --env PHOTOPRISM_HTTP_PORT=8080 \ + -v /srv/sys/photoprism/:/photoprism/storage \ + -v /srv/storage/fam/Photos:/photoprism/originals/fam \ + -v /srv/storage/ginnie/Photos:/photoprism/originals/ginnie \ + photoprism/photoprism:latest + diff --git a/homelab/pigallery2/run b/homelab/photos/run.pigallery2 similarity index 81% rename from homelab/pigallery2/run rename to homelab/photos/run.pigallery2 index c9309eb..06445b0 100755 --- a/homelab/pigallery2/run +++ b/homelab/photos/run.pigallery2 @@ -1,6 +1,6 @@ #! /bin/sh me=$(basename $(pwd)) -podman rm $me +podman rm -f $me podman run \ --name $me \ --network homelab \ @@ -8,5 +8,5 @@ podman run \ --volume /srv/sys/pigallery2/db:/app/data/db \ --volume /srv/sys/pigallery2/cache:/app/data/cache \ --volume /srv/storage/fam/Photos:/photos/fam:ro \ - --volume /srv/storage/ginnie/Photos:/photos/ginnie:ro \ + --volume /home/ginnie/Photos:/photos/ginnie:ro \ bpatrik/pigallery2:latest diff --git a/homelab/pigallery2/deergrove.png b/homelab/pigallery2/deergrove.png deleted file mode 100644 index 16817e6b3437f2e857ff4804ae1eb55530d3f17e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30184 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 R%onGMU3fE=kq#Seo*j@n;$2+m* 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 diff --git a/homelab/pigallery2/portal.json b/homelab/pigallery2/portal.json deleted file mode 100644 index 1cfe1d9..0000000 --- a/homelab/pigallery2/portal.json +++ /dev/null @@ -1,76 +0,0 @@ -[ - { - "title": "Storage", - "href": "https://drive.woozle.org/", - "icon": "https://drive.woozle.org/storage/public/icons/cloud-folder.png", - "target": "_blank" - }, - { - "title": "Photos", - "href": "https://photos.woozle.org/", - "icon": "https://photos.woozle.org/assets/icon_inv.png", - "target": "_blank" - }, - { - "title": "Git", - "href": "https://git.woozle.org/", - "icon": "https://git.woozle.org/assets/img/logo.svg", - "target": "_blank" - }, - { - "title": "Genealogy", - "href": "https://ancestry.woozle.org/", - "icon": "https://ancestry.woozle.org/images/arbre_start.png", - "target": "_blank" - }, - { - "title": "Movies", - "href": "https://deergrove.woozle.org/radarr/", - "icon": "/radarr/Content/Images/logo.svg" - }, - { - "title": "Episodes", - "href": "https://deergrove.woozle.org/sonarr/", - "icon": "/sonarr/Content/Images/logo.svg" - }, - { - "title": "Music", - "href": "https://deergrove.woozle.org/lidarr/", - "icon": "/lidarr/Content/Images/logo.svg" - }, - { - "title": "Books", - "href": "https://deergrove.woozle.org/readarr/", - "icon": "/readarr/Content/Images/logo.svg" - }, - { - "title": "Media Sucker", - "href": "https://deergrove.woozle.org/sucker/", - "icon": "/sucker/cd-dvd.svg" - }, - { - "title": "Searcher", - "href": "https://deergrove.woozle.org/prowlarr/", - "icon": "/prowlarr/Content/Images/logo.png" - }, - { - "title": "Usenet", - "href": "https://deergrove.woozle.org/nzbget/", - "icon": "/nzbget/img/favicon-256x256.png" - }, - { - "title": "BitTorrent", - "href": "https://deergrove.woozle.org/transmission/web/", - "icon": "/transmission/web/images/webclip-icon.png" - }, - { - "title": "3D Printer", - "href": "https://deergrove.woozle.org/octoprint/", - "icon": "/octoprint/static/img/logo.png" - }, - { - "title": "Host Stats", - "href": "/stat.html", - "app": "stat" - } -] diff --git a/homelab/plex/README.md b/homelab/plex/README.md new file mode 100644 index 0000000..07f8b57 --- /dev/null +++ b/homelab/plex/README.md @@ -0,0 +1,15 @@ +Notes To Self +============= + +You are probably going to have to re-claim the server again +at some point. + +https://support.plex.tv/articles/204281528-why-am-i-locked-out-of-server-settings-and-how-do-i-get-in/ + +This requires removing some entries from a config file in +/srv/sys. + +Plex wants you to connect to http://localhost:32400. +Use SSH port forwarding: + + ssh -L 32400:localhost:32400 sweetums.lan diff --git a/homelab/plex/run b/homelab/plex/run index 05294e3..c8fd1a3 100755 --- a/homelab/plex/run +++ b/homelab/plex/run @@ -4,7 +4,6 @@ podman rm $me podman run \ --name $me \ --network host \ - --tz US/Mountain \ --env VERSION=public \ --mount type=bind,src=/srv/sys/plex,dst=/config \ --mount type=bind,src=/srv/media,dst=/srv/media,readonly=true \ diff --git a/homelab/portal/portal.json b/homelab/portal/portal.json index d7577db..a050073 100644 --- a/homelab/portal/portal.json +++ b/homelab/portal/portal.json @@ -23,16 +23,16 @@ "icon": "https://ancestry.woozle.org/images/arbre_start.png", "target": "_blank" }, + { + "title": "TV", + "href": "https://deergrove.woozle.org/sonarr/", + "icon": "/sonarr/Content/Images/logo.svg" + }, { "title": "Movies", "href": "https://deergrove.woozle.org/radarr/", "icon": "/radarr/Content/Images/logo.svg" }, - { - "title": "Episodes", - "href": "https://deergrove.woozle.org/sonarr/", - "icon": "/sonarr/Content/Images/logo.svg" - }, { "title": "Music", "href": "https://deergrove.woozle.org/lidarr/", @@ -63,11 +63,6 @@ "href": "https://deergrove.woozle.org/transmission/web/", "icon": "/transmission/web/images/webclip-icon.png" }, - { - "title": "3D Printer", - "href": "https://deergrove.woozle.org/octoprint/", - "icon": "/octoprint/static/img/logo.png" - }, { "title": "Host Stats", "href": "/stat.html", diff --git a/homelab/samba/run b/homelab/samba/run index 82fdc32..b4ffce2 100755 --- a/homelab/samba/run +++ b/homelab/samba/run @@ -1,11 +1,10 @@ #! /bin/sh me=$(basename $(pwd)) podman rm $me +# You gotta use host networking to get discovery gubbins podman run \ --name $me \ - --network homelab \ - --publish 139:139 \ - --publish 445:445 \ + --network host \ --env NMBD=enable \ --env RECYCLE=disable \ --env USERID=911 \ diff --git a/homelab/skeleton/down b/homelab/skeleton/down new file mode 100644 index 0000000..e69de29 diff --git a/homelab/skeleton/run b/homelab/skeleton/run new file mode 100755 index 0000000..e9f7e1e --- /dev/null +++ b/homelab/skeleton/run @@ -0,0 +1,10 @@ +#! /bin/sh + +exec 2>&1 + +me=$(basename $(pwd)) +podman rm -f $me +podman run \ + --name $me \ + --network homelab \ + caddy:2-alpine diff --git a/homelab/sucker/run b/homelab/sucker/run index c19f5cb..8484360 100755 --- a/homelab/sucker/run +++ b/homelab/sucker/run @@ -6,7 +6,7 @@ podman run \ --device-cgroup-rule 'b 11:* rmw' \ --network homelab \ -v /dev:/hdev \ - -v /srv/ext/incoming/sucker:/incoming/sucker \ + -v /srv/incoming/sucker:/incoming/sucker \ --cpu-shares 256 \ --user 911:19 \ git.woozle.org/neale/media-sucker \ diff --git a/homelab/webfs/run b/homelab/webfs/run index 3bec13f..eb4d5fc 100755 --- a/homelab/webfs/run +++ b/homelab/webfs/run @@ -8,4 +8,8 @@ podman run \ --volume /srv/storage:/srv/storage \ --volume /srv/incoming:/srv/incoming \ --volume /srv/media:/srv/media \ - sigoden/dufs -A /srv + sigoden/dufs \ + --auth @/:rw \ + --auth neale@/:rw \ + -A \ + /srv