From 5345fffcde08f3bb2c9eb035c4873a4256311877 Mon Sep 17 00:00:00 2001 From: Joey Hafner Date: Thu, 7 Jul 2022 09:30:20 -0700 Subject: [PATCH] Update Homer --- .../config/calibre-web/docker-compose.yml | 22 ++-------------- homelab/server/config/homer/assets/config.yml | 24 ++++++++++++++++-- .../config/homer/assets/icons/librespeed.svg | 1 + .../config/homer/assets/icons/navidrome.png | Bin 0 -> 14936 bytes .../config/homer/assets/icons/wireguard.svg | 1 + 5 files changed, 26 insertions(+), 22 deletions(-) create mode 100644 homelab/server/config/homer/assets/icons/librespeed.svg create mode 100644 homelab/server/config/homer/assets/icons/navidrome.png create mode 100644 homelab/server/config/homer/assets/icons/wireguard.svg diff --git a/homelab/server/config/calibre-web/docker-compose.yml b/homelab/server/config/calibre-web/docker-compose.yml index 253256b3..db4edf70 100644 --- a/homelab/server/config/calibre-web/docker-compose.yml +++ b/homelab/server/config/calibre-web/docker-compose.yml @@ -30,7 +30,7 @@ services: labels: - traefik.http.routers.calibre-sff.rule=Host(`sff.calibre.jafner.net`) - traefik.http.routers.calibre-sff.tls.certresolver=lets-encrypt - #- traefik.http.routers.calibre-sff.middlewares=authentik@file + - traefik.http.routers.calibre-sff.middlewares=authentik@file,securityheaders@file networks: - web @@ -47,27 +47,10 @@ services: labels: - traefik.http.routers.calibre-ace.rule=Host(`ace.calibre.jafner.net`) - traefik.http.routers.calibre-ace.tls.certresolver=lets-encrypt - #- traefik.http.routers.calibre-ace.middlewares=authentik@file + - traefik.http.routers.calibre-ace.middlewares=authentik@file,securityheaders@file networks: - web - #calibre-web-dev: - # image: linuxserver/calibre-web - # container_name: calibre-web_dev - # environment: - # - PUID=1000 - # - PGID=1000 - # - TZ=America/Los_Angeles - # volumes: - # - calibre-web-dev_data:/config - # - /mnt/md0/calibre/dev:/books - # labels: - # - traefik.http.routers.calibre-dev.rule=Host(`calibre-dev.jafner.net`) - # - traefik.http.routers.calibre-dev.tls.certresolver=lets-encrypt - # #- traefik.http.routers.calibre-dev.middlewares=authentik@file - # networks: - # - web - networks: web: external: true @@ -75,4 +58,3 @@ volumes: calibre-web-rpg_data: calibre-web-sff_data: calibre-web-ace_data: - #calibre-web-dev_data: diff --git a/homelab/server/config/homer/assets/config.yml b/homelab/server/config/homer/assets/config.yml index 87687a67..fe208ea7 100644 --- a/homelab/server/config/homer/assets/config.yml +++ b/homelab/server/config/homer/assets/config.yml @@ -108,7 +108,7 @@ services: url: "https://bitwarden.jafner.tools" - name: "Uptime Kuma" logo: assets/icons/uptimekuma-512.png - subtitle: "Web monitoring dashboard" + subtitle: "Fancy self-hosted monitoring tool " url: "https://uptime.jafner.tools/dashboard" - name: "Xbackbone" logo: assets/icons/xbackbone.png @@ -240,12 +240,32 @@ services: - name: "Calibre RPG" logo: assets/icons/calibre-1024.png subtitle: "Calibre-web instance serving a collection of Dungeons & Dragons books" - url: "https://sff.calibre.jafner.net" + url: "https://rpg.calibre.jafner.net" - name: "Calibre Ace" logo: assets/icons/calibre-1024.png subtitle: "Calibre-web instance serving a collection of whatever Ace wants to put on it" url: "https://ace.calibre.jafner.net" + - name: "Navidrome" + logo: assets/icons/navidrome.png + subtitle: "Music library" + url: "https://navidrome.jafner.net" + + - name: "Librespeed" + logo: assets/icons/librespeed.svg + subtitle: "Speedtest for HTML5 and more" + url: "https://speedtest.jafner.net" + + - name: "WG Easy" + logo: assets/icons/wireguard.svg + subtitle: "Admin UI for Wireguard peer management" + url: "https://vpn.jafner.net" + + - name: "Uptime Kuma" + logo: assets/icons/uptimekuma-512.png + subtitle: "Fancy self-hosted monitoring tool " + url: "https://uptime.jafner.net" + - name: "Stash" logo: assets/icons/stash.svg subtitle: "Password-protected media vault" diff --git a/homelab/server/config/homer/assets/icons/librespeed.svg b/homelab/server/config/homer/assets/icons/librespeed.svg new file mode 100644 index 00000000..66bc5201 --- /dev/null +++ b/homelab/server/config/homer/assets/icons/librespeed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/homelab/server/config/homer/assets/icons/navidrome.png b/homelab/server/config/homer/assets/icons/navidrome.png new file mode 100644 index 0000000000000000000000000000000000000000..c2430c6261c9924f22fba30c01e9c95d29060f0e GIT binary patch literal 14936 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 \ No newline at end of file