ipv6 cluster initial commit
All checks were successful
Validate Kubernetes Manifests / kubeconform (push) Successful in 1m3s

This commit is contained in:
2026-01-04 07:08:20 +05:30
parent 12d4af9cd8
commit 9aabad8216
179 changed files with 16997 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
---
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
name: homepage-secrets
namespace: monitoring
spec:
encryptedData:
ALLOWED_HOSTS: AgChqXwOFgFhPfa2mILpIFA4xfkqEb+QSnOzhsB4xkmfUpFc4TqHgCBt094kJzL8O5k874FGe2A0EfQ6R/EtHXkndnHcM6uLzW/QbmSvalFyAgb0pCyln45Kv02wo90q0GB2YBoLgJ6ow9Kleju9aLjbSXcPrYxGZrGT2/ckFI1PF7WS4avvFUIRqSbR+VDRVfNW2G1kjyNWzubZ+t3MRKIrIsDynJFOM4FVn/uKZa1VgaEC38iJek9ciH/WrswZXYFLymlzJGAjswURFx9df3FvPDg7rZ6OdSSq1iiJkH3BhaUr/2FBw8/WkZ4HfcFtxdsagZBlzGDWm4/Y2fBM/dFByh3MZ+Jv+WH5BPpLoY87ERNPddxeK2RDnVdiPMGvSqEnk9nhyUEbxAgYNEyQyXmswNUFQg6EJQ2wgg6K+pOxNPvzuC4qI9ZYEgnU8M8DTrDDd+Sy+3YL3hnETGhjsqYnOpaH0h7iYd6tQImEC9gtWtvySrwYq3dwjZVoYT9QydZnMmWZakcTh/U9VPYfecx1pz9+gSRkfS9ISfUvfbFdR1a9TFx2VIaQh4b3/Aqhxi9mhQICLFcssM3wjkBHcOu3AEL8eASRJ73PbmKQ9Sllw3oEdLJbPR5MA+s6VzlKB07uFRepgaECQrfPMiaYM1qH3syqTlbedBxL+NlGHk0+uWkKiFzpZlKLwhvCMbdcGimI2YypqvIWIR6AVj3SrHckS9g=
BAZARR_API_KEY: AgAtsYLFHfD6zjH+HYtNXUXCEcg36/Yc0U/lmxiskTmiNPuFtYLHAZVP5y4jYCobitPqJCZ1VZByYQFRQPm8NhIGDokGnw7JPxY5yAo0kg9wSaLZd3vStNTKMsVOxIbc79WR46apoZDna/jClPXpB4tflV94ENSBLsHrXypi4tnZrqv1/RZl2MY3LNcgXzwLnuGAC6d7lDMeJbMGGVuAK94M4kdMfHhb1/sQsqNQkJ7VbIAbZQFFEx3cd0Oyq2p0mE2efcxbciggMCXKJM8X0wtFbahjeV42n/zZLZURrI03pjX6hHbcyGjpKUup2krXl4XMbweHpenPRI2FMvYnG3JhVV+DE5AKdYfVMY0Xm3Vgcv9Q8D7vq06HyRtrAlBtlJv3MNpyLxk4/X0Ngdlg+0wCKrgixtk5OxqJSqmwWR18MsGtgSwX8/lPpvr7nxwHaUTCV/WLaQGyzAOKJoHyfGWdLrlHu7LR94hEkxui72it8o+fiasp7WhI8H9+s/gENFNjBW9Acw+5WmivmA+ivV6/jjXgu1lyqINhZpDWbT/HL/Skf28JZZ4E1p1FJ+a6HTa/inb3o4s50ueLOGVS0QuFDZIqNQwtStZHrkNsUHZb5/VBxHAcNQyAEw+ZEx7mLpwcfM4BBR/HcPQlrPQlwbqjp6P74FscZOrmW18F+EzF82EPLao31BdBBYckhN+vVlc703lnTpDaJJPrZ06/6jWXS91uxM8r4j/DG/xQ1KzUFw==
DOMAIN: AgCMoXYx4U5m4qpyMTl0cimsMntmEbCveeKiNY22hTpk/vzl6+ibSVruy+Ik391UZxGexSo/1TYfYe6yy4hm2voVFJHTT4h/DU7piiv9Pwqwhj0Xy2pu0AGRMTbN8bI7cKYdzzsmRhXwu4ySsKxqLPkqP/KpFc7OdUMm2gVbm8nT3+J5L8LUZFVDk3W3wNd1qn7wKXoyJu1xOuZG3gs+tJDD86Tyc7ID4kEPUDFIXWOML1EMuQzaCq3aLox0aFtrTfVSIoxWal43w9yK9Bx9W/v2xO6Mu/rMsz+AR5SEsgBfv5BkrsidW8hxbczxwiL9HiBLjW7jdiWHkpd/yrtlBTXQAfJF9SEfjkkaLoqIT0xgqpCFtom8VAc/rYgbVHhkmD7kwEN4EqXOs5F/0R9GKW8wxaY5oIcG+9btRd63bGanAAfSPTKNpRKm38rpckf+p0JJmA20mm+h0FG/GqpFPmoRY2GjH+XlDKPY4T1eYLbOnRP2Ce/uhaWKTRqxlESrMPjk//Nxu248fWkuqA0NpDaOtAFVV0wDLT2B0Pw9Na1Jj1n2PbOu8Yi+kiEYwk9tocJOztC1f8sLVUqZ+VJRRoGIzuJUrWbL0/CEOCz8BL6F6BG3/kiPm49cJX/rI5Q26FjCNChT9uhdUwVGFlnrwdSB6bE1jhmU8faW56nE4SPhnGPOhZdjgczkAIUR5hmGzuCM0T3B+fCQ1kw2sp39
GITEA_API_KEY: AgB+vahqqcrA+gl3vfMV4wh8LTxFCoB1fQ397dtbmhsJlUsJL4MobADltI7EJWQeo8MSD2uNojA2abxqoO2sV35lXqiJlYX7s/dIlHlrarSFcEdg9BqFzBDGg0AWCKUv3933QPVi/yxf7BDerMznEoAcQUakUGNwoGeAEEQPxhz6X/bQhQg/FFTl0tr3kG78GSHwSWZ4NXcwGbkvaA4qi6elSIP3GVKPJ2OYpAu5AngFjyLcy3jgnTp6D0e99P+T00bTdG6awruJhvnl/El5EM/2Nuw9BMcdRS+8xFWYohJUutpkXQHSuFLi3awp4sbWzsKgrKgjSmkeSTo6ar1s51bh2XC230TdQAm4mwEzS/nslvUm5VYA8n8Wy0nLJJr398lGMebyoLql/esPny3bvNMVDraRCxirKIMgtd0po75SUZb/dszAe70UbqvjxLqfV7XpRIc+ic0rg/rY9HYTL44TqOCxMzByLD+7S8y52ksXT7bnvkZpNXzToU78XXAe/6ifDim+P6vuKyjCoyttqKYbutEdlBZFiu3hQhqtjPQJAlYkGJayGGDXunUjCnb8+9CdGpbkoNMPecgGw49wUSflHXkv7iza8mi9lyH05vXx54yxFS9W6nwA9cG73yB2ZZmGTnc101/iaQumUnBL2Bm9yWBxyFW+0Xmxj1q4w9FsrjwuWaRhQOGq4JXkG+GQfD3K7KbWNKlc2tza4U4a6S7yEF3RrdflxLIY+B2sTWIDJjAwRgflFjA3
IMMICH_API_KEY: AgBv4abjnF4sU8IaMHJbJtxcrShZyg6B/W24F/+RAcobj2YEaH8cRxFC7y8eb/BDn9g+1RO0MErpoTg373+/ZNbkRe1y1vcc8kUZvzVWp+ckZM13CaJOArsX0F0LjPIqe35XjZRJAjENf1DwkzrnXlY6DHiv24JiNtl4XoVl3Ntuwm6iHcsb5328YIDaHlaEkHf5yIozWqG8aa0ndiXF6QkPAyMfUKBsU7jl82FD4jVs2KyIiRcznoju1JMrZYLZx1xyftAE4ct9QARPD+zCIq5zCgIdPvCWetxpCS+4Y98pFlqSOrg5vCH7EGqZ1INpfEKamTnkHV4Jm4qr1e9QiKC2Z5Jikrg4sjWtDB8neEGocKpARZe2uPf9HMxhp294+PM4CW7kBDrrzns6iDpEwwEtFADLciStfazArh96qITfKOE4xE/4dFKIf4CVacPnW2+i653zFdepwVNdazD1THskMK6PFwikgrnVvcTmrXz0REwp0I54YkhFn/4xkTPhkJ7hs0ZVotkeNRes+9K8eG6fZZbmEeOYubwa6l+S3CQDkmM4R7Bc4g8oIA+2qchHwe6T7Jg8YeDWWYFu63hWk8sWDqzK/LHahmK3jZR68uMcl4t74zBSxi0FqEthnV27vyMkmWo53RIvxyXMwSiAEClVOo2MJ4UZUg43B4L+iAjAltCiH4LbPBjL5GaNdLq1vDjURMg3ZZ7QpCLLHvrSBr5JXNXD7eTFpSn/YQGTt1hPBMb0gZXUwsg107A=
JELLYFIN_API_KEY: AgAd1Mxud758Cuuembyu0tpjBp5TYfd6IS/HxHFi+ZVhi5EpJELPFcHcdugTEyFx+TOMYyUewwfz3Ng/CpfvKp2te9cwEwBSt4Pa9qbTN93OlFccQH54S+Q0IDlHxbmcKpzED7RPg2msXTUbjw6A5clb7IZ7oDiELqFC4XSxdtuUvY2GexzUyC+f40/sSk/FXp7QGNxA6ewOaiMOsw0Q8cczxx2XsE6XyZuazOgJeBzOhg6TL6x+mIpDASETZYpaUpIvi4VfTb9oFcp2ZvwbkA2TcObgo5skltOm8dO7JKiTAxxelITHZpQX12tQXRJHHNOtVubryICqX07jI/oI/dYXL5wLUaqL2oFehWLhnep+iBlSgy4NGbx3qGc9DrR2W4llPVATOROhgFDrgVZ3IQ8dtESq4koweKj8GrRKmH6uDA6GtvvtCCcHC71i4mCI8ixxGu3W+IxPzR9VYOrOR1ma7eGDec5cM9Cm/U/FEQmFnBQtWMXQDmPBfhRpz2NGLccG/w+tEw8I/dAu6khdmNiMmnqk7jGit1iXs2Nxq9H8EukvNpzZTR8TDxtCZMHLJhkS+XhZeHYVgUEIZfM6/UJ8R0CmcM4XOl+3L3rnFWV07SC61kP7qYw6wjyoNc2C47PpzKoXvLvX0483mM+ESdrC443Y8Ne67/Y9yCyNJtD0PYEDW17RcrRfeggM1fsk/J6vZ0bs4dPPDQ2oyhyW4pZfno7AG2nNdD2A7YPrs2ZigA==
JELLYSEERR_API_KEY: AgC0nxj7krR8L2MrlyLFoMqXybuM5c0Qtt+RJxNq38MvmYJv+3lPlYC9Dqj5gWJQ/bR8FdPjjFvsHakHqIGzWNLPDMhWqGxK+nG8kuEWgpe5BkLbVKmI8d28XsFeyU9NS8ujUNoFuciiPuA7VSh3bSHNKT7IjskLSUBSSZysc+LoUQRNWPAHhgsDOILnDbvykyDVy7ZXgWkb/l8uIq5MZw0qmohMERWkbKeyv9iz2F3Xzdm85MeqNld5rxEEcAdZAmjr5Hj/dyIO7Ry3K9y5MgCb+VOVLN2WGzY+afGef47UUm7mu5StOkgBpSt87bCF22eFJhGMMgZRLuhYb14fpT4D+s9lrEqrWoc9MJKuJtPrw+tfNsmxYBHlnx8odKvN5dk4Oj/2btVgocOCU6dzr80CVvhlY6OYwljBIkU4KiqO1k6RFj9HvLGox5MqdU7dhU/bSnust1Fwv5Ec+R0tm+ySfae0fNCrkws7SUxfCfkVDjP/Hr1+7zSjzYyYOdo2UQgle5JA50TX7njZajfbC8PezDCMyLG6KexTLKf5DumF6Xp7SUjFXZeriFMc24rWfW8+X+/dSM5Dlrg7XgX9yYp8N5i9jLbYOAAEbt3dbWf5saMSgcmNZBSnOeOfSckFyr+vWrtz252v5WobqxnBQwlLdn+5iqiCNn4qh0OC1VpARzfL6aZCNdvIcCbpiA3EzEIu2l2RSMilYi0oVzX1qKKlVvGpJ9EP1S8s/sx1IPCQ//agjRxDQ2u1hzfO3O00MxHPUa84OX0+6rVttJHP25ULeoFTpw==
NEXTCLOUD_PASSWORD: AgBC9sEPqKpbnWxHUe5eotqlrs74TFD31a9cVRXYbervTOMgaE+63Ctz/jmjc6HOYwHmatlOYAsXo0G9cgDqYw38V9Mg2cuE0qu72b7yPDqGsS82rYAVR5SotEnotusA0ZuLmbtp9k/TuCjq0e/3FBUddvL7x+XY2n4aqLM6gLSfigmdqHOYZvp51a7yeHXHl4nubycL/fcqx6EdprQGIz5NmfDh1MKnLx7YxP87ekFr1JOepZFat5r2dxnR4cM7niuWT5iuOBOBgEzgwE0bPzH9N4k7hCQ6Wdv9mMArJL258N8NcJ6stQWqHFzcoZcAkWfIzkdl4ZUlloiVnF0Jpg7dhUmz61QbJj5Ya8QJanRvnw/2CTPZShwXESy4g+qhIGaqkAJAOk4y+xPFLCwhzpnDnh2laAbWUo9n39OY5OsJfCEKmpTnWiBi+xG+ySP+DhgzIFG40JVjUWJRnW5fWPA3cYVUhy1MxebaPA0GojexPgh7CLb1rOzuLVf/DW7MQcJXeQf5Kv2BV8L4M9bC7VWvDvaABY7dOzPHe6Kl5IC4CcaxEjMDrrlAn6NLJ/Citw13dvpNplH6Y4fVGeVy2F3qFPgNCo8y8UzJapaEIrN+SoOGZQnGXszQhkWvmIK296BBLHmm9MuhqWr/SibUsmhntYgjIKnN0i9Jf+G7O82WcpXNtQeMItKEKVniC8VYgJ3UWheORuIczFCMuA==
PIHOLE_API_KEY: AgBpOuHPtz0gjHK7ExvYkXSFRPdbWVcfQOmRAiKJeQgw7n89X6uTXv6v8bYi4COqDORqx7a8ReGP8uPH0qxUirH+1zr2sRj3oRYCow8OBfGr/5f8ski0V6eHVeufl26xDCZ4xQ8/KDI5hBjlN/Dsnq0AIOXxufGLjybEJ7lw/KwzdK+NCc9uW3AL93UTwx54iHFw7JEi5ICSJkLysLsIEF4QtcCMAW+opMW8Dm6utnx3pQ1u1VDWdgCyaLgIHfgLBEcHjhjf8or1kD5eEmk8BN48b1TJ2qs19J4Dwh5jwrCG9JvoaapZkhkEEuJVKZmWdBG2xwdlNFV8oXZZCzJwap4Z/J7a8gqFNi7OL1avicAGuBNwnyZZnGeLkURAjm9VSlMuJ5KQgu0kg3A0WOpcSxTYpeaAb+IFm7H8IV6VjILUkNSB65BA6DTipeU6R2vMZBlOpIH/8sYjWeCkMzueYEQ2iyzeqDYxIrNjE2XN2XNrndxlZF2i4KKcovyzFLOLErq7M254CWlRK8YNNY8P9LVsXIuBppmzO+e30rGFqxfxnBa/i/aTq3VjtCltD5OrQU1YEz43HEdBWilVgny0CahsedyYk4zoTvLu5KLE6uxRDO+sFTnQ4f7gHIIqDMmrj+ppTu6U3jcg9BSoc4irvIp8uqzdj3FtDvBboFKXLIQNymc2kItUhxfqwXTpkVypdSgIFTF7koJ5f+6N
PIHOLE_PASSWORD: AgAMdfpQKS5R7npY9jkqh62dWVC+G1yH58qyzbEkNKEetrbQEdZ1GKDa2QUntkxgA/HbvW0XIpcHQVcNTqsmv+9nRr2iDuHg2CuR115p1vkAt4ETrcC9G9J80Zp8DyRssF7HdaGY+mpYmgUfMqcPydwOBuejvA9oy0M2Jvl1rPjhvJHe5XW68UPyPrSehvbS94gYbGHw8IC5z1u0HSy8n40/1pHz/JwBlMaVwXq2EPZ2yhBf/TWmM1+ghyvF5wGvqeXZRWybPG+Cb2p6NynPk4MT2voa4CQWIB1XEhgQ7Q0sDs+Fv9yvLjmU26Z7pawWRtUTRHtgkzchXhzTuh+uNc7j+4BJ6pWE/8Bw52TOZgpJQA/tPNyHGkDqSTokxmh0ojFyAQkbCPECrS2c8t5pRPZXgGWZGAhL7tz49ydgSN7CWszQpHOJN8tBHv7r2xRO7wegLQZoMZVX/oJu096PopG66tpfuLCoGzdzAtDxmuRQIjgUGJj35qUAIaGZU5oxNnxPAZTYBkHr9TqDa4TA6JAx9Ir49f+GHwk4Xe3CrLNBAJCQ+4K+3aydo23orwpBz+UGTJO7c/RLG88z5+7veKthS3hLlIy+UOPVjCLc89UIUxQ3ka6V9KRkpQyfKAJ53d26kArGCTthiKUPLT6yc5OxvCdZUaldOnO6AkdYIwHvaUiRDlIO+Snzq0A73mhSCF748AB3jducKUnD5A==
PROWLARR_API_KEY: AgBwL1sojHshPWbelnrpiUjt+Ud9DGslBmCK38F/zP99zbmTOb7RbTXSFME0o0oU0C4TUI32r9blxyoGJJLjwoTM4G0MBUfjYy6Tqz9L+l1wp7uet75KgKmJZbpkJ2ObSR37qC8b84EIiDSRmbTPHQCKdkCFClrX6Zn1NCqtTvwECeyFKWBsSl9KUMRUvPQvhgG6/EYM33QybDCrjRKtvJU7+UuLm6HBP+ZQhjR2qA3ieMLb5kjOdRa/lcgGaHJK7jocoKWKHb8cX77Qj3M7a0cOrtRcGQxZO/dinRYe5zNeYYPB8RdRxlX3M6m58ExDVKWt2qrjIP8zp/8oBAe86ozUn+eob3CBRAA23TJfecOg4B+0VUYO7Xex8l8LXEjUr6qO1Mo+I6a7Fji419bV5W7YrKSrDB/rQOxQuLT0yJdUlsL2RPoBsAmh5I3zyA+SfVcndf1ihX/jASa1Wwi2/bXuPrkvXg6DYpk4UVsIGGEAU5fGs3pRhOHBdlcCYYOjHJjTL2F9VyirwI3SDJqUYTy/P5H0uD5k/e80eXJ6w77u1RoZNuh2A4LQo/Bulgfd91HR7rcovty/GsYetDJCt0YXOQLxUc/3l5oY+vQ6cjUXGtiHsmo1X15GUUkHQ+zsBwyb2X15wnoNUiqFy60JWdjZgzt+WqZ1hX+k2qSckNa9b0+C5eyqz1zcUG+6XiEQ4C++HVSTFo689UzWGjWBbSokdmRwqry+dZ4L3e08s4uS7A==
PROXMOX_BACKUP_SERVER_PASSWORD: AgApTZ1rfrtZKHun+XiEgJa9OPxBGHuy6g16uUn6LFkOwEu25m6BoiaYZFQ/4D98FK36NbAgTrft+DA4hAATDGupezljx4Pw8y7yzlWb/OkFazwz7L6G/Mc11cO8cFAY3zIkzzLVxJ2nZ6r7Ng/OipTnb7ux50faFfYwPnVBPT3eJeqJXziuypzVRppb1WOHLBwXlZNsaAZRggE8yVQTdkYWsdpO9EBgc7Wjh+x5G/yyoAumu9DleEBvdOjETcW366jC6xXcyF1cQprKLYahv0nRSmsOp3SJHpGvz2zxezLbbrWNbWPciTBG0kyl5K/arPP0czttnTZRxxNDPeerBRB1eWAzJcWxsZTYMHP0cyJMoW5v9lbFmLvO0wlnHGuKA4FhPMzDin4UqPkXhUP1iv/MRrIS7OZNUWrjPlk5dqOVywRrqcYyXm6IpSPPWB+QnqmfJpxc84ryCqCJP02TxY8PkZep7FAC2l1syu5dueGNKuAsmT/jox3phEOqJN0fjAh3faI6Fpm3n0Nw+6XYd5msBiYAYRLdrPHChnE8JUyXMuBsqjHrjKpYgtgIkAgSKqCsgbcoCsAAjlSFyiU/HcjSOL0YF8Bsw3U9szkopLlaC1bAa1MzEdaLo9eKsy+tAEVV6C47gzkye5X5y+DgcwDy4sslPs269x7+13SqDTMXyRBVbEHTKO9onpiWeT1dvOs0U3hKilQ7srkmAYg2wtCApAWn3c4htyPxO7MyeRqVjbRwbSk=
PROXMOX_PASSWORD: AgAl1V/dddNnJDn3AmJlp6rrFszjNqrYTZkI2LAKLwhYYLd7EZTVPvgaN5Ha38ws7AnMAevV7XrGxSqY1hYhLbS+aYkXRTi0xuVs5+J6mBebKXmDpLqXj8Bzzf5TsJ64gSZp2klz5IfI0cKGSKxjjyiFX7JtrM5FSXUDBRyBP7XLllzQbKgL9t2KSqafjdtY/NzBmv6GimM8vFqzkyytCnFz53EtLnhhl8kukGYjhu4M5mtJAjxzFDzjCVEQxaWShDTxhhTJTZWwkYui2ES08YoXgPEMU2AmBxuHDUCdcGvn2NF4Z0VvwAvuY1LzoKUgY6HI8rYI0X/abEuVgVDk6NX/dZeLIohCIy/h6o9WE1acih+Rj7htwfnsFSQQYz3v7G8OiRnwPreO9B4ovyegk8eIYTKrIULopcsZZH5aqxy6mNBNuhHqfZEPlyHjJPEm/IFpo02U7C7PqrQWs0ucWZoGKgMcJfBmWI5sLsFDCZGmWP5Jjold4YVAUkVfZSs47wkVGCRg+ppldS8illqD0bDUQBl7epaJ9N5FLL5Csla1FB37ZARGweOswOiOshbzZAgQUGzMdMVByIXyhCWPN40CqsPZkzGdAu1X6s6EOAPGyzBZtDSMa/QodF+rLqIHp23Hzz+hGaUv88P6R6b/P8PgSYvl1M2oHaBrNnDNhK4UJPAcOhy1RoqUh/URZ9QCu2N22DH6aBcOL/Iz1sA/QhMhBFiBJjJw17i+ctGK0hoxSaNVFxc=
QBITTORRENT_PASSWORD: AgB/colwHSSf+8CoaquQ2DkdRjZU2tgHiyZgz6Vqkt2iWg3oK48372lYQxq13OH1RCC2GZyI5PrBRVt0dDtU6qcQlAQMo1gTRWDfEmQTmNJTKYD+bY0YNlHC3EuMrnLH1zgxVsuT1OWqHMEta9GR/DAwgvJVMVQzqIKDqNGkPQNspKDbvFR6XexgwHjJSaMU9Gj7vTe2rC4RutfkT2P13s4F4OOZRwJuuVoy7YF4F2s+3CbpZJSgM7TK5KT4779U9fpWg6BLl2UobguhtkIItwOKxDk3JrIqD1qSM1bBR6/3AQlKXPC4uyuqmlkZ/m2OCPPaCJq99Zo3g3ibe9LVrkJDviPY+r0U9HHwAPXuc+FdhhRMeOVGxqgBnIwbz8/cfzAPeDwiGZB50p7NwH9dmgBi41z7hmzbsOho6amGIr1CwGt5XbUPKZw8ykkNr+pNsEi4uYSN7VP6iKTFnoizW63krKynckezdWhhdbYtjyRvmm80V6X3yxUcF8GFykr9WGk/HW+SxYuj6H3ojetGvANRLPKl4Ua2xqqUyqQyaa8iFeS9yhXXT8Y1M8jmrGzww7EyyOYiBkl+K8ID1P5PNkyGCiw2FvfIZ/hUip0zPOQxK1Y8AsULXwxmQKvkuvGGDdGfff2+a9NQat0vza+ttLjyualMpM+q7oo8P4MgmJctD314yLMxAluSNb/rzT7MF7239iv+851hKj2H
RADARR_API_KEY: AgDROXICiLAcutE4uvBh3t6ZlVMLFvAC1LinWkSv6UvilXI9b9HKMK6iP9EAZUmMirlVQRIReXC1TSCpYVJWok3U9ukakreFYKyFN7ImU4Nmyw0h9cUDnKmnb4D4PdJ7Bi3aQZlB+7OTZVkhytvccUnUD1HtoRDXea7qCqRS1okqX3cn5DOYuG5kB5XUqNGRieEUIGT1QDjpiA0ZyVSRfYi1gRoRaXVj9H4oc74VVIvTUpnCHL/M/o7mGFUwUlR0HsUsQORq4V45g9Zz/qMvmGMopn7hchQxoUCkcDnbGEWvHbp1BJtTPRYWa8JEVzmaskQsVzXLYBBEuVLCBjD17QukdaBXXiqhRv4flFkyWoLlAVX/4mKqbb29jHXxn/ovMpSBlbMN2ZBMop5OZ91fhO+HOkowPqxCu0MmDTTH0NenYVPw7xrm21ZJNAIn1GVFmpbiBq4ulPmIxMS9p99+do5WSvV8ofgOT4hT2u/XkqqXSE8/S0PknnMOOEe5/nlam92RDqhiz+sfL2bgVdOoW/AAV0ae3HAA3at1UQDIgQYUCGKFVZQ7VJ3jnkSn/PetLmNuLdHgEKMlET42osdWulUwxc5ttsTDv/iT2n5So3ykdBsctjIKskuTqoL/Iy9bsFVxHE7/ctr/yHhgSsgZrBFxBhd4IyvP9QPTiVA3D1LTYJMsxniMPNYWvVxlyVzBXYrKHdeWXMnlEgXvERRLzDmK9PS9mhSiulyZCN+BJby8BA==
SABNZBD_API_KEY: AgDU0ARg9y3NK+y5m41nKYUBYuZTxjH/GWduk4B34hLr9b6yluk/59CrFVuoEdbErDCwTfBQ8fMlACta48EtIjsPCxhrN7GSVFKILUDNCk5pSyGn+qQ9YCEiFOsCL+yd29JK+AeruE+LfrOGEqwSNbP4vSNrJtQ7b6khZSlvYL/6CZOkDzPEDXZps/yvif9hcr9XuKCT0oiZgVEyLKpTKQfjCKj/wRx+AkB8rRJCiD96MQB1rrP6rxmkCJuvKDIch/kftTkPPNO7u8HrAz6UOwVPVQasORF0K/iJu8CH2hmsDGLOUkZgYN7juy3yx8802QGX9sigVVMQ9M+yX9RnCmnOJQFu0wy4FFqA5rAuhU+keeEqAazkN3O7ckB8cN0Mw2o92dJrEb1RYFXFH6/odPHwzBA4vpusxlNT72XX34epelvbtpbBrhX5MzdYoRhk6RcGUPcDk3CEexry0uv7CUdvDoaE2qoYj2E3fFiKtGaY/cuN3JWKRmAaZDUdO4hEph6Jg3XnP38mFWo8M2fITH5h4z3eXCtqh8gouqk3xTFkNgdMd6xdMjUwhbQsSoeqHqoM+L7nGpc27UgL7dSF053wbp/B9HsG2VemWAHlxIf38x9vEy8olXHyShn632NMeTpMSl39EAS9nLfwjccMxeEk9RSATT0PoPW8PeYgrYf6JBU/5t/LC81gVqoEv0WjPjKrzHQLE6hnUNLW+/MKXaUDbTmEHO6Ti1VehKwggKdffQ==
SONARR_API_KEY: AgAiDFR68d/cxlwCegjxQPvjROlAuarde5a3nG56mrwXKKPsUVe7eFCFMnEUe6LiJB7PpkambrwhArq53YXs5PStMKeJg6aBSMGqzhnFdtrqMHaQD3UkaeJ7LQIkCbFRRTMjuJ9bbGRInu2HILnY3SOQ3DLB/fdGDYIUiLw9/4vYGwj2HRN5UBk9Yul7cp480r5hzfWFGZcfdVam9U2dXgzUBagQdJOSAnR7FFtjFS08FwlEuxUTLi4tTF8rFHvRkKRmKWJflmsrAVPozPK/L2bzOqIWzRshtF7Cttjw7LDgDdX0Plh0W/LGatz6ExX8qqXYg4sUTNjXvOJ0WBGLBAMozvYohchPg58mIVnNT50+54myp8FMkItY8dLeZ789TPy+nWyJu97MiUSCrxTafiT2dAilHq65kCDHdaQOUfn89/3kpbpdkG3cTJfQDkgkTYr1q147pD4cLOgdf6rq1ZzT7yh0RAM/+oRStv+6uLcvw8XhXvgXFcm30eIQkkF0ExIht9GR2LMMbAY8Yv9HC+/x1H6hNLBXZBA9lFWUI38O8FrtyHeHB+40g0DnCC8Wbf7lecBbVaNRA/7dShMR1j3yobLv5V4kNWJoh8X6ix6Thi9LtXqBxlG+FCCwF9VetneI5iX32fsw1UEQZMwwsGSo+UwAq3OjmzqaAOb1mn8hgvkPoJGFcZLGNGSTwJNnntFptn2pa6o24gfQI/lVNr5KBlprVbs5FrslAdpCBmBcQw==
template:
metadata:
name: homepage-secrets
namespace: monitoring
type: Opaque

View File

@@ -0,0 +1,62 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: homepage
labels:
app.kubernetes.io/name: homepage
rules:
- apiGroups:
- ""
resources:
- namespaces
- pods
- nodes
verbs:
- get
- list
- apiGroups:
- extensions
- networking.k8s.io
resources:
- ingresses
verbs:
- get
- list
- apiGroups:
- traefik.io
resources:
- ingressroutes
verbs:
- get
- list
- apiGroups:
- gateway.networking.k8s.io
resources:
- httproutes
- gateways
verbs:
- get
- list
- apiGroups:
- metrics.k8s.io
resources:
- nodes
- pods
verbs:
- get
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: homepage
labels:
app.kubernetes.io/name: homepage
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: homepage
subjects:
- kind: ServiceAccount
name: homepage
namespace: monitoring

View File

@@ -0,0 +1,398 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: homepage
namespace: monitoring
labels:
app.kubernetes.io/name: homepage
data:
docker.yaml: |
""
bookmarks.yaml: |
""
custom.css: |
""
custom.js: |
""
kubernetes.yaml: |
mode: cluster
widgets.yaml: |
- kubernetes:
cluster:
show: true
cpu: true
memory: true
showLabel: true
label: "k3s-cluster"
nodes:
show: false
- longhorn:
expanded: true
total: true
labels: true
nodes: false
settings.yaml: |
layout:
Proxmox (NVIDIA GPU):
style: row
columns: 5
tab: Stats
Proxmox (AMD GPU):
style: row
columns: 5
tab: Stats
Proxmox (Asus):
style: row
columns: 5
tab: Stats
Apps:
style: row
columns: 4
tab: Apps
Bookmarks:
style: row
columns: 5
tab: Bookmarks
useEqualHeights: true
hideErrors: true
statusStyle: "dot"
background: /images/sur.jpg
providers:
longhorn:
url: http://longhorn-ui.longhorn-system.svc.cluster.local:8000
services.yaml: |
- Apps:
- Sonarr:
href: https://sonarr.${DOMAIN}
description: series
icon: sonarr.png
namespace: arr-stack
podSelector: app=sonarr
app: sonarr
widget:
type: sonarr
url: http://sonarr-service.arr-stack.svc.cluster.local:8989
key: "${SONARR_API_KEY}"
- Radarr:
href: https://radarr.${DOMAIN}
description: movies
icon: radarr.png
namespace: arr-stack
podSelector: app=radarr
app: radarr
widget:
type: radarr
url: http://radarr-service.arr-stack.svc.cluster.local:7878
key: "${RADARR_API_KEY}"
- Bazarr:
href: https://bazarr.${DOMAIN}
description: subtitles
icon: bazarr.png
namespace: arr-stack
podSelector: app=bazarr
app: bazarr
widget:
type: bazarr
url: http://bazarr-service.arr-stack.svc.cluster.local:6767
key: "${BAZARR_API_KEY}"
- Jellyfin:
href: https://jellyfin.${DOMAIN}
description: streaming
icon: jellyfin.png
namespace: media
podSelector: app=jellyfin
app: jellyfin
widget:
type: jellyfin
url: http://jellyfin-service.media.svc.cluster.local:8096
key: "${JELLYFIN_API_KEY}"
- qBittorrent:
href: https://qbittorrent.${DOMAIN}
description: torrent client
icon: qbittorrent.png
namespace: arr-stack
podSelector: app=qbittorrent
app: qbittorrent
widget:
type: qbittorrent
username: admin
password: "${QBITTORRENT_PASSWORD}"
url: http://qbittorrent-service.arr-stack.svc.cluster.local:8080
- Sabnzbd:
href: https://sabnzbd.${DOMAIN}
description: nzb client
icon: sabnzbd.png
namespace: arr-stack
podSelector: app=sabnzbd
app: sabnzbd
widget:
type: sabnzbd
url: http://sabnzbd-service.arr-stack.svc.cluster.local:8080
key: "${SABNZBD_API_KEY}"
- Jellyseerr:
href: https://jellyseerr.${DOMAIN}
description: request movies and shows
icon: jellyseerr.png
namespace: arr-stack
podSelector: app=jellyseerr
app: jellyseerr
widget:
type: jellyseerr
url: http://jellyseerr-service.arr-stack.svc.cluster.local:5055
key: "${JELLYSEERR_API_KEY}"
- Prowlarr:
href: https://prowlarr.${DOMAIN}
description: indexers
icon: prowlarr.png
namespace: arr-stack
podSelector: app=prowlarr
app: prowlarr
widget:
type: prowlarr
url: http://prowlarr-service.arr-stack.svc.cluster.local:9696
key: "${PROWLARR_API_KEY}"
- Speedtest:
href: https://speedtest.${DOMAIN}
description: speedtest
icon: si-speedtest.svg
namespace: monitoring
podSelector: app=speedtest
app: speedtest
widget:
type: speedtest
url: http://speedtest-service.monitoring.svc.cluster.local:80
- Immich:
href: https://immich.${DOMAIN}
description: photos
icon: immich.png
namespace: media
podSelector: app=immich-app
app: immich-app
widget:
type: immich
url: http://immich-service.media.svc.cluster.local:2283
key: "${IMMICH_API_KEY}"
version: 2
- Gitea:
href: https://gitea.${DOMAIN}
description: Git Server
icon: gitea.png
namespace: git-ops
podSelector: app=gitea-app
app: gitea-app
widget:
type: gitea
url: http://gitea-int-service.git-ops.svc.cluster.local:3000
key: "${GITEA_API_KEY}"
fields: ["repositories", "issues", "pulls"]
- Crafty:
href: https://crafty.${DOMAIN}
description: minecraft server manager
icon: crafty-controller.png
widget:
type: minecraft
url: udp://192.168.1.3:25565
- Proxmox:
href: https://proxmox.${DOMAIN}
description: VMs
icon: proxmox.png
widget:
type: proxmox
url: https://192.168.1.113:8006
username: api@pam!homepage
password: "${PROXMOX_PASSWORD}"
- Proxmox Backup Server:
href: https://pbs.${DOMAIN}
description: backup server
icon: proxmox.png
widget:
type: proxmoxbackupserver
url: https://192.168.1.112:8007
username: root@pam!homepage
password: "${PROXMOX_BACKUP_SERVER_PASSWORD}"
datastore: backups
fields: ["datastore_usage", "cpu_usage", "memory_usage"]
- Invidious:
href: https://invidious.${DOMAIN}
description: youtube frontend
namespace: media
podSelector: app=invidious
app: invidious
icon: invidious.png
- Nextcloud:
href: https://nextcloud.${DOMAIN}
description: files
icon: nextcloud.png
namespace: tools
podSelector: app=nextcloud
app: nextcloud
- VS Code:
href: https://vs.${DOMAIN}
description: VS code server
icon: vscode.png
namespace: tools
podSelector: app=code-server
app: code-server
- Semaphore:
href: https://semaphore.${DOMAIN}
description: ansible gui
icon: semaphore.png
namespace: git-ops
podSelector: app=semaphore
app: semaphore
- Ersatztv:
icon: ersatztv.png
description: live tv for jellyfin
href: https://ersatztv.${DOMAIN}
namespace: media
podSelector: app=ersatztv
app: ersatztv
- Jellystat:
icon: jellystat.png
description: jellyfin stats
href: https://jellystat.${DOMAIN}
namespace: monitoring
podSelector: app=jellystat
app: jellystat
- Paperless NGX:
icon: paperless.png
description: documents OCR
href: https://ngx.${DOMAIN}
namespace: tools
podSelector: app=paperless-ngx
app: paperless-ngx
- Searxng:
icon: searxng.png
description: search engine
href: https://sear.${DOMAIN}
namespace: tools
podSelector: app=searxng
app: searxng
- Open-WebUI:
icon: ollama.png
description: frontend for ollama
href: https://ollama.${DOMAIN}
namespace: tools
podSelector: app=open-webui
app: open-webui
- Open Media Vault:
href: http://192.168.1.4
description: NAS
icon: openmediavault.png
- Bookmarks:
- Disney:
href: https://www.hotstar.com
- Prime Video:
href: https://primevideo.com
- AngelOne:
href: https://www.angelone.in/trade/watchlist/chart
- MoneyControl:
href: https://moneycontrol.com
- SBI Netbanking:
href: https://retail.onlinesbi.sbi/retail/login.htm
- GW2 Wiki:
href: https://wiki.guildwars2.com/wiki/Event_timers
- GW2 Efficiency:
href: https://gw2efficiency.com
- Youtube:
href: https://youtube.com
- Reddit:
href: https://reddit.com
- Github:
href: https://github.com
- Twitch:
href: https://twitch.tv
- Proxmox (AMD GPU):
- CPU Usage:
widget:
version: 4
type: glances
url: http://192.168.1.113:61208
metric: cpu
- Memory Usage:
widget:
version: 4
type: glances
url: http://192.168.1.113:61208
metric: memory
- Processes:
widget:
version: 4
type: glances
url: http://192.168.1.113:61208
metric: process
- Sensor:
widget:
version: 4
type: glances
url: http://192.168.1.113:61208
metric: sensor:Tctl
- Disk Usage:
widget:
version: 4
type: glances
url: http://192.168.1.113:61208
metric: disk:sdb
- Proxmox (NVIDIA GPU):
- CPU Usage:
widget:
version: 4
type: glances
url: http://192.168.1.126:61208
metric: cpu
- Memory Usage:
widget:
version: 4
type: glances
url: http://192.168.1.126:61208
metric: memory
- Processes:
widget:
version: 4
type: glances
url: http://192.168.1.126:61208
metric: process
- Sensor:
widget:
version: 4
type: glances
url: http://192.168.1.126:61208
metric: sensor:Package id 0
- Disk Usage:
widget:
version: 4
type: glances
url: http://192.168.1.126:61208
metric: disk:nvme0n1
- Proxmox (Asus):
- CPU Usage:
widget:
version: 4
type: glances
url: http://192.168.1.199:61208
metric: cpu
- Memory Usage:
widget:
version: 4
type: glances
url: http://192.168.1.199:61208
metric: memory
- Processes:
widget:
version: 4
type: glances
url: http://192.168.1.199:61208
metric: process
- Sensor:
widget:
version: 4
type: glances
url: http://192.168.1.199:61208
metric: sensor:Sensor 1
- Disk Usage:
widget:
version: 4
type: glances
url: http://192.168.1.199:61208
metric: disk:nvme0n1

View File

@@ -0,0 +1,27 @@
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: homepage-ingress
namespace: monitoring
annotations:
cert-manager.io/cluster-issuer: letsencrypt-cloudflare
traefik.ingress.kubernetes.io/router.middlewares: tools-authelia@kubernetescrd
traefik.ingress.kubernetes.io/router.entrypoints: websecure
spec:
ingressClassName: traefik
tls:
- hosts:
- home.akshun-lab.cc
secretName: homepage-tls
rules:
- host: home.akshun-lab.cc
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: homepage-service
port:
number: 3000

View File

@@ -0,0 +1,14 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: homepage-longhorn
namespace: monitoring
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 100Mi
storageClassName: longhorn

View File

@@ -0,0 +1,11 @@
---
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
name: homepage
namespace: monitoring
labels:
app.kubernetes.io/name: homepage
annotations:
kubernetes.io/service-account.name: homepage

View File

@@ -0,0 +1,10 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: homepage
namespace: monitoring
labels:
app.kubernetes.io/name: homepage
secrets:
- name: homepage

View File

@@ -0,0 +1,12 @@
---
apiVersion: v1
kind: Service
metadata:
name: homepage-service
namespace: monitoring
spec:
selector:
app.kubernetes.io/name: homepage
ports:
- port: 3000
targetPort: 3000

View File

@@ -0,0 +1,95 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: homepage
namespace: monitoring
labels:
app.kubernetes.io/name: homepage
spec:
revisionHistoryLimit: 3
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app.kubernetes.io/name: homepage
template:
metadata:
labels:
app.kubernetes.io/name: homepage
spec:
serviceAccountName: homepage
automountServiceAccountToken: true
enableServiceLinks: true
initContainers:
- name: substitute-config
image: alpine
envFrom:
- secretRef:
name: homepage-secrets
command:
- "sh"
- "-c"
- apk add gettext && envsubst < /mnt/init/services.yaml > /mnt/services.yaml
volumeMounts:
- name: homepage-config
mountPath: /mnt/init/services.yaml
subPath: services.yaml
- name: tmp
mountPath: /mnt
subPath: services.yaml
containers:
- name: homepage
image: "ghcr.io/gethomepage/homepage:v1.8.0"
imagePullPolicy: IfNotPresent
env:
- name: HOMEPAGE_ALLOWED_HOSTS
valueFrom:
secretKeyRef:
name: homepage-secrets
key: ALLOWED_HOSTS
ports:
- name: http
containerPort: 3000
protocol: TCP
volumeMounts:
- mountPath: /app/config/custom.js
name: homepage-config
subPath: custom.js
- mountPath: /app/config/custom.css
name: homepage-config
subPath: custom.css
- mountPath: /app/config/bookmarks.yaml
name: homepage-config
subPath: bookmarks.yaml
- mountPath: /app/config/docker.yaml
name: homepage-config
subPath: docker.yaml
- mountPath: /app/config/kubernetes.yaml
name: homepage-config
subPath: kubernetes.yaml
- mountPath: /app/config
name: tmp
subPath: services.yaml
- mountPath: /app/config/settings.yaml
name: homepage-config
subPath: settings.yaml
- mountPath: /app/config/widgets.yaml
name: homepage-config
subPath: widgets.yaml
- mountPath: /app/config/logs
name: logs
- mountPath: /app/public/images
name: images
volumes:
- name: homepage-config
configMap:
name: homepage
- name: images
persistentVolumeClaim:
claimName: homepage-longhorn
- name: logs
emptyDir: {}
- name: tmp
emptyDir: {}

View File

@@ -0,0 +1,46 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: jellystat-db
namespace: monitoring
spec:
selector:
matchLabels:
app: jellystat-db
serviceName: jellystat-db
replicas: 1
template:
metadata:
labels:
app: jellystat-db
spec:
containers:
- name: jellystat-db
image: postgres:18-alpine
ports:
- containerPort: 5432
env:
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: jellystat-secret
key: password
- name: POSTGRES_DB
value: "jfstat"
- name: POSTGRES_USER
value: "postgres"
- name: PGDATA
value: /mnt/postgres/data
volumeMounts:
- name: postgres-data
mountPath: /mnt/postgres
volumeClaimTemplates:
- metadata:
name: postgres-data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 1Gi
storageClassName: longhorn

View File

@@ -0,0 +1,27 @@
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: jellystat-ingress
namespace: monitoring
annotations:
cert-manager.io/cluster-issuer: letsencrypt-cloudflare
traefik.ingress.kubernetes.io/router.middlewares: tools-authelia@kubernetescrd
traefik.ingress.kubernetes.io/router.entrypoints: websecure
spec:
ingressClassName: traefik
tls:
- hosts:
- jellystat.akshun-lab.cc
secretName: jellystat-tls
rules:
- host: jellystat.akshun-lab.cc
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: jellystat-service
port:
number: 3000

View File

@@ -0,0 +1,14 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jellystat-backups-longhorn
namespace: monitoring
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 1Gi
storageClassName: longhorn

View File

@@ -0,0 +1,15 @@
---
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
name: jellystat-secret
namespace: monitoring
spec:
encryptedData:
jwt: AgB+LTIiJS3cLByJI92bP4ZxODj4XdmjQrVjv9BKb3TWnGRI3A84rh2uIQbOP1o6g8FzEFpat4A//EPE3GFXKBNXI0LD4xn04rGAiaC+E3AfcraaTDroEwSblewbWPGPzTzC7pKhKztQtGVkUfy2I6JZUiAeyibweXoaR48fyYmySs+2Gc7rXKUnsgt999fOjrj9dGmsTqnLfCkiExspjH8D9q5xBsRY6N2KpHnQ9AX23Re4ZwzmSrxBfz6cTyEcSWApuYzToLJgyGeibR8VMO9hLAAIcOYunLzZ0MrYtt/STCmW0j7IgccrlhFPA6cpEUS7/hR3Z2Yj/SJSWL41a+rww8EhOodTY9T6PhFm+Z3YfwaEoSGlEjTfcW3KVUUpbv7S19Gy+HM6TeBLctlQzg5ondu8dC4hyKSjC5D2ugCTTyu2/gZHuRerzN0sV05H7E4rvYy/FPttRYoVnX3pPEMYAWn6Gan+fsWkEUItL5Z9v1rRBg7WgEjxKOVrpcDuf8AqRG7Oxv6f4SkWkmleOMH9/MLTtqsDMKq0JLhLgQmwHEwYIrf33AIb7GPiBDwyftlI/2LMAaiqCs0ak/Qery61UiuuzqLm4kfRhKh+rrHqgn4N2pO2rBxvRMzvSZ6pl3yeeKAeBx0cf8tGPTOVUTMAdvttqfiVf7th1a+WM0m0iBmqE0/unpFTXNklg1xfSdm8f6qJU6/AAxLaENq1LdDepXDjjSglQyKWEdXS6iZXegEtHDmV0wKyedPAfw==
password: AgAz/Zlbr66o5a0oZuGFXAMKZo9NdcqpSpF0DaTObCO+uUqROtrCv5d06zbyNrj6zaNLDJRp8xSGR3XwFTg8SCw0cUiWx/GbXWp1VCrzGRE5l1nC2i/lAsArOhTHxuAkvpGzjfvHzs/iXk+n0jC5GQyDUyxT/Wd46ARlY6qQvIl0QZ8xIl76GcL31QKpl1kT5NslwLwULJUfV/8U9FvDMQkQV7RGlwCSeGLEGtYNUNnAsRaviuvL5X8SLAZhOrB+P3Rm9M+M0jlmo42IeVDbu+15u1yBvXsDplcXK21+aN0DSsVA9aeKAHq6m4MrTJ5aGdr8qbg2rTlYZAvjBnjEcXxrONlm8kHR3PcDgZ6sXdb1k7DttpcQhIzynelm+4SoMXNJQW1o3EnJOu9DBec8cIBPGhwpo+QdLwgznI9vO2hOgTnp2amf1eGZIM4J959LRqiKKBNg02XZiE92orqmCaaxOfdUrVLho+JQQVsarx2qCN6lKU2Ev31OrTtUY0twS6P8W5/8iDVx1GeulUZZpVE1CMDuNSmlIi87sf8P844+hXr391gT6EiFXHLrcGG3JMHVePIbKGBda15Y7AlP/VEoJAZpmTrC6k8xbeRtAxZJIMLhl/NxGUXkQlpA3O9pUBY4XiJhlZIiQk6nCKg6YOQCTrZoB2/AkA1X1IOdGikyq+7OD0JtkrH9qwvY8dJfLLJc8kJXTR+e873MLQ==
template:
metadata:
name: jellystat-secret
namespace: monitoring
type: Opaque

View File

@@ -0,0 +1,27 @@
---
apiVersion: v1
kind: Service
metadata:
name: jellystat-service
namespace: monitoring
spec:
selector:
app: jellystat
ports:
- port: 3000
targetPort: 3000
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: jellystat-db
namespace: monitoring
spec:
selector:
app: jellystat-db
ports:
- port: 5432
targetPort: 5432
clusterIP: None

View File

@@ -0,0 +1,55 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: jellystat
namespace: monitoring
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
app: jellystat
template:
metadata:
labels:
app: jellystat
spec:
containers:
- name: jellystat
image: cyfershepard/jellystat:1.1.7
readinessProbe:
exec:
command:
- bash
- -c
- |
(echo >/dev/tcp/jellystat-db.monitoring.svc.cluster.local/5432)
initialDelaySeconds: 5
periodSeconds: 5
failureThreshold: 3
env:
- name: JWT_SECRET
valueFrom:
secretKeyRef:
name: jellystat-secret
key: jwt
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: jellystat-secret
key: password
- name: POSTGRES_IP
value: "jellystat-db.monitoring.svc.cluster.local"
- name: POSTGRES_PORT
value: "5432"
- name: POSTGRES_USER
value: "postgres"
volumeMounts:
- name: backups
mountPath: /app/backend/backup-data
volumes:
- name: backups
persistentVolumeClaim:
claimName: jellystat-backups-longhorn

View File

@@ -0,0 +1,7 @@
---
kind: Namespace
apiVersion: v1
metadata:
name: monitoring
labels:
name: monitoring

View File

@@ -0,0 +1,26 @@
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: pulse-ingress
namespace: monitoring
annotations:
cert-manager.io/cluster-issuer: letsencrypt-cloudflare
traefik.ingress.kubernetes.io/router.entrypoints: websecure
spec:
ingressClassName: traefik
tls:
- hosts:
- pulse.akshun-lab.cc
secretName: pulse-tls
rules:
- host: pulse.akshun-lab.cc
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: pulse
port:
number: 7655

View File

@@ -0,0 +1,14 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pulse-longhorn
namespace: monitoring
spec:
resources:
requests:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
storageClassName: longhorn

View File

@@ -0,0 +1,23 @@
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: pulse
namespace: monitoring
spec:
interval: 6h
chart:
spec:
chart: pulse
sourceRef:
kind: HelmRepository
name: pulse
namespace: flux-system
interval: 6h
values:
persistence:
enabled: true
existingClaim: pulse-longhorn
image:
repository: rcourtman/pulse
tag: 5.0.10

View File

@@ -0,0 +1,10 @@
---
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: pulse
namespace: flux-system
spec:
type: "oci"
interval: 6h
url: oci://ghcr.io/rcourtman/pulse-chart

View File

@@ -0,0 +1,27 @@
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: speedtest-ingress
namespace: monitoring
annotations:
cert-manager.io/cluster-issuer: letsencrypt-cloudflare
traefik.ingress.kubernetes.io/router.middlewares: tools-authelia@kubernetescrd
traefik.ingress.kubernetes.io/router.entrypoints: websecure
spec:
ingressClassName: traefik
tls:
- hosts:
- speedtest.akshun-lab.cc
secretName: speedtest-tls
rules:
- host: speedtest.akshun-lab.cc
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: speedtest-service
port:
number: 80

View File

@@ -0,0 +1,14 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: speedtest-longhorn
namespace: monitoring
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 100Mi
storageClassName: longhorn

View File

@@ -0,0 +1,14 @@
---
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
name: speedtest-secret
namespace: monitoring
spec:
encryptedData:
app_key: AgAmbtuB9SPP4+jweqUvcPj/9xGQBD28GtoRr85Cd66Lwm0FCI+CUQ6a2Yl/0R2MZdHbrbwPl/w5RwNUWUE06U5PemjO3IcVBRprf5Rzw1kHPTHazWUARL5AvdrY1gxT/yXck4v9ScqyHn2kXSvZgPNr3wGiLUP5nTwO8A4HNgdqs3UhjXxlKrtHvnlN0CM2jjtrd+mvnTs4jysBsx5ls9NtTN4eu+1o4quLZQDsHvbnDubzIbAyXuPPqXmHhvNLp0wJNIUphhr9SpE3vRjMuwnxjBIvPYNdzLk1gy2FwgSHXVc5Y+1tFNBrF81NOxjWaVlUSqDwU/VPWjrLieveqVT80Yk3kKbhPlboaK+S5MZiKSOcZc+NiW/yUuJi+y97y6MD28WgsrzFsdMcAWycqr0qmayV03/n9XlK0aXD/JjEkLGJBVwgn2Qz37YmfOcZ0m5hDrfig07ZzXXsVI0N2RWZ3Qii+cH2Lqa/Rlx/ITsAxlL2DJBXHEG8qzijGG3GicT6Bn1+zYIqFo3FKUc1xnD5T9YlbwGOqURo4bQ1Cg7sy5iF1kAgH/3IFXepmIjDLf4MkVrv6dbDgmlg5A8BowQz3VT03FA2CXp+IQdC5KEHq8TxpwYU/+y4bFcu53cfioXp2mQlChBgSNmRZkzi86IkK2w8wCynDHomRzZes/sh278sEwbo4cBloSQiBulCgTSNKhFV7b3mpz0p/QDBOYVVFphTBYDAv533eIEv6G6OXZQUyu/4vFT9thLcMWR1QlrnnV8=
template:
metadata:
name: speedtest-secret
namespace: monitoring
type: Opaque

View File

@@ -0,0 +1,13 @@
---
apiVersion: v1
kind: Service
metadata:
name: speedtest-service
namespace: monitoring
spec:
selector:
app: speedtest
ports:
- port: 80
targetPort: 80
protocol: TCP

View File

@@ -0,0 +1,52 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: speedtest
namespace: monitoring
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
app: speedtest
template:
metadata:
labels:
app: speedtest
spec:
containers:
- name: speedtest
image: lscr.io/linuxserver/speedtest-tracker:1.13.4
ports:
- containerPort: 80
env:
- name: PUID
value: "1000"
- name: PGID
value: "1000"
- name: TZ
value: "Asia/Kolkata"
- name: DB_CONNECTION
value: "sqlite"
- name: APP_KEY
valueFrom:
secretKeyRef:
name: speedtest-secret
key: app_key
- name: SPEEDTEST_SCHEDULE
value: "@hourly"
- name: PRUNE_RESULTS_OLDER_THAN
value: "7"
- name: DISPLAY_TIMEZONE
value: "Asia/Kolkata"
- name: APP_TIMEZONE
value: "Asia/Kolkata"
volumeMounts:
- name: config
mountPath: /config
volumes:
- name: config
persistentVolumeClaim:
claimName: speedtest-longhorn