mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-12-15 19:53:31 +01:00
Compare commits
17 Commits
docker_deb
...
2025-11-11
| Author | SHA1 | Date | |
|---|---|---|---|
| e759335bfc | |||
| 1c09feabde | |||
| e150afa583 | |||
| a770f27396 | |||
| 533650f434 | |||
| 23587df184 | |||
| 1893cb93d4 | |||
| 32cd65d5e1 | |||
| 681932c491 | |||
| b8a9beb56a | |||
| 6cccb49363 | |||
| 5adfc83281 | |||
| f099f472ce | |||
| 00b978df29 | |||
| c054403325 | |||
| 45aec67359 | |||
| 774127eece |
18
CHANGELOG.md
18
CHANGELOG.md
@ -10,14 +10,32 @@
|
||||
> [!CAUTION]
|
||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||
|
||||
## 2025-11-12
|
||||
|
||||
## 2025-11-11
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Domain-Monitor ([#9029](https://github.com/community-scripts/ProxmoxVE/pull/9029))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- tools.func: fix JDK count variable initialization in setup_java [@MickLesk](https://github.com/MickLesk) ([#9058](https://github.com/community-scripts/ProxmoxVE/pull/9058))
|
||||
- flaresolverr: unpin - use latest version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9046](https://github.com/community-scripts/ProxmoxVE/pull/9046))
|
||||
- Part-DB: Increase amount of RAM [@tremor021](https://github.com/tremor021) ([#9039](https://github.com/community-scripts/ProxmoxVE/pull/9039))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: openHAB [@MickLesk](https://github.com/MickLesk) ([#9060](https://github.com/community-scripts/ProxmoxVE/pull/9060))
|
||||
|
||||
### 🧰 Maintenance
|
||||
|
||||
- #### 📂 Github
|
||||
|
||||
- [docs / gh]: modernize README | Change Version Support in SECURITY.md | Shoutout to selfhst\icons [@MickLesk](https://github.com/MickLesk) ([#9049](https://github.com/community-scripts/ProxmoxVE/pull/9049))
|
||||
|
||||
## 2025-11-10
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
288
README.md
288
README.md
@ -1,114 +1,266 @@
|
||||
<div align="center">
|
||||
<p align="center">
|
||||
<a href="#">
|
||||
<img src="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo-81x112.png" height="100px" />
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<img src="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo-81x112.png" height="120px" alt="Proxmox VE Helper-Scripts Logo" />
|
||||
|
||||
<h1>Proxmox VE Helper-Scripts</h1>
|
||||
<p><em>A Community Legacy in Memory of @tteck</em></p>
|
||||
|
||||
<div style="border: 2px solid #d1d5db; padding: 20px; border-radius: 8px; background-color: #f9fafb;">
|
||||
<h2 align="center">Proxmox VE Helper-Scripts</h2>
|
||||
<p align="center">A Community Legacy in Memory of @tteck</p>
|
||||
<p align="center">
|
||||
<p>
|
||||
<a href="https://helper-scripts.com">
|
||||
<img src="https://img.shields.io/badge/Website-4c9b3f?style=for-the-badge&logo=github&logoColor=white" alt="Website" />
|
||||
<img src="https://img.shields.io/badge/🌐_Website-Visit-4c9b3f?style=for-the-badge&labelColor=2d3748" alt="Website" />
|
||||
</a>
|
||||
<a href="https://discord.gg/3AnUqsXnmK">
|
||||
<img src="https://img.shields.io/badge/Discord-7289da?style=for-the-badge&logo=discord&logoColor=white" alt="Discord" />
|
||||
</a>
|
||||
<a href="https://ko-fi.com/community_scripts">
|
||||
<img src="https://img.shields.io/badge/Support-FF5F5F?style=for-the-badge&logo=ko-fi&logoColor=white" alt="Donate" />
|
||||
<img src="https://img.shields.io/badge/💬_Discord-Join-7289da?style=for-the-badge&labelColor=2d3748" alt="Discord" />
|
||||
</a>
|
||||
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md">
|
||||
<img src="https://img.shields.io/badge/Contribute-ff4785?style=for-the-badge&logo=git&logoColor=white" alt="Contribute" />
|
||||
</a>
|
||||
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/USER_SUBMITTED_GUIDES.md">
|
||||
<img src="https://img.shields.io/badge/Guides-0077b5?style=for-the-badge&logo=read-the-docs&logoColor=white" alt="Guides" />
|
||||
</a>
|
||||
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/CHANGELOG.md">
|
||||
<img src="https://img.shields.io/badge/Changelog-6c5ce7?style=for-the-badge&logo=git&logoColor=white" alt="Changelog" />
|
||||
<a href="https://ko-fi.com/community_scripts">
|
||||
<img src="https://img.shields.io/badge/❤️_Support-Donate-FF5F5F?style=for-the-badge&labelColor=2d3748" alt="Donate" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md">
|
||||
<img src="https://img.shields.io/badge/🤝_Contribute-Guidelines-ff4785?style=for-the-badge&labelColor=2d3748" alt="Contribute" />
|
||||
</a>
|
||||
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/USER_SUBMITTED_GUIDES.md">
|
||||
<img src="https://img.shields.io/badge/📚_Guides-Read-0077b5?style=for-the-badge&labelColor=2d3748" alt="Guides" />
|
||||
</a>
|
||||
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/CHANGELOG.md">
|
||||
<img src="https://img.shields.io/badge/📋_Changelog-View-6c5ce7?style=for-the-badge&labelColor=2d3748" alt="Changelog" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<br />
|
||||
|
||||
> **Simplify your Proxmox VE setup with community-driven automation scripts**
|
||||
> Originally created by tteck, now maintained and expanded by the community
|
||||
|
||||
</div>
|
||||
|
||||
<br />
|
||||
|
||||
<div align="center">
|
||||
<sub>🙌 <strong>Shoutout to</strong></sub>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://selfh.st/">
|
||||
<img src="https://img.shields.io/badge/selfh.st-Icons_for_Self--Hosted-2563eb?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6IiBmaWxsPSJ3aGl0ZSIvPjwvc3ZnPg==&labelColor=1e3a8a" alt="selfh.st Icons" />
|
||||
</a>
|
||||
<br />
|
||||
<sub><a href="https://github.com/selfhst/icons">View on GitHub</a> • Consistent, beautiful icons for 5000+ self-hosted apps</sub>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Project Overview
|
||||
## 🎯 Key Features
|
||||
|
||||
**Proxmox VE Helper-Scripts** is a collection of tools to simplify the setup and management of Proxmox Virtual Environment (VE). Originally created by [tteck](https://github.com/tteck), these scripts are now continued by the community. Our goal is to preserve and expand upon tteck's work, providing an ongoing resource for Proxmox users worldwide.
|
||||
<div align="center">
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center" width="25%">
|
||||
<h3>⚡ Quick Setup</h3>
|
||||
<p>One-command installations for popular services and containers</p>
|
||||
</td>
|
||||
<td align="center" width="25%">
|
||||
<h3>⚙️ Flexible Config</h3>
|
||||
<p>Simple mode for beginners, advanced options for power users</p>
|
||||
</td>
|
||||
<td align="center" width="25%">
|
||||
<h3>🔄 Auto Updates</h3>
|
||||
<p>Keep your installations current with built-in update mechanisms</p>
|
||||
</td>
|
||||
<td align="center" width="25%">
|
||||
<h3>🛠️ Easy Management</h3>
|
||||
<p>Post-install scripts for configuration and troubleshooting</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="25%">
|
||||
<h3>👥 Community Driven</h3>
|
||||
<p>Actively maintained with contributions from users worldwide</p>
|
||||
</td>
|
||||
<td align="center" width="25%">
|
||||
<h3>📖 Well Documented</h3>
|
||||
<p>Comprehensive guides and community support</p>
|
||||
</td>
|
||||
<td align="center" width="25%">
|
||||
<h3>🔒 Secure</h3>
|
||||
<p>Regular security updates and best practices</p>
|
||||
</td>
|
||||
<td align="center" width="25%">
|
||||
<h3>⚡ Performance</h3>
|
||||
<p>Optimized configurations for best performance</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## 📦 Features
|
||||
## 📋 Requirements
|
||||
|
||||
- **Interactive Setup**: Choose between simple and advanced options for configuring VMs and LXC containers.
|
||||
- **Customizable Configurations**: Advanced setup for fine-tuning your environment.
|
||||
- **Seamless Integration**: Works seamlessly with Proxmox VE for a smooth experience.
|
||||
- **Community-driven**: Actively maintained and improved by the Proxmox community.
|
||||
<div align="center">
|
||||
|
||||
---
|
||||
## ✅ Requirements
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center" width="33%">
|
||||
<h3>🖥️ Proxmox VE</h3>
|
||||
<p>Version 8.4.x or 9.0.x</p>
|
||||
</td>
|
||||
<td align="center" width="33%">
|
||||
<h3>🐧 Operating System</h3>
|
||||
<p>Debian-based with Proxmox Tools</p>
|
||||
</td>
|
||||
<td align="center" width="33%">
|
||||
<h3>🌐 Network</h3>
|
||||
<p>Internet connection required</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
Ensure your system meets the following prerequisites:
|
||||
|
||||
- **Proxmox VE version**: 8.x or higher
|
||||
- **Linux**: Compatible with most distributions
|
||||
- **Dependencies**: bash and curl should be installed.
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Installation
|
||||
## 📥 Getting Started
|
||||
|
||||
To install the Proxmox Helper Scripts, follow these steps:
|
||||
Choose your preferred installation method:
|
||||
|
||||
1. Visit the [Website](https://helper-scripts.com/).
|
||||
2. Search for the desired script, e.g., **"Home Assistant OS VM"**.
|
||||
3. Copy the provided **Bash command** from the **"How To Install"** section.
|
||||
4. Open the Proxmox shell on your **main node** and paste the command.
|
||||
5. Press enter to start the installation! 🚀
|
||||
### Method 1: One-Click Web Installer
|
||||
|
||||
The fastest way to get started:
|
||||
|
||||
1. Visit **[helper-scripts.com](https://helper-scripts.com/)** 🌐
|
||||
2. Search for your desired script (e.g., "Home Assistant", "Docker")
|
||||
3. Copy the bash command displayed on the script page
|
||||
4. Open your **Proxmox Shell** and paste the command
|
||||
5. Press Enter and follow the interactive prompts
|
||||
|
||||
### Method 2: PVEScripts-Local
|
||||
|
||||
Install a convenient script manager directly in your Proxmox UI:
|
||||
|
||||
```bash
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/pve-scripts-local.sh)"
|
||||
```
|
||||
|
||||
This adds a menu to your Proxmox interface for easy script access without visiting the website.
|
||||
|
||||
📖 **Learn more:** [ProxmoxVE-Local Repository](https://github.com/community-scripts/ProxmoxVE-Local)
|
||||
|
||||
---
|
||||
|
||||
## ❤️ Community and Contributions
|
||||
## 💬 Join the Community
|
||||
|
||||
We appreciate any contributions to the project—whether it's bug reports, feature requests, documentation improvements, or spreading the word. Your involvement helps keep the project alive and sustainable.
|
||||
<div align="center">
|
||||
|
||||
## 💖 Donate to Support the Project
|
||||
- **Ko-Fi for Community Edition**: [Donate to support this project](https://ko-fi.com/community_scripts) – Donations go towards maintaining the project, testing infrastructure, and charity (cancer research, hospice care). 30% of the funds will be donated to charity.
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center" width="33%">
|
||||
<h3>💬 Discord</h3>
|
||||
<p>Real-time chat, support, and discussions</p>
|
||||
<a href="https://discord.gg/3AnUqsXnmK">
|
||||
<img src="https://img.shields.io/badge/Join-7289da?style=for-the-badge&logo=discord&logoColor=white" alt="Discord" />
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" width="33%">
|
||||
<h3>💭 Discussions</h3>
|
||||
<p>Feature requests, Q&A, and ideas</p>
|
||||
<a href="https://github.com/community-scripts/ProxmoxVE/discussions">
|
||||
<img src="https://img.shields.io/badge/Discuss-238636?style=for-the-badge&logo=github&logoColor=white" alt="Discussions" />
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" width="33%">
|
||||
<h3>🐛 Issues</h3>
|
||||
<p>Bug reports and issue tracking</p>
|
||||
<a href="https://github.com/community-scripts/ProxmoxVE/issues">
|
||||
<img src="https://img.shields.io/badge/Report-d73a4a?style=for-the-badge&logo=github&logoColor=white" alt="Issues" />
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## 💬 Get Help
|
||||
## 🛠️ Contribute
|
||||
|
||||
Join our community for support:
|
||||
<div align="center">
|
||||
|
||||
- **Discord**: Join our [Proxmox Helper Scripts Discord server](https://discord.gg/3AnUqsXnmK) for real-time support.
|
||||
- **GitHub Discussions**: [Ask questions or report issues](https://github.com/community-scripts/ProxmoxVE/discussions).
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center" width="25%">
|
||||
<h3>💻 Code</h3>
|
||||
<p>Add new scripts or improve existing ones</p>
|
||||
</td>
|
||||
<td align="center" width="25%">
|
||||
<h3>📝 Documentation</h3>
|
||||
<p>Write guides, improve READMEs, translate content</p>
|
||||
</td>
|
||||
<td align="center" width="25%">
|
||||
<h3>🧪 Testing</h3>
|
||||
<p>Test scripts and report compatibility issues</p>
|
||||
</td>
|
||||
<td align="center" width="25%">
|
||||
<h3>💡 Ideas</h3>
|
||||
<p>Suggest features or workflow improvements</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## 🤝 Report a Bug or Feature Request
|
||||
</div>
|
||||
|
||||
If you encounter any issues or have suggestions for improvement, file a new issue on our [GitHub issues page](https://github.com/community-scripts/ProxmoxVE/issues). You can also submit pull requests with solutions or enhancements!
|
||||
<div align="center">
|
||||
<br />
|
||||
|
||||
👉 Check our **[Contributing Guidelines](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md)** to get started
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## ⭐ Star History
|
||||
## ❤️ Support the Project
|
||||
|
||||
<a href="https://star-history.com/#community-scripts/ProxmoxVE&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date" />
|
||||
</picture>
|
||||
This project is maintained by volunteers in memory of tteck. Your support helps us maintain infrastructure, improve documentation, and give back to important causes.
|
||||
|
||||
**🎗️ 30% of all donations go directly to cancer research and hospice care**
|
||||
|
||||
<div align="center">
|
||||
|
||||
<a href="https://ko-fi.com/community_scripts">
|
||||
<img src="https://img.shields.io/badge/☕_Buy_us_a_coffee-Support_on_Ko--fi-FF5F5F?style=for-the-badge&labelColor=2d3748" alt="Support on Ko-fi" />
|
||||
</a>
|
||||
|
||||
<br />
|
||||
<sub>Every contribution helps keep this project alive and supports meaningful causes</sub>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## 📈 Project Growth
|
||||
|
||||
<div align="center">
|
||||
<a href="https://star-history.com/#community-scripts/ProxmoxVE&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date" />
|
||||
</picture>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## 📜 License
|
||||
|
||||
This project is licensed under the [MIT License](LICENSE).
|
||||
|
||||
</br>
|
||||
</br>
|
||||
<p align="center">
|
||||
<i style="font-size: smaller;"><b>Proxmox</b>® is a registered trademark of <a href="https://www.proxmox.com/en/about/company">Proxmox Server Solutions GmbH</a>.</i>
|
||||
</p>
|
||||
This project is licensed under the **[MIT License](LICENSE)** - feel free to use, modify, and distribute.
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
<sub>Made with ❤️ by the Proxmox community in memory of tteck</sub>
|
||||
<br />
|
||||
<sub><i>Proxmox® is a registered trademark of <a href="https://www.proxmox.com/en/about/company">Proxmox Server Solutions GmbH</a></i></sub>
|
||||
</div>
|
||||
|
||||
10
SECURITY.md
10
SECURITY.md
@ -8,13 +8,15 @@ This project currently supports the following versions of Proxmox VE (PVE):
|
||||
| ------- | ------------------ |
|
||||
| 9.0.x | :white_check_mark: |
|
||||
| 8.4.x | :white_check_mark: |
|
||||
| 8.3.x | :white_check_mark: |
|
||||
| 8.2.x | :white_check_mark: |
|
||||
| 8.1.x | :white_check_mark: |
|
||||
| 8.3.x | Limited support* ❕ |
|
||||
| 8.2.x | Limited support* ❕ |
|
||||
| 8.1.x | Limited support* ❕ |
|
||||
| 8.0.x | Limited support* ❕ |
|
||||
| < 8.0 | :x: |
|
||||
|
||||
*Version 8.0.x has limited support. Security updates may not be provided for all issues affecting this version.
|
||||
*Version 8.0.x - 8.3.x has limited support. Security updates may not be provided for all issues affecting this version.
|
||||
|
||||
*Debian 13 Containers may fail to install. You can write var_version=12 before the bash call.
|
||||
|
||||
---
|
||||
|
||||
|
||||
77
ct/dashy.sh
77
ct/dashy.sh
@ -1,77 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://dashy.to/
|
||||
|
||||
APP="Dashy"
|
||||
var_tags="${var_tags:-dashboard}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-6}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/dashy/public/ ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
if check_for_gh_release "dashy" "Lissy93/dashy"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop dashy
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
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"
|
||||
|
||||
rm -rf /opt/dashy
|
||||
fetch_and_deploy_gh_release "dashy" "Lissy93/dashy"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
cd /opt/dashy
|
||||
npm install
|
||||
npm run build
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
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!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4000${CL}"
|
||||
67
ct/domain-monitor.sh
Normal file
67
ct/domain-monitor.sh
Normal file
@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/Hosteroid/domain-monitor
|
||||
|
||||
APP="Domain-Monitor"
|
||||
var_tags="${var_tags:-proxy}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-2}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/domain-monitor ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "domain-monitor" "Hosteroid/domain-monitor"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop apache2
|
||||
msg_info "Service stopped"
|
||||
|
||||
msg_info "Creating backup"
|
||||
mv /opt/domain-monitor/.env /opt
|
||||
msg_ok "Created backup"
|
||||
|
||||
setup_composer
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "domain-monitor" "Hosteroid/domain-monitor" "prebuild" "latest" "/opt/domain-monitor" "domain-monitor-v*.zip"
|
||||
|
||||
msg_info "Updating Domain Monitor"
|
||||
cd /opt/domain-monitor
|
||||
$STD composer install
|
||||
msg_ok "Updated Domain Monitor"
|
||||
|
||||
msg_info "Restoring backup"
|
||||
mv /opt/.env /opt/domain-monitor
|
||||
msg_ok "Restored backup"
|
||||
|
||||
msg_info "Restarting Services"
|
||||
systemctl reload apache2
|
||||
msg_ok "Restarted Services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||
@ -33,13 +33,13 @@ function update_script() {
|
||||
msg_error "You must upgrade your LXC to Debian Trixie before updating."
|
||||
exit
|
||||
fi
|
||||
if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "3.4.3"; then
|
||||
if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr"; then
|
||||
msg_info "Stopping service"
|
||||
systemctl stop flaresolverr
|
||||
msg_ok "Stopped service"
|
||||
|
||||
rm -rf /opt/flaresolverr
|
||||
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "v3.4.3" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
|
||||
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
|
||||
|
||||
msg_info "Starting service"
|
||||
systemctl start flaresolverr
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
____ __
|
||||
/ __ \____ ______/ /_ __ __
|
||||
/ / / / __ `/ ___/ __ \/ / / /
|
||||
/ /_/ / /_/ (__ ) / / / /_/ /
|
||||
/_____/\__,_/____/_/ /_/\__, /
|
||||
/____/
|
||||
6
ct/headers/domain-monitor
Normal file
6
ct/headers/domain-monitor
Normal file
@ -0,0 +1,6 @@
|
||||
____ _ __ ___ _ __
|
||||
/ __ \____ ____ ___ ____ _(_)___ / |/ /___ ____ (_) /_____ _____
|
||||
/ / / / __ \/ __ `__ \/ __ `/ / __ \______/ /|_/ / __ \/ __ \/ / __/ __ \/ ___/
|
||||
/ /_/ / /_/ / / / / / / /_/ / / / / /_____/ / / / /_/ / / / / / /_/ /_/ / /
|
||||
/_____/\____/_/ /_/ /_/\__,_/_/_/ /_/ /_/ /_/\____/_/ /_/_/\__/\____/_/
|
||||
|
||||
@ -20,18 +20,18 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/apt/sources.list.d/openhab.list ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
msg_ok "Updated successfully!"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /usr/lib/systemd/system/openhab.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt update
|
||||
$STD apt upgrade -y
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
@ -33,7 +33,7 @@ function update_script() {
|
||||
systemctl stop apache2
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,gmp,snmp,ldap,apcu" setup_php
|
||||
PHP_VERSION="8.3" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,gmp,snmp,ldap,apcu" setup_php
|
||||
|
||||
msg_info "Installing PHP-PEAR"
|
||||
$STD apt install -y \
|
||||
|
||||
@ -1,35 +0,0 @@
|
||||
{
|
||||
"name": "Dashy",
|
||||
"slug": "dashy",
|
||||
"categories": [
|
||||
10
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 4000,
|
||||
"documentation": "https://dashy.to/docs",
|
||||
"website": "https://dashy.to/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/dashy.webp",
|
||||
"config_path": "/opt/dashy/user-data/conf.yml",
|
||||
"description": "Dashy is a solution that helps you organize your self-hosted services by centralizing access to them through a single interface.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/dashy.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 6,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
||||
35
frontend/public/json/domain-monitor.json
Normal file
35
frontend/public/json/domain-monitor.json
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "Domain Monitor",
|
||||
"slug": "domain-monitor",
|
||||
"categories": [
|
||||
9
|
||||
],
|
||||
"date_created": "2025-11-11",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 80,
|
||||
"documentation": "https://github.com/Hosteroid/domain-monitor/blob/main/README.md",
|
||||
"config_path": "/opt/domain-monitor/.env",
|
||||
"website": "https://github.com/Hosteroid/domain-monitor",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/domain-monitor.png",
|
||||
"description": "A self-hosted PHP domain expiration monitoring tool that tracks domain expiry dates, RDAP/WHOIS data, and SSL certificate validity. Supports alerts, multi-user setup, and cron automation. Built for developers, hosting providers, and IT admins who want full control without third-party services.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/domain-monitor.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
||||
@ -1,4 +1,164 @@
|
||||
[
|
||||
{
|
||||
"name": "moghtech/komodo",
|
||||
"version": "v1.19.5",
|
||||
"date": "2025-09-27T20:59:46Z"
|
||||
},
|
||||
{
|
||||
"name": "Brandawg93/PeaNUT",
|
||||
"version": "v5.17.0",
|
||||
"date": "2025-11-11T20:15:54Z"
|
||||
},
|
||||
{
|
||||
"name": "BerriAI/litellm",
|
||||
"version": "v1.79.dev.1",
|
||||
"date": "2025-11-11T20:13:32Z"
|
||||
},
|
||||
{
|
||||
"name": "rcourtman/Pulse",
|
||||
"version": "v4.29.0",
|
||||
"date": "2025-11-11T19:45:56Z"
|
||||
},
|
||||
{
|
||||
"name": "juanfont/headscale",
|
||||
"version": "v0.27.1",
|
||||
"date": "2025-11-11T19:32:29Z"
|
||||
},
|
||||
{
|
||||
"name": "karlomikus/bar-assistant",
|
||||
"version": "v5.9.2",
|
||||
"date": "2025-11-11T19:29:32Z"
|
||||
},
|
||||
{
|
||||
"name": "runtipi/runtipi",
|
||||
"version": "v4.6.4",
|
||||
"date": "2025-11-11T17:47:15Z"
|
||||
},
|
||||
{
|
||||
"name": "gethomepage/homepage",
|
||||
"version": "v1.7.0",
|
||||
"date": "2025-11-11T17:24:27Z"
|
||||
},
|
||||
{
|
||||
"name": "mattermost/mattermost",
|
||||
"version": "mattermost-redux@11.1.0",
|
||||
"date": "2025-11-11T17:15:00Z"
|
||||
},
|
||||
{
|
||||
"name": "jenkinsci/jenkins",
|
||||
"version": "jenkins-2.536",
|
||||
"date": "2025-11-11T17:03:28Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.30.10",
|
||||
"date": "2025-11-11T16:26:27Z"
|
||||
},
|
||||
{
|
||||
"name": "kimai/kimai",
|
||||
"version": "2.41.0",
|
||||
"date": "2025-11-11T15:17:21Z"
|
||||
},
|
||||
{
|
||||
"name": "netbox-community/netbox",
|
||||
"version": "v4.4.6",
|
||||
"date": "2025-11-11T14:59:23Z"
|
||||
},
|
||||
{
|
||||
"name": "seerr-team/seerr",
|
||||
"version": "preview-test-fix-subscriptions",
|
||||
"date": "2025-11-11T14:38:10Z"
|
||||
},
|
||||
{
|
||||
"name": "CrazyWolf13/web-check",
|
||||
"version": "1.1.0",
|
||||
"date": "2025-11-11T14:30:28Z"
|
||||
},
|
||||
{
|
||||
"name": "fuma-nama/fumadocs",
|
||||
"version": "create-fumadocs-app@16.0.13",
|
||||
"date": "2025-11-11T14:04:06Z"
|
||||
},
|
||||
{
|
||||
"name": "openobserve/openobserve",
|
||||
"version": "v0.16.1",
|
||||
"date": "2025-11-11T13:14:28Z"
|
||||
},
|
||||
{
|
||||
"name": "BookStackApp/BookStack",
|
||||
"version": "v25.11.1",
|
||||
"date": "2025-11-11T12:23:00Z"
|
||||
},
|
||||
{
|
||||
"name": "element-hq/synapse",
|
||||
"version": "v1.142.0",
|
||||
"date": "2025-11-11T10:33:50Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@1.119.1",
|
||||
"date": "2025-11-10T14:21:10Z"
|
||||
},
|
||||
{
|
||||
"name": "zitadel/zitadel",
|
||||
"version": "v4.6.5",
|
||||
"date": "2025-11-11T09:55:47Z"
|
||||
},
|
||||
{
|
||||
"name": "emqx/emqx",
|
||||
"version": "e6.0.1",
|
||||
"date": "2025-11-11T09:46:06Z"
|
||||
},
|
||||
{
|
||||
"name": "NginxProxyManager/nginx-proxy-manager",
|
||||
"version": "v2.13.3",
|
||||
"date": "2025-11-11T07:36:54Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.24.275",
|
||||
"date": "2025-11-11T05:56:40Z"
|
||||
},
|
||||
{
|
||||
"name": "FlareSolverr/FlareSolverr",
|
||||
"version": "v3.4.5",
|
||||
"date": "2025-11-11T01:58:31Z"
|
||||
},
|
||||
{
|
||||
"name": "chrisbenincasa/tunarr",
|
||||
"version": "v0.23.0-alpha.22",
|
||||
"date": "2025-11-11T01:36:48Z"
|
||||
},
|
||||
{
|
||||
"name": "MediaBrowser/Emby.Releases",
|
||||
"version": "4.9.1.90",
|
||||
"date": "2025-11-11T01:00:32Z"
|
||||
},
|
||||
{
|
||||
"name": "OliveTin/OliveTin",
|
||||
"version": "2025.11.11",
|
||||
"date": "2025-11-11T00:35:03Z"
|
||||
},
|
||||
{
|
||||
"name": "jeedom/core",
|
||||
"version": "4.4.20",
|
||||
"date": "2025-11-11T00:27:07Z"
|
||||
},
|
||||
{
|
||||
"name": "steveiliop56/tinyauth",
|
||||
"version": "v4.0.1",
|
||||
"date": "2025-10-15T16:53:55Z"
|
||||
},
|
||||
{
|
||||
"name": "qbittorrent/qBittorrent",
|
||||
"version": "release-5.1.3",
|
||||
"date": "2025-11-10T22:29:05Z"
|
||||
},
|
||||
{
|
||||
"name": "postgres/postgres",
|
||||
"version": "REL_13_23",
|
||||
"date": "2025-11-10T21:59:18Z"
|
||||
},
|
||||
{
|
||||
"name": "chrisvel/tududi",
|
||||
"version": "v0.86",
|
||||
@ -9,11 +169,6 @@
|
||||
"version": "v0.62.17",
|
||||
"date": "2025-11-10T19:45:49Z"
|
||||
},
|
||||
{
|
||||
"name": "chrisbenincasa/tunarr",
|
||||
"version": "v0.22.13",
|
||||
"date": "2025-11-10T18:12:24Z"
|
||||
},
|
||||
{
|
||||
"name": "autobrr/autobrr",
|
||||
"version": "v1.69.0",
|
||||
@ -30,19 +185,9 @@
|
||||
"date": "2025-11-10T16:51:44Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.30.9",
|
||||
"date": "2025-11-10T16:23:29Z"
|
||||
},
|
||||
{
|
||||
"name": "fuma-nama/fumadocs",
|
||||
"version": "fumadocs-mdx@13.0.6",
|
||||
"date": "2025-11-10T14:43:06Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "v1.0.0",
|
||||
"date": "2025-11-07T12:52:42Z"
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.4.4",
|
||||
"date": "2025-11-07T08:55:27Z"
|
||||
},
|
||||
{
|
||||
"name": "grokability/snipe-it",
|
||||
@ -59,51 +204,21 @@
|
||||
"version": "0.50.42",
|
||||
"date": "2025-11-10T12:32:49Z"
|
||||
},
|
||||
{
|
||||
"name": "emqx/emqx",
|
||||
"version": "e6.0.1",
|
||||
"date": "2025-11-10T11:58:39Z"
|
||||
},
|
||||
{
|
||||
"name": "documenso/documenso",
|
||||
"version": "v2.0.6",
|
||||
"date": "2025-11-10T08:08:43Z"
|
||||
},
|
||||
{
|
||||
"name": "mattermost/mattermost",
|
||||
"version": "v10.11.6",
|
||||
"date": "2025-11-04T09:43:16Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.24.270",
|
||||
"date": "2025-11-10T05:57:22Z"
|
||||
},
|
||||
{
|
||||
"name": "firefly-iii/firefly-iii",
|
||||
"version": "v6.4.6",
|
||||
"date": "2025-11-08T22:45:35Z"
|
||||
},
|
||||
{
|
||||
"name": "jeedom/core",
|
||||
"version": "4.4.20",
|
||||
"date": "2025-11-10T00:27:05Z"
|
||||
},
|
||||
{
|
||||
"name": "steveiliop56/tinyauth",
|
||||
"version": "v4.0.1",
|
||||
"date": "2025-10-15T16:53:55Z"
|
||||
},
|
||||
{
|
||||
"name": "navidrome/navidrome",
|
||||
"version": "v0.58.5",
|
||||
"date": "2025-11-09T19:12:41Z"
|
||||
},
|
||||
{
|
||||
"name": "rcourtman/Pulse",
|
||||
"version": "v4.27.2",
|
||||
"date": "2025-11-09T18:39:30Z"
|
||||
},
|
||||
{
|
||||
"name": "pelican-dev/panel",
|
||||
"version": "v1.0.0-beta28",
|
||||
@ -129,26 +244,11 @@
|
||||
"version": "v14.0.1",
|
||||
"date": "2025-11-09T13:03:18Z"
|
||||
},
|
||||
{
|
||||
"name": "BookStackApp/BookStack",
|
||||
"version": "v25.11",
|
||||
"date": "2025-11-09T13:00:14Z"
|
||||
},
|
||||
{
|
||||
"name": "karakeep-app/karakeep",
|
||||
"version": "extension/v1.2.7",
|
||||
"date": "2025-11-09T12:21:54Z"
|
||||
},
|
||||
{
|
||||
"name": "NginxProxyManager/nginx-proxy-manager",
|
||||
"version": "v2.13.2",
|
||||
"date": "2025-11-09T11:56:25Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.4.4",
|
||||
"date": "2025-11-07T08:55:27Z"
|
||||
},
|
||||
{
|
||||
"name": "authelia/authelia",
|
||||
"version": "v4.39.14",
|
||||
@ -159,11 +259,6 @@
|
||||
"version": "3.5.1",
|
||||
"date": "2025-11-09T05:09:28Z"
|
||||
},
|
||||
{
|
||||
"name": "BerriAI/litellm",
|
||||
"version": "v1.79.3.rc.1",
|
||||
"date": "2025-11-09T02:52:13Z"
|
||||
},
|
||||
{
|
||||
"name": "inventree/InvenTree",
|
||||
"version": "1.1.3",
|
||||
@ -199,11 +294,6 @@
|
||||
"version": "v7.13.0",
|
||||
"date": "2025-11-08T13:36:25Z"
|
||||
},
|
||||
{
|
||||
"name": "runtipi/runtipi",
|
||||
"version": "v4.6.3",
|
||||
"date": "2025-11-08T10:06:18Z"
|
||||
},
|
||||
{
|
||||
"name": "pocketbase/pocketbase",
|
||||
"version": "v0.32.0",
|
||||
@ -244,16 +334,6 @@
|
||||
"version": "v25.4",
|
||||
"date": "2025-10-09T10:27:01Z"
|
||||
},
|
||||
{
|
||||
"name": "openobserve/openobserve",
|
||||
"version": "v0.16.0",
|
||||
"date": "2025-11-07T12:55:42Z"
|
||||
},
|
||||
{
|
||||
"name": "element-hq/synapse",
|
||||
"version": "v1.142.0rc2",
|
||||
"date": "2025-11-04T16:22:11Z"
|
||||
},
|
||||
{
|
||||
"name": "Paymenter/Paymenter",
|
||||
"version": "v1.4.3",
|
||||
@ -261,19 +341,14 @@
|
||||
},
|
||||
{
|
||||
"name": "wazuh/wazuh",
|
||||
"version": "coverity-w45-4.14.1",
|
||||
"date": "2025-11-05T16:56:57Z"
|
||||
"version": "coverity-w46-4.14.1",
|
||||
"date": "2025-11-07T08:46:03Z"
|
||||
},
|
||||
{
|
||||
"name": "umami-software/umami",
|
||||
"version": "v3.0.0",
|
||||
"date": "2025-11-07T06:13:49Z"
|
||||
},
|
||||
{
|
||||
"name": "OliveTin/OliveTin",
|
||||
"version": "3000.3.2",
|
||||
"date": "2025-11-07T01:05:59Z"
|
||||
},
|
||||
{
|
||||
"name": "FlowiseAI/Flowise",
|
||||
"version": "flowise@3.0.10",
|
||||
@ -359,11 +434,6 @@
|
||||
"version": "0.5.1",
|
||||
"date": "2025-11-05T16:14:37Z"
|
||||
},
|
||||
{
|
||||
"name": "zitadel/zitadel",
|
||||
"version": "v4.6.4",
|
||||
"date": "2025-11-05T15:57:00Z"
|
||||
},
|
||||
{
|
||||
"name": "Graylog2/graylog2-server",
|
||||
"version": "6.2.9",
|
||||
@ -399,11 +469,6 @@
|
||||
"version": "0.209.7",
|
||||
"date": "2025-11-05T08:32:08Z"
|
||||
},
|
||||
{
|
||||
"name": "jenkinsci/jenkins",
|
||||
"version": "jenkins-2.535",
|
||||
"date": "2025-11-05T05:30:07Z"
|
||||
},
|
||||
{
|
||||
"name": "slskd/slskd",
|
||||
"version": "0.24.0",
|
||||
@ -414,16 +479,6 @@
|
||||
"version": "v4.0.16.2944",
|
||||
"date": "2025-11-05T01:56:48Z"
|
||||
},
|
||||
{
|
||||
"name": "gethomepage/homepage",
|
||||
"version": "v1.6.1",
|
||||
"date": "2025-11-05T00:21:14Z"
|
||||
},
|
||||
{
|
||||
"name": "FlareSolverr/FlareSolverr",
|
||||
"version": "v3.4.4",
|
||||
"date": "2025-11-04T23:05:14Z"
|
||||
},
|
||||
{
|
||||
"name": "henrygd/beszel",
|
||||
"version": "v0.15.4",
|
||||
@ -519,11 +574,6 @@
|
||||
"version": "v1.9.1",
|
||||
"date": "2025-11-02T21:14:50Z"
|
||||
},
|
||||
{
|
||||
"name": "karlomikus/bar-assistant",
|
||||
"version": "v5.9.1",
|
||||
"date": "2025-11-02T20:54:28Z"
|
||||
},
|
||||
{
|
||||
"name": "tobychui/zoraxy",
|
||||
"version": "v3.2.9",
|
||||
@ -664,21 +714,11 @@
|
||||
"version": "v1.0.1",
|
||||
"date": "2025-10-29T03:25:13Z"
|
||||
},
|
||||
{
|
||||
"name": "moghtech/komodo",
|
||||
"version": "v1.19.5",
|
||||
"date": "2025-09-27T20:59:46Z"
|
||||
},
|
||||
{
|
||||
"name": "booklore-app/booklore",
|
||||
"version": "v1.10.0",
|
||||
"date": "2025-10-28T19:04:35Z"
|
||||
},
|
||||
{
|
||||
"name": "netbox-community/netbox",
|
||||
"version": "v4.4.5",
|
||||
"date": "2025-10-28T18:35:47Z"
|
||||
},
|
||||
{
|
||||
"name": "pi-hole/pi-hole",
|
||||
"version": "v6.2.2",
|
||||
@ -704,11 +744,6 @@
|
||||
"version": "v4.2.0",
|
||||
"date": "2025-10-27T16:56:40Z"
|
||||
},
|
||||
{
|
||||
"name": "juanfont/headscale",
|
||||
"version": "v0.27.0",
|
||||
"date": "2025-10-27T11:16:35Z"
|
||||
},
|
||||
{
|
||||
"name": "Radarr/Radarr",
|
||||
"version": "v5.28.0.10274",
|
||||
@ -804,11 +839,6 @@
|
||||
"version": "v4.105.1",
|
||||
"date": "2025-10-20T20:19:23Z"
|
||||
},
|
||||
{
|
||||
"name": "MediaBrowser/Emby.Releases",
|
||||
"version": "4.9.1.80",
|
||||
"date": "2025-09-30T20:25:16Z"
|
||||
},
|
||||
{
|
||||
"name": "rclone/rclone",
|
||||
"version": "v1.71.2",
|
||||
@ -894,11 +924,6 @@
|
||||
"version": "2.1.2",
|
||||
"date": "2025-10-15T06:51:32Z"
|
||||
},
|
||||
{
|
||||
"name": "seerr-team/seerr",
|
||||
"version": "preview-seerr",
|
||||
"date": "2025-10-14T22:21:33Z"
|
||||
},
|
||||
{
|
||||
"name": "crafty-controller/crafty-4",
|
||||
"version": "v4.5.5",
|
||||
@ -929,11 +954,6 @@
|
||||
"version": "v0.27.0",
|
||||
"date": "2025-10-10T20:11:48Z"
|
||||
},
|
||||
{
|
||||
"name": "Brandawg93/PeaNUT",
|
||||
"version": "v5.16.0",
|
||||
"date": "2025-10-10T16:17:02Z"
|
||||
},
|
||||
{
|
||||
"name": "projectsend/projectsend",
|
||||
"version": "r1945",
|
||||
@ -1009,11 +1029,6 @@
|
||||
"version": "v0.10.1",
|
||||
"date": "2025-09-28T08:55:44Z"
|
||||
},
|
||||
{
|
||||
"name": "kimai/kimai",
|
||||
"version": "2.40.0",
|
||||
"date": "2025-09-27T16:19:26Z"
|
||||
},
|
||||
{
|
||||
"name": "FreshRSS/FreshRSS",
|
||||
"version": "1.27.1",
|
||||
@ -1034,11 +1049,6 @@
|
||||
"version": "2025.09.24",
|
||||
"date": "2025-09-24T13:51:23Z"
|
||||
},
|
||||
{
|
||||
"name": "postgres/postgres",
|
||||
"version": "REL_18_0",
|
||||
"date": "2025-09-22T20:11:33Z"
|
||||
},
|
||||
{
|
||||
"name": "itsmng/itsm-ng",
|
||||
"version": "v2.1.0",
|
||||
@ -1274,11 +1284,6 @@
|
||||
"version": "250707-d28b3101e",
|
||||
"date": "2025-07-07T15:15:21Z"
|
||||
},
|
||||
{
|
||||
"name": "qbittorrent/qBittorrent",
|
||||
"version": "release-5.1.2",
|
||||
"date": "2025-07-02T06:13:16Z"
|
||||
},
|
||||
{
|
||||
"name": "hivemq/hivemq-community-edition",
|
||||
"version": "2025.4",
|
||||
@ -1534,11 +1539,6 @@
|
||||
"version": "v1.11.13",
|
||||
"date": "2024-05-08T04:20:34Z"
|
||||
},
|
||||
{
|
||||
"name": "CrazyWolf13/web-check",
|
||||
"version": "1.0.0",
|
||||
"date": "2024-05-05T02:01:51Z"
|
||||
},
|
||||
{
|
||||
"name": "thelounge/thelounge-deb",
|
||||
"version": "v4.4.3",
|
||||
|
||||
@ -1,46 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://dashy.to/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
fetch_and_deploy_gh_release "dashy" "Lissy93/dashy"
|
||||
|
||||
msg_info "Installing Dashy"
|
||||
cd /opt/dashy
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
msg_ok "Installed Dashy"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/dashy.service
|
||||
[Unit]
|
||||
Description=dashy
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/dashy
|
||||
ExecStart=/usr/bin/npm start
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl -q --now enable dashy
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
65
install/domain-monitor-install.sh
Normal file
65
install/domain-monitor-install.sh
Normal file
@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/Hosteroid/domain-monitor
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y --no-install-recommends \
|
||||
libicu-dev \
|
||||
libzip-dev \
|
||||
libpng-dev \
|
||||
libjpeg62-turbo-dev \
|
||||
libfreetype6-dev \
|
||||
libxml2-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libonig-dev \
|
||||
pkg-config
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql" setup_php
|
||||
setup_composer
|
||||
setup_mariadb
|
||||
MARIADB_DB_NAME="domain_monitor" MARIADB_DB_USER="domainmonitor" setup_mariadb_db
|
||||
fetch_and_deploy_gh_release "domain-monitor" "Hosteroid/domain-monitor" "prebuild" "latest" "/opt/domain-monitor" "domain-monitor-v*.zip"
|
||||
|
||||
msg_info "Setting up Domain Monitor"
|
||||
ENC_KEY=$(openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 32)
|
||||
cd /opt/domain-monitor
|
||||
$STD composer install
|
||||
cp env.example.txt .env
|
||||
sed -i -e "s|^APP_ENV=.*|APP_ENV=production|" \
|
||||
-e "s|^APP_ENCRYPTION_KEY=.*|APP_ENCRYPTION_KEY=$ENC_KEY|" \
|
||||
-e "s|^SESSION_COOKIE_HTTPONLY=.*|SESSION_COOKIE_HTTPONLY=0|" \
|
||||
-e "s|^DB_USERNAME=.*|DB_USERNAME=$MARIADB_DB_USER|" \
|
||||
-e "s|^DB_PASSWORD=.*|DB_PASSWORD=$MARIADB_DB_PASS|" \
|
||||
-e "s|^DB_DATABASE=.*|DB_DATABASE=$MARIADB_DB_NAME|" .env
|
||||
|
||||
cat <<EOF >/etc/apache2/sites-enabled/000-default.conf
|
||||
<VirtualHost *:80>
|
||||
ServerName domainmonitor.local
|
||||
DocumentRoot "/opt/domain-monitor/public"
|
||||
|
||||
<Directory "/opt/domain-monitor/public">
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
</VirtualHost>
|
||||
EOF
|
||||
chown -R www-data:www-data /opt/domain-monitor
|
||||
$STD a2enmod rewrite headers
|
||||
$STD systemctl reload apache2
|
||||
msg_ok "Setup Domain Monitor"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@ -32,7 +32,7 @@ $STD apt install -y google-chrome-stable
|
||||
rm /etc/apt/sources.list.d/google-chrome.list
|
||||
msg_ok "Installed Chrome"
|
||||
|
||||
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "v3.4.3" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
|
||||
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/flaresolverr.service
|
||||
|
||||
@ -13,35 +13,30 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
ca-certificates \
|
||||
apt-transport-https
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
JAVA_VERSION="21" setup_java
|
||||
|
||||
msg_info "Installing openHAB"
|
||||
curl -fsSL "https://openhab.jfrog.io/artifactory/api/gpg/key/public" | gpg --dearmor -o /usr/share/keyrings/openhab.gpg
|
||||
chmod u=rw,g=r,o=r /usr/share/keyrings/openhab.gpg
|
||||
cat <<EOF >/etc/apt/sources.list.d/openhab.sources
|
||||
Types: deb
|
||||
URIs: https://openhab.jfrog.io/artifactory/openhab-linuxpkg
|
||||
Suites: stable
|
||||
Components: main
|
||||
Signed-By: /usr/share/keyrings/openhab.gpg
|
||||
EOF
|
||||
$STD apt update
|
||||
$STD apt -y install openhab
|
||||
setup_deb822_repo \
|
||||
"openhab" \
|
||||
"https://openhab.jfrog.io/artifactory/api/gpg/key/public" \
|
||||
"https://openhab.jfrog.io/artifactory/openhab-linuxpkg" \
|
||||
"stable" \
|
||||
"main"
|
||||
$STD apt install -y openhab
|
||||
msg_ok "Installed openHAB"
|
||||
|
||||
msg_info "Initializing openHAB directories"
|
||||
mkdir -p /var/lib/openhab/{tmp,etc,cache}
|
||||
mkdir -p /etc/openhab
|
||||
mkdir -p /var/log/openhab
|
||||
chown -R openhab:openhab /var/lib/openhab /etc/openhab /var/log/openhab
|
||||
msg_ok "Initialized openHAB directories"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl daemon-reload
|
||||
systemctl enable -q --now openhab
|
||||
msg_ok "Installed openHAB"
|
||||
msg_ok "Started Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt -y autoremove
|
||||
$STD apt -y autoclean
|
||||
$STD apt -y clean
|
||||
msg_ok "Cleaned"
|
||||
cleanup_lxc
|
||||
|
||||
@ -13,7 +13,7 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,gmp,snmp,ldap,apcu" setup_php
|
||||
PHP_VERSION="8.3" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,gmp,snmp,ldap,apcu" setup_php
|
||||
|
||||
msg_info "Installing PHP-PEAR"
|
||||
$STD apt install -y \
|
||||
@ -33,7 +33,7 @@ sed -i -e "s/\(\$disable_installer = \).*/\1true;/" \
|
||||
-e "s/\(\$db\['pass'\] = \).*/\1'$MARIADB_DB_PASS';/" \
|
||||
-e "s/\(\$db\['name'\] = \).*/\1'$MARIADB_DB_NAME';/" \
|
||||
/opt/phpipam/config.php
|
||||
sed -i '/max_execution_time/s/= .*/= 600/' /etc/php/8.4/apache2/php.ini
|
||||
sed -i '/max_execution_time/s/= .*/= 600/' /etc/php/8.3/apache2/php.ini
|
||||
msg_ok "Installed phpIPAM"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@ -2787,8 +2787,9 @@ function setup_java() {
|
||||
fi
|
||||
|
||||
# Validate INSTALLED_VERSION is not empty if matched
|
||||
local JDK_COUNT=$(dpkg -l 2>/dev/null | grep -c "temurin-.*-jdk" || echo "0")
|
||||
if [[ -z "$INSTALLED_VERSION" && "$JDK_COUNT" -gt 0 ]]; then
|
||||
local JDK_COUNT=0
|
||||
JDK_COUNT=$(dpkg -l 2>/dev/null | grep -c "temurin-.*-jdk" || echo "0")
|
||||
if [[ -z "$INSTALLED_VERSION" && "${JDK_COUNT:-0}" -gt 0 ]]; then
|
||||
msg_warn "Found Temurin JDK but cannot determine version"
|
||||
INSTALLED_VERSION="0"
|
||||
fi
|
||||
|
||||
403
vm/docker-vm.sh
403
vm/docker-vm.sh
@ -5,8 +5,6 @@
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
source /dev/stdin <<<$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
|
||||
# Load Cloud-Init library for VM configuration
|
||||
source /dev/stdin <<<$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/cloud-init-lib.sh) 2>/dev/null || true
|
||||
|
||||
function header_info() {
|
||||
clear
|
||||
@ -26,12 +24,8 @@ RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
|
||||
METHOD=""
|
||||
NSAPP="docker-vm"
|
||||
var_os="debian"
|
||||
var_version="13"
|
||||
var_version="12"
|
||||
DISK_SIZE="10G"
|
||||
USE_CLOUD_INIT="no"
|
||||
INSTALL_PORTAINER="no"
|
||||
OS_TYPE=""
|
||||
OS_VERSION=""
|
||||
|
||||
YW=$(echo "\033[33m")
|
||||
BL=$(echo "\033[36m")
|
||||
@ -135,21 +129,6 @@ function msg_error() {
|
||||
echo -e "${BFR}${CROSS}${RD}${msg}${CL}"
|
||||
}
|
||||
|
||||
function spinner() {
|
||||
local pid=$1
|
||||
local msg="$2"
|
||||
local spin='⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏'
|
||||
local i=0
|
||||
|
||||
echo -ne "${TAB}${YW}${msg} "
|
||||
while kill -0 $pid 2>/dev/null; do
|
||||
i=$(((i + 1) % 10))
|
||||
echo -ne "\b${spin:$i:1}"
|
||||
sleep 0.1
|
||||
done
|
||||
echo -ne "\b"
|
||||
}
|
||||
|
||||
function check_root() {
|
||||
if [[ "$(id -u)" -ne 0 || $(ps -o comm= -p $PPID) == "sudo" ]]; then
|
||||
clear
|
||||
@ -174,7 +153,6 @@ pve_check() {
|
||||
msg_error "Supported: Proxmox VE version 8.0 – 8.9"
|
||||
exit 1
|
||||
fi
|
||||
PVE_MAJOR=8
|
||||
return 0
|
||||
fi
|
||||
|
||||
@ -186,7 +164,6 @@ pve_check() {
|
||||
msg_error "Supported: Proxmox VE version 9.0"
|
||||
exit 1
|
||||
fi
|
||||
PVE_MAJOR=9
|
||||
return 0
|
||||
fi
|
||||
|
||||
@ -225,114 +202,14 @@ function exit-script() {
|
||||
exit
|
||||
}
|
||||
|
||||
function select_os() {
|
||||
if OS_CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SELECT OS" --radiolist \
|
||||
"Choose Operating System for Docker VM" 14 68 4 \
|
||||
"debian13" "Debian 13 (Trixie) - Latest" ON \
|
||||
"debian12" "Debian 12 (Bookworm) - Stable" OFF \
|
||||
"ubuntu2404" "Ubuntu 24.04 LTS (Noble)" OFF \
|
||||
"ubuntu2204" "Ubuntu 22.04 LTS (Jammy)" OFF \
|
||||
3>&1 1>&2 2>&3); then
|
||||
case $OS_CHOICE in
|
||||
debian13)
|
||||
OS_TYPE="debian"
|
||||
OS_VERSION="13"
|
||||
OS_CODENAME="trixie"
|
||||
OS_DISPLAY="Debian 13 (Trixie)"
|
||||
;;
|
||||
debian12)
|
||||
OS_TYPE="debian"
|
||||
OS_VERSION="12"
|
||||
OS_CODENAME="bookworm"
|
||||
OS_DISPLAY="Debian 12 (Bookworm)"
|
||||
;;
|
||||
ubuntu2404)
|
||||
OS_TYPE="ubuntu"
|
||||
OS_VERSION="24.04"
|
||||
OS_CODENAME="noble"
|
||||
OS_DISPLAY="Ubuntu 24.04 LTS"
|
||||
;;
|
||||
ubuntu2204)
|
||||
OS_TYPE="ubuntu"
|
||||
OS_VERSION="22.04"
|
||||
OS_CODENAME="jammy"
|
||||
OS_DISPLAY="Ubuntu 22.04 LTS"
|
||||
;;
|
||||
esac
|
||||
echo -e "${OS}${BOLD}${DGN}Operating System: ${BGN}${OS_DISPLAY}${CL}"
|
||||
else
|
||||
exit-script
|
||||
fi
|
||||
}
|
||||
|
||||
function select_cloud_init() {
|
||||
# Ubuntu only has cloudimg variant (always Cloud-Init), so no choice needed
|
||||
if [ "$OS_TYPE" = "ubuntu" ]; then
|
||||
USE_CLOUD_INIT="yes"
|
||||
echo -e "${CLOUD}${BOLD}${DGN}Cloud-Init: ${BGN}yes (Ubuntu requires Cloud-Init)${CL}"
|
||||
return
|
||||
fi
|
||||
|
||||
# Debian has two image variants, so user can choose
|
||||
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "CLOUD-INIT" \
|
||||
--yesno "Enable Cloud-Init for VM configuration?\n\nCloud-Init allows automatic configuration of:\n• User accounts and passwords\n• SSH keys\n• Network settings (DHCP/Static)\n• DNS configuration\n\nYou can also configure these settings later in Proxmox UI.\n\nNote: Debian without Cloud-Init will use nocloud image with console auto-login." 18 68); then
|
||||
USE_CLOUD_INIT="yes"
|
||||
echo -e "${CLOUD}${BOLD}${DGN}Cloud-Init: ${BGN}yes${CL}"
|
||||
else
|
||||
USE_CLOUD_INIT="no"
|
||||
echo -e "${CLOUD}${BOLD}${DGN}Cloud-Init: ${BGN}no${CL}"
|
||||
fi
|
||||
}
|
||||
|
||||
function select_portainer() {
|
||||
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "PORTAINER" \
|
||||
--yesno "Install Portainer for Docker management?\n\nPortainer is a lightweight management UI for Docker.\n\nAccess after installation:\n• HTTP: http://<VM-IP>:9000\n• HTTPS: https://<VM-IP>:9443" 14 68); then
|
||||
INSTALL_PORTAINER="yes"
|
||||
echo -e "${ADVANCED}${BOLD}${DGN}Portainer: ${BGN}yes${CL}"
|
||||
else
|
||||
INSTALL_PORTAINER="no"
|
||||
echo -e "${ADVANCED}${BOLD}${DGN}Portainer: ${BGN}no${CL}"
|
||||
fi
|
||||
}
|
||||
|
||||
function get_image_url() {
|
||||
local arch=$(dpkg --print-architecture)
|
||||
case $OS_TYPE in
|
||||
debian)
|
||||
# Debian has two variants:
|
||||
# - generic: For Cloud-Init enabled VMs
|
||||
# - nocloud: For VMs without Cloud-Init (has console auto-login)
|
||||
if [ "$USE_CLOUD_INIT" = "yes" ]; then
|
||||
echo "https://cloud.debian.org/images/cloud/${OS_CODENAME}/latest/debian-${OS_VERSION}-generic-${arch}.qcow2"
|
||||
else
|
||||
echo "https://cloud.debian.org/images/cloud/${OS_CODENAME}/latest/debian-${OS_VERSION}-nocloud-${arch}.qcow2"
|
||||
fi
|
||||
;;
|
||||
ubuntu)
|
||||
# Ubuntu only has cloudimg variant (always with Cloud-Init support)
|
||||
echo "https://cloud-images.ubuntu.com/${OS_CODENAME}/current/${OS_CODENAME}-server-cloudimg-${arch}.img"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function default_settings() {
|
||||
# OS Selection - ALWAYS ask
|
||||
select_os
|
||||
|
||||
# Cloud-Init Selection - ALWAYS ask
|
||||
select_cloud_init
|
||||
|
||||
# Portainer Selection - ALWAYS ask
|
||||
select_portainer
|
||||
|
||||
# Set defaults for other settings
|
||||
VMID=$(get_valid_nextid)
|
||||
FORMAT=""
|
||||
MACHINE=" -machine q35"
|
||||
FORMAT=",efitype=4m"
|
||||
MACHINE=""
|
||||
DISK_CACHE=""
|
||||
DISK_SIZE="10G"
|
||||
HN="docker"
|
||||
CPU_TYPE=" -cpu host"
|
||||
CPU_TYPE=""
|
||||
CORE_COUNT="2"
|
||||
RAM_SIZE="4096"
|
||||
BRG="vmbr0"
|
||||
@ -341,14 +218,12 @@ function default_settings() {
|
||||
MTU=""
|
||||
START_VM="yes"
|
||||
METHOD="default"
|
||||
|
||||
# Display summary
|
||||
echo -e "${CONTAINERID}${BOLD}${DGN}Virtual Machine ID: ${BGN}${VMID}${CL}"
|
||||
echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}Q35 (Modern)${CL}"
|
||||
echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}i440fx${CL}"
|
||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}${CL}"
|
||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Cache: ${BGN}None${CL}"
|
||||
echo -e "${HOSTNAME}${BOLD}${DGN}Hostname: ${BGN}${HN}${CL}"
|
||||
echo -e "${OS}${BOLD}${DGN}CPU Model: ${BGN}Host${CL}"
|
||||
echo -e "${OS}${BOLD}${DGN}CPU Model: ${BGN}KVM64${CL}"
|
||||
echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}${CORE_COUNT}${CL}"
|
||||
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}${CL}"
|
||||
echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}${BRG}${CL}"
|
||||
@ -356,19 +231,10 @@ function default_settings() {
|
||||
echo -e "${VLANTAG}${BOLD}${DGN}VLAN: ${BGN}Default${CL}"
|
||||
echo -e "${DEFAULT}${BOLD}${DGN}Interface MTU Size: ${BGN}Default${CL}"
|
||||
echo -e "${GATEWAY}${BOLD}${DGN}Start VM when completed: ${BGN}yes${CL}"
|
||||
echo -e "${CREATING}${BOLD}${DGN}Creating a Docker VM using the above settings${CL}"
|
||||
echo -e "${CREATING}${BOLD}${DGN}Creating a Docker VM using the above default settings${CL}"
|
||||
}
|
||||
|
||||
function advanced_settings() {
|
||||
# OS Selection - ALWAYS ask (at the beginning)
|
||||
select_os
|
||||
|
||||
# Cloud-Init Selection - ALWAYS ask (at the beginning)
|
||||
select_cloud_init
|
||||
|
||||
# Portainer Selection - ALWAYS ask (at the beginning)
|
||||
select_portainer
|
||||
|
||||
METHOD="advanced"
|
||||
[ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
|
||||
while true; do
|
||||
@ -389,15 +255,15 @@ function advanced_settings() {
|
||||
done
|
||||
|
||||
if MACH=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "MACHINE TYPE" --radiolist --cancel-button Exit-Script "Choose Type" 10 58 2 \
|
||||
"q35" "Q35 (Modern, PCIe)" ON \
|
||||
"i440fx" "i440fx (Legacy, PCI)" OFF \
|
||||
"i440fx" "Machine i440fx" ON \
|
||||
"q35" "Machine q35" OFF \
|
||||
3>&1 1>&2 2>&3); then
|
||||
if [ $MACH = q35 ]; then
|
||||
echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}Q35 (Modern)${CL}"
|
||||
echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}$MACH${CL}"
|
||||
FORMAT=""
|
||||
MACHINE=" -machine q35"
|
||||
else
|
||||
echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}i440fx (Legacy)${CL}"
|
||||
echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}$MACH${CL}"
|
||||
FORMAT=",efitype=4m"
|
||||
MACHINE=""
|
||||
fi
|
||||
@ -448,8 +314,8 @@ function advanced_settings() {
|
||||
fi
|
||||
|
||||
if CPU_TYPE1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "CPU MODEL" --radiolist "Choose" --cancel-button Exit-Script 10 58 2 \
|
||||
"1" "Host (Recommended)" ON \
|
||||
"0" "KVM64" OFF \
|
||||
"0" "KVM64 (Default)" ON \
|
||||
"1" "Host" OFF \
|
||||
3>&1 1>&2 2>&3); then
|
||||
if [ $CPU_TYPE1 = "1" ]; then
|
||||
echo -e "${OS}${BOLD}${DGN}CPU Model: ${BGN}Host${CL}"
|
||||
@ -596,18 +462,8 @@ else
|
||||
fi
|
||||
msg_ok "Using ${CL}${BL}$STORAGE${CL} ${GN}for Storage Location."
|
||||
msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}."
|
||||
|
||||
if ! command -v virt-customize &>/dev/null; then
|
||||
msg_info "Installing Pre-Requisite libguestfs-tools onto Host"
|
||||
apt-get -qq update >/dev/null
|
||||
apt-get -qq install libguestfs-tools lsb-release -y >/dev/null
|
||||
# Workaround for Proxmox VE 9.0 libguestfs issue
|
||||
apt-get -qq install dhcpcd-base -y >/dev/null 2>&1 || true
|
||||
msg_ok "Installed libguestfs-tools successfully"
|
||||
fi
|
||||
|
||||
msg_info "Retrieving the URL for the ${OS_DISPLAY} Qcow2 Disk Image"
|
||||
URL=$(get_image_url)
|
||||
msg_info "Retrieving the URL for the Debian 12 Qcow2 Disk Image"
|
||||
URL="https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-nocloud-$(dpkg --print-architecture).qcow2"
|
||||
sleep 2
|
||||
msg_ok "${CL}${BL}${URL}${CL}"
|
||||
curl -f#SL -o "$(basename "$URL")" "$URL"
|
||||
@ -637,162 +493,32 @@ for i in {0,1}; do
|
||||
eval DISK${i}_REF=${STORAGE}:${DISK_REF:-}${!disk}
|
||||
done
|
||||
|
||||
echo -e "${INFO}${BOLD}${GN}Preparing ${OS_DISPLAY} Qcow2 Disk Image${CL}"
|
||||
|
||||
# Set DNS for libguestfs appliance environment (not the guest)
|
||||
export LIBGUESTFS_BACKEND_SETTINGS=dns=8.8.8.8,1.1.1.1
|
||||
|
||||
# Always create first-boot installation script as fallback
|
||||
virt-customize -q -a "${FILE}" --run-command "cat > /root/install-docker.sh << 'INSTALLEOF'
|
||||
#!/bin/bash
|
||||
# Log output to file
|
||||
exec > /var/log/install-docker.log 2>&1
|
||||
echo \"[\\$(date)] Starting Docker installation on first boot\"
|
||||
|
||||
# Check if Docker is already installed
|
||||
if command -v docker >/dev/null 2>&1; then
|
||||
echo \"[\\$(date)] Docker already installed, checking if running\"
|
||||
systemctl start docker 2>/dev/null || true
|
||||
if docker info >/dev/null 2>&1; then
|
||||
echo \"[\\$(date)] Docker is already working, exiting\"
|
||||
exit 0
|
||||
fi
|
||||
if ! command -v virt-customize &>/dev/null; then
|
||||
msg_info "Installing Pre-Requisite libguestfs-tools onto Host"
|
||||
apt-get -qq update >/dev/null
|
||||
apt-get -qq install libguestfs-tools lsb-release -y >/dev/null
|
||||
# Workaround for Proxmox VE 9.0 libguestfs issue
|
||||
apt-get -qq install dhcpcd-base -y >/dev/null 2>&1 || true
|
||||
msg_ok "Installed libguestfs-tools successfully"
|
||||
fi
|
||||
|
||||
# Wait for network to be fully available
|
||||
for i in {1..30}; do
|
||||
if ping -c 1 8.8.8.8 >/dev/null 2>&1; then
|
||||
echo \"[\\$(date)] Network is available\"
|
||||
break
|
||||
fi
|
||||
echo \"[\\$(date)] Waiting for network... attempt \\$i/30\"
|
||||
sleep 2
|
||||
done
|
||||
|
||||
# Configure DNS
|
||||
echo \"[\\$(date)] Configuring DNS\"
|
||||
mkdir -p /etc/systemd/resolved.conf.d
|
||||
cat > /etc/systemd/resolved.conf.d/dns.conf << DNSEOF
|
||||
[Resolve]
|
||||
DNS=8.8.8.8 1.1.1.1
|
||||
FallbackDNS=8.8.4.4 1.0.0.1
|
||||
DNSEOF
|
||||
systemctl restart systemd-resolved 2>/dev/null || true
|
||||
|
||||
# Update package lists
|
||||
echo \"[\\$(date)] Updating package lists\"
|
||||
apt-get update
|
||||
|
||||
# Install base packages if not already installed
|
||||
echo \"[\\$(date)] Installing base packages\"
|
||||
apt-get install -y qemu-guest-agent curl ca-certificates 2>/dev/null || true
|
||||
|
||||
# Install Docker
|
||||
echo \"[\\$(date)] Installing Docker\"
|
||||
curl -fsSL https://get.docker.com | sh
|
||||
systemctl enable docker
|
||||
systemctl start docker
|
||||
|
||||
# Wait for Docker to be ready
|
||||
for i in {1..10}; do
|
||||
if docker info >/dev/null 2>&1; then
|
||||
echo \"[\\$(date)] Docker is ready\"
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Install Portainer if requested
|
||||
INSTALL_PORTAINER_PLACEHOLDER
|
||||
|
||||
# Create completion flag
|
||||
echo \"[\\$(date)] Docker installation completed successfully\"
|
||||
touch /root/.docker-installed
|
||||
INSTALLEOF" >/dev/null
|
||||
|
||||
# Replace Portainer placeholder based on user choice
|
||||
if [ "$INSTALL_PORTAINER" = "yes" ]; then
|
||||
virt-customize -q -a "${FILE}" --run-command "sed -i 's|INSTALL_PORTAINER_PLACEHOLDER|echo \"[\\\\\\$(date)] Installing Portainer\"\\\ndocker volume create portainer_data\\\ndocker run -d -p 9000:9000 -p 9443:9443 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest\\\necho \"[\\\\\\$(date)] Portainer installed and started\"|' /root/install-docker.sh" >/dev/null
|
||||
else
|
||||
virt-customize -q -a "${FILE}" --run-command "sed -i 's|INSTALL_PORTAINER_PLACEHOLDER|echo \"[\\\\\\$(date)] Skipping Portainer installation\"|' /root/install-docker.sh" >/dev/null
|
||||
fi
|
||||
|
||||
virt-customize -q -a "${FILE}" --run-command "chmod +x /root/install-docker.sh" >/dev/null
|
||||
|
||||
virt-customize -q -a "${FILE}" --run-command "cat > /etc/systemd/system/install-docker.service << 'SERVICEEOF'
|
||||
[Unit]
|
||||
Description=Install Docker on First Boot
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
ConditionPathExists=!/root/.docker-installed
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/root/install-docker.sh
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
SERVICEEOF" >/dev/null
|
||||
|
||||
virt-customize -q -a "${FILE}" --run-command "systemctl enable install-docker.service" >/dev/null
|
||||
|
||||
# Try to install packages and Docker during image customization
|
||||
DOCKER_INSTALLED_ON_FIRST_BOOT="yes" # Assume first-boot by default
|
||||
|
||||
msg_info "Installing base packages (qemu-guest-agent, curl, ca-certificates)"
|
||||
if virt-customize -a "${FILE}" --install qemu-guest-agent,curl,ca-certificates >/dev/null 2>&1; then
|
||||
msg_ok "Installed base packages"
|
||||
|
||||
msg_info "Installing Docker via get.docker.com"
|
||||
if virt-customize -q -a "${FILE}" --run-command "curl -fsSL https://get.docker.com | sh" >/dev/null 2>&1 &&
|
||||
virt-customize -q -a "${FILE}" --run-command "systemctl enable docker" >/dev/null 2>&1; then
|
||||
msg_ok "Installed Docker"
|
||||
|
||||
# Optimize Docker daemon configuration
|
||||
virt-customize -q -a "${FILE}" --run-command "mkdir -p /etc/docker" >/dev/null 2>&1
|
||||
virt-customize -q -a "${FILE}" --run-command "cat > /etc/docker/daemon.json << 'DOCKEREOF'
|
||||
{
|
||||
\"storage-driver\": \"overlay2\",
|
||||
\"log-driver\": \"json-file\",
|
||||
\"log-opts\": {
|
||||
\"max-size\": \"10m\",
|
||||
\"max-file\": \"3\"
|
||||
}
|
||||
}
|
||||
DOCKEREOF" >/dev/null 2>&1
|
||||
|
||||
# Create completion flag to prevent first-boot script from running
|
||||
virt-customize -q -a "${FILE}" --run-command "touch /root/.docker-installed" >/dev/null 2>&1
|
||||
|
||||
DOCKER_INSTALLED_ON_FIRST_BOOT="no"
|
||||
else
|
||||
msg_ok "Docker will be installed on first boot (installation failed during image preparation)"
|
||||
fi
|
||||
else
|
||||
msg_ok "Packages will be installed on first boot (network not available during image preparation)"
|
||||
fi
|
||||
|
||||
# Set hostname and clean machine-id
|
||||
virt-customize -q -a "${FILE}" --hostname "${HN}" >/dev/null 2>&1
|
||||
virt-customize -q -a "${FILE}" --run-command "truncate -s 0 /etc/machine-id" >/dev/null 2>&1
|
||||
virt-customize -q -a "${FILE}" --run-command "rm -f /var/lib/dbus/machine-id" >/dev/null 2>&1
|
||||
|
||||
# Configure SSH to allow root login with password when Cloud-Init is enabled
|
||||
# (Cloud-Init will set the password, but SSH needs to accept password authentication)
|
||||
if [ "$USE_CLOUD_INIT" = "yes" ]; then
|
||||
virt-customize -q -a "${FILE}" --run-command "sed -i 's/^#*PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config" >/dev/null 2>&1 || true
|
||||
virt-customize -q -a "${FILE}" --run-command "sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config" >/dev/null 2>&1 || true
|
||||
fi
|
||||
msg_info "Adding Docker and Docker Compose Plugin to Debian 12 Qcow2 Disk Image"
|
||||
virt-customize -q -a "${FILE}" --install qemu-guest-agent,apt-transport-https,ca-certificates,curl,gnupg,software-properties-common,lsb-release >/dev/null &&
|
||||
virt-customize -q -a "${FILE}" --run-command "mkdir -p /etc/apt/keyrings && curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg" >/dev/null &&
|
||||
virt-customize -q -a "${FILE}" --run-command "echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable' > /etc/apt/sources.list.d/docker.list" >/dev/null &&
|
||||
virt-customize -q -a "${FILE}" --run-command "apt-get update -qq && apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin" >/dev/null &&
|
||||
virt-customize -q -a "${FILE}" --run-command "systemctl enable docker" >/dev/null &&
|
||||
virt-customize -q -a "${FILE}" --hostname "${HN}" >/dev/null &&
|
||||
virt-customize -q -a "${FILE}" --run-command "echo -n > /etc/machine-id" >/dev/null
|
||||
msg_ok "Added Docker and Docker Compose Plugin to Debian 12 Qcow2 Disk Image successfully"
|
||||
|
||||
msg_info "Expanding root partition to use full disk space"
|
||||
qemu-img create -f qcow2 expanded.qcow2 ${DISK_SIZE} >/dev/null 2>&1
|
||||
virt-resize --quiet --expand /dev/sda1 ${FILE} expanded.qcow2 >/dev/null 2>&1
|
||||
virt-resize --expand /dev/sda1 ${FILE} expanded.qcow2 >/dev/null 2>&1
|
||||
mv expanded.qcow2 ${FILE} >/dev/null 2>&1
|
||||
msg_ok "Expanded image to full size"
|
||||
|
||||
msg_info "Creating a Docker VM"
|
||||
|
||||
qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
|
||||
-name $HN -tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
|
||||
@ -802,22 +528,9 @@ qm set $VMID \
|
||||
-scsi0 ${DISK1_REF},${DISK_CACHE}${THIN}size=${DISK_SIZE} \
|
||||
-boot order=scsi0 \
|
||||
-serial0 socket >/dev/null
|
||||
qm resize $VMID scsi0 8G >/dev/null
|
||||
qm set $VMID --agent enabled=1 >/dev/null
|
||||
|
||||
# Proxmox 9: Enable I/O Thread for better disk performance
|
||||
if [ "${PVE_MAJOR:-8}" = "9" ]; then
|
||||
qm set $VMID -iothread 1 >/dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
msg_ok "Created a Docker VM ${CL}${BL}(${HN})${CL}"
|
||||
|
||||
# Add Cloud-Init drive if requested
|
||||
if [ "$USE_CLOUD_INIT" = "yes" ]; then
|
||||
msg_info "Configuring Cloud-Init"
|
||||
setup_cloud_init "$VMID" "$STORAGE" "$HN" "yes" >/dev/null 2>&1
|
||||
msg_ok "Cloud-Init configured"
|
||||
fi
|
||||
|
||||
DESCRIPTION=$(
|
||||
cat <<EOF
|
||||
<div align='center'>
|
||||
@ -850,57 +563,11 @@ EOF
|
||||
)
|
||||
qm set "$VMID" -description "$DESCRIPTION" >/dev/null
|
||||
|
||||
msg_ok "Created a Docker VM ${CL}${BL}(${HN})"
|
||||
if [ "$START_VM" == "yes" ]; then
|
||||
msg_info "Starting Docker VM"
|
||||
qm start $VMID >/dev/null 2>&1
|
||||
qm start $VMID
|
||||
msg_ok "Started Docker VM"
|
||||
fi
|
||||
|
||||
# Try to get VM IP address silently in background (max 10 seconds)
|
||||
VM_IP=""
|
||||
if [ "$START_VM" == "yes" ]; then
|
||||
for i in {1..5}; do
|
||||
VM_IP=$(qm guest cmd "$VMID" network-get-interfaces 2>/dev/null |
|
||||
jq -r '.[] | select(.name != "lo") | ."ip-addresses"[]? | select(."ip-address-type" == "ipv4") | ."ip-address"' 2>/dev/null |
|
||||
grep -v "^127\." | head -1)
|
||||
|
||||
if [ -n "$VM_IP" ]; then
|
||||
break
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
fi
|
||||
|
||||
# Display information about installed components
|
||||
echo -e "\n${INFO}${BOLD}${GN}VM Configuration Summary:${CL}"
|
||||
echo -e "${TAB}${DGN}VM ID: ${BGN}${VMID}${CL}"
|
||||
echo -e "${TAB}${DGN}Hostname: ${BGN}${HN}${CL}"
|
||||
echo -e "${TAB}${DGN}OS: ${BGN}${OS_DISPLAY}${CL}"
|
||||
|
||||
if [ -n "$VM_IP" ]; then
|
||||
echo -e "${TAB}${DGN}IP Address: ${BGN}${VM_IP}${CL}"
|
||||
fi
|
||||
|
||||
if [ "$DOCKER_INSTALLED_ON_FIRST_BOOT" = "yes" ]; then
|
||||
echo -e "${TAB}${DGN}Docker: ${BGN}Will be installed on first boot${CL}"
|
||||
echo -e "${TAB}${YW}⚠️ Docker installation will happen automatically after VM starts${CL}"
|
||||
echo -e "${TAB}${YW}⚠️ Wait 2-3 minutes after boot for installation to complete${CL}"
|
||||
echo -e "${TAB}${YW}⚠️ Check installation progress: ${BL}cat /var/log/install-docker.log${CL}"
|
||||
else
|
||||
echo -e "${TAB}${DGN}Docker: ${BGN}Latest (via get.docker.com)${CL}"
|
||||
fi
|
||||
|
||||
if [ "$INSTALL_PORTAINER" = "yes" ]; then
|
||||
if [ -n "$VM_IP" ]; then
|
||||
echo -e "${TAB}${DGN}Portainer: ${BGN}https://${VM_IP}:9443${CL}"
|
||||
else
|
||||
echo -e "${TAB}${DGN}Portainer: ${BGN}Will be accessible at https://<VM-IP>:9443${CL}"
|
||||
echo -e "${TAB}${YW}⚠️ Get IP with: ${BL}qm guest cmd ${VMID} network-get-interfaces${CL}"
|
||||
fi
|
||||
fi
|
||||
if [ "$USE_CLOUD_INIT" = "yes" ]; then
|
||||
display_cloud_init_info "$VMID" "$HN"
|
||||
fi
|
||||
|
||||
post_update_to_api "done" "none"
|
||||
msg_ok "Completed Successfully!\n"
|
||||
|
||||
Reference in New Issue
Block a user