diff --git a/hosts/idols_kana/homepage/README.md b/hosts/idols_kana/homepage/README.md new file mode 100644 index 00000000..3a792589 --- /dev/null +++ b/hosts/idols_kana/homepage/README.md @@ -0,0 +1,4 @@ +# Homepage for my Homelab + +> WIP, just a demo for now + diff --git a/hosts/idols_kana/homepage/config/bookmarks.yaml b/hosts/idols_kana/homepage/config/bookmarks.yaml new file mode 100644 index 00000000..c1f13c92 --- /dev/null +++ b/hosts/idols_kana/homepage/config/bookmarks.yaml @@ -0,0 +1,9 @@ +--- +- About Me: + - Blog: + - abbr: Blog + href: https://thiscute.world/ + - Github: + - abbr: GH + href: https://github.com/ryan4yin + diff --git a/hosts/idols_kana/homepage/config/docker.yaml b/hosts/idols_kana/homepage/config/docker.yaml new file mode 100644 index 00000000..bec469aa --- /dev/null +++ b/hosts/idols_kana/homepage/config/docker.yaml @@ -0,0 +1,3 @@ +kana-docker: + socket: /var/run/docker.sock + diff --git a/hosts/idols_kana/homepage/config/kubernetes.yaml b/hosts/idols_kana/homepage/config/kubernetes.yaml new file mode 100644 index 00000000..8769d869 --- /dev/null +++ b/hosts/idols_kana/homepage/config/kubernetes.yaml @@ -0,0 +1,7 @@ +# https://gethomepage.dev/latest/configs/kubernetes/ + +# uses the default kubeconfig to access the cluster +# read kubbecofig from $KUBECONFIG or $HOME/.kube/config +mode: default + + diff --git a/hosts/idols_kana/homepage/config/services.yaml b/hosts/idols_kana/homepage/config/services.yaml new file mode 100644 index 00000000..cc2b74d5 --- /dev/null +++ b/hosts/idols_kana/homepage/config/services.yaml @@ -0,0 +1,73 @@ +- Proxmox VE 虚拟化集群: + - PVE-UM560: + icon: si-proxmox + href: https://192.168.5.173:8006/ + description: 'CPU: R5-5625U / MEM: 32G / DISK: 512G+4T*2' + siteMonitor: https://192.168.5.173:8006/ + + - PVE-S500Plus: + icon: si-proxmox + href: https://192.168.5.174:8006/ + description: 'CPU: R7-5825U / MEM: 64G / DISK: 1T' + siteMonitor: https://192.168.5.174:8006/ + + - PVE-GTR5: + icon: si-proxmox + href: https://192.168.5.172:8006/ + description: 'CPU: R9-5900HX / MEM: 64G / DISK: 1T' + siteMonitor: https://192.168.5.172:8006/ + +- Homelab Monitoring: + - Grafana: + icon: si-grafana + href: http://grafana.writefor.fun + description: Data visualised on dashboards + siteMonitor: http://grafana.writefor.fun + - Prometheus Dashboard: + icon: si-prometheus + href: http://prometheus.writefor.fun + description: Monitoring - Prometheus + siteMonitor: http://prometheus.writefor.fun + - Uptime Kuma: + icon: si-uptimekuma + href: http://uptime-kuma.writefor.fun + description: Uptime Checking + siteMonitor: http://uptime-kuma.writefor.fun + +- Homelab Applications: + - Home Assistant: + icon: home-assistant.png + href: "http://homeassistant.home/" + description: Home Automation + server: kana-docker + container: home-assistant + + - SFTPGO: + icon: sftpgo.png + href: "http://sftpgo.writefor.fun/web/admin/folders" + description: WebDAV & SFTP server + server: kana-docker + container: sftpgo + +- Kubernetes Monitoring: + # TODO: Update this + - Emby: + icon: emby.png + href: "http://emby.home/" + description: Media server + namespace: media # The kubernetes namespace the app resides in + app: emby # The name of the deployed app + + - Element Chat: + icon: matrix-light.png + href: https://chat.example.com + description: Matrix Synapse Powered Chat + app: matrix-element + namespace: comms + pod-selector: >- + app.kubernetes.io/instance in ( + matrix-element, + matrix-media-repo, + matrix-media-repo-postgresql, + matrix-synapse + ) diff --git a/hosts/idols_kana/homepage/config/settings.yaml b/hosts/idols_kana/homepage/config/settings.yaml new file mode 100644 index 00000000..9f3c0951 --- /dev/null +++ b/hosts/idols_kana/homepage/config/settings.yaml @@ -0,0 +1,71 @@ +title: Ryan Yin's Homelab +base: http://home.writefor.fun/ +favicon: https://thiscute.world/favicon.ico + +# https://developer.mozilla.org/en-US/docs/Web/Manifest/start_url +# Used by some browsers to determine the start page of the web application +startUrl: http://home.writefor.fun/ + +language: zh + +background: + image: /images/rolling-girls.png + blur: sm # sm, "", md, xl... see https://tailwindcss.com/docs/backdrop-blur + saturate: 50 # 0, 50, 100... see https://tailwindcss.com/docs/backdrop-saturate + brightness: 50 # 0, 50, 75... see https://tailwindcss.com/docs/backdrop-brightness + opacity: 50 # 0-100 + +theme: dark # or light + +# Supported colors are: +# slate, gray, zinc, neutral, stone, amber, +# yellow, lime, green, emerald, teal, cyan, +# sky, blue, indigo, violet, purple, fuchsia, pink, rose, red, white +color: indigo + +# make all cards in a row the same height. +useEqualHeights: true + +# Groups and its layout +# Groups Name should match the name defined in your services.yaml or widgets.yaml +layout: + Proxmox VE 虚拟化集群: + icon: si-proxmox + tab: First + + Group A: + initiallyCollapsed: true # collasped by default + tab: First + style: row + columns: 4 + + Second Service Group: + useEqualHeights: true # overrides global setting + tab: Second + columns: 4 + + Third Service Group: + tab: Third + style: row + + Bookmark Group on Fourth Tab: + tab: Fourth + + Service Group on every Tab: + style: row + columns: 4 + +# https://gethomepage.dev/latest/configs/services/#icons +# iconStyle: theme # optional, defaults to gradient + +# Typing in homepage to quick search +quicklaunch: + searchDescriptions: true + hideInternetSearch: true + showSearchSuggestions: true + hideVisitURL: true + +# Show docker stats +showStats: true + +hideErrors: false diff --git a/hosts/idols_kana/homepage/config/widgets.yaml b/hosts/idols_kana/homepage/config/widgets.yaml new file mode 100644 index 00000000..e9dfc6e5 --- /dev/null +++ b/hosts/idols_kana/homepage/config/widgets.yaml @@ -0,0 +1,21 @@ +- kubernetes: + cluster: + show: true + cpu: true + memory: true + showLabel: true + label: "cluster" + nodes: + show: true + cpu: true + memory: true + showLabel: true +- resources: + backend: resources + expanded: true + cpu: true + memory: true +- search: + provider: duckduckgo + target: _blank + diff --git a/hosts/idols_kana/homepage/default.nix b/hosts/idols_kana/homepage/default.nix new file mode 100644 index 00000000..d0080490 --- /dev/null +++ b/hosts/idols_kana/homepage/default.nix @@ -0,0 +1,24 @@ +{pkgs, ...}: let + configDir = "/var/lib/homepage-dashboard"; +in { + # https://github.com/NixOS/nixpkgs/blob/nixos-unstable/nixos/modules/services/misc/homepage-dashboard.nix + services.homepage-dashboard = { + enable = true; + listenPort = 8082; + openFirewall = false; + }; + systemd.services.homepage-dashboard.environment = { + HOMEPAGE_CONFIG_DIR = configDir; + + # 1. The value of env var HOMEPAGE_VAR_XXX will replace {{HOMEPAGE_VAR_XXX}} in any config + # HOMEPAGE_VAR_XXX_APIKEY = "myapikey"; + # 2. The value of env var HOMEPAGE_FILE_XXX must be a file path, + # the contents of which will be used to replace {{HOMEPAGE_FILE_XXX}} in any config + }; + # Install the homepage-dashboard configuration files + system.activationScripts.installHomepageDashboardConfig = '' + mkdir -p ${configDir}/config ${configDir}/images + ${pkgs.rsync}/bin/rsync -avz --chmod=D2755,F600 ${./config}/ ${configDir}/config/ + ${pkgs.rsync}/bin/rsync -avz --chmod=D2755,F600 ${./images}/ ${configDir}/images/ + ''; +} diff --git a/hosts/idols_kana/homepage/images/rolling-girls.png b/hosts/idols_kana/homepage/images/rolling-girls.png new file mode 100644 index 00000000..b1140344 Binary files /dev/null and b/hosts/idols_kana/homepage/images/rolling-girls.png differ diff --git a/hosts/idols_kana/oci-containers/dashy/dashy_conf.yml b/hosts/idols_kana/oci-containers/dashy/dashy_conf.yml deleted file mode 100644 index 3602d842..00000000 --- a/hosts/idols_kana/oci-containers/dashy/dashy_conf.yml +++ /dev/null @@ -1,251 +0,0 @@ -appConfig: - theme: crayola - layout: auto - iconSize: large - language: cn - startingView: default - defaultOpeningMethod: newtab - statusCheck: true - statusCheckInterval: 0 - backgroundImg: https://thiscute.world/posts/revolution-and-innovation/rolling-girls.webp - faviconApi: allesedv - routingMode: history - enableMultiTasking: false - widgetsAlwaysUseProxy: false - webSearch: - disableWebSearch: false - searchEngine: duckduckgo - openingMethod: newtab - searchBangs: {} - enableFontAwesome: true - enableMaterialDesignIcons: false - hideComponents: - hideHeading: false - hideNav: false - hideSearch: false - hideSettings: false - hideFooter: false - auth: - enableGuestAccess: false - users: [] - enableKeycloak: false - showSplashScreen: false - preventWriteToDisk: false - preventLocalSave: false - disableConfiguration: false - allowConfigEdit: true - enableServiceWorker: false - disableContextMenu: false - disableUpdateChecks: false - disableSmartSort: false - enableErrorReporting: false -pageInfo: - title: This Cute Micro Cluster - description: 欢迎进入 ryan4yin 的 Cute Micro Cluster 主页,在这里你能找到许多有趣的玩意儿哦 - navLinks: - - title: GitHub - path: https://github.com/ryan4yin - target: newtab - - title: Blog - path: https://thiscute.world/ - target: newtab - - title: Dashy Docs - path: https://dashy.to/docs - target: newtab - footerText: 做更多有价值的东西,赚更多的钱,也帮助更多的人。 -sections: - - name: Proxmox VE 虚拟化集群 - icon: si-proxmox - displayData: - sortBy: default - rows: 1 - cols: 1 - collapsed: false - hideForGuests: false - items: - - &ref_0 - title: PVE-UM560 - description: 'CPU: R5-5625U / MEM: 32G / DISK: 512G+4T*2' - icon: si-proxmox - url: https://192.168.5.173:8006 - target: newtab - provider: Proxmox - statusCheck: true - statusCheckAllowInsecure: true - id: 0_153265_pveum - - &ref_1 - title: PVE-S500+ - description: 'CPU: R7-5825U / MEM: 64G / DISK: 1T' - icon: si-proxmox - url: https://192.168.5.174:8006/ - target: newtab - provider: Proxmox - statusCheck: true - statusCheckAllowInsecure: true - id: 1_153265_pves - - &ref_2 - title: PVE-GTR5 - description: 'CPU: R9-5900HX / MEM: 64G / DISK: 1T' - icon: si-proxmox - url: https://192.168.5.172:8006 - target: newtab - provider: Proxmox - statusCheck: true - statusCheckAllowInsecure: true - id: 2_153265_pvegtr - - &ref_3 - title: Orange Pi 5 8G - description: 'CPU: 8C / MEM: 8G / DISK: 128G' - icon: si-raspberrypi - url: ssh pi@192.168.5.191 - target: clipboard - statusCheck: true - statusCheckUrl: https://192.168.5.191:10250 - statusCheckAllowInsecure: true - statusCheckAcceptCodes: '404' - id: 3_153265_orangepig - filteredItems: - - *ref_0 - - *ref_1 - - *ref_2 - - *ref_3 - - name: K3s 容器化集群 - displayData: - sortBy: default - rows: 1 - cols: 1 - collapsed: false - hideForGuests: false - items: - - &ref_4 - title: k3s-main-master - description: control-plane + master - icon: si-k3s - url: ssh ryan@192.168.5.181 - target: clipboard - provider: Rancher - statusCheck: true - statusCheckUrl: ' https://192.168.5.181:6443' - statusCheckAllowInsecure: true - statusCheckAcceptCodes: '401' - id: 0_138418_ksmainmaster - - &ref_5 - title: k3s-data-1-master - description: worker node - icon: si-k3s - url: ssh ryan@192.168.5.182 - target: clipboard - provider: Rancher - statusCheck: true - statusCheckUrl: https://192.168.5.182:10250 - statusCheckAllowInsecure: true - statusCheckAcceptCodes: '404' - id: 1_138418_ksdatamaster - - &ref_6 - title: k3s-data-1-worker-1 - description: worker node - icon: si-k3s - url: ssh ryan@192.168.5.184 - target: clipboard - provider: Rancher - statusCheck: true - statusCheckUrl: https://192.168.5.184:10250 - statusCheckAllowInsecure: true - statusCheckAcceptCodes: '404' - id: 2_138418_ksdataworker - - &ref_7 - title: k3s-data-1-worker-2 - description: worker node - icon: si-k3s - url: ssh ryan@192.168.5.186 - target: clipboard - provider: Rancher - statusCheck: true - statusCheckUrl: https://192.168.5.186:10250 - statusCheckAllowInsecure: true - statusCheckAcceptCodes: '404' - id: 3_138418_ksdataworker - filteredItems: - - *ref_4 - - *ref_5 - - *ref_6 - - *ref_7 - - name: System Monitoring & Control - icon: fas fa-monitor-heart-rate - items: - - &ref_8 - title: Grafana - description: Data visualised on dashboards - icon: hl-grafana - url: http://grafana.writefor.fun - target: newtab - statusCheck: true - statusCheckAllowInsecure: true - id: 0_2578_grafana - - &ref_9 - title: Prometheus Dashboard - description: Monitoring - Prometheus - icon: si-prometheus - url: http://prometheus.writefor.fun - target: newtab - statusCheck: true - id: 1_2578_prometheusdashboard - - &ref_10 - title: Uptime Kuma - description: Uptime Checking - icon: hl-uptime-kuma - url: http://uptime-kuma.writefor.fun - target: newtab - statusCheck: true - id: 2_2578_uptimekuma - displayData: - sortBy: default - rows: 1 - cols: 1 - collapsed: false - hideForGuests: false - filteredItems: - - *ref_8 - - *ref_9 - - *ref_10 - - name: Productivity - icon: fas fa-bookmark - items: - - &ref_11 - title: Cloud IDE - description: Eclipse Che - Cloud IDE - icon: hl-code - url: https://ide.writefor.fun/ - target: newtab - statusCheck: true - id: 0_1302_cloudide - filteredItems: - - *ref_11 - - name: Media & Entertainment - icon: fas fa-photo-video - items: - - &ref_12 - title: Home Assistant - description: Smart home control - icon: hl-home-assistant - url: http://ha.writefor.fun:8123/ - target: newtab - statusCheck: true - id: 0_1956_homeassistant - - &ref_13 - title: SFTPGO Web Admin Console - description: WebDAV & SFTP server - icon: http://sftpgo.writefor.fun/static/img/logo.png - url: http://sftpgo.writefor.fun/web/admin/folders - target: newtab - statusCheck: true - id: 1_1956_sftpgowebadminconsole - displayData: - sortBy: default - rows: 1 - cols: 1 - collapsed: false - hideForGuests: false - filteredItems: - - *ref_12 - - *ref_13 diff --git a/hosts/idols_kana/oci-containers/dashy/default.nix b/hosts/idols_kana/oci-containers/dashy/default.nix index 49338144..b43feac8 100644 --- a/hosts/idols_kana/oci-containers/dashy/default.nix +++ b/hosts/idols_kana/oci-containers/dashy/default.nix @@ -1,24 +1,26 @@ { - # Install the dashy configuration file instaed of symlink it - system.activationScripts.installDashyConfig = '' - install -Dm 600 ${./dashy_conf.yml} /etc/dashy/dashy_conf.yml - ''; + # Replace dashy with gethomepage, because dashy is too slow to start/reload. - # https://github.com/NixOS/nixpkgs/blob/nixos-23.11/nixos/modules/virtualisation/oci-containers.nix - virtualisation.oci-containers.containers = { - # check its logs via `journalctl -u podman-dashy` - dashy = { - hostname = "dashy"; - image = "lissy93/dashy:latest"; - ports = ["127.0.0.1:4000:80"]; - environment = { - "NODE_ENV" = "production"; - }; - volumes = [ - "/etc/dashy/dashy_conf.yml:/app/public/conf.yml" - ]; - autoStart = true; - # cmd = []; - }; - }; + # # Install the dashy configuration file instaed of symlink it + # system.activationScripts.installDashyConfig = '' + # install -Dm 600 ${./dashy_conf.yml} /etc/dashy/dashy_conf.yml + # ''; + # + # # https://github.com/NixOS/nixpkgs/blob/nixos-23.11/nixos/modules/virtualisation/oci-containers.nix + # virtualisation.oci-containers.containers = { + # # check its logs via `journalctl -u podman-dashy` + # dashy = { + # hostname = "dashy"; + # image = "lissy93/dashy:latest"; + # ports = ["127.0.0.1:4000:80"]; + # environment = { + # "NODE_ENV" = "production"; + # }; + # volumes = [ + # "/etc/dashy/dashy_conf.yml:/app/public/conf.yml" + # ]; + # autoStart = true; + # # cmd = []; + # }; + # }; }