mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-11 13:52:51 +00:00
Compare commits
108 Commits
2025-11-04
...
update_ver
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9584e6eda8 | ||
|
|
f099f472ce | ||
|
|
00b978df29 | ||
|
|
c054403325 | ||
|
|
45aec67359 | ||
|
|
774127eece | ||
|
|
d85e72fd0f | ||
|
|
4a5a0e3966 | ||
|
|
ec2726dff5 | ||
|
|
bf50900fdf | ||
|
|
57af58d634 | ||
|
|
0b2b13c79a | ||
|
|
508eb70d13 | ||
|
|
e90353f20b | ||
|
|
37fc378024 | ||
|
|
b1d782dec6 | ||
|
|
ef9a008d2a | ||
|
|
de07b62cff | ||
|
|
8b30ed74df | ||
|
|
53e6422ee3 | ||
|
|
257e89cc5c | ||
|
|
26090bad32 | ||
|
|
787a99fc27 | ||
|
|
0b122749b7 | ||
|
|
48c9a16673 | ||
|
|
9bf67982e3 | ||
|
|
008c037cf7 | ||
|
|
0ab91cc4c1 | ||
|
|
dfa05f3845 | ||
|
|
a3d42dba45 | ||
|
|
a89b841684 | ||
|
|
88097dcd19 | ||
|
|
1a76fc0095 | ||
|
|
69c2e9ed2c | ||
|
|
9d876e2d06 | ||
|
|
c0c5fd4532 | ||
|
|
0e7be1dd1e | ||
|
|
6e349dbcef | ||
|
|
9b3879ef41 | ||
|
|
e21ea05ddc | ||
|
|
40aeab4e38 | ||
|
|
7f91bff501 | ||
|
|
540194e29a | ||
|
|
ac7db35a59 | ||
|
|
5a71b1389f | ||
|
|
e8846642ef | ||
|
|
8cb1675f89 | ||
|
|
a4ccf7d1b0 | ||
|
|
db29b241a9 | ||
|
|
528575f737 | ||
|
|
ac05febbbd | ||
|
|
bd8f8e6a0d | ||
|
|
0fb4e4ad8c | ||
|
|
5d381910a3 | ||
|
|
9f0720dc91 | ||
|
|
85456ff3f3 | ||
|
|
822ea4b267 | ||
|
|
cae6f1a3d5 | ||
|
|
3c5277b423 | ||
|
|
3f04a6df3b | ||
|
|
1ba79a3d8d | ||
|
|
baa4344663 | ||
|
|
82b9cac71a | ||
|
|
9c7d09d368 | ||
|
|
a4c8a315cc | ||
|
|
faeedc729e | ||
|
|
dfcc26e18d | ||
|
|
ea756dc87e | ||
|
|
96fb53514d | ||
|
|
aeaefe2ec0 | ||
|
|
0ea12a3485 | ||
|
|
f957cb9d21 | ||
|
|
ce33e59bf7 | ||
|
|
af432445e1 | ||
|
|
a68cfab83f | ||
|
|
d1ca42a403 | ||
|
|
2909a570b3 | ||
|
|
a545cad897 | ||
|
|
b7bc5831b4 | ||
|
|
d4d175d689 | ||
|
|
b16501652c | ||
|
|
003d6327de | ||
|
|
602fbaf79e | ||
|
|
0458d07744 | ||
|
|
af3feb69bf | ||
|
|
150f0ee456 | ||
|
|
b5cf70230f | ||
|
|
67d8bc2828 | ||
|
|
cc16f4bb94 | ||
|
|
1e679be149 | ||
|
|
6add81de6a | ||
|
|
66f81a5894 | ||
|
|
72391a96a8 | ||
|
|
890ef7a4a1 | ||
|
|
0f16576ea6 | ||
|
|
b61756f259 | ||
|
|
3fa9a2add6 | ||
|
|
4eedff17b6 | ||
|
|
cad5b3e059 | ||
|
|
a3199be759 | ||
|
|
4c374e50dc | ||
|
|
258b2c817e | ||
|
|
fb1a558dc6 | ||
|
|
b2ee06d8cb | ||
|
|
1f261a382c | ||
|
|
b60aef556a | ||
|
|
179f4d5504 | ||
|
|
eacff384e2 |
126
CHANGELOG.md
126
CHANGELOG.md
@@ -10,8 +10,134 @@
|
|||||||
> [!CAUTION]
|
> [!CAUTION]
|
||||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||||
|
|
||||||
|
## 2025-11-11
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- 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))
|
||||||
|
|
||||||
|
### 🧰 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
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Plex: extend checking for deb822 source [@Matt17000](https://github.com/Matt17000) ([#9036](https://github.com/community-scripts/ProxmoxVE/pull/9036))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- tools.func: add helper functions for MariaDB and PostgreSQL setup [@MickLesk](https://github.com/MickLesk) ([#9026](https://github.com/community-scripts/ProxmoxVE/pull/9026))
|
||||||
|
- core: update message for no available updates scenario (if pinned) [@MickLesk](https://github.com/MickLesk) ([#9021](https://github.com/community-scripts/ProxmoxVE/pull/9021))
|
||||||
|
- Migrate Open WebUI to uv-based installation [@MickLesk](https://github.com/MickLesk) ([#9019](https://github.com/community-scripts/ProxmoxVE/pull/9019))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: phpIPAM [@MickLesk](https://github.com/MickLesk) ([#9027](https://github.com/community-scripts/ProxmoxVE/pull/9027))
|
||||||
|
|
||||||
|
## 2025-11-09
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- core: improve log cleaning [@MickLesk](https://github.com/MickLesk) ([#8999](https://github.com/community-scripts/ProxmoxVE/pull/8999))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Add wkhtmltopdf to Odoo installation dependencies [@akileos](https://github.com/akileos) ([#9010](https://github.com/community-scripts/ProxmoxVE/pull/9010))
|
||||||
|
- fix(jotty): Comments removed from variables, as they are interpreted. [@schneider-de-com](https://github.com/schneider-de-com) ([#9002](https://github.com/community-scripts/ProxmoxVE/pull/9002))
|
||||||
|
- fix(n8n): Add python3-setuptools dependency for Debian 13 [@chrikodo](https://github.com/chrikodo) ([#9007](https://github.com/community-scripts/ProxmoxVE/pull/9007))
|
||||||
|
- Paperless-ngx: hotfix config path [@vhsdream](https://github.com/vhsdream) ([#9003](https://github.com/community-scripts/ProxmoxVE/pull/9003))
|
||||||
|
- Paperless-NGX: Move config backup outside of app folder [@vhsdream](https://github.com/vhsdream) ([#8996](https://github.com/community-scripts/ProxmoxVE/pull/8996))
|
||||||
|
|
||||||
|
## 2025-11-08
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Technitium DNS: Fix update [@tremor021](https://github.com/tremor021) ([#8980](https://github.com/community-scripts/ProxmoxVE/pull/8980))
|
||||||
|
- MediaManager: add LOG_FILE to start.sh script; fix BASE_PATH and PUBLIC_API_URL [@vhsdream](https://github.com/vhsdream) ([#8981](https://github.com/community-scripts/ProxmoxVE/pull/8981))
|
||||||
|
- Firefly: Fix missing command in update script [@tremor021](https://github.com/tremor021) ([#8972](https://github.com/community-scripts/ProxmoxVE/pull/8972))
|
||||||
|
- MongoDB: Remove unused message [@tremor021](https://github.com/tremor021) ([#8969](https://github.com/community-scripts/ProxmoxVE/pull/8969))
|
||||||
|
- Set TZ=Etc/UTC in Ghostfolio installation script [@LuloDev](https://github.com/LuloDev) ([#8961](https://github.com/community-scripts/ProxmoxVE/pull/8961))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- paperless: refactor - remove backup after update and enable clean install [@MickLesk](https://github.com/MickLesk) ([#8988](https://github.com/community-scripts/ProxmoxVE/pull/8988))
|
||||||
|
- Refactor setup_deb822_repo for optional architectures [@MickLesk](https://github.com/MickLesk) ([#8983](https://github.com/community-scripts/ProxmoxVE/pull/8983))
|
||||||
|
|
||||||
|
## 2025-11-07
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- infisical ([#8926](https://github.com/community-scripts/ProxmoxVE/pull/8926))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Update script URLs to ProxmoxVE repository [@MickLesk](https://github.com/MickLesk) ([#8946](https://github.com/community-scripts/ProxmoxVE/pull/8946))
|
||||||
|
- tools.func: fix amd64 arm64 mismatch [@MickLesk](https://github.com/MickLesk) ([#8943](https://github.com/community-scripts/ProxmoxVE/pull/8943))
|
||||||
|
- ghostfolio: refactor CoinGecko key prompts in installer [@MickLesk](https://github.com/MickLesk) ([#8935](https://github.com/community-scripts/ProxmoxVE/pull/8935))
|
||||||
|
- flaresolverr: pin release to 3.4.3 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8937](https://github.com/community-scripts/ProxmoxVE/pull/8937))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Pangolin: Add Traefik proxy [@tremor021](https://github.com/tremor021) ([#8952](https://github.com/community-scripts/ProxmoxVE/pull/8952))
|
||||||
|
|
||||||
|
## 2025-11-06
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- OpenProject: Remove duplicate server_path_prefix configuration [@tremor021](https://github.com/tremor021) ([#8919](https://github.com/community-scripts/ProxmoxVE/pull/8919))
|
||||||
|
- Grist: Fix change directory to /opt/grist before build steps [@tremor021](https://github.com/tremor021) ([#8913](https://github.com/community-scripts/ProxmoxVE/pull/8913))
|
||||||
|
- Jotty hotfix: SSO_FALLBACK_LOCAL value [@vhsdream](https://github.com/vhsdream) ([#8907](https://github.com/community-scripts/ProxmoxVE/pull/8907))
|
||||||
|
- npm: add Debian version check to update script [@MickLesk](https://github.com/MickLesk) ([#8901](https://github.com/community-scripts/ProxmoxVE/pull/8901))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- MongoDB: install script now use setup_mongodb [@MickLesk](https://github.com/MickLesk) ([#8897](https://github.com/community-scripts/ProxmoxVE/pull/8897))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Graylog [@tremor021](https://github.com/tremor021) ([#8912](https://github.com/community-scripts/ProxmoxVE/pull/8912))
|
||||||
|
|
||||||
## 2025-11-05
|
## 2025-11-05
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Immich: Pin version to 2.2.3 [@vhsdream](https://github.com/vhsdream) ([#8861](https://github.com/community-scripts/ProxmoxVE/pull/8861))
|
||||||
|
- Jotty: increase RAM to 4GB [@vhsdream](https://github.com/vhsdream) ([#8887](https://github.com/community-scripts/ProxmoxVE/pull/8887))
|
||||||
|
- Zabbix: fix agent service recognition in update [@MickLesk](https://github.com/MickLesk) ([#8881](https://github.com/community-scripts/ProxmoxVE/pull/8881))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- fix: npm: refactor for v2.13.x [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8870](https://github.com/community-scripts/ProxmoxVE/pull/8870))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Open WebUI [@tremor021](https://github.com/tremor021) ([#8874](https://github.com/community-scripts/ProxmoxVE/pull/8874))
|
||||||
|
- Refactor(tools.func): Add Retry Logic, OS-Upgrade Safety, Smart Version Detection + 10 Critical Bugfixes [@MickLesk](https://github.com/MickLesk) ([#8871](https://github.com/community-scripts/ProxmoxVE/pull/8871))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- npm: Increase RAM and HDD, update Certbot notes [@MickLesk](https://github.com/MickLesk) ([#8882](https://github.com/community-scripts/ProxmoxVE/pull/8882))
|
||||||
|
- Update config_path in donetick.json [@fyxtro](https://github.com/fyxtro) ([#8872](https://github.com/community-scripts/ProxmoxVE/pull/8872))
|
||||||
|
|
||||||
## 2025-11-04
|
## 2025-11-04
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
286
README.md
286
README.md
@@ -1,114 +1,266 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<p align="center">
|
<img src="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo-81x112.png" height="120px" alt="Proxmox VE Helper-Scripts Logo" />
|
||||||
<a href="#">
|
|
||||||
<img src="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo-81x112.png" height="100px" />
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div style="border: 2px solid #d1d5db; padding: 20px; border-radius: 8px; background-color: #f9fafb;">
|
<h1>Proxmox VE Helper-Scripts</h1>
|
||||||
<h2 align="center">Proxmox VE Helper-Scripts</h2>
|
<p><em>A Community Legacy in Memory of @tteck</em></p>
|
||||||
<p align="center">A Community Legacy in Memory of @tteck</p>
|
|
||||||
<p align="center">
|
<p>
|
||||||
<a href="https://helper-scripts.com">
|
<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>
|
||||||
<a href="https://discord.gg/3AnUqsXnmK">
|
<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" />
|
<img src="https://img.shields.io/badge/💬_Discord-Join-7289da?style=for-the-badge&labelColor=2d3748" alt="Discord" />
|
||||||
</a>
|
</a>
|
||||||
<a href="https://ko-fi.com/community_scripts">
|
<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/❤️_Support-Donate-FF5F5F?style=for-the-badge&labelColor=2d3748" alt="Donate" />
|
||||||
</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>
|
</a>
|
||||||
</p>
|
</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>
|
</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.
|
<div align="center">
|
||||||
- **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.
|
|
||||||
|
|
||||||
---
|
<table>
|
||||||
## ✅ Requirements
|
<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:
|
</div>
|
||||||
|
|
||||||
- **Proxmox VE version**: 8.x or higher
|
|
||||||
- **Linux**: Compatible with most distributions
|
|
||||||
- **Dependencies**: bash and curl should be installed.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🚀 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/).
|
### Method 1: One-Click Web Installer
|
||||||
2. Search for the desired script, e.g., **"Home Assistant OS VM"**.
|
|
||||||
3. Copy the provided **Bash command** from the **"How To Install"** section.
|
The fastest way to get started:
|
||||||
4. Open the Proxmox shell on your **main node** and paste the command.
|
|
||||||
5. Press enter to start the installation! 🚀
|
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
|
<table>
|
||||||
- **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.
|
<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.
|
<table>
|
||||||
- **GitHub Discussions**: [Ask questions or report issues](https://github.com/community-scripts/ProxmoxVE/discussions).
|
<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">
|
This project is maintained by volunteers in memory of tteck. Your support helps us maintain infrastructure, improve documentation, and give back to important causes.
|
||||||
<picture>
|
|
||||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date&theme=dark" />
|
**🎗️ 30% of all donations go directly to cancer research and hospice care**
|
||||||
<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" />
|
<div align="center">
|
||||||
</picture>
|
|
||||||
|
<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>
|
</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
|
## 📜 License
|
||||||
|
|
||||||
This project is licensed under the [MIT License](LICENSE).
|
This project is licensed under the **[MIT License](LICENSE)** - feel free to use, modify, and distribute.
|
||||||
|
|
||||||
</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>
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<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: |
|
| 9.0.x | :white_check_mark: |
|
||||||
| 8.4.x | :white_check_mark: |
|
| 8.4.x | :white_check_mark: |
|
||||||
| 8.3.x | :white_check_mark: |
|
| 8.3.x | Limited support* ❕ |
|
||||||
| 8.2.x | :white_check_mark: |
|
| 8.2.x | Limited support* ❕ |
|
||||||
| 8.1.x | :white_check_mark: |
|
| 8.1.x | Limited support* ❕ |
|
||||||
| 8.0.x | Limited support* ❕ |
|
| 8.0.x | Limited support* ❕ |
|
||||||
| < 8.0 | :x: |
|
| < 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}"
|
|
||||||
@@ -51,7 +51,7 @@ function update_script() {
|
|||||||
find /opt/firefly/storage -type f -exec chmod 664 {} \;
|
find /opt/firefly/storage -type f -exec chmod 664 {} \;
|
||||||
mkdir -p /opt/firefly/storage/framework/{cache/data,sessions,views}
|
mkdir -p /opt/firefly/storage/framework/{cache/data,sessions,views}
|
||||||
$STD sudo -u www-data php /opt/firefly/artisan cache:clear
|
$STD sudo -u www-data php /opt/firefly/artisan cache:clear
|
||||||
|
cd /opt/firefly
|
||||||
$STD php artisan migrate --seed --force
|
$STD php artisan migrate --seed --force
|
||||||
$STD php artisan cache:clear
|
$STD php artisan cache:clear
|
||||||
$STD php artisan view:clear
|
$STD php artisan view:clear
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
|||||||
var_ram="${var_ram:-8192}"
|
var_ram="${var_ram:-8192}"
|
||||||
var_disk="${var_disk:-30}"
|
var_disk="${var_disk:-30}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-13}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -28,15 +28,32 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop graylog-datanode
|
systemctl stop graylog-datanode
|
||||||
systemctl stop graylog-server
|
systemctl stop graylog-server
|
||||||
msg_info "Stopped Service"
|
msg_info "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating $APP"
|
CURRENT_VERSION=$(apt list --installed 2>/dev/null | grep graylog-server | grep -oP '\d+\.\d+\.\d+')
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get upgrade -y
|
if dpkg --compare-versions "$CURRENT_VERSION" lt "6.3"; then
|
||||||
msg_ok "Updated $APP"
|
MONGO_VERSION="8.0" setup_mongodb
|
||||||
|
|
||||||
|
msg_info "Updating Graylog"
|
||||||
|
$STD apt update
|
||||||
|
$STD apt upgrade -y
|
||||||
|
curl -fsSL "https://packages.graylog2.org/repo/packages/graylog-7.0-repository_latest.deb" -o "graylog-7.0-repository_latest.deb"
|
||||||
|
$STD dpkg -i graylog-7.0-repository_latest.deb
|
||||||
|
$STD apt update
|
||||||
|
$STD apt install -y graylog-server graylog-datanode
|
||||||
|
rm -f graylog-7.0-repository_latest.deb
|
||||||
|
msg_ok "Updated Graylog"
|
||||||
|
elif dpkg --compare-versions "$CURRENT_VERSION" ge "7.0"; then
|
||||||
|
msg_info "Updating Graylog"
|
||||||
|
$STD apt update
|
||||||
|
$STD apt upgrade -y
|
||||||
|
msg_ok "Updated Graylog"
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start graylog-datanode
|
systemctl start graylog-datanode
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ function update_script() {
|
|||||||
cp -r /opt/grist_bak/docs/* /opt/grist/docs/
|
cp -r /opt/grist_bak/docs/* /opt/grist/docs/
|
||||||
cp /opt/grist_bak/grist-sessions.db /opt/grist/grist-sessions.db
|
cp /opt/grist_bak/grist-sessions.db /opt/grist/grist-sessions.db
|
||||||
cp /opt/grist_bak/landing.db /opt/grist/landing.db
|
cp /opt/grist_bak/landing.db /opt/grist/landing.db
|
||||||
|
cd /opt/grist
|
||||||
$STD yarn install
|
$STD yarn install
|
||||||
$STD yarn run build:prod
|
$STD yarn run build:prod
|
||||||
$STD yarn run install:python
|
$STD yarn run install:python
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
____ __
|
|
||||||
/ __ \____ ______/ /_ __ __
|
|
||||||
/ / / / __ `/ ___/ __ \/ / / /
|
|
||||||
/ /_/ / /_/ (__ ) / / / /_/ /
|
|
||||||
/_____/\__,_/____/_/ /_/\__, /
|
|
||||||
/____/
|
|
||||||
6
ct/headers/infisical
Normal file
6
ct/headers/infisical
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
____ _____ _ __
|
||||||
|
/ _/___ / __(_)____(_)________ _/ /
|
||||||
|
/ // __ \/ /_/ / ___/ / ___/ __ `/ /
|
||||||
|
_/ // / / / __/ (__ ) / /__/ /_/ / /
|
||||||
|
/___/_/ /_/_/ /_/____/_/\___/\__,_/_/
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ EOF
|
|||||||
msg_ok "Image-processing libraries up to date"
|
msg_ok "Image-processing libraries up to date"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE="2.2.2"
|
RELEASE="2.2.3"
|
||||||
if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
|
if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop immich-web
|
systemctl stop immich-web
|
||||||
|
|||||||
60
ct/infisical.sh
Normal file
60
ct/infisical.sh
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
#!/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://infisical.com/
|
||||||
|
|
||||||
|
APP="Infisical"
|
||||||
|
var_tags="${var_tags:-auth}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-6}"
|
||||||
|
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 /etc/infisical ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Stopping service"
|
||||||
|
$STD infisical-ctl stop
|
||||||
|
msg_ok "Service stopped"
|
||||||
|
|
||||||
|
msg_info "Creating backup"
|
||||||
|
DB_PASS=$(grep -Po '(?<=^Database Password:\s).*' ~/infisical.creds | head -n1)
|
||||||
|
PGPASSWORD=$DB_PASS pg_dump -U infisical -h localhost -d infisical_db > /opt/infisical_backup.sql
|
||||||
|
msg_ok "Created backup"
|
||||||
|
|
||||||
|
msg_info "Updating Infisical"
|
||||||
|
$STD apt update
|
||||||
|
$STD apt install -y infisical-core
|
||||||
|
$STD infisical-ctl reconfigure
|
||||||
|
msg_ok "Updated Infisical"
|
||||||
|
|
||||||
|
msg_info "Starting service"
|
||||||
|
infisical-ctl start
|
||||||
|
msg_ok "Started service"
|
||||||
|
msg_ok "Updated successfully"
|
||||||
|
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}:8080${CL}"
|
||||||
@@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
|
|||||||
APP="jotty"
|
APP="jotty"
|
||||||
var_tags="${var_tags:-tasks;notes}"
|
var_tags="${var_tags:-tasks;notes}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-3072}"
|
var_ram="${var_ram:-4096}"
|
||||||
var_disk="${var_disk:-6}"
|
var_disk="${var_disk:-6}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/refs/heads/main/misc/build.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/refs/heads/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
# Author: dkuku
|
# Author: dkuku
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|||||||
@@ -40,19 +40,24 @@ function update_script() {
|
|||||||
MM_DIR="/opt/mm"
|
MM_DIR="/opt/mm"
|
||||||
export CONFIG_DIR="${MM_DIR}/config"
|
export CONFIG_DIR="${MM_DIR}/config"
|
||||||
export FRONTEND_FILES_DIR="${MM_DIR}/web/build"
|
export FRONTEND_FILES_DIR="${MM_DIR}/web/build"
|
||||||
export BASE_PATH=""
|
|
||||||
export PUBLIC_VERSION=""
|
export PUBLIC_VERSION=""
|
||||||
export PUBLIC_API_URL=""
|
export PUBLIC_API_URL=""
|
||||||
|
export BASE_PATH="/web"
|
||||||
cd /opt/mediamanager/web
|
cd /opt/mediamanager/web
|
||||||
$STD npm ci
|
$STD npm ci --no-fund --no-audit
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
rm -rf "$FRONTEND_FILES_DIR"/build
|
rm -rf "$FRONTEND_FILES_DIR"/build
|
||||||
cp -r build "$FRONTEND_FILES_DIR"
|
cp -r build "$FRONTEND_FILES_DIR"
|
||||||
|
export BASE_PATH=""
|
||||||
export VIRTUAL_ENV="/opt/${MM_DIR}/venv"
|
export VIRTUAL_ENV="/opt/${MM_DIR}/venv"
|
||||||
cd /opt/mediamanager
|
cd /opt/mediamanager
|
||||||
rm -rf "$MM_DIR"/{media_manager,alembic*}
|
rm -rf "$MM_DIR"/{media_manager,alembic*}
|
||||||
cp -r {media_manager,alembic*} "$MM_DIR"
|
cp -r {media_manager,alembic*} "$MM_DIR"
|
||||||
$STD /usr/local/bin/uv sync --locked --active -n -p cpython3.13 --managed-python
|
$STD /usr/local/bin/uv sync --locked --active -n -p cpython3.13 --managed-python
|
||||||
|
if ! grep -q "LOG_FILE" "$MM_DIR"/start.sh; then
|
||||||
|
sed -i "\|build\"$|a\export LOG_FILE=\"$CONFIG_DIR/media_manager.log\"" "$MM_DIR"/start.sh
|
||||||
|
fi
|
||||||
|
|
||||||
msg_ok "Updated $APP"
|
msg_ok "Updated $APP"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2025 Community-Script ORG
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster) | Co-Author: CrazyWolf13
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://nginxproxymanager.com/
|
# Source: https://nginxproxymanager.com/
|
||||||
|
|
||||||
APP="Nginx Proxy Manager"
|
APP="Nginx Proxy Manager"
|
||||||
var_tags="${var_tags:-proxy}"
|
var_tags="${var_tags:-proxy}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
@@ -28,6 +28,12 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ $(grep -E '^VERSION_ID=' /etc/os-release) == *"12"* ]]; then
|
||||||
|
msg_error "Wrong Debian version detected!"
|
||||||
|
msg_error "Please create a snapshot first. You must upgrade your LXC to Debian Trixie before updating. Visit: https://github.com/community-scripts/ProxmoxVE/discussions/7489"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
if command -v node &>/dev/null; then
|
if command -v node &>/dev/null; then
|
||||||
CURRENT_NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
|
CURRENT_NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
|
||||||
if [[ "$CURRENT_NODE_VERSION" != "22" ]]; then
|
if [[ "$CURRENT_NODE_VERSION" != "22" ]]; then
|
||||||
@@ -42,60 +48,47 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||||
export NODE_OPTIONS="--openssl-legacy-provider"
|
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
||||||
grep "tag_name" |
|
grep "tag_name" |
|
||||||
awk '{print substr($2, 3, length($2)-4) }')
|
awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
|
||||||
msg_info "Downloading NPM v${RELEASE}"
|
fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager"
|
||||||
curl -fsSL "https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v${RELEASE}" | tar -xz
|
|
||||||
cd nginx-proxy-manager-"${RELEASE}" || exit
|
|
||||||
msg_ok "Downloaded NPM v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Building Frontend"
|
|
||||||
(
|
|
||||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" backend/package.json
|
|
||||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" frontend/package.json
|
|
||||||
cd ./frontend || exit
|
|
||||||
# Replace node-sass with sass in package.json before installation
|
|
||||||
sed -i 's/"node-sass".*$/"sass": "^1.92.1",/g' package.json
|
|
||||||
$STD yarn install --network-timeout 600000
|
|
||||||
$STD yarn build
|
|
||||||
)
|
|
||||||
msg_ok "Built Frontend"
|
|
||||||
|
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop openresty
|
systemctl stop openresty
|
||||||
systemctl stop npm
|
systemctl stop npm
|
||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
msg_info "Cleaning Old Files"
|
msg_info "Cleaning old files"
|
||||||
rm -rf /app \
|
$STD rm -rf /app \
|
||||||
/var/www/html \
|
/var/www/html \
|
||||||
/etc/nginx \
|
/etc/nginx \
|
||||||
/var/log/nginx \
|
/var/log/nginx \
|
||||||
/var/lib/nginx \
|
/var/lib/nginx \
|
||||||
"$STD" /var/cache/nginx
|
/var/cache/nginx
|
||||||
msg_ok "Cleaned Old Files"
|
msg_ok "Cleaned old files"
|
||||||
|
|
||||||
msg_info "Setting up Environment"
|
msg_info "Setting up Environment"
|
||||||
ln -sf /usr/bin/python3 /usr/bin/python
|
ln -sf /usr/bin/python3 /usr/bin/python
|
||||||
ln -sf /opt/certbot/bin/certbot /usr/local/bin/certbot
|
|
||||||
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
||||||
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
||||||
sed -i 's+^daemon+#daemon+g' docker/rootfs/etc/nginx/nginx.conf
|
sed -i "s|\"version\": \"2.0.0\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/backend/package.json
|
||||||
NGINX_CONFS=$(find "$(pwd)" -type f -name "*.conf")
|
sed -i "s|\"version\": \"2.0.0\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/frontend/package.json
|
||||||
|
sed -i 's+^daemon+#daemon+g' /opt/nginxproxymanager/docker/rootfs/etc/nginx/nginx.conf
|
||||||
|
NGINX_CONFS=$(find /opt/nginxproxymanager -type f -name "*.conf")
|
||||||
for NGINX_CONF in $NGINX_CONFS; do
|
for NGINX_CONF in $NGINX_CONFS; do
|
||||||
sed -i 's+include conf.d+include /etc/nginx/conf.d+g' "$NGINX_CONF"
|
sed -i 's+include conf.d+include /etc/nginx/conf.d+g' "$NGINX_CONF"
|
||||||
done
|
done
|
||||||
|
|
||||||
mkdir -p /var/www/html /etc/nginx/logs
|
mkdir -p /var/www/html /etc/nginx/logs
|
||||||
cp -r docker/rootfs/var/www/html/* /var/www/html/
|
cp -r /opt/nginxproxymanager/docker/rootfs/var/www/html/* /var/www/html/
|
||||||
cp -r docker/rootfs/etc/nginx/* /etc/nginx/
|
cp -r /opt/nginxproxymanager/docker/rootfs/etc/nginx/* /etc/nginx/
|
||||||
cp docker/rootfs/etc/letsencrypt.ini /etc/letsencrypt.ini
|
cp /opt/nginxproxymanager/docker/rootfs/etc/letsencrypt.ini /etc/letsencrypt.ini
|
||||||
cp docker/rootfs/etc/logrotate.d/nginx-proxy-manager /etc/logrotate.d/nginx-proxy-manager
|
cp /opt/nginxproxymanager/docker/rootfs/etc/logrotate.d/nginx-proxy-manager /etc/logrotate.d/nginx-proxy-manager
|
||||||
ln -sf /etc/nginx/nginx.conf /etc/nginx/conf/nginx.conf
|
ln -sf /etc/nginx/nginx.conf /etc/nginx/conf/nginx.conf
|
||||||
rm -f /etc/nginx/conf.d/dev.conf
|
rm -f /etc/nginx/conf.d/dev.conf
|
||||||
|
|
||||||
mkdir -p /tmp/nginx/body \
|
mkdir -p /tmp/nginx/body \
|
||||||
/run/nginx \
|
/run/nginx \
|
||||||
/data/nginx \
|
/data/nginx \
|
||||||
@@ -112,27 +105,33 @@ function update_script() {
|
|||||||
/var/lib/nginx/cache/public \
|
/var/lib/nginx/cache/public \
|
||||||
/var/lib/nginx/cache/private \
|
/var/lib/nginx/cache/private \
|
||||||
/var/cache/nginx/proxy_temp
|
/var/cache/nginx/proxy_temp
|
||||||
|
|
||||||
chmod -R 777 /var/cache/nginx
|
chmod -R 777 /var/cache/nginx
|
||||||
chown root /tmp/nginx
|
chown root /tmp/nginx
|
||||||
|
|
||||||
echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" {print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf);" >/etc/nginx/conf.d/include/resolvers.conf
|
echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" {print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf);" >/etc/nginx/conf.d/include/resolvers.conf
|
||||||
|
|
||||||
if [ ! -f /data/nginx/dummycert.pem ] || [ ! -f /data/nginx/dummykey.pem ]; then
|
if [ ! -f /data/nginx/dummycert.pem ] || [ ! -f /data/nginx/dummykey.pem ]; then
|
||||||
$STD openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -subj "/O=Nginx Proxy Manager/OU=Dummy Certificate/CN=localhost" -keyout /data/nginx/dummykey.pem -out /data/nginx/dummycert.pem
|
$STD openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -subj "/O=Nginx Proxy Manager/OU=Dummy Certificate/CN=localhost" -keyout /data/nginx/dummykey.pem -out /data/nginx/dummycert.pem
|
||||||
fi
|
fi
|
||||||
mkdir -p /app/global /app/frontend/images
|
|
||||||
cp -r frontend/dist/* /app/frontend
|
|
||||||
cp -r frontend/app-images/* /app/frontend/images
|
|
||||||
cp -r backend/* /app
|
|
||||||
cp -r global/* /app/global
|
|
||||||
|
|
||||||
# Update Certbot and plugins in virtual environment
|
mkdir -p /app/frontend/images
|
||||||
if [ -d /opt/certbot ]; then
|
cp -r /opt/nginxproxymanager/backend/* /app
|
||||||
$STD /opt/certbot/bin/pip install --upgrade pip setuptools wheel
|
msg_ok "Set up Environment"
|
||||||
$STD /opt/certbot/bin/pip install --upgrade certbot certbot-dns-cloudflare
|
|
||||||
fi
|
msg_info "Building Frontend"
|
||||||
msg_ok "Setup Environment"
|
export NODE_OPTIONS="--max_old_space_size=2048 --openssl-legacy-provider"
|
||||||
|
cd /opt/nginxproxymanager/frontend
|
||||||
|
# Replace node-sass with sass in package.json before installation
|
||||||
|
sed -E -i 's/"node-sass" *: *"([^"]*)"/"sass": "\1"/g' package.json
|
||||||
|
$STD yarn install --network-timeout 600000
|
||||||
|
$STD yarn build
|
||||||
|
cp -r /opt/nginxproxymanager/frontend/dist/* /app/frontend
|
||||||
|
cp -r /opt/nginxproxymanager/frontend/public/images/* /app/frontend/images
|
||||||
|
msg_ok "Built Frontend"
|
||||||
|
|
||||||
msg_info "Initializing Backend"
|
msg_info "Initializing Backend"
|
||||||
$STD rm -rf /app/config/default.json
|
rm -rf /app/config/default.json
|
||||||
if [ ! -f /app/config/production.json ]; then
|
if [ ! -f /app/config/production.json ]; then
|
||||||
cat <<'EOF' >/app/config/production.json
|
cat <<'EOF' >/app/config/production.json
|
||||||
{
|
{
|
||||||
@@ -148,23 +147,37 @@ function update_script() {
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
cd /app || exit
|
cd /app
|
||||||
export NODE_OPTIONS="--openssl-legacy-provider"
|
|
||||||
$STD yarn install --network-timeout 600000
|
$STD yarn install --network-timeout 600000
|
||||||
msg_ok "Initialized Backend"
|
msg_ok "Initialized Backend"
|
||||||
|
|
||||||
|
msg_info "Updating Certbot"
|
||||||
|
[ -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg ] && rm -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg
|
||||||
|
[ -f /etc/apt/sources.list.d/openresty.list ] && rm -f /etc/apt/sources.list.d/openresty.list
|
||||||
|
[ ! -f /etc/apt/trusted.gpg.d/openresty.gpg ] && curl -fsSL https://openresty.org/package/pubkey.gpg | gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/openresty.gpg
|
||||||
|
[ ! -f /etc/apt/sources.list.d/openresty.sources ] && cat <<'EOF' >/etc/apt/sources.list.d/openresty.sources
|
||||||
|
Types: deb
|
||||||
|
URIs: http://openresty.org/package/debian/
|
||||||
|
Suites: bookworm
|
||||||
|
Components: openresty
|
||||||
|
Signed-By: /etc/apt/trusted.gpg.d/openresty.gpg
|
||||||
|
EOF
|
||||||
|
$STD apt update
|
||||||
|
$STD apt -y install openresty
|
||||||
|
if [ -d /opt/certbot ]; then
|
||||||
|
$STD /opt/certbot/bin/pip install --upgrade pip setuptools wheel
|
||||||
|
$STD /opt/certbot/bin/pip install --upgrade certbot certbot-dns-cloudflare
|
||||||
|
fi
|
||||||
|
msg_ok "Updated Certbot"
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
||||||
sed -i 's/su npm npm/su root root/g' /etc/logrotate.d/nginx-proxy-manager
|
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
||||||
sed -i 's/include-system-site-packages = false/include-system-site-packages = true/g' /opt/certbot/pyvenv.cfg
|
|
||||||
systemctl enable -q --now openresty
|
systemctl enable -q --now openresty
|
||||||
systemctl enable -q --now npm
|
systemctl enable -q --now npm
|
||||||
|
systemctl restart openresty
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf ~/nginx-proxy-manager-*
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
|
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2025 tteck
|
||||||
# Author: havardthom
|
# Author: tteck | Co-Author: havardthom | Co-Author: Slaviša Arežina (tremor021)
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://openwebui.com/
|
# Source: https://openwebui.com/
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-4}"
|
|||||||
var_ram="${var_ram:-8192}"
|
var_ram="${var_ram:-8192}"
|
||||||
var_disk="${var_disk:-25}"
|
var_disk="${var_disk:-25}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-13}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -23,7 +23,63 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/open-webui ]]; then
|
|
||||||
|
if [[ -d /opt/open-webui ]]; then
|
||||||
|
msg_warn "Legacy installation detected — migrating to uv based install..."
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop open-webui
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Creating Backup"
|
||||||
|
mkdir -p /opt/open-webui-backup
|
||||||
|
cp -a /opt/open-webui/backend/data /opt/open-webui-backup/data || true
|
||||||
|
msg_ok "Created Backup"
|
||||||
|
|
||||||
|
msg_info "Removing legacy installation"
|
||||||
|
rm -rf /opt/open-webui
|
||||||
|
rm -rf /root/.open-webui || true
|
||||||
|
msg_ok "Removed legacy installation"
|
||||||
|
|
||||||
|
msg_info "Installing uv-based Open-WebUI"
|
||||||
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
|
$STD uv tool install --python $PYTHON_VERSION open-webui[all]
|
||||||
|
msg_ok "Installed uv-based Open-WebUI"
|
||||||
|
|
||||||
|
msg_info "Restoring data"
|
||||||
|
mkdir -p /root/.open-webui
|
||||||
|
cp -a /opt/open-webui-backup/data/* /root/.open-webui/ || true
|
||||||
|
rm -rf /opt/open-webui-backup || true
|
||||||
|
msg_ok "Restored data"
|
||||||
|
|
||||||
|
msg_info "Recreating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/open-webui.service
|
||||||
|
[Unit]
|
||||||
|
Description=Open WebUI Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
Environment=DATA_DIR=/root/.open-webui
|
||||||
|
EnvironmentFile=-/root/.env
|
||||||
|
ExecStart=/root/.local/bin/open-webui serve
|
||||||
|
WorkingDirectory=/root
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
User=root
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
$STD systemctl daemon-reload
|
||||||
|
systemctl enable -q --now open-webui
|
||||||
|
msg_ok "Recreated Service"
|
||||||
|
|
||||||
|
msg_ok "Migration completed"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d /root/.open-webui ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
@@ -50,29 +106,11 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Updating ${APP} (Patience)"
|
msg_info "Updating Open WebUI via uv"
|
||||||
cd /opt/open-webui
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
mkdir -p /opt/open-webui-backup
|
$STD uv tool install --python 3.12 open-webui[all]
|
||||||
cp -rf /opt/open-webui/backend/data /opt/open-webui-backup
|
systemctl restart open-webui
|
||||||
git add -A
|
msg_ok "Updated Open WebUI"
|
||||||
$STD git stash
|
|
||||||
$STD git reset --hard
|
|
||||||
output=$(git pull --no-rebase)
|
|
||||||
if echo "$output" | grep -q "Already up to date."; then
|
|
||||||
msg_ok "$APP is already up to date."
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
systemctl stop open-webui.service
|
|
||||||
$STD npm install --force
|
|
||||||
export NODE_OPTIONS="--max-old-space-size=6000"
|
|
||||||
$STD npm run build
|
|
||||||
cd ./backend
|
|
||||||
$STD pip install -r requirements.txt -U
|
|
||||||
cp -rf /opt/open-webui-backup/* /opt/open-webui/backend
|
|
||||||
if git stash list | grep -q 'stash@{'; then
|
|
||||||
$STD git stash pop
|
|
||||||
fi
|
|
||||||
systemctl start open-webui.service
|
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,52 +21,52 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/pangolin ]]; then
|
if [[ ! -d /opt/pangolin ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
if check_for_gh_release "pangolin" "fosrl/pangolin"; then
|
|
||||||
msg_info "Stopping Service"
|
|
||||||
systemctl stop pangolin
|
|
||||||
systemctl stop gerbil
|
|
||||||
msg_info "Service stopped"
|
|
||||||
|
|
||||||
msg_info "Creating backup"
|
|
||||||
tar -czf /opt/pangolin_config_backup.tar.gz -C /opt/pangolin config
|
|
||||||
msg_ok "Created backup"
|
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pangolin" "fosrl/pangolin" "tarball"
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gerbil" "fosrl/gerbil" "singlefile" "latest" "/usr/bin" "gerbil_linux_amd64"
|
|
||||||
|
|
||||||
msg_info "Updating Pangolin"
|
|
||||||
cd /opt/pangolin
|
|
||||||
$STD npm ci
|
|
||||||
$STD npm run set:sqlite
|
|
||||||
$STD npm run set:oss
|
|
||||||
rm -rf server/private
|
|
||||||
$STD npm run build:sqlite
|
|
||||||
$STD npm run build:cli
|
|
||||||
cp -R .next/standalone ./
|
|
||||||
chmod +x ./dist/cli.mjs
|
|
||||||
cp server/db/names.json ./dist/names.json
|
|
||||||
msg_ok "Updated Pangolin"
|
|
||||||
|
|
||||||
msg_info "Restoring config"
|
|
||||||
tar -xzf /opt/pangolin_config_backup.tar.gz -C /opt/pangolin --overwrite
|
|
||||||
rm -f /opt/pangolin_config_backup.tar.gz
|
|
||||||
msg_ok "Restored config"
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
|
||||||
systemctl start pangolin
|
|
||||||
systemctl start gerbil
|
|
||||||
msg_ok "Started Services"
|
|
||||||
msg_ok "Updated successfully!"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "pangolin" "fosrl/pangolin"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop pangolin
|
||||||
|
systemctl stop gerbil
|
||||||
|
msg_info "Service stopped"
|
||||||
|
|
||||||
|
msg_info "Creating backup"
|
||||||
|
tar -czf /opt/pangolin_config_backup.tar.gz -C /opt/pangolin config
|
||||||
|
msg_ok "Created backup"
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pangolin" "fosrl/pangolin" "tarball"
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gerbil" "fosrl/gerbil" "singlefile" "latest" "/usr/bin" "gerbil_linux_amd64"
|
||||||
|
|
||||||
|
msg_info "Updating Pangolin"
|
||||||
|
cd /opt/pangolin
|
||||||
|
$STD npm ci
|
||||||
|
$STD npm run set:sqlite
|
||||||
|
$STD npm run set:oss
|
||||||
|
rm -rf server/private
|
||||||
|
$STD npm run build:sqlite
|
||||||
|
$STD npm run build:cli
|
||||||
|
cp -R .next/standalone ./
|
||||||
|
chmod +x ./dist/cli.mjs
|
||||||
|
cp server/db/names.json ./dist/names.json
|
||||||
|
msg_ok "Updated Pangolin"
|
||||||
|
|
||||||
|
msg_info "Restoring config"
|
||||||
|
tar -xzf /opt/pangolin_config_backup.tar.gz -C /opt/pangolin --overwrite
|
||||||
|
rm -f /opt/pangolin_config_backup.tar.gz
|
||||||
|
msg_ok "Restored config"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start pangolin
|
||||||
|
systemctl start gerbil
|
||||||
|
msg_ok "Started Services"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -76,4 +76,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3002${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}https://<YOUR_PANGOLIN_URL>${CL}"
|
||||||
|
|||||||
@@ -35,24 +35,38 @@ function update_script() {
|
|||||||
if grep -q "uv run" /etc/systemd/system/paperless-webserver.service; then
|
if grep -q "uv run" /etc/systemd/system/paperless-webserver.service; then
|
||||||
|
|
||||||
msg_info "Backing up data"
|
msg_info "Backing up data"
|
||||||
mkdir -p /opt/paperless/backup
|
mkdir -p /opt/paperless_backup
|
||||||
cp -r /opt/paperless/data /opt/paperless/backup/
|
cp -r /opt/paperless/data /opt/paperless_backup/
|
||||||
cp -r /opt/paperless/media /opt/paperless/backup/
|
cp -r /opt/paperless/media /opt/paperless_backup/
|
||||||
cp -r /opt/paperless/paperless.conf /opt/paperless/backup/
|
cp -r /opt/paperless/paperless.conf /opt/paperless_backup/
|
||||||
msg_ok "Backup completed"
|
msg_ok "Backup completed"
|
||||||
|
|
||||||
PYTHON_VERSION="3.13" setup_uv
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
|
||||||
fetch_and_deploy_gh_release "jbig2enc" "ie13/jbig2enc" "tarball" "latest" "/opt/jbig2enc"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jbig2enc" "ie13/jbig2enc" "tarball" "latest" "/opt/jbig2enc"
|
||||||
setup_gs
|
|
||||||
|
. /etc/os-release
|
||||||
|
if [ "$VERSION_CODENAME" = "bookworm" ]; then
|
||||||
|
setup_gs
|
||||||
|
else
|
||||||
|
$STD apt install -y ghostscript
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Updating Paperless-ngx"
|
msg_info "Updating Paperless-ngx"
|
||||||
cp -r /opt/paperless/backup/* /opt/paperless/
|
cp -r /opt/paperless_backup/* /opt/paperless/
|
||||||
|
CONSUME_DIR="$(sed -n 's/^PAPERLESS_CONSUMPTION_DIR=//p' /opt/paperless/paperless.conf)"
|
||||||
|
if [[ -z "$CONSUME_DIR" ]]; then
|
||||||
|
CONSUME_DIR="/opt/paperless/consume"
|
||||||
|
fi
|
||||||
|
mkdir -p "$CONSUME_DIR"
|
||||||
cd /opt/paperless
|
cd /opt/paperless
|
||||||
$STD uv sync --all-extras
|
$STD uv sync --all-extras
|
||||||
cd /opt/paperless/src
|
cd /opt/paperless/src
|
||||||
$STD uv run -- python manage.py migrate
|
$STD uv run -- python manage.py migrate
|
||||||
msg_ok "Updated Paperless-ngx"
|
msg_ok "Updated Paperless-ngx"
|
||||||
|
|
||||||
|
rm -rf /opt/paperless_backup
|
||||||
|
|
||||||
else
|
else
|
||||||
msg_warn "You are about to migrate your Paperless-ngx installation to uv!"
|
msg_warn "You are about to migrate your Paperless-ngx installation to uv!"
|
||||||
msg_custom "🔒" "It is strongly recommended to take a Proxmox snapshot first:"
|
msg_custom "🔒" "It is strongly recommended to take a Proxmox snapshot first:"
|
||||||
@@ -96,24 +110,40 @@ function update_script() {
|
|||||||
|
|
||||||
$STD systemctl daemon-reload
|
$STD systemctl daemon-reload
|
||||||
msg_info "Backing up data"
|
msg_info "Backing up data"
|
||||||
mkdir -p /opt/paperless/backup
|
mkdir -p /opt/paperless_backup
|
||||||
cp -r /opt/paperless/data /opt/paperless/backup/
|
cp -r /opt/paperless/data /opt/paperless_backup/
|
||||||
cp -r /opt/paperless/media /opt/paperless/backup/
|
cp -r /opt/paperless/media /opt/paperless_backup/
|
||||||
cp -r /opt/paperless/paperless.conf /opt/paperless/backup/
|
cp -r /opt/paperless/paperless.conf /opt/paperless_backup/
|
||||||
msg_ok "Backup completed"
|
msg_ok "Backup completed"
|
||||||
|
|
||||||
PYTHON_VERSION="3.13" setup_uv
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
|
||||||
fetch_and_deploy_gh_release "jbig2enc" "ie13/jbig2enc" "tarball" "latest" "/opt/jbig2enc"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jbig2enc" "ie13/jbig2enc" "tarball" "latest" "/opt/jbig2enc"
|
||||||
setup_gs
|
|
||||||
|
. /etc/os-release
|
||||||
|
if [ "$VERSION_CODENAME" = "bookworm" ]; then
|
||||||
|
setup_gs
|
||||||
|
else
|
||||||
|
msg_info "Installing Ghostscript"
|
||||||
|
$STD apt install -y ghostscript
|
||||||
|
msg_ok "Installed Ghostscript"
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Updating Paperless-ngx"
|
msg_info "Updating Paperless-ngx"
|
||||||
cp -r /opt/paperless/backup/* /opt/paperless/
|
cp -r /opt/paperless_backup/* /opt/paperless/
|
||||||
|
CONSUME_DIR="$(sed -n '/^PAPERLESS_CONSUMPTION/s/[^=]=*//p' /opt/paperless/paperless.conf)"
|
||||||
|
mkdir -p "${CONSUME_DIR:-/opt/paperless/consume}"
|
||||||
cd /opt/paperless
|
cd /opt/paperless
|
||||||
$STD uv sync --all-extras
|
$STD uv sync --all-extras
|
||||||
cd /opt/paperless/src
|
cd /opt/paperless/src
|
||||||
$STD uv run -- python manage.py migrate
|
$STD uv run -- python manage.py migrate
|
||||||
msg_ok "Paperless-ngx migration and update completed"
|
msg_ok "Paperless-ngx migration and update completed"
|
||||||
|
|
||||||
|
rm -rf /opt/paperless_backup
|
||||||
|
if [[ -d /opt/paperless/backup ]]; then
|
||||||
|
rm -rf /opt/paperless/backup
|
||||||
|
msg_ok "Removed old backup directory"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Starting all Paperless-ngx Services"
|
msg_info "Starting all Paperless-ngx Services"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="Part-DB"
|
APP="Part-DB"
|
||||||
var_tags="${var_tags:-inventory;parts}"
|
var_tags="${var_tags:-inventory;parts}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
|
|||||||
@@ -33,17 +33,22 @@ function update_script() {
|
|||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,gmp,snmp,ldap,apcu" setup_php
|
||||||
|
|
||||||
|
msg_info "Installing PHP-PEAR"
|
||||||
|
$STD apt install -y \
|
||||||
|
php-pear \
|
||||||
|
php-dev
|
||||||
|
msg_ok "Installed PHP-PEAR"
|
||||||
|
|
||||||
mv /opt/phpipam/ /opt/phpipam-backup
|
mv /opt/phpipam/ /opt/phpipam-backup
|
||||||
fetch_and_deploy_gh_release "phpipam" "phpipam/phpipam" "prebuild" "latest" "/opt/phpipam" "phpipam-v*.zip"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "phpipam" "phpipam/phpipam" "prebuild" "latest" "/opt/phpipam" "phpipam-v*.zip"
|
||||||
cp /opt/phpipam-backup/config.php /opt/phpipam
|
cp /opt/phpipam-backup/config.php /opt/phpipam
|
||||||
|
rm -r /opt/phpipam-backup
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -r /opt/phpipam-backup
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /etc/apt/sources.list.d/plexmediaserver.list ]]; then
|
if [ ! -f /etc/apt/sources.list.d/plexmediaserver.list ]] && [[ ! -f /etc/apt/sources.list.d/plexmediaserver.sources ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ function update_script() {
|
|||||||
msg_ok "Backup created"
|
msg_ok "Backup created"
|
||||||
|
|
||||||
msg_info "Installing sonarqube"
|
msg_info "Installing sonarqube"
|
||||||
|
temp_file=$(mktemp)
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/SonarSource/sonarqube/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/SonarSource/sonarqube/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file
|
curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file
|
||||||
unzip -q "$temp_file" -d /opt
|
unzip -q "$temp_file" -d /opt
|
||||||
|
|||||||
@@ -28,6 +28,11 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if is_package_installed "aspnetcore-runtime-8.0"; then
|
||||||
|
$STD apt remove -y aspnetcore-runtime-8.0
|
||||||
|
$STD apt install -y aspnetcore-runtime-9.0
|
||||||
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://technitium.com/dns/ | grep -oP 'Version \K[\d.]+')
|
RELEASE=$(curl -fsSL https://technitium.com/dns/ | grep -oP 'Version \K[\d.]+')
|
||||||
if [[ ! -f ~/.technitium || "${RELEASE}" != "$(cat ~/.technitium)" ]]; then
|
if [[ ! -f ~/.technitium || "${RELEASE}" != "$(cat ~/.technitium)" ]]; then
|
||||||
msg_info "Updating Technitium DNS"
|
msg_info "Updating Technitium DNS"
|
||||||
|
|||||||
16
ct/zabbix.sh
16
ct/zabbix.sh
@@ -42,12 +42,8 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
$STD systemctl stop zabbix-server
|
systemctl stop zabbix-server
|
||||||
if systemctl list-unit-files | grep -q zabbix-agent2; then
|
systemctl stop "$AGENT_SERVICE"
|
||||||
$STD systemctl stop zabbix-agent2
|
|
||||||
else
|
|
||||||
$STD systemctl stop zabbix-agent
|
|
||||||
fi
|
|
||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
msg_info "Updating Zabbix"
|
msg_info "Updating Zabbix"
|
||||||
@@ -88,12 +84,8 @@ function update_script() {
|
|||||||
msg_ok "Updated Zabbix"
|
msg_ok "Updated Zabbix"
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
$STD systemctl start zabbix-server
|
systemctl start zabbix-server
|
||||||
if systemctl list-unit-files | grep -q zabbix-agent2; then
|
systemctl start "$AGENT_SERVICE"
|
||||||
$STD systemctl start zabbix-agent2
|
|
||||||
else
|
|
||||||
$STD systemctl start zabbix-agent
|
|
||||||
fi
|
|
||||||
systemctl restart apache2
|
systemctl restart apache2
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
|
|
||||||
|
|||||||
@@ -33,8 +33,12 @@
|
|||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Set a root password if using autologin. This will be the Cockpit password.`sudo passwd root`",
|
"text": "Set a root password if using autologin. This will be the Cockpit password. To set root password run `sudo passwd root`",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "If you plan on using 45Drives extension with NFS, you must setup LXC as privileged. Some features of 45Drives don't work on Debian 13, so Debian 12 must be used.",
|
||||||
|
"type": "warning"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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": []
|
|
||||||
}
|
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 2021,
|
"interface_port": 2021,
|
||||||
"documentation": "https://docs.donetick.com/getting-started/",
|
"documentation": "https://docs.donetick.com/getting-started/",
|
||||||
"config_path": "/opt/donetick/selfhosted.yml",
|
"config_path": "/opt/donetick/config/selfhosted.yml",
|
||||||
"website": "https://donetick.com",
|
"website": "https://donetick.com",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/donetick.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/donetick.webp",
|
||||||
"description": "Donetick an open-source, user-friendly app for managing tasks and chores, featuring customizable options to help you and others stay organized",
|
"description": "Donetick an open-source, user-friendly app for managing tasks and chores, featuring customizable options to help you and others stay organized",
|
||||||
|
|||||||
@@ -1,44 +1,44 @@
|
|||||||
{
|
{
|
||||||
"name": "Graylog",
|
"name": "Graylog",
|
||||||
"slug": "graylog",
|
"slug": "graylog",
|
||||||
"categories": [
|
"categories": [
|
||||||
9
|
9
|
||||||
],
|
],
|
||||||
"date_created": "2025-02-12",
|
"date_created": "2025-02-12",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 9000,
|
"interface_port": 9000,
|
||||||
"documentation": "https://go2docs.graylog.org/current/home.htm",
|
"documentation": "https://go2docs.graylog.org/current/home.htm",
|
||||||
"website": "https://graylog.org/",
|
"website": "https://graylog.org/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/graylog.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/graylog.webp",
|
||||||
"config_path": "/etc/graylog/server/server.conf",
|
"config_path": "/etc/graylog/server/server.conf",
|
||||||
"description": "Graylog is an open-source log management and analysis platform that centralizes and processes log data from various sources, enabling real-time search, analysis, and alerting for IT infrastructure monitoring and troubleshooting.",
|
"description": "Graylog is an open-source log management and analysis platform that centralizes and processes log data from various sources, enabling real-time search, analysis, and alerting for IT infrastructure monitoring and troubleshooting.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/graylog.sh",
|
"script": "ct/graylog.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 2,
|
||||||
"ram": 8192,
|
"ram": 8192,
|
||||||
"hdd": 30,
|
"hdd": 30,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"default_credentials": {
|
"default_credentials": {
|
||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Initial Setup credentials: `tail /var/log/graylog-server/server.log` after the server starts for the first time.",
|
||||||
|
"type": "info"
|
||||||
},
|
},
|
||||||
"notes": [
|
{
|
||||||
{
|
"text": "Type `cat ~/graylog.creds` to get admin password that you use to log in AFTER the Initial Setup",
|
||||||
"text": "Initial Setup credentials: `tail /var/log/graylog-server/server.log` after the server starts for the first time.",
|
"type": "info"
|
||||||
"type": "info"
|
}
|
||||||
},
|
]
|
||||||
{
|
|
||||||
"text": "Type `cat ~/graylog.creds` to get admin password that you use to log in AFTER the Initial Setup",
|
|
||||||
"type": "info"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
35
frontend/public/json/infisical.json
Normal file
35
frontend/public/json/infisical.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "Infisical",
|
||||||
|
"slug": "infisical",
|
||||||
|
"categories": [
|
||||||
|
6
|
||||||
|
],
|
||||||
|
"date_created": "2025-11-07",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 8080,
|
||||||
|
"documentation": "https://infisical.com/docs/documentation/getting-started/overview",
|
||||||
|
"config_path": "/etc/infisical/infisical.rb",
|
||||||
|
"website": "https://infisical.com/",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/infisical.webp",
|
||||||
|
"description": "Secrets, certificates, and access management on autopilot. All-in-one platform to securely manage application secrets, certificates, SSH keys, and configurations across your team and infrastructure.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/infisical.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 6,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "13"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": []
|
||||||
|
}
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
"script": "ct/jotty.sh",
|
"script": "ct/jotty.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 2,
|
||||||
"ram": 3072,
|
"ram": 4096,
|
||||||
"hdd": 6,
|
"hdd": 6,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "13"
|
"version": "13"
|
||||||
|
|||||||
@@ -20,8 +20,8 @@
|
|||||||
"script": "ct/nginxproxymanager.sh",
|
"script": "ct/nginxproxymanager.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 2,
|
||||||
"ram": 1024,
|
"ram": 2048,
|
||||||
"hdd": 4,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "13"
|
"version": "13"
|
||||||
}
|
}
|
||||||
@@ -33,12 +33,8 @@
|
|||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Since there are hundreds of Certbot instances, it's necessary to install the specific Certbot of your preference. Running `/app/scripts/install-certbot-plugins` within the nginxproxymanager LXC shell will install many additional plugins.",
|
"text": "You can install the specific one certbot you prefer, or you can Running /app/scripts/install-certbot-plugins within the Nginx Proxy Manager (NPM) LXC shell will install many common plugins. Important: This script does not install all Certbot plugins, as some require additional, external system dependencies (like specific packages for certain DNS providers). These external dependencies must be manually installed within the LXC container before you can successfully install and use the corresponding Certbot plugin. Consult the plugin's documentation for required packages.",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
|
||||||
"type": "warning"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"documentation": "https://docs.openwebui.com/",
|
"documentation": "https://docs.openwebui.com/",
|
||||||
"website": "https://openwebui.com/",
|
"website": "https://openwebui.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/open-webui.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/open-webui.webp",
|
||||||
"config_path": "/opt/open-webui/.env",
|
"config_path": "/root/.env",
|
||||||
"description": "OpenWebUI is a self-hosted, web-based interface that allows you to run AI models entirely offline. It integrates with various LLM runners, such as OpenAI and Ollama, and supports features like markdown and LaTeX rendering, model management, and voice/video calls. It also offers multilingual support and the ability to generate images using APIs like DALL-E or ComfyUI",
|
"description": "OpenWebUI is a self-hosted, web-based interface that allows you to run AI models entirely offline. It integrates with various LLM runners, such as OpenAI and Ollama, and supports features like markdown and LaTeX rendering, model management, and voice/video calls. It also offers multilingual support and the ability to generate images using APIs like DALL-E or ComfyUI",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 8192,
|
"ram": 8192,
|
||||||
"hdd": 25,
|
"hdd": 25,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -35,6 +35,10 @@
|
|||||||
{
|
{
|
||||||
"text": "Script contains optional installation of Ollama.",
|
"text": "Script contains optional installation of Ollama.",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Initial run of the application/container can take some time, depending on your host speed, as the application is installed/updated at runtime. Please be patient!",
|
||||||
|
"type": "warning"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3002,
|
"interface_port": 443,
|
||||||
"documentation": "https://docs.pangolin.net/",
|
"documentation": "https://docs.pangolin.net/",
|
||||||
"config_path": "/opt/pangolin/config/config.yml",
|
"config_path": "/opt/pangolin/config/config.yml",
|
||||||
"website": "https://pangolin.net/",
|
"website": "https://pangolin.net/",
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
"script": "ct/part-db.sh",
|
"script": "ct/part-db.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 2,
|
||||||
"ram": 1024,
|
"ram": 2048,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "13"
|
"version": "13"
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -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"
|
|
||||||
@@ -60,11 +60,10 @@ $STD npm ci
|
|||||||
$STD npm run build:production
|
$STD npm run build:production
|
||||||
msg_ok "Built Ghostfolio"
|
msg_ok "Built Ghostfolio"
|
||||||
|
|
||||||
msg_ok "Optional CoinGecko API Configuration"
|
echo -e ""
|
||||||
echo
|
msg_custom "🪙" "$YW" "CoinGecko API keys are optional but provide better cryptocurrency data."
|
||||||
echo -e "${YW}CoinGecko API keys are optional but provide better cryptocurrency data.${CL}"
|
msg_custom "🪙" "$YW" "You can skip this and add them later by editing /opt/ghostfolio/.env"
|
||||||
echo -e "${YW}You can skip this and add them later by editing /opt/ghostfolio/.env${CL}"
|
echo -e ""
|
||||||
echo
|
|
||||||
read -rp "${TAB3}CoinGecko Demo API key (press Enter to skip): " COINGECKO_DEMO_KEY
|
read -rp "${TAB3}CoinGecko Demo API key (press Enter to skip): " COINGECKO_DEMO_KEY
|
||||||
read -rp "${TAB3}CoinGecko Pro API key (press Enter to skip): " COINGECKO_PRO_KEY
|
read -rp "${TAB3}CoinGecko Pro API key (press Enter to skip): " COINGECKO_PRO_KEY
|
||||||
|
|
||||||
@@ -79,6 +78,7 @@ JWT_SECRET_KEY=$JWT_SECRET_KEY
|
|||||||
NODE_ENV=production
|
NODE_ENV=production
|
||||||
PORT=3333
|
PORT=3333
|
||||||
HOST=0.0.0.0
|
HOST=0.0.0.0
|
||||||
|
TZ=Etc/UTC
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if [[ -n "${COINGECKO_DEMO_KEY:-}" ]]; then
|
if [[ -n "${COINGECKO_DEMO_KEY:-}" ]]; then
|
||||||
|
|||||||
@@ -13,12 +13,12 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
MONGO_VERSION="7.0" setup_mongodb
|
MONGO_VERSION="8.0" setup_mongodb
|
||||||
|
|
||||||
msg_info "Setup Graylog Data Node"
|
msg_info "Setup Graylog Data Node"
|
||||||
PASSWORD_SECRET=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
|
PASSWORD_SECRET=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
|
||||||
curl -fsSL "https://packages.graylog2.org/repo/packages/graylog-6.3-repository_latest.deb" -o "graylog-6.3-repository_latest.deb"
|
curl -fsSL "https://packages.graylog2.org/repo/packages/graylog-7.0-repository_latest.deb" -o "graylog-7.0-repository_latest.deb"
|
||||||
$STD dpkg -i graylog-6.3-repository_latest.deb
|
$STD dpkg -i graylog-7.0-repository_latest.deb
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get install graylog-datanode -y
|
$STD apt-get install graylog-datanode -y
|
||||||
sed -i "s/password_secret =/password_secret = $PASSWORD_SECRET/g" /etc/graylog/datanode/datanode.conf
|
sed -i "s/password_secret =/password_secret = $PASSWORD_SECRET/g" /etc/graylog/datanode/datanode.conf
|
||||||
@@ -42,9 +42,4 @@ msg_ok "Setup ${APPLICATION}"
|
|||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
cleanup_lxc
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -f graylog-*-repository_latest.deb
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
|
|||||||
@@ -288,7 +288,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
|
|||||||
mkdir -p "$INSTALL_DIR"
|
mkdir -p "$INSTALL_DIR"
|
||||||
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
|
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v2.2.2" "$SRC_DIR"
|
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v2.2.3" "$SRC_DIR"
|
||||||
|
|
||||||
msg_info "Installing ${APPLICATION} (patience)"
|
msg_info "Installing ${APPLICATION} (patience)"
|
||||||
|
|
||||||
|
|||||||
68
install/infisical-install.sh
Normal file
68
install/infisical-install.sh
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
#!/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://infisical.com/
|
||||||
|
|
||||||
|
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 \
|
||||||
|
apt-transport-https \
|
||||||
|
ca-certificates \
|
||||||
|
redis
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
PG_VERSION="17" setup_postgresql
|
||||||
|
|
||||||
|
msg_info "Setting up Infisical Repository"
|
||||||
|
setup_deb822_repo \
|
||||||
|
"infisical" \
|
||||||
|
"https://artifacts-infisical-core.infisical.com/infisical.gpg" \
|
||||||
|
"https://artifacts-infisical-core.infisical.com/deb" \
|
||||||
|
"stable"
|
||||||
|
msg_ok "Setup Infisical repository"
|
||||||
|
|
||||||
|
msg_info "Configuring PostgreSQL"
|
||||||
|
DB_NAME="infisical_db"
|
||||||
|
DB_USER="infisical"
|
||||||
|
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
|
||||||
|
{
|
||||||
|
echo "Infiscal Credentials"
|
||||||
|
echo "Database Name: $DB_NAME"
|
||||||
|
echo "Database User: $DB_USER"
|
||||||
|
echo "Database Password: $DB_PASS"
|
||||||
|
} >>~/infisical.creds
|
||||||
|
msg_ok "Configured PostgreSQL"
|
||||||
|
|
||||||
|
msg_info "Setting up Infisical"
|
||||||
|
AUTH_SECRET="$(openssl rand -base64 32 | tr -d '\n')"
|
||||||
|
ENC_KEY="$(openssl rand -hex 16 | tr -d '\n')"
|
||||||
|
IP_ADDR=$(hostname -I | awk '{print $1}')
|
||||||
|
$STD apt install -y infisical-core
|
||||||
|
mkdir -p /etc/infisical
|
||||||
|
cat <<EOF >/etc/infisical/infisical.rb
|
||||||
|
infisical_core['ENCRYPTION_KEY'] = '$ENC_KEY'
|
||||||
|
infisical_core['AUTH_SECRET'] = '$AUTH_SECRET'
|
||||||
|
infisical_core['HOST'] = '$IP_ADDR'
|
||||||
|
infisical_core['DB_CONNECTION_URI'] = 'postgres://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}'
|
||||||
|
infisical_core['REDIS_URL'] = 'redis://localhost:6379'
|
||||||
|
EOF
|
||||||
|
$STD infisical-ctl reconfigure
|
||||||
|
msg_ok "Setup Infisical"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
@@ -40,9 +40,9 @@ NODE_ENV=production
|
|||||||
# OIDC_ISSUER=<your-oidc-issuer-url>
|
# OIDC_ISSUER=<your-oidc-issuer-url>
|
||||||
# OIDC_CLIENT_ID=<oidc-client-id>
|
# OIDC_CLIENT_ID=<oidc-client-id>
|
||||||
# APP_URL=<https://app.domain.tld>
|
# APP_URL=<https://app.domain.tld>
|
||||||
# SSO_FALLBACK_LOCAL=true # Allow both SSO and normal login
|
# SSO_FALLBACK_LOCAL=yes
|
||||||
# OIDC_CLIENT_SECRET=your_client_secret # Enable confidential client mode with client authentication
|
# OIDC_CLIENT_SECRET=your_client_secret
|
||||||
# OIDC_ADMIN_GROUPS=admins # Map provider groups to admin role
|
# OIDC_ADMIN_GROUPS=admins
|
||||||
EOF
|
EOF
|
||||||
msg_ok "Installed ${APPLICATION}"
|
msg_ok "Installed ${APPLICATION}"
|
||||||
|
|
||||||
|
|||||||
@@ -45,15 +45,15 @@ MM_DIR="/opt/mm"
|
|||||||
MEDIA_DIR="${MM_DIR}/media"
|
MEDIA_DIR="${MM_DIR}/media"
|
||||||
export CONFIG_DIR="${MM_DIR}/config"
|
export CONFIG_DIR="${MM_DIR}/config"
|
||||||
export FRONTEND_FILES_DIR="${MM_DIR}/web/build"
|
export FRONTEND_FILES_DIR="${MM_DIR}/web/build"
|
||||||
export BASE_PATH=""
|
|
||||||
export PUBLIC_VERSION=""
|
export PUBLIC_VERSION=""
|
||||||
export PUBLIC_API_URL=""
|
export PUBLIC_API_URL=""
|
||||||
export BASE_PATH=""
|
export BASE_PATH="/web"
|
||||||
cd /opt/mediamanager/web
|
cd /opt/mediamanager/web
|
||||||
$STD npm ci
|
$STD npm ci --no-fund --no-audit
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
mkdir -p {"$MM_DIR"/web,"$MEDIA_DIR","$CONFIG_DIR"}
|
mkdir -p {"$MM_DIR"/web,"$MEDIA_DIR","$CONFIG_DIR"}
|
||||||
cp -r build "$FRONTEND_FILES_DIR"
|
cp -r build "$FRONTEND_FILES_DIR"
|
||||||
|
export BASE_PATH=""
|
||||||
export VIRTUAL_ENV="${MM_DIR}/venv"
|
export VIRTUAL_ENV="${MM_DIR}/venv"
|
||||||
cd /opt/mediamanager
|
cd /opt/mediamanager
|
||||||
cp -r {media_manager,alembic*} "$MM_DIR"
|
cp -r {media_manager,alembic*} "$MM_DIR"
|
||||||
@@ -81,8 +81,9 @@ cat <<EOF >"$MM_DIR"/start.sh
|
|||||||
|
|
||||||
export CONFIG_DIR="$CONFIG_DIR"
|
export CONFIG_DIR="$CONFIG_DIR"
|
||||||
export FRONTEND_FILES_DIR="$FRONTEND_FILES_DIR"
|
export FRONTEND_FILES_DIR="$FRONTEND_FILES_DIR"
|
||||||
|
export LOG_FILE="$CONFIG_DIR/media_manager.log"
|
||||||
export BASE_PATH=""
|
export BASE_PATH=""
|
||||||
cd "$MM_DIR"
|
cd $MM_DIR
|
||||||
source ./venv/bin/activate
|
source ./venv/bin/activate
|
||||||
/usr/local/bin/uv run alembic upgrade head
|
/usr/local/bin/uv run alembic upgrade head
|
||||||
/usr/local/bin/uv run fastapi run ./media_manager/main.py --port 8000
|
/usr/local/bin/uv run fastapi run ./media_manager/main.py --port 8000
|
||||||
|
|||||||
@@ -15,31 +15,12 @@ update_os
|
|||||||
|
|
||||||
read -p "${TAB3}Do you want to install MongoDB 8.0 instead of 7.0? [y/N]: " install_mongodb_8
|
read -p "${TAB3}Do you want to install MongoDB 8.0 instead of 7.0? [y/N]: " install_mongodb_8
|
||||||
if [[ "$install_mongodb_8" =~ ^[Yy]$ ]]; then
|
if [[ "$install_mongodb_8" =~ ^[Yy]$ ]]; then
|
||||||
MONGODB_VERSION="8.0"
|
MONGO_VERSION="8.0" setup_mongodb
|
||||||
else
|
else
|
||||||
MONGODB_VERSION="7.0"
|
MONGO_VERSION="7.0" setup_mongodb
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Installing MongoDB $MONGODB_VERSION"
|
|
||||||
curl -fsSL "https://www.mongodb.org/static/pgp/server-${MONGODB_VERSION}.asc" | gpg --dearmor >/usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg
|
|
||||||
cat <<EOF >/etc/apt/sources.list.d/mongodb-org-${MONGODB_VERSION}.sources
|
|
||||||
Types: deb
|
|
||||||
URIs: http://repo.mongodb.org/apt/debian
|
|
||||||
Suites: $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)/mongodb-org/${MONGODB_VERSION}
|
|
||||||
Components: main
|
|
||||||
Signed-By: /usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg
|
|
||||||
EOF
|
|
||||||
$STD apt update
|
|
||||||
$STD apt install -y mongodb-org
|
|
||||||
sed -i 's/bindIp: 127.0.0.1/bindIp: 0.0.0.0/' /etc/mongod.conf
|
sed -i 's/bindIp: 127.0.0.1/bindIp: 0.0.0.0/' /etc/mongod.conf
|
||||||
systemctl enable -q --now mongod
|
|
||||||
msg_ok "Installed MongoDB $MONGODB_VERSION"
|
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
cleanup_lxc
|
||||||
msg_info "Cleaning up"
|
|
||||||
$STD apt -y autoremove
|
|
||||||
$STD apt -y autoclean
|
|
||||||
$STD apt -y clean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
|
|||||||
@@ -16,7 +16,9 @@ update_os
|
|||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y \
|
$STD apt install -y \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
build-essential
|
build-essential \
|
||||||
|
python3 \
|
||||||
|
python3-setuptools
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="22" setup_nodejs
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2025 Community-Scripts ORG
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster) | Co-Author: CrazyWolf13
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://nginxproxymanager.com/
|
# Source: https://nginxproxymanager.com/
|
||||||
|
|
||||||
@@ -39,18 +39,15 @@ $STD /opt/certbot/bin/pip install certbot certbot-dns-cloudflare
|
|||||||
ln -sf /opt/certbot/bin/certbot /usr/local/bin/certbot
|
ln -sf /opt/certbot/bin/certbot /usr/local/bin/certbot
|
||||||
msg_ok "Set up Certbot"
|
msg_ok "Set up Certbot"
|
||||||
|
|
||||||
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
|
||||||
|
|
||||||
msg_info "Installing Openresty"
|
msg_info "Installing Openresty"
|
||||||
curl -fsSL "https://openresty.org/package/pubkey.gpg" | gpg --dearmor -o /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg
|
curl -fsSL "https://openresty.org/package/pubkey.gpg" | gpg --dearmor -o /etc/apt/trusted.gpg.d/openresty.gpg
|
||||||
case "$VERSION" in
|
cat <<'EOF' >/etc/apt/sources.list.d/openresty.sources
|
||||||
trixie)
|
Types: deb
|
||||||
echo -e "deb http://openresty.org/package/debian bookworm openresty" >/etc/apt/sources.list.d/openresty.list
|
URIs: http://openresty.org/package/debian/
|
||||||
;;
|
Suites: bookworm
|
||||||
*)
|
Components: openresty
|
||||||
echo -e "deb http://openresty.org/package/debian $VERSION openresty" >/etc/apt/sources.list.d/openresty.list
|
Signed-By: /etc/apt/trusted.gpg.d/openresty.gpg
|
||||||
;;
|
EOF
|
||||||
esac
|
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt -y install openresty
|
$STD apt -y install openresty
|
||||||
msg_ok "Installed Openresty"
|
msg_ok "Installed Openresty"
|
||||||
@@ -61,28 +58,25 @@ RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-
|
|||||||
grep "tag_name" |
|
grep "tag_name" |
|
||||||
awk '{print substr($2, 3, length($2)-4) }')
|
awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
|
||||||
msg_info "Downloading Nginx Proxy Manager v${RELEASE}"
|
fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager"
|
||||||
curl -fsSL "https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v${RELEASE}" | tar -xz
|
|
||||||
cd ./nginx-proxy-manager-"${RELEASE}"
|
|
||||||
msg_ok "Downloaded Nginx Proxy Manager v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Setting up Environment"
|
msg_info "Setting up Environment"
|
||||||
ln -sf /usr/bin/python3 /usr/bin/python
|
ln -sf /usr/bin/python3 /usr/bin/python
|
||||||
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
||||||
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
||||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" backend/package.json
|
sed -i "s|\"version\": \"2.0.0\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/backend/package.json
|
||||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" frontend/package.json
|
sed -i "s|\"version\": \"2.0.0\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/frontend/package.json
|
||||||
sed -i 's+^daemon+#daemon+g' docker/rootfs/etc/nginx/nginx.conf
|
sed -i 's+^daemon+#daemon+g' /opt/nginxproxymanager/docker/rootfs/etc/nginx/nginx.conf
|
||||||
NGINX_CONFS=$(find "$(pwd)" -type f -name "*.conf")
|
NGINX_CONFS=$(find /opt/nginxproxymanager -type f -name "*.conf")
|
||||||
for NGINX_CONF in $NGINX_CONFS; do
|
for NGINX_CONF in $NGINX_CONFS; do
|
||||||
sed -i 's+include conf.d+include /etc/nginx/conf.d+g' "$NGINX_CONF"
|
sed -i 's+include conf.d+include /etc/nginx/conf.d+g' "$NGINX_CONF"
|
||||||
done
|
done
|
||||||
|
|
||||||
mkdir -p /var/www/html /etc/nginx/logs
|
mkdir -p /var/www/html /etc/nginx/logs
|
||||||
cp -r docker/rootfs/var/www/html/* /var/www/html/
|
cp -r /opt/nginxproxymanager/docker/rootfs/var/www/html/* /var/www/html/
|
||||||
cp -r docker/rootfs/etc/nginx/* /etc/nginx/
|
cp -r /opt/nginxproxymanager/docker/rootfs/etc/nginx/* /etc/nginx/
|
||||||
cp docker/rootfs/etc/letsencrypt.ini /etc/letsencrypt.ini
|
cp /opt/nginxproxymanager/docker/rootfs/etc/letsencrypt.ini /etc/letsencrypt.ini
|
||||||
cp docker/rootfs/etc/logrotate.d/nginx-proxy-manager /etc/logrotate.d/nginx-proxy-manager
|
cp /opt/nginxproxymanager/docker/rootfs/etc/logrotate.d/nginx-proxy-manager /etc/logrotate.d/nginx-proxy-manager
|
||||||
ln -sf /etc/nginx/nginx.conf /etc/nginx/conf/nginx.conf
|
ln -sf /etc/nginx/nginx.conf /etc/nginx/conf/nginx.conf
|
||||||
rm -f /etc/nginx/conf.d/dev.conf
|
rm -f /etc/nginx/conf.d/dev.conf
|
||||||
|
|
||||||
@@ -109,23 +103,22 @@ chown root /tmp/nginx
|
|||||||
echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" {print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf);" >/etc/nginx/conf.d/include/resolvers.conf
|
echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" {print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf);" >/etc/nginx/conf.d/include/resolvers.conf
|
||||||
|
|
||||||
if [ ! -f /data/nginx/dummycert.pem ] || [ ! -f /data/nginx/dummykey.pem ]; then
|
if [ ! -f /data/nginx/dummycert.pem ] || [ ! -f /data/nginx/dummykey.pem ]; then
|
||||||
openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -subj "/O=Nginx Proxy Manager/OU=Dummy Certificate/CN=localhost" -keyout /data/nginx/dummykey.pem -out /data/nginx/dummycert.pem &>/dev/null
|
$STD openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -subj "/O=Nginx Proxy Manager/OU=Dummy Certificate/CN=localhost" -keyout /data/nginx/dummykey.pem -out /data/nginx/dummycert.pem
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p /app/global /app/frontend/images
|
mkdir -p /app/frontend/images
|
||||||
cp -r backend/* /app
|
cp -r /opt/nginxproxymanager/backend/* /app
|
||||||
cp -r global/* /app/global
|
|
||||||
msg_ok "Set up Environment"
|
msg_ok "Set up Environment"
|
||||||
|
|
||||||
msg_info "Building Frontend"
|
msg_info "Building Frontend"
|
||||||
cd ./frontend
|
export NODE_OPTIONS="--max_old_space_size=2048 --openssl-legacy-provider"
|
||||||
export NODE_OPTIONS="--openssl-legacy-provider"
|
cd /opt/nginxproxymanager/frontend
|
||||||
# Replace node-sass with sass in package.json before installation
|
# Replace node-sass with sass in package.json before installation
|
||||||
sed -i 's/"node-sass".*$/"sass": "^1.92.1",/g' package.json
|
sed -E -i 's/"node-sass" *: *"([^"]*)"/"sass": "\1"/g' package.json
|
||||||
$STD yarn install --network-timeout 600000
|
$STD yarn install --network-timeout 600000
|
||||||
$STD yarn build
|
$STD yarn build
|
||||||
cp -r dist/* /app/frontend
|
cp -r /opt/nginxproxymanager/frontend/dist/* /app/frontend
|
||||||
cp -r app-images/* /app/frontend/images
|
cp -r /opt/nginxproxymanager/frontend/public/images/* /app/frontend/images
|
||||||
msg_ok "Built Frontend"
|
msg_ok "Built Frontend"
|
||||||
|
|
||||||
msg_info "Initializing Backend"
|
msg_info "Initializing Backend"
|
||||||
@@ -146,7 +139,6 @@ if [ ! -f /app/config/production.json ]; then
|
|||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
cd /app
|
cd /app
|
||||||
export NODE_OPTIONS="--openssl-legacy-provider"
|
|
||||||
$STD yarn install --network-timeout 600000
|
$STD yarn install --network-timeout 600000
|
||||||
msg_ok "Initialized Backend"
|
msg_ok "Initialized Backend"
|
||||||
|
|
||||||
@@ -170,9 +162,6 @@ WantedBy=multi-user.target
|
|||||||
EOF
|
EOF
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
||||||
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
||||||
@@ -180,8 +169,10 @@ systemctl enable -q --now openresty
|
|||||||
systemctl enable -q --now npm
|
systemctl enable -q --now npm
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf ../nginx-proxy-manager-*
|
|
||||||
systemctl restart openresty
|
systemctl restart openresty
|
||||||
$STD apt -y autoremove
|
$STD apt -y autoremove
|
||||||
$STD apt -y autoclean
|
$STD apt -y autoclean
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y python3-lxml
|
$STD apt install -y python3-lxml wkhtmltopdf
|
||||||
curl -fsSL "http://archive.ubuntu.com/ubuntu/pool/universe/l/lxml-html-clean/python3-lxml-html-clean_0.1.1-1_all.deb" -o /opt/python3-lxml-html-clean.deb
|
curl -fsSL "http://archive.ubuntu.com/ubuntu/pool/universe/l/lxml-html-clean/python3-lxml-html-clean_0.1.1-1_all.deb" -o /opt/python3-lxml-html-clean.deb
|
||||||
$STD dpkg -i /opt/python3-lxml-html-clean.deb
|
$STD dpkg -i /opt/python3-lxml-html-clean.deb
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|||||||
@@ -66,7 +66,6 @@ server/hostname ${IP_ADDR}
|
|||||||
server/server_path_prefix /openproject
|
server/server_path_prefix /openproject
|
||||||
server/ssl no
|
server/ssl no
|
||||||
server/variant apache2
|
server/variant apache2
|
||||||
server/server_path_prefix
|
|
||||||
repositories/api-key ${API_KEY}
|
repositories/api-key ${API_KEY}
|
||||||
repositories/svn-install skip
|
repositories/svn-install skip
|
||||||
repositories/git-install install
|
repositories/git-install install
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2025 tteck
|
||||||
# Author: tteck
|
# Author: tteck | Co-Author: havardthom | Co-Author: Slaviša Arežina (tremor021)
|
||||||
# Co-Author: havardthom
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://openwebui.com/
|
# Source: https://openwebui.com/
|
||||||
|
|
||||||
@@ -15,35 +14,13 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y \
|
$STD apt install -y ffmpeg
|
||||||
git \
|
|
||||||
ffmpeg \
|
|
||||||
libpq-dev
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Setup Python3"
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
$STD apt install -y --no-install-recommends \
|
|
||||||
python3 \
|
|
||||||
python3-pip
|
|
||||||
msg_ok "Setup Python3"
|
|
||||||
|
|
||||||
NODE_VERSION="22" setup_nodejs
|
msg_info "Installing Open WebUI"
|
||||||
|
$STD uv tool install --python 3.12 open-webui[all]
|
||||||
msg_info "Installing Open WebUI (Patience)"
|
|
||||||
$STD git clone https://github.com/open-webui/open-webui.git /opt/open-webui
|
|
||||||
cd /opt/open-webui/backend
|
|
||||||
$STD pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
|
|
||||||
$STD pip3 install -r requirements.txt -U
|
|
||||||
cd /opt/open-webui
|
|
||||||
cp .env.example .env
|
|
||||||
cat <<EOF >/opt/open-webui/.env
|
|
||||||
ENV=prod
|
|
||||||
ENABLE_OLLAMA_API=false
|
|
||||||
OLLAMA_BASE_URL=http://0.0.0.0:11434
|
|
||||||
EOF
|
|
||||||
$STD npm install --force
|
|
||||||
export NODE_OPTIONS="--max-old-space-size=6000"
|
|
||||||
$STD npm run build
|
|
||||||
msg_ok "Installed Open WebUI"
|
msg_ok "Installed Open WebUI"
|
||||||
|
|
||||||
read -r -p "${TAB3}Would you like to add Ollama? <y/N> " prompt
|
read -r -p "${TAB3}Would you like to add Ollama? <y/N> " prompt
|
||||||
@@ -69,7 +46,7 @@ RestartSec=3
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now ollama
|
systemctl enable -q --now ollama
|
||||||
sed -i 's/ENABLE_OLLAMA_API=false/ENABLE_OLLAMA_API=true/g' /opt/open-webui/.env
|
echo "ENABLE_OLLAMA_API=true" >/root/.env
|
||||||
msg_ok "Installed Ollama"
|
msg_ok "Installed Ollama"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -80,10 +57,14 @@ Description=Open WebUI Service
|
|||||||
After=network.target
|
After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=exec
|
Type=simple
|
||||||
WorkingDirectory=/opt/open-webui
|
EnvironmentFile=-/root/.env
|
||||||
EnvironmentFile=/opt/open-webui/.env
|
Environment=DATA_DIR=/root/.open-webui
|
||||||
ExecStart=/opt/open-webui/backend/start.sh
|
ExecStart=/root/.local/bin/open-webui serve
|
||||||
|
WorkingDirectory=/root
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
User=root
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
@@ -93,9 +74,4 @@ msg_ok "Created Service"
|
|||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
cleanup_lxc
|
||||||
msg_info "Cleaning up"
|
|
||||||
$STD apt -y autoremove
|
|
||||||
$STD apt -y autoclean
|
|
||||||
$STD apt -y clean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
|
|||||||
@@ -22,11 +22,16 @@ msg_ok "Installed Dependencies"
|
|||||||
NODE_VERSION="22" setup_nodejs
|
NODE_VERSION="22" setup_nodejs
|
||||||
fetch_and_deploy_gh_release "pangolin" "fosrl/pangolin" "tarball"
|
fetch_and_deploy_gh_release "pangolin" "fosrl/pangolin" "tarball"
|
||||||
fetch_and_deploy_gh_release "gerbil" "fosrl/gerbil" "singlefile" "latest" "/usr/bin" "gerbil_linux_amd64"
|
fetch_and_deploy_gh_release "gerbil" "fosrl/gerbil" "singlefile" "latest" "/usr/bin" "gerbil_linux_amd64"
|
||||||
|
fetch_and_deploy_gh_release "traefik" "traefik/traefik" "prebuild" "latest" "/usr/bin" "traefik_v*_linux_amd64.tar.gz"
|
||||||
|
|
||||||
|
read -rp "${TAB3}Enter your Pangolin URL (ex: https://pangolin.example.com): " pango_url
|
||||||
|
read -rp "${TAB3}Enter your email address: " pango_email
|
||||||
|
|
||||||
msg_info "Setup Pangolin"
|
msg_info "Setup Pangolin"
|
||||||
IP_ADDR=$(hostname -I | awk '{print $1}')
|
IP_ADDR=$(hostname -I | awk '{print $1}')
|
||||||
SECRET_KEY=$(openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 32)
|
SECRET_KEY=$(openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 32)
|
||||||
cd /opt/pangolin
|
cd /opt/pangolin
|
||||||
|
mkdir -p /opt/pangolin/config/{traefik,db,letsencrypt,logs}
|
||||||
$STD npm ci
|
$STD npm ci
|
||||||
$STD npm run set:sqlite
|
$STD npm run set:sqlite
|
||||||
$STD npm run set:oss
|
$STD npm run set:oss
|
||||||
@@ -46,30 +51,129 @@ mkdir -p /var/config
|
|||||||
|
|
||||||
cat <<EOF >/opt/pangolin/config/config.yml
|
cat <<EOF >/opt/pangolin/config/config.yml
|
||||||
app:
|
app:
|
||||||
dashboard_url: http://$IP_ADDR:3002
|
dashboard_url: "$pango_url"
|
||||||
log_level: debug
|
|
||||||
|
|
||||||
domains:
|
domains:
|
||||||
domain1:
|
domain1:
|
||||||
base_domain: example.com
|
base_domain: "$pango_url"
|
||||||
|
cert_resolver: "letsencrypt"
|
||||||
|
|
||||||
server:
|
server:
|
||||||
secret: $SECRET_KEY
|
secret: "$SECRET_KEY"
|
||||||
|
|
||||||
gerbil:
|
gerbil:
|
||||||
base_endpoint: example.com
|
base_endpoint: "$pango_url"
|
||||||
|
|
||||||
orgs:
|
|
||||||
block_size: 24
|
|
||||||
subnet_group: 100.90.137.0/20
|
|
||||||
|
|
||||||
flags:
|
flags:
|
||||||
require_email_verification: false
|
require_email_verification: false
|
||||||
disable_signup_without_invite: true
|
disable_signup_without_invite: false
|
||||||
disable_user_create_org: true
|
disable_user_create_org: false
|
||||||
allow_raw_resources: true
|
EOF
|
||||||
enable_integration_api: true
|
|
||||||
enable_clients: true
|
cat <<EOF >/opt/pangolin/config/traefik/traefik_config.yml
|
||||||
|
api:
|
||||||
|
insecure: true
|
||||||
|
dashboard: true
|
||||||
|
|
||||||
|
providers:
|
||||||
|
http:
|
||||||
|
endpoint: "http://$IP_ADDR:3001/api/v1/traefik-config"
|
||||||
|
pollInterval: "5s"
|
||||||
|
file:
|
||||||
|
filename: "/opt/pangolin/config/traefik/dynamic_config.yml"
|
||||||
|
|
||||||
|
experimental:
|
||||||
|
plugins:
|
||||||
|
badger:
|
||||||
|
moduleName: "github.com/fosrl/badger"
|
||||||
|
version: "v1.2.0"
|
||||||
|
|
||||||
|
log:
|
||||||
|
level: "INFO"
|
||||||
|
format: "common"
|
||||||
|
|
||||||
|
certificatesResolvers:
|
||||||
|
letsencrypt:
|
||||||
|
acme:
|
||||||
|
httpChallenge:
|
||||||
|
entryPoint: web
|
||||||
|
email: $pango_email
|
||||||
|
storage: "/opt/pangolin/config/letsencrypt/acme.json"
|
||||||
|
caServer: "https://acme-v02.api.letsencrypt.org/directory"
|
||||||
|
|
||||||
|
entryPoints:
|
||||||
|
web:
|
||||||
|
address: ":80"
|
||||||
|
websecure:
|
||||||
|
address: ":443"
|
||||||
|
transport:
|
||||||
|
respondingTimeouts:
|
||||||
|
readTimeout: "30m"
|
||||||
|
http:
|
||||||
|
tls:
|
||||||
|
certResolver: "letsencrypt"
|
||||||
|
|
||||||
|
serversTransport:
|
||||||
|
insecureSkipVerify: true
|
||||||
|
|
||||||
|
ping:
|
||||||
|
entryPoint: "web"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/opt/pangolin/config/traefik/dynamic_config.yml
|
||||||
|
http:
|
||||||
|
middlewares:
|
||||||
|
redirect-to-https:
|
||||||
|
redirectScheme:
|
||||||
|
scheme: https
|
||||||
|
|
||||||
|
routers:
|
||||||
|
# HTTP to HTTPS redirect router
|
||||||
|
main-app-router-redirect:
|
||||||
|
rule: "Host(\`$pango_url\`)"
|
||||||
|
service: next-service
|
||||||
|
entryPoints:
|
||||||
|
- web
|
||||||
|
middlewares:
|
||||||
|
- redirect-to-https
|
||||||
|
|
||||||
|
# Next.js router (handles everything except API and WebSocket paths)
|
||||||
|
next-router:
|
||||||
|
rule: "Host(\`$pango_url\`) && !PathPrefix(\`/api/v1\`)"
|
||||||
|
service: next-service
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
tls:
|
||||||
|
certResolver: letsencrypt
|
||||||
|
|
||||||
|
# API router (handles /api/v1 paths)
|
||||||
|
api-router:
|
||||||
|
rule: "Host(\`$pango_url\`) && PathPrefix(\`/api/v1\`)"
|
||||||
|
service: api-service
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
tls:
|
||||||
|
certResolver: letsencrypt
|
||||||
|
|
||||||
|
# WebSocket router
|
||||||
|
ws-router:
|
||||||
|
rule: "Host(\`$pango_url\`)"
|
||||||
|
service: api-service
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
tls:
|
||||||
|
certResolver: letsencrypt
|
||||||
|
|
||||||
|
services:
|
||||||
|
next-service:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: "http://$IP_ADDR:3002"
|
||||||
|
|
||||||
|
api-service:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: "http://$IP_ADDR:3000"
|
||||||
EOF
|
EOF
|
||||||
$STD npm run db:sqlite:generate
|
$STD npm run db:sqlite:generate
|
||||||
$STD npm run db:sqlite:push
|
$STD npm run db:sqlite:push
|
||||||
@@ -122,6 +226,21 @@ RestartSec=10
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now gerbil
|
systemctl enable -q --now gerbil
|
||||||
|
|
||||||
|
cat <<'EOF' >/etc/systemd/system/traefik.service
|
||||||
|
[Unit]
|
||||||
|
Description=Traefik is an open-source Edge Router that makes publishing your services a fun and easy experience
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=notify
|
||||||
|
ExecStart=/usr/bin/traefik --configFile=/opt/pangolin/config/traefik/traefik_config.yml
|
||||||
|
Restart=on-failure
|
||||||
|
ExecReload=/bin/kill -USR1 \$MAINPID
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now traefik
|
||||||
msg_ok "Created Services"
|
msg_ok "Created Services"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -13,39 +13,27 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,gmp,snmp,ldap,apcu" setup_php
|
||||||
$STD apt install -y php-pear
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_info "Installing PHP-PEAR"
|
||||||
|
$STD apt install -y \
|
||||||
|
php-pear \
|
||||||
|
php-dev
|
||||||
|
msg_ok "Installed PHP-PEAR"
|
||||||
|
|
||||||
PHP_VERSION="8.2" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,imap,apcu,pspell,tidy,xmlrpc,gmp,ldap,common,snmp" setup_php
|
|
||||||
setup_mariadb
|
setup_mariadb
|
||||||
|
MARIADB_DB_NAME="phpipam" MARIADB_DB_USER="phpipam" setup_mariadb_db
|
||||||
msg_info "Setting up MariaDB"
|
|
||||||
DB_NAME=phpipam
|
|
||||||
DB_USER=phpipam
|
|
||||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
|
||||||
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
|
||||||
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
|
||||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
|
||||||
{
|
|
||||||
echo "phpIPAM-Credentials"
|
|
||||||
echo "phpIPAM Database User: $DB_USER"
|
|
||||||
echo "phpIPAM Database Password: $DB_PASS"
|
|
||||||
echo "phpIPAM Database Name: $DB_NAME"
|
|
||||||
} >>~/phpipam.creds
|
|
||||||
msg_ok "Set up MariaDB"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "phpipam" "phpipam/phpipam" "prebuild" "latest" "/opt/phpipam" "phpipam-v*.zip"
|
fetch_and_deploy_gh_release "phpipam" "phpipam/phpipam" "prebuild" "latest" "/opt/phpipam" "phpipam-v*.zip"
|
||||||
|
|
||||||
msg_info "Installing phpIPAM"
|
msg_info "Installing phpIPAM"
|
||||||
$STD mariadb -u root "${DB_NAME}" </opt/phpipam/db/SCHEMA.sql
|
$STD mariadb -u root "${MARIADB_DB_NAME}" </opt/phpipam/db/SCHEMA.sql
|
||||||
cp /opt/phpipam/config.dist.php /opt/phpipam/config.php
|
cp /opt/phpipam/config.dist.php /opt/phpipam/config.php
|
||||||
sed -i -e "s/\(\$disable_installer = \).*/\1true;/" \
|
sed -i -e "s/\(\$disable_installer = \).*/\1true;/" \
|
||||||
-e "s/\(\$db\['user'\] = \).*/\1'$DB_USER';/" \
|
-e "s/\(\$db\['user'\] = \).*/\1'$MARIADB_DB_USER';/" \
|
||||||
-e "s/\(\$db\['pass'\] = \).*/\1'$DB_PASS';/" \
|
-e "s/\(\$db\['pass'\] = \).*/\1'$MARIADB_DB_PASS';/" \
|
||||||
-e "s/\(\$db\['name'\] = \).*/\1'$DB_NAME';/" \
|
-e "s/\(\$db\['name'\] = \).*/\1'$MARIADB_DB_NAME';/" \
|
||||||
/opt/phpipam/config.php
|
/opt/phpipam/config.php
|
||||||
sed -i '/max_execution_time/s/= .*/= 600/' /etc/php/8.2/apache2/php.ini
|
sed -i '/max_execution_time/s/= .*/= 600/' /etc/php/8.4/apache2/php.ini
|
||||||
msg_ok "Installed phpIPAM"
|
msg_ok "Installed phpIPAM"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
@@ -71,9 +59,4 @@ msg_ok "Created Service"
|
|||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
cleanup_lxc
|
||||||
msg_info "Cleaning up"
|
|
||||||
$STD apt -y autoremove
|
|
||||||
$STD apt -y autoclean
|
|
||||||
$STD apt -y clean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ curl -fsSL "https://packages.microsoft.com/config/debian/12/packages-microsoft-p
|
|||||||
$STD dpkg -i packages-microsoft-prod.deb
|
$STD dpkg -i packages-microsoft-prod.deb
|
||||||
rm -rf packages-microsoft-prod.deb
|
rm -rf packages-microsoft-prod.deb
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt install -y aspnetcore-runtime-8.0
|
$STD apt install -y aspnetcore-runtime-9.0
|
||||||
msg_ok "Installed ASP.NET Core Runtime"
|
msg_ok "Installed ASP.NET Core Runtime"
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://technitium.com/dns/ | grep -oP 'Version \K[\d.]+')
|
RELEASE=$(curl -fsSL https://technitium.com/dns/ | grep -oP 'Version \K[\d.]+')
|
||||||
@@ -26,6 +26,7 @@ msg_info "Installing Technitium DNS"
|
|||||||
mkdir -p /opt/technitium/dns
|
mkdir -p /opt/technitium/dns
|
||||||
curl -fsSL "https://download.technitium.com/dns/DnsServerPortable.tar.gz" -o /opt/DnsServerPortable.tar.gz
|
curl -fsSL "https://download.technitium.com/dns/DnsServerPortable.tar.gz" -o /opt/DnsServerPortable.tar.gz
|
||||||
$STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/
|
$STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/
|
||||||
|
rm -f /opt/DnsServerPortable.tar.gz
|
||||||
echo "${RELEASE}" >~/.technitium
|
echo "${RELEASE}" >~/.technitium
|
||||||
msg_ok "Installed Technitium DNS"
|
msg_ok "Installed Technitium DNS"
|
||||||
|
|
||||||
@@ -36,10 +37,4 @@ msg_ok "Service created"
|
|||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
cleanup_lxc
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -f /opt/DnsServerPortable.tar.gz
|
|
||||||
$STD apt -y autoremove
|
|
||||||
$STD apt -y autoclean
|
|
||||||
$STD apt -y clean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
|
|||||||
@@ -370,6 +370,7 @@ run_container_safe() {
|
|||||||
|
|
||||||
cleanup_lxc() {
|
cleanup_lxc() {
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
|
|
||||||
if is_alpine; then
|
if is_alpine; then
|
||||||
$STD apk cache clean || true
|
$STD apk cache clean || true
|
||||||
rm -rf /var/cache/apk/*
|
rm -rf /var/cache/apk/*
|
||||||
@@ -379,36 +380,38 @@ cleanup_lxc() {
|
|||||||
$STD apt -y clean || true
|
$STD apt -y clean || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -rf /tmp/* /var/tmp/*
|
# Clear temp artifacts (keep sockets/FIFOs; ignore errors)
|
||||||
|
|
||||||
# Remove temp files created by mktemp/tempfile
|
|
||||||
find /tmp /var/tmp -type f -name 'tmp*' -delete 2>/dev/null || true
|
find /tmp /var/tmp -type f -name 'tmp*' -delete 2>/dev/null || true
|
||||||
find /tmp /var/tmp -type f -name 'tempfile*' -delete 2>/dev/null || true
|
find /tmp /var/tmp -type f -name 'tempfile*' -delete 2>/dev/null || true
|
||||||
|
|
||||||
find /var/log -type f -exec truncate -s 0 {} +
|
# Truncate writable log files silently (permission errors ignored)
|
||||||
|
if command -v truncate >/dev/null 2>&1; then
|
||||||
|
find /var/log -type f -writable -print0 2>/dev/null |
|
||||||
|
xargs -0 -n1 truncate -s 0 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
# Python pip
|
# Python pip
|
||||||
if command -v pip &>/dev/null; then pip cache purge || true; fi
|
if command -v pip &>/dev/null; then $STD pip cache purge || true; fi
|
||||||
# Python uv
|
# Python uv
|
||||||
if command -v uv &>/dev/null; then uv cache clear || true; fi
|
if command -v uv &>/dev/null; then $STD uv cache clear || true; fi
|
||||||
# Node.js npm
|
# Node.js npm
|
||||||
if command -v npm &>/dev/null; then npm cache clean --force || true; fi
|
if command -v npm &>/dev/null; then $STD npm cache clean --force || true; fi
|
||||||
# Node.js yarn
|
# Node.js yarn
|
||||||
if command -v yarn &>/dev/null; then yarn cache clean || true; fi
|
if command -v yarn &>/dev/null; then $STD yarn cache clean || true; fi
|
||||||
# Node.js pnpm
|
# Node.js pnpm
|
||||||
if command -v pnpm &>/dev/null; then pnpm store prune || true; fi
|
if command -v pnpm &>/dev/null; then $STD pnpm store prune || true; fi
|
||||||
# Go
|
# Go
|
||||||
if command -v go &>/dev/null; then go clean -cache -modcache || true; fi
|
if command -v go &>/dev/null; then $STD go clean -cache -modcache || true; fi
|
||||||
# Rust cargo
|
# Rust cargo
|
||||||
if command -v cargo &>/dev/null; then cargo clean || true; fi
|
if command -v cargo &>/dev/null; then $STD cargo clean || true; fi
|
||||||
# Ruby gem
|
# Ruby gem
|
||||||
if command -v gem &>/dev/null; then gem cleanup || true; fi
|
if command -v gem &>/dev/null; then $STD gem cleanup || true; fi
|
||||||
# Composer (PHP)
|
# Composer (PHP)
|
||||||
if command -v composer &>/dev/null; then composer clear-cache || true; fi
|
if command -v composer &>/dev/null; then $STD composer clear-cache || true; fi
|
||||||
|
|
||||||
if command -v journalctl &>/dev/null; then
|
if command -v journalctl &>/dev/null; then
|
||||||
$STD journalctl --rotate
|
$STD journalctl --rotate || true
|
||||||
$STD journalctl --vacuum-time=10m
|
$STD journalctl --vacuum-time=10m || true
|
||||||
fi
|
fi
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
}
|
}
|
||||||
|
|||||||
2716
misc/tools.func
2716
misc/tools.func
File diff suppressed because it is too large
Load Diff
@@ -48,7 +48,7 @@ install_glances_debian() {
|
|||||||
msg_ok "Installed dependencies"
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
msg_info "Setting up Python + uv"
|
msg_info "Setting up Python + uv"
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/tools.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||||
setup_uv PYTHON_VERSION="3.12"
|
setup_uv PYTHON_VERSION="3.12"
|
||||||
msg_ok "Setup Python + uv"
|
msg_ok "Setup Python + uv"
|
||||||
|
|
||||||
@@ -118,7 +118,7 @@ install_glances_alpine() {
|
|||||||
msg_ok "Installed dependencies"
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
msg_info "Setting up Python + uv"
|
msg_info "Setting up Python + uv"
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/tools.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||||
setup_uv PYTHON_VERSION="3.12"
|
setup_uv PYTHON_VERSION="3.12"
|
||||||
msg_ok "Setup Python + uv"
|
msg_ok "Setup Python + uv"
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ if ! command -v curl >/dev/null 2>&1; then
|
|||||||
apt-get update >/dev/null 2>&1
|
apt-get update >/dev/null 2>&1
|
||||||
apt-get install -y curl >/dev/null 2>&1
|
apt-get install -y curl >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVED/raw/branch/main/misc/core.func)
|
source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/misc/core.func)
|
||||||
load_functions
|
load_functions
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|||||||
Reference in New Issue
Block a user