├── .editorconfig ├── .gitattributes ├── .github ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTOR_AND_GUIDES │ ├── CODE-AUDIT.md │ ├── CONTRIBUTING.md │ ├── USER_SUBMITTED_GUIDES.md │ ├── ct │ │ ├── AppName.md │ │ └── AppName.sh │ ├── install │ │ ├── AppName-install.md │ │ └── AppName-install.sh │ └── json │ │ ├── AppName.json │ │ └── AppName.md ├── DISCUSSION_TEMPLATE │ └── request-script.yml ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ ├── config.yml │ ├── feature_request.yml │ ├── frontend_report.yml │ └── task.yml ├── autolabeler-config.json ├── changelog-pr-config.json ├── pull_request_template.md ├── runner │ └── docker │ │ └── gh-runner-self.dockerfile └── workflows │ ├── auto-update-app-headers.yml │ ├── autolabeler.yml │ ├── changelog-pr.yml │ ├── close-discussion.yml │ ├── close-ttek-issues.yaml │ ├── close_issue_in_dev.yaml │ ├── crawl-versions.yaml │ ├── create-docker-for-runner.yml │ ├── delete-json-branch.yml │ ├── frontend-cicd.yml │ ├── github-release.yml │ ├── script-test.yml │ ├── script_format.yml │ ├── scripts │ ├── app-test │ │ ├── pr-alpine-install.func │ │ ├── pr-build.func │ │ ├── pr-create-lxc.sh │ │ └── pr-install.func │ ├── generate-app-headers.sh │ ├── update-json.sh │ └── update_json_date.sh │ ├── update-json-date.yml │ └── validate-filenames.yml ├── .gitignore ├── .vscode ├── .editorconfig ├── extensions.json └── settings.json ├── CHANGELOG.md ├── LICENSE ├── README.md ├── SECURITY.md ├── api ├── .env.example ├── go.mod ├── go.sum └── main.go ├── ct ├── 2fauth.sh ├── actualbudget.sh ├── adguard.sh ├── adventurelog.sh ├── agentdvr.sh ├── alpine-adguard.sh ├── alpine-bitmagnet.sh ├── alpine-docker.sh ├── alpine-gatus.sh ├── alpine-gitea.sh ├── alpine-grafana.sh ├── alpine-it-tools.sh ├── alpine-komodo.sh ├── alpine-mariadb.sh ├── alpine-nextcloud.sh ├── alpine-node-red.sh ├── alpine-postgresql.sh ├── alpine-prometheus.sh ├── alpine-rclone.sh ├── alpine-redis.sh ├── alpine-tinyauth.sh ├── alpine-traefik.sh ├── alpine-transmission.sh ├── alpine-vaultwarden.sh ├── alpine-wireguard.sh ├── alpine-zigbee2mqtt.sh ├── alpine.sh ├── apache-cassandra.sh ├── apache-couchdb.sh ├── apache-guacamole.sh ├── apache-tika.sh ├── apache-tomcat.sh ├── apt-cacher-ng.sh ├── archivebox.sh ├── argus.sh ├── aria2.sh ├── asterisk.sh ├── audiobookshelf.sh ├── authelia.sh ├── autobrr.sh ├── babybuddy.sh ├── backrest.sh ├── baikal.sh ├── barcode-buddy.sh ├── bazarr.sh ├── beszel.sh ├── bitmagnet.sh ├── blocky.sh ├── bookstack.sh ├── bunkerweb.sh ├── bytestash.sh ├── caddy.sh ├── calibre-web.sh ├── casaos.sh ├── changedetection.sh ├── channels.sh ├── checkmk.sh ├── cloudflare-ddns.sh ├── cloudflared.sh ├── cockpit.sh ├── commafeed.sh ├── configarr.sh ├── cosmos.sh ├── crafty-controller.sh ├── create_lxc.sh ├── cronicle.sh ├── cross-seed.sh ├── cryptpad.sh ├── daemonsync.sh ├── dashy.sh ├── debian.sh ├── deconz.sh ├── deluge.sh ├── docker.sh ├── dockge.sh ├── docmost.sh ├── documenso.sh ├── dolibarr.sh ├── dotnetaspwebapi.sh ├── duplicati.sh ├── elementsynapse.sh ├── emby.sh ├── emqx.sh ├── ersatztv.sh ├── esphome.sh ├── evcc.sh ├── excalidraw.sh ├── fenrus.sh ├── fhem.sh ├── fileflows.sh ├── firefly.sh ├── flaresolverr.sh ├── flowiseai.sh ├── fluid-calendar.sh ├── forgejo.sh ├── freepbx.sh ├── freshrss.sh ├── frigate.sh ├── fumadocs.sh ├── gatus.sh ├── ghost.sh ├── gitea.sh ├── glance.sh ├── glpi.sh ├── go2rtc.sh ├── gokapi.sh ├── gomft.sh ├── gotify.sh ├── grafana.sh ├── graylog.sh ├── grist.sh ├── grocy.sh ├── habitica.sh ├── headers │ ├── 2fauth │ ├── actualbudget │ ├── adguard │ ├── adventurelog │ ├── agentdvr │ ├── alpine │ ├── alpine-adguard │ ├── alpine-bitmagnet │ ├── alpine-docker │ ├── alpine-gatus │ ├── alpine-gitea │ ├── alpine-grafana │ ├── alpine-it-tools │ ├── alpine-komodo │ ├── alpine-mariadb │ ├── alpine-nextcloud │ ├── alpine-node-red │ ├── alpine-postgresql │ ├── alpine-prometheus │ ├── alpine-rclone │ ├── alpine-redis │ ├── alpine-tinyauth │ ├── alpine-traefik │ ├── alpine-transmission │ ├── alpine-vaultwarden │ ├── alpine-wireguard │ ├── alpine-zigbee2mqtt │ ├── apache-cassandra │ ├── apache-couchdb │ ├── apache-guacamole │ ├── apache-tika │ ├── apache-tomcat │ ├── apt-cacher-ng │ ├── archivebox │ ├── argus │ ├── aria2 │ ├── asterisk │ ├── audiobookshelf │ ├── authelia │ ├── autobrr │ ├── babybuddy │ ├── backrest │ ├── baikal │ ├── barcode-buddy │ ├── bazarr │ ├── beszel │ ├── bitmagnet │ ├── blocky │ ├── bookstack │ ├── bunkerweb │ ├── bytestash │ ├── caddy │ ├── calibre-web │ ├── casaos │ ├── changedetection │ ├── channels │ ├── checkmk │ ├── cloudflare-ddns │ ├── cloudflared │ ├── cockpit │ ├── commafeed │ ├── configarr │ ├── cosmos │ ├── crafty-controller │ ├── cronicle │ ├── cross-seed │ ├── cryptpad │ ├── daemonsync │ ├── dashy │ ├── debian │ ├── deconz │ ├── deluge │ ├── docker │ ├── dockge │ ├── docmost │ ├── documenso │ ├── dolibarr │ ├── dotnetaspwebapi │ ├── duplicati │ ├── elementsynapse │ ├── emby │ ├── emqx │ ├── ersatztv │ ├── esphome │ ├── evcc │ ├── excalidraw │ ├── fenrus │ ├── fhem │ ├── fileflows │ ├── firefly │ ├── flaresolverr │ ├── flowiseai │ ├── fluid-calendar │ ├── forgejo │ ├── freepbx │ ├── freshrss │ ├── frigate │ ├── fumadocs │ ├── gatus │ ├── ghost │ ├── gitea │ ├── glance │ ├── glpi │ ├── go2rtc │ ├── gokapi │ ├── gomft │ ├── gotify │ ├── grafana │ ├── graylog │ ├── grist │ ├── grocy │ ├── habitica │ ├── headscale │ ├── heimdall-dashboard │ ├── hev-socks5-server │ ├── hivemq │ ├── hoarder │ ├── homarr │ ├── homeassistant │ ├── homeassistant-core │ ├── homebox │ ├── homebridge │ ├── homepage │ ├── homer │ ├── hyperhdr │ ├── hyperion │ ├── immich │ ├── influxdb │ ├── inspircd │ ├── inventree │ ├── iobroker │ ├── iventoy │ ├── jackett │ ├── jellyfin │ ├── jellyseerr │ ├── jenkins │ ├── jupyternotebook │ ├── karakeep │ ├── kasm │ ├── kavita │ ├── keycloak │ ├── kimai │ ├── koillection │ ├── kometa │ ├── komga │ ├── komodo │ ├── kubo │ ├── lazylibrarian │ ├── lidarr │ ├── linkwarden │ ├── listmonk │ ├── lldap │ ├── lubelogger │ ├── mafl │ ├── magicmirror │ ├── mariadb │ ├── matterbridge │ ├── mattermost │ ├── mediamtx │ ├── medusa │ ├── meilisearch │ ├── memos │ ├── meshcentral │ ├── metube │ ├── minio │ ├── mongodb │ ├── monica │ ├── motioneye │ ├── mqtt │ ├── mylar3 │ ├── myspeed │ ├── mysql │ ├── n8n │ ├── navidrome │ ├── neo4j │ ├── netbox │ ├── nextcloudpi │ ├── nextpvr │ ├── nginxproxymanager │ ├── nocodb │ ├── node-red │ ├── nodebb │ ├── notifiarr │ ├── npmplus │ ├── ntfy │ ├── nxwitness │ ├── nzbget │ ├── oauth2-proxy │ ├── octoprint │ ├── odoo │ ├── ollama │ ├── omada │ ├── ombi │ ├── omv │ ├── onedev │ ├── opengist │ ├── openhab │ ├── openobserve │ ├── openproject │ ├── openwebui │ ├── openziti-controller │ ├── openziti-tunnel │ ├── outline │ ├── overseerr │ ├── owncast │ ├── pairdrop │ ├── paperless-ai │ ├── paperless-gpt │ ├── paperless-ngx │ ├── part-db │ ├── paymenter │ ├── peanut │ ├── pelican-panel │ ├── pelican-wings │ ├── petio │ ├── pf2etools │ ├── photoprism │ ├── phpipam │ ├── pialert │ ├── pihole │ ├── pingvin │ ├── plant-it │ ├── plex │ ├── pocketbase │ ├── pocketid │ ├── podman │ ├── podman-homeassistant │ ├── postgresql │ ├── privatebin │ ├── projectsend │ ├── prometheus │ ├── prometheus-alertmanager │ ├── prometheus-paperless-ngx-exporter │ ├── prometheus-pve-exporter │ ├── prowlarr │ ├── proxmox-backup-server │ ├── proxmox-datacenter-manager │ ├── proxmox-mail-gateway │ ├── ps5-mqtt │ ├── pterodactyl-panel │ ├── pterodactyl-wings │ ├── pulse │ ├── qbittorrent │ ├── rabbitmq │ ├── radarr │ ├── radicale │ ├── rclone │ ├── rdtclient │ ├── reactive-resume │ ├── readarr │ ├── readeck │ ├── recyclarr │ ├── redis │ ├── revealjs │ ├── runtipi │ ├── rustdeskserver │ ├── sabnzbd │ ├── searxng │ ├── seelf │ ├── semaphore │ ├── sftpgo │ ├── shinobi │ ├── silverbullet │ ├── slskd │ ├── smokeping │ ├── snipeit │ ├── sonarr │ ├── spoolman │ ├── sqlserver2022 │ ├── stirling-pdf │ ├── streamlink-webui │ ├── suwayomiserver │ ├── syncthing │ ├── tandoor │ ├── tasmoadmin │ ├── tasmocompiler │ ├── tautulli │ ├── tdarr │ ├── technitiumdns │ ├── teddycloud │ ├── the-lounge │ ├── threadfin │ ├── tianji │ ├── traccar │ ├── traefik │ ├── transmission │ ├── trilium │ ├── typesense │ ├── ubuntu │ ├── umami │ ├── umlautadaptarr │ ├── unbound │ ├── unifi │ ├── unmanic │ ├── uptimekuma │ ├── urbackupserver │ ├── vaultwarden │ ├── victoriametrics │ ├── vikunja │ ├── wallos │ ├── wastebin │ ├── watcharr │ ├── watchyourlan │ ├── wavelog │ ├── wazuh │ ├── web-check │ ├── wger │ ├── whisparr │ ├── wikijs │ ├── wireguard │ ├── wordpress │ ├── yt-dlp-webui │ ├── yunohost │ ├── zabbix │ ├── zammad │ ├── zerotier-one │ ├── zigbee2mqtt │ ├── zipline │ ├── zitadel │ ├── zoraxy │ └── zwave-js-ui ├── headscale.sh ├── heimdall-dashboard.sh ├── hev-socks5-server.sh ├── hivemq.sh ├── hoarder.sh ├── homarr.sh ├── homeassistant-core.sh ├── homeassistant.sh ├── homebox.sh ├── homebridge.sh ├── homepage.sh ├── homer.sh ├── hyperhdr.sh ├── hyperion.sh ├── immich.sh ├── influxdb.sh ├── inspircd.sh ├── inventree.sh ├── iobroker.sh ├── iventoy.sh ├── jackett.sh ├── jellyfin.sh ├── jellyseerr.sh ├── jenkins.sh ├── jupyternotebook.sh ├── karakeep.sh ├── kasm.sh ├── kavita.sh ├── keycloak.sh ├── kimai.sh ├── koillection.sh ├── kometa.sh ├── komga.sh ├── komodo.sh ├── kubo.sh ├── lazylibrarian.sh ├── lidarr.sh ├── linkwarden.sh ├── listmonk.sh ├── lldap.sh ├── lubelogger.sh ├── mafl.sh ├── magicmirror.sh ├── mariadb.sh ├── matterbridge.sh ├── mattermost.sh ├── mediamtx.sh ├── medusa.sh ├── meilisearch.sh ├── memos.sh ├── meshcentral.sh ├── metube.sh ├── minio.sh ├── mongodb.sh ├── monica.sh ├── motioneye.sh ├── mqtt.sh ├── mylar3.sh ├── myspeed.sh ├── mysql.sh ├── n8n.sh ├── navidrome.sh ├── neo4j.sh ├── netbox.sh ├── nextcloudpi.sh ├── nextpvr.sh ├── nginxproxymanager.sh ├── nocodb.sh ├── node-red.sh ├── nodebb.sh ├── notifiarr.sh ├── npmplus.sh ├── ntfy.sh ├── nxwitness.sh ├── nzbget.sh ├── oauth2-proxy.sh ├── octoprint.sh ├── odoo.sh ├── ollama.sh ├── omada.sh ├── ombi.sh ├── omv.sh ├── onedev.sh ├── opengist.sh ├── openhab.sh ├── openobserve.sh ├── openproject.sh ├── openwebui.sh ├── openziti-controller.sh ├── openziti-tunnel.sh ├── outline.sh ├── overseerr.sh ├── owncast.sh ├── pairdrop.sh ├── paperless-ai.sh ├── paperless-gpt.sh ├── paperless-ngx.sh ├── part-db.sh ├── paymenter.sh ├── peanut.sh ├── pelican-panel.sh ├── pelican-wings.sh ├── petio.sh ├── pf2etools.sh ├── photoprism.sh ├── phpipam.sh ├── pialert.sh ├── pihole.sh ├── pingvin.sh ├── plant-it.sh ├── plex.sh ├── pocketbase.sh ├── pocketid.sh ├── podman-homeassistant.sh ├── podman.sh ├── postgresql.sh ├── privatebin.sh ├── projectsend.sh ├── prometheus-alertmanager.sh ├── prometheus-paperless-ngx-exporter.sh ├── prometheus-pve-exporter.sh ├── prometheus.sh ├── prowlarr.sh ├── proxmox-backup-server.sh ├── proxmox-datacenter-manager.sh ├── proxmox-mail-gateway.sh ├── ps5-mqtt.sh ├── pterodactyl-panel.sh ├── pterodactyl-wings.sh ├── pulse.sh ├── qbittorrent.sh ├── rabbitmq.sh ├── radarr.sh ├── radicale.sh ├── rclone.sh ├── rdtclient.sh ├── reactive-resume.sh ├── readarr.sh ├── readeck.sh ├── recyclarr.sh ├── redis.sh ├── revealjs.sh ├── runtipi.sh ├── rustdeskserver.sh ├── sabnzbd.sh ├── searxng.sh ├── seelf.sh ├── semaphore.sh ├── sftpgo.sh ├── shinobi.sh ├── silverbullet.sh ├── slskd.sh ├── smokeping.sh ├── snipeit.sh ├── sonarr.sh ├── spoolman.sh ├── sqlserver2022.sh ├── stirling-pdf.sh ├── streamlink-webui.sh ├── suwayomiserver.sh ├── syncthing.sh ├── tandoor.sh ├── tasmoadmin.sh ├── tasmocompiler.sh ├── tautulli.sh ├── tdarr.sh ├── technitiumdns.sh ├── teddycloud.sh ├── the-lounge.sh ├── threadfin.sh ├── tianji.sh ├── traccar.sh ├── traefik.sh ├── transmission.sh ├── trilium.sh ├── typesense.sh ├── ubuntu.sh ├── umami.sh ├── umlautadaptarr.sh ├── unbound.sh ├── unifi.sh ├── unmanic.sh ├── uptimekuma.sh ├── urbackupserver.sh ├── vaultwarden.sh ├── victoriametrics.sh ├── vikunja.sh ├── wallos.sh ├── wastebin.sh ├── watcharr.sh ├── watchyourlan.sh ├── wavelog.sh ├── wazuh.sh ├── web-check.sh ├── wger.sh ├── whisparr.sh ├── wikijs.sh ├── wireguard.sh ├── wordpress.sh ├── yt-dlp-webui.sh ├── yunohost.sh ├── zabbix.sh ├── zammad.sh ├── zerotier-one.sh ├── zigbee2mqtt.sh ├── zipline.sh ├── zitadel.sh ├── zoraxy.sh └── zwave-js-ui.sh ├── frontend ├── .eslintrc.json ├── .gitignore ├── .prettierignore ├── .prettierrc ├── LICENSE ├── components.json ├── next.config.mjs ├── package-lock.json ├── package.json ├── postcss.config.mjs ├── public │ ├── defaultimg.png │ ├── json │ │ ├── 2fauth.json │ │ ├── actualbudget.json │ │ ├── add-lxc-iptag.json │ │ ├── add-netbird-lxc.json │ │ ├── add-tailscale-lxc.json │ │ ├── adguard.json │ │ ├── adventurelog.json │ │ ├── agentdvr.json │ │ ├── all-templates.json │ │ ├── alpine-it-tools.json │ │ ├── alpine-tinyauth.json │ │ ├── alpine.json │ │ ├── apache-cassandra.json │ │ ├── apache-couchdb.json │ │ ├── apache-guacamole.json │ │ ├── apache-tika.json │ │ ├── apache-tomcat.json │ │ ├── apt-cacher-ng.json │ │ ├── archivebox.json │ │ ├── archlinux-vm.json │ │ ├── argus.json │ │ ├── aria2.json │ │ ├── asterisk.json │ │ ├── audiobookshelf.json │ │ ├── authelia.json │ │ ├── autobrr.json │ │ ├── babybuddy.json │ │ ├── backrest.json │ │ ├── baikal.json │ │ ├── barcode-buddy.json │ │ ├── bazarr.json │ │ ├── beszel.json │ │ ├── bitmagnet.json │ │ ├── blocky.json │ │ ├── bookstack.json │ │ ├── bunkerweb.json │ │ ├── bytestash.json │ │ ├── caddy.json │ │ ├── calibre-web.json │ │ ├── casaos.json │ │ ├── changedetection.json │ │ ├── channels.json │ │ ├── checkmk.json │ │ ├── clean-lxcs.json │ │ ├── clean-orphaned-lvm.json │ │ ├── cloudflare-ddns.json │ │ ├── cloudflared.json │ │ ├── cockpit.json │ │ ├── coder-code-server.json │ │ ├── commafeed.json │ │ ├── configarr.json │ │ ├── cosmos.json │ │ ├── crafty-controller.json │ │ ├── cron-update-lxcs.json │ │ ├── cronicle.json │ │ ├── cross-seed.json │ │ ├── crowdsec.json │ │ ├── cryptpad.json │ │ ├── daemonsync.json │ │ ├── dashy.json │ │ ├── debian-vm.json │ │ ├── debian.json │ │ ├── deconz.json │ │ ├── deluge.json │ │ ├── docker-vm.json │ │ ├── docker.json │ │ ├── dockge.json │ │ ├── docmost.json │ │ ├── documenso.json │ │ ├── dolibarr.json │ │ ├── dotnetaspwebapi.json │ │ ├── duplicati.json │ │ ├── elementsynapse.json │ │ ├── emby.json │ │ ├── emqx.json │ │ ├── ersatztv.json │ │ ├── esphome.json │ │ ├── evcc.json │ │ ├── excalidraw.json │ │ ├── fenrus.json │ │ ├── fhem.json │ │ ├── filebrowser.json │ │ ├── fileflows.json │ │ ├── firefly.json │ │ ├── flaresolverr.json │ │ ├── flowiseai.json │ │ ├── fluid-calendar.json │ │ ├── forgejo.json │ │ ├── freepbx.json │ │ ├── freshrss.json │ │ ├── frigate.json │ │ ├── fstrim.json │ │ ├── fumadocs.json │ │ ├── gatus.json │ │ ├── ghost.json │ │ ├── gitea.json │ │ ├── glance.json │ │ ├── glances.json │ │ ├── glpi.json │ │ ├── go2rtc.json │ │ ├── gokapi.json │ │ ├── gomft.json │ │ ├── gotify.json │ │ ├── grafana.json │ │ ├── graylog.json │ │ ├── grist.json │ │ ├── grocy.json │ │ ├── habitica.json │ │ ├── haos-vm.json │ │ ├── headscale.json │ │ ├── heimdall-dashboard.json │ │ ├── hev-socks5-server.json │ │ ├── hivemq.json │ │ ├── homarr.json │ │ ├── homeassistant-core.json │ │ ├── homeassistant.json │ │ ├── homebox.json │ │ ├── homebridge.json │ │ ├── homepage.json │ │ ├── homer.json │ │ ├── host-backup.json │ │ ├── hyperhdr.json │ │ ├── hyperion.json │ │ ├── immich.json │ │ ├── influxdb.json │ │ ├── inspircd.json │ │ ├── inventree.json │ │ ├── iobroker.json │ │ ├── iventoy.json │ │ ├── jackett.json │ │ ├── jellyfin.json │ │ ├── jellyseerr.json │ │ ├── jenkins.json │ │ ├── jupyternotebook.json │ │ ├── karakeep.json │ │ ├── kasm.json │ │ ├── kavita.json │ │ ├── kernel-clean.json │ │ ├── kernel-pin.json │ │ ├── keycloak.json │ │ ├── kimai.json │ │ ├── koillection.json │ │ ├── kometa.json │ │ ├── komga.json │ │ ├── komodo.json │ │ ├── kubo.json │ │ ├── lazylibrarian.json │ │ ├── lidarr.json │ │ ├── linkwarden.json │ │ ├── listmonk.json │ │ ├── lldap.json │ │ ├── lubelogger.json │ │ ├── lxc-delete.json │ │ ├── mafl.json │ │ ├── magicmirror.json │ │ ├── mariadb.json │ │ ├── matterbridge.json │ │ ├── mattermost.json │ │ ├── mediamtx.json │ │ ├── medusa.json │ │ ├── meilisearch.json │ │ ├── memos.json │ │ ├── meshcentral.json │ │ ├── metadata.json │ │ ├── metube.json │ │ ├── microcode.json │ │ ├── mikrotik-routeros.json │ │ ├── minio.json │ │ ├── mongodb.json │ │ ├── monica.json │ │ ├── monitor-all.json │ │ ├── motioneye.json │ │ ├── mqtt.json │ │ ├── mylar3.json │ │ ├── myspeed.json │ │ ├── mysql.json │ │ ├── n8n.json │ │ ├── navidrome.json │ │ ├── neo4j.json │ │ ├── netbox.json │ │ ├── netdata.json │ │ ├── nextcloud-vm.json │ │ ├── nextcloudpi.json │ │ ├── nextpvr.json │ │ ├── nginxproxymanager.json │ │ ├── nocodb.json │ │ ├── node-red.json │ │ ├── nodebb.json │ │ ├── notifiarr.json │ │ ├── npmplus.json │ │ ├── ntfy.json │ │ ├── nxwitness.json │ │ ├── nzbget.json │ │ ├── oauth2-proxy.json │ │ ├── octoprint.json │ │ ├── odoo.json │ │ ├── olivetin.json │ │ ├── ollama.json │ │ ├── omada.json │ │ ├── ombi.json │ │ ├── omv.json │ │ ├── onedev.json │ │ ├── opengist.json │ │ ├── openhab.json │ │ ├── openobserve.json │ │ ├── openproject.json │ │ ├── openwebui.json │ │ ├── openwrt.json │ │ ├── openziti-controller.json │ │ ├── openziti-tunnel.json │ │ ├── opnsense-vm.json │ │ ├── outline.json │ │ ├── overseerr.json │ │ ├── owncast.json │ │ ├── owncloud-vm.json │ │ ├── pairdrop.json │ │ ├── paperless-ai.json │ │ ├── paperless-gpt.json │ │ ├── paperless-ngx.json │ │ ├── part-db.json │ │ ├── paymenter.json │ │ ├── pbs-microcode.json │ │ ├── peanut.json │ │ ├── pelican-panel.json │ │ ├── pelican-wings.json │ │ ├── petio.json │ │ ├── pf2etools.json │ │ ├── photoprism.json │ │ ├── phpipam.json │ │ ├── pialert.json │ │ ├── pihole.json │ │ ├── pimox-haos-vm.json │ │ ├── pingvin.json │ │ ├── plant-it.json │ │ ├── plex.json │ │ ├── pocketbase.json │ │ ├── pocketid.json │ │ ├── podman-homeassistant.json │ │ ├── podman.json │ │ ├── post-pbs-install.json │ │ ├── post-pmg-install.json │ │ ├── post-pve-install.json │ │ ├── postgresql.json │ │ ├── privatebin.json │ │ ├── projectsend.json │ │ ├── prometheus-alertmanager.json │ │ ├── prometheus-paperless-ngx-exporter.json │ │ ├── prometheus-pve-exporter.json │ │ ├── prometheus.json │ │ ├── prowlarr.json │ │ ├── proxmox-backup-server.json │ │ ├── proxmox-datacenter-manager.json │ │ ├── proxmox-mail-gateway.json │ │ ├── ps5-mqtt.json │ │ ├── pterodactyl-panel.json │ │ ├── pterodactyl-wings.json │ │ ├── pulse.json │ │ ├── pve-privilege-converter.json │ │ ├── qbittorrent.json │ │ ├── rabbitmq.json │ │ ├── radarr.json │ │ ├── radicale.json │ │ ├── rclone.json │ │ ├── rdtclient.json │ │ ├── reactive-resume.json │ │ ├── readarr.json │ │ ├── readeck.json │ │ ├── recyclarr.json │ │ ├── redis.json │ │ ├── revealjs.json │ │ ├── runtipi.json │ │ ├── rustdeskserver.json │ │ ├── sabnzbd.json │ │ ├── scaling-governor.json │ │ ├── searxng.json │ │ ├── seelf.json │ │ ├── semaphore.json │ │ ├── sftpgo.json │ │ ├── shinobi.json │ │ ├── silverbullet.json │ │ ├── slskd.json │ │ ├── smokeping.json │ │ ├── snipeit.json │ │ ├── sonarr.json │ │ ├── spoolman.json │ │ ├── sqlserver2022.json │ │ ├── stirling-pdf.json │ │ ├── streamlink-webui.json │ │ ├── syncthing.json │ │ ├── tandoor.json │ │ ├── tasmoadmin.json │ │ ├── tasmocompiler.json │ │ ├── tautulli.json │ │ ├── tdarr.json │ │ ├── technitiumdns.json │ │ ├── teddycloud.json │ │ ├── the-lounge.json │ │ ├── threadfin.json │ │ ├── tianji.json │ │ ├── traccar.json │ │ ├── traefik.json │ │ ├── transmission.json │ │ ├── trilium.json │ │ ├── turnkey.json │ │ ├── typesense.json │ │ ├── ubuntu.json │ │ ├── ubuntu2204-vm.json │ │ ├── ubuntu2404-vm.json │ │ ├── ubuntu2410-vm.json │ │ ├── umami.json │ │ ├── umbrel-os-vm.json │ │ ├── umlautadaptarr.json │ │ ├── unbound.json │ │ ├── unifi.json │ │ ├── unmanic.json │ │ ├── update-lxcs.json │ │ ├── update-repo.json │ │ ├── uptimekuma.json │ │ ├── urbackupserver.json │ │ ├── vaultwarden.json │ │ ├── versions.json │ │ ├── victoriametrics.json │ │ ├── vikunja.json │ │ ├── wallos.json │ │ ├── wastebin.json │ │ ├── watcharr.json │ │ ├── watchyourlan.json │ │ ├── wavelog.json │ │ ├── wazuh.json │ │ ├── web-check.json │ │ ├── webmin.json │ │ ├── wger.json │ │ ├── whisparr.json │ │ ├── wikijs.json │ │ ├── wireguard.json │ │ ├── wordpress.json │ │ ├── yt-dlp-webui.json │ │ ├── yunohost.json │ │ ├── zabbix.json │ │ ├── zammad.json │ │ ├── zerotier-one.json │ │ ├── zigbee2mqtt.json │ │ ├── zipline.json │ │ ├── zitadel.json │ │ ├── zoraxy.json │ │ └── zwave-js-ui.json │ └── logo.png ├── src │ ├── __tests__ │ │ ├── app │ │ │ └── page.test.tsx │ │ ├── public │ │ │ └── validate-json.test.ts │ │ └── setupTests.ts │ ├── app │ │ ├── api │ │ │ ├── categories │ │ │ │ └── route.ts │ │ │ └── versions │ │ │ │ └── route.ts │ │ ├── category-view │ │ │ └── page.tsx │ │ ├── data │ │ │ └── page.tsx │ │ ├── favicon.ico │ │ ├── json-editor │ │ │ ├── _components │ │ │ │ ├── Categories.tsx │ │ │ │ ├── InstallMethod.tsx │ │ │ │ └── Note.tsx │ │ │ ├── _schemas │ │ │ │ └── schemas.ts │ │ │ └── page.tsx │ │ ├── layout.tsx │ │ ├── manifest.ts │ │ ├── not-found.tsx │ │ ├── page.tsx │ │ ├── robots.ts │ │ ├── scripts │ │ │ ├── _components │ │ │ │ ├── ResourceDisplay.tsx │ │ │ │ ├── ScriptAccordion.tsx │ │ │ │ ├── ScriptInfoBlocks.tsx │ │ │ │ ├── ScriptItem.tsx │ │ │ │ ├── ScriptItems │ │ │ │ │ ├── Alerts.tsx │ │ │ │ │ ├── Buttons.tsx │ │ │ │ │ ├── ConfigFile.tsx │ │ │ │ │ ├── DefaultPassword.tsx │ │ │ │ │ ├── DefaultSettings.tsx │ │ │ │ │ ├── Description.tsx │ │ │ │ │ ├── InstallCommand.tsx │ │ │ │ │ ├── InterFaces.tsx │ │ │ │ │ └── Tooltips.tsx │ │ │ │ ├── Sidebar.tsx │ │ │ │ └── VersionBadge.tsx │ │ │ └── page.tsx │ │ └── sitemap.ts │ ├── components │ │ ├── ApplicationChart.tsx │ │ ├── CommandMenu.tsx │ │ ├── FAQ.tsx │ │ ├── Footer.tsx │ │ ├── Modal.tsx │ │ ├── Navbar.tsx │ │ ├── TextCopyBlock.tsx │ │ ├── handleCopy.tsx │ │ ├── icons │ │ │ └── resource-icons.tsx │ │ ├── query-provider.tsx │ │ ├── theme-provider.tsx │ │ └── ui │ │ │ ├── accordion.tsx │ │ │ ├── alert.tsx │ │ │ ├── animated-gradient-text.tsx │ │ │ ├── badge.tsx │ │ │ ├── button.tsx │ │ │ ├── calendar.tsx │ │ │ ├── card.tsx │ │ │ ├── code-copy-button.tsx │ │ │ ├── codeblock.tsx │ │ │ ├── command.tsx │ │ │ ├── config-copy-button.tsx │ │ │ ├── dialog.tsx │ │ │ ├── dropdown-menu.tsx │ │ │ ├── input.tsx │ │ │ ├── label.tsx │ │ │ ├── navigation-menu.tsx │ │ │ ├── number-ticker.tsx │ │ │ ├── particles.tsx │ │ │ ├── popover.tsx │ │ │ ├── select.tsx │ │ │ ├── separator.tsx │ │ │ ├── sheet.tsx │ │ │ ├── sonner.tsx │ │ │ ├── star-on-github-button.tsx │ │ │ ├── switch.tsx │ │ │ ├── table.tsx │ │ │ ├── tabs.tsx │ │ │ ├── textarea.tsx │ │ │ ├── theme-toggle.tsx │ │ │ └── tooltip.tsx │ ├── config │ │ ├── faqConfig.tsx │ │ └── siteConfig.tsx │ ├── hooks │ │ └── useVersions.ts │ ├── lib │ │ ├── data.ts │ │ ├── time.ts │ │ ├── types.ts │ │ ├── utils.ts │ │ └── utils │ │ │ └── resource-utils.ts │ └── styles │ │ └── globals.css ├── tailwind.config.ts ├── tsconfig.json └── vitest.config.mjs ├── install ├── 2fauth-install.sh ├── actualbudget-install.sh ├── adguard-install.sh ├── adventurelog-install.sh ├── agentdvr-install.sh ├── alpine-adguard-install.sh ├── alpine-bitmagnet-install.sh ├── alpine-docker-install.sh ├── alpine-gatus-install.sh ├── alpine-gitea-install.sh ├── alpine-grafana-install.sh ├── alpine-install.sh ├── alpine-it-tools-install.sh ├── alpine-komodo-install.sh ├── alpine-mariadb-install.sh ├── alpine-nextcloud-install.sh ├── alpine-node-red-install.sh ├── alpine-postgresql-install.sh ├── alpine-prometheus-install.sh ├── alpine-rclone-install.sh ├── alpine-redis-install.sh ├── alpine-tinyauth-install.sh ├── alpine-traefik-install.sh ├── alpine-transmission-install.sh ├── alpine-vaultwarden-install.sh ├── alpine-wireguard-install.sh ├── alpine-zigbee2mqtt-install.sh ├── apache-cassandra-install.sh ├── apache-couchdb-install.sh ├── apache-guacamole-install.sh ├── apache-tika-install.sh ├── apache-tomcat-install.sh ├── apt-cacher-ng-install.sh ├── archivebox-install.sh ├── argus-install.sh ├── aria2-install.sh ├── asterisk-install.sh ├── audiobookshelf-install.sh ├── authelia-install.sh ├── autobrr-install.sh ├── babybuddy-install.sh ├── backrest-install.sh ├── baikal-install.sh ├── barcode-buddy-install.sh ├── bazarr-install.sh ├── beszel-install.sh ├── bitmagnet-install.sh ├── blocky-install.sh ├── bookstack-install.sh ├── bunkerweb-install.sh ├── bytestash-install.sh ├── caddy-install.sh ├── calibre-web-install.sh ├── casaos-install.sh ├── changedetection-install.sh ├── channels-install.sh ├── checkmk-install.sh ├── cloudflare-ddns-install.sh ├── cloudflared-install.sh ├── cockpit-install.sh ├── commafeed-install.sh ├── configarr-install.sh ├── cosmos-install.sh ├── crafty-controller-install.sh ├── cronicle-install.sh ├── cross-seed-install.sh ├── cryptpad-install.sh ├── daemonsync-install.sh ├── dashy-install.sh ├── debian-install.sh ├── deconz-install.sh ├── deluge-install.sh ├── docker-install.sh ├── dockge-install.sh ├── docmost-install.sh ├── documenso-install.sh ├── dolibarr-install.sh ├── dotnetaspwebapi-install.sh ├── duplicati-install.sh ├── elementsynapse-install.sh ├── emby-install.sh ├── emqx-install.sh ├── ersatztv-install.sh ├── esphome-install.sh ├── evcc-install.sh ├── excalidraw-install.sh ├── fenrus-install.sh ├── fhem-install.sh ├── fileflows-install.sh ├── firefly-install.sh ├── flaresolverr-install.sh ├── flowiseai-install.sh ├── fluid-calendar-install.sh ├── forgejo-install.sh ├── freepbx-install.sh ├── freshrss-install.sh ├── frigate-install.sh ├── fumadocs-install.sh ├── gatus-install.sh ├── ghost-install.sh ├── gitea-install.sh ├── glance-install.sh ├── glpi-install.sh ├── go2rtc-install.sh ├── gokapi-install.sh ├── gomft-install.sh ├── gotify-install.sh ├── grafana-install.sh ├── graylog-install.sh ├── grist-install.sh ├── grocy-install.sh ├── habitica-install.sh ├── headscale-install.sh ├── heimdall-dashboard-install.sh ├── hev-socks5-server-install.sh ├── hivemq-install.sh ├── homarr-install.sh ├── homeassistant-core-install.sh ├── homeassistant-install.sh ├── homebox-install.sh ├── homebridge-install.sh ├── homepage-install.sh ├── homer-install.sh ├── hyperhdr-install.sh ├── hyperion-install.sh ├── immich-install.sh ├── influxdb-install.sh ├── inspircd-install.sh ├── inventree-install.sh ├── iobroker-install.sh ├── iventoy-install.sh ├── jackett-install.sh ├── jellyfin-install.sh ├── jellyseerr-install.sh ├── jenkins-install.sh ├── jupyternotebook-install.sh ├── karakeep-install.sh ├── kasm-install.sh ├── kavita-install.sh ├── keycloak-install.sh ├── kimai-install.sh ├── koillection-install.sh ├── kometa-install.sh ├── komga-install.sh ├── komodo-install.sh ├── kubo-install.sh ├── lazylibrarian-install.sh ├── lidarr-install.sh ├── linkwarden-install.sh ├── listmonk-install.sh ├── lldap-install.sh ├── lubelogger-install.sh ├── mafl-install.sh ├── magicmirror-install.sh ├── mariadb-install.sh ├── matterbridge-install.sh ├── mattermost-install.sh ├── mediamtx-install.sh ├── medusa-install.sh ├── meilisearch-install.sh ├── memos-install.sh ├── meshcentral-install.sh ├── metube-install.sh ├── minio-install.sh ├── mongodb-install.sh ├── monica-install.sh ├── motioneye-install.sh ├── mqtt-install.sh ├── mylar3-install.sh ├── myspeed-install.sh ├── mysql-install.sh ├── n8n-install.sh ├── navidrome-install.sh ├── neo4j-install.sh ├── netbox-install.sh ├── nextcloudpi-install.sh ├── nextpvr-install.sh ├── nginxproxymanager-install.sh ├── nocodb-install.sh ├── node-red-install.sh ├── nodebb-install.sh ├── notifiarr-install.sh ├── npmplus-install.sh ├── ntfy-install.sh ├── nxwitness-install.sh ├── nzbget-install.sh ├── oauth2-proxy-install.sh ├── octoprint-install.sh ├── odoo-install.sh ├── ollama-install.sh ├── omada-install.sh ├── ombi-install.sh ├── omv-install.sh ├── onedev-install.sh ├── opengist-install.sh ├── openhab-install.sh ├── openobserve-install.sh ├── openproject-install.sh ├── openwebui-install.sh ├── openziti-controller-install.sh ├── openziti-tunnel-install.sh ├── outline-install.sh ├── overseerr-install.sh ├── owncast-install.sh ├── pairdrop-install.sh ├── paperless-ai-install.sh ├── paperless-gpt-install.sh ├── paperless-ngx-install.sh ├── part-db-install.sh ├── paymenter-install.sh ├── peanut-install.sh ├── pelican-panel-install.sh ├── pelican-wings-install.sh ├── petio-install.sh ├── pf2etools-install.sh ├── photoprism-install.sh ├── phpipam-install.sh ├── pialert-install.sh ├── pihole-install.sh ├── pingvin-install.sh ├── plant-it-install.sh ├── plex-install.sh ├── pocketbase-install.sh ├── pocketid-install.sh ├── podman-homeassistant-install.sh ├── podman-install.sh ├── postgresql-install.sh ├── privatebin-install.sh ├── projectsend-install.sh ├── prometheus-alertmanager-install.sh ├── prometheus-install.sh ├── prometheus-paperless-ngx-exporter-install.sh ├── prometheus-pve-exporter-install.sh ├── prowlarr-install.sh ├── proxmox-backup-server-install.sh ├── proxmox-datacenter-manager-install.sh ├── proxmox-mail-gateway-install.sh ├── ps5-mqtt-install.sh ├── pterodactyl-panel-install.sh ├── pterodactyl-wings-install.sh ├── pulse-install.sh ├── qbittorrent-install.sh ├── rabbitmq-install.sh ├── radarr-install.sh ├── radicale-install.sh ├── rclone-install.sh ├── rdtclient-install.sh ├── reactive-resume-install.sh ├── readarr-install.sh ├── readeck-install.sh ├── recyclarr-install.sh ├── redis-install.sh ├── revealjs-install.sh ├── runtipi-install.sh ├── rustdeskserver-install.sh ├── sabnzbd-install.sh ├── searxng-install.sh ├── seelf-install.sh ├── semaphore-install.sh ├── sftpgo-install.sh ├── shinobi-install.sh ├── silverbullet-install.sh ├── slskd-install.sh ├── smokeping-install.sh ├── snipeit-install.sh ├── sonarr-install.sh ├── spoolman-install.sh ├── sqlserver2022-install.sh ├── stirling-pdf-install.sh ├── streamlink-webui-install.sh ├── suwayomiserver-install.sh ├── syncthing-install.sh ├── tandoor-install.sh ├── tasmoadmin-install.sh ├── tasmocompiler-install.sh ├── tautulli-install.sh ├── tdarr-install.sh ├── technitiumdns-install.sh ├── teddycloud-install.sh ├── the-lounge-install.sh ├── threadfin-install.sh ├── tianji-install.sh ├── traccar-install.sh ├── traefik-install.sh ├── transmission-install.sh ├── trilium-install.sh ├── typesense-install.sh ├── ubuntu-install.sh ├── umami-install.sh ├── umlautadaptarr-install.sh ├── unbound-install.sh ├── unifi-install.sh ├── unmanic-install.sh ├── uptimekuma-install.sh ├── urbackupserver-install.sh ├── vaultwarden-install.sh ├── victoriametrics-install.sh ├── vikunja-install.sh ├── wallos-install.sh ├── wastebin-install.sh ├── watcharr-install.sh ├── watchyourlan-install.sh ├── wavelog-install.sh ├── wazuh-install.sh ├── web-check-install.sh ├── wger-install.sh ├── whisparr-install.sh ├── wikijs-install.sh ├── wireguard-install.sh ├── wordpress-install.sh ├── yt-dlp-webui-install.sh ├── yunohost-install.sh ├── zabbix-install.sh ├── zammad-install.sh ├── zerotier-one-install.sh ├── zigbee2mqtt-install.sh ├── zipline-install.sh ├── zitadel-install.sh ├── zoraxy-install.sh └── zwave-js-ui-install.sh ├── misc ├── add-iptag.sh ├── alpine-install.func ├── api.func ├── build.func ├── config-file.func ├── core.func ├── images │ ├── cpu.png │ ├── logo-81x112.png │ ├── logo.png │ ├── monitor.png │ └── processor.png ├── install.func └── tools.func ├── package-lock.json ├── tools ├── addon │ ├── add-netbird-lxc.sh │ ├── add-tailscale-lxc.sh │ ├── all-templates.sh │ ├── coder-code-server.sh │ ├── crowdsec.sh │ ├── daemonsync_2.2.0.0059_amd64.deb │ ├── filebrowser.sh │ ├── glances.sh │ ├── netdata.sh │ ├── olivetin.sh │ ├── pyenv.sh │ └── webmin.sh ├── copy-data │ ├── README.md │ ├── home-assistant-container-copy-data-home-assistant-container.sh │ ├── home-assistant-container-copy-data-home-assistant-core.sh │ ├── home-assistant-container-copy-data-podman-home-assistant.sh │ ├── home-assistant-core-copy-data-home-assistant-container.sh │ ├── home-assistant-core-copy-data-home-assistant-core.sh │ ├── plex-copy-data-plex.sh │ ├── podman-home-assistant-copy-data-home-assistant-container.sh │ ├── z2m-copy-data-z2m.sh │ └── zwavejs2mqtt-copy-data-zwavejsui.sh ├── headers │ ├── add-lxc-iptag │ ├── coder-code-server │ ├── container-restore-from-backup │ ├── core-restore-from-backup │ ├── crowdsec │ ├── filebrowser │ ├── glances │ ├── olivetin │ └── pve-privilege-converter └── pve │ ├── add-lxc-iptag.sh │ ├── clean-lxcs.sh │ ├── clean-orphaned-lvm.sh │ ├── clean.sh │ ├── container-restore-from-backup.sh │ ├── core-restore-from-backup.sh │ ├── cron-update-lxcs.sh │ ├── frigate-support.sh │ ├── fstrim.sh │ ├── host-backup.sh │ ├── hw-acceleration.sh │ ├── kernel-clean.sh │ ├── kernel-pin.sh │ ├── lxc-delete.sh │ ├── microcode.sh │ ├── monitor-all.sh │ ├── pbs3-upgrade.sh │ ├── pbs_microcode.sh │ ├── post-pbs-install.sh │ ├── post-pmg-install.sh │ ├── post-pve-install.sh │ ├── pve-privilege-converter.sh │ ├── pve8-upgrade.sh │ ├── scaling-governor.sh │ ├── update-lxcs-cron.sh │ ├── update-lxcs.sh │ ├── update-repo.sh │ └── usb-passthrough.sh ├── turnkey └── turnkey.sh └── vm ├── archlinux-vm.sh ├── debian-vm.sh ├── docker-vm.sh ├── haos-vm.sh ├── mikrotik-routeros.sh ├── nextcloud-vm.sh ├── openwrt.sh ├── opnsense-vm.sh ├── owncloud-vm.sh ├── pimox-haos-vm.sh ├── ubuntu2204-vm.sh ├── ubuntu2404-vm.sh ├── ubuntu2410-vm.sh └── umbrel-os-vm.sh /.editorconfig: -------------------------------------------------------------------------------- 1 | ; editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | continuation_indent_size = 2 7 | end_of_line = lf 8 | indent_size = 2 9 | indent_style = space 10 | insert_final_newline = true 11 | max_line_length = 120 12 | tab_width = 2 13 | ; trim_trailing_whitespace = true ; disabled until files are cleaned up 14 | 15 | [*.md] 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/community-scripts/ProxmoxVE/3aa1f0534331b45200f960f2e2fd953855a87806/.gitattributes -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # 2 | # CODEOWNERS for ProxmoxVE 3 | # 4 | 5 | # Order is important; the last matching pattern takes the most 6 | # precedence. 7 | 8 | 9 | # Codeowners for specific folders and files 10 | # Remember ending folders with / 11 | 12 | 13 | # Set default reviewers 14 | * @community-scripts/Contributor 15 | 16 | # All changes in frontend 17 | /frontend/ @community-scripts/Frontend-Dev 18 | -------------------------------------------------------------------------------- /.github/CONTRIBUTOR_AND_GUIDES/json/AppName.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AppName", 3 | "slug": "appname", 4 | "categories": [ 5 | 0 6 | ], 7 | "date_created": "DATE CREATED", 8 | "type": "ct", 9 | "updateable": true, 10 | "privileged": false, 11 | "interface_port": DEFAULT-PORT, 12 | "documentation": null, 13 | "website": "LINK TO WEBSITE", 14 | "logo": "LINK TO LOGO", 15 | "description": "Description of the app", 16 | "install_methods": [ 17 | { 18 | "type": "default", 19 | "script": "ct/AppName.sh", 20 | "resources": { 21 | "cpu": 2, 22 | "ram": 2048, 23 | "hdd": 4, 24 | "os": "debian", 25 | "version": "12" 26 | } 27 | } 28 | ], 29 | "default_credentials": { 30 | "username": null, 31 | "password": null 32 | }, 33 | "notes": [] 34 | } -------------------------------------------------------------------------------- /.github/CONTRIBUTOR_AND_GUIDES/json/AppName.md: -------------------------------------------------------------------------------- 1 | # **AppName.json Files** 2 | 3 | `AppName.json` files found in the `/json` directory. These files are used to provide informations for the website. For this guide we take `/json/snipeit.json` as example. 4 | 5 | ## Table of Contents 6 | 7 | - [**AppName.json Files**](#appnamejson-files) 8 | - [Table of Contents](#table-of-contents) 9 | - [1. JSON Generator](#1-json-generator) 10 | 11 | ## 1. JSON Generator 12 | 13 | Use the [JSON Generator](https://community-scripts.github.io/ProxmoxVE/json-editor) to create this file for your application. 14 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | ko_fi: community_scripts 2 | github: community_scripts 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: 🌟 new Script request 4 | url: https://github.com/community-scripts/ProxmoxVE/discussions/new?category=request-script 5 | about: For feature/script requests, please use the Discussions section. 6 | - name: 🤔 Questions and Help 7 | url: https://github.com/community-scripts/ProxmoxVE/discussions 8 | about: For suggestions or questions, please use the Discussions section. 9 | - name: 💻 Discord 10 | url: https://discord.gg/jsYVk5JBxq 11 | about: Join our Discord server to chat with other users in the Proxmox Helper Scripts community. 12 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/task.yml: -------------------------------------------------------------------------------- 1 | name: "🛠️ Task / General Request" 2 | description: "Request a general task, improvement, or refactor." 3 | labels: ["task"] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | # 🛠️ **Task / General Request** 9 | Request a task that isn't a bug or feature request. 10 | 11 | - type: input 12 | id: task_summary 13 | attributes: 14 | label: "📌 Task summary" 15 | placeholder: "e.g., Refactor XYZ" 16 | validations: 17 | required: true 18 | 19 | - type: textarea 20 | id: task_details 21 | attributes: 22 | label: "📋 Task details" 23 | placeholder: "Explain what needs to be done" 24 | validations: 25 | required: true 26 | -------------------------------------------------------------------------------- /.github/workflows/delete-json-branch.yml: -------------------------------------------------------------------------------- 1 | 2 | name: Delete JSON date PR Branch 3 | 4 | on: 5 | pull_request: 6 | types: [closed] 7 | branches: 8 | - main 9 | 10 | jobs: 11 | delete_branch: 12 | if: github.repository == 'community-scripts/ProxmoxVE' 13 | runs-on: runner-cluster-htl-set 14 | steps: 15 | - name: Checkout the code 16 | uses: actions/checkout@v3 17 | 18 | - name: Delete PR Update Branch 19 | if: github.event.pull_request.merged == true && startsWith(github.event.pull_request.head.ref, 'pr-update-json-') 20 | run: | 21 | PR_BRANCH="${{ github.event.pull_request.head.ref }}" 22 | echo "Deleting branch $PR_BRANCH..." 23 | 24 | # Avoid deleting the default branch (e.g., main) 25 | if [[ "$PR_BRANCH" != "main" ]]; then 26 | git push origin --delete "$PR_BRANCH" 27 | else 28 | echo "Skipping deletion of the main branch" 29 | fi 30 | -------------------------------------------------------------------------------- /.github/workflows/scripts/update-json.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | FILE=$1 4 | TODAY=$(date -u +"%Y-%m-%d") 5 | 6 | if [[ -z "$FILE" ]]; then 7 | echo "No file specified. Exiting." 8 | exit 1 9 | fi 10 | 11 | if [[ ! -f "$FILE" ]]; then 12 | echo "File $FILE not found. Exiting." 13 | exit 1 14 | fi 15 | 16 | DATE_IN_JSON=$(jq -r '.date_created' "$FILE" 2>/dev/null || echo "") 17 | 18 | if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then 19 | jq --arg date "$TODAY" '.date_created = $date' "$FILE" >tmp.json && mv tmp.json "$FILE" 20 | fi 21 | -------------------------------------------------------------------------------- /.github/workflows/scripts/update_json_date.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Verzeichnis, das die JSON-Dateien enthält 4 | json_dir="./json/*.json" 5 | 6 | current_date=$(date +"%Y-%m-%d") 7 | 8 | for json_file in $json_dir; do 9 | if [[ -f "$json_file" ]]; then 10 | current_json_date=$(jq -r '.date_created' "$json_file") 11 | 12 | if [[ "$current_json_date" != "$current_date" ]]; then 13 | echo "Updating $json_file with date $current_date" 14 | jq --arg date "$current_date" '.date_created = $date' "$json_file" >temp.json && mv temp.json "$json_file" 15 | 16 | git add "$json_file" 17 | git commit -m "Update date_created to $current_date in $json_file" 18 | else 19 | echo "Date in $json_file is already up to date." 20 | fi 21 | fi 22 | done 23 | git push origin HEAD 24 | -------------------------------------------------------------------------------- /.vscode/.editorconfig: -------------------------------------------------------------------------------- 1 | ; editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | continuation_indent_size = 2 7 | end_of_line = lf 8 | indent_size = 2 9 | indent_style = space 10 | insert_final_newline = true 11 | max_line_length = 120 12 | tab_width = 2 13 | ; trim_trailing_whitespace = true ; disabled until files are cleaned up 14 | 15 | [*.md] 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "bmalehorn.shell-syntax", 4 | "timonwong.shellcheck", 5 | "foxundermoon.shell-format", 6 | "editorconfig.editorconfig" 7 | ], 8 | "unwantedRecommendations": [] 9 | } 10 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.associations": { 3 | "*.func": "shellscript" 4 | }, 5 | "files.eol": "\n", 6 | "files.insertFinalNewline": true, 7 | "editor.formatOnSave": true, 8 | "editor.codeActionsOnSave": { 9 | "source.fixAll": "explicit" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /api/.env.example: -------------------------------------------------------------------------------- 1 | MONGO_USER= 2 | MONGO_PASSWORD= 3 | MONGO_IP= 4 | MONGO_PORT= 5 | MONGO_DATABASE= -------------------------------------------------------------------------------- /api/go.mod: -------------------------------------------------------------------------------- 1 | module proxmox-api 2 | 3 | go 1.23.2 4 | 5 | require ( 6 | github.com/gorilla/mux v1.8.1 7 | github.com/joho/godotenv v1.5.1 8 | github.com/rs/cors v1.11.1 9 | go.mongodb.org/mongo-driver v1.17.2 10 | ) 11 | 12 | require ( 13 | github.com/golang/snappy v0.0.4 // indirect 14 | github.com/klauspost/compress v1.16.7 // indirect 15 | github.com/montanaflynn/stats v0.7.1 // indirect 16 | github.com/xdg-go/pbkdf2 v1.0.0 // indirect 17 | github.com/xdg-go/scram v1.1.2 // indirect 18 | github.com/xdg-go/stringprep v1.0.4 // indirect 19 | github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect 20 | golang.org/x/crypto v0.35.0 // indirect 21 | golang.org/x/sync v0.11.0 // indirect 22 | golang.org/x/text v0.22.0 // indirect 23 | ) 24 | -------------------------------------------------------------------------------- /ct/headers/2fauth: -------------------------------------------------------------------------------- 1 | ___ _________ __ __ 2 | |__ \ / ____/ | __ __/ /_/ /_ 3 | __/ // /_ / /| |/ / / / __/ __ \ 4 | / __// __/ / ___ / /_/ / /_/ / / / 5 | /____/_/ /_/ |_\__,_/\__/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/actualbudget: -------------------------------------------------------------------------------- 1 | ___ __ __ ____ __ __ 2 | / | _____/ /___ ______ _/ / / __ )__ ______/ /___ ____ / /_ 3 | / /| |/ ___/ __/ / / / __ `/ / / __ / / / / __ / __ `/ _ \/ __/ 4 | / ___ / /__/ /_/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / __/ /_ 5 | /_/ |_\___/\__/\__,_/\__,_/_/ /_____/\__,_/\__,_/\__, /\___/\__/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/adguard: -------------------------------------------------------------------------------- 1 | ___ __ __ 2 | / | ____/ /___ ___ ______ __________/ / 3 | / /| |/ __ / __ `/ / / / __ `/ ___/ __ / 4 | / ___ / /_/ / /_/ / /_/ / /_/ / / / /_/ / 5 | /_/ |_\__,_/\__, /\__,_/\__,_/_/ \__,_/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/adventurelog: -------------------------------------------------------------------------------- 1 | ___ __ __ __ 2 | / | ____/ / _____ ____ / /___ __________ / / ____ ____ _ 3 | / /| |/ __ / | / / _ \/ __ \/ __/ / / / ___/ _ \/ / / __ \/ __ `/ 4 | / ___ / /_/ /| |/ / __/ / / / /_/ /_/ / / / __/ /___/ /_/ / /_/ / 5 | /_/ |_\__,_/ |___/\___/_/ /_/\__/\__,_/_/ \___/_____/\____/\__, / 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/agentdvr: -------------------------------------------------------------------------------- 1 | ___ __ ____ _ ______ 2 | / | ____ ____ ____ / /_/ __ \ | / / __ \ 3 | / /| |/ __ `/ _ \/ __ \/ __/ / / / | / / /_/ / 4 | / ___ / /_/ / __/ / / / /_/ /_/ /| |/ / _, _/ 5 | /_/ |_\__, /\___/_/ /_/\__/_____/ |___/_/ |_| 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/alpine: -------------------------------------------------------------------------------- 1 | ___ __ _ 2 | / | / /___ (_)___ ___ 3 | / /| | / / __ \/ / __ \/ _ \ 4 | / ___ |/ / /_/ / / / / / __/ 5 | /_/ |_/_/ .___/_/_/ /_/\___/ 6 | /_/ 7 | -------------------------------------------------------------------------------- /ct/headers/alpine-adguard: -------------------------------------------------------------------------------- 1 | ___ __ _ ___ ________ __ 2 | / | / /___ (_)___ ___ / | ____/ / ____/_ ______ __________/ / 3 | / /| | / / __ \/ / __ \/ _ \______/ /| |/ __ / / __/ / / / __ `/ ___/ __ / 4 | / ___ |/ / /_/ / / / / / __/_____/ ___ / /_/ / /_/ / /_/ / /_/ / / / /_/ / 5 | /_/ |_/_/ .___/_/_/ /_/\___/ /_/ |_\__,_/\____/\__,_/\__,_/_/ \__,_/ 6 | /_/ 7 | -------------------------------------------------------------------------------- /ct/headers/alpine-bitmagnet: -------------------------------------------------------------------------------- 1 | ___ __ _ __ _ __ __ 2 | / | / /___ (_)___ ___ / /_ (_) /_____ ___ ____ _____ _____ ___ / /_ 3 | / /| | / / __ \/ / __ \/ _ \______/ __ \/ / __/ __ `__ \/ __ `/ __ `/ __ \/ _ \/ __/ 4 | / ___ |/ / /_/ / / / / / __/_____/ /_/ / / /_/ / / / / / /_/ / /_/ / / / / __/ /_ 5 | /_/ |_/_/ .___/_/_/ /_/\___/ /_.___/_/\__/_/ /_/ /_/\__,_/\__, /_/ /_/\___/\__/ 6 | /_/ /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/alpine-docker: -------------------------------------------------------------------------------- 1 | ___ __ _ ____ __ 2 | / | / /___ (_)___ ___ / __ \____ _____/ /_____ _____ 3 | / /| | / / __ \/ / __ \/ _ \______/ / / / __ \/ ___/ //_/ _ \/ ___/ 4 | / ___ |/ / /_/ / / / / / __/_____/ /_/ / /_/ / /__/ ,< / __/ / 5 | /_/ |_/_/ .___/_/_/ /_/\___/ /_____/\____/\___/_/|_|\___/_/ 6 | /_/ 7 | -------------------------------------------------------------------------------- /ct/headers/alpine-gatus: -------------------------------------------------------------------------------- 1 | ___ __ _ __ 2 | / | / /___ (_)___ ___ ____ _____ _/ /___ _______ 3 | / /| | / / __ \/ / __ \/ _ \______/ __ `/ __ `/ __/ / / / ___/ 4 | / ___ |/ / /_/ / / / / / __/_____/ /_/ / /_/ / /_/ /_/ (__ ) 5 | /_/ |_/_/ .___/_/_/ /_/\___/ \__, /\__,_/\__/\__,_/____/ 6 | /_/ /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/alpine-gitea: -------------------------------------------------------------------------------- 1 | ___ __ _ _______ __ 2 | / | / /___ (_)___ ___ / ____(_) /____ ____ _ 3 | / /| | / / __ \/ / __ \/ _ \______/ / __/ / __/ _ \/ __ `/ 4 | / ___ |/ / /_/ / / / / / __/_____/ /_/ / / /_/ __/ /_/ / 5 | /_/ |_/_/ .___/_/_/ /_/\___/ \____/_/\__/\___/\__,_/ 6 | /_/ 7 | -------------------------------------------------------------------------------- /ct/headers/alpine-grafana: -------------------------------------------------------------------------------- 1 | ___ __ _ ______ ____ 2 | / | / /___ (_)___ ___ / ____/________ _/ __/___ _____ ____ _ 3 | / /| | / / __ \/ / __ \/ _ \______/ / __/ ___/ __ `/ /_/ __ `/ __ \/ __ `/ 4 | / ___ |/ / /_/ / / / / / __/_____/ /_/ / / / /_/ / __/ /_/ / / / / /_/ / 5 | /_/ |_/_/ .___/_/_/ /_/\___/ \____/_/ \__,_/_/ \__,_/_/ /_/\__,_/ 6 | /_/ 7 | -------------------------------------------------------------------------------- /ct/headers/alpine-it-tools: -------------------------------------------------------------------------------- 1 | ___ __ _ __________ ______ __ 2 | / | / /___ (_)___ ___ / _/_ __/ /_ __/___ ____ / /____ 3 | / /| | / / __ \/ / __ \/ _ \______ / / / /_____/ / / __ \/ __ \/ / ___/ 4 | / ___ |/ / /_/ / / / / / __/_____// / / /_____/ / / /_/ / /_/ / (__ ) 5 | /_/ |_/_/ .___/_/_/ /_/\___/ /___/ /_/ /_/ \____/\____/_/____/ 6 | /_/ 7 | -------------------------------------------------------------------------------- /ct/headers/alpine-komodo: -------------------------------------------------------------------------------- 1 | ___ __ _ __ __ __ 2 | / | / /___ (_)___ ___ / //_/___ ____ ___ ____ ____/ /___ 3 | / /| | / / __ \/ / __ \/ _ \______/ ,< / __ \/ __ `__ \/ __ \/ __ / __ \ 4 | / ___ |/ / /_/ / / / / / __/_____/ /| / /_/ / / / / / / /_/ / /_/ / /_/ / 5 | /_/ |_/_/ .___/_/_/ /_/\___/ /_/ |_\____/_/ /_/ /_/\____/\__,_/\____/ 6 | /_/ 7 | -------------------------------------------------------------------------------- /ct/headers/alpine-mariadb: -------------------------------------------------------------------------------- 1 | ___ __ _ __ ___ _ ____ ____ 2 | / | / /___ (_)___ ___ / |/ /___ ______(_)___ _/ __ \/ __ ) 3 | / /| | / / __ \/ / __ \/ _ \______/ /|_/ / __ `/ ___/ / __ `/ / / / __ | 4 | / ___ |/ / /_/ / / / / / __/_____/ / / / /_/ / / / / /_/ / /_/ / /_/ / 5 | /_/ |_/_/ .___/_/_/ /_/\___/ /_/ /_/\__,_/_/ /_/\__,_/_____/_____/ 6 | /_/ 7 | -------------------------------------------------------------------------------- /ct/headers/alpine-nextcloud: -------------------------------------------------------------------------------- 1 | ___ __ _ _ __ __ __ __ 2 | / | / /___ (_)___ ___ / | / /__ _ __/ /______/ /___ __ ______/ / 3 | / /| | / / __ \/ / __ \/ _ \______/ |/ / _ \| |/_/ __/ ___/ / __ \/ / / / __ / 4 | / ___ |/ / /_/ / / / / / __/_____/ /| / __/> < 5 | /_/ |_/_/ \___/_/ /_/_/ |___/\___/_____/\____/_/|_| 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/argus: -------------------------------------------------------------------------------- 1 | ___ 2 | / | _________ ___ _______ 3 | / /| | / ___/ __ `/ / / / ___/ 4 | / ___ |/ / / /_/ / /_/ (__ ) 5 | /_/ |_/_/ \__, /\__,_/____/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/aria2: -------------------------------------------------------------------------------- 1 | ___ _ ___ 2 | / | _____(_)___ |__ \ 3 | / /| | / ___/ / __ `/_/ / 4 | / ___ |/ / / / /_/ / __/ 5 | /_/ |_/_/ /_/\__,_/____/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/asterisk: -------------------------------------------------------------------------------- 1 | ___ __ _ __ 2 | / | _____/ /____ _____(_)____/ /__ 3 | / /| | / ___/ __/ _ \/ ___/ / ___/ //_/ 4 | / ___ |(__ ) /_/ __/ / / (__ ) ,< 5 | /_/ |_/____/\__/\___/_/ /_/____/_/|_| 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/audiobookshelf: -------------------------------------------------------------------------------- 1 | ___ __ __ __ ______ 2 | ____ ___ ______/ (_)___ / /_ ____ ____ / /_______/ /_ ___ / / __/ 3 | / __ `/ / / / __ / / __ \/ __ \/ __ \/ __ \/ //_/ ___/ __ \/ _ \/ / /_ 4 | / /_/ / /_/ / /_/ / / /_/ / /_/ / /_/ / /_/ / ,< (__ ) / / / __/ / __/ 5 | \__,_/\__,_/\__,_/_/\____/_.___/\____/\____/_/|_/____/_/ /_/\___/_/_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/authelia: -------------------------------------------------------------------------------- 1 | ___ __ __ ___ 2 | / | __ __/ /_/ /_ ___ / (_)___ _ 3 | / /| |/ / / / __/ __ \/ _ \/ / / __ `/ 4 | / ___ / /_/ / /_/ / / / __/ / / /_/ / 5 | /_/ |_\__,_/\__/_/ /_/\___/_/_/\__,_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/autobrr: -------------------------------------------------------------------------------- 1 | ___ __ __ 2 | / | __ __/ /_____ / /_ __________ 3 | / /| |/ / / / __/ __ \/ __ \/ ___/ ___/ 4 | / ___ / /_/ / /_/ /_/ / /_/ / / / / 5 | /_/ |_\__,_/\__/\____/_.___/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/babybuddy: -------------------------------------------------------------------------------- 1 | ____ __ ____ __ __ 2 | / __ )____ _/ /_ __ __ / __ )__ ______/ /___/ /_ __ 3 | / __ / __ `/ __ \/ / / / / __ / / / / __ / __ / / / / 4 | / /_/ / /_/ / /_/ / /_/ / / /_/ / /_/ / /_/ / /_/ / /_/ / 5 | /_____/\__,_/_.___/\__, / /_____/\__,_/\__,_/\__,_/\__, / 6 | /____/ /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/backrest: -------------------------------------------------------------------------------- 1 | ____ __ __ 2 | / __ )____ ______/ /__________ _____/ /_ 3 | / __ / __ `/ ___/ //_/ ___/ _ \/ ___/ __/ 4 | / /_/ / /_/ / /__/ ,< / / / __(__ ) /_ 5 | /_____/\__,_/\___/_/|_/_/ \___/____/\__/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/baikal: -------------------------------------------------------------------------------- 1 | ____ _ __ __ 2 | / __ )____ _(_) /______ _/ / 3 | / __ / __ `/ / //_/ __ `/ / 4 | / /_/ / /_/ / / ,< / /_/ / / 5 | /_____/\__,_/_/_/|_|\__,_/_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/barcode-buddy: -------------------------------------------------------------------------------- 1 | ____ __ ____ __ __ 2 | / __ )____ _______________ ____/ /__ / __ )__ ______/ /___/ /_ __ 3 | / __ / __ `/ ___/ ___/ __ \/ __ / _ \______/ __ / / / / __ / __ / / / / 4 | / /_/ / /_/ / / / /__/ /_/ / /_/ / __/_____/ /_/ / /_/ / /_/ / /_/ / /_/ / 5 | /_____/\__,_/_/ \___/\____/\__,_/\___/ /_____/\__,_/\__,_/\__,_/\__, / 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/bazarr: -------------------------------------------------------------------------------- 1 | ____ 2 | / __ )____ _____ ____ ___________ 3 | / __ / __ `/_ / / __ `/ ___/ ___/ 4 | / /_/ / /_/ / / /_/ /_/ / / / / 5 | /_____/\__,_/ /___/\__,_/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/beszel: -------------------------------------------------------------------------------- 1 | ____ __ 2 | / __ )___ _________ ___ / / 3 | / __ / _ \/ ___/_ / / _ \/ / 4 | / /_/ / __(__ ) / /_/ __/ / 5 | /_____/\___/____/ /___/\___/_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/bitmagnet: -------------------------------------------------------------------------------- 1 | ____ _ __ __ 2 | / __ )(_) /_____ ___ ____ _____ _____ ___ / /_ 3 | / __ / / __/ __ `__ \/ __ `/ __ `/ __ \/ _ \/ __/ 4 | / /_/ / / /_/ / / / / / /_/ / /_/ / / / / __/ /_ 5 | /_____/_/\__/_/ /_/ /_/\__,_/\__, /_/ /_/\___/\__/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/blocky: -------------------------------------------------------------------------------- 1 | ____ __ __ 2 | / __ )/ /___ _____/ /____ __ 3 | / __ / / __ \/ ___/ //_/ / / / 4 | / /_/ / / /_/ / /__/ ,< / /_/ / 5 | /_____/_/\____/\___/_/|_|\__, / 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/bookstack: -------------------------------------------------------------------------------- 1 | ____ __ __ __ 2 | / __ )____ ____ / /_______/ /_____ ______/ /__ 3 | / __ / __ \/ __ \/ //_/ ___/ __/ __ `/ ___/ //_/ 4 | / /_/ / /_/ / /_/ / ,< (__ ) /_/ /_/ / /__/ ,< 5 | /_____/\____/\____/_/|_/____/\__/\__,_/\___/_/|_| 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/bunkerweb: -------------------------------------------------------------------------------- 1 | ____ __ _ __ __ 2 | / __ )__ ______ / /_____ ____| | / /__ / /_ 3 | / __ / / / / __ \/ //_/ _ \/ ___/ | /| / / _ \/ __ \ 4 | / /_/ / /_/ / / / / ,< / __/ / | |/ |/ / __/ /_/ / 5 | /_____/\__,_/_/ /_/_/|_|\___/_/ |__/|__/\___/_.___/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/bytestash: -------------------------------------------------------------------------------- 1 | ____ __ _____ __ __ 2 | / __ )__ __/ /____ / ___// /_____ ______/ /_ 3 | / __ / / / / __/ _ \\__ \/ __/ __ `/ ___/ __ \ 4 | / /_/ / /_/ / /_/ __/__/ / /_/ /_/ (__ ) / / / 5 | /_____/\__, /\__/\___/____/\__/\__,_/____/_/ /_/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/caddy: -------------------------------------------------------------------------------- 1 | ______ __ __ 2 | / ____/___ _____/ /___/ /_ __ 3 | / / / __ `/ __ / __ / / / / 4 | / /___/ /_/ / /_/ / /_/ / /_/ / 5 | \____/\__,_/\__,_/\__,_/\__, / 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/calibre-web: -------------------------------------------------------------------------------- 1 | ______ ___ __ _ __ __ 2 | / ____/___ _/ (_) /_ ________ | | / /__ / /_ 3 | / / / __ `/ / / __ \/ ___/ _ \_____| | /| / / _ \/ __ \ 4 | / /___/ /_/ / / / /_/ / / / __/_____/ |/ |/ / __/ /_/ / 5 | \____/\__,_/_/_/_.___/_/ \___/ |__/|__/\___/_.___/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/casaos: -------------------------------------------------------------------------------- 1 | ______ ____ _____ 2 | / ____/___ __________ _/ __ \/ ___/ 3 | / / / __ `/ ___/ __ `/ / / /\__ \ 4 | / /___/ /_/ (__ ) /_/ / /_/ /___/ / 5 | \____/\__,_/____/\__,_/\____//____/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/changedetection: -------------------------------------------------------------------------------- 1 | ________ ____ __ __ _ 2 | / ____/ /_ ____ _____ ____ ____ / __ \___ / /____ _____/ /_(_)___ ____ 3 | / / / __ \/ __ `/ __ \/ __ `/ _ \ / / / / _ \/ __/ _ \/ ___/ __/ / __ \/ __ \ 4 | / /___/ / / / /_/ / / / / /_/ / __/ / /_/ / __/ /_/ __/ /__/ /_/ / /_/ / / / / 5 | \____/_/ /_/\__,_/_/ /_/\__, /\___/ /_____/\___/\__/\___/\___/\__/_/\____/_/ /_/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/channels: -------------------------------------------------------------------------------- 1 | ________ __ 2 | / ____/ /_ ____ _____ ____ ___ / /____ 3 | / / / __ \/ __ `/ __ \/ __ \/ _ \/ / ___/ 4 | / /___/ / / / /_/ / / / / / / / __/ (__ ) 5 | \____/_/ /_/\__,_/_/ /_/_/ /_/\___/_/____/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/checkmk: -------------------------------------------------------------------------------- 1 | __ __ __ 2 | _____/ /_ ___ _____/ /______ ___ / /__ 3 | / ___/ __ \/ _ \/ ___/ //_/ __ `__ \/ //_/ 4 | / /__/ / / / __/ /__/ ,< / / / / / / ,< 5 | \___/_/ /_/\___/\___/_/|_/_/ /_/ /_/_/|_| 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/cloudflare-ddns: -------------------------------------------------------------------------------- 1 | ________ ________ ____ ____ _ _______ 2 | / ____/ /___ __ ______/ / __/ /___ _________ / __ \/ __ \/ | / / ___/ 3 | / / / / __ \/ / / / __ / /_/ / __ `/ ___/ _ \______/ / / / / / / |/ /\__ \ 4 | / /___/ / /_/ / /_/ / /_/ / __/ / /_/ / / / __/_____/ /_/ / /_/ / /| /___/ / 5 | \____/_/\____/\__,_/\__,_/_/ /_/\__,_/_/ \___/ /_____/_____/_/ |_//____/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/cloudflared: -------------------------------------------------------------------------------- 1 | ________ ________ __ 2 | / ____/ /___ __ ______/ / __/ /___ _________ ____/ / 3 | / / / / __ \/ / / / __ / /_/ / __ `/ ___/ _ \/ __ / 4 | / /___/ / /_/ / /_/ / /_/ / __/ / /_/ / / / __/ /_/ / 5 | \____/_/\____/\__,_/\__,_/_/ /_/\__,_/_/ \___/\__,_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/cockpit: -------------------------------------------------------------------------------- 1 | ______ __ _ __ 2 | / ____/___ _____/ /______ (_) /_ 3 | / / / __ \/ ___/ //_/ __ \/ / __/ 4 | / /___/ /_/ / /__/ ,< / /_/ / / /_ 5 | \____/\____/\___/_/|_/ .___/_/\__/ 6 | /_/ 7 | -------------------------------------------------------------------------------- /ct/headers/commafeed: -------------------------------------------------------------------------------- 1 | ______ ______ __ 2 | / ____/___ ____ ___ ____ ___ ____ _/ ____/__ ___ ____/ / 3 | / / / __ \/ __ `__ \/ __ `__ \/ __ `/ /_ / _ \/ _ \/ __ / 4 | / /___/ /_/ / / / / / / / / / / / /_/ / __/ / __/ __/ /_/ / 5 | \____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ \___/\___/\__,_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/configarr: -------------------------------------------------------------------------------- 1 | ______ _____ 2 | / ____/___ ____ / __(_)___ _____ ___________ 3 | / / / __ \/ __ \/ /_/ / __ `/ __ `/ ___/ ___/ 4 | / /___/ /_/ / / / / __/ / /_/ / /_/ / / / / 5 | \____/\____/_/ /_/_/ /_/\__, /\__,_/_/ /_/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/cosmos: -------------------------------------------------------------------------------- 1 | 2 | _________ _________ ___ ____ _____ 3 | / ___/ __ \/ ___/ __ `__ \/ __ \/ ___/ 4 | / /__/ /_/ (__ ) / / / / / /_/ (__ ) 5 | \___/\____/____/_/ /_/ /_/\____/____/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/crafty-controller: -------------------------------------------------------------------------------- 1 | ______ ______ ______ __ ____ 2 | / ____/________ _/ __/ /___ __ / ____/___ ____ / /__________ / / /__ _____ 3 | / / / ___/ __ `/ /_/ __/ / / /_____/ / / __ \/ __ \/ __/ ___/ __ \/ / / _ \/ ___/ 4 | / /___/ / / /_/ / __/ /_/ /_/ /_____/ /___/ /_/ / / / / /_/ / / /_/ / / / __/ / 5 | \____/_/ \__,_/_/ \__/\__, / \____/\____/_/ /_/\__/_/ \____/_/_/\___/_/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/cronicle: -------------------------------------------------------------------------------- 1 | ______ _ __ 2 | / ____/________ ____ (_)____/ /__ 3 | / / / ___/ __ \/ __ \/ / ___/ / _ \ 4 | / /___/ / / /_/ / / / / / /__/ / __/ 5 | \____/_/ \____/_/ /_/_/\___/_/\___/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/cross-seed: -------------------------------------------------------------------------------- 1 | __ 2 | ______________ __________ ________ ___ ____/ / 3 | / ___/ ___/ __ \/ ___/ ___/_____/ ___/ _ \/ _ \/ __ / 4 | / /__/ / / /_/ (__ |__ )_____(__ ) __/ __/ /_/ / 5 | \___/_/ \____/____/____/ /____/\___/\___/\__,_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/cryptpad: -------------------------------------------------------------------------------- 1 | ______ __ ____ __ 2 | / ____/______ ______ / /_/ __ \____ _____/ / 3 | / / / ___/ / / / __ \/ __/ /_/ / __ `/ __ / 4 | / /___/ / / /_/ / /_/ / /_/ ____/ /_/ / /_/ / 5 | \____/_/ \__, / .___/\__/_/ \__,_/\__,_/ 6 | /____/_/ 7 | -------------------------------------------------------------------------------- /ct/headers/daemonsync: -------------------------------------------------------------------------------- 1 | ____ _____ 2 | / __ \____ ____ ____ ___ ____ ____ / ___/__ ______ _____ 3 | / / / / __ `/ _ \/ __ `__ \/ __ \/ __ \ \__ \/ / / / __ \/ ___/ 4 | / /_/ / /_/ / __/ / / / / / /_/ / / / / ___/ / /_/ / / / / /__ 5 | /_____/\__,_/\___/_/ /_/ /_/\____/_/ /_/ /____/\__, /_/ /_/\___/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/dashy: -------------------------------------------------------------------------------- 1 | ____ __ 2 | / __ \____ ______/ /_ __ __ 3 | / / / / __ `/ ___/ __ \/ / / / 4 | / /_/ / /_/ (__ ) / / / /_/ / 5 | /_____/\__,_/____/_/ /_/\__, / 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/debian: -------------------------------------------------------------------------------- 1 | ____ __ _ 2 | / __ \___ / /_ (_)___ _____ 3 | / / / / _ \/ __ \/ / __ `/ __ \ 4 | / /_/ / __/ /_/ / / /_/ / / / / 5 | /_____/\___/_.___/_/\__,_/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/deconz: -------------------------------------------------------------------------------- 1 | __ __________ _ _______ 2 | ____/ /__ / ____/ __ \/ | / /__ / 3 | / __ / _ \/ / / / / / |/ / / / 4 | / /_/ / __/ /___/ /_/ / /| / / /__ 5 | \__,_/\___/\____/\____/_/ |_/ /____/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/deluge: -------------------------------------------------------------------------------- 1 | ____ __ 2 | / __ \___ / /_ ______ ____ 3 | / / / / _ \/ / / / / __ `/ _ \ 4 | / /_/ / __/ / /_/ / /_/ / __/ 5 | /_____/\___/_/\__,_/\__, /\___/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/docker: -------------------------------------------------------------------------------- 1 | ____ __ 2 | / __ \____ _____/ /_____ _____ 3 | / / / / __ \/ ___/ //_/ _ \/ ___/ 4 | / /_/ / /_/ / /__/ ,< / __/ / 5 | /_____/\____/\___/_/|_|\___/_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/dockge: -------------------------------------------------------------------------------- 1 | ____ __ 2 | / __ \____ _____/ /______ ____ 3 | / / / / __ \/ ___/ //_/ __ `/ _ \ 4 | / /_/ / /_/ / /__/ ,< / /_/ / __/ 5 | /_____/\____/\___/_/|_|\__, /\___/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/docmost: -------------------------------------------------------------------------------- 1 | ____ __ 2 | / __ \____ _________ ___ ____ _____/ /_ 3 | / / / / __ \/ ___/ __ `__ \/ __ \/ ___/ __/ 4 | / /_/ / /_/ / /__/ / / / / / /_/ (__ ) /_ 5 | /_____/\____/\___/_/ /_/ /_/\____/____/\__/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/documenso: -------------------------------------------------------------------------------- 1 | ____ 2 | / __ \____ _______ ______ ___ ___ ____ _________ 3 | / / / / __ \/ ___/ / / / __ `__ \/ _ \/ __ \/ ___/ __ \ 4 | / /_/ / /_/ / /__/ /_/ / / / / / / __/ / / (__ ) /_/ / 5 | /_____/\____/\___/\__,_/_/ /_/ /_/\___/_/ /_/____/\____/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/dolibarr: -------------------------------------------------------------------------------- 1 | ____ ___ __ 2 | / __ \____ / (_) /_ ____ ___________ 3 | / / / / __ \/ / / __ \/ __ `/ ___/ ___/ 4 | / /_/ / /_/ / / / /_/ / /_/ / / / / 5 | /_____/\____/_/_/_.___/\__,_/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/dotnetaspwebapi: -------------------------------------------------------------------------------- 1 | ____ __ __ ___ _____ ____ _ __ __ ___ ____ ____ 2 | / __ \____ / /_____ ___ / /_ / | / ___// __ \ | | / /__ / /_ / | / __ \/ _/ 3 | / / / / __ \/ __/ __ \/ _ \/ __/ / /| | \__ \/ /_/ / | | /| / / _ \/ __ \ / /| | / /_/ // / 4 | / /_/ / /_/ / /_/ / / / __/ /_ / ___ |___/ / ____/ | |/ |/ / __/ /_/ / / ___ |/ ____// / 5 | /_____/\____/\__/_/ /_/\___/\__/ /_/ |_/____/_/ |__/|__/\___/_.___/ /_/ |_/_/ /___/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/duplicati: -------------------------------------------------------------------------------- 1 | ____ ___ __ _ 2 | / __ \__ ______ / (_)________ _/ /_(_) 3 | / / / / / / / __ \/ / / ___/ __ `/ __/ / 4 | / /_/ / /_/ / /_/ / / / /__/ /_/ / /_/ / 5 | /_____/\__,_/ .___/_/_/\___/\__,_/\__/_/ 6 | /_/ 7 | -------------------------------------------------------------------------------- /ct/headers/elementsynapse: -------------------------------------------------------------------------------- 1 | ________ __ _____ 2 | / ____/ /__ ____ ___ ___ ____ / /_ / ___/__ ______ ____ _____ ________ 3 | / __/ / / _ \/ __ `__ \/ _ \/ __ \/ __/ \__ \/ / / / __ \/ __ `/ __ \/ ___/ _ \ 4 | / /___/ / __/ / / / / / __/ / / / /_ ___/ / /_/ / / / / /_/ / /_/ (__ ) __/ 5 | /_____/_/\___/_/ /_/ /_/\___/_/ /_/\__/ /____/\__, /_/ /_/\__,_/ .___/____/\___/ 6 | /____/ /_/ 7 | -------------------------------------------------------------------------------- /ct/headers/emby: -------------------------------------------------------------------------------- 1 | ______ __ 2 | / ____/___ ___ / /_ __ __ 3 | / __/ / __ `__ \/ __ \/ / / / 4 | / /___/ / / / / / /_/ / /_/ / 5 | /_____/_/ /_/ /_/_.___/\__, / 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/emqx: -------------------------------------------------------------------------------- 1 | ________ _______ _ __ 2 | / ____/ |/ / __ \ | |/ / 3 | / __/ / /|_/ / / / / | / 4 | / /___/ / / / /_/ / / | 5 | /_____/_/ /_/\___\_\/_/|_| 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/ersatztv: -------------------------------------------------------------------------------- 1 | ______ __ _______ __ 2 | / ____/_____________ _/ /_____/_ __/ | / / 3 | / __/ / ___/ ___/ __ `/ __/_ / / / | | / / 4 | / /___/ / (__ ) /_/ / /_ / /_/ / | |/ / 5 | /_____/_/ /____/\__,_/\__/ /___/_/ |___/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/esphome: -------------------------------------------------------------------------------- 1 | ___________ ____ __ __ 2 | / ____/ ___// __ \/ / / /___ ____ ___ ___ 3 | / __/ \__ \/ /_/ / /_/ / __ \/ __ `__ \/ _ \ 4 | / /___ ___/ / ____/ __ / /_/ / / / / / / __/ 5 | /_____//____/_/ /_/ /_/\____/_/ /_/ /_/\___/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/evcc: -------------------------------------------------------------------------------- 1 | 2 | ___ _ ____________ 3 | / _ \ | / / ___/ ___/ 4 | / __/ |/ / /__/ /__ 5 | \___/|___/\___/\___/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/excalidraw: -------------------------------------------------------------------------------- 1 | ______ ___ __ 2 | / ____/ ___________ _/ (_)___/ /________ __ __ 3 | / __/ | |/_/ ___/ __ `/ / / __ / ___/ __ `/ | /| / / 4 | / /____> < 5 | /_/ /_/\____/_/ /_/ /_/\___/_____/\____/_/|_| 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/homebridge: -------------------------------------------------------------------------------- 1 | __ __ __ _ __ 2 | / / / /___ ____ ___ ___ / /_ _____(_)___/ /___ ____ 3 | / /_/ / __ \/ __ `__ \/ _ \/ __ \/ ___/ / __ / __ `/ _ \ 4 | / __ / /_/ / / / / / / __/ /_/ / / / / /_/ / /_/ / __/ 5 | /_/ /_/\____/_/ /_/ /_/\___/_.___/_/ /_/\__,_/\__, /\___/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/homepage: -------------------------------------------------------------------------------- 1 | __ __ 2 | / / / /___ ____ ___ ___ ____ ____ _____ ____ 3 | / /_/ / __ \/ __ `__ \/ _ \/ __ \/ __ `/ __ `/ _ \ 4 | / __ / /_/ / / / / / / __/ /_/ / /_/ / /_/ / __/ 5 | /_/ /_/\____/_/ /_/ /_/\___/ .___/\__,_/\__, /\___/ 6 | /_/ /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/homer: -------------------------------------------------------------------------------- 1 | __ __ 2 | / / / /___ ____ ___ ___ _____ 3 | / /_/ / __ \/ __ `__ \/ _ \/ ___/ 4 | / __ / /_/ / / / / / / __/ / 5 | /_/ /_/\____/_/ /_/ /_/\___/_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/hyperhdr: -------------------------------------------------------------------------------- 1 | __ __ __ ______ ____ 2 | / / / /_ ______ ___ _____/ / / / __ \/ __ \ 3 | / /_/ / / / / __ \/ _ \/ ___/ /_/ / / / / /_/ / 4 | / __ / /_/ / /_/ / __/ / / __ / /_/ / _, _/ 5 | /_/ /_/\__, / .___/\___/_/ /_/ /_/_____/_/ |_| 6 | /____/_/ 7 | -------------------------------------------------------------------------------- /ct/headers/hyperion: -------------------------------------------------------------------------------- 1 | __ __ _ 2 | / / / /_ ______ ___ _____(_)___ ____ 3 | / /_/ / / / / __ \/ _ \/ ___/ / __ \/ __ \ 4 | / __ / /_/ / /_/ / __/ / / / /_/ / / / / 5 | /_/ /_/\__, / .___/\___/_/ /_/\____/_/ /_/ 6 | /____/_/ 7 | -------------------------------------------------------------------------------- /ct/headers/immich: -------------------------------------------------------------------------------- 1 | _ _ __ 2 | (_)___ ___ ____ ___ (_)____/ /_ 3 | / / __ `__ \/ __ `__ \/ / ___/ __ \ 4 | / / / / / / / / / / / / / /__/ / / / 5 | /_/_/ /_/ /_/_/ /_/ /_/_/\___/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/influxdb: -------------------------------------------------------------------------------- 1 | ____ ______ ____ ____ 2 | / _/___ / __/ /_ ___ __/ __ \/ __ ) 3 | / // __ \/ /_/ / / / / |/_/ / / / __ | 4 | _/ // / / / __/ / /_/ /> < 5 | /_/ |_/\___/\__/_____/\____/_/|_| 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/nextcloudpi: -------------------------------------------------------------------------------- 1 | _ __ __ ________ ______ _ 2 | / | / /__ _ __/ /_/ ____/ /___ __ ______/ / __ \(_) 3 | / |/ / _ \| |/_/ __/ / / / __ \/ / / / __ / /_/ / / 4 | / /| / __/> < / ____/ / / /_/ /> < | |/ |/ / / /_/ / / / __(__ |__ ) 5 | /_/ |_/_/|_| |__/|__/_/\__/_/ /_/\___/____/____/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/nzbget: -------------------------------------------------------------------------------- 1 | _ _______ ____ ______ __ 2 | / | / /__ / / __ )/ ____/__ / /_ 3 | / |/ / / / / __ / / __/ _ \/ __/ 4 | / /| / / /__/ /_/ / /_/ / __/ /_ 5 | /_/ |_/ /____/_____/\____/\___/\__/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/oauth2-proxy: -------------------------------------------------------------------------------- 1 | __ __ ___ 2 | ____ ____ ___ __/ /_/ /_ |__ \ ____ _________ _ ____ __ 3 | / __ \/ __ `/ / / / __/ __ \__/ /_____/ __ \/ ___/ __ \| |/_/ / / / 4 | / /_/ / /_/ / /_/ / /_/ / / / __/_____/ /_/ / / / /_/ /> < 5 | /_/ \__,_/ .___/\___/_/ /_/\___/____/____/ /_/ /_/\__, /_/|_| 6 | /_/ /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/part-db: -------------------------------------------------------------------------------- 1 | ____ __ ____ ____ 2 | / __ \____ ______/ /_ / __ \/ __ ) 3 | / /_/ / __ `/ ___/ __/_____/ / / / __ | 4 | / ____/ /_/ / / / /_/_____/ /_/ / /_/ / 5 | /_/ \__,_/_/ \__/ /_____/_____/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/paymenter: -------------------------------------------------------------------------------- 1 | ____ __ 2 | / __ \____ ___ ______ ___ ___ ____ / /____ _____ 3 | / /_/ / __ `/ / / / __ `__ \/ _ \/ __ \/ __/ _ \/ ___/ 4 | / ____/ /_/ / /_/ / / / / / / __/ / / / /_/ __/ / 5 | /_/ \__,_/\__, /_/ /_/ /_/\___/_/ /_/\__/\___/_/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/peanut: -------------------------------------------------------------------------------- 1 | ____ _ ____ ________ 2 | / __ \___ ____ _/ | / / / / /_ __/ 3 | / /_/ / _ \/ __ `/ |/ / / / / / / 4 | / ____/ __/ /_/ / /| / /_/ / / / 5 | /_/ \___/\__,_/_/ |_/\____/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/pelican-panel: -------------------------------------------------------------------------------- 1 | ____ ___ ____ __ 2 | / __ \___ / (_)________ _____ / __ \____ _____ ___ / / 3 | / /_/ / _ \/ / / ___/ __ `/ __ \______/ /_/ / __ `/ __ \/ _ \/ / 4 | / ____/ __/ / / /__/ /_/ / / / /_____/ ____/ /_/ / / / / __/ / 5 | /_/ \___/_/_/\___/\__,_/_/ /_/ /_/ \__,_/_/ /_/\___/_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/pelican-wings: -------------------------------------------------------------------------------- 1 | ____ ___ _ ___ 2 | / __ \___ / (_)________ _____ | | / (_)___ ____ ______ 3 | / /_/ / _ \/ / / ___/ __ `/ __ \_____| | /| / / / __ \/ __ `/ ___/ 4 | / ____/ __/ / / /__/ /_/ / / / /_____/ |/ |/ / / / / / /_/ (__ ) 5 | /_/ \___/_/_/\___/\__,_/_/ /_/ |__/|__/_/_/ /_/\__, /____/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/petio: -------------------------------------------------------------------------------- 1 | ____ __ _ 2 | / __ \___ / /_(_)___ 3 | / /_/ / _ \/ __/ / __ \ 4 | / ____/ __/ /_/ / /_/ / 5 | /_/ \___/\__/_/\____/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/pf2etools: -------------------------------------------------------------------------------- 1 | ____ _______ ______ __ 2 | / __ \/ __/__ \ ___/_ __/___ ____ / /____ 3 | / /_/ / /_ __/ // _ \/ / / __ \/ __ \/ / ___/ 4 | / ____/ __// __// __/ / / /_/ / /_/ / (__ ) 5 | /_/ /_/ /____/\___/_/ \____/\____/_/____/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/photoprism: -------------------------------------------------------------------------------- 1 | ____ __ __ ____ _ 2 | / __ \/ /_ ____ / /_____ / __ \_____(_)________ ___ 3 | / /_/ / __ \/ __ \/ __/ __ \/ /_/ / ___/ / ___/ __ `__ \ 4 | / ____/ / / / /_/ / /_/ /_/ / ____/ / / (__ ) / / / / / 5 | /_/ /_/ /_/\____/\__/\____/_/ /_/ /_/____/_/ /_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/phpipam: -------------------------------------------------------------------------------- 1 | __ ________ ___ __ ___ 2 | ____ / /_ ____ / _/ __ \/ | / |/ / 3 | / __ \/ __ \/ __ \ / // /_/ / /| | / /|_/ / 4 | / /_/ / / / / /_/ // // ____/ ___ |/ / / / 5 | / .___/_/ /_/ .___/___/_/ /_/ |_/_/ /_/ 6 | /_/ /_/ 7 | -------------------------------------------------------------------------------- /ct/headers/pialert: -------------------------------------------------------------------------------- 1 | ____ _ ___ __ __ 2 | / __ \(_) | / /__ _____/ /_ 3 | / /_/ / / /| | / / _ \/ ___/ __/ 4 | / ____/ / ___ |/ / __/ / / /_ 5 | /_/ /_/_/ |_/_/\___/_/ \__/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/pihole: -------------------------------------------------------------------------------- 1 | ____ _ __ __ 2 | / __ \(_) /_ ____ / /__ 3 | / /_/ / / __ \/ __ \/ / _ \ 4 | / ____/ / / / / /_/ / / __/ 5 | /_/ /_/_/ /_/\____/_/\___/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/pingvin: -------------------------------------------------------------------------------- 1 | ____ _ _ 2 | / __ \(_)___ ____ __ __(_)___ 3 | / /_/ / / __ \/ __ `/ | / / / __ \ 4 | / ____/ / / / / /_/ /| |/ / / / / / 5 | /_/ /_/_/ /_/\__, / |___/_/_/ /_/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/plant-it: -------------------------------------------------------------------------------- 1 | ____ __ __ _ __ 2 | / __ \/ /___ _____ / /_ (_) /_ 3 | / /_/ / / __ `/ __ \/ __/_____/ / __/ 4 | / ____/ / /_/ / / / / /_/_____/ / /_ 5 | /_/ /_/\__,_/_/ /_/\__/ /_/\__/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/plex: -------------------------------------------------------------------------------- 1 | ____ __ 2 | / __ \/ /__ _ __ 3 | / /_/ / / _ \| |/_/ 4 | / ____/ / __/> < 5 | /_/ /_/\___/_/|_| 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/pocketbase: -------------------------------------------------------------------------------- 1 | ____ __ __ __ 2 | / __ \____ _____/ /_____ / /_/ /_ ____ _________ 3 | / /_/ / __ \/ ___/ //_/ _ \/ __/ __ \/ __ `/ ___/ _ \ 4 | / ____/ /_/ / /__/ ,< / __/ /_/ /_/ / /_/ (__ ) __/ 5 | /_/ \____/\___/_/|_|\___/\__/_.___/\__,_/____/\___/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/pocketid: -------------------------------------------------------------------------------- 1 | ____ __ __ ________ 2 | / __ \____ _____/ /_____ / /_/ _/ __ \ 3 | / /_/ / __ \/ ___/ //_/ _ \/ __// // / / / 4 | / ____/ /_/ / /__/ ,< / __/ /__/ // /_/ / 5 | /_/ \____/\___/_/|_|\___/\__/___/_____/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/podman: -------------------------------------------------------------------------------- 1 | ____ __ 2 | / __ \____ ____/ /___ ___ ____ _____ 3 | / /_/ / __ \/ __ / __ `__ \/ __ `/ __ \ 4 | / ____/ /_/ / /_/ / / / / / / /_/ / / / / 5 | /_/ \____/\__,_/_/ /_/ /_/\__,_/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/podman-homeassistant: -------------------------------------------------------------------------------- 1 | ____ __ __ __ ___ _ __ __ 2 | / __ \____ ____/ /___ ___ ____ _____ / / / /___ ____ ___ ___ / | __________(_)____/ /_____ _____ / /_ 3 | / /_/ / __ \/ __ / __ `__ \/ __ `/ __ \______/ /_/ / __ \/ __ `__ \/ _ \ / /| | / ___/ ___/ / ___/ __/ __ `/ __ \/ __/ 4 | / ____/ /_/ / /_/ / / / / / / /_/ / / / /_____/ __ / /_/ / / / / / / __/ / ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_ 5 | /_/ \____/\__,_/_/ /_/ /_/\__,_/_/ /_/ /_/ /_/\____/_/ /_/ /_/\___/ /_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/postgresql: -------------------------------------------------------------------------------- 1 | ____ __ _____ ____ __ 2 | / __ \____ _____/ /_____ _________ / ___// __ \ / / 3 | / /_/ / __ \/ ___/ __/ __ `/ ___/ _ \\__ \/ / / / / / 4 | / ____/ /_/ (__ ) /_/ /_/ / / / __/__/ / /_/ / / /___ 5 | /_/ \____/____/\__/\__, /_/ \___/____/\___\_\/_____/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/privatebin: -------------------------------------------------------------------------------- 1 | ____ _ __ ____ _ 2 | / __ \_____(_) ______ _/ /____ / __ )(_)___ 3 | / /_/ / ___/ / | / / __ `/ __/ _ \/ __ / / __ \ 4 | / ____/ / / /| |/ / /_/ / /_/ __/ /_/ / / / / / 5 | /_/ /_/ /_/ |___/\__,_/\__/\___/_____/_/_/ /_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/projectsend: -------------------------------------------------------------------------------- 1 | ____ _ __ _____ __ 2 | / __ \_________ (_)__ _____/ /_/ ___/___ ____ ____/ / 3 | / /_/ / ___/ __ \ / / _ \/ ___/ __/\__ \/ _ \/ __ \/ __ / 4 | / ____/ / / /_/ / / / __/ /__/ /_ ___/ / __/ / / / /_/ / 5 | /_/ /_/ \____/_/ /\___/\___/\__//____/\___/_/ /_/\__,_/ 6 | /___/ 7 | -------------------------------------------------------------------------------- /ct/headers/prometheus: -------------------------------------------------------------------------------- 1 | ____ __ __ 2 | / __ \_________ ____ ___ ___ / /_/ /_ ___ __ _______ 3 | / /_/ / ___/ __ \/ __ `__ \/ _ \/ __/ __ \/ _ \/ / / / ___/ 4 | / ____/ / / /_/ / / / / / / __/ /_/ / / / __/ /_/ (__ ) 5 | /_/ /_/ \____/_/ /_/ /_/\___/\__/_/ /_/\___/\__,_/____/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/prometheus-alertmanager: -------------------------------------------------------------------------------- 1 | ____ __ __ ___ __ __ 2 | / __ \_________ ____ ___ ___ / /_/ /_ ___ __ _______ / | / /__ _____/ /_____ ___ ____ _____ ____ _____ ____ _____ 3 | / /_/ / ___/ __ \/ __ `__ \/ _ \/ __/ __ \/ _ \/ / / / ___/_____/ /| | / / _ \/ ___/ __/ __ `__ \/ __ `/ __ \/ __ `/ __ `/ _ \/ ___/ 4 | / ____/ / / /_/ / / / / / / __/ /_/ / / / __/ /_/ (__ )_____/ ___ |/ / __/ / / /_/ / / / / / /_/ / / / / /_/ / /_/ / __/ / 5 | /_/ /_/ \____/_/ /_/ /_/\___/\__/_/ /_/\___/\__,_/____/ /_/ |_/_/\___/_/ \__/_/ /_/ /_/\__,_/_/ /_/\__,_/\__, /\___/_/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/prometheus-pve-exporter: -------------------------------------------------------------------------------- 1 | ____ __ __ ____ _ ________ ______ __ 2 | / __ \_________ ____ ___ ___ / /_/ /_ ___ __ _______ / __ \ | / / ____/ / ____/ ______ ____ _____/ /____ _____ 3 | / /_/ / ___/ __ \/ __ `__ \/ _ \/ __/ __ \/ _ \/ / / / ___/_____/ /_/ / | / / __/______/ __/ | |/_/ __ \/ __ \/ ___/ __/ _ \/ ___/ 4 | / ____/ / / /_/ / / / / / / __/ /_/ / / / __/ /_/ (__ )_____/ ____/| |/ / /__/_____/ /____> < 5 | /____/\__,_/_.___/_.___/_/_/|_| 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/zammad: -------------------------------------------------------------------------------- 1 | _____ __ 2 | /__ / ____ _____ ___ ____ ___ ____ _____/ / 3 | / / / __ `/ __ `__ \/ __ `__ \/ __ `/ __ / 4 | / /__/ /_/ / / / / / / / / / / / /_/ / /_/ / 5 | /____/\__,_/_/ /_/ /_/_/ /_/ /_/\__,_/\__,_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/zerotier-one: -------------------------------------------------------------------------------- 1 | _____ __ _ ____ 2 | /__ / ___ _________ / /_(_)__ _____ / __ \____ ___ 3 | / / / _ \/ ___/ __ \/ __/ / _ \/ ___/_____/ / / / __ \/ _ \ 4 | / /__/ __/ / / /_/ / /_/ / __/ / /_____/ /_/ / / / / __/ 5 | /____/\___/_/ \____/\__/_/\___/_/ \____/_/ /_/\___/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/zigbee2mqtt: -------------------------------------------------------------------------------- 1 | _____ _ __ ___ __ _______ ____________ 2 | /__ / (_)___ _/ /_ ___ ___ |__ \ / |/ / __ \/_ __/_ __/ 3 | / / / / __ `/ __ \/ _ \/ _ \__/ // /|_/ / / / / / / / / 4 | / /__/ / /_/ / /_/ / __/ __/ __// / / / /_/ / / / / / 5 | /____/_/\__, /_.___/\___/\___/____/_/ /_/\___\_\/_/ /_/ 6 | /____/ 7 | -------------------------------------------------------------------------------- /ct/headers/zipline: -------------------------------------------------------------------------------- 1 | _____ _ ___ 2 | /__ / (_)___ / (_)___ ___ 3 | / / / / __ \/ / / __ \/ _ \ 4 | / /__/ / /_/ / / / / / / __/ 5 | /____/_/ .___/_/_/_/ /_/\___/ 6 | /_/ 7 | -------------------------------------------------------------------------------- /ct/headers/zitadel: -------------------------------------------------------------------------------- 1 | _____ _ __ __ __ 2 | /__ / (_) /_____ _____/ /__ / / 3 | / / / / __/ __ `/ __ / _ \/ / 4 | / /__/ / /_/ /_/ / /_/ / __/ / 5 | /____/_/\__/\__,_/\__,_/\___/_/ 6 | 7 | -------------------------------------------------------------------------------- /ct/headers/zoraxy: -------------------------------------------------------------------------------- 1 | _____ 2 | /__ / ____ _________ __ ____ __ 3 | / / / __ \/ ___/ __ `/ |/_/ / / / 4 | / /__/ /_/ / / / /_/ /> { 4 | config.resolve.alias.canvas = false; 5 | 6 | return config; 7 | }, 8 | images: { 9 | remotePatterns: [ 10 | { 11 | protocol: "https", 12 | hostname: "**", 13 | }, 14 | ], 15 | }, 16 | 17 | env: { 18 | BASE_PATH: "ProxmoxVE", 19 | }, 20 | 21 | output: "export", 22 | basePath: `/ProxmoxVE`, 23 | }; 24 | 25 | export default nextConfig; 26 | -------------------------------------------------------------------------------- /frontend/postcss.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('postcss-load-config').Config} */ 2 | const config = { 3 | plugins: { 4 | tailwindcss: {}, 5 | }, 6 | }; 7 | 8 | export default config; 9 | -------------------------------------------------------------------------------- /frontend/public/defaultimg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/community-scripts/ProxmoxVE/3aa1f0534331b45200f960f2e2fd953855a87806/frontend/public/defaultimg.png -------------------------------------------------------------------------------- /frontend/public/json/commafeed.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CommaFeed", 3 | "slug": "commafeed", 4 | "categories": [ 5 | 12 6 | ], 7 | "date_created": "2024-05-02", 8 | "type": "ct", 9 | "updateable": true, 10 | "privileged": false, 11 | "interface_port": 8082, 12 | "documentation": null, 13 | "website": "https://www.commafeed.com/", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/commafeed.webp", 15 | "config_path": "", 16 | "description": "CommaFeed is a Google Reader inspired self-hosted RSS reader.", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/commafeed.sh", 21 | "resources": { 22 | "cpu": 2, 23 | "ram": 2048, 24 | "hdd": 4, 25 | "os": "debian", 26 | "version": "12" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": "admin", 32 | "password": "admin" 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/json/daemonsync.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Daemon Sync Server", 3 | "slug": "daemonsync", 4 | "categories": [ 5 | 19 6 | ], 7 | "date_created": "2024-05-02", 8 | "type": "ct", 9 | "updateable": false, 10 | "privileged": false, 11 | "interface_port": 8084, 12 | "documentation": null, 13 | "website": "https://daemonsync.me/", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/daemon-sync.webp", 15 | "config_path": "", 16 | "description": "Sync files from app to server, share photos & videos, back up your data and stay secure inside local network.", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/daemonsync.sh", 21 | "resources": { 22 | "cpu": 1, 23 | "ram": 512, 24 | "hdd": 8, 25 | "os": "debian", 26 | "version": "12" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": null, 32 | "password": null 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/json/ersatztv.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ErsatzTV", 3 | "slug": "ersatztv", 4 | "categories": [ 5 | 13 6 | ], 7 | "date_created": "2024-05-02", 8 | "type": "ct", 9 | "updateable": true, 10 | "privileged": false, 11 | "interface_port": 8409, 12 | "documentation": "https://ersatztv.org/docs/intro", 13 | "website": "https://ersatztv.org/", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/ersatztv.webp", 15 | "config_path": "", 16 | "description": "ErsatzTV is software for configuring and streaming custom live channels using your media library.", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/ersatztv.sh", 21 | "resources": { 22 | "cpu": 1, 23 | "ram": 1024, 24 | "hdd": 5, 25 | "os": "debian", 26 | "version": "12" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": null, 32 | "password": null 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/json/excalidraw.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Excalidraw", 3 | "slug": "excalidraw", 4 | "categories": [ 5 | 12 6 | ], 7 | "date_created": "2025-02-12", 8 | "type": "ct", 9 | "updateable": true, 10 | "privileged": false, 11 | "interface_port": 3000, 12 | "documentation": "https://docs.excalidraw.com/docs", 13 | "website": "https://excalidraw.com/", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/excalidraw.webp", 15 | "config_path": "", 16 | "description": "An open source virtual hand-drawn style whiteboard. Collaborative and end-to-end encrypted.", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/excalidraw.sh", 21 | "resources": { 22 | "cpu": 2, 23 | "ram": 3072, 24 | "hdd": 10, 25 | "os": "debian", 26 | "version": "12" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": null, 32 | "password": null 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/json/fenrus.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Fenrus", 3 | "slug": "fenrus", 4 | "categories": [ 5 | 10 6 | ], 7 | "date_created": "2024-05-05", 8 | "type": "ct", 9 | "updateable": false, 10 | "privileged": false, 11 | "interface_port": 5000, 12 | "documentation": "https://github.com/revenz/Fenrus/wiki", 13 | "website": "https://github.com/revenz/Fenrus", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/fenrus.webp", 15 | "config_path": "", 16 | "description": "A personal home page for quick access to all your personal apps/sites.", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/fenrus.sh", 21 | "resources": { 22 | "cpu": 1, 23 | "ram": 512, 24 | "hdd": 4, 25 | "os": "debian", 26 | "version": "12" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": null, 32 | "password": null 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/json/forgejo.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Forgejo", 3 | "slug": "forgejo", 4 | "categories": [ 5 | 20 6 | ], 7 | "date_created": "2024-06-12", 8 | "type": "ct", 9 | "updateable": true, 10 | "privileged": false, 11 | "interface_port": 3000, 12 | "documentation": null, 13 | "website": "https://forgejo.org/", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/forgejo.webp", 15 | "config_path": "/etc/forgejo/app.ini", 16 | "description": "Forgejo is an open-source, self-hosted Git service that allows individuals and teams to manage their code repositories.", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/forgejo.sh", 21 | "resources": { 22 | "cpu": 2, 23 | "ram": 2048, 24 | "hdd": 10, 25 | "os": "debian", 26 | "version": "12" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": null, 32 | "password": null 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/json/gotify.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Gotify", 3 | "slug": "gotify", 4 | "categories": [ 5 | 19 6 | ], 7 | "date_created": "2024-05-02", 8 | "type": "ct", 9 | "updateable": false, 10 | "privileged": false, 11 | "interface_port": 80, 12 | "documentation": "https://gotify.net/docs/index", 13 | "website": "https://gotify.net/", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/gotify.webp", 15 | "config_path": "/etc/gotify/config.yml", 16 | "description": "Gotify is a simple server for sending and receiving messages", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/gotify.sh", 21 | "resources": { 22 | "cpu": 1, 23 | "ram": 512, 24 | "hdd": 2, 25 | "os": "debian", 26 | "version": "12" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": "admin", 32 | "password": "admin" 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/json/homarr.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Homarr", 3 | "slug": "homarr", 4 | "categories": [ 5 | 10 6 | ], 7 | "date_created": "2025-01-28", 8 | "type": "ct", 9 | "updateable": true, 10 | "privileged": false, 11 | "interface_port": 7575, 12 | "documentation": null, 13 | "website": "https://homarr.dev/", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/homarr.webp", 15 | "config_path": "/opt/homarr/.env", 16 | "description": "Homarr is a sleek, modern dashboard that puts all of your apps and services at your fingertips.", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/homarr.sh", 21 | "resources": { 22 | "cpu": 3, 23 | "ram": 6144, 24 | "hdd": 8, 25 | "os": "debian", 26 | "version": "12" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": null, 32 | "password": null 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/json/jenkins.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Jenkins", 3 | "slug": "jenkins", 4 | "categories": [ 5 | 22 6 | ], 7 | "date_created": "2024-12-26", 8 | "type": "ct", 9 | "updateable": false, 10 | "privileged": false, 11 | "interface_port": 8080, 12 | "documentation": "https://www.jenkins.io/doc/", 13 | "website": "https://www.jenkins.io/", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/jenkins.webp", 15 | "config_path": "", 16 | "description": "Jenkins provides hundreds of plugins to support building, deploying and automating any project. ", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/jenkins.sh", 21 | "resources": { 22 | "cpu": 2, 23 | "ram": 1024, 24 | "hdd": 4, 25 | "os": "debian", 26 | "version": "12" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": null, 32 | "password": null 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/json/lubelogger.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LubeLogger", 3 | "slug": "lubelogger", 4 | "categories": [ 5 | 24 6 | ], 7 | "date_created": "2024-11-29", 8 | "type": "ct", 9 | "updateable": true, 10 | "privileged": false, 11 | "interface_port": 5000, 12 | "documentation": "https://docs.lubelogger.com/", 13 | "website": "https://lubelogger.com/", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/lubelogger.webp", 15 | "config_path": "/opt/lubelogger/appsettings.json", 16 | "description": "Web-Based Vehicle Maintenance and Fuel Mileage Tracker", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/lubelogger.sh", 21 | "resources": { 22 | "cpu": 1, 23 | "ram": 512, 24 | "hdd": 2, 25 | "os": "debian", 26 | "version": "12" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": null, 32 | "password": null 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/json/onedev.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "OneDev", 3 | "slug": "onedev", 4 | "categories": [ 5 | 20 6 | ], 7 | "date_created": "2024-11-30", 8 | "type": "ct", 9 | "updateable": true, 10 | "privileged": false, 11 | "interface_port": 6610, 12 | "documentation": "https://docs.onedev.io/", 13 | "website": "https://onedev.io/", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/onedev.webp", 15 | "config_path": "/opt/onedev/conf", 16 | "description": "Git server with CI/CD, kanban, and packages.", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/onedev.sh", 21 | "resources": { 22 | "cpu": 2, 23 | "ram": 2048, 24 | "hdd": 4, 25 | "os": "debian", 26 | "version": "12" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": null, 32 | "password": null 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/json/opengist.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Opengist", 3 | "slug": "opengist", 4 | "categories": [ 5 | 20 6 | ], 7 | "date_created": "2025-01-14", 8 | "type": "ct", 9 | "updateable": true, 10 | "privileged": false, 11 | "interface_port": 6157, 12 | "documentation": null, 13 | "website": "https://opengist.io/", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/opengist.webp", 15 | "config_path": "/opt/opengist/config.yml", 16 | "description": "Self-hosted pastebin powered by Git, open-source alternative to Github Gist.", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/opengist.sh", 21 | "resources": { 22 | "cpu": 1, 23 | "ram": 1024, 24 | "hdd": 8, 25 | "os": "debian", 26 | "version": "12" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": null, 32 | "password": null 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/json/petio.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Petio", 3 | "slug": "petio", 4 | "categories": [ 5 | 13 6 | ], 7 | "date_created": "2024-06-12", 8 | "type": "ct", 9 | "updateable": true, 10 | "privileged": false, 11 | "interface_port": 7777, 12 | "documentation": "https://docs.petio.tv/", 13 | "website": "https://petio.tv/", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/petio.webp", 15 | "config_path": "", 16 | "description": "Petio is a third party companion app available to Plex server owners to allow their users to request, review and discover content.", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/petio.sh", 21 | "resources": { 22 | "cpu": 2, 23 | "ram": 1024, 24 | "hdd": 4, 25 | "os": "ubuntu", 26 | "version": "20.04" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": null, 32 | "password": null 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/json/threadfin.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Threadfin", 3 | "slug": "threadfin", 4 | "categories": [ 5 | 13 6 | ], 7 | "date_created": "2024-06-12", 8 | "type": "ct", 9 | "updateable": false, 10 | "privileged": false, 11 | "interface_port": 34400, 12 | "documentation": null, 13 | "website": "https://github.com/Threadfin/Threadfin", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/threadfin.webp", 15 | "config_path": "", 16 | "description": "Threadfin is a M3U proxy for Kernel, Plex, Jellyfin, or Emby, based on xTeVe.", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/threadfin.sh", 21 | "resources": { 22 | "cpu": 1, 23 | "ram": 1024, 24 | "hdd": 4, 25 | "os": "debian", 26 | "version": "12" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": null, 32 | "password": null 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/json/wastebin.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Wastebin", 3 | "slug": "wastebin", 4 | "categories": [ 5 | 12 6 | ], 7 | "date_created": "2024-05-02", 8 | "type": "ct", 9 | "updateable": true, 10 | "privileged": false, 11 | "interface_port": 8088, 12 | "documentation": null, 13 | "website": "https://github.com/matze/wastebin", 14 | "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wastebin.webp", 15 | "config_path": "/opt/wastebin-data/.env", 16 | "description": "Wastebin is a minimal pastebin with a design shamelessly copied from bin.", 17 | "install_methods": [ 18 | { 19 | "type": "default", 20 | "script": "ct/wastebin.sh", 21 | "resources": { 22 | "cpu": 1, 23 | "ram": 1024, 24 | "hdd": 4, 25 | "os": "debian", 26 | "version": "12" 27 | } 28 | } 29 | ], 30 | "default_credentials": { 31 | "username": null, 32 | "password": null 33 | }, 34 | "notes": [] 35 | } 36 | -------------------------------------------------------------------------------- /frontend/public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/community-scripts/ProxmoxVE/3aa1f0534331b45200f960f2e2fd953855a87806/frontend/public/logo.png -------------------------------------------------------------------------------- /frontend/src/__tests__/app/page.test.tsx: -------------------------------------------------------------------------------- 1 | import { screen } from "@testing-library/dom"; 2 | import { render } from "@testing-library/react"; 3 | import { describe, expect, it } from "vitest"; 4 | import Page from "@/app/page"; 5 | 6 | describe("Page", () => { 7 | it("should show button to view scripts", () => { 8 | render(); 9 | expect(screen.getByRole("button", { name: "View Scripts" })).toBeDefined(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /frontend/src/__tests__/setupTests.ts: -------------------------------------------------------------------------------- 1 | import { vi } from "vitest"; 2 | 3 | // Mock canvas getContext 4 | HTMLCanvasElement.prototype.getContext = vi.fn(); -------------------------------------------------------------------------------- /frontend/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/community-scripts/ProxmoxVE/3aa1f0534331b45200f960f2e2fd953855a87806/frontend/src/app/favicon.ico -------------------------------------------------------------------------------- /frontend/src/app/manifest.ts: -------------------------------------------------------------------------------- 1 | import { basePath } from "@/config/siteConfig"; 2 | import type { MetadataRoute } from "next"; 3 | 4 | export const generateStaticParams = () => { 5 | return []; 6 | }; 7 | 8 | export default function manifest(): MetadataRoute.Manifest { 9 | return { 10 | name: "Proxmox VE Helper-Scripts", 11 | short_name: "Proxmox VE Helper-Scripts", 12 | description: 13 | "A Re-designed Front-end for the Proxmox VE Helper-Scripts Repository. Featuring over 200+ scripts to help you manage your Proxmox VE environment.", 14 | theme_color: "#030712", 15 | background_color: "#030712", 16 | display: "standalone", 17 | orientation: "portrait", 18 | scope: `${basePath}`, 19 | start_url: `${basePath}`, 20 | icons: [ 21 | { 22 | src: "logo.png", 23 | sizes: "512x512", 24 | type: "image/png", 25 | }, 26 | ], 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /frontend/src/app/not-found.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | import { Button } from "@/components/ui/button"; 3 | 4 | export default function NotFoundPage() { 5 | return ( 6 |
7 |
8 |

9 | 404 10 |

11 |

12 | Oops, the page you are looking for could not be found. 13 |

14 |
15 | 18 |
19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /frontend/src/app/robots.ts: -------------------------------------------------------------------------------- 1 | import { basePath } from "@/config/siteConfig"; 2 | import type { MetadataRoute } from "next"; 3 | 4 | export const dynamic = "force-static"; 5 | 6 | export default function robots(): MetadataRoute.Robots { 7 | return { 8 | rules: { 9 | userAgent: "*", 10 | allow: "/", 11 | }, 12 | sitemap: `https://community-scripts.github.io/${basePath}/sitemap.xml`, 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /frontend/src/app/scripts/_components/ScriptItems/ConfigFile.tsx: -------------------------------------------------------------------------------- 1 | import ConfigCopyButton from "@/components/ui/config-copy-button"; 2 | import { Script } from "@/lib/types"; 3 | 4 | export default function ConfigFile({ item }: { item: Script }) { 5 | return ( 6 |
7 | {item.config_path ? item.config_path : "No config path set"} 8 |
9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /frontend/src/app/scripts/_components/ScriptItems/Description.tsx: -------------------------------------------------------------------------------- 1 | import TextCopyBlock from "@/components/TextCopyBlock"; 2 | import { Script } from "@/lib/types"; 3 | 4 | export default function Description({ item }: { item: Script }) { 5 | return ( 6 |
7 |

Description

8 |

9 | {TextCopyBlock(item.description)} 10 |

11 |
12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /frontend/src/app/scripts/_components/VersionBadge.tsx: -------------------------------------------------------------------------------- 1 | import { AppVersion } from "@/lib/types"; 2 | 3 | interface VersionBadgeProps { 4 | version: AppVersion; 5 | } 6 | 7 | export function VersionBadge({ version }: VersionBadgeProps) { 8 | return ( 9 |
10 | {version.version} 11 |
12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /frontend/src/app/sitemap.ts: -------------------------------------------------------------------------------- 1 | import { basePath } from "@/config/siteConfig"; 2 | import type { MetadataRoute } from "next"; 3 | 4 | export const dynamic = "force-static"; 5 | 6 | export default async function sitemap(): Promise { 7 | let domain = "community-scripts.github.io"; 8 | let protocol = "https"; 9 | return [ 10 | { 11 | url: `${protocol}://${domain}/${basePath}`, 12 | lastModified: new Date(), 13 | }, 14 | { 15 | url: `${protocol}://${domain}/${basePath}/scripts`, 16 | lastModified: new Date(), 17 | }, 18 | { 19 | url: `${protocol}://${domain}/${basePath}/json-editor`, 20 | lastModified: new Date(), 21 | } 22 | ]; 23 | } 24 | -------------------------------------------------------------------------------- /frontend/src/components/Modal.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import React from "react"; 4 | 5 | interface ModalProps { 6 | isOpen: boolean; 7 | onClose: () => void; 8 | children: React.ReactNode; 9 | } 10 | 11 | const Modal: React.FC = ({ isOpen, onClose, children }) => { 12 | if (!isOpen) return null; 13 | 14 | return ( 15 |
16 |
17 | 23 | {children} 24 |
25 |
26 | ); 27 | }; 28 | 29 | export default Modal; 30 | -------------------------------------------------------------------------------- /frontend/src/components/TextCopyBlock.tsx: -------------------------------------------------------------------------------- 1 | import { ClipboardIcon } from "lucide-react"; 2 | import handleCopy from "./handleCopy"; 3 | 4 | export default function TextCopyBlock(description: string) { 5 | const pattern = /`([^`]*)`/g; 6 | const parts = description.split(pattern); 7 | 8 | const formattedDescription = parts.map((part: string, index: number) => { 9 | if (index % 2 === 1) { 10 | return ( 11 | 15 | {part} 16 | handleCopy("command", part)} 19 | /> 20 | 21 | ); 22 | } else { 23 | return part; 24 | } 25 | }); 26 | 27 | return formattedDescription; 28 | } 29 | -------------------------------------------------------------------------------- /frontend/src/components/handleCopy.tsx: -------------------------------------------------------------------------------- 1 | import { ClipboardCheck } from "lucide-react"; 2 | import { toast } from "sonner"; 3 | 4 | export default function handleCopy(type: string, value: string) { 5 | navigator.clipboard.writeText(value); 6 | 7 | toast.success(`copied ${type} to clipboard`, { 8 | icon: , 9 | }); 10 | } 11 | -------------------------------------------------------------------------------- /frontend/src/components/query-provider.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; 3 | import React from "react"; 4 | 5 | const queryClient = new QueryClient(); 6 | 7 | export default function QueryProvider({ children }: { children: React.ReactNode }) { 8 | return {children}; 9 | } 10 | -------------------------------------------------------------------------------- /frontend/src/components/theme-provider.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { ThemeProvider as NextThemesProvider } from "next-themes"; 4 | import { type ThemeProviderProps } from "next-themes/dist/types"; 5 | 6 | export function ThemeProvider({ children, ...props }: ThemeProviderProps) { 7 | return {children}; 8 | } 9 | -------------------------------------------------------------------------------- /frontend/src/components/ui/input.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | 3 | import { cn } from "@/lib/utils"; 4 | 5 | export interface InputProps 6 | extends React.InputHTMLAttributes {} 7 | 8 | const Input = React.forwardRef( 9 | ({ className, type, ...props }, ref) => { 10 | return ( 11 | 20 | ); 21 | }, 22 | ); 23 | Input.displayName = "Input"; 24 | 25 | export { Input }; 26 | -------------------------------------------------------------------------------- /frontend/src/components/ui/label.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | import * as React from "react" 4 | import * as LabelPrimitive from "@radix-ui/react-label" 5 | import { cva, type VariantProps } from "class-variance-authority" 6 | 7 | import { cn } from "@/lib/utils" 8 | 9 | const labelVariants = cva( 10 | "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" 11 | ) 12 | 13 | const Label = React.forwardRef< 14 | React.ElementRef, 15 | React.ComponentPropsWithoutRef & 16 | VariantProps 17 | >(({ className, ...props }, ref) => ( 18 | 23 | )) 24 | Label.displayName = LabelPrimitive.Root.displayName 25 | 26 | export { Label } 27 | -------------------------------------------------------------------------------- /frontend/src/components/ui/separator.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import * as SeparatorPrimitive from "@radix-ui/react-separator"; 4 | import * as React from "react"; 5 | 6 | import { cn } from "@/lib/utils"; 7 | 8 | const Separator = React.forwardRef< 9 | React.ElementRef, 10 | React.ComponentPropsWithoutRef 11 | >( 12 | ( 13 | { className, orientation = "horizontal", decorative = true, ...props }, 14 | ref, 15 | ) => ( 16 | 27 | ), 28 | ); 29 | Separator.displayName = SeparatorPrimitive.Root.displayName; 30 | 31 | export { Separator }; 32 | -------------------------------------------------------------------------------- /frontend/src/components/ui/textarea.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import { cn } from "@/lib/utils" 4 | 5 | const Textarea = React.forwardRef< 6 | HTMLTextAreaElement, 7 | React.ComponentProps<"textarea"> 8 | >(({ className, ...props }, ref) => { 9 | return ( 10 |