Showing preview only (1,123K chars total). Download the full file or copy to clipboard to get everything.
Repository: tteck/Proxmox
Branch: main
Commit: 930760840c27
Files: 423
Total size: 1.0 MB
Directory structure:
gitextract_ua0ju9th/
├── .github/
│ ├── CODE_OF_CONDUCT.md
│ ├── CONTRIBUTING.md
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yaml
│ │ └── config.yml
│ └── pull_request_template.md
├── CHANGELOG.md
├── CODE-AUDIT.md
├── LICENSE
├── README.md
├── USER_SUBMITTED_GUIDES.md
├── ct/
│ ├── actualbudget.sh
│ ├── adguard.sh
│ ├── adventurelog.sh
│ ├── agentdvr.sh
│ ├── alpine-docker.sh
│ ├── alpine-grafana.sh
│ ├── alpine-nextcloud.sh
│ ├── alpine-vaultwarden.sh
│ ├── alpine-zigbee2mqtt.sh
│ ├── alpine.sh
│ ├── apache-cassandra.sh
│ ├── apache-couchdb.sh
│ ├── apt-cacher-ng.sh
│ ├── archivebox.sh
│ ├── aria2.sh
│ ├── audiobookshelf.sh
│ ├── autobrr.sh
│ ├── bazarr.sh
│ ├── blocky.sh
│ ├── bunkerweb.sh
│ ├── caddy.sh
│ ├── calibre-web.sh
│ ├── casaos.sh
│ ├── changedetection.sh
│ ├── channels.sh
│ ├── cloudflared.sh
│ ├── cockpit.sh
│ ├── commafeed.sh
│ ├── create_lxc.sh
│ ├── cronicle.sh
│ ├── daemonsync.sh
│ ├── dashy.sh
│ ├── debian.sh
│ ├── deconz.sh
│ ├── deluge.sh
│ ├── docker.sh
│ ├── dockge.sh
│ ├── emby.sh
│ ├── emqx.sh
│ ├── ersatztv.sh
│ ├── esphome.sh
│ ├── evcc.sh
│ ├── fenrus.sh
│ ├── fhem.sh
│ ├── flaresolverr.sh
│ ├── flowiseai.sh
│ ├── forgejo.sh
│ ├── frigate.sh
│ ├── gitea.sh
│ ├── go2rtc.sh
│ ├── gokapi.sh
│ ├── gotify.sh
│ ├── grafana.sh
│ ├── grocy.sh
│ ├── headscale.sh
│ ├── heimdall-dashboard.sh
│ ├── hivemq.sh
│ ├── homarr.sh
│ ├── homeassistant-core.sh
│ ├── homeassistant.sh
│ ├── homebox.sh
│ ├── homebridge.sh
│ ├── homepage.sh
│ ├── homer.sh
│ ├── hyperhdr.sh
│ ├── hyperion.sh
│ ├── influxdb.sh
│ ├── iobroker.sh
│ ├── iventoy.sh
│ ├── jackett.sh
│ ├── jellyfin.sh
│ ├── jellyseerr.sh
│ ├── kavita.sh
│ ├── keycloak.sh
│ ├── kubo.sh
│ ├── lazylibrarian.sh
│ ├── lidarr.sh
│ ├── linkwarden.sh
│ ├── lldap.sh
│ ├── mafl.sh
│ ├── magicmirror.sh
│ ├── mariadb.sh
│ ├── matterbridge.sh
│ ├── mediamtx.sh
│ ├── medusa.sh
│ ├── memos.sh
│ ├── meshcentral.sh
│ ├── metube.sh
│ ├── mongodb.sh
│ ├── motioneye.sh
│ ├── mqtt.sh
│ ├── myspeed.sh
│ ├── mysql.sh
│ ├── n8n.sh
│ ├── navidrome.sh
│ ├── neo4j.sh
│ ├── nextcloudpi.sh
│ ├── nginxproxymanager.sh
│ ├── nocodb.sh
│ ├── node-red.sh
│ ├── notifiarr.sh
│ ├── ntfy.sh
│ ├── nzbget.sh
│ ├── octoprint.sh
│ ├── ollama.sh
│ ├── omada.sh
│ ├── ombi.sh
│ ├── omv.sh
│ ├── openhab.sh
│ ├── openobserve.sh
│ ├── openwebui.sh
│ ├── overseerr.sh
│ ├── owncast.sh
│ ├── pairdrop.sh
│ ├── paperless-ngx.sh
│ ├── pbs.sh
│ ├── peanut.sh
│ ├── petio.sh
│ ├── photoprism.sh
│ ├── pialert.sh
│ ├── pihole.sh
│ ├── pingvin.sh
│ ├── plex.sh
│ ├── pocketbase.sh
│ ├── podman-homeassistant.sh
│ ├── podman.sh
│ ├── postgresql.sh
│ ├── prometheus.sh
│ ├── prowlarr.sh
│ ├── qbittorrent.sh
│ ├── rabbitmq.sh
│ ├── radarr.sh
│ ├── rdtclient.sh
│ ├── readarr.sh
│ ├── readeck.sh
│ ├── redis.sh
│ ├── rockylinux.sh
│ ├── rtsptoweb.sh
│ ├── runtipi.sh
│ ├── sabnzbd.sh
│ ├── scrypted.sh
│ ├── sftpgo.sh
│ ├── shinobi.sh
│ ├── smokeping.sh
│ ├── sonarr.sh
│ ├── spoolman.sh
│ ├── stirling-pdf.sh
│ ├── syncthing.sh
│ ├── tandoor.sh
│ ├── tasmoadmin.sh
│ ├── tautulli.sh
│ ├── tdarr.sh
│ ├── technitiumdns.sh
│ ├── threadfin.sh
│ ├── tianji.sh
│ ├── traccar.sh
│ ├── traefik.sh
│ ├── transmission.sh
│ ├── trilium.sh
│ ├── ubuntu.sh
│ ├── umami.sh
│ ├── umbrel.sh
│ ├── unifi.sh
│ ├── unmanic.sh
│ ├── uptimekuma.sh
│ ├── vaultwarden.sh
│ ├── wallos.sh
│ ├── wastebin.sh
│ ├── watchyourlan.sh
│ ├── whisparr.sh
│ ├── whoogle.sh
│ ├── wikijs.sh
│ ├── wireguard.sh
│ ├── yunohost.sh
│ ├── zabbix.sh
│ ├── zigbee2mqtt.sh
│ ├── zipline.sh
│ ├── zoraxy.sh
│ └── zwave-js-ui.sh
├── install/
│ ├── actualbudget-install.sh
│ ├── adguard-install.sh
│ ├── adventurelog-install.sh
│ ├── agentdvr-install.sh
│ ├── alpine-docker-install.sh
│ ├── alpine-grafana-install.sh
│ ├── alpine-install.sh
│ ├── alpine-nextcloud-install.sh
│ ├── alpine-vaultwarden-install.sh
│ ├── alpine-zigbee2mqtt-install.sh
│ ├── apache-cassandra-install.sh
│ ├── apache-couchdb-install.sh
│ ├── apt-cacher-ng-install.sh
│ ├── archivebox-install.sh
│ ├── aria2-install.sh
│ ├── audiobookshelf-install.sh
│ ├── autobrr-install.sh
│ ├── bazarr-install.sh
│ ├── blocky-install.sh
│ ├── bunkerweb-install.sh
│ ├── caddy-install.sh
│ ├── calibre-web-install.sh
│ ├── casaos-install.sh
│ ├── changedetection-install.sh
│ ├── channels-install.sh
│ ├── cloudflared-install.sh
│ ├── cockpit-install.sh
│ ├── commafeed-install.sh
│ ├── cronicle-install.sh
│ ├── daemonsync-install.sh
│ ├── dashy-install.sh
│ ├── debian-install.sh
│ ├── deconz-install.sh
│ ├── deluge-install.sh
│ ├── docker-install.sh
│ ├── dockge-install.sh
│ ├── emby-install.sh
│ ├── emqx-install.sh
│ ├── ersatztv-install.sh
│ ├── esphome-install.sh
│ ├── evcc-install.sh
│ ├── fenrus-install.sh
│ ├── fhem-install.sh
│ ├── flaresolverr-install.sh
│ ├── flowiseai-install.sh
│ ├── forgejo-install.sh
│ ├── frigate-install.sh
│ ├── gitea-install.sh
│ ├── go2rtc-install.sh
│ ├── gokapi-install.sh
│ ├── gotify-install.sh
│ ├── grafana-install.sh
│ ├── grocy-install.sh
│ ├── headscale-install.sh
│ ├── heimdall-dashboard-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
│ ├── influxdb-install.sh
│ ├── iobroker-install.sh
│ ├── iventoy-install.sh
│ ├── jackett-install.sh
│ ├── jellyfin-install.sh
│ ├── jellyseerr-install.sh
│ ├── kavita-install.sh
│ ├── keycloak-install.sh
│ ├── kubo-install.sh
│ ├── lazylibrarian-install.sh
│ ├── lidarr-install.sh
│ ├── linkwarden-install.sh
│ ├── lldap-install.sh
│ ├── mafl-install.sh
│ ├── magicmirror-install.sh
│ ├── mariadb-install.sh
│ ├── matterbridge-install.sh
│ ├── mediamtx-install.sh
│ ├── medusa-install.sh
│ ├── memos-install.sh
│ ├── meshcentral-install.sh
│ ├── metube-install.sh
│ ├── mongodb-install.sh
│ ├── motioneye-install.sh
│ ├── mqtt-install.sh
│ ├── myspeed-install.sh
│ ├── mysql-install.sh
│ ├── n8n-install.sh
│ ├── navidrome-install.sh
│ ├── neo4j-install.sh
│ ├── nextcloudpi-install.sh
│ ├── nginxproxymanager-install.sh
│ ├── nocodb-install.sh
│ ├── node-red-install.sh
│ ├── notifiarr-install.sh
│ ├── ntfy-install.sh
│ ├── nzbget-install.sh
│ ├── octoprint-install.sh
│ ├── ollama-install.sh
│ ├── omada-install.sh
│ ├── ombi-install.sh
│ ├── omv-install.sh
│ ├── openhab-install.sh
│ ├── openobserve-install.sh
│ ├── openwebui-install.sh
│ ├── overseerr-install.sh
│ ├── owncast-install.sh
│ ├── pairdrop-install.sh
│ ├── paperless-ngx-install.sh
│ ├── pbs-install.sh
│ ├── peanut-install.sh
│ ├── petio-install.sh
│ ├── photoprism-install.sh
│ ├── pialert-install.sh
│ ├── pihole-install.sh
│ ├── pingvin-install.sh
│ ├── plex-install.sh
│ ├── pocketbase-install.sh
│ ├── podman-homeassistant-install.sh
│ ├── podman-install.sh
│ ├── postgresql-install.sh
│ ├── prometheus-install.sh
│ ├── prowlarr-install.sh
│ ├── qbittorrent-install.sh
│ ├── rabbitmq-install.sh
│ ├── radarr-install.sh
│ ├── rdtclient-install.sh
│ ├── readarr-install.sh
│ ├── readeck-install.sh
│ ├── redis-install.sh
│ ├── rtsptoweb-install.sh
│ ├── runtipi-install.sh
│ ├── sabnzbd-install.sh
│ ├── scrypted-install.sh
│ ├── sftpgo-install.sh
│ ├── shinobi-install.sh
│ ├── smokeping-install.sh
│ ├── sonarr-install.sh
│ ├── spoolman-install.sh
│ ├── stirling-pdf-install.sh
│ ├── syncthing-install.sh
│ ├── tandoor-install.sh
│ ├── tasmoadmin-install.sh
│ ├── tautulli-install.sh
│ ├── tdarr-install.sh
│ ├── technitiumdns-install.sh
│ ├── threadfin-install.sh
│ ├── tianji-install.sh
│ ├── traccar-install.sh
│ ├── traefik-install.sh
│ ├── transmission-install.sh
│ ├── trilium-install.sh
│ ├── ubuntu-install.sh
│ ├── umami-install.sh
│ ├── umbrel-install.sh
│ ├── unifi-install.sh
│ ├── unmanic-install.sh
│ ├── uptimekuma-install.sh
│ ├── vaultwarden-install.sh
│ ├── wallos-install.sh
│ ├── wastebin-install.sh
│ ├── watchyourlan-install.sh
│ ├── whisparr-install.sh
│ ├── whoogle-install.sh
│ ├── wikijs-install.sh
│ ├── wireguard-install.sh
│ ├── yunohost-install.sh
│ ├── zabbix-install.sh
│ ├── zigbee2mqtt-install.sh
│ ├── zipline-install.sh
│ ├── zoraxy-install.sh
│ └── zwave-js-ui-install.sh
├── misc/
│ ├── add-netbird-lxc.sh
│ ├── add-tailscale-lxc.sh
│ ├── all-templates.sh
│ ├── alpine-install.func
│ ├── build.func
│ ├── clean-lxcs.sh
│ ├── clean.sh
│ ├── code-server.sh
│ ├── container-restore-from-backup.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
│ ├── core-restore-from-backup.sh
│ ├── cron-update-lxcs.sh
│ ├── crowdsec.sh
│ ├── daemonsync_2.2.0.0059_amd64.deb
│ ├── filebrowser.sh
│ ├── frigate-support.sh
│ ├── fstrim.sh
│ ├── glances.sh
│ ├── host-backup.sh
│ ├── hw-acceleration.sh
│ ├── install.func
│ ├── kernel-clean.sh
│ ├── kernel-pin.sh
│ ├── microcode.sh
│ ├── monitor-all.sh
│ ├── netdata.sh
│ ├── olivetin.sh
│ ├── pbs3-upgrade.sh
│ ├── post-pbs-install.sh
│ ├── post-pve-install.sh
│ ├── pve8-upgrade.sh
│ ├── pyenv.sh
│ ├── scaling-governor.sh
│ ├── update-lxcs-cron.sh
│ ├── update-lxcs.sh
│ ├── usb-passthrough.sh
│ └── webmin.sh
├── turnkey/
│ └── turnkey.sh
└── vm/
├── debian-vm.sh
├── haos-vm.sh
├── mikrotik-routeros.sh
├── nextcloud-vm.sh
├── openwrt.sh
├── owncloud-vm.sh
├── pimox-haos-vm.sh
├── ubuntu2204-vm.sh
└── ubuntu2404-vm.sh
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available
at [https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations
================================================
FILE: .github/CONTRIBUTING.md
================================================
<div align="center">
<a href="#">
<img src="https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/logo.png" height="100px" />
</a>
</div>
<h2 align="center">Contributing to Proxmox VE Helper Scripts</h2>
Everybody is invited and welcome to contribute to Proxmox VE Helper Scripts.
- Pull requests submitted against [**main**](https://github.com/tteck/Proxmox/tree/main) are meticulously scrutinized, so please do not take it personally if the project maintainer rejects your request. By adhering to the established patterns and conventions throughout the codebase, you greatly increase the likelihood that your changes will get merged into [**main**](https://github.com/tteck/Proxmox/tree/main).
- It is important to stress that complaining about a decision after it has been made is not productive behavior for the pull request submitter. It is crucial for all contributors to respect the decision-making process and collaborate effectively towards achieving the best possible outcome for the project.
- The repository will only accept Alpine applications that make use of the Alpine Package Keeper.
================================================
FILE: .github/FUNDING.yml
================================================
ko_fi: proxmoxhelperscripts
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yaml
================================================
name: Problems with a script.
description: Generate a report on an issue pertaining specifically to a script. For other inquires please share them in the Discussions section.
body:
- type: markdown
attributes:
value: |
**IMPORTANT:** Failure to comply with the following guidelines may result in immediate closure.
- Prior to submitting, kindly search the closed issues to check if the problem you are reporting has already been addressed and resolved. If you come across a closed issue that pertains to your problem, please leave a comment on that issue instead of creating a new one.
- If the default Linux distribution is not adhered to, script support will be discontinued.
- When encountering the error message `[ERROR] in line 23: exit code *: while executing command "$@" > /dev/null 2>&1`, make sure to run the script in verbose mode to accurately determine the underlying issue.
- For suggestions, questions or feature/script requests, please share them in the [Discussions section.](https://github.com/tteck/Proxmox/discussions)
- type: input
id: guidelines
attributes:
label: Please verify that you have read and understood the guidelines.
placeholder: 'yes'
validations:
required: true
- type: textarea
id: bug
attributes:
label: A clear and concise description of the issue.
validations:
required: true
- type: dropdown
id: settings
validations:
required: true
attributes:
label: What settings are you currently utilizing?
options:
-
- Default Settings
- Advanced Settings
- type: markdown
attributes:
value: (if Advanced Settings, please try Default Settings before creating an issue)
- type: dropdown
id: distribution
validations:
required: true
attributes:
label: Which Linux distribution are you employing?
options:
-
- Alpine
- Debian 11
- Debian 12
- Ubuntu 20.04
- Ubuntu 22.04
- Ubuntu 24.04
- type: textarea
id: screenshot
attributes:
label: If relevant, including screenshots or a code block can be helpful in clarifying the issue.
placeholder: Code blocks begin and conclude by enclosing the code with three backticks (```) above and below it.
validations:
required: false
- type: textarea
id: reproduce
attributes:
label: Please provide detailed steps to reproduce the issue.
placeholder: First do this, then this ...
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Helper-Scripts Community Support
url: https://github.com/tteck/Proxmox/discussions
about: Please ask and answer questions here.
================================================
FILE: .github/pull_request_template.md
================================================
> [!NOTE]
I am meticulous when it comes to merging code into the main branch, so please understand that I may reject pull requests that do not meet the project's standards. It's never personal. Also, game-related scripts have a lower chance of being merged.
## Description
Provide a summary of the changes made and/or reference the issue being addressed.
Fixes # (issue)
## Type of change
Please check the relevant option(s):
- [ ] Bug fix (non-breaking change that resolves an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (a fix or feature that would cause existing functionality to change unexpectedly)
- [ ] New script (a fully functional and thoroughly tested script or set of scripts.)
- [ ] Self-review performed (I have reviewed my code, ensuring it follows established patterns and conventions)
- [ ] Documentation update required (this change requires an update to the documentation)
================================================
FILE: CHANGELOG.md
================================================
<div align="center">
<a href="#">
<img src="https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/logo.png" height="100px" />
</a>
</div>
<h1 align="center">Changelog</h1>
<h3 align="center">All notable changes to this project will be documented in this file.</h3>
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
> [!NOTE]
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
## 2024-10-27
### Changed
- **Open WebUI LXC** [(Commit)](https://github.com/tteck/Proxmox/commit/8a21f6e7f025a911865395d4c0fa9a001bd0d512)
- Refactor Script to add an option to install Ollama.
## 2024-10-26
### Changed
- **AdventureLog LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/adventurelog-install.sh)
- NEW Script
## 2024-10-25
### Changed
- **Zoraxy LXC** [(Commit)](https://github.com/tteck/Proxmox/commit/468a5d367ded4cf453a1507452e112ac3e234e2a)
- Switch built from source to a pre-compiled binary version.
- Breaking Change
## 2024-10-23
### Changed
- **Wallos LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/wallos-install.sh)
- NEW Script
- **Open WebUI LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/openwebui-install.sh)
- NEW Script
## 2024-10-19
### Changed
- **Cockpit LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/cockpit-install.sh)
- NEW Script
- **Neo4j LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/neo4j-install.sh)
- NEW Script
## 2024-10-18
### Changed
- **ArchiveBox LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/archivebox-install.sh)
- NEW Script
## 2024-10-15
### Changed
- **evcc LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/evcc-install.sh)
- NEW Script
## 2024-10-10
### Changed
- **MySQL LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/mysql-install.sh)
- NEW Script
- **Tianji LXC** [(Commit)](https://github.com/tteck/Proxmox/commit/4c83a790ac9b040da1f11ad2cbe13d3fc5f480e9)
- Breaking Change
- Switch from `pm2` process management to `systemd`
## 2024-10-03
### Changed
- **Home Assistant Core LXC** [(Commit)](https://github.com/tteck/Proxmox/commit/f2937febe69b2bad8b3a14eb84aa562a8f14cc6a) [(Commit)](https://github.com/tteck/Proxmox/commit/f2966ced7f457fd506f865f7f5b70ea12c4b0049)
- Refactor Code
- Breaking Change
- Home Assistant has transitioned to using `uv` for managing the virtual environment and installing additional modules.
## 2024-09-16
### Changed
- **HomeBox LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/homebox-install.sh)
- NEW Script
- **Zipline LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/zipline-install.sh)
- NEW Script
## 2024-09-13
### Changed
- **Tianji LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/tianji-install.sh)
- NEW Script
## 2024-08-21
### Changed
- **WireGuard LXC** [(Commit)](https://github.com/tteck/Proxmox/commit/723365a79df7cc0fd29b1af8f7ef200a7e0921b1)
- Refactor Code
- Breaking Change
## 2024-08-19
### Changed
- **CommaFeed LXC** [(Commit)](https://github.com/tteck/Proxmox/commit/0a33d1739ec3a49011411929bd46a260e92e99f9)
- Refactor Code
- Breaking Change
## 2024-08-06
### Changed
- **lldap LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/lldap-install.sh)
- NEW Script
## 2024-07-26
### Changed
- **Gitea LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/gitea-install.sh)
- NEW Script
## 2024-06-30
### Changed
- **All Scripts** [(Commit)](https://github.com/tteck/Proxmox/commit/39ea1d4a20b83c07d084ebafdc811eec3548f289)
- Requires Proxmox Virtual Environment version 8.1 or later.
## 2024-06-27
### Changed
- **Kubo LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/kubo-install.sh)
- NEW Script
- **RabbitMQ LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/rabbitmq-install.sh)
- NEW Script
- **Scrutiny LXC**
- Removed from website, broken.
## 2024-06-26
### Changed
- **Scrutiny LXC**
- NEW Script
## 2024-06-14
### Changed
- **MySpeed LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/myspeed-install.sh)
- NEW Script
## 2024-06-13
### Changed
- **PeaNUT LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/peanut-install.sh)
- NEW Script
- **Website**
- If the Changelog has changed recently, the link on the website will pulse.
- **Spoolman LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/spoolman-install.sh)
- NEW Script
## 2024-06-12
### Changed
- **MeTube LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/metube-install.sh)
- NEW Script
- **Matterbridge LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/matterbridge-install.sh)
- NEW Script
- **Website**
- Reopen the gh-pages site (https://tteck.github.io/Proxmox/)
## 2024-06-11
### Changed
- **Zabbix LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/zabbix-install.sh)
- NEW Script
## 2024-06-06
### Changed
- **Petio LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/petio-install.sh)
- NEW Script
- **Website**
- Important notices will now be displayed on the landing page.
## 2024-06-04
### Changed
- **FlareSolverr LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/flaresolverr-install.sh)
- NEW Script
## 2024-05-31
### Changed
- **Advanced Settings** [(Commit)](https://github.com/tteck/Proxmox/commit/fc9dff220b4ea426d3a75178ad8accacae4683ca)
- Passwords are now masked
## 2024-05-30
### Changed
- **Forgejo LXC**
- NEW Script
## 2024-05-28
### Changed
- **Notifiarr LXC**
- NEW Script
## 2024-05-25
### Changed
- **Threadfin LXC**
- NEW Script
## 2024-05-23
### Changed
- **BunkerWeb LXC**
- NEW Script
## 2024-05-20
### Changed
- **Traefik LXC**
- NEW Script
## 2024-05-19
### Changed
- **NetBird**
- NEW Script
- **Tailscale**
- Refactor Code
## 2024-05-18
### Changed
- **MongoDB LXC**
- NEW Script
## 2024-05-17
### Changed
- **New Website**
- We have officially moved to [Helper-Scripts.com](https://helper-scripts.com)
## 2024-05-16
### Changed
- **iVentoy LXC**
- NEW Script
## 2024-05-13
### Changed
- **Headscale LXC**
- NEW Script
## 2024-05-11
### Changed
- **Caddy LXC**
- NEW Script
## 2024-05-09
### Changed
- **Umami LXC**
- NEW Script
## 2024-05-08
### Changed
- **Kernel Pin**
- NEW Script
- **Home Assistant Core LXC**
- Ubuntu 24.04 ONLY
## 2024-05-07
### Changed
- **Pocketbase LXC**
- NEW Script
## 2024-05-05
### Changed
- **Fenrus LXC**
- NEW Script
## 2024-05-02
### Changed
- **OpenMediaVault LXC**
- Set Debian 12 as default
- OpenMediaVault 7 (sandworm)
## 2024-04-30
### Changed
- **Tdarr LXC**
- Default settings are now **Unprivileged**
- Unprivileged Hardware Acceleration
## 2024-04-29
### Changed
- **ErsatzTV LXC**
- NEW Script
## 2024-04-28
### Changed
- **Scrypted LXC**
- Unprivileged Hardware Acceleration
- **Emby LXC**
- Unprivileged Hardware Acceleration
## 2024-04-27
### Changed
- **Frigate LXC**
- Unprivileged Hardware Acceleration https://github.com/tteck/Proxmox/discussions/2711#discussioncomment-9244629
- **Ubuntu 24.04 VM**
- NEW Script
## 2024-04-26
### Changed
- **Glances**
- NEW Script
## 2024-04-25
### Changed
- **Jellyfin LXC**
- Default settings are now **Unprivileged**
- Unprivileged Hardware Acceleration
- Groups are set automatically
- Checks for the existence of `/dev/dri/card0` if not found, use `/dev/dri/card1`. Set the GID to `44`
- Set the GID for `/dev/dri/renderD128` to `104`
- Not tested <8.1.11
- **Plex LXC**
- Default settings are now **Unprivileged**
- Unprivileged Hardware Acceleration
- Groups are set automatically
- Checks for the existence of `/dev/dri/card0` if not found, use `/dev/dri/card1`. Set the GID to `44`
- Set the GID for `/dev/dri/renderD128` to `104`
- Not tested <8.1.11
## 2024-04-24
### Changed
- **Traccar LXC**
- NEW Script
- **Calibre-Web LXC**
- NEW Script
## 2024-04-21
### Changed
- **Aria2 LXC**
- NEW Script
## 2024-04-15
### Changed
- **Homarr LXC**
- Add back to website
- **Umbrel LXC**
- Add back to website
- **OpenMediaVault LXC**
- Add back to website
## 2024-04-12
### Changed
- **OpenMediaVault LXC**
- Removed from website
## 2024-04-09
### Changed
- **PairDrop LXC**
- Add back to website
## 2024-04-05
### Changed
- **Medusa LXC**
- NEW Script
- **WatchYourLAN LXC**
- NEW Script
## 2024-04-04
### Changed
- **Actual Budget LXC**
- NEW Script
## 2024-04-03
### Changed
- **LazyLibrarian LXC**
- NEW Script
## 2024-04-01
### Changed
- **Frigate LXC**
- NEW Script
## 2024-03-26
### Changed
- **MediaMTX LXC**
- NEW Script
## 2024-03-25
### Changed
- **Proxmox VE Post Install**
- ~Requires Proxmox Virtual Environment Version 8.1.1 or later.~
- Requires Proxmox Virtual Environment Version 8.0 or later.
- **Proxmox Backup Server LXC**
- NEW Script
## 2024-03-24
### Changed
- **SmokePing LXC**
- NEW Script
## 2024-03-13
### Changed
- **FlowiseAI LXC**
- NEW Script
## 2024-03-11
### Changed
- **Wastebin LXC**
- NEW Script
## 2024-03-08
### Changed
- **Proxmox VE Post Install**
- Requires Proxmox Virtual Environment Version 8.1.1 or later.
## 2024-02-26
### Changed
- **Mafl LXC**
- NEW Script
## 2024-02-23
### Changed
- **Tandoor Recipes LXC**
- NEW Script (Thanks @MickLesk)
## 2024-02-21
### Changed
- **All scripts**
- As of today, the scripts require the Bash shell specifically. ([more info](https://github.com/tteck/Proxmox/discussions/2536))
## 2024-02-19
### Changed
- **PairDrop LXC**
- Removed from the website ([more info](https://github.com/tteck/Proxmox/discussions/2516))
## 2024-02-16
### Changed
- **Proxmox VE LXC Filesystem Trim**
- NEW Script ([more info](https://github.com/tteck/Proxmox/discussions/2505#discussion-6226037))
## 2024-02-11
### Changed
- **HiveMQ CE LXC**
- NEW Script
- **Apache-CouchDB LXC**
- NEW Script
## 2024-02-06
### Changed
- **All Scripts**
- The scripts will only work with PVE7 Version 7.4-13 or later, or PVE8 Version 8.1.1 or later.
## 2024-02-05
### Changed
- **Gokapi LXC**
- NEW Script
- **Nginx Proxy Manager LXC**
- Option to install v2.10.4
## 2024-02-04
### Changed
- **Pi-hole LXC**
- Option to add Unbound
## 2024-02-02
### Changed
- **Readeck LXC**
- NEW Script
## 2024-01-25
### Changed
- **PairDrop LXC**
- NEW Script
## 2024-01-20
### Changed
- **Apache-Cassandra LXC**
- NEW Script
- **Redis LXC**
- NEW Script
## 2024-01-17
### Changed
- **ntfy LXC**
- NEW Script
- **HyperHDR LXC**
- NEW Script
## 2024-01-16
### Changed
- **Website Improvements**
- Refine and correct pointers.
- Change hover colors to intuitively indicate categories/items.
- Implement opening links in new tabs for better navigation.
- Enhance the Copy button to better indicate that the command has been successfully copied.
- Introduce a Clear Search button.
- While not directly related to the website, it's worth mentioning that the logo in newly created LXC notes now serves as a link to the website, conveniently opening in a new tab.
## 2024-01-12
### Changed
- **Apt-Cacher-NG LXC**
- NEW Script
- **New Feature**
- The option to utilize Apt-Cacher-NG (Advanced settings) when creating LXCs. The added functionality is expected to decrease bandwidth usage and expedite package installation and updates. https://github.com/tteck/Proxmox/discussions/2332
## 2024-01-09
### Changed
- **Verbose mode**
- Only entries with `$STD` will be shown
## 2024-01-07
### Changed
- **Stirling-PDF LXC**
- NEW Script
- **SFTPGo LXC**
- NEW Script
## 2024-01-04
### Changed
- **CommaFeed LXC**
- NEW Script
## 2024-01-03
### Changed
- **Sonarr LXC**
- Breaking Change
- Complete recode
- https://github.com/tteck/Proxmox/discussions/1738#discussioncomment-8005107
## 2024-01-01
### Changed
- **Gotify LXC**
- NEW Script
## 2023-12-19
### Changed
- **Proxmox VE Netdata**
- NEW Script
## 2023-12-10
### Changed
- **Homarr LXC**
- Removed, again.
## 2023-12-02
### Changed
- **Runtipi LXC**
- NEW Script
## 2023-12-01
### Changed
- **Mikrotik RouterOS VM**
- Now Mikrotik RouterOS CHR VM
- code refactoring
- update to CHR
- thanks to @NiccyB
- **Channels DVR Server LXC**
- NEW Script
## 2023-11-19
### Changed
- **Dockge LXC**
- NEW Script
## 2023-11-18
### Changed
- **Ubuntu 22.04 VM**
- NEW Script
## 2023-11-14
### Changed
- **TurnKey Nextcloud VM**
- NEW Script
- **TurnKey ownCloud VM**
- NEW Script
## 2023-11-11
### Changed
- **Homarr LXC**
- Returns with v0.14.0 (The authentication update).
## 2023-11-9
### Changed
- **AgentDVR LXC**
- NEW Script
## 2023-11-8
### Changed
- **Linkwarden LXC**
- NEW Script
## 2023-11-2
### Changed
- **PhotoPrism LXC**
- Transitioned to PhotoPrism's latest installation package, featuring Linux binaries.
## 2023-11-1
### Changed
- **Owncast LXC**
- NEW Script
## 2023-10-31
### Changed
- **Debian 12 VM**
- NEW Script
## 2023-10-29
### Changed
- **Unmanic LXC**
- NEW Script
## 2023-10-27
### Changed
- **Webmin**
- A full code overhaul.
## 2023-10-15
### Changed
- **TasmoAdmin LXC**
- NEW Script
## 2023-10-14
### Changed
- **Sonarr LXC**
- Include an option to install v4 (experimental)
## 2023-10-11
### Changed
- **Proxmox VE CPU Scaling Governor**
- A full code overhaul.
- Include an option to configure a crontab for ensuring that the CPU Scaling Governor configuration persists across reboots.
## 2023-10-08
### Changed
- **Proxmox VE LXC Updater**
- Now displays which containers require a reboot.
- **File Browser**
- Uninstall by re-executing the script
- Option to use No Authentication
## 2023-10-05
### Changed
- **Pingvin Share LXC**
- NEW Script
## 2023-09-30
### Changed
- **All Templates**
- NEW Script
## 2023-09-28
### Changed
- **Alpine Nextcloud Hub LXC**
- NEW Script (Thanks to @nicedevil007)
## 2023-09-14
### Changed
- **Proxmox VE Processor Microcode**
- Allow users to select available microcode packages.
## 2023-09-13
### Changed
- **Pi.Alert LXC**
- NEW Script
- **Proxmox VE Kernel Clean**
- Code overhaul with a fresh start. This script offers the flexibility to select specific kernels for removal, unlike the previous version, which was an all-or-nothing approach.
## 2023-09-11
### Changed
- **Paperless-ngx LXC**
- Modify the script to incorporate Redis and PostgreSQL, while also introducing an option to include Adminer during installation.
## 2023-09-10
### Changed
- **TurnKey Game Server LXC**
- NEW Script
## 2023-09-09
### Changed
- **Proxmox VE Host Backup**
- Users are now able to specify both the backup path and the directory in which they wish to work.
## 2023-09-07
### Changed
- **Proxmox VE Host Backup**
- NEW Script
## 2023-09-06
### Changed
- **Proxmox VE LXC Cleaner**
- Added a new menu that allows you to choose which containers you want to exclude from the clean process.
- **Tailscale**
- Added a menu that enables you to choose the specific container where you want to install Tailscale.
## 2023-09-05
### Changed
- **Proxmox VE LXC Updater**
- Added a new menu that allows you to choose which containers you want to exclude from the update process.
## 2023-09-01
### Changed
- **TurnKey Media Server LXC**
- NEW Script
## 2023-08-31
### Changed
- **TurnKey ZoneMinder LXC**
- NEW Script
- **TurnKey OpenVPN LXC**
- NEW Script
## 2023-08-30
### Changed
- **TurnKey**
- Introducing a **NEW** Category on the Site.
- My intention is to maintain the TurnKey scripts in their simplest form, contained within a single file, and with minimal options, if any.
- **TurnKey Core LXC**
- NEW Script
- **TurnKey File Server LXC**
- NEW Script
- **TurnKey Gitea LXC**
- NEW Script
- **TurnKey GitLab LXC**
- NEW Script
- **TurnKey Nextcloud LXC**
- NEW Script
- **TurnKey Observium LXC**
- NEW Script
- **TurnKey ownCloud LXC**
- NEW Script
- **TurnKey Torrent Server LXC**
- NEW Script
- **TurnKey Wordpress LXC**
- NEW Script
## 2023-08-24
### Changed
- **qBittorrent LXC**
- Added back to repository with UPnP disabled and password changed.
## 2023-08-24
### Changed
- **qBittorrent LXC**
- Removed from this repository for potential malicious hidden code https://github.com/tteck/Proxmox/discussions/1725
## 2023-08-16
### Changed
- **Homarr LXC**
- NEW Script
## 2023-08-10
### Changed
- **Proxmox VE Processor Microcode**
- AMD microcode-20230808 Release
## 2023-08-09
### Changed
- **Omada Controller LXC**
- Update via script
- **Proxmox VE Processor Microcode**
- [Intel microcode-20230808 Release](https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/releases/tag/microcode-20230808)
## 2023-08-01
### Changed
- **Overseerr LXC**
- NEW Script
- **Jellyseerr LXC**
- NEW Script
## 2023-07-24
### Changed
- **Ombi LXC**
- NEW Script
## 2023-07-23
### Changed
- **Zoraxy LXC**
- NEW Script
## 2023-07-18
### Changed
- **Proxmox VE Cron LXC Updater**
- NEW Script
## 2023-07-11
### Changed
- **Scrypted LXC**
- Add VAAPI hardware transcoding
## 2023-07-07
### Changed
- **Real-Debrid Torrent Client LXC**
- NEW Script
## 2023-07-05
### Changed
- There have been more than 110 commits since June 18th, although not all of them are significant, with a majority focused on ensuring compatibility with Proxmox VE 8 and Debian 12.
## 2023-06-18
### Changed
- **OpenObserve LXC**
- NEW Script
## 2023-06-17
### Changed
- **UniFi Network Application LXC**
- Now distribution agnostic.
- **Omada Controller LXC**
- Now distribution agnostic.
## 2023-06-16
### Changed
- **Proxmox VE Monitor-All**
- Skip instances based on onboot and templates. [8c2a3cc](https://github.com/tteck/Proxmox/commit/8c2a3cc4d774fa13d17f695d6bdf9a4deedb1372).
## 2023-06-12
### Changed
- **Proxmox VE Edge Kernel**
- Removed, with the Proxmox opt-in kernels and the upcoming Proxmox Virtual Environment 8, edge kernels are no longer needed.
- **Proxmox VE Kernel Clean**
- Now compatible with PVE8.
## 2023-06-11
### Changed
- **Proxmox VE Post Install**
- Now compatible with both Proxmox Virtual Environment 7 (PVE7) and Proxmox Virtual Environment 8 (PVE8).
## 2023-06-02
### Changed
- **Proxmox VE 7 Post Install**
- In a non-clustered environment, you can choose to disable high availability, which helps save system resources.
## 2023-05-27
### Changed
- **Proxmox VE 7 Post Install**
- If an Intel N-series processor is detected, ~the script provides options to install both the Proxmox 6.2 kernel and the Intel microcode.~ and using PVE7, recommend using PVE8
## 2023-05-23
### Changed
- **OpenWrt VM**
- NEW Script
## 2023-05-17
### Changed
- **Alpine-AdGuard Home LXC**
- Removed, it wasn't installed through the Alpine package manager.
- **Alpine-Whoogle LXC**
- Removed, it wasn't installed through the Alpine package manager.
## 2023-05-16
### Changed
- **Proxmox VE LXC Updater**
- Add information about the boot disk, which provides an easy way to determine if you need to expand the disk.
- **Proxmox VE Processor Microcode**
- [Intel microcode-20230512 Release](https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/releases/tag/microcode-20230512)
## 2023-05-13
### Changed
- **Tautulli LXC**
- NEW Script
## 2023-05-12
### Changed
- **Bazarr LXC**
- NEW Script
## 2023-05-08
### Changed
- **Proxmox VE Intel Processor Microcode**
- Renamed to **Proxmox VE Processor Microcode**
- Automatically identifies the processor vendor (Intel/AMD) and installs the appropriate microcode.
## 2023-05-07
### Changed
- **FHEM LXC**
- NEW Script
## 2023-05-01
### Changed
- **OctoPrint LXC**
- NEW Script
- **Proxmox VE Intel Processor Microcode**
- NEW Script
## 2023-04-30
### Changed
- **Proxmox VE Monitor-All**
- NEW Script
- Replaces Proxmox VE LXC Monitor
## 2023-04-28
### Changed
- **Proxmox VE LXC Monitor**
- NEW Script
## 2023-04-26
### Changed
- **The site can now be accessed through a more memorable URL, which is [helper-scripts.com](http://helper-scripts.com).**
## 2023-04-23
### Changed
- **Non-Alpine LXC's**
- Advanced settings provide the option for users to switch between Debian and Ubuntu distributions. However, some applications or services, such as Deconz, grocy or Omada, may not be compatible with the selected distribution due to dependencies.
## 2023-04-16
### Changed
- **Home Assistant Core LXC**
- Python 3.11.2
## 2023-04-15
### Changed
- **InfluxDB LXC**
- Choosing InfluxDB v1 will result in Chronograf being installed automatically.
- **[User Submitted Guides](https://github.com/tteck/Proxmox/blob/main/USER_SUBMITTED_GUIDES.md)**
- Informative guides that demonstrate how to install various software packages using Proxmox VE Helper Scripts.
## 2023-04-14
### Changed
- **Cloudflared LXC**
- NEW Script
## 2023-04-05
### Changed
- **Jellyfin LXC**
- Set Ubuntu 22.04 as default
- Use the Deb822 format jellyfin.sources configuration (jellyfin.list configuration has been obsoleted)
## 2023-04-02
### Changed
- **Home Assistant OS VM**
- Include a choice within the "Advanced" settings to configure the CPU model between kvm64 (default) or host.
## 2023-03-31
### Changed
- **Home Assistant OS VM**
- Include a choice within the "Advanced" settings to configure the disk cache between none (default) or Write Through.
## 2023-03-27
### Changed
- **Removed Alpine-ESPHome LXC**
- Nonoperational
- **All Scripts**
- Incorporate code that examines whether SSH is being used and, if yes, offers a suggestion against it without restricting or blocking its usage.
## 2023-03-25
### Changed
- **Alpine-ESPHome LXC**
- NEW Script
- **Alpine-Whoogle LXC**
- NEW Script
## 2023-03-22
### Changed
- **The latest iteration of the scripts**
- Going forward, versioning will no longer be utilized in order to avoid breaking web-links in blogs and YouTube videos.
- The scripts have been made more legible as the repetitive code has been moved to function files, making it simpler to share among the scripts and hopefully easier to maintain. This also makes it simpler to contribute to the project.
- When a container is created with privileged mode enabled, the USB passthrough feature is automatically activated.
## 2023-03-18
### Changed
- **Alpine-AdGuard Home LXC** (Thanks @nicedevil007)
- NEW Script
- **Alpine-Docker LXC**
- NEW Script
- **Alpine-Zigbee2MQTT LXC**
- NEW Script
## 2023-03-15
### Changed
- **Alpine-Grafana LXC** (Thanks @nicedevil007)
- NEW Script
## 2023-03-10
### Changed
- **Proxmox LXC Updater**
- You can use the command line to exclude multiple containers simultaneously.
## 2023-03-08
### Changed
- **Proxmox CPU Scaling Governor**
- Menu options dynamically based on the available scaling governors.
## 2023-03-07
### Changed
- **Alpine-Vaultwarden LXC**
- NEW Script
- **All LXC Scripts**
- Retrieve the time zone from Proxmox and configure the container to use the same time zone
## 2023-02-24
### Changed
- **qBittorrent LXC** (Thanks @romka777)
- NEW Script
- **Jackett LXC** (Thanks @romka777)
- NEW Script
## 2023-02-23
### Changed
- **Proxmox LXC Updater**
- Skip all templates, allowing for the starting, updating, and shutting down of containers to be resumed automatically.
- Exclude an additional container by adding the CTID at the end of the shell command ( -s 103).
## 2023-02-16
### Changed
- **RSTPtoWEB LXC**
- NEW Script
- **go2rtc LXC**
- NEW Script
## 2023-02-12
### Changed
- **OliveTin**
- NEW Script
## 2023-02-10
### Changed
- **Home Assistant OS VM**
- Code Refactoring
## 2023-02-05
### Changed
- **Devuan LXC**
- NEW Script
## 2023-02-02
### Changed
- **Audiobookshelf LXC**
- NEW Script
- **Rocky Linux LXC**
- NEW Script
## 2023-01-28
### Changed
- **LXC Cleaner**
- Code refactoring to give the user the option to choose whether cache or logs will be deleted for each app/service.
- Leaves directory structure intact
## 2023-01-27
### Changed
- **LXC Cleaner**
- NEW Script
## 2023-01-26
### Changed
- **ALL LXC's**
- Add an option to disable IPv6 (Advanced)
## 2023-01-25
### Changed
- **Home Assistant OS VM**
- switch to v5
- add an option to set MTU size (Advanced)
- add arch check (no ARM64) (issue from community.home-assistant.io)
- add check to insure VMID isn't already used before VM creation (Advanced) (issue from forum.proxmox.com)
- code refactoring
- **PiMox Home Assistant OS VM**
- switch to v5
- add an option to set MTU size (Advanced)
- add arch check (no AMD64)
- add pve check (=>7.2)
- add check to insure VMID isn't already used before VM creation (Advanced)
- code refactoring
- **All LXC's**
- add arch check (no ARM64) (issue from forum.proxmox.com)
## 2023-01-24
### Changed
- **Transmission LXC**
- NEW Script
## 2023-01-23
### Changed
- **ALL LXC's**
- Add [Midnight Commander (mc)](https://www.linuxcommand.org/lc3_adv_mc.php)
## 2023-01-22
### Changed
- **Autobrr LXC**
- NEW Script
## 2023-01-21
### Changed
- **Kavita LXC**
- NEW Script
## 2023-01-19
### Changed
- **SABnzbd LXC**
- NEW Script
## 2023-01-17
### Changed
- **Homer LXC**
- NEW Script
## 2023-01-14
### Changed
- **Tdarr LXC**
- NEW Script
- **Deluge LXC**
- NEW Script
## 2023-01-13
### Changed
- **Lidarr LXC**
- NEW Script
- **Prowlarr LXC**
- NEW Script
- **Radarr LXC**
- NEW Script
- **Readarr LXC**
- NEW Script
- **Sonarr LXC**
- NEW Script
- **Whisparr LXC**
- NEW Script
## 2023-01-12
### Changed
- **ALL LXC's**
- Add an option to set MTU size (Advanced)
## 2023-01-11
### Changed
- **Home Assistant Core LXC**
- Auto Initialize
- **Cronicle Primary/Worker LXC**
- NEW Script
## 2023-01-09
### Changed
- **ALL LXC's**
- v5
- **k0s Kubernetes LXC**
- NEW Script
- **Podman LXC**
- NEW Script
## 2023-01-04
### Changed
- **YunoHost LXC**
- NEW Script
## 2022-12-31
### Changed
- **v5 Scripts** (Testing before moving forward https://github.com/tteck/Proxmox/discussions/881)
- Adguard Home LXC
- Docker LXC
- Home Assistant Core LXC
- PhotoPrism LXC
- Shinobi NVR LXC
- Vaultwarden LXC
## 2022-12-27
### Changed
- **Home Assistant Container LXC**
- Add an option to use Fuse Overlayfs (ZFS) (Advanced)
- **Docker LXC**
- Add an option to use Fuse Overlayfs (ZFS) (Advanced)
- If the LXC is created Privileged, the script will automatically set up USB passthrough.
## 2022-12-22
### Changed
- **All LXC's**
- Add an option to run the script in Verbose Mode (Advanced)
## 2022-12-20
### Changed
- **Hyperion LXC**
- NEW Script
## 2022-12-17
### Changed
- **Home Assistant Core LXC**
- Linux D-Bus Message Broker
- Mariadb & PostgreSQL Ready
- Bluetooth Ready
- Fix for Inconsistent Dependency Versions (dbus-fast & bleak)
## 2022-12-16
### Changed
- **Home Assistant Core LXC**
- Python 3.10.8
## 2022-12-09
### Changed
- **Change Detection LXC**
- NEW Script
## 2022-12-03
### Changed
- **All LXC's**
- Add options to set DNS Server IP Address and DNS Search Domain (Advanced)
## 2022-11-27
### Changed
- **Shinobi LXC**
- NEW Script
## 2022-11-24
### Changed
- **Home Assistant OS VM**
- Add option to set machine type during VM creation (Advanced)
## 2022-11-23
### Changed
- **All LXC's**
- Add option to enable root ssh access during LXC creation (Advanced)
## 2022-11-21
### Changed
- **Proxmox LXC Updater**
- Now updates Ubuntu, Debian, Devuan, Alpine Linux, CentOS-Rocky-Alma, Fedora, ArchLinux [(@Uruknara)](https://github.com/tteck/Proxmox/commits?author=Uruknara)
## 2022-11-13
### Changed
- **All LXC's**
- Add option to continue upon Internet NOT Connected
## 2022-11-11
### Changed
- **HA Bluetooth Integration Preparation**
- [NEW Script](https://github.com/tteck/Proxmox/discussions/719)
## 2022-11-04
### Changed
- **Scrypted LXC**
- NEW Script
## 2022-11-01
### Changed
- **Alpine LXC**
- NEW Script
- **Arch LXC**
- NEW Script
## 2022-10-27
### Changed
- **Container & Core Restore from Backup**
- [NEW Scripts](https://github.com/tteck/Proxmox/discussions/674)
## 2022-10-07
### Changed
- **Home Assistant OS VM**
- Add "Latest" Image
## 2022-10-05
### Changed
- **Umbrel LXC**
- NEW Script (Docker)
- **Blocky LXC**
- NEW Script (Adblocker - DNS)
## 2022-09-29
### Changed
- **Home Assistant Container LXC**
- If the LXC is created Privileged, the script will automatically set up USB passthrough.
- **Home Assistant Core LXC**
- NEW Script
- **PiMox HAOS VM**
- NEW Script
## 2022-09-23
### Changed
- **EMQX LXC**
- NEW Script
## 2022-09-22
### Changed
- **NextCloudPi LXC**
- NEW Script
## 2022-09-21
### Changed
- **Proxmox Backup Server Post Install**
- NEW Script
- **Z-wave JS UI LXC**
- NEW Script (and all sub scripts 🤞)
- **Zwave2MQTT LXC**
- Bye Bye Script
## 2022-09-20
### Changed
- **OpenMediaVault LXC**
- NEW Script
## 2022-09-16
### Changed
- **Paperless-ngx LXC**
- NEW Script (Thanks @Donkeykong307)
## 2022-09-11
### Changed
- **Trilium LXC**
- NEW Script
## 2022-09-10
### Changed
- **Syncthing LXC**
- NEW Script
## 2022-09-09
### Changed
- **CasaOS LXC**
- NEW Script
- **Proxmox Kernel Clean**
- Now works with Proxmox Backup Server
## 2022-09-08
### Changed
- **Navidrome LXC**
- NEW Script
- **Homepage LXC**
- NEW Script
## 2022-08-31
### Changed
- **All LXC's**
- Add Internet & DNS Check
## 2022-08-22
### Changed
- **Wiki.js LXC**
- NEW Script
- **Emby Media Server LXC**
- NEW Script
## 2022-08-20
### Changed
- **Mikrotik RouterOS VM**
- NEW Script
## 2022-08-19
### Changed
- **PhotoPrism LXC**
- Fixed .env bug (Thanks @cklam2)
## 2022-08-13
### Changed
- **Home Assistant OS VM**
- Option to create VM using Stable, Beta or Dev Image
## 2022-08-11
### Changed
- **Home Assistant OS VM**
- Validate Storage
## 2022-08-04
### Changed
- **VS Code Server**
- NEW Script
## 2022-08-02
### Changed
- **All LXC/VM**
- v4 Script - Whiptail menu's
## 2022-07-26
### Changed
- **Home Assistant OS VM**
- Set the real time clock (RTC) to local time.
- Disable the USB tablet device (save resources / not needed).
## 2022-07-24
### Changed
- **Home Assistant OS VM**
- Present the drive to the guest as a solid-state drive rather than a rotational hard disk. There is no requirement that the underlying storage actually be backed by SSD's.
- When the VM’s filesystem marks blocks as unused after deleting files, the SCSI controller will relay this information to the storage, which will then shrink the disk image accordingly.
- 👉 [more info](https://github.com/tteck/Proxmox/discussions/378)
## 2022-07-22
### Changed
- **n8n LXC** (thanks to @cyakimov)
- NEW Script
## 2022-07-21
### Changed
- **grocy LXC**
- NEW Script
## 2022-07-17
### Changed
- **Vaultwarden LXC**
- NEW Vaultwarden Update (post 2022-05-29 installs only) Script
- NEW Web-vault Update (any) Script
## 2022-07-14
### Changed
- **MagicMirror Server LXC**
- NEW Script
## 2022-07-13
### Changed
- **Proxmox Edge Kernel Tool**
- NEW Script
## 2022-07-11
### Changed
- **Home Assistant OS VM**
- Supports lvmthin, zfspool, nfs, dir and btrfs storage types.
## 2022-07-08
### Changed
- **openHAB LXC**
- NEW Script
## 2022-07-03
### Changed
- **Tailscale**
- NEW Script
## 2022-07-01
### Changed
- **Home Assistant OS VM**
- Allow different storage types (lvmthin, nfs, dir).
## 2022-06-30
### Changed
- **Prometheus LXC**
- NEW Script
## 2022-06-06
### Changed
- **Whoogle LXC**
- NEW Script
## 2022-05-29
### Changed
- **Vaultwarden LXC**
- Code refactoring
- **CrowdSec**
- NEW Script
## 2022-05-21
### Changed
- **Home Assistant OS VM**
- Code refactoring
## 2022-05-19
### Changed
- **Keycloak LXC**
- NEW Script
## 2022-05-18
### Changed
- **File Browser**
- NEW Script
## 2022-05-13
### Changed
- **PostgreSQL LXC**
- NEW Script
## 2022-05-10
### Changed
- **deCONZ LXC**
- NEW Script
## 2022-05-07
### Changed
- **NocoDB LXC**
- ADD update script
## 2022-05-06
### Changed
- **PhotoPrism LXC**
- ADD GO Dependencies for full functionality
## 2022-05-05
### Changed
- **Ubuntu LXC**
- ADD option to define version (18.04 20.04 21.10 22.04)
## 2022-04-28
### Changed
- **v3 Script**
- Remove Internet Check
## 2022-04-27
### Changed
- **Home Assistant OS VM**
- ADD Option to set Bridge, VLAN and MAC Address
- **v3 Script**
- Improve Internet Check (prevent ‼ ERROR 4@57)
## 2022-04-26
### Changed
- **Home Assistant OS VM**
- Fixed bad path
- ADD Option to create VM using Latest or Stable image
- **UniFi Network Application LXC**
- ADD Local Controller Option
## 2022-04-25
### Changed
- **v3 Script**
- Improve Error Handling
## 2022-04-23
### Changed
- **v3 Script**
- ADD Internet Connection Check
- **Proxmox VE 7 Post Install**
- NEW v3 Script
- **Proxmox Kernel Clean**
- NEW v3 Script
## 2022-04-22
### Changed
- **Omada Controller LXC**
- Update script to install version 5.1.7
- **Uptime Kuma LXC**
- ADD Update script
## 2022-04-20
### Changed
- **Ubuntu LXC**
- ADD option to install version 20.04 or 21.10
- **v3 Script**
- ADD option to set Bridge
## 2022-04-19
### Changed
- **ALL LXC's**
- New [V3 Install Script](https://github.com/tteck/Proxmox/issues/162)
- **ioBroker LXC**
- New Script V3
## 2022-04-13
### Changed
- **Uptime Kuma LXC**
- New Script V2
## 2022-04-11
### Changed
- **Proxmox LXC Updater**
- ADD option to skip stopped containers
- **Proxmox VE 7 Post Install**
- ADD PVE 7 check
## 2022-04-10
### Changed
- **Debian 11 LXC**
- ADD An early look at the v3 install script
## 2022-04-09
### Changed
- **NocoDB LXC**
- New Script V2
## 2022-04-05
### Changed
- **MeshCentral LXC**
- New Script V2
## 2022-04-01
### Changed
- **Scripts** (V2)
- FIX Pressing enter without making a selection first would cause an Error
## 2022-03-28
### Changed
- **Docker LXC**
- Add Docker Compose Option (@wovalle)
## 2022-03-27
### Changed
- **Heimdall Dashboard LXC**
- New Update Script
## 2022-03-26
### Changed
- **UniFi Network Application LXC**
- New Script V2
- **Omada Controller LXC**
- New Script V2
## 2022-03-25
### Changed
- **Proxmox CPU Scaling Governor**
- New Script
## 2022-03-24
### Changed
- **Plex Media Server LXC**
- Switch to Ubuntu 20.04 to support HDR tone mapping
- **Docker LXC**
- Add Portainer Option
## 2022-03-23
### Changed
- **Heimdall Dashboard LXC**
- New Script V2
## 2022-03-20
### Changed
- **Scripts** (V2)
- ADD choose between Automatic or Manual DHCP
## 2022-03-18
### Changed
- **Technitium DNS LXC**
- New Script V2
- **WireGuard LXC**
- Add WGDashboard
## 2022-03-17
### Changed
- **Docker LXC**
- New Script V2
## 2022-03-16
### Changed
- **PhotoPrism LXC**
- New Update/Branch Script
## 2022-03-15
### Changed
- **Dashy LXC**
- New Update Script
## 2022-03-14
### Changed
- **Zwavejs2MQTT LXC**
- New Update Script
## 2022-03-12
### Changed
- **PhotoPrism LXC**
- New Script V2
## 2022-03-11
### Changed
- **Vaultwarden LXC**
- New V2 Install Script
## 2022-03-08
### Changed
- **Scripts** (V2)
- Choose between Privileged or Unprivileged CT and Automatic or Password Login
- **ESPHome LXC**
- New V2 Install Script
- **Zwavejs2MQTT LXC**
- New V2 Install Script
- **Motioneye LXC**
- New V2 Install Script
- **Pihole LXC**
- New V2 Install Script
- **GamUntu LXC**
- New V2 Install Script
## 2022-03-06
### Changed
- **Zwavejs2MQTT LXC**
- New GUI script to copy data from one Zwavejs2MQTT LXC to another Zwavejs2MQTT LXC
## 2022-03-05
### Changed
- **Homebridge LXC**
- New Script V2
## 2022-03-04
### Changed
- **Proxmox Kernel Clean**
- New Script
## 2022-03-03
### Changed
- **WireGuard LXC**
- New Script V2
## 2022-03-02
### Changed
- **Proxmox LXC Updater**
- New Script
- **Dashy LXC**
- New Script V2
- **Grafana LXC**
- New Script V2
- **InfluxDB/Telegraf LXC**
- New Script V2
## 2022-03-01
### Changed
- **Daemon Sync Server LXC**
- New Script V2
## 2022-02-28
### Changed
- **Vaultwarden LXC**
- Add Update Script
## 2022-02-24
### Changed
- **Nginx Proxy Manager LXC**
- New V2 Install Script
## 2022-02-23
### Changed
- **Adguard Home LXC**
- New V2 Install Script
- **Zigbee2MQTT LXC**
- New V2 Install Script
- **Home Assistant Container LXC**
- Update Menu usability improvements
## 2022-02-22
### Changed
- **Home Assistant Container LXC**
- New V2 Install Script
- **Node-Red LXC**
- New V2 Install Script
- **Mariadb LXC**
- New V2 Install Script
- **MQTT LXC**
- New V2 Install Script
- **Debian 11 LXC**
- New V2 Install Script
- **Ubuntu 21.10 LXC**
- New V2 Install Script
## 2022-02-20
### Changed
- **Home Assistant Container LXC**
- New Script to migrate to the latest Update Menu
## 2022-02-19
### Changed
- **Nginx Proxy Manager LXC**
- Add Update Script
- **Vaultwarden LXC**
- Make unattended install & Cleanup Script
## 2022-02-18
### Changed
- **Node-Red LXC**
- Add Install [Themes Script](https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/node-red-themes.png)
## 2022-02-16
### Changed
- **Home Assistant Container LXC**
- Add Options to [Update Menu](https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/update-menu.png)
## 2022-02-14
### Changed
- **Home Assistant Container LXC**
- Add [Update Menu](https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/update-menu.png)
## 2022-02-13
### Changed
- **Mariadb LXC**
- Add [Adminer](https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/adminer.png) (formerly phpMinAdmin), a full-featured database management tool
## 2022-02-12
### Changed
- **Home Assistant Container LXC (Podman)**
- Add Yacht web interface for managing Podman containers
- new GUI script to copy data from a **Home Assistant LXC** to a **Podman Home Assistant LXC**
- Improve documentation for several LXC's
## 2022-02-10
### Changed
- **GamUntu LXC**
- New Script
- **Jellyfin Media Server LXC**
- new script to fix [start issue](https://github.com/tteck/Proxmox/issues/29#issue-1127457380)
- **MotionEye NVR LXC**
- New script
## 2022-02-09
### Changed
- **Zigbee2MQTT LXC**
- added USB passthrough during installation (no extra script)
- Improve documentation
- **Zwavejs2MQTT LXC**
- added USB passthrough during installation (no extra script)
- **Jellyfin Media Server LXC**
- Moved to testing due to issues.
- Changed install method.
- **Home Assistant Container LXC (Podman)**
- add script for easy Home Assistant update
## 2022-02-06
### Changed
- **Debian 11 LXC**
- Add Docker Support
- **Ubuntu 21.10 LXC**
- Add Docker Support
## 2022-02-05
### Changed
- **Vaultwarden LXC**
- New script
## 2022-02-01
### Changed
- **All Scripts**
- Fix issue where some networks were slow to assign a IP address to the container causing scripts to fail.
## 2022-01-30
### Changed
- **Zigbee2MQTT LXC**
- Clean up / Improve script
- Improve documentation
## 2022-01-29
### Changed
- **Node-Red LXC**
- Clean up / Improve script
- Improve documentation
## 2022-01-25
### Changed
- **Jellyfin Media Server LXC**
- new script
## 2022-01-24
### Changed
- **Plex Media Server LXC**
- better Hardware Acceleration Support
- `va-driver-all` is preinstalled
- now using Ubuntu 21.10
- **misc**
- new GUI script [(Screenshot)](https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/pms-copy-data.png) to copy data from one Plex Media Server LXC to another Plex Media Server LXC
## Initial Catch up - 2022-01-23
### Changed
- **Plex Media Server LXC**
- add Hardware Acceleration Support
- add script to install Intel Drivers
- **Zwavejs2MQTT LXC**
- new script to solve no auto start at boot
- **Nginx Proxy Manager LXC**
- new script to use Debian 11
- **Ubuntu 21.10 LXC**
- new script
- **Mariadb LXC**
- add MariaDB Package Repository
- **MQTT LXC**
- add Eclipse Mosquitto Package Repository
- **Home Assistant Container LXC**
- change if ZFS filesystem is detected, execute automatic installation of static fuse-overlayfs
- add script for easy Home Assistant update
- **Home Assistant Container LXC (Podman)**
- change if ZFS filesystem is detected, execute automatic installation of static fuse-overlayfs
- **Home Assistant OS VM**
- change disk type from SATA to SCSI to follow Proxmox official recommendations of choosing VirtIO-SCSI with SCSI disk
- clean up
- **Proxmox VE 7 Post Install**
- new *No-Nag* method
- **misc**
- new GUI script to copy data from one Home Assistant LXC to another Home Assistant LXC
- new GUI script to copy data from one Zigbee2MQTT LXC to another Zigbee2MQTT LXC
================================================
FILE: CODE-AUDIT.md
================================================
<div align="center">
<img src="https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/logo.png" height="100px" />
</div>
<h2><div align="center">Exploring the Scripts and Steps Involved in an Application LXC Installation</div></h2>
1) [adguard.sh](https://github.com/tteck/Proxmox/blob/main/ct/adguard.sh): This script collects system parameters. (Also holds the function to update the application.)
2) [build.func](https://github.com/tteck/Proxmox/blob/main/misc/build.func): Adds user settings and integrates collected information.
3) [create_lxc.sh](https://github.com/tteck/Proxmox/blob/main/ct/create_lxc.sh): Constructs the LXC container.
4) [adguard-install.sh](https://github.com/tteck/Proxmox/blob/main/install/adguard-install.sh): Executes functions from [install.func](https://github.com/tteck/Proxmox/blob/main/misc/install.func), and installs the application.
5) [adguard.sh](https://github.com/tteck/Proxmox/blob/main/ct/adguard.sh) (again): To display the completion message.
The installation process uses reusable scripts: [build.func](https://github.com/tteck/Proxmox/blob/main/misc/build.func), [create_lxc.sh](https://github.com/tteck/Proxmox/blob/main/ct/create_lxc.sh), and [install.func](https://github.com/tteck/Proxmox/blob/main/misc/install.func), which are not specific to any particular application.
To gain a better understanding, focus on reviewing [adguard-install.sh](https://github.com/tteck/Proxmox/blob/main/install/adguard-install.sh). This script contains the commands and configurations for installing and configuring AdGuard Home within the LXC container.
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2021-2024 tteck
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
<div style="border: 2px solid #d1d5db; padding: 20px; border-radius: 8px; background-color: #f9fafb;"> <h2 align="center">Proxmox VE Helper-Scripts: A Community Legacy</h2> <p>Dear Community,</p> <p>As we prepare to archive this repository, we’re excited to announce a new home for the project: <a href="https://github.com/community-scripts/ProxmoxVE">https://github.com/community-scripts/ProxmoxVE</a>. While we’re still settling in, this will soon become the go-to place for the latest Proxmox VE scripts.</p> <p>Thank you for your continued support.</p> <br>The Community </div>
<div align="center">
<a href="#">
<img src="https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/logo.png" height="100px" />
</a>
</div>
<h1 align="center">Proxmox VE Helper-Scripts</h1>
<p align="center">
<a href="https://helper-scripts.com">Website</a> |
<a href="https://github.com/tteck/Proxmox/blob/main/.github/CONTRIBUTING.md">Contribute</a> |
<a href="https://github.com/tteck/Proxmox/blob/main/USER_SUBMITTED_GUIDES.md">Guides</a> |
<a href="https://github.com/tteck/Proxmox/blob/main/CHANGELOG.md">Changelog</a> |
<a href="https://ko-fi.com/D1D7EP4GF">Support</a>
</p>
---
These scripts empower users to create a Linux container or virtual machine interactively, providing choices for both simple and advanced configurations. The basic setup adheres to default settings, while the advanced setup gives users the ability to customize these defaults.
Options are displayed to users in a dialog box format. Once the user makes their selections, the script collects and validates their input to generate the final configuration for the container or virtual machine.
<p align="center">
Be cautious and thoroughly evaluate scripts and automation tasks obtained from external sources. <a href="https://github.com/tteck/Proxmox/blob/main/CODE-AUDIT.md">Read more</a>
</p>
<sub><div align="center"> Proxmox® is a registered trademark of Proxmox Server Solutions GmbH. </div></sub>
================================================
FILE: USER_SUBMITTED_GUIDES.md
================================================
<div align="center">
<a href="#">
<img src="https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/logo.png" height="100px" />
</a>
</div>
<h2 align="center">User Submitted Guides </h2>
<sub> In order to contribute a guide on installing with Proxmox VE Helper Scripts, you should open a pull request that adds the guide to the `USER_SUBMITTED_GUIDES.md` file. </sub>
[Proxmox Automation with Proxmox Helper Scripts!](https://www.youtube.com/watch?v=kcpu4z5eSEU)
[Installing Home Assistant OS using Proxmox 8](https://community.home-assistant.io/t/installing-home-assistant-os-using-proxmox-8/201835)
[How To Separate Zigbee2MQTT From Home Assistant In Proxmox](https://smarthomescene.com/guides/how-to-separate-zigbee2mqtt-from-home-assistant-in-proxmox/)
[How To Install Home Assistant On Proxmox: The Easy Way](https://smarthomescene.com/guides/how-to-install-home-assistant-on-proxmox-the-easy-way/)
[Home Assistant: Installing InfluxDB (LXC)](https://www.derekseaman.com/2023/04/home-assistant-installing-influxdb-lxc.html)
[Home Assistant: Proxmox Quick Start Guide](https://www.derekseaman.com/2023/10/home-assistant-proxmox-ve-8-0-quick-start-guide-2.html)
[Home Assistant: Installing Grafana (LXC) with Let’s Encrypt SSL](https://www.derekseaman.com/2023/04/home-assistant-installing-grafana-lxc.html)
[Proxmox: Plex LXC with Alder Lake Transcoding](https://www.derekseaman.com/2023/04/proxmox-plex-lxc-with-alder-lake-transcoding.html)
[How To Backup Home Assistant In Proxmox](https://smarthomescene.com/guides/how-to-backup-home-assistant-in-proxmox/)
[Running Frigate on Proxmox](https://www.homeautomationguy.io/blog/running-frigate-on-proxmox)
[Frigate VM on Proxmox with PCIe Coral TPU](https://www.derekseaman.com/2023/06/home-assistant-frigate-vm-on-proxmox-with-pcie-coral-tpu.html)
[Moving Home Assistant’s Database To MariaDB On Proxmox](https://smarthomescene.com/guides/moving-home-assistants-database-to-mariadb-on-proxmox/)
[How-to: Proxmox VE 7.4 to 8.0 Upgrade](https://www.derekseaman.com/2023/06/how-to-proxmox-7-4-to-8-0-upgrade.html)
[iGPU Transcoding In Proxmox with Jellyfin](https://www.youtube.com/watch?v=XAa_qpNmzZs)
[Proxmox + NetData](<https://dbt3ch.com/books/proxmox-netdata-for-better-insights-and-notifications/page/proxmox-netdata-for-better-insights-and-notifications>)
[Proxmox Homelab Series](<https://blog.kye.dev/proxmox-series>)
[The fastest installation of Docker and Portainer on Proxmox VE](https://lavr.site/en-fastest-install-docker-portainer-proxmox/)
[How To Setup Proxmox Backuper Server Using Helper Scripts](<https://youtu.be/6C2JOsrZZZw?si=kkrrcL_nLCDBJkOB>)
================================================
FILE: ct/actualbudget.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___ __ __ ____ __ __
/ | _____/ /___ ______ _/ / / __ )__ ______/ /___ ____ / /_
/ /| |/ ___/ __/ / / / __ `/ / / __ / / / / __ / __ `/ _ \/ __/
/ ___ / /__/ /_/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / __/ /_
/_/ |_\___/\__/\__,_/\__,_/_/ /_____/\__,_/\__,_/\__, /\___/\__/
/____/
EOF
}
header_info
echo -e "Loading..."
APP="Actual Budget"
var_disk="4"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/actualbudget ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating ${APP}"
systemctl stop actualbudget.service
cd /opt/actualbudget
git pull &>/dev/null
yarn install &>/dev/null
systemctl start actualbudget.service
msg_ok "Successfully Updated ${APP}"
exit
}
start
build_container
description
msg_info "Setting Container to Normal Resources"
pct set $CTID -memory 1024
pct set $CTID -cores 1
msg_ok "Set Container to Normal Resources"
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:5006${CL} \n"
================================================
FILE: ct/adguard.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___ __ __
/ | ____/ /___ ___ ______ __________/ /
/ /| |/ __ / __ / / / / __ / ___/ __ /
/ ___ / /_/ / /_/ / /_/ / /_/ / / / /_/ /
/_/ |_\__,_/\__, /\__,_/\__,_/_/ \__,_/
/____/
EOF
}
header_info
echo -e "Loading..."
APP="Adguard"
var_disk="2"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/AdGuardHome ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
fi
wget -qL https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz
msg_info "Stopping AdguardHome"
systemctl stop AdGuardHome
msg_ok "Stopped AdguardHome"
msg_info "Updating AdguardHome"
tar -xvf AdGuardHome_linux_amd64.tar.gz &>/dev/null
mkdir -p adguard-backup
cp -r /opt/AdGuardHome/AdGuardHome.yaml /opt/AdGuardHome/data adguard-backup/
cp AdGuardHome/AdGuardHome /opt/AdGuardHome/AdGuardHome
cp -r adguard-backup/* /opt/AdGuardHome/
msg_ok "Updated AdguardHome"
msg_info "Starting AdguardHome"
systemctl start AdGuardHome
msg_ok "Started AdguardHome"
msg_info "Cleaning Up"
rm -rf AdGuardHome_linux_amd64.tar.gz AdGuardHome adguard-backup
msg_ok "Cleaned"
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} Setup should be reachable by going to the following URL.
${BL}http://${IP}:3000${CL} \n"
================================================
FILE: ct/adventurelog.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck
# Co-Author: MickLesk (Canbiz)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___ __ __ __
/ | ____/ / _____ ____ / /___ __________ / / ____ ____ _
/ /| |/ __ / | / / _ \/ __ \/ __/ / / / ___/ _ \/ / / __ \/ __ `/
/ ___ / /_/ /| |/ / __/ / / / /_/ /_/ / / / __/ /___/ /_/ / /_/ /
/_/ |_\__,_/ |___/\___/_/ /_/\__/\__,_/_/ \___/_____/\____/\__, /
/____/
EOF
}
header_info
echo -e "Loading..."
APP="AdventureLog"
var_disk="7"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/adventurelog ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
fi
RELEASE=$(curl -s https://api.github.com/repos/seanmorley15/AdventureLog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping Services"
systemctl stop adventurelog-backend
systemctl stop adventurelog-frontend
msg_ok "Services Stopped"
msg_info "Updating ${APP} to ${RELEASE}"
cp /opt/adventurelog/backend/server/.env /opt/server.env
cp /opt/adventurelog/frontend/env /opt/frontend.env
wget -q "https://github.com/seanmorley15/AdventureLog/archive/refs/tags/v${RELEASE}.zip"
unzip -q v${RELEASE}.zip
mv AdventureLog-${RELEASE} /opt/adventurelog
mv /opt/server.env /opt/adventurelog/backend/server/.env
cd /opt/adventurelog/backend/server
pip install --upgrade pip &>/dev/null
pip install -r requirements.txt &>/dev/null
python3 manage.py collectstatic --noinput &>/dev/null
python3 manage.py migrate &>/dev/null
mv /opt/frontend.env /opt/adventurelog/frontend/.env
cd /opt/adventurelog/frontend
pnpm install &>/dev/null
pnpm run build &>/dev/null
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}"
msg_info "Starting Services"
systemctl start adventurelog-backend
systemctl start adventurelog-frontend
msg_ok "Started Services"
msg_info "Cleaning Up"
rm -rf v${RELEASE}.zip
msg_ok "Cleaned"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} Setup should be reachable by going to the following URL.
${BL}http://${IP}:3000${CL} \n"
================================================
FILE: ct/agentdvr.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___ __ ____ _ ______
/ | ____ ____ ____ / /_/ __ \ | / / __ \
/ /| |/ __ `/ _ \/ __ \/ __/ / / / | / / /_/ /
/ ___ / /_/ / __/ / / / /_/ /_/ /| |/ / _, _/
/_/ |_\__, /\___/_/ /_/\__/_____/ |___/_/ |_|
/____/
EOF
}
header_info
echo -e "Loading..."
APP="AgentDVR"
var_disk="8"
var_cpu="2"
var_ram="2048"
var_os="ubuntu"
var_version="22.04"
variables
color
catch_errors
function default_settings() {
CT_TYPE="0"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/agentdvr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_error "There is currently no update path available."
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP}${CL} should be reachable by going to the following URL.
${BL}http://${IP}:8090${CL} \n"
================================================
FILE: ct/alpine-docker.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
____ __
/ __ \____ _____/ /_ __ _____
/ / / / __ \/ ___/ //_/ _ \/ ___/
/ /_/ / /_/ / /__/ ,< / __/ /
/_____/\____/\___/_/|_|\___/_/
Alpine
EOF
}
header_info
echo -e "Loading..."
APP="Alpine-Docker"
var_disk="2"
var_cpu="1"
var_ram="1024"
var_os="alpine"
var_version="3.19"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
if ! apk -e info newt >/dev/null 2>&1; then
apk add -q newt
fi
while true; do
CHOICE=$(
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --menu "Select option" 11 58 1 \
"1" "Check for Docker Updates" 3>&2 2>&1 1>&3
)
exit_status=$?
if [ $exit_status == 1 ]; then
clear
exit-script
fi
header_info
case $CHOICE in
1)
apk update && apk upgrade
exit
;;
esac
done
}
start
build_container
description
msg_ok "Completed Successfully!\n"
================================================
FILE: ct/alpine-grafana.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______ ____
/ ____/________ _/ __/___ _____ ____ _
/ / __/ ___/ __ / /_/ __ / __ \/ __ /
/ /_/ / / / /_/ / __/ /_/ / / / / /_/ /
\____/_/ \__,_/_/ \__,_/_/ /_/\__,_/
Alpine
EOF
}
header_info
echo -e "Loading..."
APP="Alpine-Grafana"
var_disk="1"
var_cpu="1"
var_ram="256"
var_os="alpine"
var_version="3.19"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
if ! apk -e info newt >/dev/null 2>&1; then
apk add -q newt
fi
LXCIP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
while true; do
CHOICE=$(
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --menu "Select option" 11 58 3 \
"1" "Check for Grafana Updates" \
"2" "Allow 0.0.0.0 for listening" \
"3" "Allow only ${LXCIP} for listening" 3>&2 2>&1 1>&3
)
exit_status=$?
if [ $exit_status == 1 ]; then
clear
exit-script
fi
header_info
case $CHOICE in
1)
apk update && apk upgrade
exit
;;
2)
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=0.0.0.0/g" /etc/conf.d/grafana
service grafana restart
exit
;;
3)
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=$LXCIP/g" /etc/conf.d/grafana
service grafana restart
exit
;;
esac
done
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:3000${CL} \n"
================================================
FILE: ct/alpine-nextcloud.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
_ __ __ __ __ __ __ __
/ | / /__ _ __/ /______/ /___ __ ______/ / / / / /_ __/ /_
/ |/ / _ \| |/_/ __/ ___/ / __ \/ / / / __ / / /_/ / / / / __ \
/ /| / __/> </ /_/ /__/ / /_/ / /_/ / /_/ / / __ / /_/ / /_/ /
/_/ |_/\___/_/|_|\__/\___/_/\____/\__,_/\__,_/ /_/ /_/\__,_/_.___/
Alpine
EOF
}
header_info
echo -e "Loading..."
APP="Alpine-Nextcloud"
var_disk="2"
var_cpu="2"
var_ram="1024"
var_os="alpine"
var_version="3.19"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
if [[ ! -d /usr/share/webapps/nextcloud ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if ! apk -e info newt >/dev/null 2>&1; then
apk add -q newt
fi
while true; do
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 3 \
"1" "Nextcloud Login Credentials" ON \
"2" "Renew Self-signed Certificate" OFF \
3>&1 1>&2 2>&3)
exit_status=$?
if [ $exit_status == 1 ]; then
clear
exit-script
fi
header_info
case $CHOICE in
1)
cat nextcloud.creds
exit
;;
2)
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/nextcloud-selfsigned.key -out /etc/ssl/certs/nextcloud-selfsigned.crt -subj "/C=US/O=Nextcloud/OU=Domain Control Validated/CN=nextcloud.local" > /dev/null 2>&1
rc-service nginx restart
exit
;;
esac
done
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}https://${IP}${CL} \n"
================================================
FILE: ct/alpine-vaultwarden.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
_ __ ____ __
| | / /___ ___ __/ / /__ ______ __________/ /__ ____
| | / / __ `/ / / / / __/ | /| / / __ `/ ___/ __ / _ \/ __ \
| |/ / /_/ / /_/ / / /_ | |/ |/ / /_/ / / / /_/ / __/ / / /
|___/\__,_/\__,_/_/\__/ |__/|__/\__,_/_/ \__,_/\___/_/ /_/
Alpine
EOF
}
header_info
echo -e "Loading..."
APP="Alpine-Vaultwarden"
var_disk="0.3"
var_cpu="1"
var_ram="256"
var_os="alpine"
var_version="3.19"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
if ! apk -e info newt >/dev/null 2>&1; then
apk add -q newt
fi
while true; do
CHOICE=$(
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --menu "Select option" 11 58 2 \
"1" "Update Vaultwarden" \
"2" "Reset ADMIN_TOKEN" 3>&2 2>&1 1>&3
)
exit_status=$?
if [ $exit_status == 1 ]; then
clear
exit-script
fi
header_info
case $CHOICE in
1)
apk update && apk upgrade && rc-service vaultwarden restart -q
exit
;;
2)
if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Setup your ADMIN_TOKEN (make it strong)" 10 58 3>&1 1>&2 2>&3); then
if [[ -z "$NEWTOKEN" ]]; then exit-script; fi
if ! command -v argon2 >/dev/null 2>&1; then apk add argon2 &>/dev/null; fi
TOKEN=$(echo -n ${NEWTOKEN} | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1)
if [[ ! -f /var/lib/vaultwarden/config.json ]]; then
sed -i "s|export ADMIN_TOKEN=.*|export ADMIN_TOKEN='${TOKEN}'|" /etc/conf.d/vaultwarden
else
sed -i "s|\"admin_token\": .*|\"admin_token\": \"${TOKEN}\",|" /var/lib/vaultwarden/config.json
fi
rc-service vaultwarden restart -q
fi
clear
exit
;;
esac
done
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:8000${CL} \n"
================================================
FILE: ct/alpine-zigbee2mqtt.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
_____ _ __ ___ __ _______ ____________
/__ / (_)___ _/ /_ ___ ___ |__ \ / |/ / __ \/_ __/_ __/
/ / / / __ / __ \/ _ \/ _ \__/ // /|_/ / / / / / / / /
/ /__/ / /_/ / /_/ / __/ __/ __// / / / /_/ / / / / /
/____/_/\__, /_.___/\___/\___/____/_/ /_/\___\_\/_/ /_/
/____/ Alpine
EOF
}
header_info
echo -e "Loading..."
APP="Alpine-Zigbee2MQTT"
var_disk="0.3"
var_cpu="1"
var_ram="256"
var_os="alpine"
var_version="3.19"
variables
color
catch_errors
function default_settings() {
CT_TYPE="0"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
if ! apk -e info newt >/dev/null 2>&1; then
apk add -q newt
fi
while true; do
CHOICE=$(
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --menu "Select option" 11 58 1 \
"1" "Check for Zigbee2MQTT Updates" 3>&2 2>&1 1>&3
)
exit_status=$?
if [ $exit_status == 1 ]; then
clear
exit-script
fi
header_info
case $CHOICE in
1)
apk update && apk upgrade
exit
;;
esac
done
}
start
build_container
description
msg_ok "Completed Successfully!\n"
================================================
FILE: ct/alpine.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___ __ _
/ | / /___ (_)___ ___
/ /| | / / __ \/ / __ \/ _ \
/ ___ |/ / /_/ / / / / / __/
/_/ |_/_/ .___/_/_/ /_/\___/
/_/
EOF
}
header_info
echo -e "Loading..."
APP="Alpine"
var_disk="0.1"
var_cpu="1"
var_ram="512"
var_os="alpine"
var_version="3.19"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW="-password alpine"
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \
"1" "Check for Alpine Updates" ON \
3>&1 1>&2 2>&3)
header_info
if [ "$UPD" == "1" ]; then
apk update && apk upgrade
exit;
fi
}
start
build_container
description
msg_ok "Completed Successfully!\n"
================================================
FILE: ct/apache-cassandra.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___ __ ______ __
/ | ____ ____ ______/ /_ ___ / ____/___ _______________ _____ ____/ /________ _
/ /| | / __ \/ __ `/ ___/ __ \/ _ \ / / / __ `/ ___/ ___/ __ `/ __ \/ __ / ___/ __ `/
/ ___ |/ /_/ / /_/ / /__/ / / / __/ / /___/ /_/ (__ |__ ) /_/ / / / / /_/ / / / /_/ /
/_/ |_/ .___/\__,_/\___/_/ /_/\___/ \____/\__,_/____/____/\__,_/_/ /_/\__,_/_/ \__,_/
/_/
EOF
}
header_info
echo -e "Loading..."
APP="Apache-Cassandra"
var_disk="4"
var_cpu="1"
var_ram="2048"
var_os="debian"
var_version="12"
VERBOSE="yes"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /etc/systemd/system/cassandra.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_error "There is currently no update path available."
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
================================================
FILE: ct/apache-couchdb.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___ __ ______ __ ____ ____
/ | ____ ____ ______/ /_ ___ / ____/___ __ _______/ /_ / __ \/ __ )
/ /| | / __ \/ __ `/ ___/ __ \/ _ \ / / / __ \/ / / / ___/ __ \/ / / / __ |
/ ___ |/ /_/ / /_/ / /__/ / / / __/ / /___/ /_/ / /_/ / /__/ / / / /_/ / /_/ /
/_/ |_/ .___/\__,_/\___/_/ /_/\___/ \____/\____/\__,_/\___/_/ /_/_____/_____/
/_/
EOF
}
header_info
echo -e "Loading..."
APP="Apache-CouchDB"
var_disk="10"
var_cpu="2"
var_ram="4096"
var_os="debian"
var_version="12"
VERBOSE="yes"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /etc/systemd/system/couchdb.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_error "There is currently no update path available."
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:5984/_utils/${CL} \n"
================================================
FILE: ct/apt-cacher-ng.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___ __ ______ __ _ ________
/ | ____ / /_ / ____/___ ______/ /_ ___ _____ / | / / ____/
/ /| | / __ \/ __/__/ / / __ `/ ___/ __ \/ _ \/ ___/__/ |/ / / __
/ ___ |/ /_/ / /_/__/ /___/ /_/ / /__/ / / / __/ / /__/ /| / /_/ /
/_/ |_/ .___/\__/ \____/\__,_/\___/_/ /_/\___/_/ /_/ |_/\____/
/_/
EOF
}
header_info
echo -e "Loading..."
APP="Apt-Cacher-NG"
var_disk="2"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating $APP LXC"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated $APP LXC"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} maintenance page should be reachable by going to the following URL.
${BL}http://${IP}:3142/acng-report.html${CL} \n"
================================================
FILE: ct/archivebox.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___ __ _ ____
/ | __________/ /_ (_) _____ / __ )____ _ __
/ /| | / ___/ ___/ __ \/ / | / / _ \/ __ / __ \| |/_/
/ ___ |/ / / /__/ / / / /| |/ / __/ /_/ / /_/ /> <
/_/ |_/_/ \___/_/ /_/_/ |___/\___/_____/\____/_/|_|
EOF
}
header_info
echo -e "Loading..."
APP="ArchiveBox"
var_disk="8"
var_cpu="2"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/archivebox ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
fi
msg_info "Stopping ${APP}"
systemctl stop archivebox
msg_ok "Stopped ${APP}"
msg_info "Updating ${APP}"
cd /opt/archivebox/data
pip install --upgrade --ignore-installed archivebox
sudo -u archivebox archivebox init
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}"
systemctl start archivebox
msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:8000/admin/login${CL} \n"
================================================
FILE: ct/aria2.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___ _ ___
/ | _____(_)___ |__ \
/ /| | / ___/ / __ `/_/ /
/ ___ |/ / / / /_/ / __/
/_/ |_/_/ /_/\__,_/____/
EOF
}
header_info
echo -e "Loading..."
APP="Aria2"
var_disk="8"
var_cpu="2"
var_ram="1028"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating $APP LXC"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated $APP LXC"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:6880${CL}"
================================================
FILE: ct/audiobookshelf.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___ __ __ __ ______
____ ___ ______/ (_)___ / /_ ____ ____ / /_______/ /_ ___ / / __/
/ __ `/ / / / __ / / __ \/ __ \/ __ \/ __ \/ //_/ ___/ __ \/ _ \/ / /_
/ /_/ / /_/ / /_/ / / /_/ / /_/ / /_/ / /_/ / ,< (__ ) / / / __/ / __/
\__,_/\__,_/\__,_/_/\____/_.___/\____/\____/_/|_/____/_/ /_/\___/_/_/
EOF
}
header_info
echo -e "Loading..."
APP="audiobookshelf"
var_disk="4"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
echo "This application receives updates through the APT package manager."
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:13378${CL} \n"
================================================
FILE: ct/autobrr.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___ __ __
/ | __ __/ /_____ / /_ __________
/ /| |/ / / / __/ __ \/ __ \/ ___/ ___/
/ ___ / /_/ / /_/ /_/ / /_/ / / / /
/_/ |_\__,_/\__/\____/_.___/_/ /_/
EOF
}
header_info
echo -e "Loading..."
APP="Autobrr"
var_disk="8"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /root/.config/autobrr/config.toml ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Stopping ${APP} LXC"
systemctl stop autobrr.service
msg_ok "Stopped ${APP} LXC"
msg_info "Updating ${APP} LXC"
rm -rf /usr/local/bin/*
wget -q $(curl -s https://api.github.com/repos/autobrr/autobrr/releases/latest | grep download | grep linux_x86_64 | cut -d\" -f4)
tar -C /usr/local/bin -xzf autobrr*.tar.gz
rm -rf autobrr*.tar.gz
msg_ok "Updated ${APP} LXC"
msg_info "Starting ${APP} LXC"
systemctl start autobrr.service
msg_ok "Started ${APP} LXC"
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:7474${CL} \n"
================================================
FILE: ct/bazarr.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
____
/ __ )____ _____ ____ ___________
/ __ / __ `/_ / / __ `/ ___/ ___/
/ /_/ / /_/ / / /_/ /_/ / / / /
/_____/\__,_/ /___/\__,_/_/ /_/
EOF
}
header_info
echo -e "Loading..."
APP="Bazarr"
var_disk="4"
var_cpu="2"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /var/lib/bazarr/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating $APP LXC"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated $APP LXC"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:6767${CL} \n"
================================================
FILE: ct/blocky.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
____ __ __
/ __ )/ /___ _____/ /____ __
/ __ / / __ \/ ___/ //_/ / / /
/ /_/ / / /_/ / /__/ ,< / /_/ /
/_____/_/\____/\___/_/|_|\__, /
/____/
EOF
}
header_info
echo -e "Loading..."
APP="Blocky"
var_disk="2"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating $APP LXC"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated $APP LXC"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
================================================
FILE: ct/bunkerweb.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
____ __ _ __ __
/ __ )__ ______ / /_____ ____| | / /__ / /_
/ __ / / / / __ \/ //_/ _ \/ ___/ | /| / / _ \/ __ \
/ /_/ / /_/ / / / / ,< / __/ / | |/ |/ / __/ /_/ /
/_____/\__,_/_/ /_/_/|_|\___/_/ |__/|__/\___/_.___/
EOF
}
header_info
echo -e "Loading..."
APP="BunkerWeb"
var_disk="4"
var_cpu="2"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /etc/bunkerweb ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
RELEASE=$(curl -s https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Updating ${APP} to ${RELEASE}"
cat <<EOF >/etc/apt/preferences.d/bunkerweb
Package: bunkerweb
Pin: version ${RELEASE}
Pin-Priority: 1001
EOF
apt-get update
apt-get install -y nginx=1.26.2*
apt-get install -y bunkerweb=${RELEASE}
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} setup should be reachable by going to the following URL.
${BL}http://${IP}/setup${CL} \n"
================================================
FILE: ct/caddy.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______ __ __
/ ____/___ _____/ /___/ /_ __
/ / / __ `/ __ / __ / / / /
/ /___/ /_/ / /_/ / /_/ / /_/ /
\____/\__,_/\__,_/\__,_/\__, /
/____/
EOF
}
header_info
echo -e "Loading..."
APP="Caddy"
var_disk="2"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /etc/caddy ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating $APP LXC"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated $APP LXC"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
================================================
FILE: ct/calibre-web.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# Co-Author: remz1337
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______ ___ __ _ __ __
/ ____/___ _/ (_) /_ ________ | | / /__ / /_
/ / / __ `/ / / __ \/ ___/ _ \___| | /| / / _ \/ __ \
/ /___/ /_/ / / / /_/ / / / __/___/ |/ |/ / __/ /_/ /
\____/\__,_/_/_/_.___/_/ \___/ |__/|__/\___/_.___/
EOF
}
header_info
echo -e "Loading..."
APP="Calibre-Web"
var_disk="4"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
if [[ ! -f /etc/systemd/system/cps.service ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
header_info
msg_info "Updating $APP LXC"
systemctl stop cps
cd /opt/kepubify
rm kepubify-linux-64bit
curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit &>/dev/null
chmod +x kepubify-linux-64bit
menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF \
"2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF \
"3" "Enables displaying of additional author infos on the authors page" OFF \
"4" "Enables login via LDAP server" OFF \
"5" "Enables login via google or github oauth" OFF \
"6" "Enables extracting of metadata from epub, fb2, pdf files, and also extraction of covers from cbr, cbz, cbt files" OFF \
"7" "Enables extracting of metadata from cbr, cbz, cbt files" OFF \
"8" "Enables syncing with your kobo reader" OFF )
if [ -f "/opt/calibre-web/options.txt" ]; then
cps_options="$(cat /opt/calibre-web/options.txt)"
IFS=',' read -ra ADDR <<< "$cps_options"
for i in "${ADDR[@]}"; do
if [ $i == "gdrive" ]; then
line=0
elif [ $i == "gmail" ]; then
line=1
elif [ $i == "goodreads" ]; then
line=2
elif [ $i == "ldap" ]; then
line=3
elif [ $i == "oauth" ]; then
line=4
elif [ $i == "metadata" ]; then
line=5
elif [ $i == "comics" ]; then
line=6
elif [ $i == "kobo" ]; then
line=7
fi
array_index=$(( 3*line + 2 ))
menu_array[$array_index]=ON
done
fi
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
CHOICES=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "CALIBRE-WEB OPTIONS" --separate-output --checklist "Choose Additional Options" 15 125 8 "${menu_array[@]}" 3>&1 1>&2 2>&3)
spinner &
SPINNER_PID=$!
options=()
if [ ! -z "$CHOICES" ]; then
for CHOICE in $CHOICES; do
case "$CHOICE" in
"1")
options+=( gdrive )
;;
"2")
options+=( gmail )
;;
"3")
options+=( goodreads )
;;
"4")
options+=( ldap )
apt-get install -qqy libldap2-dev libsasl2-dev
;;
"5")
options+=( oauth )
;;
"6")
options+=( metadata )
;;
"7")
options+=( comics )
;;
"8")
options+=( kobo )
;;
*)
echo "Unsupported item $CHOICE!" >&2
exit 1
;;
esac
done
fi
if [ ! -z "$options" ] && [ ${#options[@]} -gt 0 ]; then
cps_options=$(IFS=, ; echo "${options[*]}")
echo $cps_options > /opt/calibre-web/options.txt
pip install --upgrade calibreweb[$cps_options]
else
rm /opt/calibre-web/options.txt 2> /dev/null
pip install --upgrade calibreweb
fi
systemctl start cps
msg_ok "Updated $APP LXC"
exit
}
start
build_container
description
msg_info "Setting Container to Normal Resources"
pct set $CTID -memory 512
pct set $CTID -cores 1
msg_ok "Set Container to Normal Resources"
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:8083${CL} \n"
================================================
FILE: ct/casaos.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______ ____ _____
/ ____/___ __________ _/ __ \/ ___/
/ / / __ `/ ___/ __ `/ / / /\__ \
/ /___/ /_/ (__ ) /_/ / /_/ /___/ /
\____/\__,_/____/\__,_/\____//____/
EOF
}
header_info
echo -e "Loading..."
APP="CasaOS"
var_disk="8"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating ${APP} LXC"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated ${APP} LXC"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} Setup should be reachable by going to the following URL.
${BL}http://${IP} ${CL} \n"
================================================
FILE: ct/changedetection.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
________ ____ __ __ _
/ ____/ /_ ____ _____ ____ ____ / __ \___ / /____ _____/ /_(_)___ ____
/ / / __ \/ __ `/ __ \/ __ `/ _ \ / / / / _ \/ __/ _ \/ ___/ __/ / __ \/ __ \
/ /___/ / / / /_/ / / / / /_/ / __/ / /_/ / __/ /_/ __/ /__/ /_/ / /_/ / / / /
\____/_/ /_/\__,_/_/ /_/\__, /\___/ /_____/\___/\__/\___/\___/\__/_/\____/_/ /_/
/____/
EOF
}
header_info
echo -e "Loading..."
APP="Change Detection"
var_disk="8"
var_cpu="2"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /etc/systemd/system/changedetection.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating ${APP} LXC"
if ! dpkg -s libjpeg-dev >/dev/null 2>&1; then
apt-get update
apt-get install -y libjpeg-dev
fi
pip3 install changedetection.io --upgrade &>/dev/null
pip3 install playwright --upgrade &>/dev/null
if [[ -f /etc/systemd/system/browserless.service ]]; then
git -C /opt/browserless/ fetch --all &>/dev/null
git -C /opt/browserless/ reset --hard origin/main &>/dev/null
npm update --prefix /opt/browserless &>/dev/null
npm run build --prefix /opt/browserless &>/dev/null
npm run build:function --prefix /opt/browserless &>/dev/null
npm prune production --prefix /opt/browserless &>/dev/null
systemctl restart browserless
else
msg_error "No Browserless Installation Found!"
fi
systemctl restart changedetection
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:5000${CL} \n"
================================================
FILE: ct/channels.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
________ __ ____ _ ______ _____
/ ____/ /_ ____ _____ ____ ___ / /____ / __ \ | / / __ \ / ___/___ ______ _____ _____
/ / / __ \/ __ `/ __ \/ __ \/ _ \/ / ___/ / / / / | / / /_/ / \__ \/ _ \/ ___/ | / / _ \/ ___/
/ /___/ / / / /_/ / / / / / / / __/ (__ ) / /_/ /| |/ / _, _/ ___/ / __/ / | |/ / __/ /
\____/_/ /_/\__,_/_/ /_/_/ /_/\___/_/____/ /_____/ |___/_/ |_| /____/\___/_/ |___/\___/_/
EOF
}
header_info
echo -e "Loading..."
APP="Channels"
var_disk="8"
var_cpu="2"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="0"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/channels-dvr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_error "There is currently no update path available."
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} Setup should be reachable by going to the following URL.
${BL}http://${IP}:8089 ${CL} \n"
================================================
FILE: ct/cloudflared.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
________ ________ __
/ ____/ /___ __ ______/ / __/ /___ _________ ____/ /
/ / / / __ \/ / / / __ / /_/ / __ `/ ___/ _ \/ __ /
/ /___/ / /_/ / /_/ / /_/ / __/ / /_/ / / / __/ /_/ /
\____/_/\____/\__,_/\__,_/_/ /_/\__,_/_/ \___/\__,_/
EOF
}
header_info
echo -e "Loading..."
APP="Cloudflared"
var_disk="2"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating $APP LXC"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated $APP LXC"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
================================================
FILE: ct/cockpit.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck
# Co-Author: havardthom
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______ __ _ __
/ ____/___ _____/ /______ (_) /_
/ / / __ \/ ___/ //_/ __ \/ / __/
/ /___/ /_/ / /__/ ,< / /_/ / / /_
\____/\____/\___/_/|_/ .___/_/\__/
/_/
EOF
}
header_info
echo -e "Loading..."
APP="Cockpit"
var_disk="4"
var_cpu="2"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
if [[ ! -d /etc/cockpit ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
"1" "Update LXC" ON \
"2" "Install cockpit-file-sharing" OFF \
"3" "Install cockpit-identities" OFF \
"4" "Install cockpit-navigator" OFF \
3>&1 1>&2 2>&3)
header_info
if [ "$UPD" == "1" ]; then
msg_info "Updating ${APP} LXC"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated ${APP} LXC"
exit
fi
if [ "$UPD" == "2" ]; then
msg_info "Installing dependencies (patience)"
apt-get install -y attr &>/dev/null
apt-get install -y nfs-kernel-server &>/dev/null
apt-get install -y samba &>/dev/null
apt-get install -y samba-common-bin &>/dev/null
apt-get install -y winbind &>/dev/null
apt-get install -y gawk &>/dev/null
msg_ok "Installed dependencies"
msg_info "Installing Cockpit file sharing"
LATEST=$(curl -s https://api.github.com/repos/45Drives/cockpit-file-sharing/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q https://github.com/45Drives/cockpit-file-sharing/releases/download/v${LATEST}/cockpit-file-sharing_${LATEST}-1focal_all.deb
dpkg -i cockpit-file-sharing_${LATEST}-1focal_all.deb &>/dev/null
rm cockpit-file-sharing_${LATEST}-1focal_all.deb
msg_ok "Installed Cockpit file sharing"
exit
fi
if [ "$UPD" == "3" ]; then
msg_info "Installing dependencies (patience)"
apt-get install -y psmisc &>/dev/null
apt-get install -y samba &>/dev/null
apt-get install -y samba-common-bin &>/dev/null
msg_ok "Installed dependencies"
msg_info "Installing Cockpit identities"
LATEST=$(curl -s https://api.github.com/repos/45Drives/cockpit-identities/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q https://github.com/45Drives/cockpit-identities/releases/download/v${LATEST}/cockpit-identities_${LATEST}-1focal_all.deb
dpkg -i cockpit-identities_${LATEST}-1focal_all.deb &>/dev/null
rm cockpit-identities_${LATEST}-1focal_all.deb
msg_ok "Installed Cockpit identities"
exit
fi
if [ "$UPD" == "4" ]; then
msg_info "Installing dependencies"
apt-get install -y rsync &>/dev/null
apt-get install -y zip &>/dev/null
msg_ok "Installed dependencies"
msg_info "Installing Cockpit navigator"
LATEST=$(curl -s https://api.github.com/repos/45Drives/cockpit-navigator/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q https://github.com/45Drives/cockpit-navigator/releases/download/v${LATEST}/cockpit-navigator_${LATEST}-1focal_all.deb
dpkg -i cockpit-navigator_${LATEST}-1focal_all.deb &>/dev/null
rm cockpit-navigator_${LATEST}-1focal_all.deb
msg_ok "Installed Cockpit navigator"
exit
fi
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:9090${CL} \n"
================================================
FILE: ct/commafeed.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______ ______ __
/ ____/___ ____ ___ ____ ___ ____ _/ ____/__ ___ ____/ /
/ / / __ \/ __ `__ \/ __ `__ \/ __ `/ /_ / _ \/ _ \/ __ /
/ /___/ /_/ / / / / / / / / / / / /_/ / __/ / __/ __/ /_/ /
\____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ \___/\___/\__,_/
EOF
}
header_info
echo -e "Loading..."
APP="CommaFeed"
var_disk="4"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/commafeed ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
RELEASE=$(curl -sL https://api.github.com/repos/Athou/commafeed/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP}"
systemctl stop commafeed
msg_ok "Stopped ${APP}"
msg_info "Updating ${APP} to ${RELEASE}"
wget -q https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip
unzip -q commafeed-${RELEASE}-h2-jvm.zip
rsync -a --exclude 'data/' commafeed-${RELEASE}-h2/ /opt/commafeed/
rm -rf commafeed-${RELEASE}-h2 commafeed-${RELEASE}-h2-jvm.zip
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting ${APP}"
systemctl start commafeed
msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:8082${CL} \n"
================================================
FILE: ct/create_lxc.sh
================================================
#!/usr/bin/env bash
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
# This sets verbose mode if the global variable is set to "yes"
# if [ "$VERBOSE" == "yes" ]; then set -x; fi
# This function sets color variables for formatting output in the terminal
YW=$(echo "\033[33m")
BL=$(echo "\033[36m")
RD=$(echo "\033[01;31m")
GN=$(echo "\033[1;92m")
CL=$(echo "\033[m")
CM="${GN}✓${CL}"
CROSS="${RD}✗${CL}"
BFR="\\r\\033[K"
HOLD=" "
# This sets error handling options and defines the error_handler function to handle errors
set -Eeuo pipefail
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
# This function handles errors
function error_handler() {
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
printf "\e[?25h"
local exit_code="$?"
local line_number="$1"
local command="$2"
local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
echo -e "\n$error_message\n"
}
# This function displays a spinner.
function spinner() {
local chars="/-\|"
local spin_i=0
printf "\e[?25l"
while true; do
printf "\r \e[36m%s\e[0m" "${chars:spin_i++%${#chars}:1}"
sleep 0.1
done
}
# This function displays an informational message with a yellow color.
function msg_info() {
local msg="$1"
echo -ne " ${HOLD} ${YW}${msg} "
spinner &
SPINNER_PID=$!
}
# This function displays a success message with a green color.
function msg_ok() {
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
printf "\e[?25h"
local msg="$1"
echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
}
# This function displays a error message with a red color.
function msg_error() {
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
printf "\e[?25h"
local msg="$1"
echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}"
}
# This checks for the presence of valid Container Storage and Template Storage locations
msg_info "Validating Storage"
VALIDCT=$(pvesm status -content rootdir | awk 'NR>1')
if [ -z "$VALIDCT" ]; then
msg_error "Unable to detect a valid Container Storage location."
exit 1
fi
VALIDTMP=$(pvesm status -content vztmpl | awk 'NR>1')
if [ -z "$VALIDTMP" ]; then
msg_error "Unable to detect a valid Template Storage location."
exit 1
fi
# This function is used to select the storage class and determine the corresponding storage content type and label.
function select_storage() {
local CLASS=$1
local CONTENT
local CONTENT_LABEL
case $CLASS in
container)
CONTENT='rootdir'
CONTENT_LABEL='Container'
;;
template)
CONTENT='vztmpl'
CONTENT_LABEL='Container template'
;;
*) false || exit "Invalid storage class." ;;
esac
# This Queries all storage locations
local -a MENU
while read -r line; do
local TAG=$(echo $line | awk '{print $1}')
local TYPE=$(echo $line | awk '{printf "%-10s", $2}')
local FREE=$(echo $line | numfmt --field 4-6 --from-unit=K --to=iec --format %.2f | awk '{printf( "%9sB", $6)}')
local ITEM=" Type: $TYPE Free: $FREE "
local OFFSET=2
if [[ $((${#ITEM} + $OFFSET)) -gt ${MSG_MAX_LENGTH:-} ]]; then
local MSG_MAX_LENGTH=$((${#ITEM} + $OFFSET))
fi
MENU+=("$TAG" "$ITEM" "OFF")
done < <(pvesm status -content $CONTENT | awk 'NR>1')
# Select storage location
if [ $((${#MENU[@]}/3)) -eq 1 ]; then
printf ${MENU[0]}
else
local STORAGE
while [ -z "${STORAGE:+x}" ]; do
STORAGE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Storage Pools" --radiolist \
"Which storage pool you would like to use for the ${CONTENT_LABEL,,}?\nTo make a selection, use the Spacebar.\n" \
16 $(($MSG_MAX_LENGTH + 23)) 6 \
"${MENU[@]}" 3>&1 1>&2 2>&3) || exit "Menu aborted."
done
printf $STORAGE
fi
}
# Test if required variables are set
[[ "${CTID:-}" ]] || exit "You need to set 'CTID' variable."
[[ "${PCT_OSTYPE:-}" ]] || exit "You need to set 'PCT_OSTYPE' variable."
# Test if ID is valid
[ "$CTID" -ge "100" ] || exit "ID cannot be less than 100."
# Test if ID is in use
if pct status $CTID &>/dev/null; then
echo -e "ID '$CTID' is already in use."
unset CTID
exit "Cannot use ID that is already in use."
fi
# Get template storage
TEMPLATE_STORAGE=$(select_storage template) || exit
msg_ok "Using ${BL}$TEMPLATE_STORAGE${CL} ${GN}for Template Storage."
# Get container storage
CONTAINER_STORAGE=$(select_storage container) || exit
msg_ok "Using ${BL}$CONTAINER_STORAGE${CL} ${GN}for Container Storage."
# Update LXC template list
msg_info "Updating LXC Template List"
pveam update >/dev/null
msg_ok "Updated LXC Template List"
# Get LXC template string
TEMPLATE_SEARCH=${PCT_OSTYPE}-${PCT_OSVERSION:-}
mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($TEMPLATE_SEARCH.*\)/\1/p" | sort -t - -k 2 -V)
[ ${#TEMPLATES[@]} -gt 0 ] || exit "Unable to find a template when searching for '$TEMPLATE_SEARCH'."
TEMPLATE="${TEMPLATES[-1]}"
# Download LXC template if needed
if ! pveam list $TEMPLATE_STORAGE | grep -q $TEMPLATE; then
msg_info "Downloading LXC Template"
pveam download $TEMPLATE_STORAGE $TEMPLATE >/dev/null ||
exit "A problem occured while downloading the LXC template."
msg_ok "Downloaded LXC Template"
fi
# Combine all options
DEFAULT_PCT_OPTIONS=(
-arch $(dpkg --print-architecture))
PCT_OPTIONS=(${PCT_OPTIONS[@]:-${DEFAULT_PCT_OPTIONS[@]}})
[[ " ${PCT_OPTIONS[@]} " =~ " -rootfs " ]] || PCT_OPTIONS+=(-rootfs $CONTAINER_STORAGE:${PCT_DISK_SIZE:-8})
# Create container
msg_info "Creating LXC Container"
pct create $CTID ${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE} ${PCT_OPTIONS[@]} >/dev/null ||
exit "A problem occured while trying to create container."
msg_ok "LXC Container ${BL}$CTID${CL} ${GN}was successfully created."
================================================
FILE: ct/cronicle.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______ _ __
/ ____/________ ____ (_)____/ /__
/ / / ___/ __ \/ __ \/ / ___/ / _ \
/ /___/ / / /_/ / / / / / /__/ / __/
\____/_/ \____/_/ /_/_/\___/_/\___/
EOF
}
header_info
echo -e "Loading..."
APP="Cronicle"
var_disk="2"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 2 \
"1" "Update ${APP}" ON \
"2" "Install ${APP} Worker" OFF \
3>&1 1>&2 2>&3)
if [ "$UPD" == "1" ]; then
header_info
if [[ ! -d /opt/cronicle ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then
if ! command -v npm >/dev/null 2>&1; then
echo "Installing NPM..."
apt-get install -y npm >/dev/null 2>&1
echo "Installed NPM..."
fi
fi
msg_info "Updating ${APP}"
/opt/cronicle/bin/control.sh upgrade &>/dev/null
msg_ok "Updated ${APP}"
exit
fi
if [ "$UPD" == "2" ]; then
if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then
if ! command -v npm >/dev/null 2>&1; then
echo "Installing NPM..."
apt-get install -y npm >/dev/null 2>&1
echo "Installed NPM..."
fi
fi
LATEST=$(curl -sL https://api.github.com/repos/jhuckaby/Cronicle/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
IP=$(hostname -I | awk '{print $1}')
msg_info "Installing Dependencies"
apt-get install -y git &>/dev/null
apt-get install -y make &>/dev/null
apt-get install -y g++ &>/dev/null
apt-get install -y gcc &>/dev/null
apt-get install -y ca-certificates &>/dev/null
apt-get install -y gnupg &>/dev/null
msg_ok "Installed Dependencies"
msg_info "Setting up Node.js Repository"
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
msg_ok "Set up Node.js Repository"
msg_info "Installing Node.js"
apt-get update &>/dev/null
apt-get install -y nodejs &>/dev/null
msg_ok "Installed Node.js"
msg_info "Installing Cronicle Worker"
mkdir -p /opt/cronicle
cd /opt/cronicle
tar zxvf <(curl -fsSL https://github.com/jhuckaby/Cronicle/archive/${LATEST}.tar.gz) --strip-components 1 &>/dev/null
npm install &>/dev/null
node bin/build.js dist &>/dev/null
sed -i "s/localhost:3012/${IP}:3012/g" /opt/cronicle/conf/config.json
/opt/cronicle/bin/control.sh start &>/dev/null
cp /opt/cronicle/bin/cronicled.init /etc/init.d/cronicled &>/dev/null
chmod 775 /etc/init.d/cronicled
update-rc.d cronicled defaults &>/dev/null
msg_ok "Installed Cronicle Worker"
echo -e "\n Add Masters secret key to /opt/cronicle/conf/config.json \n"
exit
fi
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} Primary should be reachable by going to the following URL.
${BL}http://${IP}:3012${CL} \n"
================================================
FILE: ct/daemonsync.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
____ _____
/ __ \____ ____ ____ ___ ____ ____ / ___/__ ______ _____
/ / / / __ / _ \/ __ __ \/ __ \/ __ \ \__ \/ / / / __ \/ ___/
/ /_/ / /_/ / __/ / / / / / /_/ / / / / ___/ / /_/ / / / / /__
/_____/\__,_/\___/_/ /_/ /_/\____/_/ /_/ /____/\__, /_/ /_/\___/
/____/
EOF
}
header_info
echo -e "Loading..."
APP="Daemon Sync"
var_disk="8"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating $APP LXC"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated $APP LXC"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:8084${CL} \n"
================================================
FILE: ct/dashy.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
____ __
/ __ \____ ______/ /_ __ __
/ / / / __ / ___/ __ \/ / / /
/ /_/ / /_/ (__ ) / / / /_/ /
/_____/\__,_/____/_/ /_/\__, /
/____/
EOF
}
header_info
echo -e "Loading..."
APP="Dashy"
var_disk="6"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/dashy/public/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
RELEASE=$(curl -sL https://api.github.com/repos/Lissy93/dashy/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Stopping ${APP}"
systemctl stop dashy
msg_ok "Stopped ${APP}"
msg_info "Backing up conf.yml"
cd ~
if [[ -f /opt/dashy/public/conf.yml ]]; then
cp -R /opt/dashy/public/conf.yml conf.yml
else
cp -R /opt/dashy/user-data/conf.yml conf.yml
fi
msg_ok "Backed up conf.yml"
msg_info "Updating ${APP} to ${RELEASE}"
rm -rf /opt/dashy
mkdir -p /opt/dashy
wget -qO- https://github.com/Lissy93/dashy/archive/refs/tags/${RELEASE}.tar.gz | tar -xz -C /opt/dashy --strip-components=1
cd /opt/dashy
npm install
npm run build
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Restoring conf.yml"
cd ~
cp -R conf.yml /opt/dashy/user-data
msg_ok "Restored conf.yml"
msg_info "Cleaning"
rm -rf conf.yml /opt/dashy/public/conf.yml
msg_ok "Cleaned"
msg_info "Starting Dashy"
systemctl start dashy
msg_ok "Started Dashy"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:4000${CL} \n"
================================================
FILE: ct/debian.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
____ __ _
/ __ \___ / /_ (_)___ ____
/ / / / _ \/ __ \/ / __ `/ __ \
/ /_/ / __/ /_/ / / /_/ / / / /
/_____/\___/_.___/_/\__,_/_/ /_/
EOF
}
header_info
echo -e "Loading..."
APP="Debian"
var_disk="2"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating $APP LXC"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated $APP LXC"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
================================================
FILE: ct/deconz.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
__ __________ _ _______
____/ /__ / ____/ __ \/ | / /__ /
/ __ / _ \/ / / / / / |/ / / /
/ /_/ / __/ /___/ /_/ / /| / / /__
\__,_/\___/\____/\____/_/ |_/ /____/
EOF
}
header_info
echo -e "Loading..."
APP="deCONZ"
var_disk="4"
var_cpu="2"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="0"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /etc/apt/sources.list.d/deconz.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating $APP LXC"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated $APP LXC"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}${CL}\n"
================================================
FILE: ct/deluge.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
____ __
/ __ \___ / /_ ______ ____
/ / / / _ \/ / / / / __ `/ _ \
/ /_/ / __/ / /_/ / /_/ / __/
/_____/\___/_/\__,_/\__, /\___/
/____/
EOF
}
header_info
echo -e "Loading..."
APP="Deluge"
var_disk="4"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /etc/systemd/system/deluged.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating $APP LXC"
apt-get update &>/dev/null
pip3 install deluge[all] --upgrade
msg_ok "Updated $APP LXC"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:8112${CL} \n"
================================================
FILE: ct/docker.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
____ __
/ __ \____ _____/ /_ __ _____
/ / / / __ \/ ___/ //_/ _ \/ ___/
/ /_/ / /_/ / /__/ ,< / __/ /
/_____/\____/\___/_/|_|\___/_/
EOF
}
header_info
echo -e "Loading..."
APP="Docker"
var_disk="4"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating ${APP} LXC"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated ${APP} LXC"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
================================================
FILE: ct/dockge.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
____ __
/ __ \____ _____/ /______ ____
/ / / / __ \/ ___/ //_/ __ `/ _ \
/ /_/ / /_/ / /__/ ,< / /_/ / __/
/_____/\____/\___/_/|_|\__, /\___/
/____/
EOF
}
header_info
echo -e "Loading..."
APP="Dockge"
var_disk="18"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/dockge ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating ${APP}"
cd /opt/dockge
docker compose pull
docker compose up -d
msg_ok "Updated ${APP}"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:5001${CL} \n"
================================================
FILE: ct/emby.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______ __
/ ____/___ ___ / /_ __ __
/ __/ / __ __ \/ __ \/ / / /
/ /___/ / / / / / /_/ / /_/ /
/_____/_/ /_/ /_/_.___/\__, /
/____/
EOF
}
header_info
echo -e "Loading..."
APP="Emby"
var_disk="8"
var_cpu="2"
var_ram="2048"
var_os="ubuntu"
var_version="22.04"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/emby-server ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
LATEST=$(curl -sL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
msg_info "Stopping ${APP}"
systemctl stop emby-server
msg_ok "Stopped ${APP}"
msg_info "Updating ${APP}"
wget https://github.com/MediaBrowser/Emby.Releases/releases/download/${LATEST}/emby-server-deb_${LATEST}_amd64.deb &>/dev/null
dpkg -i emby-server-deb_${LATEST}_amd64.deb &>/dev/null
rm emby-server-deb_${LATEST}_amd64.deb
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}"
systemctl start emby-server
msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:8096${CL}\n"
================================================
FILE: ct/emqx.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
________ _______ _ __
/ ____/ |/ / __ \ | |/ /
/ __/ / /|_/ / / / / | /
/ /___/ / / / /_/ / / |
/_____/_/ /_/\___\_\/_/|_|
EOF
}
header_info
echo -e "Loading..."
APP="EMQX"
var_disk="4"
var_cpu="2"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating $APP LXC"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated $APP LXC"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} Setup should be reachable by going to the following URL.
${BL}http://${IP}:18083${CL} \n"
================================================
FILE: ct/ersatztv.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck
# Co-Author: MickLesk (Canbiz)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
# Source: https://github.com/ErsatzTV/ErsatzTV/
function header_info {
clear
cat <<"EOF"
______ __ _______ __
/ ____/_____________ _/ /_____/_ __/ | / /
/ __/ / ___/ ___/ __ `/ __/_ / / / | | / /
/ /___/ / (__ ) /_/ / /_ / /_/ / | |/ /
/_____/_/ /____/\__,_/\__/ /___/_/ |___/
EOF
}
header_info
echo -e "Loading..."
APP="ErsatzTV"
var_disk="5"
var_cpu="1"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/ErsatzTV ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Stopping ErsatzTV"
systemctl stop ersatzTV
msg_ok "Stopped ErsatzTV"
msg_info "Updating ErsatzTV"
RELEASE=$(curl -s https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1)
cp -R /opt/ErsatzTV/ ErsatzTV-backup
rm ErsatzTV-backup/ErsatzTV
rm -rf /opt/ErsatzTV
wget -qO- "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-x64.tar.gz" | tar -xz -C /opt
mv "/opt/ErsatzTV-${RELEASE}-linux-x64" /opt/ErsatzTV
cp -R ErsatzTV-backup/* /opt/ErsatzTV/
rm -rf ErsatzTV-backup
msg_ok "Updated ErsatzTV"
msg_info "Starting ErsatzTV"
systemctl start ersatzTV
msg_ok "Started ErsatzTV"
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} Setup should be reachable by going to the following URL.
${BL}http://${IP}:8409${CL} \n"
================================================
FILE: ct/esphome.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___________ ____ __ __
/ ____/ ___// __ \/ / / /___ ____ ___ ___
/ __/ \__ \/ /_/ / /_/ / __ \/ __ `__ \/ _ \
/ /___ ___/ / ____/ __ / /_/ / / / / / / __/
/_____//____/_/ /_/ /_/\____/_/ /_/ /_/\___/
EOF
}
header_info
echo -e "Loading..."
APP="ESPHome"
var_disk="4"
var_cpu="2"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /etc/systemd/system/esphomeDashboard.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Stopping ESPHome"
systemctl stop esphomeDashboard
msg_ok "Stopped ESPHome"
msg_info "Updating ESPHome"
if [[ -d /srv/esphome ]]; then
source /srv/esphome/bin/activate &>/dev/null
fi
pip3 install -U esphome &>/dev/null
msg_ok "Updated ESPHome"
msg_info "Starting ESPHome"
systemctl start esphomeDashboard
msg_ok "Started ESPHome"
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:6052${CL} \n"
================================================
FILE: ct/evcc.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: MickLesk (Canbiz)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___ _ ____________
/ _ \ | / / ___/ ___/
/ __/ |/ / /__/ /__
\___/|___/\___/\___/
EOF
}
header_info
echo -e "Loading..."
APP="evcc"
var_disk="4"
var_cpu="1"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /etc/apt/sources.list.d/evcc-stable.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating evcc LXC"
apt update &>/dev/null
apt --only-upgrade install -y evcc &>/dev/null
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} Setup should be reachable by going to the following URL.
${BL}http://${IP}:7070${CL} \n"
================================================
FILE: ct/fenrus.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# Co-Author: Scorpoon
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______
/ ____/__ ____ _______ _______
/ /_ / _ \/ __ \/ ___/ / / / ___/
/ __/ / __/ / / / / / /_/ (__ )
/_/ \___/_/ /_/_/ \__,_/____/
EOF
}
header_info
echo -e "Loading..."
APP="Fenrus"
var_disk="4"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/${APP} ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_error "There is currently no update path available."
exit
msg_info "Updating ${APP}"
systemctl stop ${APP}
git clone https://github.com/revenz/Fenrus.git
cd Fenrus || exit
gitVersionNumber=$(git rev-parse HEAD)
if [[ "${gitVersionNumber}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
mkdir /opt/fenrus-data-backup
cp -r "/opt/${APP}/data/" /opt/fenrus-data-backup/data
if [[ ! -d /opt/fenrus-data-backup/data ]]; then msg_error "Backup of data folder failed! exiting..."; rm -r /opt/fenrus-data-backup/; exit; fi
export DOTNET_CLI_TELEMETRY_OPTOUT=1
dotnet publish -c Release -o "/opt/${APP}/" Fenrus.csproj
cp -r /opt/fenrus-data-backup/data/ "/opt/${APP}/"
echo "${gitVersionNumber}" >"/opt/${APP}_version.txt"
rm -r /opt/fenrus-data-backup/
msg_ok "Updated $APP"
else
msg_ok "No update required. ${APP} is already up to date"
fi
cd ..
rm -r Fenrus/
systemctl start ${APP}
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:5000${CL} \n"
================================================
FILE: ct/fhem.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
________
/ ____/ /_ ___ ____ ___
/ /_ / __ \/ _ \/ __ `__ \
/ __/ / / / / __/ / / / / /
/_/ /_/ /_/\___/_/ /_/ /_/
EOF
}
header_info
echo -e "Loading..."
APP="Fhem"
var_disk="8"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /etc/systemd/system/fhem.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating ${APP} LXC"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:8083${CL} \n"
================================================
FILE: ct/flaresolverr.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# Co-Author: remz1337
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
________ _____ __
/ ____/ /___ _________ / ___/____ / / _____ __________
/ /_ / / __ `/ ___/ _ \\__ \/ __ \/ / | / / _ \/ ___/ ___/
/ __/ / / /_/ / / / __/__/ / /_/ / /| |/ / __/ / / /
/_/ /_/\__,_/_/ \___/____/\____/_/ |___/\___/_/ /_/
EOF
}
header_info
echo -e "Loading..."
APP="FlareSolverr"
var_disk="4"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /etc/systemd/system/flaresolverr.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "SET RESOURCES" "Please set the resources in your ${APP} LXC to ${var_cpu}vCPU and ${var_ram}RAM for the build process before continuing" 10 75
RELEASE=$(wget -q https://github.com/FlareSolverr/FlareSolverr/releases/latest -O - | grep "title>Release" | cut -d " " -f 4)
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Updating $APP LXC"
systemctl stop flaresolverr
wget -q https://github.com/FlareSolverr/FlareSolverr/releases/download/$RELEASE/flaresolverr_linux_x64.tar.gz
tar -xzf flaresolverr_linux_x64.tar.gz -C /opt
rm flaresolverr_linux_x64.tar.gz
systemctl start flaresolverr
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP LXC"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start
build_container
description
msg_info "Setting Container to Normal Resources"
pct set $CTID -memory 512
pct set $CTID -cores 1
msg_ok "Set Container to Normal Resources"
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:8191${CL} \n"
================================================
FILE: ct/flowiseai.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
________ _ ___ ____
/ ____/ /___ _ __(_)_______ / | / _/
/ /_ / / __ \ | /| / / / ___/ _ \/ /| | / /
/ __/ / / /_/ / |/ |/ / (__ ) __/ ___ |_/ /
/_/ /_/\____/|__/|__/_/____/\___/_/ |_/___/
EOF
}
header_info
echo -e "Loading..."
APP="FlowiseAI"
var_disk="10"
var_cpu="4"
var_ram="4096"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /etc/systemd/system/flowise.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "SET RESOURCES" "Please set the resources in your ${APP} LXC to ${var_cpu}vCPU and ${var_ram}RAM for the build process before continuing" 10 75
msg_info "Updating ${APP}"
systemctl stop flowise
npm install -g flowise --upgrade
systemctl start flowise
msg_ok "Updated ${APP}"
exit
}
start
build_container
description
msg_info "Setting Container to Normal Resources"
pct set $CTID -memory 2048
pct set $CTID -cores 2
msg_ok "Set Container to Normal Resources"
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:3000${CL} \n"
================================================
FILE: ct/forgejo.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______ _
/ ____/___ _________ ___ (_)___
/ /_ / __ \/ ___/ __ `/ _ \ / / __ \
/ __/ / /_/ / / / /_/ / __/ / / /_/ /
/_/ \____/_/ \__, /\___/_/ /\____/
/____/ /___/
EOF
}
header_info
echo -e "Loading..."
APP="Forgejo"
var_disk="10"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/forgejo ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Stopping ${APP}"
systemctl stop forgejo
msg_ok "Stopped ${APP}"
msg_info "Updating ${APP}"
RELEASE=$(curl -s https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest | grep -oP '"tag_name":\s*"\K[^"]+' | sed 's/^v//')
wget -qO forgejo-$RELEASE-linux-amd64 "https://codeberg.org/forgejo/forgejo/releases/download/v${RELEASE}/forgejo-${RELEASE}-linux-amd64"
rm -rf /opt/forgejo/*
cp -r forgejo-$RELEASE-linux-amd64 /opt/forgejo/forgejo-$RELEASE-linux-amd64
chmod +x /opt/forgejo/forgejo-$RELEASE-linux-amd64
ln -sf /opt/forgejo/forgejo-$RELEASE-linux-amd64 /usr/local/bin/forgejo
msg_ok "Updated ${APP}"
msg_info "Cleaning"
rm -rf forgejo-$RELEASE-linux-amd64
msg_ok "Cleaned"
msg_info "Starting ${APP}"
systemctl start forgejo
msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:3000${CL} \n"
================================================
FILE: ct/frigate.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Authors: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______ _ __
/ ____/____(_)___ _____ _/ /____
/ /_ / ___/ / __ `/ __ `/ __/ _ \
/ __/ / / / / /_/ / /_/ / /_/ __/
/_/ /_/ /_/\__, /\__,_/\__/\___/
/____/
EOF
}
header_info
echo -e "Loading..."
APP="Frigate"
var_disk="20"
var_cpu="4"
var_ram="4096"
var_os="debian"
var_version="11"
variables
color
catch_errors
function default_settings() {
CT_TYPE="0"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
if [[ ! -f /etc/systemd/system/frigate.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_error "To update Frigate, create a new container and transfer your configuration."
exit
}
start
build_container
description
msg_info "Setting Container to Normal Resources"
pct set $CTID -memory 1024
msg_ok "Set Container to Normal Resources"
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:5000${CL} \n"
echo -e "go2rtc should be reachable by going to the following URL.
${BL}http://${IP}:1984${CL} \n"
================================================
FILE: ct/gitea.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# Co-author: Rogue-King
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______ _ __
/ ____/(_)/ /____ ____ _
/ / __// // __/ _ \/ __ /
/ /_/ // // /_/ __/ /_/ /
\____//_/ \__/\___/\__,_/
EOF
}
header_info
echo -e "Loading..."
APP="Gitea"
var_disk="8"
var_cpu="1"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /usr/local/bin/gitea ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
RELEASE=$(wget -q https://github.com/go-gitea/gitea/releases/latest -O - | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
msg_info "Updating $APP to ${RELEASE}"
wget -q https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64
systemctl stop gitea
rm -rf /usr/local/bin/gitea
mv gitea* /usr/local/bin/gitea
chmod +x /usr/local/bin/gitea
systemctl start gitea
msg_ok "Updated $APP Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:3000${CL} \n"
================================================
FILE: ct/go2rtc.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
___ __
____ _____ |__ \ _____/ /______
/ __ `/ __ \__/ // ___/ __/ ___/
/ /_/ / /_/ / __// / / /_/ /__
\__, /\____/____/_/ \__/\___/
/____/
EOF
}
header_info
echo -e "Loading..."
APP="go2rtc"
var_disk="4"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/go2rtc ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating $APP"
systemctl stop go2rtc
cd /opt/go2rtc
rm go2rtc_linux_amd64
wget -q https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64
chmod +x go2rtc_linux_amd64
systemctl start go2rtc
msg_ok "Updated $APP"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:1984${CL} \n"
================================================
FILE: ct/gokapi.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______ __ _
/ ____/___ / /______ _____ (_)
/ / __/ __ \/ //_/ __ `/ __ \/ /
/ /_/ / /_/ / ,< / /_/ / /_/ / /
\____/\____/_/|_|\__,_/ .___/_/
/_/
EOF
}
header_info
echo -e "Loading..."
APP="Gokapi"
var_disk="4"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/gokapi ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_error "There is currently no update path available."
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} Setup should be reachable by going to the following URL.
${BL}http://${IP}:53842/setup${CL} \n"
================================================
FILE: ct/gotify.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______ __ _ ____
/ ____/___ / /_(_) __/_ __
/ / __/ __ \/ __/ / /_/ / / /
/ /_/ / /_/ / /_/ / __/ /_/ /
\____/\____/\__/_/_/ \__, /
/____/
EOF
}
header_info
echo -e "Loading..."
APP="Gotify"
var_disk="2"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/gotify ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
RELEASE=$(curl -s https://api.github.com/repos/gotify/server/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP}"
systemctl stop gotify
msg_ok "Stopped ${APP}"
msg_info "Updating ${APP} to ${RELEASE}"
cd /opt/gotify
wget -q https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-linux-amd64.zip
unzip -oq gotify-linux-amd64.zip
rm -rf gotify-linux-amd64.zip
chmod +x gotify-linux-amd64
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting ${APP}"
systemctl start gotify
msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP} ${CL} \n"
================================================
FILE: ct/grafana.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
______ ____
/ ____/________ _/ __/___ _____ ____ _
/ / __/ ___/ __ / /_/ __ / __ \/ __ /
/ /_/ / / / /_/ / __/ /_/ / / / / /_/ /
\____/_/ \__,_/_/ \__,_/_/ /_/\__,_/
EOF
}
header_info
echo -e "Loading..."
APP="Grafana"
var_disk="2"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /etc/apt/sources.list.d/grafana.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating ${APP}"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:3000${CL} \n"
================================================
FILE: ct/grocy.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
____ __________ _______ __
/ __ / ___/ __ \/ ___/ / / /
/ /_/ / / / /_/ / /__/ /_/ /
\__, /_/ \____/\___/\__, /
/____/ /____/
EOF
}
header_info
echo -e "Loading..."
APP="grocy"
var_disk="2"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /etc/apache2/sites-available/grocy.conf ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
php_version=$(php -v | head -n 1 | awk '{print $2}')
if [[ ! $php_version == "8.3"* ]]; then
msg_info "Updating PHP"
curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ bookworm main" >/etc/apt/sources.list.d/php.list
apt-get update
apt-get install -y php8.3 php8.3-cli php8.3-{bz2,curl,mbstring,intl,sqlite3,fpm,gd,zip,xml}
systemctl reload apache2
apt autoremove
msg_ok "Updated PHP"
fi
msg_info "Updating ${APP}"
bash /var/www/html/update.sh
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}${CL} \n"
================================================
FILE: ct/headscale.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
__ __ __ __
/ / / /__ ____ _____/ /_____________ _/ /__
/ /_/ / _ \/ __ `/ __ / ___/ ___/ __ `/ / _ \
/ __ / __/ /_/ / /_/ (__ ) /__/ /_/ / / __/
/_/ /_/\___/\__,_/\__,_/____/\___/\__,_/_/\___/
EOF
}
header_info
echo -e "Loading..."
APP="Headscale"
var_disk="2"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /etc/headscale ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
RELEASE=$(curl -s https://api.github.com/repos/juanfont/headscale/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Stopping ${APP}"
systemctl stop headscale
msg_ok "Stopped ${APP}"
msg_info "Updating $APP to v${RELEASE}"
wget -q https://github.com/juanfont/headscale/releases/download/v${RELEASE}/headscale_${RELEASE}_linux_amd64.deb
dpkg -i headscale_${RELEASE}_linux_amd64.deb
rm headscale_${RELEASE}_linux_amd64.deb
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to ${RELEASE}"
msg_info "Starting ${APP}"
systemctl start headscale
msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
================================================
FILE: ct/heimdall-dashboard.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
_ _ _ _ ___ _ _ _
/\ /\___(_)_ __ ___ __| | __ _| | | / \__ _ ___| |__ | |__ ___ __ _ _ __ __| |
/ /_/ / _ \ | '_ ` _ \ / _` |/ _` | | | / /\ / _` / __| '_ \| '_ \ / _ \ / _` | '__/ _` |
/ __ / __/ | | | | | | (_| | (_| | | | / /_// (_| \__ \ | | | |_) | (_) | (_| | | | (_| |
\/ /_/ \___|_|_| |_| |_|\__,_|\__,_|_|_| /___,' \__,_|___/_| |_|_.__/ \___/ \__,_|_| \__,_|
EOF
}
header_info
echo -e "Loading..."
APP="Heimdall-Dashboard"
var_disk="2"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/Heimdall ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
RELEASE=$(curl -sX GET "https://api.github.com/repos/linuxserver/Heimdall/releases/latest" | awk '/tag_name/{print $4;exit}' FS='[""]')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Stopping ${APP}"
systemctl stop heimdall
sleep 1
msg_ok "Stopped ${APP}"
msg_info "Backing up Data"
cp -R /opt/Heimdall/database database-backup
cp -R /opt/Heimdall/public public-backup
sleep 1
msg_ok "Backed up Data"
msg_info "Updating Heimdall Dashboard to ${RELEASE}"
wget -q https://github.com/linuxserver/Heimdall/archive/${RELEASE}.tar.gz
tar xzf ${RELEASE}.tar.gz
VER=$(curl -s https://api.github.com/repos/linuxserver/Heimdall/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
cp -R Heimdall-${VER}/* /opt/Heimdall
cd /opt/Heimdall
apt-get install -y composer &>/dev/null
COMPOSER_ALLOW_SUPERUSER=1 composer dump-autoload &>/dev/null
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated Heimdall Dashboard to ${RELEASE}"
msg_info "Restoring Data"
cd ~
cp -R database-backup/* /opt/Heimdall/database
cp -R public-backup/* /opt/Heimdall/public
sleep 1
msg_ok "Restored Data"
msg_info "Cleanup"
rm -rf {${RELEASE}.tar.gz,Heimdall-${VER},public-backup,database-backup,Heimdall}
sleep 1
msg_ok "Cleaned"
msg_info "Starting ${APP}"
systemctl start heimdall.service
sleep 2
msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}."
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:7990${CL} \n"
================================================
FILE: ct/hivemq.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
__ ___ __ _______ ____________
/ / / (_) _____ / |/ / __ \ / ____/ ____/
/ /_/ / / | / / _ \/ /|_/ / / / / / / / __/
/ __ / /| |/ / __/ / / / /_/ / / /___/ /___
/_/ /_/_/ |___/\___/_/ /_/\___\_\ \____/_____/
EOF
}
header_info
echo -e "Loading..."
APP="HiveMQ"
var_disk="4"
var_cpu="1"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_error "There is currently no update path available."
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
================================================
FILE: ct/homarr.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
__ __
/ / / /___ ____ ___ ____ ___________
/ /_/ / __ \/ __ `__ \/ __ `/ ___/ ___/
/ __ / /_/ / / / / / / /_/ / / / /
/_/ /_/\____/_/ /_/ /_/\__,_/_/ /_/
EOF
}
header_info
echo -e "Loading..."
APP="Homarr"
var_disk="8"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/homarr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating $APP (Patience)"
systemctl stop homarr
cd /opt/homarr
if ! git pull; then
echo "Already up to date."
systemctl start homarr
echo "No update required."
exit
fi
yarn install
yarn build
systemctl start homarr
msg_ok "Updated $APP"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:3000${CL} \n"
================================================
FILE: ct/homeassistant-core.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
_ _ _ _ ___
/\ /\___ _ __ ___ ___ /_\ ___ ___(_)___| |_ __ _ _ __ | |_ / __\___ _ __ ___
/ /_/ / _ \| '_ ` _ \ / _ \ //_\\/ __/ __| / __| __/ _` | '_ \| __| / / / _ \| '__/ _ \
/ __ / (_) | | | | | | __/ / _ \__ \__ \ \__ \ || (_| | | | | |_ / /__| (_) | | | __/
\/ /_/ \___/|_| |_| |_|\___| \_/ \_/___/___/_|___/\__\__,_|_| |_|\__| \____/\___/|_| \___|
EOF
}
header_info
echo -e "Loading..."
APP="Home Assistant-Core"
var_disk="8"
var_cpu="2"
var_ram="1024"
var_os="ubuntu"
var_version="24.04"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
if [[ ! -d /srv/homeassistant ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
PY=$(ls /srv/homeassistant/lib/)
IP=$(hostname -I | awk '{print $1}')
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
"1" "Update Core" ON \
"2" "Install HACS" OFF \
"3" "Install FileBrowser" OFF \
3>&1 1>&2 2>&3)
header_info
if [ "$UPD" == "1" ]; then
if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SELECT BRANCH" --yesno "Use Beta Branch?" 10 58); then
clear
header_info
echo -e "${GN}Updating to Beta Version${CL}"
BR="--pre "
else
clear
header_info
echo -e "${GN}Updating to Stable Version${CL}"
BR=""
fi
if [[ "$PY" == "python3.11" ]]; then echo -e "⚠️ Home Assistant will soon require Python 3.12."; fi
msg_info "Stopping Home Assistant"
systemctl stop homeassistant
msg_ok "Stopped Home Assistant"
msg_info "Updating Home Assistant"
source /srv/homeassistant/bin/activate
uv pip install ${BR}--upgrade homeassistant &>/dev/null
msg_ok "Updated Home Assistant"
msg_info "Starting Home Assistant"
systemctl start homeassistant
sleep 2
msg_ok "Started Home Assistant"
msg_ok "Update Successful"
echo -e "\n Go to http://${IP}:8123 \n"
exit
fi
if [ "$UPD" == "2" ]; then
msg_info "Installing Home Assistant Community Store (HACS)"
apt update &>/dev/null
apt install unzip &>/dev/null
cd .homeassistant
bash <(curl -fsSL https://get.hacs.xyz) &>/dev/null
msg_ok "Installed Home Assistant Community Store (HACS)"
echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n"
exit
fi
if [ "$UPD" == "3" ]; then
set +Eeuo pipefail
read -r -p "Would you like to use No Authentication? <y/N> " prompt
msg_info "Installing FileBrowser"
RELEASE=$(curl -fsSL https://api.github.com/repos/filebrowser/filebrowser/releases/latest | grep -o '"tag_name": ".*"' | sed 's/"//g' | sed 's/tag_name: //g')
curl -fsSL https://github.com/filebrowser/filebrowser/releases/download/$RELEASE/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin &>/dev/null
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
filebrowser config init -a '0.0.0.0' &>/dev/null
filebrowser config set -a '0.0.0.0' &>/dev/null
filebrowser config set --auth.method=noauth &>/dev/null
filebrowser users add ID 1 --perm.admin &>/dev/null
else
filebrowser config init -a '0.0.0.0' &>/dev/null
filebrowser config set -a '0.0.0.0' &>/dev/null
filebrowser users add admin helper-scripts.com --perm.admin &>/dev/null
fi
msg_ok "Installed FileBrowser"
msg_info "Creating Service"
service_path="/etc/systemd/system/filebrowser.service"
echo "[Unit]
Description=Filebrowser
After=network-online.target
[Service]
User=root
WorkingDirectory=/root/
ExecStart=/usr/local/bin/filebrowser -r /root/.homeassistant
[Install]
WantedBy=default.target" >$service_path
systemctl enable --now -q filebrowser.service
msg_ok "Created Service"
msg_ok "Completed Successfully!\n"
echo -e "FileBrowser should be reachable by going to the following URL.
${BL}http://$IP:8080${CL} admin|helper-scripts.com\n"
exit
fi
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:8123${CL}"
================================================
FILE: ct/homeassistant.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
__ __ ___ _ __ __
/ / / /___ ____ ___ ___ / | __________(_)____/ /_____ _____ / /_
/ /_/ / __ \/ __ __ \/ _ \ / /| | / ___/ ___/ / ___/ __/ __ / __ \/ __/
/ __ / /_/ / / / / / / __/ / ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_
/_/ /_/\____/_/ /_/ /_/\___/ /_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/
EOF
}
header_info
echo -e "Loading..."
APP="Home Assistant"
var_disk="16"
var_cpu="2"
var_ram="2048"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
if [[ ! -d /var/lib/docker/volumes/hass_config/_data ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
"1" "Update ALL Containers" ON \
"2" "Remove ALL Unused Images" OFF \
"3" "Install HACS" OFF \
"4" "Install FileBrowser" OFF \
3>&1 1>&2 2>&3)
header_info
if [ "$UPD" == "1" ]; then
msg_info "Updating All Containers"
CONTAINER_LIST="${1:-$(docker ps -q)}"
for container in ${CONTAINER_LIST}; do
CONTAINER_IMAGE="$(docker inspect --format "{{.Config.Image}}" --type container ${container})"
RUNNING_IMAGE="$(docker inspect --format "{{.Image}}" --type container "${container}")"
docker pull "${CONTAINER_IMAGE}"
LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")"
if [[ "${RUNNING_IMAGE}" != "${LATEST_IMAGE}" ]]; then
echo "Updating ${container} image ${CONTAINER_IMAGE}"
DOCKER_COMMAND="$(runlike "${container}")"
docker rm --force "${container}"
eval ${DOCKER_COMMAND}
fi
done
msg_ok "Updated All Containers"
exit
fi
if [ "$UPD" == "2" ]; then
msg_info "Removing ALL Unused Images"
docker image prune -af
msg_ok "Removed ALL Unused Images"
exit
fi
if [ "$UPD" == "3" ]; then
msg_info "Installing Home Assistant Community Store (HACS)"
apt update &>/dev/null
apt install unzip &>/dev/null
cd /var/lib/docker/volumes/hass_config/_data
bash <(curl -fsSL https://get.hacs.xyz) &>/dev/null
msg_ok "Installed Home Assistant Community Store (HACS)"
echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n"
exit
fi
if [ "$UPD" == "4" ]; then
IP=$(hostname -I | awk '{print $1}')
msg_info "Installing FileBrowser"
RELEASE=$(curl -fsSL https://api.github.com/repos/filebrowser/filebrowser/releases/latest | grep -o '"tag_name": ".*"' | sed 's/"//g' | sed 's/tag_name: //g')
curl -fsSL https://github.com/filebrowser/filebrowser/releases/download/v2.23.0/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin &>/dev/null
filebrowser config init -a '0.0.0.0' &>/dev/null
filebrowser config set -a '0.0.0.0' &>/dev/null
filebrowser users add admin helper-scripts.com --perm.admin &>/dev/null
msg_ok "Installed FileBrowser"
msg_info "Creating Service"
service_path="/etc/systemd/system/filebrowser.service"
echo "[Unit]
Description=Filebrowser
After=network-online.target
[Service]
User=root
WorkingDirectory=/root/
ExecStart=/usr/local/bin/filebrowser -r /
[Install]
WantedBy=default.target" >$service_path
systemctl enable --now filebrowser.service &>/dev/null
msg_ok "Created Service"
msg_ok "Completed Successfully!\n"
echo -e "FileBrowser should be reachable by going to the following URL.
${BL}http://$IP:8080${CL} admin|helper-scripts.com\n"
exit
fi
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:8123${CL}
Portainer should be reachable by going to the following URL.
${BL}https://${IP}:9443${CL}\n"
================================================
FILE: ct/homebox.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck
# Co-Author: MickLesk (Canbiz)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
__ __ ____
/ / / /___ ____ ___ ___ / __ )____ _ __
/ /_/ / __ \/ __ `__ \/ _ \/ __ / __ \| |/_/
/ __ / /_/ / / / / / / __/ /_/ / /_/ /> <
/_/ /_/\____/_/ /_/ /_/\___/_____/\____/_/|_|
EOF
}
header_info
echo -e "Loading..."
APP="HomeBox"
var_disk="4"
var_cpu="1"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /opt/homebox ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
fi
RELEASE=$(curl -s https://api.github.com/repos/sysadminsmedia/homebox/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP}"
systemctl stop homebox
msg_ok "${APP} Stopped"
msg_info "Updating ${APP} to ${RELEASE}"
cd /opt
rm -rf homebox_bak
mv homebox homebox_bak
wget -qO- https://github.com/sysadminsmedia/homebox/releases/download/${RELEASE}/homebox_Linux_x86_64.tar.gz | tar -xzf - -C /opt
chmod +x /opt/homebox
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated Homebox"
msg_info "Starting ${APP}"
systemctl start homebox
msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} Setup should be reachable by going to the following URL.
${BL}http://${IP}:7745${CL} \n"
================================================
FILE: ct/homebridge.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
__ ______ __ _____________ ____ ________ ____________
/ / / / __ \/ |/ / ____/ __ )/ __ \/ _/ __ \/ ____/ ____/
/ /_/ / / / / /|_/ / __/ / __ / /_/ // // / / / / __/ __/
/ __ / /_/ / / / / /___/ /_/ / _, _// // /_/ / /_/ / /___
/_/ /_/\____/_/ /_/_____/_____/_/ |_/___/_____/\____/_____/
EOF
}
header_info
echo -e "Loading..."
APP="Homebridge"
var_disk="4"
var_cpu="1"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -f /etc/apt/sources.list.d/homebridge.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating ${APP} LXC"
apt-get update &>/dev/null
apt-get install -y homebridge &>/dev/null
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL.
${BL}http://${IP}:8581${CL} \n"
================================================
FILE: ct/homepage.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
__ __
/ / / /___ ____ ___ ___ ____ ____ _____ ____
/ /_/ / __ \/ __ `__ \/ _ \/ __ \/ __ `/ __ `/ _ \
/ __ / /_/ / / / / / / __/ /_/ / /_/ / /_/ / __/
/_/ /_/\____/_/ /_/ /_/\___/ .___/\__,_/\__, /\___/
/_/ /____/
EOF
}
header_info
echo -e "Loading..."
APP="Homepage"
var_disk="3"
var_cpu="2"
var_ram="1024"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/homepage ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then
if ! command -v npm >/dev/null 2>&1; then
echo "Installing NPM..."
apt-get install -y npm >/dev/null 2>&1
npm install -g pnpm >/dev/null 2>&1
echo "Installed NPM..."
fi
fi
RELEASE=$(curl -s https://api.github.com/repos/gethomepage/homepage/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Updating Homepage to v${RELEASE} (Patience)"
systemctl stop homepage
wget -q https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz
tar -xzf v${RELEASE}.tar.gz
rm -rf v${RELEASE}.tar.gz
cp -r homepage-${RELEASE}/* /opt/homepage/
rm -rf homepage-${RELEASE}
cd /opt/homepage
npx update-browserslist-db@latest
pnpm install
pnpm build
systemctl start homepage
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated Homepage to v${RELEASE}"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${APP} Setup should be reachable by going to the following URL.
${BL}http://${IP}:3000${CL} \n"
================================================
FILE: ct/homer.sh
================================================
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
clear
cat <<"EOF"
__ __
/ / / /___ ____ ___ ___ _____
/ /_/ / __ \/ __ `__ \/ _ \/ ___/
/ __ / /_/ / / / / / / __/ /
/_/ /_/\____/_/ /_/ /_/\___/_/
EOF
}
header_info
echo -e "Loading..."
APP="Homer"
var_disk="2"
var_cpu="1"
var_ram="512"
var_os="debian"
var_version="12"
variables
color
catch_errors
function default_settings() {
CT_TYPE="1"
PW=""
CT_ID=$NEXTID
HN=$NSAPP
DISK_SIZE="$var_disk"
CORE_COUNT="$var_cpu"
RAM_SIZE="$var_ram"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
VERB="no"
echo_default
}
function update_script() {
header_info
if [[ ! -d /opt/homer ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Stopping ${APP}"
systemctl stop homer
msg_ok "Stopped ${APP}"
msg_info "Backing up assets directory"
cd ~
mkdir -p assets-backup
cp -R /opt/homer/assets/. assets-backup
msg_ok "Backed up assets directory"
msg_info "Updating ${APP}"
rm -rf /opt/homer/*
cd /opt/homer
wget -q https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip
unzip homer.zip &>/dev/null
msg_ok "Updated ${APP}"
msg_info "Restoring assets directory"
cd ~
cp -Rf assets-backup/.
gitextract_ua0ju9th/
├── .github/
│ ├── CODE_OF_CONDUCT.md
│ ├── CONTRIBUTING.md
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yaml
│ │ └── config.yml
│ └── pull_request_template.md
├── CHANGELOG.md
├── CODE-AUDIT.md
├── LICENSE
├── README.md
├── USER_SUBMITTED_GUIDES.md
├── ct/
│ ├── actualbudget.sh
│ ├── adguard.sh
│ ├── adventurelog.sh
│ ├── agentdvr.sh
│ ├── alpine-docker.sh
│ ├── alpine-grafana.sh
│ ├── alpine-nextcloud.sh
│ ├── alpine-vaultwarden.sh
│ ├── alpine-zigbee2mqtt.sh
│ ├── alpine.sh
│ ├── apache-cassandra.sh
│ ├── apache-couchdb.sh
│ ├── apt-cacher-ng.sh
│ ├── archivebox.sh
│ ├── aria2.sh
│ ├── audiobookshelf.sh
│ ├── autobrr.sh
│ ├── bazarr.sh
│ ├── blocky.sh
│ ├── bunkerweb.sh
│ ├── caddy.sh
│ ├── calibre-web.sh
│ ├── casaos.sh
│ ├── changedetection.sh
│ ├── channels.sh
│ ├── cloudflared.sh
│ ├── cockpit.sh
│ ├── commafeed.sh
│ ├── create_lxc.sh
│ ├── cronicle.sh
│ ├── daemonsync.sh
│ ├── dashy.sh
│ ├── debian.sh
│ ├── deconz.sh
│ ├── deluge.sh
│ ├── docker.sh
│ ├── dockge.sh
│ ├── emby.sh
│ ├── emqx.sh
│ ├── ersatztv.sh
│ ├── esphome.sh
│ ├── evcc.sh
│ ├── fenrus.sh
│ ├── fhem.sh
│ ├── flaresolverr.sh
│ ├── flowiseai.sh
│ ├── forgejo.sh
│ ├── frigate.sh
│ ├── gitea.sh
│ ├── go2rtc.sh
│ ├── gokapi.sh
│ ├── gotify.sh
│ ├── grafana.sh
│ ├── grocy.sh
│ ├── headscale.sh
│ ├── heimdall-dashboard.sh
│ ├── hivemq.sh
│ ├── homarr.sh
│ ├── homeassistant-core.sh
│ ├── homeassistant.sh
│ ├── homebox.sh
│ ├── homebridge.sh
│ ├── homepage.sh
│ ├── homer.sh
│ ├── hyperhdr.sh
│ ├── hyperion.sh
│ ├── influxdb.sh
│ ├── iobroker.sh
│ ├── iventoy.sh
│ ├── jackett.sh
│ ├── jellyfin.sh
│ ├── jellyseerr.sh
│ ├── kavita.sh
│ ├── keycloak.sh
│ ├── kubo.sh
│ ├── lazylibrarian.sh
│ ├── lidarr.sh
│ ├── linkwarden.sh
│ ├── lldap.sh
│ ├── mafl.sh
│ ├── magicmirror.sh
│ ├── mariadb.sh
│ ├── matterbridge.sh
│ ├── mediamtx.sh
│ ├── medusa.sh
│ ├── memos.sh
│ ├── meshcentral.sh
│ ├── metube.sh
│ ├── mongodb.sh
│ ├── motioneye.sh
│ ├── mqtt.sh
│ ├── myspeed.sh
│ ├── mysql.sh
│ ├── n8n.sh
│ ├── navidrome.sh
│ ├── neo4j.sh
│ ├── nextcloudpi.sh
│ ├── nginxproxymanager.sh
│ ├── nocodb.sh
│ ├── node-red.sh
│ ├── notifiarr.sh
│ ├── ntfy.sh
│ ├── nzbget.sh
│ ├── octoprint.sh
│ ├── ollama.sh
│ ├── omada.sh
│ ├── ombi.sh
│ ├── omv.sh
│ ├── openhab.sh
│ ├── openobserve.sh
│ ├── openwebui.sh
│ ├── overseerr.sh
│ ├── owncast.sh
│ ├── pairdrop.sh
│ ├── paperless-ngx.sh
│ ├── pbs.sh
│ ├── peanut.sh
│ ├── petio.sh
│ ├── photoprism.sh
│ ├── pialert.sh
│ ├── pihole.sh
│ ├── pingvin.sh
│ ├── plex.sh
│ ├── pocketbase.sh
│ ├── podman-homeassistant.sh
│ ├── podman.sh
│ ├── postgresql.sh
│ ├── prometheus.sh
│ ├── prowlarr.sh
│ ├── qbittorrent.sh
│ ├── rabbitmq.sh
│ ├── radarr.sh
│ ├── rdtclient.sh
│ ├── readarr.sh
│ ├── readeck.sh
│ ├── redis.sh
│ ├── rockylinux.sh
│ ├── rtsptoweb.sh
│ ├── runtipi.sh
│ ├── sabnzbd.sh
│ ├── scrypted.sh
│ ├── sftpgo.sh
│ ├── shinobi.sh
│ ├── smokeping.sh
│ ├── sonarr.sh
│ ├── spoolman.sh
│ ├── stirling-pdf.sh
│ ├── syncthing.sh
│ ├── tandoor.sh
│ ├── tasmoadmin.sh
│ ├── tautulli.sh
│ ├── tdarr.sh
│ ├── technitiumdns.sh
│ ├── threadfin.sh
│ ├── tianji.sh
│ ├── traccar.sh
│ ├── traefik.sh
│ ├── transmission.sh
│ ├── trilium.sh
│ ├── ubuntu.sh
│ ├── umami.sh
│ ├── umbrel.sh
│ ├── unifi.sh
│ ├── unmanic.sh
│ ├── uptimekuma.sh
│ ├── vaultwarden.sh
│ ├── wallos.sh
│ ├── wastebin.sh
│ ├── watchyourlan.sh
│ ├── whisparr.sh
│ ├── whoogle.sh
│ ├── wikijs.sh
│ ├── wireguard.sh
│ ├── yunohost.sh
│ ├── zabbix.sh
│ ├── zigbee2mqtt.sh
│ ├── zipline.sh
│ ├── zoraxy.sh
│ └── zwave-js-ui.sh
├── install/
│ ├── actualbudget-install.sh
│ ├── adguard-install.sh
│ ├── adventurelog-install.sh
│ ├── agentdvr-install.sh
│ ├── alpine-docker-install.sh
│ ├── alpine-grafana-install.sh
│ ├── alpine-install.sh
│ ├── alpine-nextcloud-install.sh
│ ├── alpine-vaultwarden-install.sh
│ ├── alpine-zigbee2mqtt-install.sh
│ ├── apache-cassandra-install.sh
│ ├── apache-couchdb-install.sh
│ ├── apt-cacher-ng-install.sh
│ ├── archivebox-install.sh
│ ├── aria2-install.sh
│ ├── audiobookshelf-install.sh
│ ├── autobrr-install.sh
│ ├── bazarr-install.sh
│ ├── blocky-install.sh
│ ├── bunkerweb-install.sh
│ ├── caddy-install.sh
│ ├── calibre-web-install.sh
│ ├── casaos-install.sh
│ ├── changedetection-install.sh
│ ├── channels-install.sh
│ ├── cloudflared-install.sh
│ ├── cockpit-install.sh
│ ├── commafeed-install.sh
│ ├── cronicle-install.sh
│ ├── daemonsync-install.sh
│ ├── dashy-install.sh
│ ├── debian-install.sh
│ ├── deconz-install.sh
│ ├── deluge-install.sh
│ ├── docker-install.sh
│ ├── dockge-install.sh
│ ├── emby-install.sh
│ ├── emqx-install.sh
│ ├── ersatztv-install.sh
│ ├── esphome-install.sh
│ ├── evcc-install.sh
│ ├── fenrus-install.sh
│ ├── fhem-install.sh
│ ├── flaresolverr-install.sh
│ ├── flowiseai-install.sh
│ ├── forgejo-install.sh
│ ├── frigate-install.sh
│ ├── gitea-install.sh
│ ├── go2rtc-install.sh
│ ├── gokapi-install.sh
│ ├── gotify-install.sh
│ ├── grafana-install.sh
│ ├── grocy-install.sh
│ ├── headscale-install.sh
│ ├── heimdall-dashboard-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
│ ├── influxdb-install.sh
│ ├── iobroker-install.sh
│ ├── iventoy-install.sh
│ ├── jackett-install.sh
│ ├── jellyfin-install.sh
│ ├── jellyseerr-install.sh
│ ├── kavita-install.sh
│ ├── keycloak-install.sh
│ ├── kubo-install.sh
│ ├── lazylibrarian-install.sh
│ ├── lidarr-install.sh
│ ├── linkwarden-install.sh
│ ├── lldap-install.sh
│ ├── mafl-install.sh
│ ├── magicmirror-install.sh
│ ├── mariadb-install.sh
│ ├── matterbridge-install.sh
│ ├── mediamtx-install.sh
│ ├── medusa-install.sh
│ ├── memos-install.sh
│ ├── meshcentral-install.sh
│ ├── metube-install.sh
│ ├── mongodb-install.sh
│ ├── motioneye-install.sh
│ ├── mqtt-install.sh
│ ├── myspeed-install.sh
│ ├── mysql-install.sh
│ ├── n8n-install.sh
│ ├── navidrome-install.sh
│ ├── neo4j-install.sh
│ ├── nextcloudpi-install.sh
│ ├── nginxproxymanager-install.sh
│ ├── nocodb-install.sh
│ ├── node-red-install.sh
│ ├── notifiarr-install.sh
│ ├── ntfy-install.sh
│ ├── nzbget-install.sh
│ ├── octoprint-install.sh
│ ├── ollama-install.sh
│ ├── omada-install.sh
│ ├── ombi-install.sh
│ ├── omv-install.sh
│ ├── openhab-install.sh
│ ├── openobserve-install.sh
│ ├── openwebui-install.sh
│ ├── overseerr-install.sh
│ ├── owncast-install.sh
│ ├── pairdrop-install.sh
│ ├── paperless-ngx-install.sh
│ ├── pbs-install.sh
│ ├── peanut-install.sh
│ ├── petio-install.sh
│ ├── photoprism-install.sh
│ ├── pialert-install.sh
│ ├── pihole-install.sh
│ ├── pingvin-install.sh
│ ├── plex-install.sh
│ ├── pocketbase-install.sh
│ ├── podman-homeassistant-install.sh
│ ├── podman-install.sh
│ ├── postgresql-install.sh
│ ├── prometheus-install.sh
│ ├── prowlarr-install.sh
│ ├── qbittorrent-install.sh
│ ├── rabbitmq-install.sh
│ ├── radarr-install.sh
│ ├── rdtclient-install.sh
│ ├── readarr-install.sh
│ ├── readeck-install.sh
│ ├── redis-install.sh
│ ├── rtsptoweb-install.sh
│ ├── runtipi-install.sh
│ ├── sabnzbd-install.sh
│ ├── scrypted-install.sh
│ ├── sftpgo-install.sh
│ ├── shinobi-install.sh
│ ├── smokeping-install.sh
│ ├── sonarr-install.sh
│ ├── spoolman-install.sh
│ ├── stirling-pdf-install.sh
│ ├── syncthing-install.sh
│ ├── tandoor-install.sh
│ ├── tasmoadmin-install.sh
│ ├── tautulli-install.sh
│ ├── tdarr-install.sh
│ ├── technitiumdns-install.sh
│ ├── threadfin-install.sh
│ ├── tianji-install.sh
│ ├── traccar-install.sh
│ ├── traefik-install.sh
│ ├── transmission-install.sh
│ ├── trilium-install.sh
│ ├── ubuntu-install.sh
│ ├── umami-install.sh
│ ├── umbrel-install.sh
│ ├── unifi-install.sh
│ ├── unmanic-install.sh
│ ├── uptimekuma-install.sh
│ ├── vaultwarden-install.sh
│ ├── wallos-install.sh
│ ├── wastebin-install.sh
│ ├── watchyourlan-install.sh
│ ├── whisparr-install.sh
│ ├── whoogle-install.sh
│ ├── wikijs-install.sh
│ ├── wireguard-install.sh
│ ├── yunohost-install.sh
│ ├── zabbix-install.sh
│ ├── zigbee2mqtt-install.sh
│ ├── zipline-install.sh
│ ├── zoraxy-install.sh
│ └── zwave-js-ui-install.sh
├── misc/
│ ├── add-netbird-lxc.sh
│ ├── add-tailscale-lxc.sh
│ ├── all-templates.sh
│ ├── alpine-install.func
│ ├── build.func
│ ├── clean-lxcs.sh
│ ├── clean.sh
│ ├── code-server.sh
│ ├── container-restore-from-backup.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
│ ├── core-restore-from-backup.sh
│ ├── cron-update-lxcs.sh
│ ├── crowdsec.sh
│ ├── daemonsync_2.2.0.0059_amd64.deb
│ ├── filebrowser.sh
│ ├── frigate-support.sh
│ ├── fstrim.sh
│ ├── glances.sh
│ ├── host-backup.sh
│ ├── hw-acceleration.sh
│ ├── install.func
│ ├── kernel-clean.sh
│ ├── kernel-pin.sh
│ ├── microcode.sh
│ ├── monitor-all.sh
│ ├── netdata.sh
│ ├── olivetin.sh
│ ├── pbs3-upgrade.sh
│ ├── post-pbs-install.sh
│ ├── post-pve-install.sh
│ ├── pve8-upgrade.sh
│ ├── pyenv.sh
│ ├── scaling-governor.sh
│ ├── update-lxcs-cron.sh
│ ├── update-lxcs.sh
│ ├── usb-passthrough.sh
│ └── webmin.sh
├── turnkey/
│ └── turnkey.sh
└── vm/
├── debian-vm.sh
├── haos-vm.sh
├── mikrotik-routeros.sh
├── nextcloud-vm.sh
├── openwrt.sh
├── owncloud-vm.sh
├── pimox-haos-vm.sh
├── ubuntu2204-vm.sh
└── ubuntu2404-vm.sh
Condensed preview — 423 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,150K chars).
[
{
"path": ".github/CODE_OF_CONDUCT.md",
"chars": 5449,
"preview": "\n# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make particip"
},
{
"path": ".github/CONTRIBUTING.md",
"chars": 1124,
"preview": "<div align=\"center\">\n <a href=\"#\">\n <img src=\"https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/logo."
},
{
"path": ".github/FUNDING.yml",
"chars": 28,
"preview": "ko_fi: proxmoxhelperscripts\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yaml",
"chars": 2604,
"preview": "name: Problems with a script.\ndescription: Generate a report on an issue pertaining specifically to a script. For other "
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 189,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Helper-Scripts Community Support\n url: https://github.com/tteck/"
},
{
"path": ".github/pull_request_template.md",
"chars": 948,
"preview": "> [!NOTE]\nI am meticulous when it comes to merging code into the main branch, so please understand that I may reject pul"
},
{
"path": "CHANGELOG.md",
"chars": 42055,
"preview": "<div align=\"center\">\n <a href=\"#\">\n <img src=\"https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/logo."
},
{
"path": "CODE-AUDIT.md",
"chars": 1607,
"preview": "<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/logo.png\" height=\"100px\""
},
{
"path": "LICENSE",
"chars": 1067,
"preview": "MIT License\n\nCopyright (c) 2021-2024 tteck\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "README.md",
"chars": 1999,
"preview": "<div style=\"border: 2px solid #d1d5db; padding: 20px; border-radius: 8px; background-color: #f9fafb;\"> <h2 align=\"center"
},
{
"path": "USER_SUBMITTED_GUIDES.md",
"chars": 2655,
"preview": "<div align=\"center\">\n <a href=\"#\">\n <img src=\"https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/logo."
},
{
"path": "ct/actualbudget.sh",
"chars": 1820,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/adguard.sh",
"chars": 2268,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/adventurelog.sh",
"chars": 3247,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/agentdvr.sh",
"chars": 1388,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/alpine-docker.sh",
"chars": 1529,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/alpine-grafana.sh",
"chars": 2133,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/alpine-nextcloud.sh",
"chars": 2292,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/alpine-vaultwarden.sh",
"chars": 2663,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/alpine-zigbee2mqtt.sh",
"chars": 1693,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/alpine.sh",
"chars": 1336,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/apache-cassandra.sh",
"chars": 1527,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/apache-couchdb.sh",
"chars": 1708,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/apt-cacher-ng.sh",
"chars": 1580,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/archivebox.sh",
"chars": 1893,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/aria2.sh",
"chars": 1304,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/audiobookshelf.sh",
"chars": 1632,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/autobrr.sh",
"chars": 1833,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/bazarr.sh",
"chars": 1336,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/blocky.sh",
"chars": 1266,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/bunkerweb.sh",
"chars": 2012,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/caddy.sh",
"chars": 1254,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/calibre-web.sh",
"chars": 4369,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/casaos.sh",
"chars": 1405,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/changedetection.sh",
"chars": 2391,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/channels.sh",
"chars": 1608,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/cloudflared.sh",
"chars": 1415,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/cockpit.sh",
"chars": 4025,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/commafeed.sh",
"chars": 2289,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/create_lxc.sh",
"chars": 5994,
"preview": "#!/usr/bin/env bash\n\n# Copyright (c) 2021-2024 tteck\n# Author: tteck (tteckster)\n# License: MIT\n# https://github.com/tte"
},
{
"path": "ct/cronicle.sh",
"chars": 3715,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/daemonsync.sh",
"chars": 1589,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/dashy.sh",
"chars": 2509,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/debian.sh",
"chars": 1266,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/deconz.sh",
"chars": 1392,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/deluge.sh",
"chars": 1406,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/docker.sh",
"chars": 1249,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/dockge.sh",
"chars": 1368,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/emby.sh",
"chars": 1856,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/emqx.sh",
"chars": 1356,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/ersatztv.sh",
"chars": 2143,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/esphome.sh",
"chars": 1760,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/evcc.sh",
"chars": 1325,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/fenrus.sh",
"chars": 2183,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/fhem.sh",
"chars": 1383,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/flaresolverr.sh",
"chars": 2478,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/flowiseai.sh",
"chars": 1819,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/forgejo.sh",
"chars": 2122,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/frigate.sh",
"chars": 1605,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/gitea.sh",
"chars": 1658,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/go2rtc.sh",
"chars": 1520,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/gokapi.sh",
"chars": 1327,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/gotify.sh",
"chars": 2081,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/grafana.sh",
"chars": 1417,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/grocy.sh",
"chars": 1871,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/headscale.sh",
"chars": 2053,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/heimdall-dashboard.sh",
"chars": 3195,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/hivemq.sh",
"chars": 1264,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/homarr.sh",
"chars": 1491,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/homeassistant-core.sh",
"chars": 4943,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/homeassistant.sh",
"chars": 4507,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/homebox.sh",
"chars": 2425,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/homebridge.sh",
"chars": 1549,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/homepage.sh",
"chars": 2462,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/homer.sh",
"chars": 1994,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/hyperhdr.sh",
"chars": 1435,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/hyperion.sh",
"chars": 1491,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/influxdb.sh",
"chars": 1319,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/iobroker.sh",
"chars": 1410,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/iventoy.sh",
"chars": 1350,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/jackett.sh",
"chars": 2000,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/jellyfin.sh",
"chars": 1408,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/jellyseerr.sh",
"chars": 2760,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/kavita.sh",
"chars": 1708,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/keycloak.sh",
"chars": 2244,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/kubo.sh",
"chars": 1909,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/lazylibrarian.sh",
"chars": 1914,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/lidarr.sh",
"chars": 1387,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/linkwarden.sh",
"chars": 2180,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/lldap.sh",
"chars": 1339,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/mafl.sh",
"chars": 2030,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/magicmirror.sh",
"chars": 1804,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/mariadb.sh",
"chars": 1314,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/matterbridge.sh",
"chars": 1542,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/mediamtx.sh",
"chars": 1262,
"preview": "#!/usr/bin/env bash\n\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright "
},
{
"path": "ct/medusa.sh",
"chars": 1389,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/memos.sh",
"chars": 1850,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/meshcentral.sh",
"chars": 1500,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/metube.sh",
"chars": 2239,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/mongodb.sh",
"chars": 1391,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/motioneye.sh",
"chars": 1499,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/mqtt.sh",
"chars": 1414,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/myspeed.sh",
"chars": 2541,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/mysql.sh",
"chars": 1322,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/n8n.sh",
"chars": 1545,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/navidrome.sh",
"chars": 1988,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/neo4j.sh",
"chars": 1379,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/nextcloudpi.sh",
"chars": 1579,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/nginxproxymanager.sh",
"chars": 6526,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/nocodb.sh",
"chars": 1511,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/node-red.sh",
"chars": 3272,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/notifiarr.sh",
"chars": 1392,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/ntfy.sh",
"chars": 1297,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/nzbget.sh",
"chars": 1409,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/octoprint.sh",
"chars": 1638,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/ollama.sh",
"chars": 1354,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/omada.sh",
"chars": 1727,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/ombi.sh",
"chars": 1960,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/omv.sh",
"chars": 1631,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/openhab.sh",
"chars": 1482,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/openobserve.sh",
"chars": 1750,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/openwebui.sh",
"chars": 1846,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/overseerr.sh",
"chars": 1608,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/owncast.sh",
"chars": 1459,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/pairdrop.sh",
"chars": 1447,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/paperless-ngx.sh",
"chars": 3888,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/pbs.sh",
"chars": 1807,
"preview": "#!/usr/bin/env bash\n\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright "
},
{
"path": "ct/peanut.sh",
"chars": 2576,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/petio.sh",
"chars": 1398,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/photoprism.sh",
"chars": 1928,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/pialert.sh",
"chars": 1380,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/pihole.sh",
"chars": 1346,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/pingvin.sh",
"chars": 1975,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/plex.sh",
"chars": 2193,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/pocketbase.sh",
"chars": 1201,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/podman-homeassistant.sh",
"chars": 4488,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/podman.sh",
"chars": 1354,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/postgresql.sh",
"chars": 1450,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/prometheus.sh",
"chars": 2464,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/prowlarr.sh",
"chars": 1413,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/qbittorrent.sh",
"chars": 1556,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/rabbitmq.sh",
"chars": 1898,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/radarr.sh",
"chars": 1355,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/rdtclient.sh",
"chars": 2067,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/readarr.sh",
"chars": 1443,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/readeck.sh",
"chars": 1678,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/redis.sh",
"chars": 1197,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/rockylinux.sh",
"chars": 1438,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/rtsptoweb.sh",
"chars": 1514,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/runtipi.sh",
"chars": 1315,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/sabnzbd.sh",
"chars": 2158,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/scrypted.sh",
"chars": 1497,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/sftpgo.sh",
"chars": 1367,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/shinobi.sh",
"chars": 1446,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/smokeping.sh",
"chars": 1514,
"preview": "#!/usr/bin/env bash\n\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright "
},
{
"path": "ct/sonarr.sh",
"chars": 1518,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/spoolman.sh",
"chars": 2668,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/stirling-pdf.sh",
"chars": 2080,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/syncthing.sh",
"chars": 1553,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/tandoor.sh",
"chars": 2390,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/tasmoadmin.sh",
"chars": 1489,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/tautulli.sh",
"chars": 1365,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/tdarr.sh",
"chars": 1356,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/technitiumdns.sh",
"chars": 1908,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/threadfin.sh",
"chars": 1630,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/tianji.sh",
"chars": 3380,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/traccar.sh",
"chars": 1290,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/traefik.sh",
"chars": 1872,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/transmission.sh",
"chars": 1618,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/trilium.sh",
"chars": 2093,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/ubuntu.sh",
"chars": 1256,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/umami.sh",
"chars": 2119,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/umbrel.sh",
"chars": 1358,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/unifi.sh",
"chars": 1436,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/unmanic.sh",
"chars": 1424,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/uptimekuma.sh",
"chars": 2335,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/vaultwarden.sh",
"chars": 4709,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/wallos.sh",
"chars": 2501,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/wastebin.sh",
"chars": 2393,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/watchyourlan.sh",
"chars": 2106,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/whisparr.sh",
"chars": 1464,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/whoogle.sh",
"chars": 1470,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/wikijs.sh",
"chars": 1894,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/wireguard.sh",
"chars": 1476,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/yunohost.sh",
"chars": 1464,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/zabbix.sh",
"chars": 1393,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/zigbee2mqtt.sh",
"chars": 3394,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/zipline.sh",
"chars": 2494,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/zoraxy.sh",
"chars": 1922,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "ct/zwave-js-ui.sh",
"chars": 2547,
"preview": "#!/usr/bin/env bash\nsource <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)\n# Copyright ("
},
{
"path": "install/actualbudget-install.sh",
"chars": 1958,
"preview": "#!/usr/bin/env bash\n\n# Copyright (c) 2021-2024 tteck\n# Author: tteck (tteckster)\n# License: MIT\n# https://github.com/tte"
},
{
"path": "install/adguard-install.sh",
"chars": 1357,
"preview": "#!/usr/bin/env bash\n\n# Copyright (c) 2021-2024 tteck\n# Author: tteck (tteckster)\n# License: MIT\n# https://github.com/tte"
},
{
"path": "install/adventurelog-install.sh",
"chars": 5793,
"preview": "#!/usr/bin/env bash\n\n# Copyright (c) 2021-2024 tteck\n# Author: tteck\n# Co-Author: MickLesk (Canbiz)\n# License: MIT\n# htt"
},
{
"path": "install/agentdvr-install.sh",
"chars": 1486,
"preview": "#!/usr/bin/env bash\n\n# Copyright (c) 2021-2024 tteck\n# Author: tteck (tteckster)\n# License: MIT\n# https://github.com/tte"
},
{
"path": "install/alpine-docker-install.sh",
"chars": 2486,
"preview": "#!/usr/bin/env bash\n\n# Copyright (c) 2021-2024 tteck\n# Author: tteck (tteckster)\n# License: MIT\n# https://github.com/tte"
},
{
"path": "install/alpine-grafana-install.sh",
"chars": 656,
"preview": "#!/usr/bin/env bash\n\n# Copyright (c) 2021-2024 tteck\n# Author: tteck (tteckster)\n# License: MIT\n# https://github.com/tte"
},
{
"path": "install/alpine-install.sh",
"chars": 446,
"preview": "#!/usr/bin/env bash\n\n# Copyright (c) 2021-2024 tteck\n# Author: tteck (tteckster)\n# License: MIT\n# https://github.com/tte"
},
{
"path": "install/alpine-nextcloud-install.sh",
"chars": 7416,
"preview": "#!/usr/bin/env bash\n\n# Copyright (c) 2021-2024 tteck\n# Author: tteck (tteckster)\n# License: MIT\n# https://github.com/tte"
},
{
"path": "install/alpine-vaultwarden-install.sh",
"chars": 1046,
"preview": "#!/usr/bin/env bash\n\n# Copyright (c) 2021-2024 tteck\n# Author: tteck (tteckster)\n# License: MIT\n# https://github.com/tte"
},
{
"path": "install/alpine-zigbee2mqtt-install.sh",
"chars": 879,
"preview": "#!/usr/bin/env bash\n\n# Copyright (c) 2021-2024 tteck\n# Author: tteck (tteckster)\n# License: MIT\n# https://github.com/tte"
}
]
// ... and 223 more files (download for full content)
About this extraction
This page contains the full source code of the tteck/Proxmox GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 423 files (1.0 MB), approximately 346.6k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.