From 198c5caeaafeb00e987560adada8dc7aeda2fd53 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 25 Jan 2025 00:10:53 +0100 Subject: [PATCH 01/33] Update .app files (#1728) Co-authored-by: GitHub Actions --- ct/headers/2fauth | 6 ++++++ ct/headers/5etools | 6 ++++++ ct/headers/actualbudget | 6 ++++++ ct/headers/adguard | 6 ++++++ ct/headers/adventurelog | 6 ++++++ ct/headers/agentdvr | 6 ++++++ ct/headers/alpine | 6 ++++++ ct/headers/alpine-docker | 6 ++++++ ct/headers/alpine-grafana | 6 ++++++ ct/headers/alpine-nextcloud | 12 ++++++++++++ ct/headers/alpine-vaultwarden | 12 ++++++++++++ ct/headers/alpine-zigbee2mqtt | 12 ++++++++++++ ct/headers/apache-cassandra | 12 ++++++++++++ ct/headers/apache-couchdb | 12 ++++++++++++ ct/headers/apache-guacamole | 12 ++++++++++++ ct/headers/apt-cacher-ng | 6 ++++++ ct/headers/archivebox | 6 ++++++ ct/headers/aria2 | 6 ++++++ ct/headers/audiobookshelf | 6 ++++++ ct/headers/authentik | 6 ++++++ ct/headers/autobrr | 6 ++++++ ct/headers/bazarr | 6 ++++++ ct/headers/beszel | 6 ++++++ ct/headers/blocky | 6 ++++++ ct/headers/bookstack | 6 ++++++ ct/headers/bunkerweb | 6 ++++++ ct/headers/caddy | 6 ++++++ ct/headers/calibre-web | 6 ++++++ ct/headers/casaos | 6 ++++++ ct/headers/changedetection | 12 ++++++++++++ ct/headers/channels | 6 ++++++ ct/headers/checkmk | 6 ++++++ ct/headers/cloudflared | 6 ++++++ ct/headers/cockpit | 6 ++++++ ct/headers/commafeed | 6 ++++++ ct/headers/cronicle | 6 ++++++ ct/headers/daemonsync | 6 ++++++ ct/headers/dashy | 6 ++++++ ct/headers/debian | 6 ++++++ ct/headers/deconz | 6 ++++++ ct/headers/deluge | 6 ++++++ ct/headers/docker | 6 ++++++ ct/headers/dockge | 6 ++++++ ct/headers/dotnetaspwebapi | 12 ++++++++++++ ct/headers/emby | 6 ++++++ ct/headers/emqx | 6 ++++++ ct/headers/ersatztv | 6 ++++++ ct/headers/esphome | 6 ++++++ ct/headers/evcc | 6 ++++++ ct/headers/fenrus | 6 ++++++ ct/headers/fhem | 6 ++++++ ct/headers/firefly | 6 ++++++ ct/headers/flaresolverr | 6 ++++++ ct/headers/flowiseai | 6 ++++++ ct/headers/forgejo | 6 ++++++ ct/headers/frigate | 6 ++++++ ct/headers/ghost | 6 ++++++ ct/headers/gitea | 6 ++++++ ct/headers/glance | 6 ++++++ ct/headers/glpi | 6 ++++++ ct/headers/go2rtc | 6 ++++++ ct/headers/gokapi | 6 ++++++ ct/headers/gotify | 6 ++++++ ct/headers/grafana | 6 ++++++ ct/headers/grist | 6 ++++++ ct/headers/grocy | 6 ++++++ ct/headers/headscale | 6 ++++++ ct/headers/heimdall-dashboard | 12 ++++++++++++ ct/headers/hivemq | 6 ++++++ ct/headers/hoarder | 6 ++++++ ct/headers/homarr | 6 ++++++ ct/headers/homeassistant | 6 ++++++ ct/headers/homeassistant-core | 12 ++++++++++++ ct/headers/homebox | 6 ++++++ ct/headers/homebridge | 6 ++++++ ct/headers/homepage | 6 ++++++ ct/headers/homer | 6 ++++++ ct/headers/hyperhdr | 6 ++++++ ct/headers/hyperion | 6 ++++++ ct/headers/influxdb | 6 ++++++ ct/headers/inspircd | 6 ++++++ ct/headers/iobroker | 6 ++++++ ct/headers/iventoy | 6 ++++++ ct/headers/jackett | 6 ++++++ ct/headers/jellyfin | 6 ++++++ ct/headers/jellyseerr | 6 ++++++ ct/headers/jenkins | 6 ++++++ ct/headers/kavita | 6 ++++++ ct/headers/keycloak | 6 ++++++ ct/headers/kimai | 6 ++++++ ct/headers/komga | 6 ++++++ ct/headers/komodo | 6 ++++++ ct/headers/kubo | 6 ++++++ ct/headers/lazylibrarian | 6 ++++++ ct/headers/lidarr | 6 ++++++ ct/headers/linkwarden | 6 ++++++ ct/headers/listmonk | 6 ++++++ ct/headers/lldap | 6 ++++++ ct/headers/lubelogger | 6 ++++++ ct/headers/mafl | 6 ++++++ ct/headers/magicmirror | 6 ++++++ ct/headers/mariadb | 6 ++++++ ct/headers/matterbridge | 6 ++++++ ct/headers/mediamtx | 6 ++++++ ct/headers/medusa | 6 ++++++ ct/headers/memos | 6 ++++++ ct/headers/meshcentral | 6 ++++++ ct/headers/metube | 6 ++++++ ct/headers/mongodb | 6 ++++++ ct/headers/motioneye | 6 ++++++ ct/headers/mqtt | 6 ++++++ ct/headers/mylar3 | 6 ++++++ ct/headers/myspeed | 6 ++++++ ct/headers/mysql | 6 ++++++ ct/headers/n8n | 6 ++++++ ct/headers/navidrome | 6 ++++++ ct/headers/neo4j | 6 ++++++ ct/headers/netbox | 6 ++++++ ct/headers/nextcloudpi | 6 ++++++ ct/headers/nextpvr | 6 ++++++ ct/headers/nginxproxymanager | 12 ++++++++++++ ct/headers/nocodb | 6 ++++++ ct/headers/node-red | 6 ++++++ ct/headers/notifiarr | 6 ++++++ ct/headers/ntfy | 6 ++++++ ct/headers/nzbget | 6 ++++++ ct/headers/octoprint | 6 ++++++ ct/headers/ollama | 6 ++++++ ct/headers/omada | 6 ++++++ ct/headers/ombi | 6 ++++++ ct/headers/omv | 6 ++++++ ct/headers/onedev | 6 ++++++ ct/headers/opengist | 6 ++++++ ct/headers/openhab | 6 ++++++ ct/headers/openobserve | 6 ++++++ ct/headers/openwebui | 6 ++++++ ct/headers/overseerr | 6 ++++++ ct/headers/owncast | 6 ++++++ ct/headers/pairdrop | 6 ++++++ ct/headers/paperless-ngx | 6 ++++++ ct/headers/part-db | 6 ++++++ ct/headers/pbs | 6 ++++++ ct/headers/peanut | 6 ++++++ ct/headers/petio | 6 ++++++ ct/headers/pf2etools | 6 ++++++ ct/headers/photoprism | 6 ++++++ ct/headers/phpipam | 6 ++++++ ct/headers/pialert | 6 ++++++ ct/headers/pihole | 6 ++++++ ct/headers/pingvin | 6 ++++++ ct/headers/plex | 6 ++++++ ct/headers/pocketbase | 6 ++++++ ct/headers/podman | 6 ++++++ ct/headers/podman-homeassistant | 12 ++++++++++++ ct/headers/postgresql | 6 ++++++ ct/headers/projectsend | 6 ++++++ ct/headers/prometheus | 6 ++++++ ct/headers/prometheus-alertmanager | 12 ++++++++++++ ct/headers/prowlarr | 6 ++++++ ct/headers/proxmox-datacenter-manager | 18 ++++++++++++++++++ ct/headers/ps5-mqtt | 6 ++++++ ct/headers/qbittorrent | 6 ++++++ ct/headers/rabbitmq | 6 ++++++ ct/headers/radarr | 6 ++++++ ct/headers/rdtclient | 6 ++++++ ct/headers/readarr | 6 ++++++ ct/headers/readeck | 6 ++++++ ct/headers/recyclarr | 6 ++++++ ct/headers/redis | 6 ++++++ ct/headers/rtsptoweb | 6 ++++++ ct/headers/runtipi | 6 ++++++ ct/headers/sabnzbd | 6 ++++++ ct/headers/semaphore | 6 ++++++ ct/headers/sftpgo | 6 ++++++ ct/headers/shinobi | 6 ++++++ ct/headers/silverbullet | 6 ++++++ ct/headers/smokeping | 6 ++++++ ct/headers/snipeit | 6 ++++++ ct/headers/sonarr | 6 ++++++ ct/headers/spoolman | 6 ++++++ ct/headers/sqlserver2022 | 12 ++++++++++++ ct/headers/stirling-pdf | 6 ++++++ ct/headers/syncthing | 6 ++++++ ct/headers/tandoor | 6 ++++++ ct/headers/tasmoadmin | 6 ++++++ ct/headers/tautulli | 6 ++++++ ct/headers/tdarr | 6 ++++++ ct/headers/technitiumdns | 6 ++++++ ct/headers/teddycloud | 6 ++++++ ct/headers/test.txt | 0 ct/headers/the-lounge | 6 ++++++ ct/headers/threadfin | 6 ++++++ ct/headers/tianji | 6 ++++++ ct/headers/traccar | 6 ++++++ ct/headers/traefik | 6 ++++++ ct/headers/transmission | 6 ++++++ ct/headers/trilium | 6 ++++++ ct/headers/typesense | 6 ++++++ ct/headers/ubuntu | 6 ++++++ ct/headers/umami | 6 ++++++ ct/headers/umbrel | 6 ++++++ ct/headers/unbound | 6 ++++++ ct/headers/unifi | 6 ++++++ ct/headers/unmanic | 6 ++++++ ct/headers/uptimekuma | 6 ++++++ ct/headers/urbackupserver | 12 ++++++++++++ ct/headers/vaultwarden | 6 ++++++ ct/headers/vikunja | 6 ++++++ ct/headers/wallos | 6 ++++++ ct/headers/wastebin | 6 ++++++ ct/headers/watchyourlan | 6 ++++++ ct/headers/wavelog | 6 ++++++ ct/headers/whisparr | 6 ++++++ ct/headers/whoogle | 6 ++++++ ct/headers/wikijs | 6 ++++++ ct/headers/wireguard | 6 ++++++ ct/headers/wordpress | 6 ++++++ ct/headers/yunohost | 6 ++++++ ct/headers/zabbix | 6 ++++++ ct/headers/zammad | 6 ++++++ ct/headers/zigbee2mqtt | 6 ++++++ ct/headers/zipline | 6 ++++++ ct/headers/zoraxy | 6 ++++++ ct/headers/zwave-js-ui | 6 ++++++ 224 files changed, 1440 insertions(+) create mode 100644 ct/headers/2fauth create mode 100644 ct/headers/5etools create mode 100644 ct/headers/actualbudget create mode 100644 ct/headers/adguard create mode 100644 ct/headers/adventurelog create mode 100644 ct/headers/agentdvr create mode 100644 ct/headers/alpine create mode 100644 ct/headers/alpine-docker create mode 100644 ct/headers/alpine-grafana create mode 100644 ct/headers/alpine-nextcloud create mode 100644 ct/headers/alpine-vaultwarden create mode 100644 ct/headers/alpine-zigbee2mqtt create mode 100644 ct/headers/apache-cassandra create mode 100644 ct/headers/apache-couchdb create mode 100644 ct/headers/apache-guacamole create mode 100644 ct/headers/apt-cacher-ng create mode 100644 ct/headers/archivebox create mode 100644 ct/headers/aria2 create mode 100644 ct/headers/audiobookshelf create mode 100644 ct/headers/authentik create mode 100644 ct/headers/autobrr create mode 100644 ct/headers/bazarr create mode 100644 ct/headers/beszel create mode 100644 ct/headers/blocky create mode 100644 ct/headers/bookstack create mode 100644 ct/headers/bunkerweb create mode 100644 ct/headers/caddy create mode 100644 ct/headers/calibre-web create mode 100644 ct/headers/casaos create mode 100644 ct/headers/changedetection create mode 100644 ct/headers/channels create mode 100644 ct/headers/checkmk create mode 100644 ct/headers/cloudflared create mode 100644 ct/headers/cockpit create mode 100644 ct/headers/commafeed create mode 100644 ct/headers/cronicle create mode 100644 ct/headers/daemonsync create mode 100644 ct/headers/dashy create mode 100644 ct/headers/debian create mode 100644 ct/headers/deconz create mode 100644 ct/headers/deluge create mode 100644 ct/headers/docker create mode 100644 ct/headers/dockge create mode 100644 ct/headers/dotnetaspwebapi create mode 100644 ct/headers/emby create mode 100644 ct/headers/emqx create mode 100644 ct/headers/ersatztv create mode 100644 ct/headers/esphome create mode 100644 ct/headers/evcc create mode 100644 ct/headers/fenrus create mode 100644 ct/headers/fhem create mode 100644 ct/headers/firefly create mode 100644 ct/headers/flaresolverr create mode 100644 ct/headers/flowiseai create mode 100644 ct/headers/forgejo create mode 100644 ct/headers/frigate create mode 100644 ct/headers/ghost create mode 100644 ct/headers/gitea create mode 100644 ct/headers/glance create mode 100644 ct/headers/glpi create mode 100644 ct/headers/go2rtc create mode 100644 ct/headers/gokapi create mode 100644 ct/headers/gotify create mode 100644 ct/headers/grafana create mode 100644 ct/headers/grist create mode 100644 ct/headers/grocy create mode 100644 ct/headers/headscale create mode 100644 ct/headers/heimdall-dashboard create mode 100644 ct/headers/hivemq create mode 100644 ct/headers/hoarder create mode 100644 ct/headers/homarr create mode 100644 ct/headers/homeassistant create mode 100644 ct/headers/homeassistant-core create mode 100644 ct/headers/homebox create mode 100644 ct/headers/homebridge create mode 100644 ct/headers/homepage create mode 100644 ct/headers/homer create mode 100644 ct/headers/hyperhdr create mode 100644 ct/headers/hyperion create mode 100644 ct/headers/influxdb create mode 100644 ct/headers/inspircd create mode 100644 ct/headers/iobroker create mode 100644 ct/headers/iventoy create mode 100644 ct/headers/jackett create mode 100644 ct/headers/jellyfin create mode 100644 ct/headers/jellyseerr create mode 100644 ct/headers/jenkins create mode 100644 ct/headers/kavita create mode 100644 ct/headers/keycloak create mode 100644 ct/headers/kimai create mode 100644 ct/headers/komga create mode 100644 ct/headers/komodo create mode 100644 ct/headers/kubo create mode 100644 ct/headers/lazylibrarian create mode 100644 ct/headers/lidarr create mode 100644 ct/headers/linkwarden create mode 100644 ct/headers/listmonk create mode 100644 ct/headers/lldap create mode 100644 ct/headers/lubelogger create mode 100644 ct/headers/mafl create mode 100644 ct/headers/magicmirror create mode 100644 ct/headers/mariadb create mode 100644 ct/headers/matterbridge create mode 100644 ct/headers/mediamtx create mode 100644 ct/headers/medusa create mode 100644 ct/headers/memos create mode 100644 ct/headers/meshcentral create mode 100644 ct/headers/metube create mode 100644 ct/headers/mongodb create mode 100644 ct/headers/motioneye create mode 100644 ct/headers/mqtt create mode 100644 ct/headers/mylar3 create mode 100644 ct/headers/myspeed create mode 100644 ct/headers/mysql create mode 100644 ct/headers/n8n create mode 100644 ct/headers/navidrome create mode 100644 ct/headers/neo4j create mode 100644 ct/headers/netbox create mode 100644 ct/headers/nextcloudpi create mode 100644 ct/headers/nextpvr create mode 100644 ct/headers/nginxproxymanager create mode 100644 ct/headers/nocodb create mode 100644 ct/headers/node-red create mode 100644 ct/headers/notifiarr create mode 100644 ct/headers/ntfy create mode 100644 ct/headers/nzbget create mode 100644 ct/headers/octoprint create mode 100644 ct/headers/ollama create mode 100644 ct/headers/omada create mode 100644 ct/headers/ombi create mode 100644 ct/headers/omv create mode 100644 ct/headers/onedev create mode 100644 ct/headers/opengist create mode 100644 ct/headers/openhab create mode 100644 ct/headers/openobserve create mode 100644 ct/headers/openwebui create mode 100644 ct/headers/overseerr create mode 100644 ct/headers/owncast create mode 100644 ct/headers/pairdrop create mode 100644 ct/headers/paperless-ngx create mode 100644 ct/headers/part-db create mode 100644 ct/headers/pbs create mode 100644 ct/headers/peanut create mode 100644 ct/headers/petio create mode 100644 ct/headers/pf2etools create mode 100644 ct/headers/photoprism create mode 100644 ct/headers/phpipam create mode 100644 ct/headers/pialert create mode 100644 ct/headers/pihole create mode 100644 ct/headers/pingvin create mode 100644 ct/headers/plex create mode 100644 ct/headers/pocketbase create mode 100644 ct/headers/podman create mode 100644 ct/headers/podman-homeassistant create mode 100644 ct/headers/postgresql create mode 100644 ct/headers/projectsend create mode 100644 ct/headers/prometheus create mode 100644 ct/headers/prometheus-alertmanager create mode 100644 ct/headers/prowlarr create mode 100644 ct/headers/proxmox-datacenter-manager create mode 100644 ct/headers/ps5-mqtt create mode 100644 ct/headers/qbittorrent create mode 100644 ct/headers/rabbitmq create mode 100644 ct/headers/radarr create mode 100644 ct/headers/rdtclient create mode 100644 ct/headers/readarr create mode 100644 ct/headers/readeck create mode 100644 ct/headers/recyclarr create mode 100644 ct/headers/redis create mode 100644 ct/headers/rtsptoweb create mode 100644 ct/headers/runtipi create mode 100644 ct/headers/sabnzbd create mode 100644 ct/headers/semaphore create mode 100644 ct/headers/sftpgo create mode 100644 ct/headers/shinobi create mode 100644 ct/headers/silverbullet create mode 100644 ct/headers/smokeping create mode 100644 ct/headers/snipeit create mode 100644 ct/headers/sonarr create mode 100644 ct/headers/spoolman create mode 100644 ct/headers/sqlserver2022 create mode 100644 ct/headers/stirling-pdf create mode 100644 ct/headers/syncthing create mode 100644 ct/headers/tandoor create mode 100644 ct/headers/tasmoadmin create mode 100644 ct/headers/tautulli create mode 100644 ct/headers/tdarr create mode 100644 ct/headers/technitiumdns create mode 100644 ct/headers/teddycloud delete mode 100644 ct/headers/test.txt create mode 100644 ct/headers/the-lounge create mode 100644 ct/headers/threadfin create mode 100644 ct/headers/tianji create mode 100644 ct/headers/traccar create mode 100644 ct/headers/traefik create mode 100644 ct/headers/transmission create mode 100644 ct/headers/trilium create mode 100644 ct/headers/typesense create mode 100644 ct/headers/ubuntu create mode 100644 ct/headers/umami create mode 100644 ct/headers/umbrel create mode 100644 ct/headers/unbound create mode 100644 ct/headers/unifi create mode 100644 ct/headers/unmanic create mode 100644 ct/headers/uptimekuma create mode 100644 ct/headers/urbackupserver create mode 100644 ct/headers/vaultwarden create mode 100644 ct/headers/vikunja create mode 100644 ct/headers/wallos create mode 100644 ct/headers/wastebin create mode 100644 ct/headers/watchyourlan create mode 100644 ct/headers/wavelog create mode 100644 ct/headers/whisparr create mode 100644 ct/headers/whoogle create mode 100644 ct/headers/wikijs create mode 100644 ct/headers/wireguard create mode 100644 ct/headers/wordpress create mode 100644 ct/headers/yunohost create mode 100644 ct/headers/zabbix create mode 100644 ct/headers/zammad create mode 100644 ct/headers/zigbee2mqtt create mode 100644 ct/headers/zipline create mode 100644 ct/headers/zoraxy create mode 100644 ct/headers/zwave-js-ui diff --git a/ct/headers/2fauth b/ct/headers/2fauth new file mode 100644 index 00000000..b6421719 --- /dev/null +++ b/ct/headers/2fauth @@ -0,0 +1,6 @@ + ___ _________ __ __ + |__ \ / ____/ | __ __/ /_/ /_ + __/ // /_ / /| |/ / / / __/ __ \ + / __// __/ / ___ / /_/ / /_/ / / / +/____/_/ /_/ |_\__,_/\__/_/ /_/ + diff --git a/ct/headers/5etools b/ct/headers/5etools new file mode 100644 index 00000000..1556067f --- /dev/null +++ b/ct/headers/5etools @@ -0,0 +1,6 @@ + ______ __ __ + / ____/__ / /_____ ____ / /____ + /___ \/ _ \/ __/ __ \/ __ \/ / ___/ + ____/ / __/ /_/ /_/ / /_/ / (__ ) +/_____/\___/\__/\____/\____/_/____/ + diff --git a/ct/headers/actualbudget b/ct/headers/actualbudget new file mode 100644 index 00000000..db7f3093 --- /dev/null +++ b/ct/headers/actualbudget @@ -0,0 +1,6 @@ + ___ __ __ ____ __ __ + / | _____/ /___ ______ _/ / / __ )__ ______/ /___ ____ / /_ + / /| |/ ___/ __/ / / / __ `/ / / __ / / / / __ / __ `/ _ \/ __/ + / ___ / /__/ /_/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / __/ /_ +/_/ |_\___/\__/\__,_/\__,_/_/ /_____/\__,_/\__,_/\__, /\___/\__/ + /____/ diff --git a/ct/headers/adguard b/ct/headers/adguard new file mode 100644 index 00000000..2332df17 --- /dev/null +++ b/ct/headers/adguard @@ -0,0 +1,6 @@ + ___ __ __ + / | ____/ /___ ___ ______ __________/ / + / /| |/ __ / __ `/ / / / __ `/ ___/ __ / + / ___ / /_/ / /_/ / /_/ / /_/ / / / /_/ / +/_/ |_\__,_/\__, /\__,_/\__,_/_/ \__,_/ + /____/ diff --git a/ct/headers/adventurelog b/ct/headers/adventurelog new file mode 100644 index 00000000..8e3c88d1 --- /dev/null +++ b/ct/headers/adventurelog @@ -0,0 +1,6 @@ + ___ __ __ __ + / | ____/ / _____ ____ / /___ __________ / / ____ ____ _ + / /| |/ __ / | / / _ \/ __ \/ __/ / / / ___/ _ \/ / / __ \/ __ `/ + / ___ / /_/ /| |/ / __/ / / / /_/ /_/ / / / __/ /___/ /_/ / /_/ / +/_/ |_\__,_/ |___/\___/_/ /_/\__/\__,_/_/ \___/_____/\____/\__, / + /____/ diff --git a/ct/headers/agentdvr b/ct/headers/agentdvr new file mode 100644 index 00000000..dfe67792 --- /dev/null +++ b/ct/headers/agentdvr @@ -0,0 +1,6 @@ + ___ __ ____ _ ______ + / | ____ ____ ____ / /_/ __ \ | / / __ \ + / /| |/ __ `/ _ \/ __ \/ __/ / / / | / / /_/ / + / ___ / /_/ / __/ / / / /_/ /_/ /| |/ / _, _/ +/_/ |_\__, /\___/_/ /_/\__/_____/ |___/_/ |_| + /____/ diff --git a/ct/headers/alpine b/ct/headers/alpine new file mode 100644 index 00000000..ecf1e055 --- /dev/null +++ b/ct/headers/alpine @@ -0,0 +1,6 @@ + ___ __ _ + / | / /___ (_)___ ___ + / /| | / / __ \/ / __ \/ _ \ + / ___ |/ / /_/ / / / / / __/ +/_/ |_/_/ .___/_/_/ /_/\___/ + /_/ diff --git a/ct/headers/alpine-docker b/ct/headers/alpine-docker new file mode 100644 index 00000000..7fd1b265 --- /dev/null +++ b/ct/headers/alpine-docker @@ -0,0 +1,6 @@ + ___ __ _ ____ __ + / | / /___ (_)___ ___ / __ \____ _____/ /_____ _____ + / /| | / / __ \/ / __ \/ _ \______/ / / / __ \/ ___/ //_/ _ \/ ___/ + / ___ |/ / /_/ / / / / / __/_____/ /_/ / /_/ / /__/ ,< / __/ / +/_/ |_/_/ .___/_/_/ /_/\___/ /_____/\____/\___/_/|_|\___/_/ + /_/ diff --git a/ct/headers/alpine-grafana b/ct/headers/alpine-grafana new file mode 100644 index 00000000..3fe493c9 --- /dev/null +++ b/ct/headers/alpine-grafana @@ -0,0 +1,6 @@ + ___ __ _ ______ ____ + / | / /___ (_)___ ___ / ____/________ _/ __/___ _____ ____ _ + / /| | / / __ \/ / __ \/ _ \______/ / __/ ___/ __ `/ /_/ __ `/ __ \/ __ `/ + / ___ |/ / /_/ / / / / / __/_____/ /_/ / / / /_/ / __/ /_/ / / / / /_/ / +/_/ |_/_/ .___/_/_/ /_/\___/ \____/_/ \__,_/_/ \__,_/_/ /_/\__,_/ + /_/ diff --git a/ct/headers/alpine-nextcloud b/ct/headers/alpine-nextcloud new file mode 100644 index 00000000..b27eb0ca --- /dev/null +++ b/ct/headers/alpine-nextcloud @@ -0,0 +1,12 @@ + ___ __ _ _ __ __ __ + / | / /___ (_)___ ___ / | / /__ _ __/ /______/ /___ __ __ + / /| | / / __ \/ / __ \/ _ \______/ |/ / _ \| |/_/ __/ ___/ / __ \/ / / / + / ___ |/ / /_/ / / / / / __/_____/ /| / __/> < +/_/ |_/_/ \___/_/ /_/_/ |___/\___/_____/\____/_/|_| + diff --git a/ct/headers/aria2 b/ct/headers/aria2 new file mode 100644 index 00000000..3080e17b --- /dev/null +++ b/ct/headers/aria2 @@ -0,0 +1,6 @@ + ___ _ ___ + / | _____(_)___ |__ \ + / /| | / ___/ / __ `/_/ / + / ___ |/ / / / /_/ / __/ +/_/ |_/_/ /_/\__,_/____/ + diff --git a/ct/headers/audiobookshelf b/ct/headers/audiobookshelf new file mode 100644 index 00000000..5e249a85 --- /dev/null +++ b/ct/headers/audiobookshelf @@ -0,0 +1,6 @@ + ___ __ __ __ ______ + ____ ___ ______/ (_)___ / /_ ____ ____ / /_______/ /_ ___ / / __/ + / __ `/ / / / __ / / __ \/ __ \/ __ \/ __ \/ //_/ ___/ __ \/ _ \/ / /_ +/ /_/ / /_/ / /_/ / / /_/ / /_/ / /_/ / /_/ / ,< (__ ) / / / __/ / __/ +\__,_/\__,_/\__,_/_/\____/_.___/\____/\____/_/|_/____/_/ /_/\___/_/_/ + diff --git a/ct/headers/authentik b/ct/headers/authentik new file mode 100644 index 00000000..f609964e --- /dev/null +++ b/ct/headers/authentik @@ -0,0 +1,6 @@ + ___ __ __ __ _ __ + / | __ __/ /_/ /_ ___ ____ / /_(_) /__ + / /| |/ / / / __/ __ \/ _ \/ __ \/ __/ / //_/ + / ___ / /_/ / /_/ / / / __/ / / / /_/ / ,< +/_/ |_\__,_/\__/_/ /_/\___/_/ /_/\__/_/_/|_| + diff --git a/ct/headers/autobrr b/ct/headers/autobrr new file mode 100644 index 00000000..56322d59 --- /dev/null +++ b/ct/headers/autobrr @@ -0,0 +1,6 @@ + ___ __ __ + / | __ __/ /_____ / /_ __________ + / /| |/ / / / __/ __ \/ __ \/ ___/ ___/ + / ___ / /_/ / /_/ /_/ / /_/ / / / / +/_/ |_\__,_/\__/\____/_.___/_/ /_/ + diff --git a/ct/headers/bazarr b/ct/headers/bazarr new file mode 100644 index 00000000..e487a77d --- /dev/null +++ b/ct/headers/bazarr @@ -0,0 +1,6 @@ + ____ + / __ )____ _____ ____ ___________ + / __ / __ `/_ / / __ `/ ___/ ___/ + / /_/ / /_/ / / /_/ /_/ / / / / +/_____/\__,_/ /___/\__,_/_/ /_/ + diff --git a/ct/headers/beszel b/ct/headers/beszel new file mode 100644 index 00000000..dcb0d38d --- /dev/null +++ b/ct/headers/beszel @@ -0,0 +1,6 @@ + ____ __ + / __ )___ _________ ___ / / + / __ / _ \/ ___/_ / / _ \/ / + / /_/ / __(__ ) / /_/ __/ / +/_____/\___/____/ /___/\___/_/ + diff --git a/ct/headers/blocky b/ct/headers/blocky new file mode 100644 index 00000000..3bd089ba --- /dev/null +++ b/ct/headers/blocky @@ -0,0 +1,6 @@ + ____ __ __ + / __ )/ /___ _____/ /____ __ + / __ / / __ \/ ___/ //_/ / / / + / /_/ / / /_/ / /__/ ,< / /_/ / +/_____/_/\____/\___/_/|_|\__, / + /____/ diff --git a/ct/headers/bookstack b/ct/headers/bookstack new file mode 100644 index 00000000..f6864666 --- /dev/null +++ b/ct/headers/bookstack @@ -0,0 +1,6 @@ + ____ __ __ __ + / __ )____ ____ / /_______/ /_____ ______/ /__ + / __ / __ \/ __ \/ //_/ ___/ __/ __ `/ ___/ //_/ + / /_/ / /_/ / /_/ / ,< (__ ) /_/ /_/ / /__/ ,< +/_____/\____/\____/_/|_/____/\__/\__,_/\___/_/|_| + diff --git a/ct/headers/bunkerweb b/ct/headers/bunkerweb new file mode 100644 index 00000000..188677c4 --- /dev/null +++ b/ct/headers/bunkerweb @@ -0,0 +1,6 @@ + ____ __ _ __ __ + / __ )__ ______ / /_____ ____| | / /__ / /_ + / __ / / / / __ \/ //_/ _ \/ ___/ | /| / / _ \/ __ \ + / /_/ / /_/ / / / / ,< / __/ / | |/ |/ / __/ /_/ / +/_____/\__,_/_/ /_/_/|_|\___/_/ |__/|__/\___/_.___/ + diff --git a/ct/headers/caddy b/ct/headers/caddy new file mode 100644 index 00000000..6f47f962 --- /dev/null +++ b/ct/headers/caddy @@ -0,0 +1,6 @@ + ______ __ __ + / ____/___ _____/ /___/ /_ __ + / / / __ `/ __ / __ / / / / +/ /___/ /_/ / /_/ / /_/ / /_/ / +\____/\__,_/\__,_/\__,_/\__, / + /____/ diff --git a/ct/headers/calibre-web b/ct/headers/calibre-web new file mode 100644 index 00000000..ae9dc037 --- /dev/null +++ b/ct/headers/calibre-web @@ -0,0 +1,6 @@ + ______ ___ __ _ __ __ + / ____/___ _/ (_) /_ ________ | | / /__ / /_ + / / / __ `/ / / __ \/ ___/ _ \_____| | /| / / _ \/ __ \ +/ /___/ /_/ / / / /_/ / / / __/_____/ |/ |/ / __/ /_/ / +\____/\__,_/_/_/_.___/_/ \___/ |__/|__/\___/_.___/ + diff --git a/ct/headers/casaos b/ct/headers/casaos new file mode 100644 index 00000000..4af563a2 --- /dev/null +++ b/ct/headers/casaos @@ -0,0 +1,6 @@ + ______ ____ _____ + / ____/___ __________ _/ __ \/ ___/ + / / / __ `/ ___/ __ `/ / / /\__ \ +/ /___/ /_/ (__ ) /_/ / /_/ /___/ / +\____/\__,_/____/\__,_/\____//____/ + diff --git a/ct/headers/changedetection b/ct/headers/changedetection new file mode 100644 index 00000000..bf9fefb4 --- /dev/null +++ b/ct/headers/changedetection @@ -0,0 +1,12 @@ + ________ + / ____/ /_ ____ _____ ____ ____ + / / / __ \/ __ `/ __ \/ __ `/ _ \ +/ /___/ / / / /_/ / / / / /_/ / __/ +\____/_/ /_/\__,_/_/ /_/\__, /\___/ + /____/ + ____ __ __ _ + / __ \___ / /____ _____/ /_(_)___ ____ + / / / / _ \/ __/ _ \/ ___/ __/ / __ \/ __ \ + / /_/ / __/ /_/ __/ /__/ /_/ / /_/ / / / / +/_____/\___/\__/\___/\___/\__/_/\____/_/ /_/ + diff --git a/ct/headers/channels b/ct/headers/channels new file mode 100644 index 00000000..7600b6e4 --- /dev/null +++ b/ct/headers/channels @@ -0,0 +1,6 @@ + ________ __ + / ____/ /_ ____ _____ ____ ___ / /____ + / / / __ \/ __ `/ __ \/ __ \/ _ \/ / ___/ +/ /___/ / / / /_/ / / / / / / / __/ (__ ) +\____/_/ /_/\__,_/_/ /_/_/ /_/\___/_/____/ + diff --git a/ct/headers/checkmk b/ct/headers/checkmk new file mode 100644 index 00000000..ff80000c --- /dev/null +++ b/ct/headers/checkmk @@ -0,0 +1,6 @@ + __ __ __ + _____/ /_ ___ _____/ /______ ___ / /__ + / ___/ __ \/ _ \/ ___/ //_/ __ `__ \/ //_/ +/ /__/ / / / __/ /__/ ,< / / / / / / ,< +\___/_/ /_/\___/\___/_/|_/_/ /_/ /_/_/|_| + diff --git a/ct/headers/cloudflared b/ct/headers/cloudflared new file mode 100644 index 00000000..8011c2c2 --- /dev/null +++ b/ct/headers/cloudflared @@ -0,0 +1,6 @@ + ________ ________ __ + / ____/ /___ __ ______/ / __/ /___ _________ ____/ / + / / / / __ \/ / / / __ / /_/ / __ `/ ___/ _ \/ __ / +/ /___/ / /_/ / /_/ / /_/ / __/ / /_/ / / / __/ /_/ / +\____/_/\____/\__,_/\__,_/_/ /_/\__,_/_/ \___/\__,_/ + diff --git a/ct/headers/cockpit b/ct/headers/cockpit new file mode 100644 index 00000000..8eb04a26 --- /dev/null +++ b/ct/headers/cockpit @@ -0,0 +1,6 @@ + ______ __ _ __ + / ____/___ _____/ /______ (_) /_ + / / / __ \/ ___/ //_/ __ \/ / __/ +/ /___/ /_/ / /__/ ,< / /_/ / / /_ +\____/\____/\___/_/|_/ .___/_/\__/ + /_/ diff --git a/ct/headers/commafeed b/ct/headers/commafeed new file mode 100644 index 00000000..06beb9a5 --- /dev/null +++ b/ct/headers/commafeed @@ -0,0 +1,6 @@ + ______ ______ __ + / ____/___ ____ ___ ____ ___ ____ _/ ____/__ ___ ____/ / + / / / __ \/ __ `__ \/ __ `__ \/ __ `/ /_ / _ \/ _ \/ __ / +/ /___/ /_/ / / / / / / / / / / / /_/ / __/ / __/ __/ /_/ / +\____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ \___/\___/\__,_/ + diff --git a/ct/headers/cronicle b/ct/headers/cronicle new file mode 100644 index 00000000..6d6f7cfc --- /dev/null +++ b/ct/headers/cronicle @@ -0,0 +1,6 @@ + ______ _ __ + / ____/________ ____ (_)____/ /__ + / / / ___/ __ \/ __ \/ / ___/ / _ \ +/ /___/ / / /_/ / / / / / /__/ / __/ +\____/_/ \____/_/ /_/_/\___/_/\___/ + diff --git a/ct/headers/daemonsync b/ct/headers/daemonsync new file mode 100644 index 00000000..53207237 --- /dev/null +++ b/ct/headers/daemonsync @@ -0,0 +1,6 @@ + ____ _____ + / __ \____ ____ ____ ___ ____ ____ / ___/__ ______ _____ + / / / / __ `/ _ \/ __ `__ \/ __ \/ __ \ \__ \/ / / / __ \/ ___/ + / /_/ / /_/ / __/ / / / / / /_/ / / / / ___/ / /_/ / / / / /__ +/_____/\__,_/\___/_/ /_/ /_/\____/_/ /_/ /____/\__, /_/ /_/\___/ + /____/ diff --git a/ct/headers/dashy b/ct/headers/dashy new file mode 100644 index 00000000..330f9e3d --- /dev/null +++ b/ct/headers/dashy @@ -0,0 +1,6 @@ + ____ __ + / __ \____ ______/ /_ __ __ + / / / / __ `/ ___/ __ \/ / / / + / /_/ / /_/ (__ ) / / / /_/ / +/_____/\__,_/____/_/ /_/\__, / + /____/ diff --git a/ct/headers/debian b/ct/headers/debian new file mode 100644 index 00000000..a6f474d4 --- /dev/null +++ b/ct/headers/debian @@ -0,0 +1,6 @@ + ____ __ _ + / __ \___ / /_ (_)___ _____ + / / / / _ \/ __ \/ / __ `/ __ \ + / /_/ / __/ /_/ / / /_/ / / / / +/_____/\___/_.___/_/\__,_/_/ /_/ + diff --git a/ct/headers/deconz b/ct/headers/deconz new file mode 100644 index 00000000..fcfceb28 --- /dev/null +++ b/ct/headers/deconz @@ -0,0 +1,6 @@ + __ __________ _ _______ + ____/ /__ / ____/ __ \/ | / /__ / + / __ / _ \/ / / / / / |/ / / / +/ /_/ / __/ /___/ /_/ / /| / / /__ +\__,_/\___/\____/\____/_/ |_/ /____/ + diff --git a/ct/headers/deluge b/ct/headers/deluge new file mode 100644 index 00000000..6dc49d04 --- /dev/null +++ b/ct/headers/deluge @@ -0,0 +1,6 @@ + ____ __ + / __ \___ / /_ ______ ____ + / / / / _ \/ / / / / __ `/ _ \ + / /_/ / __/ / /_/ / /_/ / __/ +/_____/\___/_/\__,_/\__, /\___/ + /____/ diff --git a/ct/headers/docker b/ct/headers/docker new file mode 100644 index 00000000..907ffbae --- /dev/null +++ b/ct/headers/docker @@ -0,0 +1,6 @@ + ____ __ + / __ \____ _____/ /_____ _____ + / / / / __ \/ ___/ //_/ _ \/ ___/ + / /_/ / /_/ / /__/ ,< / __/ / +/_____/\____/\___/_/|_|\___/_/ + diff --git a/ct/headers/dockge b/ct/headers/dockge new file mode 100644 index 00000000..040b66ac --- /dev/null +++ b/ct/headers/dockge @@ -0,0 +1,6 @@ + ____ __ + / __ \____ _____/ /______ ____ + / / / / __ \/ ___/ //_/ __ `/ _ \ + / /_/ / /_/ / /__/ ,< / /_/ / __/ +/_____/\____/\___/_/|_|\__, /\___/ + /____/ diff --git a/ct/headers/dotnetaspwebapi b/ct/headers/dotnetaspwebapi new file mode 100644 index 00000000..f00b63ca --- /dev/null +++ b/ct/headers/dotnetaspwebapi @@ -0,0 +1,12 @@ + ____ __ __ ___ _____ ____ _ __ __ + / __ \____ / /_____ ___ / /_ / | / ___// __ \ | | / /__ / /_ + / / / / __ \/ __/ __ \/ _ \/ __/ / /| | \__ \/ /_/ / | | /| / / _ \/ __ \ + / /_/ / /_/ / /_/ / / / __/ /_ / ___ |___/ / ____/ | |/ |/ / __/ /_/ / +/_____/\____/\__/_/ /_/\___/\__/ /_/ |_/____/_/ |__/|__/\___/_.___/ + + ___ ____ ____ + / | / __ \/ _/ + / /| | / /_/ // / + / ___ |/ ____// / +/_/ |_/_/ /___/ + diff --git a/ct/headers/emby b/ct/headers/emby new file mode 100644 index 00000000..84afb1d6 --- /dev/null +++ b/ct/headers/emby @@ -0,0 +1,6 @@ + ______ __ + / ____/___ ___ / /_ __ __ + / __/ / __ `__ \/ __ \/ / / / + / /___/ / / / / / /_/ / /_/ / +/_____/_/ /_/ /_/_.___/\__, / + /____/ diff --git a/ct/headers/emqx b/ct/headers/emqx new file mode 100644 index 00000000..f6cb5038 --- /dev/null +++ b/ct/headers/emqx @@ -0,0 +1,6 @@ + ________ _______ _ __ + / ____/ |/ / __ \ | |/ / + / __/ / /|_/ / / / / | / + / /___/ / / / /_/ / / | +/_____/_/ /_/\___\_\/_/|_| + diff --git a/ct/headers/ersatztv b/ct/headers/ersatztv new file mode 100644 index 00000000..f47317c3 --- /dev/null +++ b/ct/headers/ersatztv @@ -0,0 +1,6 @@ + ______ __ _______ __ + / ____/_____________ _/ /_____/_ __/ | / / + / __/ / ___/ ___/ __ `/ __/_ / / / | | / / + / /___/ / (__ ) /_/ / /_ / /_/ / | |/ / +/_____/_/ /____/\__,_/\__/ /___/_/ |___/ + diff --git a/ct/headers/esphome b/ct/headers/esphome new file mode 100644 index 00000000..5c9e86c6 --- /dev/null +++ b/ct/headers/esphome @@ -0,0 +1,6 @@ + ___________ ____ __ __ + / ____/ ___// __ \/ / / /___ ____ ___ ___ + / __/ \__ \/ /_/ / /_/ / __ \/ __ `__ \/ _ \ + / /___ ___/ / ____/ __ / /_/ / / / / / / __/ +/_____//____/_/ /_/ /_/\____/_/ /_/ /_/\___/ + diff --git a/ct/headers/evcc b/ct/headers/evcc new file mode 100644 index 00000000..9317a541 --- /dev/null +++ b/ct/headers/evcc @@ -0,0 +1,6 @@ + + ___ _ ____________ + / _ \ | / / ___/ ___/ +/ __/ |/ / /__/ /__ +\___/|___/\___/\___/ + diff --git a/ct/headers/fenrus b/ct/headers/fenrus new file mode 100644 index 00000000..95e073aa --- /dev/null +++ b/ct/headers/fenrus @@ -0,0 +1,6 @@ + ______ + / ____/__ ____ _______ _______ + / /_ / _ \/ __ \/ ___/ / / / ___/ + / __/ / __/ / / / / / /_/ (__ ) +/_/ \___/_/ /_/_/ \__,_/____/ + diff --git a/ct/headers/fhem b/ct/headers/fhem new file mode 100644 index 00000000..fe0a80c4 --- /dev/null +++ b/ct/headers/fhem @@ -0,0 +1,6 @@ + ________ __________ ___ + / ____/ / / / ____/ |/ / + / /_ / /_/ / __/ / /|_/ / + / __/ / __ / /___/ / / / +/_/ /_/ /_/_____/_/ /_/ + diff --git a/ct/headers/firefly b/ct/headers/firefly new file mode 100644 index 00000000..3aabc10c --- /dev/null +++ b/ct/headers/firefly @@ -0,0 +1,6 @@ + _______ ______ + / ____(_)_______ / __/ /_ __ + / /_ / / ___/ _ \/ /_/ / / / / + / __/ / / / / __/ __/ / /_/ / +/_/ /_/_/ \___/_/ /_/\__, / + /____/ diff --git a/ct/headers/flaresolverr b/ct/headers/flaresolverr new file mode 100644 index 00000000..a710dd62 --- /dev/null +++ b/ct/headers/flaresolverr @@ -0,0 +1,6 @@ + ________ _____ __ + / ____/ /___ _________ / ___/____ / / _____ __________ + / /_ / / __ `/ ___/ _ \\__ \/ __ \/ / | / / _ \/ ___/ ___/ + / __/ / / /_/ / / / __/__/ / /_/ / /| |/ / __/ / / / +/_/ /_/\__,_/_/ \___/____/\____/_/ |___/\___/_/ /_/ + diff --git a/ct/headers/flowiseai b/ct/headers/flowiseai new file mode 100644 index 00000000..7011f22b --- /dev/null +++ b/ct/headers/flowiseai @@ -0,0 +1,6 @@ + ________ _ ___ ____ + / ____/ /___ _ __(_)_______ / | / _/ + / /_ / / __ \ | /| / / / ___/ _ \/ /| | / / + / __/ / / /_/ / |/ |/ / (__ ) __/ ___ |_/ / +/_/ /_/\____/|__/|__/_/____/\___/_/ |_/___/ + diff --git a/ct/headers/forgejo b/ct/headers/forgejo new file mode 100644 index 00000000..4fb3af69 --- /dev/null +++ b/ct/headers/forgejo @@ -0,0 +1,6 @@ + ______ _ + / ____/___ _________ ____ (_)___ + / /_ / __ \/ ___/ __ `/ _ \ / / __ \ + / __/ / /_/ / / / /_/ / __/ / / /_/ / +/_/ \____/_/ \__, /\___/_/ /\____/ + /____/ /___/ diff --git a/ct/headers/frigate b/ct/headers/frigate new file mode 100644 index 00000000..94ffd3a7 --- /dev/null +++ b/ct/headers/frigate @@ -0,0 +1,6 @@ + ______ _ __ + / ____/____(_)___ _____ _/ /____ + / /_ / ___/ / __ `/ __ `/ __/ _ \ + / __/ / / / / /_/ / /_/ / /_/ __/ +/_/ /_/ /_/\__, /\__,_/\__/\___/ + /____/ diff --git a/ct/headers/ghost b/ct/headers/ghost new file mode 100644 index 00000000..c16e83b8 --- /dev/null +++ b/ct/headers/ghost @@ -0,0 +1,6 @@ + ________ __ + / ____/ /_ ____ _____/ /_ + / / __/ __ \/ __ \/ ___/ __/ +/ /_/ / / / / /_/ (__ ) /_ +\____/_/ /_/\____/____/\__/ + diff --git a/ct/headers/gitea b/ct/headers/gitea new file mode 100644 index 00000000..7826ac30 --- /dev/null +++ b/ct/headers/gitea @@ -0,0 +1,6 @@ + _______ __ + / ____(_) /____ ____ _ + / / __/ / __/ _ \/ __ `/ +/ /_/ / / /_/ __/ /_/ / +\____/_/\__/\___/\__,_/ + diff --git a/ct/headers/glance b/ct/headers/glance new file mode 100644 index 00000000..abaaa8af --- /dev/null +++ b/ct/headers/glance @@ -0,0 +1,6 @@ + ________ + / ____/ /___ _____ ________ + / / __/ / __ `/ __ \/ ___/ _ \ +/ /_/ / / /_/ / / / / /__/ __/ +\____/_/\__,_/_/ /_/\___/\___/ + diff --git a/ct/headers/glpi b/ct/headers/glpi new file mode 100644 index 00000000..789b6259 --- /dev/null +++ b/ct/headers/glpi @@ -0,0 +1,6 @@ + ________ ____ ____ + / ____/ / / __ \/ _/ + / / __/ / / /_/ // / +/ /_/ / /___/ ____// / +\____/_____/_/ /___/ + diff --git a/ct/headers/go2rtc b/ct/headers/go2rtc new file mode 100644 index 00000000..3a3e8bf8 --- /dev/null +++ b/ct/headers/go2rtc @@ -0,0 +1,6 @@ + ___ __ + ____ _____ |__ \ _____/ /______ + / __ `/ __ \__/ // ___/ __/ ___/ + / /_/ / /_/ / __// / / /_/ /__ + \__, /\____/____/_/ \__/\___/ +/____/ diff --git a/ct/headers/gokapi b/ct/headers/gokapi new file mode 100644 index 00000000..c612c9fa --- /dev/null +++ b/ct/headers/gokapi @@ -0,0 +1,6 @@ + ______ __ _ + / ____/___ / /______ _____ (_) + / / __/ __ \/ //_/ __ `/ __ \/ / +/ /_/ / /_/ / ,< / /_/ / /_/ / / +\____/\____/_/|_|\__,_/ .___/_/ + /_/ diff --git a/ct/headers/gotify b/ct/headers/gotify new file mode 100644 index 00000000..8532f9ef --- /dev/null +++ b/ct/headers/gotify @@ -0,0 +1,6 @@ + ______ __ _ ____ + / ____/___ / /_(_) __/_ __ + / / __/ __ \/ __/ / /_/ / / / +/ /_/ / /_/ / /_/ / __/ /_/ / +\____/\____/\__/_/_/ \__, / + /____/ diff --git a/ct/headers/grafana b/ct/headers/grafana new file mode 100644 index 00000000..9eb8a245 --- /dev/null +++ b/ct/headers/grafana @@ -0,0 +1,6 @@ + ______ ____ + / ____/________ _/ __/___ _____ ____ _ + / / __/ ___/ __ `/ /_/ __ `/ __ \/ __ `/ +/ /_/ / / / /_/ / __/ /_/ / / / / /_/ / +\____/_/ \__,_/_/ \__,_/_/ /_/\__,_/ + diff --git a/ct/headers/grist b/ct/headers/grist new file mode 100644 index 00000000..f82ced4f --- /dev/null +++ b/ct/headers/grist @@ -0,0 +1,6 @@ + ______ _ __ + / ____/____(_)____/ /_ + / / __/ ___/ / ___/ __/ +/ /_/ / / / (__ ) /_ +\____/_/ /_/____/\__/ + diff --git a/ct/headers/grocy b/ct/headers/grocy new file mode 100644 index 00000000..2aad01d4 --- /dev/null +++ b/ct/headers/grocy @@ -0,0 +1,6 @@ + + ____ __________ _______ __ + / __ `/ ___/ __ \/ ___/ / / / + / /_/ / / / /_/ / /__/ /_/ / + \__, /_/ \____/\___/\__, / +/____/ /____/ diff --git a/ct/headers/headscale b/ct/headers/headscale new file mode 100644 index 00000000..ff8ca514 --- /dev/null +++ b/ct/headers/headscale @@ -0,0 +1,6 @@ + __ __ __ __ + / / / /__ ____ _____/ /_____________ _/ /__ + / /_/ / _ \/ __ `/ __ / ___/ ___/ __ `/ / _ \ + / __ / __/ /_/ / /_/ (__ ) /__/ /_/ / / __/ +/_/ /_/\___/\__,_/\__,_/____/\___/\__,_/_/\___/ + diff --git a/ct/headers/heimdall-dashboard b/ct/headers/heimdall-dashboard new file mode 100644 index 00000000..245902b7 --- /dev/null +++ b/ct/headers/heimdall-dashboard @@ -0,0 +1,12 @@ + __ __ _ __ ____ ____ __ __ + / / / /__ (_)___ ___ ____/ /___ _/ / / / __ \____ ______/ /_ / /_ + / /_/ / _ \/ / __ `__ \/ __ / __ `/ / /_____/ / / / __ `/ ___/ __ \/ __ \ + / __ / __/ / / / / / / /_/ / /_/ / / /_____/ /_/ / /_/ (__ ) / / / /_/ / +/_/ /_/\___/_/_/ /_/ /_/\__,_/\__,_/_/_/ /_____/\__,_/____/_/ /_/_.___/ + + __ + ____ ____ __________/ / + / __ \/ __ `/ ___/ __ / +/ /_/ / /_/ / / / /_/ / +\____/\__,_/_/ \__,_/ + diff --git a/ct/headers/hivemq b/ct/headers/hivemq new file mode 100644 index 00000000..ac5216a7 --- /dev/null +++ b/ct/headers/hivemq @@ -0,0 +1,6 @@ + __ ___ __ _______ + / / / (_) _____ / |/ / __ \ + / /_/ / / | / / _ \/ /|_/ / / / / + / __ / /| |/ / __/ / / / /_/ / +/_/ /_/_/ |___/\___/_/ /_/\___\_\ + diff --git a/ct/headers/hoarder b/ct/headers/hoarder new file mode 100644 index 00000000..c09416d4 --- /dev/null +++ b/ct/headers/hoarder @@ -0,0 +1,6 @@ + __ __ __ + / / / /___ ____ __________/ /__ _____ + / /_/ / __ \/ __ `/ ___/ __ / _ \/ ___/ + / __ / /_/ / /_/ / / / /_/ / __/ / +/_/ /_/\____/\__,_/_/ \__,_/\___/_/ + diff --git a/ct/headers/homarr b/ct/headers/homarr new file mode 100644 index 00000000..1bd7a939 --- /dev/null +++ b/ct/headers/homarr @@ -0,0 +1,6 @@ + __ __ + / / / /___ ____ ___ ____ ___________ + / /_/ / __ \/ __ `__ \/ __ `/ ___/ ___/ + / __ / /_/ / / / / / / /_/ / / / / +/_/ /_/\____/_/ /_/ /_/\__,_/_/ /_/ + diff --git a/ct/headers/homeassistant b/ct/headers/homeassistant new file mode 100644 index 00000000..a88730f4 --- /dev/null +++ b/ct/headers/homeassistant @@ -0,0 +1,6 @@ + __ __ ___ _ __ __ + / / / /___ ____ ___ ___ / | __________(_)____/ /_____ _____ / /_ + / /_/ / __ \/ __ `__ \/ _ \ / /| | / ___/ ___/ / ___/ __/ __ `/ __ \/ __/ + / __ / /_/ / / / / / / __/ / ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_ +/_/ /_/\____/_/ /_/ /_/\___/ /_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/ + diff --git a/ct/headers/homeassistant-core b/ct/headers/homeassistant-core new file mode 100644 index 00000000..efbc1643 --- /dev/null +++ b/ct/headers/homeassistant-core @@ -0,0 +1,12 @@ + __ __ + / / / /___ ____ ___ ___ + / /_/ / __ \/ __ `__ \/ _ \ + / __ / /_/ / / / / / / __/ +/_/ /_/\____/_/ /_/ /_/\___/ + + ___ _ __ __ ______ + / | __________(_)____/ /_____ _____ / /_ / ____/___ ________ + / /| | / ___/ ___/ / ___/ __/ __ `/ __ \/ __/_____/ / / __ \/ ___/ _ \ + / ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_/_____/ /___/ /_/ / / / __/ +/_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/ \____/\____/_/ \___/ + diff --git a/ct/headers/homebox b/ct/headers/homebox new file mode 100644 index 00000000..da717216 --- /dev/null +++ b/ct/headers/homebox @@ -0,0 +1,6 @@ + __ __ ____ + / / / /___ ____ ___ ___ / __ )____ _ __ + / /_/ / __ \/ __ `__ \/ _ \/ __ / __ \| |/_/ + / __ / /_/ / / / / / / __/ /_/ / /_/ /> < +/_/ /_/\____/_/ /_/ /_/\___/_____/\____/_/|_| + diff --git a/ct/headers/homebridge b/ct/headers/homebridge new file mode 100644 index 00000000..a3da0240 --- /dev/null +++ b/ct/headers/homebridge @@ -0,0 +1,6 @@ + __ __ __ _ __ + / / / /___ ____ ___ ___ / /_ _____(_)___/ /___ ____ + / /_/ / __ \/ __ `__ \/ _ \/ __ \/ ___/ / __ / __ `/ _ \ + / __ / /_/ / / / / / / __/ /_/ / / / / /_/ / /_/ / __/ +/_/ /_/\____/_/ /_/ /_/\___/_.___/_/ /_/\__,_/\__, /\___/ + /____/ diff --git a/ct/headers/homepage b/ct/headers/homepage new file mode 100644 index 00000000..4ff42a16 --- /dev/null +++ b/ct/headers/homepage @@ -0,0 +1,6 @@ + __ __ + / / / /___ ____ ___ ___ ____ ____ _____ ____ + / /_/ / __ \/ __ `__ \/ _ \/ __ \/ __ `/ __ `/ _ \ + / __ / /_/ / / / / / / __/ /_/ / /_/ / /_/ / __/ +/_/ /_/\____/_/ /_/ /_/\___/ .___/\__,_/\__, /\___/ + /_/ /____/ diff --git a/ct/headers/homer b/ct/headers/homer new file mode 100644 index 00000000..80e4281a --- /dev/null +++ b/ct/headers/homer @@ -0,0 +1,6 @@ + __ __ + / / / /___ ____ ___ ___ _____ + / /_/ / __ \/ __ `__ \/ _ \/ ___/ + / __ / /_/ / / / / / / __/ / +/_/ /_/\____/_/ /_/ /_/\___/_/ + diff --git a/ct/headers/hyperhdr b/ct/headers/hyperhdr new file mode 100644 index 00000000..cbbcfc57 --- /dev/null +++ b/ct/headers/hyperhdr @@ -0,0 +1,6 @@ + __ __ __ ______ ____ + / / / /_ ______ ___ _____/ / / / __ \/ __ \ + / /_/ / / / / __ \/ _ \/ ___/ /_/ / / / / /_/ / + / __ / /_/ / /_/ / __/ / / __ / /_/ / _, _/ +/_/ /_/\__, / .___/\___/_/ /_/ /_/_____/_/ |_| + /____/_/ diff --git a/ct/headers/hyperion b/ct/headers/hyperion new file mode 100644 index 00000000..2c0f7972 --- /dev/null +++ b/ct/headers/hyperion @@ -0,0 +1,6 @@ + __ __ _ + / / / /_ ______ ___ _____(_)___ ____ + / /_/ / / / / __ \/ _ \/ ___/ / __ \/ __ \ + / __ / /_/ / /_/ / __/ / / / /_/ / / / / +/_/ /_/\__, / .___/\___/_/ /_/\____/_/ /_/ + /____/_/ diff --git a/ct/headers/influxdb b/ct/headers/influxdb new file mode 100644 index 00000000..b8efea54 --- /dev/null +++ b/ct/headers/influxdb @@ -0,0 +1,6 @@ + ____ ______ ____ ____ + / _/___ / __/ /_ ___ __/ __ \/ __ ) + / // __ \/ /_/ / / / / |/_/ / / / __ | + _/ // / / / __/ / /_/ /> < +/_/ |_/\___/\__/_____/\____/_/|_| + diff --git a/ct/headers/nextcloudpi b/ct/headers/nextcloudpi new file mode 100644 index 00000000..9aa8b594 --- /dev/null +++ b/ct/headers/nextcloudpi @@ -0,0 +1,6 @@ + _ __ __ ________ ______ _ + / | / /__ _ __/ /_/ ____/ /___ __ ______/ / __ \(_) + / |/ / _ \| |/_/ __/ / / / __ \/ / / / __ / /_/ / / + / /| / __/> < / ____/ / / /_/ /> < +/_/ \__,_/ .___/\___/_/ /_/\___/____/____/ /_/ /_/\__, /_/|_| + /_/ /____/ diff --git a/ct/headers/part-db b/ct/headers/part-db new file mode 100644 index 00000000..fe325550 --- /dev/null +++ b/ct/headers/part-db @@ -0,0 +1,6 @@ + ____ __ ____ ____ + / __ \____ ______/ /_ / __ \/ __ ) + / /_/ / __ `/ ___/ __/_____/ / / / __ | + / ____/ /_/ / / / /_/_____/ /_/ / /_/ / +/_/ \__,_/_/ \__/ /_____/_____/ + diff --git a/ct/headers/pbs b/ct/headers/pbs new file mode 100644 index 00000000..785d90a8 --- /dev/null +++ b/ct/headers/pbs @@ -0,0 +1,6 @@ + ____ ____ _____ + / __ \/ __ ) ___/ + / /_/ / __ \__ \ + / ____/ /_/ /__/ / +/_/ /_____/____/ + diff --git a/ct/headers/peanut b/ct/headers/peanut new file mode 100644 index 00000000..11a2cd5c --- /dev/null +++ b/ct/headers/peanut @@ -0,0 +1,6 @@ + ____ _ ____ ________ + / __ \___ ____ _/ | / / / / /_ __/ + / /_/ / _ \/ __ `/ |/ / / / / / / + / ____/ __/ /_/ / /| / /_/ / / / +/_/ \___/\__,_/_/ |_/\____/ /_/ + diff --git a/ct/headers/petio b/ct/headers/petio new file mode 100644 index 00000000..d8deb745 --- /dev/null +++ b/ct/headers/petio @@ -0,0 +1,6 @@ + ____ __ _ + / __ \___ / /_(_)___ + / /_/ / _ \/ __/ / __ \ + / ____/ __/ /_/ / /_/ / +/_/ \___/\__/_/\____/ + diff --git a/ct/headers/pf2etools b/ct/headers/pf2etools new file mode 100644 index 00000000..b6f7cb10 --- /dev/null +++ b/ct/headers/pf2etools @@ -0,0 +1,6 @@ + ____ _______ ______ __ + / __ \/ __/__ \ ___/_ __/___ ____ / /____ + / /_/ / /_ __/ // _ \/ / / __ \/ __ \/ / ___/ + / ____/ __// __// __/ / / /_/ / /_/ / (__ ) +/_/ /_/ /____/\___/_/ \____/\____/_/____/ + diff --git a/ct/headers/photoprism b/ct/headers/photoprism new file mode 100644 index 00000000..a8a9cabe --- /dev/null +++ b/ct/headers/photoprism @@ -0,0 +1,6 @@ + ____ __ __ ____ _ + / __ \/ /_ ____ / /_____ / __ \_____(_)________ ___ + / /_/ / __ \/ __ \/ __/ __ \/ /_/ / ___/ / ___/ __ `__ \ + / ____/ / / / /_/ / /_/ /_/ / ____/ / / (__ ) / / / / / +/_/ /_/ /_/\____/\__/\____/_/ /_/ /_/____/_/ /_/ /_/ + diff --git a/ct/headers/phpipam b/ct/headers/phpipam new file mode 100644 index 00000000..51ba79de --- /dev/null +++ b/ct/headers/phpipam @@ -0,0 +1,6 @@ + __ ________ ___ __ ___ + ____ / /_ ____ / _/ __ \/ | / |/ / + / __ \/ __ \/ __ \ / // /_/ / /| | / /|_/ / + / /_/ / / / / /_/ // // ____/ ___ |/ / / / + / .___/_/ /_/ .___/___/_/ /_/ |_/_/ /_/ +/_/ /_/ diff --git a/ct/headers/pialert b/ct/headers/pialert new file mode 100644 index 00000000..07f2474c --- /dev/null +++ b/ct/headers/pialert @@ -0,0 +1,6 @@ + ____ _ ___ __ __ + / __ \(_) | / /__ _____/ /_ + / /_/ / / /| | / / _ \/ ___/ __/ + / ____/ / ___ |/ / __/ / / /_ +/_/ /_/_/ |_/_/\___/_/ \__/ + diff --git a/ct/headers/pihole b/ct/headers/pihole new file mode 100644 index 00000000..9a727b22 --- /dev/null +++ b/ct/headers/pihole @@ -0,0 +1,6 @@ + ____ _ __ __ + / __ \(_) /_ ____ / /__ + / /_/ / / __ \/ __ \/ / _ \ + / ____/ / / / / /_/ / / __/ +/_/ /_/_/ /_/\____/_/\___/ + diff --git a/ct/headers/pingvin b/ct/headers/pingvin new file mode 100644 index 00000000..8177f817 --- /dev/null +++ b/ct/headers/pingvin @@ -0,0 +1,6 @@ + ____ _ _ + / __ \(_)___ ____ __ __(_)___ + / /_/ / / __ \/ __ `/ | / / / __ \ + / ____/ / / / / /_/ /| |/ / / / / / +/_/ /_/_/ /_/\__, / |___/_/_/ /_/ + /____/ diff --git a/ct/headers/plex b/ct/headers/plex new file mode 100644 index 00000000..2e27d0b8 --- /dev/null +++ b/ct/headers/plex @@ -0,0 +1,6 @@ + ____ __ + / __ \/ /__ _ __ + / /_/ / / _ \| |/_/ + / ____/ / __/> < +/_/ /_/\___/_/|_| + diff --git a/ct/headers/pocketbase b/ct/headers/pocketbase new file mode 100644 index 00000000..5eea8625 --- /dev/null +++ b/ct/headers/pocketbase @@ -0,0 +1,6 @@ + ____ __ __ __ + / __ \____ _____/ /_____ / /_/ /_ ____ _________ + / /_/ / __ \/ ___/ //_/ _ \/ __/ __ \/ __ `/ ___/ _ \ + / ____/ /_/ / /__/ ,< / __/ /_/ /_/ / /_/ (__ ) __/ +/_/ \____/\___/_/|_|\___/\__/_.___/\__,_/____/\___/ + diff --git a/ct/headers/podman b/ct/headers/podman new file mode 100644 index 00000000..2f81f14a --- /dev/null +++ b/ct/headers/podman @@ -0,0 +1,6 @@ + ____ __ + / __ \____ ____/ /___ ___ ____ _____ + / /_/ / __ \/ __ / __ `__ \/ __ `/ __ \ + / ____/ /_/ / /_/ / / / / / / /_/ / / / / +/_/ \____/\__,_/_/ /_/ /_/\__,_/_/ /_/ + diff --git a/ct/headers/podman-homeassistant b/ct/headers/podman-homeassistant new file mode 100644 index 00000000..c1241da4 --- /dev/null +++ b/ct/headers/podman-homeassistant @@ -0,0 +1,12 @@ + ____ __ __ __ + / __ \____ ____/ /___ ___ ____ _____ / / / /___ ____ ___ ___ + / /_/ / __ \/ __ / __ `__ \/ __ `/ __ \______/ /_/ / __ \/ __ `__ \/ _ \ + / ____/ /_/ / /_/ / / / / / / /_/ / / / /_____/ __ / /_/ / / / / / / __/ +/_/ \____/\__,_/_/ /_/ /_/\__,_/_/ /_/ /_/ /_/\____/_/ /_/ /_/\___/ + + ___ _ __ __ + / | __________(_)____/ /_____ _____ / /_ + / /| | / ___/ ___/ / ___/ __/ __ `/ __ \/ __/ + / ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_ +/_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/ + diff --git a/ct/headers/postgresql b/ct/headers/postgresql new file mode 100644 index 00000000..8297b0ad --- /dev/null +++ b/ct/headers/postgresql @@ -0,0 +1,6 @@ + ____ __ _____ ____ __ + / __ \____ _____/ /_____ _________ / ___// __ \ / / + / /_/ / __ \/ ___/ __/ __ `/ ___/ _ \\__ \/ / / / / / + / ____/ /_/ (__ ) /_/ /_/ / / / __/__/ / /_/ / / /___ +/_/ \____/____/\__/\__, /_/ \___/____/\___\_\/_____/ + /____/ diff --git a/ct/headers/projectsend b/ct/headers/projectsend new file mode 100644 index 00000000..c388eb72 --- /dev/null +++ b/ct/headers/projectsend @@ -0,0 +1,6 @@ + ____ _ __ _____ __ + / __ \_________ (_)__ _____/ /_/ ___/___ ____ ____/ / + / /_/ / ___/ __ \ / / _ \/ ___/ __/\__ \/ _ \/ __ \/ __ / + / ____/ / / /_/ / / / __/ /__/ /_ ___/ / __/ / / / /_/ / +/_/ /_/ \____/_/ /\___/\___/\__//____/\___/_/ /_/\__,_/ + /___/ diff --git a/ct/headers/prometheus b/ct/headers/prometheus new file mode 100644 index 00000000..f5a9cccc --- /dev/null +++ b/ct/headers/prometheus @@ -0,0 +1,6 @@ + ____ __ __ + / __ \_________ ____ ___ ___ / /_/ /_ ___ __ _______ + / /_/ / ___/ __ \/ __ `__ \/ _ \/ __/ __ \/ _ \/ / / / ___/ + / ____/ / / /_/ / / / / / / __/ /_/ / / / __/ /_/ (__ ) +/_/ /_/ \____/_/ /_/ /_/\___/\__/_/ /_/\___/\__,_/____/ + diff --git a/ct/headers/prometheus-alertmanager b/ct/headers/prometheus-alertmanager new file mode 100644 index 00000000..43a4876b --- /dev/null +++ b/ct/headers/prometheus-alertmanager @@ -0,0 +1,12 @@ + ____ __ __ ___ __ + / __ \_________ ____ ___ ___ / /_/ /_ ___ __ _______ / | / / + / /_/ / ___/ __ \/ __ `__ \/ _ \/ __/ __ \/ _ \/ / / / ___/_____/ /| | / / + / ____/ / / /_/ / / / / / / __/ /_/ / / / __/ /_/ (__ )_____/ ___ |/ / +/_/ /_/ \____/_/ /_/ /_/\___/\__/_/ /_/\___/\__,_/____/ /_/ |_/_/ + + __ + ___ _____/ /_____ ___ ____ _____ ____ _____ ____ _____ + / _ \/ ___/ __/ __ `__ \/ __ `/ __ \/ __ `/ __ `/ _ \/ ___/ +/ __/ / / /_/ / / / / / /_/ / / / / /_/ / /_/ / __/ / +\___/_/ \__/_/ /_/ /_/\__,_/_/ /_/\__,_/\__, /\___/_/ + /____/ diff --git a/ct/headers/prowlarr b/ct/headers/prowlarr new file mode 100644 index 00000000..10255b7a --- /dev/null +++ b/ct/headers/prowlarr @@ -0,0 +1,6 @@ + ____ __ + / __ \_________ _ __/ /___ ___________ + / /_/ / ___/ __ \ | /| / / / __ `/ ___/ ___/ + / ____/ / / /_/ / |/ |/ / / /_/ / / / / +/_/ /_/ \____/|__/|__/_/\__,_/_/ /_/ + diff --git a/ct/headers/proxmox-datacenter-manager b/ct/headers/proxmox-datacenter-manager new file mode 100644 index 00000000..bd181cc9 --- /dev/null +++ b/ct/headers/proxmox-datacenter-manager @@ -0,0 +1,18 @@ + __ __ + ____ _________ _ ______ ___ ____ _ __ ____/ /___ _/ /_____ _ + / __ \/ ___/ __ \| |/_/ __ `__ \/ __ \| |/_/_____/ __ / __ `/ __/ __ `/ + / /_/ / / / /_/ /> < +/____/\__,_/_.___/_.___/_/_/|_| + diff --git a/ct/headers/zammad b/ct/headers/zammad new file mode 100644 index 00000000..eb9999df --- /dev/null +++ b/ct/headers/zammad @@ -0,0 +1,6 @@ + _____ __ +/__ / ____ _____ ___ ____ ___ ____ _____/ / + / / / __ `/ __ `__ \/ __ `__ \/ __ `/ __ / + / /__/ /_/ / / / / / / / / / / / /_/ / /_/ / +/____/\__,_/_/ /_/ /_/_/ /_/ /_/\__,_/\__,_/ + diff --git a/ct/headers/zigbee2mqtt b/ct/headers/zigbee2mqtt new file mode 100644 index 00000000..f6925a01 --- /dev/null +++ b/ct/headers/zigbee2mqtt @@ -0,0 +1,6 @@ + _____ _ __ ___ __ _______ ____________ +/__ / (_)___ _/ /_ ___ ___ |__ \ / |/ / __ \/_ __/_ __/ + / / / / __ `/ __ \/ _ \/ _ \__/ // /|_/ / / / / / / / / + / /__/ / /_/ / /_/ / __/ __/ __// / / / /_/ / / / / / +/____/_/\__, /_.___/\___/\___/____/_/ /_/\___\_\/_/ /_/ + /____/ diff --git a/ct/headers/zipline b/ct/headers/zipline new file mode 100644 index 00000000..ce2b4b91 --- /dev/null +++ b/ct/headers/zipline @@ -0,0 +1,6 @@ + _____ _ ___ +/__ / (_)___ / (_)___ ___ + / / / / __ \/ / / __ \/ _ \ + / /__/ / /_/ / / / / / / __/ +/____/_/ .___/_/_/_/ /_/\___/ + /_/ diff --git a/ct/headers/zoraxy b/ct/headers/zoraxy new file mode 100644 index 00000000..f93198af --- /dev/null +++ b/ct/headers/zoraxy @@ -0,0 +1,6 @@ + _____ +/__ / ____ _________ __ ____ __ + / / / __ \/ ___/ __ `/ |/_/ / / / + / /__/ /_/ / / / /_/ /> Date: Fri, 24 Jan 2025 23:36:01 +0000 Subject: [PATCH 02/33] openHAB - Update to Zulu21 (#1734) * Use Zulu 21 instead of 17 * Increase RAM from 2 to 3GB * Revert RAM to 2G * Add https url --- ct/openhab.sh | 2 +- install/openhab-install.sh | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ct/openhab.sh b/ct/openhab.sh index 79e24984..9cd9fc0e 100644 --- a/ct/openhab.sh +++ b/ct/openhab.sh @@ -46,4 +46,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL} or ${TAB}${GATEWAY}${BGN}https://${IP}:8443${CL}" diff --git a/install/openhab-install.sh b/install/openhab-install.sh index 37c90316..675a30e6 100644 --- a/install/openhab-install.sh +++ b/install/openhab-install.sh @@ -21,13 +21,13 @@ $STD apt-get install -y gnupg $STD apt-get install -y apt-transport-https msg_ok "Installed Dependencies" -msg_info "Installing Azul Zulu" +msg_info "Installing Azul Zulu21" wget -qO /etc/apt/trusted.gpg.d/zulu-repo.asc "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xB1998361219BD9C9" wget -q https://cdn.azul.com/zulu/bin/zulu-repo_1.0.0-3_all.deb $STD dpkg -i zulu-repo_1.0.0-3_all.deb $STD apt-get update -$STD apt-get -y install zulu17-jdk -msg_ok "Installed Azul Zulu" +$STD apt-get -y install zulu21-jdk +msg_ok "Installed Azul Zulu21" msg_info "Installing openHAB" curl -fsSL "https://openhab.jfrog.io/artifactory/api/gpg/key/public" | gpg --dearmor >openhab.gpg From c2e0a1a1800632793892f1204026ff4fc913db2f Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 25 Jan 2025 00:36:40 +0100 Subject: [PATCH 03/33] Update CHANGELOG.md (#1738) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 443239b2..edd934b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- openHAB - Update to Zulu21 [@moodyblue](https://github.com/moodyblue) ([#1734](https://github.com/community-scripts/ProxmoxVE/pull/1734)) - Feature: Filebrowser Script > Redesign | Update Logic | Remove Logic [@MickLesk](https://github.com/MickLesk) ([#1716](https://github.com/community-scripts/ProxmoxVE/pull/1716)) - Feature: Ubuntu 22.04 VM > Redesign | Optional HDD-Size Prompt [@MickLesk](https://github.com/MickLesk) ([#1712](https://github.com/community-scripts/ProxmoxVE/pull/1712)) - Feature: Ubuntu 24.04 VM > Redesign | Optional HDD-Size Prompt | cifs support [@MickLesk](https://github.com/MickLesk) ([#1714](https://github.com/community-scripts/ProxmoxVE/pull/1714)) From eddacd786d6147d413904ba17d9ceae43a28c037 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 25 Jan 2025 13:06:51 +0100 Subject: [PATCH 04/33] Update actualbudget.sh --- ct/actualbudget.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index 2680b56a..c6895d6b 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -47,6 +47,7 @@ function update_script() { mkdir -p /opt/actualbudget/ tar -xzf v${RELEASE}.tar.gz >/dev/null 2>&1 mv *ctual-server-*/* /opt/actualbudget + rm -rf /opt/actualbudget/.env mv /opt/actualbudget_bak/.env /opt/actualbudget mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files cd /opt/actualbudget From bd3f823b8616c5f6c3a692a5c47ec21604ef395d Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 25 Jan 2025 21:07:35 +0100 Subject: [PATCH 05/33] Update CHANGELOG.md (#1746) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index edd934b5..2cb1428f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,10 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-01-25 + +### Changed + ## 2025-01-24 ### Changed From ae726129b192740c16201787e1a9fa4747f7dfdc Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 25 Jan 2025 21:19:24 +0100 Subject: [PATCH 06/33] Revert "Update CHANGELOG.md (#1746)" (#1749) This reverts commit bd3f823b8616c5f6c3a692a5c47ec21604ef395d. --- CHANGELOG.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cb1428f..edd934b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,10 +17,6 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow -## 2025-01-25 - -### Changed - ## 2025-01-24 ### Changed From b9cdfc26d01a051aaa5331168fc12472ea2e1e83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Sun, 26 Jan 2025 01:47:24 +0100 Subject: [PATCH 07/33] Added environment variable to accept EULA for SQLServer2022 (#1755) --- install/sqlserver2022-install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/sqlserver2022-install.sh b/install/sqlserver2022-install.sh index 82ceeec9..7e06fe03 100644 --- a/install/sqlserver2022-install.sh +++ b/install/sqlserver2022-install.sh @@ -33,6 +33,7 @@ msg_ok "Setup Server 2022" msg_info "Installing SQL Server Tools" export DEBIAN_FRONTEND=noninteractive +export ACCEPT_EULA=Y curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | tee /etc/apt/sources.list.d/mssql-release.list $STD apt-get update From d596f4a3e0e85ab29dd16faf1b64fd2d144e10d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Sun, 26 Jan 2025 09:25:32 +0100 Subject: [PATCH 08/33] Fixed command to add users (#1762) --- json/the-lounge.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/the-lounge.json b/json/the-lounge.json index 46c86554..a504bea0 100644 --- a/json/the-lounge.json +++ b/json/the-lounge.json @@ -32,7 +32,7 @@ }, "notes": [ { - "text": "The Lounge is running in private mode. Use `sudo -u thelounge thelounge add name` to create users.", + "text": "The Lounge is running in private mode. Use `runuser -u thelounge -- thelounge add usernamehere` to create users.", "type": "info" } ] From 9ff56caafda7a521a960d5e2fcafc7f440b0fe0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Sun, 26 Jan 2025 09:29:53 +0100 Subject: [PATCH 09/33] Added installation of calibre binaries (#1763) --- install/calibre-web-install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/calibre-web-install.sh b/install/calibre-web-install.sh index 1cff7bf0..a091fb41 100644 --- a/install/calibre-web-install.sh +++ b/install/calibre-web-install.sh @@ -35,6 +35,7 @@ msg_ok "Installed Kepubify" msg_info "Installing Calibre-Web" mkdir -p /opt/calibre-web +$STD apt-get install -y calibre $STD wget https://github.com/janeczku/calibre-web/raw/master/library/metadata.db -P /opt/calibre-web $STD pip install calibreweb $STD pip install jsonschema From 796275d1750016f1a7571e28758cf92550489857 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 26 Jan 2025 09:33:42 +0100 Subject: [PATCH 10/33] Update CHANGELOG.md (#1756) --- CHANGELOG.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index edd934b5..125fc88c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,23 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-01-26 + +### Changed + +### 🚀 Updated Scripts + +- Calibre-Web: added installation of calibre binaries [@tremor021](https://github.com/tremor021) ([#1763](https://github.com/community-scripts/ProxmoxVE/pull/1763)) +- Added environment variable to accept EULA for SQLServer2022 [@tremor021](https://github.com/tremor021) ([#1755](https://github.com/community-scripts/ProxmoxVE/pull/1755)) + +### 🌐 Website + +- The Lounge: Fix the command to create new users [@tremor021](https://github.com/tremor021) ([#1762](https://github.com/community-scripts/ProxmoxVE/pull/1762)) + +### 🧰 Maintenance + +- Revert "[Github Action] Update CHANGELOG.md" [@MickLesk](https://github.com/MickLesk) ([#1749](https://github.com/community-scripts/ProxmoxVE/pull/1749)) + ## 2025-01-24 ### Changed From de80e95d6901bd703fc4e0581f16291b13458e30 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 26 Jan 2025 10:43:31 +0100 Subject: [PATCH 11/33] Update CHANGELOG.md (#1764) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 125fc88c..dc4570e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,10 +30,6 @@ Do not break established syntax in this file, as it is automatically updated by - The Lounge: Fix the command to create new users [@tremor021](https://github.com/tremor021) ([#1762](https://github.com/community-scripts/ProxmoxVE/pull/1762)) -### 🧰 Maintenance - -- Revert "[Github Action] Update CHANGELOG.md" [@MickLesk](https://github.com/MickLesk) ([#1749](https://github.com/community-scripts/ProxmoxVE/pull/1749)) - ## 2025-01-24 ### Changed From ba6edcdcafd0fa1cd0bbb7fbac63d10a6256973a Mon Sep 17 00:00:00 2001 From: moodyblue Date: Sun, 26 Jan 2025 11:39:18 +0000 Subject: [PATCH 12/33] openHAB - Use https and include doc url (#1766) * Update openhab.json * Update openhab.sh --- ct/openhab.sh | 5 +++-- json/openhab.json | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ct/openhab.sh b/ct/openhab.sh index 9cd9fc0e..35c407f8 100644 --- a/ct/openhab.sh +++ b/ct/openhab.sh @@ -45,5 +45,6 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" -echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL} or ${TAB}${GATEWAY}${BGN}https://${IP}:8443${CL}" +echo -e "${INFO}${YW} Access it using one of the following URLs:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:8443${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" diff --git a/json/openhab.json b/json/openhab.json index 7c5364ef..1eadbc92 100644 --- a/json/openhab.json +++ b/json/openhab.json @@ -8,8 +8,8 @@ "type": "ct", "updateable": false, "privileged": false, - "interface_port": 8080, - "documentation": null, + "interface_port": 8443, + "documentation": "https://www.openhab.org/docs/", "website": "https://www.openhab.org/", "logo": "https://www.coxprod.org/domotique/wp-content/uploads/2019/01/openhab-logo-square.png", "description": "openHAB is a popular open-source home automation platform that provides a vendor and technology agnostic solution for integrating and automating various smart home devices and services. It supports a wide range of devices and protocols, making it easy to bring together different systems and devices into a unified smart home ecosystem. With its user-friendly interface and powerful automation capabilities, openHAB makes it easy to create custom automations and monitor and control your smart home devices and systems, all from a single interface.", @@ -31,4 +31,4 @@ "password": null }, "notes": [] -} \ No newline at end of file +} From 0af7a5adbfa9adb6b66ef6e6d787d5a443ad3101 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Sun, 26 Jan 2025 14:01:31 +0100 Subject: [PATCH 13/33] Jellyfin: Fix default logging level (#1768) * Fix the ammount of default logging * remove comment Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> --- install/jellyfin-install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/jellyfin-install.sh b/install/jellyfin-install.sh index 3f3f1a61..038fa83b 100644 --- a/install/jellyfin-install.sh +++ b/install/jellyfin-install.sh @@ -51,6 +51,7 @@ EOF # Install Jellyfin using the metapackage (which will fetch jellyfin-server, jellyfin-web, and jellyfin-ffmpeg5) $STD apt-get update $STD apt-get install -y jellyfin +sed -i 's/"MinimumLevel": "Information"/"MinimumLevel": "Error"/g' /etc/jellyfin/logging.json chown -R jellyfin:adm /etc/jellyfin sleep 10 systemctl restart jellyfin From 92057c4ea71b54f7eed6d860350441e67027a48f Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 26 Jan 2025 14:20:29 +0100 Subject: [PATCH 14/33] Update CHANGELOG.md (#1769) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc4570e2..b5e523f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,9 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Jellyfin: Fix default logging level [@tremor021](https://github.com/tremor021) ([#1768](https://github.com/community-scripts/ProxmoxVE/pull/1768)) - Calibre-Web: added installation of calibre binaries [@tremor021](https://github.com/tremor021) ([#1763](https://github.com/community-scripts/ProxmoxVE/pull/1763)) +- openHAB - Use https and include doc url [@moodyblue](https://github.com/moodyblue) ([#1766](https://github.com/community-scripts/ProxmoxVE/pull/1766)) - Added environment variable to accept EULA for SQLServer2022 [@tremor021](https://github.com/tremor021) ([#1755](https://github.com/community-scripts/ProxmoxVE/pull/1755)) ### 🌐 Website From 88c3f56157467cdd04f47a87dd661b922206b5b5 Mon Sep 17 00:00:00 2001 From: Hai-Nam Nguyen Date: Sun, 26 Jan 2025 16:13:54 +0100 Subject: [PATCH 15/33] Fix jellyfin update command (#1771) --- ct/jellyfin.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/jellyfin.sh b/ct/jellyfin.sh index 123f3e94..0e44bcf5 100644 --- a/ct/jellyfin.sh +++ b/ct/jellyfin.sh @@ -35,7 +35,7 @@ function update_script() { msg_info "Updating ${APP} LXC" apt-get update &>/dev/null apt-get -y upgrade &>/dev/null - apt-get --with-new-pkgs upgrade jellyfin jellyfin-server &>/dev/null + apt-get -y --with-new-pkgs upgrade jellyfin jellyfin-server &>/dev/null msg_ok "Updated ${APP} LXC" exit } From 78e6e12c8a50b530d47b99ad778284db92fe97f0 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 26 Jan 2025 17:50:03 +0100 Subject: [PATCH 16/33] Update CHANGELOG.md (#1772) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5e523f1..bd2b7bb4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,9 +23,10 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix jellyfin update command [@jcisio](https://github.com/jcisio) ([#1771](https://github.com/community-scripts/ProxmoxVE/pull/1771)) +- openHAB - Use https and include doc url [@moodyblue](https://github.com/moodyblue) ([#1766](https://github.com/community-scripts/ProxmoxVE/pull/1766)) - Jellyfin: Fix default logging level [@tremor021](https://github.com/tremor021) ([#1768](https://github.com/community-scripts/ProxmoxVE/pull/1768)) - Calibre-Web: added installation of calibre binaries [@tremor021](https://github.com/tremor021) ([#1763](https://github.com/community-scripts/ProxmoxVE/pull/1763)) -- openHAB - Use https and include doc url [@moodyblue](https://github.com/moodyblue) ([#1766](https://github.com/community-scripts/ProxmoxVE/pull/1766)) - Added environment variable to accept EULA for SQLServer2022 [@tremor021](https://github.com/tremor021) ([#1755](https://github.com/community-scripts/ProxmoxVE/pull/1755)) ### 🌐 Website From dfd56aebf2095f75fea557f61e54fb63e7aa4d76 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 27 Jan 2025 12:01:59 +0100 Subject: [PATCH 17/33] New Script: Arch Linux VM (#1780) * New Script: Arch Linux VM * naming iso / qcow2 --- json/archlinux-vm.json | 39 ++++ vm/archlinux-vm.sh | 497 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 536 insertions(+) create mode 100644 json/archlinux-vm.json create mode 100644 vm/archlinux-vm.sh diff --git a/json/archlinux-vm.json b/json/archlinux-vm.json new file mode 100644 index 00000000..828e7570 --- /dev/null +++ b/json/archlinux-vm.json @@ -0,0 +1,39 @@ +{ + "name": "Arch Linux VM", + "slug": "archlinux-vm", + "categories": [ + 2 + ], + "date_created": "2025-01-27", + "type": "vm", + "updateable": false, + "privileged": false, + "interface_port": null, + "documentation": null, + "website": null, + "logo": "https://raw.githubusercontent.com/ArchLinuxStudio/ArchLinuxTutorial/refs/heads/master/docs/arch_seo.png", + "description": "Arch Linux is a highly customizable, independent Linux distribution that gives users complete control over their system. Known for its rolling release model, Arch Linux is always up-to-date with the latest software. It's favored by experienced users who appreciate its minimalist approach, demanding a hands-on installation and configuration process. This level of control and flexibility makes it a popular choice for those who want to tailor their Linux system to their exact needs.", + "install_methods": [ + { + "type": "default", + "script": "/vm/archlinux-vm.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 4, + "os": null, + "version": null + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "doesnt work with lvm and lvmthin disks!", + "type": "warning" + } + ] +} \ No newline at end of file diff --git a/vm/archlinux-vm.sh b/vm/archlinux-vm.sh new file mode 100644 index 00000000..6f08a002 --- /dev/null +++ b/vm/archlinux-vm.sh @@ -0,0 +1,497 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +function header_info { + clear + cat <<"EOF" + ___ __ __ _ _ ____ ___ + / | __________/ /_ / / (_)___ __ ___ __ | | / / |/ / + / /| | / ___/ ___/ __ \ / / / / __ \/ / / / |/_/ | | / / /|_/ / + / ___ |/ / / /__/ / / / / /___/ / / / / /_/ /> < | |/ / / / / +/_/ |_/_/ \___/_/ /_/ /_____/_/_/ /_/\__,_/_/|_| |___/_/ /_/ + +EOF +} +header_info +echo -e "\n Loading..." +GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//') +NEXTID=$(pvesh get /cluster/nextid) + +YW=$(echo "\033[33m") +BL=$(echo "\033[36m") +RD=$(echo "\033[01;31m") +BGN=$(echo "\033[4;92m") +GN=$(echo "\033[1;92m") +DGN=$(echo "\033[32m") +CL=$(echo "\033[m") + +CL=$(echo "\033[m") +BOLD=$(echo "\033[1m") +BFR="\\r\\033[K" +HOLD=" " +TAB=" " + +CM="${TAB}✔️${TAB}${CL}" +CROSS="${TAB}✖️${TAB}${CL}" +INFO="${TAB}💡${TAB}${CL}" +OS="${TAB}🖥️${TAB}${CL}" +CONTAINERTYPE="${TAB}📦${TAB}${CL}" +DISKSIZE="${TAB}💾${TAB}${CL}" +CPUCORE="${TAB}🧠${TAB}${CL}" +RAMSIZE="${TAB}🛠️${TAB}${CL}" +CONTAINERID="${TAB}🆔${TAB}${CL}" +HOSTNAME="${TAB}🏠${TAB}${CL}" +BRIDGE="${TAB}🌉${TAB}${CL}" +GATEWAY="${TAB}🌐${TAB}${CL}" +DEFAULT="${TAB}⚙️${TAB}${CL}" +MACADDRESS="${TAB}🔗${TAB}${CL}" +VLANTAG="${TAB}🏷️${TAB}${CL}" +CREATING="${TAB}🚀${TAB}${CL}" +ADVANCED="${TAB}🧩${TAB}${CL}" + +THIN="discard=on,ssd=1," +set -e +trap 'error_handler $LINENO "$BASH_COMMAND"' ERR +trap cleanup EXIT +function error_handler() { + local exit_code="$?" + local line_number="$1" + local command="$2" + local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}" + echo -e "\n$error_message\n" + cleanup_vmid +} + +function cleanup_vmid() { + if qm status $VMID &>/dev/null; then + qm stop $VMID &>/dev/null + qm destroy $VMID &>/dev/null + fi +} + +function cleanup() { + popd >/dev/null + rm -rf $TEMP_DIR +} + +TEMP_DIR=$(mktemp -d) +pushd $TEMP_DIR >/dev/null +if whiptail --backtitle "Proxmox VE Helper Scripts" --title "Arch Linux VM" --yesno "This will create a New Arch Linux VM. Proceed?" 10 58; then + : +else + header_info && echo -e "${CROSS}${RD}User exited script${CL}\n" && exit +fi + +function msg_info() { + local msg="$1" + echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}" +} + +function msg_ok() { + local msg="$1" + echo -e "${BFR}${CM}${GN}${msg}${CL}" +} + +function msg_error() { + local msg="$1" + echo -e "${BFR}${CROSS}${RD}${msg}${CL}" +} + +function check_root() { + if [[ "$(id -u)" -ne 0 || $(ps -o comm= -p $PPID) == "sudo" ]]; then + clear + msg_error "Please run this script as root." + echo -e "\nExiting..." + sleep 2 + exit + fi +} + +function pve_check() { + if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then + msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported" + echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." + echo -e "Exiting..." + sleep 2 + exit + fi +} + +function arch_check() { + if [ "$(dpkg --print-architecture)" != "amd64" ]; then + echo -e "\n ${INFO}${YWB}This script will not work with PiMox! \n" + echo -e "\n ${YWB}Visit https://github.com/asylumexp/Proxmox for ARM64 support. \n" + echo -e "Exiting..." + sleep 2 + exit + fi +} + +function ssh_check() { + if command -v pveversion >/dev/null 2>&1; then + if [ -n "${SSH_CLIENT:+x}" ]; then + if whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SSH DETECTED" --yesno "It's suggested to use the Proxmox shell instead of SSH, since SSH can create issues while gathering variables. Would you like to proceed with using SSH?" 10 62; then + echo "you've been warned" + else + clear + exit + fi + fi + fi +} + +function exit-script() { + clear + echo -e "\n${CROSS}${RD}User exited script${CL}\n" + exit +} + +function default_settings() { + VMID="$NEXTID" + FORMAT=",efitype=4m" + MACHINE="" + DISK_SIZE="4G" + DISK_CACHE="" + HN="arch-linux" + CPU_TYPE="" + CORE_COUNT="1" + RAM_SIZE="1024" + BRG="vmbr0" + MAC="$GEN_MAC" + VLAN="" + MTU="" + START_VM="yes" + echo -e "${CONTAINERID}${BOLD}${DGN}Virtual Machine ID: ${BGN}${VMID}${CL}" + echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}i440fx${CL}" + echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}${CL}" + echo -e "${DISKSIZE}${BOLD}${DGN}Disk Cache: ${BGN}None${CL}" + echo -e "${HOSTNAME}${BOLD}${DGN}Hostname: ${BGN}${HN}${CL}" + echo -e "${OS}${BOLD}${DGN}CPU Model: ${BGN}KVM64${CL}" + echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}${CORE_COUNT}${CL}" + echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}${CL}" + echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}${BRG}${CL}" + echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}${MAC}${CL}" + echo -e "${VLANTAG}${BOLD}${DGN}VLAN: ${BGN}Default${CL}" + echo -e "${DEFAULT}${BOLD}${DGN}Interface MTU Size: ${BGN}Default${CL}" + echo -e "${GATEWAY}${BOLD}${DGN}Start VM when completed: ${BGN}yes${CL}" + echo -e "${CREATING}${BOLD}${DGN}Creating a Arch Linux VM using the above default settings${CL}" +} + +function advanced_settings() { + while true; do + if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z "$VMID" ]; then + VMID="$NEXTID" + fi + if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then + echo -e "${CROSS}${RD} ID $VMID is already in use${CL}" + sleep 2 + continue + fi + echo -e "${CONTAINERID}${BOLD}${DGN}Virtual Machine ID: ${BGN}$VMID${CL}" + break + else + exit-script + fi + done + + if MACH=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "MACHINE TYPE" --radiolist --cancel-button Exit-Script "Choose Type" 10 58 2 \ + "i440fx" "Machine i440fx" ON \ + "q35" "Machine q35" OFF \ + 3>&1 1>&2 2>&3); then + if [ $MACH = q35 ]; then + echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}$MACH${CL}" + FORMAT="" + MACHINE=" -machine q35" + else + echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}$MACH${CL}" + FORMAT=",efitype=4m" + MACHINE="" + fi + else + exit-script + fi + + if DISK_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Disk Size in GiB (e.g., 10, 20)" 8 58 "$DISK_SIZE" --title "DISK SIZE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + DISK_SIZE=$(echo "$DISK_SIZE" | tr -d ' ') + if [[ "$DISK_SIZE" =~ ^[0-9]+$ ]]; then + DISK_SIZE="${DISK_SIZE}G" + echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}$DISK_SIZE${CL}" + elif [[ "$DISK_SIZE" =~ ^[0-9]+G$ ]]; then + echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}$DISK_SIZE${CL}" + else + echo -e "${DISKSIZE}${BOLD}${RD}Invalid Disk Size. Please use a number (e.g., 10 or 10G).${CL}" + exit-script + fi + else + exit-script + fi + + if DISK_CACHE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "DISK CACHE" --radiolist "Choose" --cancel-button Exit-Script 10 58 2 \ + "0" "None (Default)" ON \ + "1" "Write Through" OFF \ + 3>&1 1>&2 2>&3); then + if [ $DISK_CACHE = "1" ]; then + echo -e "${DISKSIZE}${BOLD}${DGN}Disk Cache: ${BGN}Write Through${CL}" + DISK_CACHE="cache=writethrough," + else + echo -e "${DISKSIZE}${BOLD}${DGN}Disk Cache: ${BGN}None${CL}" + DISK_CACHE="" + fi + else + exit-script + fi + + if VM_NAME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Hostname" 8 58 arch-linux --title "HOSTNAME" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $VM_NAME ]; then + HN="arch-linux" + echo -e "${HOSTNAME}${BOLD}${DGN}Hostname: ${BGN}$HN${CL}" + else + HN=$(echo ${VM_NAME,,} | tr -d ' ') + echo -e "${HOSTNAME}${BOLD}${DGN}Hostname: ${BGN}$HN${CL}" + fi + else + exit-script + fi + + if CPU_TYPE1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "CPU MODEL" --radiolist "Choose" --cancel-button Exit-Script 10 58 2 \ + "0" "KVM64 (Default)" ON \ + "1" "Host" OFF \ + 3>&1 1>&2 2>&3); then + if [ $CPU_TYPE1 = "1" ]; then + echo -e "${OS}${BOLD}${DGN}CPU Model: ${BGN}Host${CL}" + CPU_TYPE=" -cpu host" + else + echo -e "${OS}${BOLD}${DGN}CPU Model: ${BGN}KVM64${CL}" + CPU_TYPE="" + fi + else + exit-script + fi + + if CORE_COUNT=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate CPU Cores" 8 58 2 --title "CORE COUNT" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $CORE_COUNT ]; then + CORE_COUNT="2" + echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}$CORE_COUNT${CL}" + else + echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}$CORE_COUNT${CL}" + fi + else + exit-script + fi + + if RAM_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate RAM in MiB" 8 58 2048 --title "RAM" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $RAM_SIZE ]; then + RAM_SIZE="2048" + echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}$RAM_SIZE${CL}" + else + echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}$RAM_SIZE${CL}" + fi + else + exit-script + fi + + if BRG=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a Bridge" 8 58 vmbr0 --title "BRIDGE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $BRG ]; then + BRG="vmbr0" + echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}" + else + echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}" + fi + else + exit-script + fi + + if MAC1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a MAC Address" 8 58 $GEN_MAC --title "MAC ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $MAC1 ]; then + MAC="$GEN_MAC" + echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}$MAC${CL}" + else + MAC="$MAC1" + echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}$MAC1${CL}" + fi + else + exit-script + fi + + if VLAN1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a Vlan(leave blank for default)" 8 58 --title "VLAN" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $VLAN1 ]; then + VLAN1="Default" + VLAN="" + echo -e "${VLANTAG}${BOLD}${DGN}VLAN: ${BGN}$VLAN1${CL}" + else + VLAN=",tag=$VLAN1" + echo -e "${VLANTAG}${BOLD}${DGN}VLAN: ${BGN}$VLAN1${CL}" + fi + else + exit-script + fi + + if MTU1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Interface MTU Size (leave blank for default)" 8 58 --title "MTU SIZE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $MTU1 ]; then + MTU1="Default" + MTU="" + echo -e "${DEFAULT}${BOLD}${DGN}Interface MTU Size: ${BGN}$MTU1${CL}" + else + MTU=",mtu=$MTU1" + echo -e "${DEFAULT}${BOLD}${DGN}Interface MTU Size: ${BGN}$MTU1${CL}" + fi + else + exit-script + fi + + if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "START VIRTUAL MACHINE" --yesno "Start VM when completed?" 10 58); then + echo -e "${GATEWAY}${BOLD}${DGN}Start VM when completed: ${BGN}yes${CL}" + START_VM="yes" + else + echo -e "${GATEWAY}${BOLD}${DGN}Start VM when completed: ${BGN}no${CL}" + START_VM="no" + fi + + if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create a Arch Linux VM?" --no-button Do-Over 10 58); then + echo -e "${CREATING}${BOLD}${DGN}Creating a Arch Linux VM using the above advanced settings${CL}" + else + header_info + echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings${CL}" + advanced_settings + fi +} + +function start_script() { + if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "SETTINGS" --yesno "Use Default Settings?" --no-button Advanced 10 58); then + header_info + echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings${CL}" + default_settings + else + header_info + echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings${CL}" + advanced_settings + fi +} + +check_root +arch_check +pve_check +ssh_check +start_script + +msg_info "Validating Storage" +while read -r line; do + TAG=$(echo $line | awk '{print $1}') + TYPE=$(echo $line | awk '{printf "%-10s", $2}') + FREE=$(echo $line | numfmt --field 4-6 --from-unit=K --to=iec --format %.2f | awk '{printf( "%9sB", $6)}') + ITEM=" Type: $TYPE Free: $FREE " + OFFSET=2 + if [[ $((${#ITEM} + $OFFSET)) -gt ${MSG_MAX_LENGTH:-} ]]; then + MSG_MAX_LENGTH=$((${#ITEM} + $OFFSET)) + fi + STORAGE_MENU+=("$TAG" "$ITEM" "OFF") +done < <(pvesm status -content images | awk 'NR>1') +VALID=$(pvesm status -content images | awk 'NR>1') +if [ -z "$VALID" ]; then + msg_error "Unable to detect a valid storage location." + exit +elif [ $((${#STORAGE_MENU[@]} / 3)) -eq 1 ]; then + STORAGE=${STORAGE_MENU[0]} +else + while [ -z "${STORAGE:+x}" ]; do + STORAGE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Storage Pools" --radiolist \ + "Which storage pool you would like to use for ${HN}?\nTo make a selection, use the Spacebar.\n" \ + 16 $(($MSG_MAX_LENGTH + 23)) 6 \ + "${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit + done +fi +msg_ok "Using ${CL}${BL}$STORAGE${CL} ${GN}for Storage Location." +msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}." +msg_info "Retrieving the URL for the Arch Linux .iso File" +URL=https://geo.mirror.pkgbuild.com/iso/latest/archlinux-x86_64.iso +sleep 2 +msg_ok "${CL}${BL}${URL}${CL}" +wget -q --show-progress $URL +echo -en "\e[1A\e[0K" +FILE=$(basename $URL) +msg_ok "Downloaded ${CL}${BL}${FILE}${CL}" + +STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}') +case $STORAGE_TYPE in +nfs | dir | cifs) + DISK_EXT=".qcow2" + DISK_REF="$VMID/" + DISK_IMPORT="-format qcow2" + THIN="" + ;; +btrfs) + DISK_EXT=".raw" + DISK_REF="$VMID/" + DISK_IMPORT="-format raw" + FORMAT=",efitype=4m" + THIN="" + ;; +esac +for i in {0,1}; do + disk="DISK$i" + eval DISK${i}=vm-${VMID}-disk-${i}${DISK_EXT:-} + eval DISK${i}_REF=${STORAGE}:${DISK_REF:-}${!disk} +done + +msg_info "Creating a Arch Linux VM" +qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \ + -name $HN -tags community-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci +pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null +qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null +qm set $VMID \ + -efidisk0 ${DISK0_REF}${FORMAT} \ + -scsi0 ${DISK1_REF},${DISK_CACHE}${THIN}size=${DISK_SIZE} \ + -ide2 ${STORAGE}:cloudinit \ + -boot order=scsi0 \ + -serial0 socket >/dev/null +DESCRIPTION=$( + cat < + + Logo + + +

Arch Linux VM

+ +

+ + spend Coffee + +

+ + + + GitHub + + + + Discussions + + + + Issues + + +EOF +) +qm set "$VMID" -description "$DESCRIPTION" >/dev/null +if [ -n "$DISK_SIZE" ]; then + msg_info "Resizing disk to $DISK_SIZE GB" + qm resize $VMID scsi0 ${DISK_SIZE} >/dev/null +else + msg_info "Using default disk size of $DEFAULT_DISK_SIZE GB" + qm resize $VMID scsi0 ${DEFAULT_DISK_SIZE} >/dev/null +fi + +msg_ok "Created a Arch Linux VM ${CL}${BL}(${HN})" +if [ "$START_VM" == "yes" ]; then + msg_info "Starting Arch Linux VM" + qm start $VMID + msg_ok "Started Arch Linux VM" +fi + +msg_ok "Completed Successfully!\n" From 8a6364902eb22b4d3e4caeb24fd5c4e827fa3634 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 27 Jan 2025 12:07:46 +0100 Subject: [PATCH 18/33] Update archlinux-vm.json --- json/archlinux-vm.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/json/archlinux-vm.json b/json/archlinux-vm.json index 828e7570..af787102 100644 --- a/json/archlinux-vm.json +++ b/json/archlinux-vm.json @@ -16,7 +16,7 @@ "install_methods": [ { "type": "default", - "script": "/vm/archlinux-vm.sh", + "script": "vm/archlinux-vm.sh", "resources": { "cpu": 1, "ram": 1024, @@ -36,4 +36,4 @@ "type": "warning" } ] -} \ No newline at end of file +} From b06ad8bde86b492d88d71040e34987f0ec5f491a Mon Sep 17 00:00:00 2001 From: lasharor Date: Mon, 27 Jan 2025 12:43:57 +0100 Subject: [PATCH 19/33] Update archlinux-vm.json (#1782) VM is now double on the website. Suggest to delete it from the name. --- json/archlinux-vm.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/archlinux-vm.json b/json/archlinux-vm.json index af787102..ddd91067 100644 --- a/json/archlinux-vm.json +++ b/json/archlinux-vm.json @@ -1,5 +1,5 @@ { - "name": "Arch Linux VM", + "name": "Arch Linux", "slug": "archlinux-vm", "categories": [ 2 From 4911a7918a536e19b84e0182f4c982cbaadecff0 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:10:05 +0100 Subject: [PATCH 20/33] Website: Add Description for Metadata Categories (#1783) --- json/metadata.json | 52 +++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/json/metadata.json b/json/metadata.json index 78ac3e87..e25f0ee7 100644 --- a/json/metadata.json +++ b/json/metadata.json @@ -1,30 +1,30 @@ { "categories": [ - { "name": "Proxmox & Virtualization", "id": 1, "sort_order": 1.0 }, - { "name": "Operating Systems", "id": 2, "sort_order": 2.0 }, - { "name": "Containers & Docker", "id": 3, "sort_order": 3.0 }, - { "name": "Network & Firewall", "id": 4, "sort_order": 4.0 }, - { "name": "Adblock & DNS", "id": 5, "sort_order": 5.0 }, - { "name": "Authentication & Security", "id": 6, "sort_order": 6.0 }, - { "name": "Backup & Recovery", "id": 7, "sort_order": 7.0 }, - { "name": "Databases", "id": 8, "sort_order": 8.0 }, - { "name": "Monitoring & Analytics", "id": 9, "sort_order": 9.0 }, - { "name": "Dashboards & Frontends", "id": 10, "sort_order": 10.0 }, - { "name": "Files & Downloads", "id": 11, "sort_order": 11.0 }, - { "name": "Documents & Notes", "id": 12, "sort_order": 12.0 }, - { "name": "Media & Streaming", "id": 13, "sort_order": 13.0 }, - { "name": "*Arr Suite", "id": 14, "sort_order": 14.0 }, - { "name": "NVR & Cameras", "id": 15, "sort_order": 15.0 }, - { "name": "IoT & Smart Home", "id": 16, "sort_order": 16.0 }, - { "name": "ZigBee, Z-Wave & Matter", "id": 17, "sort_order": 17.0 }, - { "name": "MQTT & Messaging", "id": 18, "sort_order": 18.0 }, - { "name": "Automation & Scheduling", "id": 19, "sort_order": 19.0 }, - { "name": "AI / Coding & Dev-Tools", "id": 20, "sort_order": 20.0 }, - { "name": "Webservers & Proxies", "id": 21, "sort_order": 21.0 }, - { "name": "Bots & ChatOps", "id": 22, "sort_order": 22.0 }, - { "name": "Finance & Budgeting", "id": 23, "sort_order": 23.0 }, - { "name": "Gaming & Leisure", "id": 24, "sort_order": 24.0 }, - { "name": "Business & ERP", "id": 25, "sort_order": 25.0 }, - { "name": "Miscellaneous", "id": 0, "sort_order": 99.0 } + { "name": "Proxmox & Virtualization", "id": 1, "sort_order": 1.0, "description": "Tools and scripts to manage Proxmox VE and virtualization platforms effectively." }, + { "name": "Operating Systems", "id": 2, "sort_order": 2.0, "description": "Scripts for deploying and managing various operating systems." }, + { "name": "Containers & Docker", "id": 3, "sort_order": 3.0, "description": "Solutions for containerization using Docker and related technologies." }, + { "name": "Network & Firewall", "id": 4, "sort_order": 4.0, "description": "Enhance network security and configure firewalls with ease." }, + { "name": "Adblock & DNS", "id": 5, "sort_order": 5.0, "description": "Optimize your network with DNS and ad-blocking solutions." }, + { "name": "Authentication & Security", "id": 6, "sort_order": 6.0, "description": "Secure your infrastructure with authentication and security tools." }, + { "name": "Backup & Recovery", "id": 7, "sort_order": 7.0, "description": "Reliable backup and recovery scripts to protect your data." }, + { "name": "Databases", "id": 8, "sort_order": 8.0, "description": "Deploy and manage robust database systems with ease." }, + { "name": "Monitoring & Analytics", "id": 9, "sort_order": 9.0, "description": "Monitor system performance and analyze data seamlessly." }, + { "name": "Dashboards & Frontends", "id": 10, "sort_order": 10.0, "description": "Create interactive dashboards and user-friendly frontends." }, + { "name": "Files & Downloads", "id": 11, "sort_order": 11.0, "description": "Manage file sharing and downloading solutions efficiently." }, + { "name": "Documents & Notes", "id": 12, "sort_order": 12.0, "description": "Organize and manage documents and note-taking tools." }, + { "name": "Media & Streaming", "id": 13, "sort_order": 13.0, "description": "Stream and manage media effortlessly across devices." }, + { "name": "*Arr Suite", "id": 14, "sort_order": 14.0, "description": "Automated media management with the popular *Arr suite tools." }, + { "name": "NVR & Cameras", "id": 15, "sort_order": 15.0, "description": "Manage network video recorders and camera setups." }, + { "name": "IoT & Smart Home", "id": 16, "sort_order": 16.0, "description": "Control and automate IoT devices and smart home systems." }, + { "name": "ZigBee, Z-Wave & Matter", "id": 17, "sort_order": 17.0, "description": "Solutions for ZigBee, Z-Wave, and Matter-based device management." }, + { "name": "MQTT & Messaging", "id": 18, "sort_order": 18.0, "description": "Set up reliable messaging and MQTT-based communication systems." }, + { "name": "Automation & Scheduling", "id": 19, "sort_order": 19.0, "description": "Automate tasks and manage scheduling with powerful tools." }, + { "name": "AI / Coding & Dev-Tools", "id": 20, "sort_order": 20.0, "description": "Leverage AI and developer tools for smarter coding workflows." }, + { "name": "Webservers & Proxies", "id": 21, "sort_order": 21.0, "description": "Deploy and configure web servers and proxy solutions." }, + { "name": "Bots & ChatOps", "id": 22, "sort_order": 22.0, "description": "Enhance collaboration with bots and ChatOps integrations." }, + { "name": "Finance & Budgeting", "id": 23, "sort_order": 23.0, "description": "Track expenses and manage budgets efficiently." }, + { "name": "Gaming & Leisure", "id": 24, "sort_order": 24.0, "description": "Scripts for gaming servers and leisure-related tools." }, + { "name": "Business & ERP", "id": 25, "sort_order": 25.0, "description": "Streamline business operations with ERP and management tools." }, + { "name": "Miscellaneous", "id": 0, "sort_order": 99.0, "description": "General scripts and tools that don't fit into other categories." } ] } From 14247ac5a9a32397a8bd648e18a25f557458f4db Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:16:26 +0100 Subject: [PATCH 21/33] Update page.tsx --- frontend/src/app/category-view/page.tsx | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/frontend/src/app/category-view/page.tsx b/frontend/src/app/category-view/page.tsx index 6050f4ae..aec49a34 100644 --- a/frontend/src/app/category-view/page.tsx +++ b/frontend/src/app/category-view/page.tsx @@ -52,6 +52,10 @@ const CategoryView = () => { : text; }; + const getRandomLogos = (scripts: any[], count: number) => { + return scripts.sort(() => Math.random() - 0.5).slice(0, count); + }; + return (
{categories.length === 0 && ( @@ -62,7 +66,7 @@ const CategoryView = () => { -

{selectedCategory.name}

+

{selectedCategory.name}

{selectedCategory.scripts .sort((a, b) => a.name.localeCompare(b.name)) @@ -94,7 +98,7 @@ const CategoryView = () => { ) : (
-

Categories

+

Categories

{categories.reduce((acc, cat) => acc + (cat.scripts?.length || 0), 0)} Total scripts

@@ -107,19 +111,19 @@ const CategoryView = () => { className="cursor-pointer hover:shadow-lg flex flex-col items-center justify-center" > -
- {category.scripts && category.scripts.slice(0, 4).map((script, index) => ( +
+ {category.scripts && getRandomLogos(category.scripts, 5).map((script, index) => ( {script.name ))}

{category.name}

-

- {(category as any).description || "No description available."} +

+ {category.description || "No description available."}

@@ -131,4 +135,4 @@ const CategoryView = () => { ); }; -export default CategoryView; \ No newline at end of file +export default CategoryView; From 5dc1a7d219387c16f16a8b53619b0a1d30e57fb2 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:31:47 +0100 Subject: [PATCH 22/33] Update page.tsx --- frontend/src/app/category-view/page.tsx | 46 +++++++++++++++---------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/frontend/src/app/category-view/page.tsx b/frontend/src/app/category-view/page.tsx index aec49a34..08474eb1 100644 --- a/frontend/src/app/category-view/page.tsx +++ b/frontend/src/app/category-view/page.tsx @@ -52,8 +52,9 @@ const CategoryView = () => { : text; }; - const getRandomLogos = (scripts: any[], count: number) => { - return scripts.sort(() => Math.random() - 0.5).slice(0, count); + const getRandomScripts = (scripts: any[]) => { + if (!scripts || scripts.length <= 5) return scripts; + return scripts.sort(() => 0.5 - Math.random()).slice(0, 5); }; return ( @@ -66,12 +67,16 @@ const CategoryView = () => { -

{selectedCategory.name}

+

{selectedCategory.name}

{selectedCategory.scripts .sort((a, b) => a.name.localeCompare(b.name)) .map((script) => ( - handleScriptClick(script.slug)}> + handleScriptClick(script.slug)} + >
{ />

{script.name}

-

Created at: {script.date_created || "No date available"}

+

+ Created at: {script.date_created || "No date available"} +

{truncateDescription(script.description || "No description available.")}

- CPU: {script.install_methods[0]?.resources.cpu || "N/A"}vCPU | RAM: {script.install_methods[0]?.resources.ram || "N/A"}MB | HDD: {script.install_methods[0]?.resources.hdd || "N/A"}GB + CPU: {script.install_methods[0]?.resources.cpu || "N/A"}vCPU |{" "} + RAM: {script.install_methods[0]?.resources.ram || "N/A"}MB |{" "} + HDD: {script.install_methods[0]?.resources.hdd || "N/A"}GB
@@ -98,12 +107,12 @@ const CategoryView = () => { ) : (
-

Categories

+

Categories

{categories.reduce((acc, cat) => acc + (cat.scripts?.length || 0), 0)} Total scripts

-
+
{categories.map((category) => ( { className="cursor-pointer hover:shadow-lg flex flex-col items-center justify-center" > -
- {category.scripts && getRandomLogos(category.scripts, 5).map((script, index) => ( - {script.name - ))} +
+ {category.scripts && + getRandomScripts(category.scripts).map((script, index) => ( + {script.name + ))}
-

{category.name}

+

{category.name}

{category.description || "No description available."}

From 7e1fb858d72b4fb2bedbce60259a8b5efc3c5792 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:33:58 +0100 Subject: [PATCH 23/33] Update page.tsx --- frontend/src/app/category-view/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/category-view/page.tsx b/frontend/src/app/category-view/page.tsx index 08474eb1..fc490308 100644 --- a/frontend/src/app/category-view/page.tsx +++ b/frontend/src/app/category-view/page.tsx @@ -133,7 +133,7 @@ const CategoryView = () => {

{category.name}

- {category.description || "No description available."} + {(category as any).description || "No description available."}

From 030174f508bcba5a1533e6c29ff86be18ce2ae10 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:48:19 +0100 Subject: [PATCH 24/33] Update page.tsx --- frontend/src/app/category-view/page.tsx | 32 +++++++++++++------------ 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/frontend/src/app/category-view/page.tsx b/frontend/src/app/category-view/page.tsx index fc490308..2d2e198b 100644 --- a/frontend/src/app/category-view/page.tsx +++ b/frontend/src/app/category-view/page.tsx @@ -78,26 +78,28 @@ const CategoryView = () => { onClick={() => handleScriptClick(script.slug)} > -
+
+

{script.name}

+

+ Created at: {script.date_created || "No date available"} +

+
+
{script.name} -
-

{script.name}

-

- Created at: {script.date_created || "No date available"} -

-

- {truncateDescription(script.description || "No description available.")} -

-
-
- CPU: {script.install_methods[0]?.resources.cpu || "N/A"}vCPU |{" "} - RAM: {script.install_methods[0]?.resources.ram || "N/A"}MB |{" "} - HDD: {script.install_methods[0]?.resources.hdd || "N/A"}GB +
+

+ {truncateDescription(script.description || "No description available.")} +

+
+ CPU: {script.install_methods[0]?.resources.cpu || "N/A"}vCPU |{" "} + RAM: {script.install_methods[0]?.resources.ram || "N/A"}MB |{" "} + HDD: {script.install_methods[0]?.resources.hdd || "N/A"}GB +
@@ -120,6 +122,7 @@ const CategoryView = () => { className="cursor-pointer hover:shadow-lg flex flex-col items-center justify-center" > +

{category.name}

{category.scripts && getRandomScripts(category.scripts).map((script, index) => ( @@ -131,7 +134,6 @@ const CategoryView = () => { /> ))}
-

{category.name}

{(category as any).description || "No description available."}

From ce1a38eb50358a94b4f34302848e6e951f319689 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:53:00 +0100 Subject: [PATCH 25/33] Update page.tsx --- frontend/src/app/category-view/page.tsx | 27 +++++++++++++++---------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/frontend/src/app/category-view/page.tsx b/frontend/src/app/category-view/page.tsx index 2d2e198b..cad896ff 100644 --- a/frontend/src/app/category-view/page.tsx +++ b/frontend/src/app/category-view/page.tsx @@ -58,17 +58,17 @@ const CategoryView = () => { }; return ( -
+
{categories.length === 0 && (

No categories available. Please check the API endpoint.

)} {selectedCategory ? (
- -

{selectedCategory.name}

-
+

{selectedCategory.name}

+
{selectedCategory.scripts .sort((a, b) => a.name.localeCompare(b.name)) .map((script) => ( @@ -108,29 +108,34 @@ const CategoryView = () => {
) : (
-
-

Categories

+
+

Categories

{categories.reduce((acc, cat) => acc + (cat.scripts?.length || 0), 0)} Total scripts

-
+
{categories.map((category) => ( handleCategoryClick(category)} - className="cursor-pointer hover:shadow-lg flex flex-col items-center justify-center" + className="cursor-pointer hover:shadow-lg flex flex-col items-center justify-center py-6" > -

{category.name}

-
+

{category.name}

+
{category.scripts && getRandomScripts(category.scripts).map((script, index) => ( {script.name { + e.stopPropagation(); // Prevent card click + handleScriptClick(script.slug); + }} + className="h-8 w-8 object-contain cursor-pointer hover:scale-110 transition-transform" /> ))}
From ac25b5a7027dc06faf5c10ca783de3f5e0d9d90b Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:56:09 +0100 Subject: [PATCH 26/33] Update page.tsx --- frontend/src/app/category-view/page.tsx | 94 ++++++++++++++++--------- 1 file changed, 60 insertions(+), 34 deletions(-) diff --git a/frontend/src/app/category-view/page.tsx b/frontend/src/app/category-view/page.tsx index cad896ff..a6da9419 100644 --- a/frontend/src/app/category-view/page.tsx +++ b/frontend/src/app/category-view/page.tsx @@ -4,15 +4,18 @@ import React, { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { Card, CardContent } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; +import { ChevronLeft, ChevronRight } from "lucide-react"; import { Category } from "@/lib/types"; const defaultLogo = "/default-logo.png"; // Fallback logo path const MAX_DESCRIPTION_LENGTH = 100; // Set max length for description +const MAX_LOGOS = 5; // Max logos to display at once const CategoryView = () => { const [categories, setCategories] = useState([]); const [selectedCategory, setSelectedCategory] = useState(null); + const [logoIndex, setLogoIndex] = useState(0); // Keeps track of logo pagination const router = useRouter(); useEffect(() => { @@ -36,10 +39,12 @@ const CategoryView = () => { const handleCategoryClick = (category: Category) => { setSelectedCategory(category); + setLogoIndex(0); // Reset logo pagination when switching categories }; const handleBackClick = () => { setSelectedCategory(null); + setLogoIndex(0); // Reset logo pagination when going back }; const handleScriptClick = (scriptSlug: string) => { @@ -52,9 +57,8 @@ const CategoryView = () => { : text; }; - const getRandomScripts = (scripts: any[]) => { - if (!scripts || scripts.length <= 5) return scripts; - return scripts.sort(() => 0.5 - Math.random()).slice(0, 5); + const getVisibleLogos = (scripts: any[]) => { + return scripts.slice(logoIndex, logoIndex + MAX_LOGOS); }; return ( @@ -78,29 +82,27 @@ const CategoryView = () => { onClick={() => handleScriptClick(script.slug)} > -
-

{script.name}

-

- Created at: {script.date_created || "No date available"} -

-
-
+
{script.name} -
-
-

- {truncateDescription(script.description || "No description available.")} -

-
- CPU: {script.install_methods[0]?.resources.cpu || "N/A"}vCPU |{" "} - RAM: {script.install_methods[0]?.resources.ram || "N/A"}MB |{" "} - HDD: {script.install_methods[0]?.resources.hdd || "N/A"}GB +
+

{script.name}

+

+ Created at: {script.date_created || "No date available"} +

+

+ {truncateDescription(script.description || "No description available.")} +

+
+ CPU: {script.install_methods[0]?.resources.cpu || "N/A"}vCPU |{" "} + RAM: {script.install_methods[0]?.resources.ram || "N/A"}MB |{" "} + HDD: {script.install_methods[0]?.resources.hdd || "N/A"}GB +
))} @@ -123,21 +125,45 @@ const CategoryView = () => { >

{category.name}

-
- {category.scripts && - getRandomScripts(category.scripts).map((script, index) => ( - {script.name { - e.stopPropagation(); // Prevent card click - handleScriptClick(script.slug); - }} - className="h-8 w-8 object-contain cursor-pointer hover:scale-110 transition-transform" - /> - ))} +
+ +
+ {category.scripts && + getVisibleLogos(category.scripts).map((script, index) => ( + {script.name { + e.stopPropagation(); // Prevent card click + handleScriptClick(script.slug); + }} + className="h-8 w-8 object-contain cursor-pointer hover:scale-110 transition-transform" + /> + ))} +
+

{(category as any).description || "No description available."} From 719da560d1d8abbc1eb264e9302795ac45166656 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:59:26 +0100 Subject: [PATCH 27/33] Update page.tsx --- frontend/src/app/category-view/page.tsx | 44 +++++++++++++++++++------ 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/frontend/src/app/category-view/page.tsx b/frontend/src/app/category-view/page.tsx index a6da9419..031a8271 100644 --- a/frontend/src/app/category-view/page.tsx +++ b/frontend/src/app/category-view/page.tsx @@ -15,7 +15,7 @@ const MAX_LOGOS = 5; // Max logos to display at once const CategoryView = () => { const [categories, setCategories] = useState([]); const [selectedCategory, setSelectedCategory] = useState(null); - const [logoIndex, setLogoIndex] = useState(0); // Keeps track of logo pagination + const [logoIndexes, setLogoIndexes] = useState>({}); // Track logo index for each category const router = useRouter(); useEffect(() => { @@ -29,6 +29,13 @@ const CategoryView = () => { const data = await response.json(); console.log("Fetched categories:", data); // Debugging setCategories(data); + + // Initialize logo indexes for all categories + const initialIndexes = data.reduce((acc: Record, category: Category) => { + acc[category.name] = 0; + return acc; + }, {}); + setLogoIndexes(initialIndexes); } catch (error) { console.error("Error fetching categories:", error); } @@ -39,12 +46,10 @@ const CategoryView = () => { const handleCategoryClick = (category: Category) => { setSelectedCategory(category); - setLogoIndex(0); // Reset logo pagination when switching categories }; const handleBackClick = () => { setSelectedCategory(null); - setLogoIndex(0); // Reset logo pagination when going back }; const handleScriptClick = (scriptSlug: string) => { @@ -57,8 +62,25 @@ const CategoryView = () => { : text; }; - const getVisibleLogos = (scripts: any[]) => { - return scripts.slice(logoIndex, logoIndex + MAX_LOGOS); + const getVisibleLogos = (scripts: any[], categoryName: string) => { + const index = logoIndexes[categoryName] || 0; + return scripts.slice(index, index + MAX_LOGOS); + }; + + const updateLogoIndex = (categoryName: string, direction: "prev" | "next", totalScripts: number) => { + setLogoIndexes((prev) => { + const currentIndex = prev[categoryName] || 0; + if (direction === "prev") { + return { ...prev, [categoryName]: Math.max(0, currentIndex - MAX_LOGOS) }; + } + if (direction === "next") { + return { + ...prev, + [categoryName]: Math.min(currentIndex + MAX_LOGOS, totalScripts - MAX_LOGOS), + }; + } + return prev; + }); }; return ( @@ -129,17 +151,17 @@ const CategoryView = () => {

{category.scripts && - getVisibleLogos(category.scripts).map((script, index) => ( + getVisibleLogos(category.scripts, category.name).map((script, index) => ( { -

{selectedCategory.name}

+ {/* Header with Navigation */} +
+ +

{categories[selectedCategoryIndex].name}

+ +
+ + {/* Scripts Grid */}
- {selectedCategory.scripts + {categories[selectedCategoryIndex].scripts .sort((a, b) => a.name.localeCompare(b.name)) .map((script) => ( {

Created at: {script.date_created || "No date available"}

-

+

{truncateDescription(script.description || "No description available.")}

-
- CPU: {script.install_methods[0]?.resources.cpu || "N/A"}vCPU |{" "} - RAM: {script.install_methods[0]?.resources.ram || "N/A"}MB |{" "} - HDD: {script.install_methods[0]?.resources.hdd || "N/A"}GB -
+ {renderResources(script)} ))}
+ + {/* Back to Categories Button */} +
+ +
) : (
+ {/* Categories Grid */}

Categories

@@ -139,56 +161,14 @@ const CategoryView = () => {

- {categories.map((category) => ( + {categories.map((category, index) => ( handleCategoryClick(category)} + onClick={() => handleCategoryClick(index)} className="cursor-pointer hover:shadow-lg flex flex-col items-center justify-center py-6" >

{category.name}

-
- -
- {category.scripts && - getVisibleLogos(category.scripts, category.name).map((script, index) => ( - {script.name { - e.stopPropagation(); // Prevent card click - handleScriptClick(script.slug); - }} - className="h-8 w-8 object-contain cursor-pointer hover:scale-110 transition-transform" - /> - ))} -
- -

{(category as any).description || "No description available."}

From 43f05b3abadf254377ee070740b2ab8785274abf Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 27 Jan 2025 14:07:56 +0100 Subject: [PATCH 29/33] Update page.tsx --- frontend/src/app/category-view/page.tsx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/category-view/page.tsx b/frontend/src/app/category-view/page.tsx index 37b70319..12cfbcfb 100644 --- a/frontend/src/app/category-view/page.tsx +++ b/frontend/src/app/category-view/page.tsx @@ -67,14 +67,21 @@ const CategoryView = () => { const cpu = script.install_methods[0]?.resources.cpu; const ram = script.install_methods[0]?.resources.ram; const hdd = script.install_methods[0]?.resources.hdd; - + const resourceParts = []; if (cpu) resourceParts.push(CPU: {cpu}vCPU); if (ram) resourceParts.push(RAM: {ram}MB); if (hdd) resourceParts.push(HDD: {hdd}GB); - + return resourceParts.length > 0 ? ( -
{resourceParts.reduce((prev, curr) => [prev, " | ", curr])}
+
+ {resourceParts.map((part, index) => ( + + {part} + {index < resourceParts.length - 1 && " | "} + + ))} +
) : null; }; From 47bf8e6f8622d596f1a289714e37f29adf5763b5 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 27 Jan 2025 14:13:16 +0100 Subject: [PATCH 30/33] Update page.tsx --- frontend/src/app/category-view/page.tsx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/frontend/src/app/category-view/page.tsx b/frontend/src/app/category-view/page.tsx index 12cfbcfb..4797f74a 100644 --- a/frontend/src/app/category-view/page.tsx +++ b/frontend/src/app/category-view/page.tsx @@ -176,6 +176,22 @@ const CategoryView = () => { >

{category.name}

+
+ {category.scripts && + category.scripts.slice(0, 5).map((script, i) => ( + {script.name { + e.stopPropagation(); // Verhindert Klick auf die Kategorie + handleScriptClick(script.slug); + }} + /> + ))} +

{(category as any).description || "No description available."}

From adfbff63bc56fb35942af314c7e9c3be5197900f Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 27 Jan 2025 14:15:42 +0100 Subject: [PATCH 31/33] Update page.tsx --- frontend/src/app/category-view/page.tsx | 46 +++++++++++++------------ 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/frontend/src/app/category-view/page.tsx b/frontend/src/app/category-view/page.tsx index 4797f74a..0b5ffa15 100644 --- a/frontend/src/app/category-view/page.tsx +++ b/frontend/src/app/category-view/page.tsx @@ -67,12 +67,12 @@ const CategoryView = () => { const cpu = script.install_methods[0]?.resources.cpu; const ram = script.install_methods[0]?.resources.ram; const hdd = script.install_methods[0]?.resources.hdd; - + const resourceParts = []; if (cpu) resourceParts.push(CPU: {cpu}vCPU); if (ram) resourceParts.push(RAM: {ram}MB); if (hdd) resourceParts.push(HDD: {hdd}GB); - + return resourceParts.length > 0 ? (
{resourceParts.map((part, index) => ( @@ -85,6 +85,14 @@ const CategoryView = () => { ) : null; }; + const renderType = (type: string) => { + return ( + + {type.toUpperCase()} + + ); + }; + return (
{categories.length === 0 && ( @@ -122,25 +130,19 @@ const CategoryView = () => { onClick={() => handleScriptClick(script.slug)} > -
- {script.name} -
-

{script.name}

-

- Created at: {script.date_created || "No date available"} -

-

- {truncateDescription(script.description || "No description available.")} -

-
+
+

{script.name}

+ {renderType(script.type || "MISC")}
+

+ Created at: {script.date_created || "No date available"} +

+

+ {truncateDescription(script.description || "No description available.")} +

{renderResources(script)} @@ -162,9 +164,9 @@ const CategoryView = () => {
{/* Categories Grid */}
-

Categories

+

Categories

- {categories.reduce((acc, cat) => acc + (cat.scripts?.length || 0), 0)} Total scripts + {new Set(categories.flatMap((cat) => cat.scripts.map((s) => s.slug))).size} Total scripts

From 8cd3669edbbcc3e6c2355b81db79c168572f8d1a Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 27 Jan 2025 14:21:10 +0100 Subject: [PATCH 32/33] Update page.tsx --- frontend/src/app/category-view/page.tsx | 93 +++++++++++++++++++------ 1 file changed, 70 insertions(+), 23 deletions(-) diff --git a/frontend/src/app/category-view/page.tsx b/frontend/src/app/category-view/page.tsx index 0b5ffa15..95b7388f 100644 --- a/frontend/src/app/category-view/page.tsx +++ b/frontend/src/app/category-view/page.tsx @@ -4,6 +4,7 @@ import React, { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { Card, CardContent } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; +import { Badge } from "@/components/ui/badge"; import { ChevronLeft, ChevronRight } from "lucide-react"; import { Category } from "@/lib/types"; @@ -11,9 +12,24 @@ const defaultLogo = "/default-logo.png"; // Fallback logo path const MAX_DESCRIPTION_LENGTH = 100; // Set max length for description const MAX_LOGOS = 5; // Max logos to display at once +const formattedBadge = (type: string) => { + switch (type) { + case "vm": + return VM; + case "ct": + return ( + LXC + ); + case "misc": + return MISC; + } + return null; +}; + const CategoryView = () => { const [categories, setCategories] = useState([]); const [selectedCategoryIndex, setSelectedCategoryIndex] = useState(null); + const [logoIndices, setLogoIndices] = useState<{ [key: string]: number }>({}); const router = useRouter(); useEffect(() => { @@ -27,6 +43,13 @@ const CategoryView = () => { const data = await response.json(); console.log("Fetched categories:", data); // Debugging setCategories(data); + + // Initialize logo indices + const initialLogoIndices: { [key: string]: number } = {}; + data.forEach((category: any) => { + initialLogoIndices[category.name] = 0; + }); + setLogoIndices(initialLogoIndices); } catch (error) { console.error("Error fetching categories:", error); } @@ -57,6 +80,22 @@ const CategoryView = () => { } }; + const switchLogos = (categoryName: string, direction: "prev" | "next") => { + setLogoIndices((prev) => { + const currentIndex = prev[categoryName] || 0; + const category = categories.find((cat) => cat.name === categoryName); + if (!category || !category.scripts) return prev; + + const totalLogos = category.scripts.length; + const newIndex = + direction === "prev" + ? (currentIndex - MAX_LOGOS + totalLogos) % totalLogos + : (currentIndex + MAX_LOGOS) % totalLogos; + + return { ...prev, [categoryName]: newIndex }; + }); + }; + const truncateDescription = (text: string) => { return text.length > MAX_DESCRIPTION_LENGTH ? `${text.slice(0, MAX_DESCRIPTION_LENGTH)}...` @@ -85,14 +124,6 @@ const CategoryView = () => { ) : null; }; - const renderType = (type: string) => { - return ( - - {type.toUpperCase()} - - ); - }; - return (
{categories.length === 0 && ( @@ -132,7 +163,7 @@ const CategoryView = () => {

{script.name}

- {renderType(script.type || "MISC")} + {formattedBadge(script.type || "misc")}

Created at: {script.date_created || "No date available"} @@ -178,21 +209,37 @@ const CategoryView = () => { >

{category.name}

-
+
+ {category.scripts && - category.scripts.slice(0, 5).map((script, i) => ( - {script.name { - e.stopPropagation(); // Verhindert Klick auf die Kategorie - handleScriptClick(script.slug); - }} - /> - ))} + category.scripts + .slice(logoIndices[category.name] || 0, (logoIndices[category.name] || 0) + MAX_LOGOS) + .map((script, i) => ( + {script.name { + e.stopPropagation(); + handleScriptClick(script.slug); + }} + /> + ))} +

{(category as any).description || "No description available."} From 38a540b87a8040190b7eb36b1a5c327f8f050285 Mon Sep 17 00:00:00 2001 From: GarryG Date: Mon, 27 Jan 2025 15:05:06 +0100 Subject: [PATCH 33/33] Added change of the mobile GUI to disable nag request (#1785) --- misc/post-pmg-install.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/misc/post-pmg-install.sh b/misc/post-pmg-install.sh index d29fbf2a..c5f4ed30 100644 --- a/misc/post-pmg-install.sh +++ b/misc/post-pmg-install.sh @@ -120,8 +120,11 @@ EOF yes) whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. Check their official website's Support Subscriptions for pricing. Without their dedicated work, we wouldn't have this exceptional software." 10 58 msg_info "Disabling subscription nag" + # Normal GUI: echo "DPkg::Post-Invoke { \"dpkg -V proxmox-widget-toolkit | grep -q '/proxmoxlib\.js$'; if [ \$? -eq 1 ]; then { echo 'Removing subscription nag from UI...'; sed -i '/data\.status.*{/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; }; fi\"; };" >/etc/apt/apt.conf.d/no-nag-script - apt --reinstall install proxmox-widget-toolkit &>/dev/null + # JS-Library used when accessing via mobile device browser + echo "DPkg::Post-Invoke { \"dpkg -V pmg-gui | grep -q '/pmgmanagerlib-mobile\.js$'; if [ \$? -eq 1 ]; then { echo 'Removing subscription nag from Mobile UI...'; sed -i '/data\.status.*{/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; }; fi\"; };" >/etc/apt/apt.conf.d/no-nag-script + apt --reinstall install proxmox-widget-toolkit pmg-gui &>/dev/null msg_ok "Disabled subscription nag (Delete browser cache)" ;; no)