Compare commits

...

111 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
6daeb7e288 Update CHANGELOG.md (#2577)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-23 23:47:19 +01:00
Miguel Torres
81b367df07 Fix: wrong text in description (#2576) 2025-02-23 23:41:52 +01:00
community-scripts-pr-app[bot]
0f410e11eb Update CHANGELOG.md (#2571)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-23 19:04:19 +01:00
community-scripts-pr-app[bot]
0a9dffb7a1 Update date in json (#2570)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-23 19:03:42 +01:00
community-scripts-pr-app[bot]
67b90f5582 Update .app files (#2572)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-23 19:02:56 +01:00
Miguel Vila Rodríguez
eaceba3ed3 New Script: Hev socks5 server (#2454)
* initial test

* fix port message and replace back github urls

* best practices

* final fixes

* add username ct

* last test, uyndo this commit

* final

* remove editor formatting chagnes from build.func

* trailing line

* remove comments

* get tarball, generate credentials

* test1

* arreglito

* arreglo clean up

* final

* reduce sys reqs

* typo

* url change

* remove backup and clean up
2025-02-23 18:44:04 +01:00
community-scripts-pr-app[bot]
d7dceede4b Update CHANGELOG.md (#2567)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-23 18:38:45 +01:00
community-scripts-pr-app[bot]
9c867b467a Update date in json (#2568)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-23 18:38:01 +01:00
community-scripts-pr-app[bot]
d35a01f5c4 Update .app files (#2569)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-23 18:37:33 +01:00
Slaviša Arežina
1e2f953a8f Remove setting NAT as its already in PostUp/Down (#2510) 2025-02-23 18:36:26 +01:00
Slaviša Arežina
2937516869 New Script: bolt.diy (#2528)
* Add bolt.diy script

* fixes
2025-02-23 18:35:44 +01:00
community-scripts-pr-app[bot]
92d2065f1d Update CHANGELOG.md (#2550)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-23 18:06:29 +01:00
bvdberg01
13c2f50f19 Fix: URL's in CONTRIBUTING.md (#2552) 2025-02-22 12:26:17 +01:00
Michael Casey
dccc45d492 Fix a few broken icon links (#2548) 2025-02-22 10:52:45 +01:00
community-scripts-pr-app[bot]
a9362e0b4a Update CHANGELOG.md (#2545)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-21 16:32:17 +01:00
jaminmc
10c46723fe Add ZFS to Podman. Now it works on ZFS! (#2526)
* Allow Podman to work on ZFS containers

* Fix ZFS for Podman-Create missing folder.

* Added option to install Portainer or Portainer agent in Podman

* Fix source for Podman Homeassistant so Portainer and other containers can be installed.

* fix Podman not creating storage/volumes, until one exists.
2025-02-21 16:45:30 +02:00
community-scripts-pr-app[bot]
666e170f7d Update CHANGELOG.md (#2536)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-21 10:46:48 +01:00
CanbiZ
109c48694e Update changelog-pr.yml 2025-02-21 10:45:58 +01:00
CanbiZ
d0cd58e923 Update changelog-pr.yml 2025-02-21 10:44:54 +01:00
CanbiZ
16b8bbfca6 Update changelog-pr.yml 2025-02-21 10:42:01 +01:00
CanbiZ
209aa220b0 Update changelog-pr.yml 2025-02-21 10:40:28 +01:00
CanbiZ
dd8db43dea General Cleanup & Moving Files / Folders (#2532) 2025-02-21 10:31:17 +01:00
CanbiZ
7d40e148e9 Update autolabeler.yml 2025-02-21 10:04:16 +01:00
CanbiZ
ef6eeea608 Update changelog-pr.yml 2025-02-21 08:29:30 +01:00
CanbiZ
0c13b71466 Update changelog-pr.yml 2025-02-21 08:24:37 +01:00
community-scripts-pr-app[bot]
e1c25a3c8e Update CHANGELOG.md (#2531)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-21 08:23:24 +01:00
CanbiZ
e5bfb8f8a3 Update changelog-pr-config.json 2025-02-21 08:21:27 +01:00
CanbiZ
4dfcd32d92 Update changelog-pr-config.json 2025-02-21 08:16:25 +01:00
CanbiZ
167deb5d7f Update autolabeler.yml 2025-02-21 08:15:38 +01:00
CanbiZ
8cb3007d66 Update autolabeler.yml 2025-02-21 08:13:54 +01:00
CanbiZ
49bcd30e77 Fix: Tianji - Downgrade Node (#2530) 2025-02-21 08:09:50 +01:00
CanbiZ
1e2954a993 Update wikijs-install.sh 2025-02-20 17:14:25 +01:00
CanbiZ
fe5711d9c4 Update wikijs-install.sh 2025-02-20 16:49:51 +01:00
CanbiZ
33f812179f Update wikijs.sh 2025-02-20 16:48:36 +01:00
CanbiZ
d7a2614819 Update wikijs-install.sh 2025-02-20 16:47:36 +01:00
CanbiZ
dc259847af Update docmost-install.sh 2025-02-20 16:44:12 +01:00
CanbiZ
9bcd1cd237 Update docmost-install.sh 2025-02-20 16:39:27 +01:00
CanbiZ
3a1ae8f7c0 Update wikijs-install.sh 2025-02-20 16:38:12 +01:00
CanbiZ
9cbe196913 Update wikijs-install.sh 2025-02-20 16:36:34 +01:00
CanbiZ
d0c8b1c15b Update docmost-install.sh 2025-02-20 16:32:21 +01:00
CanbiZ
2efdea9a29 Update wikijs.sh 2025-02-20 16:24:19 +01:00
CanbiZ
978dc549f4 Update wikijs.json 2025-02-20 16:24:00 +01:00
community-scripts-pr-app[bot]
d4d8943c9f Update CHANGELOG.md (#2524) 2025-02-20 16:16:21 +01:00
CanbiZ
12a1f46703 Update wikijs-install.sh 2025-02-20 16:15:45 +01:00
Slaviša Arežina
15d20a54b3 Fix files not copying to correct directory (#2521) 2025-02-20 16:14:46 +01:00
CanbiZ
bedfbd232d Update wikijs-install.sh 2025-02-20 16:06:04 +01:00
CanbiZ
3c289e7235 Update wikijs.json 2025-02-20 15:54:55 +01:00
CanbiZ
450d2410d9 Update wikijs.sh 2025-02-20 15:54:38 +01:00
community-scripts-pr-app[bot]
e1ecc8d6cf Update CHANGELOG.md (#2520)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-20 14:15:06 +01:00
community-scripts-pr-app[bot]
e9d9da3355 Update CHANGELOG.md (#2519) 2025-02-20 14:04:35 +01:00
CanbiZ
6d3c442464 WikiJS: Prepare for Using PostgreSQL (#2516) 2025-02-20 14:03:43 +01:00
community-scripts-pr-app[bot]
1a8f5a4007 Update CHANGELOG.md (#2518)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-20 14:02:16 +01:00
CanbiZ
20414d9659 [gh] better handling of labels (#2517)
* Update autolabeler.yml

* Update changelog-pr-config.json
2025-02-20 14:01:33 +01:00
community-scripts-pr-app[bot]
1fe8bc05b3 Update CHANGELOG.md (#2513) 2025-02-20 12:19:54 +01:00
CanbiZ
049afa994b Pihole & Unbound: Installation for Pihole V6 (#2505) 2025-02-20 12:18:35 +01:00
CanbiZ
ba41bcd561 Breaking: Actual Budget Script (HTTPS / DB Migration / New Structure) - Read Description (#2496) 2025-02-20 12:18:00 +01:00
community-scripts-pr-app[bot]
4aa84c265d Update CHANGELOG.md (#2506)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-20 10:46:23 +01:00
community-scripts-pr-app[bot]
436945b711 Update .app files (#2507)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-20 09:52:38 +01:00
Slaviša Arežina
b749119a1c New Script: Dolibarr (#2502)
* Add Dolibarr script

* Moved mariadb into dependencies

* Fixed updatable to true
2025-02-20 09:51:32 +01:00
community-scripts-pr-app[bot]
87c61de11e Update CHANGELOG.md (#2493)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-19 20:46:01 +01:00
Andreas
b293638c40 Fix: file replacement in Watcharr Update Script (#2498) 2025-02-19 20:25:57 +01:00
Slaviša Arežina
d1e0c2d164 Fix: Kometa - fixed successful setup message and added info to json (#2495)
* Fix the installation complete message

* Added info in json
2025-02-19 15:26:20 +01:00
CanbiZ
7e6a7468df Update actualbudget.sh 2025-02-19 14:34:57 +01:00
CanbiZ
1ffe6b1c3c Update actualbudget.sh 2025-02-19 13:52:03 +01:00
CanbiZ
a76733df60 Update actualbudget.sh 2025-02-19 13:43:29 +01:00
CanbiZ
70f5280fcc quickfix, spelling error 2025-02-19 13:35:56 +01:00
CanbiZ
4cbe90597e Fix: Actual Budget, add missing .env when updating (#2494) 2025-02-19 13:32:52 +01:00
CanbiZ
0afe60e11a Fix: Actual Budget, add missing .env when updating 2025-02-19 13:30:22 +01:00
community-scripts-pr-app[bot]
6982d02489 Update CHANGELOG.md (#2480)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-18 20:35:55 +01:00
CanbiZ
031aefe05a Fix: SQL Server 2022 | GPG & Install (#2476) 2025-02-18 20:31:28 +01:00
CanbiZ
fa01cfd840 Feature: PBS Bare Metal Installation - Allow Microcode (#2477) 2025-02-18 20:29:48 +01:00
community-scripts-pr-app[bot]
331bc0f5a6 Update CHANGELOG.md (#2473)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-18 18:10:30 +01:00
community-scripts-pr-app[bot]
7e9eb2f98a Update .app files (#2474)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-18 18:10:06 +01:00
CanbiZ
5a72b1e523 New Script: Docmost (#2472)
* New Script: Docmost LXC

* fix path

* add redis
2025-02-18 17:51:44 +01:00
community-scripts-pr-app[bot]
2693fabac2 Update CHANGELOG.md (#2470)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-18 13:04:08 +01:00
Slaviša Arežina
ce16be6393 Ensure Node version at least v18.20.3 and make fresh backup folder each time (#2468) 2025-02-18 12:00:24 +01:00
community-scripts-pr-app[bot]
b694c339cb Update CHANGELOG.md (#2467) 2025-02-18 09:04:51 +01:00
Théophile Diot
3957b46d98 Update BunkerWeb installation scripts and configuration to follow the official documentation for the latest version (#2466) 2025-02-18 08:59:55 +01:00
CanbiZ
54929e4b0d Update zipline-install.sh 2025-02-17 22:08:30 +01:00
community-scripts-pr-app[bot]
ca20d52ac1 Update CHANGELOG.md (#2456)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-17 20:28:19 +01:00
CanbiZ
e22a6dad6f Zipline: Prepare for Version 4.0.0 (#2455)
* Fix: Zipline Installation for V4

* Fix Zipline
2025-02-17 20:22:34 +01:00
community-scripts-pr-app[bot]
ee84468498 Update CHANGELOG.md (#2445) 2025-02-17 09:44:45 +01:00
V1d1o7
746f19b0b8 Update zipline-install.sh (#2444)
Updated secret generation inline with official docs
2025-02-17 08:30:34 +01:00
community-scripts-pr-app[bot]
a646a035d8 Update CHANGELOG.md (#2435)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-16 12:00:33 +01:00
bannert
505cb23467 Debian icon update (#2433)
* Update Debian LXC icon

Change Debian LXC icon to SVG from selfhst icons

* Update Debian VM icon

Change Debian VM icon to SVG from selfhst icons
2025-02-16 11:34:02 +01:00
bannert
345e109d9f Update Graylog icon (#2434)
Change Graylog icon to SVG from selfhst icons
2025-02-16 11:33:52 +01:00
Emik
bca944034a fix version typo (#2430) 2025-02-16 10:16:32 +01:00
Carl Furrow
be27905776 Fix: Grist update no longer removes previous user data (#2428)
* fix: copy previous user files from /opt/grist_bak

related to issue #2421

* chore: add more logging when running update scripts

they can take a long time, and a user may think its stuck
2025-02-16 08:47:59 +01:00
community-scripts-pr-app[bot]
53196c7603 Update CHANGELOG.md (#2425)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-15 23:04:59 +01:00
zimmra
0777ddfbfc Setup cron in install/freshrss-install.sh (#2412) 2025-02-15 23:03:05 +01:00
community-scripts-pr-app[bot]
18bd71da89 Update CHANGELOG.md (#2423)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-15 17:52:17 +01:00
Michel Roegl-Brunner
ecd13dd5a4 [GH] Update script-test Workflow (#2415)
* Update script-test.yml

* Update script-test.yml
2025-02-15 17:51:51 +01:00
community-scripts-pr-app[bot]
3ef1ac434a Update CHANGELOG.md (#2422)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-15 17:23:27 +01:00
Slaviša Arežina
60e32a05cd Update MagicMirror install and update scripts (#2409) 2025-02-15 16:46:37 +01:00
community-scripts-pr-app[bot]
b7df0ee936 Update CHANGELOG.md (#2420) 2025-02-15 16:15:37 +01:00
Tobias
4cf24c54d7 add: section to update old service files (#2416) 2025-02-15 16:13:48 +01:00
community-scripts-pr-app[bot]
c4ed0738cf Update CHANGELOG.md (#2417)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-15 12:21:59 +01:00
community-scripts-pr-app[bot]
88b20e5545 Update CHANGELOG.md (#2414)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-15 11:21:30 +01:00
Slaviša Arežina
7c5b072303 Fix RustDesk slug in json (#2411) 2025-02-15 10:22:29 +01:00
community-scripts-pr-app[bot]
347a23ad60 Update CHANGELOG.md (#2402) 2025-02-14 16:04:03 +01:00
Michel Roegl-Brunner
29806c4525 Update script-test.yml (#2399) 2025-02-14 15:31:34 +01:00
community-scripts-pr-app[bot]
a045dc8012 Update CHANGELOG.md (#2396)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-14 12:29:26 +01:00
CanbiZ
80e7e2f5b6 [gh] Introducing new Issue Github Template Feature (Bug, Feature, Task) (#2394)
* Update bug_report.yml

* Create feature_request.yml

* Create task.yml

* Update config.yml
2025-02-14 12:10:16 +01:00
Tobias
1789d181aa Fix homarr (#2369)
* fix homarr script

* Update homarr-install.sh

* Update homarr-install.sh

* Update homarr-install.sh

* Update homarr-install.sh

* Update homarr-install.sh

* Update homarr-install.sh

* Update homarr-install.sh

* Update homarr-install.sh

* fix nginx hostname

* Update homarr-install.sh

* Update homarr-install.sh

* Update homarr.sh

* Update homarr-install.sh

* Update homarr.sh

* Update install.func

* Update homarr.sh

* Update homarr.sh

* Update homarr-install.sh

* Update homarr-install.sh

* Update homarr-install.sh

* Update build.func

* Update homarr-install.sh

* Update homarr-install.sh

* Update homarr-install.sh

* Update homarr-install.sh

* Update homarr-install.sh

* Update homarr-install.sh

* Update homarr.json

* Update homarr-install.sh

* Update homarr-install.sh

* Update homarr.sh

* Update homarr.sh

* Update homarr.sh

* Update homarr.sh

* Update homarr.sh

* Update homarr.sh

* Update homarr.sh

* Update homarr.sh

* Update install.func

* Update build.func

* Update homarr-install.sh

* fix comments
2025-02-14 12:09:35 +01:00
community-scripts-pr-app[bot]
f0ca0c3379 Update CHANGELOG.md (#2395)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-14 11:53:42 +01:00
Michel Roegl-Brunner
1711e44a4d [API]Add more enpoints to API (#2390)
* Add pagination to API

* Add pagination to API
2025-02-14 11:32:26 +01:00
community-scripts-pr-app[bot]
afe4af2ff6 Update CHANGELOG.md (#2392)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-14 10:34:55 +01:00
community-scripts-pr-app[bot]
ec8c564e25 Update CHANGELOG.md (#2391)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-14 10:33:42 +01:00
Slaviša Arežina
fd9d64b342 Added configuration guide to json (#2389) 2025-02-14 10:29:25 +01:00
community-scripts-pr-app[bot]
1d928f7ea8 Update CHANGELOG.md (#2386)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-14 09:01:58 +01:00
Michel Roegl-Brunner
f3c9e8f013 Update api.func (#2378) 2025-02-14 08:06:03 +01:00
79 changed files with 1882 additions and 252 deletions

View File

@@ -40,27 +40,27 @@ Before contributing, please ensure that you have the following setup:
- [Shell Format](https://marketplace.visualstudio.com/items?itemName=foxundermoon.shell-format)
### Important Notes
- Use [AppName.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh) and [AppName-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh) as templates when creating new scripts.
- Use [AppName.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh) and [AppName-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.sh) as templates when creating new scripts.
---
# 🚀 The Application Script (ct/AppName.sh)
- You can find all coding standards, as well as the structure for this file [here](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/ct/AppName.md).
- You can find all coding standards, as well as the structure for this file [here](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.md).
- These scripts are responsible for container creation, setting the necessary variables and handling the update of the application once installed.
---
# 🛠 The Installation Script (install/AppName-install.sh)
- You can find all coding standards, as well as the structure for this file [here](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/install/AppName-install.md).
- You can find all coding standards, as well as the structure for this file [here](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.md).
- These scripts are responsible for the installation of the application.
---
## 🚀 Building Your Own Scripts
Start with the [template script](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh)
Start with the [template script](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.sh)
---
@@ -99,8 +99,8 @@ Open a Pull Request from your feature branch to the main repository branch. You
## 📚 Pages
- [CT Template: AppName.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh)
- [Install Template: AppName-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh)
- [JSON Template: AppName.json](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/json/AppName.json)
- [CT Template: AppName.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh)
- [Install Template: AppName-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.sh)
- [JSON Template: AppName.json](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/json/AppName.json)

View File

@@ -1,6 +1,6 @@
name: "🐞 Script Issue Report"
description: Report a specific issue with a script. For other inquiries, please use the Discussions section.
labels: ["bug"]
body:
- type: markdown
attributes:

View File

@@ -3,7 +3,7 @@ contact_links:
- name: 🤔 Questions and Help
url: https://github.com/community-scripts/ProxmoxVE/discussions
about: For suggestions or questions, please use the Discussions section.
- name: 🌟 Feature request
- name: 🌟 new Script request
url: https://github.com/community-scripts/ProxmoxVE/discussions/new?category=request-script
about: For feature/script requests, please use the Discussions section.
- name: 💻 Discord

View File

@@ -0,0 +1,33 @@
name: "✨ Feature Request"
description: "Suggest a new feature or enhancement."
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
# ✨ **Feature Request**
Have an idea for a new feature? Share your thoughts below!
- type: input
id: feature_summary
attributes:
label: "🌟 Briefly describe the feature"
placeholder: "e.g., Add support for XYZ"
validations:
required: true
- type: textarea
id: feature_description
attributes:
label: "📝 Detailed description"
placeholder: "Explain the feature in detail"
validations:
required: true
- type: textarea
id: use_case
attributes:
label: "💡 Why is this useful?"
placeholder: "Describe the benefit of this feature"
validations:
required: true

25
.github/ISSUE_TEMPLATE/task.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: "🛠️ Task / General Request"
description: "Request a general task, improvement, or refactor."
labels: ["task"]
body:
- type: markdown
attributes:
value: |
# 🛠️ **Task / General Request**
Request a task that isn't a bug or feature request.
- type: input
id: task_summary
attributes:
label: "📌 Task summary"
placeholder: "e.g., Refactor XYZ"
validations:
required: true
- type: textarea
id: task_details
attributes:
label: "📋 Task details"
placeholder: "Explain what needs to be done"
validations:
required: true

View File

@@ -1,34 +1,42 @@
[
{
"title": "💥 Breaking Changes",
"labels": ["breaking change"]
"title": "💥 Breaking Changes",
"labels": ["breaking change"]
},
{
"title": " New Scripts",
"labels": ["new script"]
"title": "🆕 New Scripts",
"labels": ["new script"]
},
{
"title": "🚀 Updated Scripts",
"labels": ["update script"]
"title": "🚀 Updated Scripts",
"labels": ["update script"]
},
{
"title": "🌐 Website",
"labels": ["website"]
"title": "🐞 Bug Fixes (Updated Scripts)",
"labels": ["update script", "bugfix"]
},
{
"title": "🐞 Bug Fixes",
"labels": ["bug fix"]
"title": "✨ Feature Updates (Updated Scripts)",
"labels": ["update script", "feature"]
},
{
"title": "🧰 Maintenance",
"labels": ["maintenance"]
"title": "✨ New Features",
"labels": ["feature"]
},
{
"title": "📡 API",
"labels": ["api"]
"title": "🌐 Website",
"labels": ["website"]
},
{
"title": "❔ Unlabelled",
"labels": []
"title": "📡 API",
"labels": ["api"]
},
{
"title": "🧰 Maintenance",
"labels": ["maintenance"]
},
{
"title": "❔ Unlabelled",
"labels": []
}
]

View File

@@ -19,7 +19,7 @@ jobs:
- name: Install minimatch
run: npm install minimatch
- name: Label PR based on config rules
- name: Label PR based on file changes and PR template
uses: actions/github-script@v7
with:
script: |
@@ -32,6 +32,12 @@ jobs:
const autolabelerConfig = JSON.parse(fileContent);
const prNumber = context.payload.pull_request.number;
const prBody = context.payload.pull_request.body.toLowerCase();
// Label-Sammlung (um doppelte API-Calls zu vermeiden)
let labelsToAdd = new Set();
// Prüfe Datei-Änderungen
const prListFilesResponse = await github.rest.pulls.listFiles({
owner: context.repo.owner,
repo: context.repo.repo,
@@ -51,12 +57,36 @@ jobs:
});
if (shouldAddLabel) {
console.log(`Adding label ${label} to PR ${prNumber}`);
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
labels: [label],
});
labelsToAdd.add(label);
}
}
// Prüfe PR-Template Checkboxen mit den korrekten Labels
const templateLabelMappings = {
"🐞 bug fix": "bugfix",
"✨ new feature": "feature",
"💥 breaking change": "breaking change",
"🆕 new script": "new script"
};
for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
const regex = new RegExp(`- \\[(.*?)\\] ${checkbox}`, "i");
const match = prBody.match(regex);
if (match && match[1].trim() !== "") { // Checkbox ist gesetzt
labelsToAdd.add(label);
}
}
// Debugging: Anzeigen, welche Labels tatsächlich erkannt wurden
console.log(`Labels to add: ${Array.from(labelsToAdd).join(", ")}`);
// Labels setzen, falls neue erkannt wurden
if (labelsToAdd.size > 0) {
console.log(`Adding labels ${Array.from(labelsToAdd).join(", ")} to PR ${prNumber}`);
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
labels: Array.from(labelsToAdd),
});
}

View File

@@ -89,10 +89,16 @@ jobs:
chmod +x "$INSTALL_SCRIPT"
RUNNING_FILE=$FILE
fi
git checkout origin/main .github/workflows/scripts/app-test/pr-build.func
git checkout origin/main .github/workflows/scripts/app-test/pr-install.func
git checkout origin/main .github/workflows/scripts/app-test/pr-alpine-install.func
git checkout origin/main .github/workflows/scripts/app-test/pr-create-lxc.sh
git remote add community-scripts https://github.com/community-scripts/ProxmoxVE.git
git fetch community-scripts
rm -f .github/workflows/scripts/app-test/pr-build.func || true
rm -f .github/workflows/scripts/app-test/pr-install.func || true
rm -f .github/workflows/scripts/app-test/pr-alpine-install.func || true
rm -f .github/workflows/scripts/app-test/pr-create-lxc.sh || true
git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-build.func
git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-install.func
git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-alpine-install.func
git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-create-lxc.sh
chmod +x $RUNNING_FILE
chmod +x .github/workflows/scripts/app-test/pr-create-lxc.sh
chmod +x .github/workflows/scripts/app-test/pr-install.func

View File

@@ -17,6 +17,161 @@ All LXC instances created using this repository come pre-installed with Midnight
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
## 2025-02-23
### Changes
### 🆕 New Scripts
- New Script: Hev socks5 server [@miviro](https://github.com/miviro) ([#2454](https://github.com/community-scripts/ProxmoxVE/pull/2454))
- New Script: bolt.diy [@tremor021](https://github.com/tremor021) ([#2528](https://github.com/community-scripts/ProxmoxVE/pull/2528))
### 🚀 Updated Scripts
- Fix: Wireguard - Remove setting NAT as its already in PostUp/Down [@tremor021](https://github.com/tremor021) ([#2510](https://github.com/community-scripts/ProxmoxVE/pull/2510))
### 🌐 Website
- Fix: Home Assistant Core - fixed wrong text in application description on website [@TMigue](https://github.com/TMigue) ([#2576](https://github.com/community-scripts/ProxmoxVE/pull/2576))
## 2025-02-22
### Changes
### 🌐 Website
- Fix a few broken icon links [@Snarkenfaugister](https://github.com/Snarkenfaugister) ([#2548](https://github.com/community-scripts/ProxmoxVE/pull/2548))
### 🧰 Maintenance
- Fix: URL's in CONTRIBUTING.md [@bvdberg01](https://github.com/bvdberg01) ([#2552](https://github.com/community-scripts/ProxmoxVE/pull/2552))
## 2025-02-21
### Changes
### 🚀 Updated Scripts
- Add ZFS to Podman. Now it works on ZFS! [@jaminmc](https://github.com/jaminmc) ([#2526](https://github.com/community-scripts/ProxmoxVE/pull/2526))
- Fix: Tianji - Downgrade Node [@MickLesk](https://github.com/MickLesk) ([#2530](https://github.com/community-scripts/ProxmoxVE/pull/2530))
### 🧰 Maintenance
- [gh] General Cleanup & Moving Files / Folders [@MickLesk](https://github.com/MickLesk) ([#2532](https://github.com/community-scripts/ProxmoxVE/pull/2532))
## 2025-02-20
### Changes
### 💥 Breaking Changes
- Breaking: Actual Budget Script (HTTPS / DB Migration / New Structure) - Read Description [@MickLesk](https://github.com/MickLesk) ([#2496](https://github.com/community-scripts/ProxmoxVE/pull/2496))
- Pihole & Unbound: Installation for Pihole V6 (read description) [@MickLesk](https://github.com/MickLesk) ([#2505](https://github.com/community-scripts/ProxmoxVE/pull/2505))
### ✨ New Scripts
- New Script: Dolibarr [@tremor021](https://github.com/tremor021) ([#2502](https://github.com/community-scripts/ProxmoxVE/pull/2502))
### 🚀 Updated Scripts
- Fix: Pingvin Share - Update not copying to correct directory [@tremor021](https://github.com/tremor021) ([#2521](https://github.com/community-scripts/ProxmoxVE/pull/2521))
- WikiJS: Prepare for Using PostgreSQL [@MickLesk](https://github.com/MickLesk) ([#2516](https://github.com/community-scripts/ProxmoxVE/pull/2516))
### 🧰 Maintenance
- [gh] better handling of labels [@MickLesk](https://github.com/MickLesk) ([#2517](https://github.com/community-scripts/ProxmoxVE/pull/2517))
## 2025-02-19
### Changes
### 🚀 Updated Scripts
- Fix: file replacement in Watcharr Update Script [@Clusters](https://github.com/Clusters) ([#2498](https://github.com/community-scripts/ProxmoxVE/pull/2498))
- Fix: Kometa - fixed successful setup message and added info to json [@tremor021](https://github.com/tremor021) ([#2495](https://github.com/community-scripts/ProxmoxVE/pull/2495))
- Fix: Actual Budget, add missing .env when updating [@MickLesk](https://github.com/MickLesk) ([#2494](https://github.com/community-scripts/ProxmoxVE/pull/2494))
## 2025-02-18
### Changes
### ✨ New Scripts
- New Script: Docmost [@MickLesk](https://github.com/MickLesk) ([#2472](https://github.com/community-scripts/ProxmoxVE/pull/2472))
### 🚀 Updated Scripts
- Fix: SQL Server 2022 | GPG & Install [@MickLesk](https://github.com/MickLesk) ([#2476](https://github.com/community-scripts/ProxmoxVE/pull/2476))
- Feature: PBS Bare Metal Installation - Allow Microcode [@MickLesk](https://github.com/MickLesk) ([#2477](https://github.com/community-scripts/ProxmoxVE/pull/2477))
- Fix: MagicMirror force Node version and fix backups [@tremor021](https://github.com/tremor021) ([#2468](https://github.com/community-scripts/ProxmoxVE/pull/2468))
- Update BunkerWeb scripts to latest NGINX and specs [@TheophileDiot](https://github.com/TheophileDiot) ([#2466](https://github.com/community-scripts/ProxmoxVE/pull/2466))
## 2025-02-17
### Changes
### 💥 Breaking Changes
- Zipline: Prepare for Version 4.0.0 [@MickLesk](https://github.com/MickLesk) ([#2455](https://github.com/community-scripts/ProxmoxVE/pull/2455))
### 🚀 Updated Scripts
- Fix: Zipline increase SECRET to 42 chars [@V1d1o7](https://github.com/V1d1o7) ([#2444](https://github.com/community-scripts/ProxmoxVE/pull/2444))
## 2025-02-16
### Changes
### 🚀 Updated Scripts
- Fix: Typo in Ubuntu 24.10 VM Script [@PhoenixEmik](https://github.com/PhoenixEmik) ([#2430](https://github.com/community-scripts/ProxmoxVE/pull/2430))
- Fix: Grist update no longer removes previous user data [@cfurrow](https://github.com/cfurrow) ([#2428](https://github.com/community-scripts/ProxmoxVE/pull/2428))
### 🌐 Website
- Debian icon update [@bannert1337](https://github.com/bannert1337) ([#2433](https://github.com/community-scripts/ProxmoxVE/pull/2433))
- Update Graylog icon [@bannert1337](https://github.com/bannert1337) ([#2434](https://github.com/community-scripts/ProxmoxVE/pull/2434))
## 2025-02-15
### Changes
### 🚀 Updated Scripts
- Setup cron in install/freshrss-install.sh [@zimmra](https://github.com/zimmra) ([#2412](https://github.com/community-scripts/ProxmoxVE/pull/2412))
- Fix: Homarr update service files [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2416](https://github.com/community-scripts/ProxmoxVE/pull/2416))
- Update MagicMirror install and update scripts [@tremor021](https://github.com/tremor021) ([#2409](https://github.com/community-scripts/ProxmoxVE/pull/2409))
### 🌐 Website
- Fix RustDesk slug in json [@tremor021](https://github.com/tremor021) ([#2411](https://github.com/community-scripts/ProxmoxVE/pull/2411))
### 🧰 Maintenance
- [GH] Update script-test Workflow [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2415](https://github.com/community-scripts/ProxmoxVE/pull/2415))
## 2025-02-14
### Changes
### 🚀 Updated Scripts
- Fix homarr [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2369](https://github.com/community-scripts/ProxmoxVE/pull/2369))
### 🌐 Website
- RustDesk Server - Added configuration guide to json [@tremor021](https://github.com/tremor021) ([#2389](https://github.com/community-scripts/ProxmoxVE/pull/2389))
### 🧰 Maintenance
- [gh] Update script-test.yml [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2399](https://github.com/community-scripts/ProxmoxVE/pull/2399))
- [gh] Introducing new Issue Github Template Feature (Bug, Feature, Task) [@MickLesk](https://github.com/MickLesk) ([#2394](https://github.com/community-scripts/ProxmoxVE/pull/2394))
### 📡 API
- [API]Add more enpoints to API [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2390](https://github.com/community-scripts/ProxmoxVE/pull/2390))
- [API] Update api.func: Remove unwanted file creation [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2378](https://github.com/community-scripts/ProxmoxVE/pull/2378))
## 2025-02-13
### Changes

View File

@@ -19,10 +19,10 @@
<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" />
</a>
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTING.md">
<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/USER_SUBMITTED_GUIDES.md">
<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">

View File

@@ -11,6 +11,7 @@ import (
"log"
"net/http"
"os"
"strconv"
"time"
"github.com/gorilla/mux"
@@ -31,6 +32,7 @@ func loadEnv() {
}
}
// DataModel represents a single document in MongoDB
type DataModel struct {
ID primitive.ObjectID `json:"id" bson:"_id,omitempty"`
CT_TYPE uint `json:"ct_type" bson:"ct_type"`
@@ -56,6 +58,13 @@ type StatusModel struct {
STATUS string `json:"status" bson:"status"`
}
type CountResponse struct {
TotalEntries int64 `json:"total_entries"`
StatusCount map[string]int64 `json:"status_count"`
NSAPPCount map[string]int64 `json:"nsapp_count"`
}
// ConnectDatabase initializes the MongoDB connection
func ConnectDatabase() {
loadEnv()
@@ -78,6 +87,7 @@ func ConnectDatabase() {
fmt.Println("Connected to MongoDB on 10.10.10.18")
}
// UploadJSON handles API requests and stores data as a document in MongoDB
func UploadJSON(w http.ResponseWriter, r *http.Request) {
var input DataModel
@@ -98,6 +108,7 @@ func UploadJSON(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(map[string]string{"message": "Data saved successfully"})
}
// UpdateStatus updates the status of a record based on RANDOM_ID
func UpdateStatus(w http.ResponseWriter, r *http.Request) {
var input StatusModel
@@ -120,6 +131,7 @@ func UpdateStatus(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(map[string]string{"message": "Record updated successfully"})
}
// GetDataJSON fetches all data from MongoDB
func GetDataJSON(w http.ResponseWriter, r *http.Request) {
var records []DataModel
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
@@ -144,6 +156,270 @@ func GetDataJSON(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(records)
}
func GetPaginatedData(w http.ResponseWriter, r *http.Request) {
page, _ := strconv.Atoi(r.URL.Query().Get("page"))
limit, _ := strconv.Atoi(r.URL.Query().Get("limit"))
if page < 1 {
page = 1
}
if limit < 1 {
limit = 10
}
skip := (page - 1) * limit
var records []DataModel
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
options := options.Find().SetSkip(int64(skip)).SetLimit(int64(limit))
cursor, err := collection.Find(ctx, bson.M{}, options)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer cursor.Close(ctx)
for cursor.Next(ctx) {
var record DataModel
if err := cursor.Decode(&record); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
records = append(records, record)
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(records)
}
func GetSummary(w http.ResponseWriter, r *http.Request) {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
totalCount, err := collection.CountDocuments(ctx, bson.M{})
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
statusCount := make(map[string]int64)
nsappCount := make(map[string]int64)
pipeline := []bson.M{
{"$group": bson.M{"_id": "$status", "count": bson.M{"$sum": 1}}},
}
cursor, err := collection.Aggregate(ctx, pipeline)
if err == nil {
for cursor.Next(ctx) {
var result struct {
ID string `bson:"_id"`
Count int64 `bson:"count"`
}
if err := cursor.Decode(&result); err == nil {
statusCount[result.ID] = result.Count
}
}
}
pipeline = []bson.M{
{"$group": bson.M{"_id": "$nsapp", "count": bson.M{"$sum": 1}}},
}
cursor, err = collection.Aggregate(ctx, pipeline)
if err == nil {
for cursor.Next(ctx) {
var result struct {
ID string `bson:"_id"`
Count int64 `bson:"count"`
}
if err := cursor.Decode(&result); err == nil {
nsappCount[result.ID] = result.Count
}
}
}
response := CountResponse{
TotalEntries: totalCount,
StatusCount: statusCount,
NSAPPCount: nsappCount,
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(response)
}
func GetByNsapp(w http.ResponseWriter, r *http.Request) {
nsapp := r.URL.Query().Get("nsapp")
var records []DataModel
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
cursor, err := collection.Find(ctx, bson.M{"nsapp": nsapp})
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer cursor.Close(ctx)
for cursor.Next(ctx) {
var record DataModel
if err := cursor.Decode(&record); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
records = append(records, record)
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(records)
}
func GetByDateRange(w http.ResponseWriter, r *http.Request) {
startDate := r.URL.Query().Get("start_date")
endDate := r.URL.Query().Get("end_date")
if startDate == "" || endDate == "" {
http.Error(w, "Both start_date and end_date are required", http.StatusBadRequest)
return
}
start, err := time.Parse("2006-01-02T15:04:05.999999+00:00", startDate+"T00:00:00+00:00")
if err != nil {
http.Error(w, "Invalid start_date format", http.StatusBadRequest)
return
}
end, err := time.Parse("2006-01-02T15:04:05.999999+00:00", endDate+"T23:59:59+00:00")
if err != nil {
http.Error(w, "Invalid end_date format", http.StatusBadRequest)
return
}
var records []DataModel
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
cursor, err := collection.Find(ctx, bson.M{
"created_at": bson.M{
"$gte": start,
"$lte": end,
},
})
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer cursor.Close(ctx)
for cursor.Next(ctx) {
var record DataModel
if err := cursor.Decode(&record); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
records = append(records, record)
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(records)
}
func GetByStatus(w http.ResponseWriter, r *http.Request) {
status := r.URL.Query().Get("status")
var records []DataModel
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
cursor, err := collection.Find(ctx, bson.M{"status": status})
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer cursor.Close(ctx)
for cursor.Next(ctx) {
var record DataModel
if err := cursor.Decode(&record); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
records = append(records, record)
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(records)
}
func GetByOS(w http.ResponseWriter, r *http.Request) {
osType := r.URL.Query().Get("os_type")
osVersion := r.URL.Query().Get("os_version")
var records []DataModel
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
cursor, err := collection.Find(ctx, bson.M{"os_type": osType, "os_version": osVersion})
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer cursor.Close(ctx)
for cursor.Next(ctx) {
var record DataModel
if err := cursor.Decode(&record); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
records = append(records, record)
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(records)
}
func GetErrors(w http.ResponseWriter, r *http.Request) {
errorCount := make(map[string]int)
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
cursor, err := collection.Find(ctx, bson.M{"error": bson.M{"$ne": ""}})
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer cursor.Close(ctx)
for cursor.Next(ctx) {
var record DataModel
if err := cursor.Decode(&record); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
if record.ERROR != "" {
errorCount[record.ERROR]++
}
}
type ErrorCountResponse struct {
Error string `json:"error"`
Count int `json:"count"`
}
var errorCounts []ErrorCountResponse
for err, count := range errorCount {
errorCounts = append(errorCounts, ErrorCountResponse{
Error: err,
Count: count,
})
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(struct {
ErrorCounts []ErrorCountResponse `json:"error_counts"`
}{
ErrorCounts: errorCounts,
})
}
func main() {
ConnectDatabase()
@@ -152,6 +428,13 @@ func main() {
router.HandleFunc("/upload", UploadJSON).Methods("POST")
router.HandleFunc("/upload/updatestatus", UpdateStatus).Methods("POST")
router.HandleFunc("/data/json", GetDataJSON).Methods("GET")
router.HandleFunc("/data/paginated", GetPaginatedData).Methods("GET")
router.HandleFunc("/data/summary", GetSummary).Methods("GET")
router.HandleFunc("/data/nsapp", GetByNsapp).Methods("GET")
router.HandleFunc("/data/date", GetByDateRange).Methods("GET")
router.HandleFunc("/data/status", GetByStatus).Methods("GET")
router.HandleFunc("/data/os", GetByOS).Methods("GET")
router.HandleFunc("/data/errors", GetErrors).Methods("GET")
c := cors.New(cors.Options{
AllowedOrigins: []string{"*"},

View File

@@ -26,10 +26,12 @@ function update_script() {
if [[ ! -d /opt/actualbudget ]]; then
msg_error "No ${APP} Installation Found!"
exit
exit 1
fi
RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual/releases/latest | \
grep "tag_name" | awk -F '"' '{print substr($4, 2)}')
if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
msg_info "Stopping ${APP}"
systemctl stop actualbudget
@@ -37,32 +39,78 @@ function update_script() {
msg_info "Updating ${APP} to ${RELEASE}"
cd /tmp
wget -q https://github.com/actualbudget/actual-server/archive/refs/tags/v${RELEASE}.tar.gz
wget -q "https://github.com/actualbudget/actual-server/archive/refs/tags/v${RELEASE}.tar.gz"
mv /opt/actualbudget /opt/actualbudget_bak
tar -xzf v${RELEASE}.tar.gz >/dev/null 2>&1
tar -xzf "v${RELEASE}.tar.gz" &>/dev/null
mv *ctual-server-* /opt/actualbudget
rm -rf /opt/actualbudget/.env
mv /opt/actualbudget_bak/.env /opt/actualbudget
mv /opt/actualbudget_bak/.migrate /opt/actualbudget
mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files
mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config}
for dir in server-files .migrate user-files migrations; do
if [[ -d /opt/actualbudget_bak/$dir ]]; then
mv /opt/actualbudget_bak/$dir/* /opt/actualbudget-data/$dir/ 2>/dev/null || true
fi
done
if [[ -f /opt/actualbudget-data/migrate/.migrations ]]; then
sed -i 's/null/1732656575219/g' /opt/actualbudget-data/migrate/.migrations
sed -i 's/null/1732656575220/g' /opt/actualbudget-data/migrate/.migrations
fi
if [[ -f /opt/actualbudget/server-files/account.sqlite ]] && [[ ! -f /opt/actualbudget-data/server-files/account.sqlite ]]; then
mv /opt/actualbudget/server-files/account.sqlite /opt/actualbudget-data/server-files/account.sqlite
fi
if [[ -f /opt/actualbudget_bak/.env ]]; then
mv /opt/actualbudget_bak/.env /opt/actualbudget-data/.env
else
cat <<EOF > /opt/actualbudget-data/.env
ACTUAL_UPLOAD_DIR=/opt/actualbudget-data/upload
ACTUAL_DATA_DIR=/opt/actualbudget-data
ACTUAL_SERVER_FILES_DIR=/opt/actualbudget-data/server-files
ACTUAL_USER_FILES=/opt/actualbudget-data/user-files
PORT=5006
ACTUAL_TRUSTED_PROXIES="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1/32,::1/128,fc00::/7"
ACTUAL_HTTPS_KEY=/opt/actualbudget/selfhost.key
ACTUAL_HTTPS_CERT=/opt/actualbudget/selfhost.crt
EOF
fi
cd /opt/actualbudget
yarn install &>/dev/null
echo "${RELEASE}" >/opt/actualbudget_version.txt
echo "${RELEASE}" > /opt/actualbudget_version.txt
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}"
cat <<EOF > /etc/systemd/system/actualbudget.service
[Unit]
Description=Actual Budget Service
After=network.target
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/opt/actualbudget
EnvironmentFile=/opt/actualbudget-data/.env
ExecStart=/usr/bin/yarn start
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start actualbudget
msg_ok "Started ${APP}"
msg_info "Cleaning Up"
rm -rf /opt/actualbudget_bak
rm -rf /tmp/v${RELEASE}.tar.gz
rm -rf "/tmp/v${RELEASE}.tar.gz"
msg_ok "Cleaned"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
exit 0
}
start
@@ -72,4 +120,4 @@ description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5006${CL}"
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:5006${CL}"

71
ct/boltdiy.sh Normal file
View File

@@ -0,0 +1,71 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/stackblitz-labs/bolt.diy/
APP="boltdiy"
TAGS="code;ai"
var_cpu="2"
var_ram="3072"
var_disk="6"
var_os="debian"
var_version="12"
var_unprivileged="1"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/bolt.diy ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/stackblitz-labs/bolt.diy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/boltdiy_version.txt)" ]] || [[ ! -f /opt/boltdiy_version.txt ]]; then
msg_info "Stopping $APP"
systemctl stop boltdiy
msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
temp_dir=$(mktemp -d)
temp_file=$(mktemp)
cd $temp_dir
wget -q "https://github.com/stackblitz-labs/bolt.diy/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
tar xzf $temp_file
cp -rf bolt.diy-${RELEASE}/* /opt/bolt.diy
cd /opt/bolt.diy
$STD pnpm install
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP"
systemctl start boltdiy
msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -rf $temp_file
rm -rf $temp_dir
msg_ok "Cleanup Completed"
echo "${RELEASE}" >/opt/boltdiy_version.txt
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
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}:5173${CL}"

View File

@@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
APP="BunkerWeb"
var_tags="webserver"
var_cpu="2"
var_ram="1024"
var_ram="4096"
var_disk="4"
var_os="debian"
var_version="12"
@@ -34,7 +34,7 @@ Pin: version ${RELEASE}
Pin-Priority: 1001
EOF
apt-get update
apt-get install -y nginx=1.26.2*
apt-get install -y nginx=1.26.3*
apt-get install -y bunkerweb=${RELEASE}
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"

70
ct/docmost.sh Normal file
View File

@@ -0,0 +1,70 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://docmost.com/
APP="Docmost"
var_tags="documents"
var_cpu="3"
var_ram="3072"
var_disk="7"
var_os="debian"
var_version="12"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/docmost ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP}"
systemctl stop docmost
msg_ok "${APP} Stopped"
msg_info "Updating ${APP} to v${RELEASE}"
cp /opt/docmost/.env /opt/
rm -rf /opt/docmost
temp_file=$(mktemp)
wget -q "https://github.com/docmost/docmost/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
tar -xzf "$temp_file"
mv docmost-${RELEASE} /opt/docmost
cd /opt/docmost
mv /opt/.env /opt/docmost/.env
pnpm install --force &>/dev/null
pnpm build &>/dev/null
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}"
systemctl start docmost
msg_ok "Started ${APP}"
msg_info "Cleaning Up"
rm -f ${temp_file}
msg_ok "Cleaned"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${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}:3000${CL}"

41
ct/dolibarr.sh Normal file
View File

@@ -0,0 +1,41 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Dolibarr/dolibarr/
APP="Dolibarr"
var_tags="erp;accounting"
var_cpu="1"
var_ram="2048"
var_disk="6"
var_os="debian"
var_version="12"
var_unprivileged="1"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /usr/share/dolibarr ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_error "To update ${APP}, use the applications web interface."
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}/dolibarr/install${CL}"

View File

@@ -34,18 +34,36 @@ function update_script() {
msg_ok "Stopped ${APP} Service"
msg_info "Updating ${APP} to v${RELEASE}"
cd /opt
rm -rf grist_bak
mv grist grist_bak
wget -q https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip
unzip -q v$RELEASE.zip
mv grist-core-${RELEASE} grist
cp -n /opt/grist_bak/.env /opt/grist/.env
mkdir -p grist/docs
cp -n grist_bak/.env grist/.env || true
cp -r grist_bak/docs/* grist/docs/ || true
cp grist_bak/grist-sessions.db grist/grist-sessions.db || true
cp grist_bak/landing.db grist/landing.db || true
cd grist
msg_info "Installing Dependencies"
yarn install >/dev/null 2>&1
msg_ok "Installed Dependencies"
msg_info "Building"
yarn run build:prod >/dev/null 2>&1
msg_ok "Done building"
msg_info "Installing Python"
yarn run install:python >/dev/null 2>&1
msg_ok "Installed Python"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting ${APP} Service"

6
ct/headers/boltdiy Normal file
View File

@@ -0,0 +1,6 @@
__ ____ ___
/ /_ ____ / / /_____/ (_)_ __
/ __ \/ __ \/ / __/ __ / / / / /
/ /_/ / /_/ / / /_/ /_/ / / /_/ /
/_.___/\____/_/\__/\__,_/_/\__, /
/____/

6
ct/headers/docmost Normal file
View File

@@ -0,0 +1,6 @@
____ __
/ __ \____ _________ ___ ____ _____/ /_
/ / / / __ \/ ___/ __ `__ \/ __ \/ ___/ __/
/ /_/ / /_/ / /__/ / / / / / /_/ (__ ) /_
/_____/\____/\___/_/ /_/ /_/\____/____/\__/

6
ct/headers/dolibarr Normal file
View File

@@ -0,0 +1,6 @@
____ ___ __
/ __ \____ / (_) /_ ____ ___________
/ / / / __ \/ / / __ \/ __ `/ ___/ ___/
/ /_/ / /_/ / / / /_/ / /_/ / / / /
/_____/\____/_/_/_.___/\__,_/_/ /_/

View File

@@ -0,0 +1,6 @@
__ __ ______
/ /_ ___ _ __ _________ _____/ /_______/ ____/ ________ ______ _____ _____
/ __ \/ _ \ | / /_____/ ___/ __ \/ ___/ //_/ ___/___ \______/ ___/ _ \/ ___/ | / / _ \/ ___/
/ / / / __/ |/ /_____(__ ) /_/ / /__/ ,< (__ )___/ /_____(__ ) __/ / | |/ / __/ /
/_/ /_/\___/|___/ /____/\____/\___/_/|_/____/_____/ /____/\___/_/ |___/\___/_/

64
ct/hev-socks5-server.sh Normal file
View File

@@ -0,0 +1,64 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: miviro
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/heiher/hev-socks5-server
APP="hev-socks5-server"
TAGS="proxy,socks5"
var_cpu="1"
var_ram="512"
var_disk="2"
var_os="debian"
var_version="12"
var_unprivileged="1"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /opt/${APP} ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/heiher/${APP}/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Stopping $APP"
systemctl stop $APP
msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
curl -L -o "${APP}" "https://github.com/heiher/${APP}/releases/download/${RELEASE}/hev-socks5-server-linux-x86_64"
mv ${APP} /opt/${APP}
chmod +x /opt/${APP}
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP"
systemctl start $APP
msg_ok "Started $APP"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
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 with a SOCKS5 client using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}${IP}:1080${CL}"
echo -e "${INFO}${YW} and the credentials stored at /root/hev.creds${CL}"

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster) | Co-Author: MickLesk (Canbiz)
# Author: tteck (tteckster) | Co-Author: MickLesk (Canbiz) | Co-Author: CrazyWolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://homarr.dev/
@@ -15,6 +15,7 @@ var_version="12"
var_unprivileged="1"
header_info "$APP"
variables
color
catch_errors
@@ -33,11 +34,48 @@ if [[ -f /opt/homarr/database/db.sqlite ]]; then
msg_error " - https://github.com/community-scripts/ProxmoxVE/discussions/1551"
msg_error " - https://homarr.dev/docs/getting-started/after-the-installation/#importing-a-zip-from-version-before-100"
exit 1
fi
if [[ ! -f /opt/run_homarr.sh ]]; then
msg_info "Detected outdated and missing service files"
msg_error "Warning - The port of homarr changed from 3000 to 7575"
apt-get install -y nginx gettext openssl gpg &>/dev/null
sed -i '/^NODE_ENV=/d' /opt/homarr/.env && echo "NODE_ENV='production'" >> /opt/homarr/.env
sed -i '/^DB_DIALECT=/d' /opt/homarr/.env && echo "DB_DIALECT='sqlite'" >> /opt/homarr/.env
cat <<'EOF' >/opt/run_homarr.sh
#!/bin/bash
export DB_DIALECT='sqlite'
export AUTH_SECRET=$(openssl rand -base64 32)
node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT
export HOSTNAME=$(ip route get 1.1.1.1 | grep -oP 'src \K[^ ]+')
envsubst '${HOSTNAME}' < /etc/nginx/templates/nginx.conf > /etc/nginx/nginx.conf
nginx -g 'daemon off;' &
redis-server /opt/homarr/packages/redis/redis.conf &
node apps/tasks/tasks.cjs &
node apps/websocket/wssServer.cjs &
node apps/nextjs/server.js & PID=$!
wait $PID
EOF
chmod +x /opt/run_homarr.sh
rm /etc/systemd/system/homarr.service
cat <<EOF >/etc/systemd/system/homarr.service
[Unit]
Description=Homarr Service
After=network.target
[Service]
Type=exec
WorkingDirectory=/opt/homarr
EnvironmentFile=-/opt/homarr/.env
ExecStart=/opt/run_homarr.sh
[Install]
WantedBy=multi-user.target
EOF
msg_ok "Updated Services"
systemctl daemon-reload
fi
RELEASE=$(curl -s https://api.github.com/repos/homarr-labs/homarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping Services"
msg_info "Stopping Services (Patience)"
systemctl stop homarr
msg_ok "Services Stopped"
@@ -46,7 +84,7 @@ fi
cp /opt/homarr/.env /opt/homarr-data-backup/.env
msg_ok "Backup Data"
msg_info "Updating ${APP} to v${RELEASE}"
msg_info "Updating and rebuilding ${APP} to v${RELEASE} (Patience)"
wget -q "https://github.com/homarr-labs/homarr/archive/refs/tags/v${RELEASE}.zip"
unzip -q v${RELEASE}.zip
rm -rf v${RELEASE}.zip
@@ -55,9 +93,23 @@ fi
mv /opt/homarr-data-backup/.env /opt/homarr/.env
cd /opt/homarr
pnpm install &>/dev/null
pnpm run db:migration:sqlite:run &>/dev/null
pnpm build &>/dev/null
mkdir build
cp /opt/homarr/apps/nextjs/next.config.ts .
cp /opt/homarr/apps/nextjs/package.json .
cp -r /opt/homarr/packages/db/migrations /opt/homarr_db/migrations
cp -r /opt/homarr/apps/nextjs/.next/standalone/* /opt/homarr
mkdir -p /appdata/redis
cp /opt/homarr/packages/redis/redis.conf /opt/homarr/redis.conf
rm /etc/nginx/nginx.conf
mkdir -p /etc/nginx/templates
cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf
mkdir -p /opt/homarr/apps/cli
cp /opt/homarr/packages/cli/cli.cjs /opt/homarr/apps/cli/cli.cjs
echo $'#!/bin/bash\ncd /opt/homarr/apps/cli && node ./cli.cjs "$@"' > /usr/bin/homarr
chmod +x /usr/bin/homarr
mkdir /opt/homarr/build
cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}"
@@ -79,4 +131,4 @@ description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7575${CL}"

View File

@@ -73,5 +73,5 @@ description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
echo -e "${INFO}${YW} Access the LXC at following IP address:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}${IP}${CL}"

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster)
# Author: tteck (tteckster) | Co-Author Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://magicmirror.builders/
@@ -27,18 +27,48 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then
if ! command -v npm >/dev/null 2>&1; then
echo "Installing NPM..."
apt-get install -y npm >/dev/null 2>&1
echo "Installed NPM..."
RELEASE=$(curl -s https://api.github.com/repos/MagicMirrorOrg/MagicMirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt; fi
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping Service"
systemctl stop magicmirror
msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}"
$STD apt-get update
$STD apt-get upgrade -y
rm -rf /opt/magicmirror-backup
mkdir /opt/magicmirror-backup
cp /opt/magicmirror/config/config.js /opt/magicmirror-backup
if [[ -f /opt/magicmirror/css/custom.css ]]; then
cp /opt/magicmirror/css/custom.css /opt/magicmirror-backup
fi
cp -r /opt/magicmirror/modules /opt/magicmirror-backup
temp_file=$(mktemp)
wget -q "https://github.com/MagicMirrorOrg/MagicMirror/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
tar -xzf "$temp_file"
rm -rf /opt/magicmirror
mv MagicMirror-${RELEASE} /opt/magicmirror
cd /opt/magicmirror
npm run install-mm &> /dev/null
cp /opt/magicmirror-backup/config.js /opt/magicmirror/config/
if [[ -f /opt/magicmirror-backup/custom.css ]]; then
cp /opt/magicmirror-backup/custom.css /opt/magicmirror/css/
fi
echo "${RELEASE}" >"/opt/${APP}_version.txt"
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting Service"
systemctl start magicmirror
msg_ok "Started Service"
msg_info "Cleaning up"
rm -f $temp_file
msg_ok "Cleaned"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}."
fi
msg_info "Updating ${APP} LXC"
cd /opt/magicmirror
git pull &>/dev/null
npm install --only=prod --omit=dev &>/dev/null
msg_ok "Updated Successfully"
exit
}

View File

@@ -39,7 +39,7 @@ function update_script() {
cd /opt
wget -q "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip"
unzip -q v${RELEASE}.zip
mv pingvin-share-${RELEASE} /opt/pingvin-share
cp -rf pingvin-share-${RELEASE}/* /opt/pingvin-share
cd /opt/pingvin-share
cd backend
npm install &>/dev/null
@@ -49,6 +49,7 @@ function update_script() {
npm run build &>/dev/null
echo "${RELEASE}" >"/opt/pingvin_version.txt"
rm -rf /opt/v${RELEASE}.zip
rm -rf /opt/pingvin-share-${RELEASE}
msg_ok "Updated Pingvin Share to v${RELEASE}"
msg_info "Starting Pingvin Share"

View File

@@ -37,11 +37,12 @@ function update_script() {
msg_info "Updating $APP to v${RELEASE}"
temp_file=$(mktemp)
temp_folder=$(mktemp -d)
wget -q "https://github.com/sbondCo/Watcharr/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
tar -xzf "$temp_file"
tar -xzf "$temp_file" -C "$temp_folder"
rm -f /opt/watcharr/server/watcharr
rm -rf /opt/watcharr/server/ui
mv Watcharr-${RELEASE}/ /opt/watcharr
cp -rf ${temp_folder}/Watcharr-${RELEASE}/* /opt/watcharr
cd /opt/watcharr
export GOOS=linux
npm i &> /dev/null
@@ -58,6 +59,7 @@ function update_script() {
msg_info "Cleaning Up"
rm -f ${temp_file}
rm -rf ${temp_folder}
msg_ok "Cleanup Completed"
echo "${RELEASE}" >/opt/${APP}_version.txt

View File

@@ -7,9 +7,9 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
APP="Wikijs"
var_tags="wiki"
var_cpu="1"
var_ram="512"
var_disk="3"
var_cpu="2"
var_ram="2048"
var_disk="10"
var_os="debian"
var_version="12"
var_unprivileged="1"

View File

@@ -26,6 +26,12 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if ! command -v pnpm &>/dev/null; then
msg_info "Installing pnpm"
#export NODE_OPTIONS=--openssl-legacy-provider
npm install -g pnpm@latest &>/dev/null
msg_ok "Installed pnpm"
fi
RELEASE=$(curl -s https://api.github.com/repos/diced/zipline/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP}"
@@ -40,8 +46,8 @@ function update_script() {
mv zipline-${RELEASE} /opt/zipline
cd /opt/zipline
mv /opt/.env /opt/zipline/.env
yarn install &>/dev/null
yarn build &>/dev/null
pnpm install &>/dev/null
pnpm build &>/dev/null
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}"

View File

@@ -1,9 +1,9 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster)
# License: MIT
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://actualbudget.org/
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
@@ -41,18 +41,32 @@ RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual/releases/late
wget -q https://github.com/actualbudget/actual-server/archive/refs/tags/v${RELEASE}.tar.gz
tar -xzf v${RELEASE}.tar.gz
mv *ctual-server-* /opt/actualbudget
mkdir -p /opt/actualbudget/server-files
mkdir -p /opt/actualbudget-data
chown -R root:root /opt/actualbudget/server-files
chmod 755 /opt/actualbudget/server-files
cat <<EOF > /opt/actualbudget/.env
ACTUAL_UPLOAD_DIR=/opt/actualbudget/server-files
mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config}
chown -R root:root /opt/actualbudget-data
chmod -R 755 /opt/actualbudget-data
cat <<EOF > /opt/actualbudget-data/.env
ACTUAL_UPLOAD_DIR=/opt/actualbudget-data/upload
ACTUAL_DATA_DIR=/opt/actualbudget-data
ACTUAL_SERVER_FILES_DIR=/opt/actualbudget/server-files
ACTUAL_SERVER_FILES_DIR=/opt/actualbudget-data/server-files
ACTUAL_USER_FILES=/opt/actualbudget-data/user-files
PORT=5006
ACTUAL_TRUSTED_PROXIES="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1/32,::1/128,fc00::/7"
ACTUAL_HTTPS_KEY=/opt/actualbudget/selfhost.key
ACTUAL_HTTPS_CERT=/opt/actualbudget/selfhost.crt
EOF
cd /opt/actualbudget
$STD yarn install
$STD openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout selfhost.key -out selfhost.crt <<EOF
US
California
San Francisco
My Organization
My Unit
localhost
myemail@example.com
EOF
echo "${RELEASE}" >"/opt/actualbudget_version.txt"
msg_ok "Installed Actual Budget"
@@ -67,7 +81,7 @@ Type=simple
User=root
Group=root
WorkingDirectory=/opt/actualbudget
EnvironmentFile=/opt/actualbudget/.env
EnvironmentFile=/opt/actualbudget-data/.env
ExecStart=/usr/bin/yarn start
Restart=always
RestartSec=10

View File

@@ -0,0 +1,74 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/stackblitz-labs/bolt.diy/
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
curl \
sudo \
mc \
gnupg \
git
msg_ok "Installed Dependencies"
msg_info "Setup Node.js Repository"
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
msg_ok "Setup Node.js Repository"
msg_info "Setup Node.js"
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install -g pnpm
msg_ok "Setup Node.js"
msg_info "Setup bolt.diy"
temp_file=$(mktemp)
RELEASE=$(curl -s https://api.github.com/repos/stackblitz-labs/bolt.diy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q "https://github.com/stackblitz-labs/bolt.diy/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
tar xzf $temp_file
mv bolt.diy-${RELEASE} /opt/bolt.diy
cd /opt/bolt.diy
$STD pnpm install
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Setup bolt.diy"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/boltdiy.service
[Unit]
Description=bolt.diy Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/bolt.diy
ExecStart=/usr/bin/pnpm run dev --host
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now boltdiy
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -f $temp_file
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -26,7 +26,7 @@ msg_info "Installing Nginx"
wget -qO- https://nginx.org/keys/nginx_signing.key | gpg --dearmor >/usr/share/keyrings/nginx-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian $(lsb_release -cs) nginx" >/etc/apt/sources.list.d/nginx.list
$STD apt-get update
$STD apt-get install -y nginx=1.26.2*
$STD apt-get install -y nginx=1.26.3*
msg_ok "Installed Nginx"
RELEASE=$(curl -s https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
@@ -34,7 +34,6 @@ msg_info "Installing BunkerWeb v${RELEASE} (Patience)"
curl -fsSL "https://repo.bunkerweb.io/bunkerity/bunkerweb/gpgkey" | gpg --dearmor >/etc/apt/keyrings/bunkerity_bunkerweb-archive-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/bunkerity_bunkerweb-archive-keyring.gpg] https://repo.bunkerweb.io/bunkerity/bunkerweb/debian/ bookworm main" >/etc/apt/sources.list.d/bunkerity_bunkerweb.list
$STD apt-get update
export UI_WIZARD=1
$STD apt-get install -y bunkerweb=${RELEASE}
cat <<EOF >/etc/apt/preferences.d/bunkerweb
Package: bunkerweb

View File

@@ -0,0 +1,97 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (Canbiz)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/documenso/documenso
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
gpg \
curl \
sudo \
redis \
make \
mc \
postgresql
msg_ok "Installed Dependencies"
msg_info "Setting up Node.js Repository"
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
msg_ok "Set up Node.js Repository"
msg_info "Installing Node.js"
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install -g pnpm
msg_ok "Installed Node.js"
msg_info "Setting up PostgreSQL"
DB_NAME="docmost_db"
DB_USER="docmost_user"
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 "Docmost-Credentials"
echo "Database Name: $DB_NAME"
echo "Database User: $DB_USER"
echo "Database Password: $DB_PASS"
} >> ~/docmost.creds
msg_ok "Set up PostgreSQL"
msg_info "Installing Docmost (Patience)"
temp_file=$(mktemp)
RELEASE=$(curl -s https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q "https://github.com/docmost/docmost/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
tar -xzf "$temp_file"
mv docmost-${RELEASE} /opt/docmost
cd /opt/docmost
mv .env.example .env
sed -i "s|APP_SECRET=.*|APP_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)|" /opt/docmost/.env
sed -i "s|DATABASE_URL=.*|DATABASE_URL=postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME|" /opt/docmost/.env
export NODE_OPTIONS="--max-old-space-size=2048"
$STD pnpm install
$STD pnpm build
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed Docmost"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/docmost.service
[Unit]
Description=Docmost Service
After=network.target postgresql.service
[Service]
WorkingDirectory=/opt/docmost
ExecStart=/usr/bin/pnpm start
Restart=always
EnvironmentFile=/opt/docmost/.env
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now docmost
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -0,0 +1,53 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Dolibarr/dolibarr/
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
curl \
sudo \
mc \
php-imap \
debconf-utils \
mariadb-server
msg_ok "Installed Dependencies"
msg_info "Setting up Database"
ROOT_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD sudo mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$ROOT_PASS'); flush privileges;"
{
echo "Dolibarr DB Credentials"
echo "MariaDB Root Password: $ROOT_PASS"
} >> ~/dolibarr.creds
msg_ok "Set up database"
msg_info "Setup Dolibarr"
BASE="https://sourceforge.net/projects/dolibarr/files/Dolibarr%20installer%20for%20Debian-Ubuntu%20(DoliDeb)/"
RELEASE=$(curl -s "$BASE" | grep -oP '(?<=/Dolibarr%20installer%20for%20Debian-Ubuntu%20%28DoliDeb%29/)[^/"]+' | head -n1)
FILE=$(curl -s "${BASE}${RELEASE}/" | grep -oP 'dolibarr_[^"]+_all.deb' | head -n1)
wget -q "https://netcologne.dl.sourceforge.net/project/dolibarr/Dolibarr%20installer%20for%20Debian-Ubuntu%20(DoliDeb)/${RELEASE}/${FILE}?viasf=1" -O "$FILE"
echo "dolibarr dolibarr/reconfigure-webserver multiselect apache2" | debconf-set-selections
$STD apt-get install ./$FILE -y
$STD apt install -f
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Setup Dolibarr"
motd_ssh
customize
msg_info "Cleaning up"
rm -rf ~/$FILE
$STD apt-get autoremove
$STD apt-get autoclean
msg_ok "Cleaned"

View File

@@ -50,6 +50,13 @@ chmod -R g+rX /opt/freshrss
chmod -R g+w /opt/freshrss/data/
msg_ok "Installed FreshRSS"
msg_info "Setting up cron job for feed refresh"
cat <<EOF >/etc/cron.d/freshrss-actualize
*/15 * * * * www-data /bin/php -f /opt/freshrss/app/actualize_script.php > /tmp/FreshRSS.log 2>&1
EOF
chmod 644 /etc/cron.d/freshrss-actualize
msg_ok "Set up Cron - if you need to modify the timing edit file /etc/cron.d/freshrss-actualize"
msg_info "Creating Service"
cat <<EOF >/etc/apache2/sites-available/freshrss.conf
<VirtualHost *:80>

View File

@@ -0,0 +1,61 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: miviro
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/heiher/hev-socks5-server
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
curl \
sudo \
mc
msg_ok "Installed Dependencies"
msg_info "Setup ${APPLICATION}"
RELEASE=$(curl -s https://api.github.com/repos/heiher/${APPLICATION}/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -L -o "${APPLICATION}" "https://github.com/heiher/${APPLICATION}/releases/download/${RELEASE}/hev-socks5-server-linux-x86_64"
mv ${APPLICATION} /opt/${APPLICATION}
chmod +x /opt/${APPLICATION}
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
curl -L -o "main.yml" "https://raw.githubusercontent.com/heiher/${APPLICATION}/refs/heads/master/conf/main.yml"
sed -i 's/^#auth:/auth:/; s/^# file: conf\/auth.txt/ file: \/root\/hev.creds/' main.yml
mkdir -p /etc/${APPLICATION}
USERNAME="admin"
PASSWORD=$(openssl rand -base64 16)
MARK="0"
echo "$USERNAME $PASSWORD $MARK" > /root/hev.creds
mv main.yml /etc/${APPLICATION}/main.yml
msg_ok "Setup ${APPLICATION}"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/${APPLICATION}.service
[Unit]
Description=${APPLICATION} Service
After=network.target
[Service]
ExecStart=/opt/${APPLICATION} /etc/${APPLICATION}/main.yml
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now ${APPLICATION}.service
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -3,7 +3,7 @@
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (Canbiz)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/ajnart/homarr
# Source: https://github.com/homarr-labs/homarr
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
@@ -20,10 +20,13 @@ $STD apt-get install -y \
curl \
redis-server \
ca-certificates \
gnupg \
gpg \
make \
g++ \
build-essential
build-essential \
nginx \
gettext \
openssl
msg_ok "Installed Dependencies"
msg_info "Setting up Node.js Repository"
@@ -46,27 +49,56 @@ unzip -q v${RELEASE}.zip
mv homarr-${RELEASE} /opt/homarr
mkdir -p /opt/homarr_db
touch /opt/homarr_db/db.sqlite
AUTH_SECRET="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
SECRET_ENCRYPTION_KEY="$(openssl rand -hex 32)"
cd /opt/homarr
cat <<EOF >/opt/homarr/.env
AUTH_SECRET='${AUTH_SECRET}'
DB_DRIVER='better-sqlite3'
DB_DIALECT='sqlite'
SECRET_ENCRYPTION_KEY='${SECRET_ENCRYPTION_KEY}'
DB_URL='/opt/homarr_db/db.sqlite'
TURBO_TELEMETRY_DISABLED=1
AUTH_PROVIDERS='credentials'
NODE_ENV='production'
EOF
cd /opt/homarr
$STD pnpm install
$STD pnpm run db:migration:sqlite:run
$STD pnpm build
mkdir build
cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed Homarr"
msg_info "Creating Service"
msg_info "Copying build and config files"
cp /opt/homarr/apps/nextjs/next.config.ts .
cp /opt/homarr/apps/nextjs/package.json .
cp -r /opt/homarr/packages/db/migrations /opt/homarr_db/migrations
cp -r /opt/homarr/apps/nextjs/.next/standalone/* /opt/homarr
mkdir -p /appdata/redis
cp /opt/homarr/packages/redis/redis.conf /opt/homarr/redis.conf
mkdir -p /etc/nginx/templates
rm /etc/nginx/nginx.conf
cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf
mkdir -p /opt/homarr/apps/cli
cp /opt/homarr/packages/cli/cli.cjs /opt/homarr/apps/cli/cli.cjs
echo $'#!/bin/bash\ncd /opt/homarr/apps/cli && node ./cli.cjs "$@"' > /usr/bin/homarr
chmod +x /usr/bin/homarr
mkdir /opt/homarr/build
cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Finished copying"
msg_info "Creating Services"
cat <<'EOF' >/opt/run_homarr.sh
#!/bin/bash
export DB_DIALECT='sqlite'
export AUTH_SECRET=$(openssl rand -base64 32)
node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT
export HOSTNAME=$(ip route get 1.1.1.1 | grep -oP 'src \K[^ ]+')
envsubst '${HOSTNAME}' < /etc/nginx/templates/nginx.conf > /etc/nginx/nginx.conf
nginx -g 'daemon off;' &
redis-server /opt/homarr/packages/redis/redis.conf &
node apps/tasks/tasks.cjs &
node apps/websocket/wssServer.cjs &
node apps/nextjs/server.js & PID=$!
wait $PID
EOF
chmod +x /opt/run_homarr.sh
cat <<EOF >/etc/systemd/system/homarr.service
[Unit]
Description=Homarr Service
@@ -76,7 +108,7 @@ After=network.target
Type=exec
WorkingDirectory=/opt/homarr
EnvironmentFile=-/opt/homarr/.env
ExecStart=/usr/bin/pnpm start
ExecStart=/opt/run_homarr.sh
[Install]
WantedBy=multi-user.target

View File

@@ -1,9 +1,10 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster)
# Author: tteck (tteckster) | Co-Author Slaviša Arežina (tremor021)
# License: MIT
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://magicmirror.builders/
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
@@ -14,12 +15,11 @@ network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y curl
$STD apt-get install -y sudo
$STD apt-get install -y mc
$STD apt-get install -y git
$STD apt-get install -y ca-certificates
$STD apt-get install -y gnupg
$STD apt-get install -y \
curl \
sudo \
mc \
gnupg
msg_ok "Installed Dependencies"
msg_info "Setting up Node.js Repository"
@@ -33,14 +33,14 @@ $STD apt-get update
$STD apt-get install -y nodejs
msg_ok "Installed Node.js"
msg_info "Setting up MagicMirror Repository"
$STD git clone https://github.com/MichMich/MagicMirror /opt/magicmirror
msg_ok "Set up MagicMirror Repository"
msg_info "Installing MagicMirror"
msg_info "Setup MagicMirror"
temp_file=$(mktemp)
RELEASE=$(curl -s https://api.github.com/repos/MagicMirrorOrg/MagicMirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q "https://github.com/MagicMirrorOrg/MagicMirror/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
tar -xzf "$temp_file"
mv MagicMirror-${RELEASE} /opt/magicmirror
cd /opt/magicmirror
$STD npm install --only=prod --omit=dev
$STD npm run install-mm
cat <<EOF >/opt/magicmirror/config/config.js
let config = {
address: "0.0.0.0",
@@ -130,11 +130,12 @@ let config = {
/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {module.exports = config;}
EOF
msg_ok "Installed MagicMirror"
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Setup MagicMirror"
msg_info "Creating Service"
service_path="/etc/systemd/system/magicmirror.service"
echo "[Unit]
cat <<EOF >/etc/systemd/system/magicmirror.service
[Unit]
Description=Magic Mirror
After=network.target
StartLimitIntervalSec=0
@@ -145,17 +146,19 @@ Restart=always
RestartSec=1
User=root
WorkingDirectory=/opt/magicmirror/
ExecStart=/usr/bin/node serveronly
ExecStart=/usr/bin/npm run server
[Install]
WantedBy=multi-user.target" >$service_path
$STD systemctl enable --now magicmirror
WantedBy=multi-user.target
EOF
systemctl enable --now magicmirror
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -rf $temp_file
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -14,32 +14,48 @@ network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y curl
$STD apt-get install -y sudo
$STD apt-get install -y mc
$STD apt-get install -y ufw
$STD apt-get install -y ntp
$STD apt-get install -y \
curl \
sudo \
mc \
ufw
msg_ok "Installed Dependencies"
msg_info "Installing Pi-hole"
mkdir -p /etc/pihole/
cat <<EOF >/etc/pihole/setupVars.conf
PIHOLE_INTERFACE=eth0
PIHOLE_DNS_1=8.8.8.8
PIHOLE_DNS_2=8.8.4.4
QUERY_LOGGING=true
INSTALL_WEB_SERVER=true
INSTALL_WEB_INTERFACE=true
LIGHTTPD_ENABLED=true
CACHE_SIZE=10000
DNS_FQDN_REQUIRED=true
DNS_BOGUS_PRIV=true
DNSMASQ_LISTENING=local
WEBPASSWORD=$(openssl rand -base64 48)
BLOCKING_ENABLED=true
EOF
# View script https://install.pi-hole.net
mkdir -p /etc/pihole
touch /etc/pihole/pihole.toml
$STD bash <(curl -fsSL https://install.pi-hole.net) --unattended
sed -i -E '
/^\s*upstreams =/ s|=.*|= ["8.8.8.8", "8.8.4.4"]|
/^\s*interface =/ s|=.*|= "eth0"|
/^\s*queryLogging =/ s|=.*|= true|
/^\s*size =/ s|=.*|= 10000|
/^\s*active =/ s|=.*|= true|
/^\s*listeningMode =/ s|=.*|= "LOCAL"|
/^\s*port =/ s|=.*|= "80o,443os,[::]:80o,[::]:443os"|
/^\s*pwhash =/ s|=.*|= ""|
# DHCP Disable
/^\s*\[dhcp\]/,/^\s*\[/{s/^\s*active = true/ active = false/}
# NTP Disable
/^\s*\[ntp.ipv4\]/,/^\s*\[/{s/^\s*active = true/ active = false/}
/^\s*\[ntp.ipv6\]/,/^\s*\[/{s/^\s*active = true/ active = false/}
/^\s*\[ntp.sync\]/,/^\s*\[/{s/^\s*active = true/ active = false/}
/^\s*\[ntp.sync\]/,/^\s*\[/{s/^\s*interval = [0-9]+/ interval = 0/}
/^\s*\[ntp.sync.rtc\]/,/^\s*\[/{s/^\s*set = true/ set = false/}
# set domainNeeded und expandHosts
/^\s*domainNeeded =/ s|=.*|= true|
/^\s*expandHosts =/ s|=.*|= true|
' /etc/pihole/pihole.toml
cat <<EOF > /etc/dnsmasq.d/01-pihole.conf
server=8.8.8.8
server=8.8.4.4
EOF
$STD pihole-FTL --config ntp.sync.interval 0
systemctl restart pihole-FTL.service
msg_ok "Installed Pi-hole"
read -r -p "Would you like to add Unbound? <y/N> " prompt
@@ -119,9 +135,13 @@ forward-zone:
#forward-addr: 2620:fe::9@853#dns.quad9.net
EOF
fi
cat <<EOF > /etc/dnsmasq.d/01-pihole.conf
server=127.0.0.1#5335
server=8.8.8.8
server=8.8.4.4
EOF
sed -i -e 's/PIHOLE_DNS_1=8.8.8.8/PIHOLE_DNS_1=127.0.0.1#5335/' -e '/PIHOLE_DNS_2=8.8.4.4/d' /etc/pihole/setupVars.conf
sed -i -e 's/server=8.8.8.8/server=127.0.0.1#5335/' -e '/server=8.8.4.4/d' /etc/dnsmasq.d/01-pihole.conf
sed -i -E "s|^(upstreams =).*|\1 [\"127.0.0.1#5335\", \"8.8.4.4\"]|" /etc/pihole/pihole.toml
systemctl enable -q --now unbound
systemctl restart pihole-FTL.service
msg_ok "Installed Unbound"

View File

@@ -19,11 +19,72 @@ $STD apt-get install -y sudo
$STD apt-get install -y mc
msg_ok "Installed Dependencies"
get_latest_release() {
curl -sL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
}
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
if $STD mount | grep 'on / type zfs' > null && echo "ZFS"; then
msg_info "Enabling ZFS support."
mkdir -p /etc/containers
cat <<'EOF' >/usr/local/bin/overlayzfsmount
#!/bin/sh
exec /bin/mount -t overlay overlay "$@"
EOF
chmod +x /usr/local/bin/overlayzfsmount
cat <<'EOF' >/etc/containers/storage.conf
[storage]
driver = "overlay"
runroot = "/run/containers/storage"
graphroot = "/var/lib/containers/storage"
[storage.options]
pull_options = {enable_partial_images = "false", use_hard_links = "false", ostree_repos=""}
mount_program = "/usr/local/bin/overlayzfsmount"
[storage.options.overlay]
mountopt = "nodev"
EOF
fi
msg_info "Installing Podman"
$STD apt-get -y install podman
$STD systemctl enable --now podman.socket
echo -e 'unqualified-search-registries=["docker.io"]' >> /etc/containers/registries.conf
msg_ok "Installed Podman"
read -r -p "Would you like to add Portainer? <y/N> " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
podman volume create portainer_data >/dev/null
$STD podman run -d \
-p 8000:8000 \
-p 9443:9443 \
--name=portainer \
--restart=always \
-v /run/podman/podman.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
else
read -r -p "Would you like to add the Portainer Agent? <y/N> " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
podman volume create temp >/dev/null
podman volume remove temp >/dev/null
$STD podman run -d \
-p 9001:9001 \
--name portainer_agent \
--restart=always \
-v /run/podman/podman.sock:/var/run/docker.sock \
-v /var/lib/containers/storage/volumes:/var/lib/docker/volumes \
portainer/agent
msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
fi
fi
msg_info "Pulling Home Assistant Image"
$STD podman pull docker.io/homeassistant/home-assistant:stable
msg_ok "Pulled Home Assistant Image"

View File

@@ -19,12 +19,73 @@ $STD apt-get install -y sudo
$STD apt-get install -y mc
msg_ok "Installed Dependencies"
get_latest_release() {
curl -sL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
}
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
if $STD mount | grep 'on / type zfs' > null && echo "ZFS"; then
msg_info "Enabling ZFS support."
mkdir -p /etc/containers
cat <<'EOF' >/usr/local/bin/overlayzfsmount
#!/bin/sh
exec /bin/mount -t overlay overlay "$@"
EOF
chmod +x /usr/local/bin/overlayzfsmount
cat <<'EOF' >/etc/containers/storage.conf
[storage]
driver = "overlay"
runroot = "/run/containers/storage"
graphroot = "/var/lib/containers/storage"
[storage.options]
pull_options = {enable_partial_images = "false", use_hard_links = "false", ostree_repos=""}
mount_program = "/usr/local/bin/overlayzfsmount"
[storage.options.overlay]
mountopt = "nodev"
EOF
fi
msg_info "Installing Podman"
$STD apt-get -y install podman
$STD systemctl enable --now podman.socket
echo -e 'unqualified-search-registries=["docker.io"]' >> /etc/containers/registries.conf
msg_ok "Installed Podman"
read -r -p "Would you like to add Portainer? <y/N> " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
podman volume create portainer_data >/dev/null
$STD podman run -d \
-p 8000:8000 \
-p 9443:9443 \
--name=portainer \
--restart=always \
-v /run/podman/podman.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
else
read -r -p "Would you like to add the Portainer Agent? <y/N> " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
podman volume create temp >/dev/null
podman volume remove temp >/dev/null
$STD podman run -d \
-p 9001:9001 \
--name portainer_agent \
--restart=always \
-v /run/podman/podman.sock:/var/run/docker.sock \
-v /var/lib/containers/storage/volumes:/var/lib/docker/volumes \
portainer/agent
msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
fi
fi
motd_ssh
customize

View File

@@ -2,10 +2,9 @@
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Kristian Skov
# License: MIT
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
@@ -15,33 +14,30 @@ update_os
msg_info "Installing Dependencies"
$STD apt install -y \
curl \
curl \
mc \
sudo \
gpg \
coreutils
gpg \
coreutils
msg_ok "Installed Dependencies"
msg_info "Setup SQL Server 2022"
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list
#$STD curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc
#$STD curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | tee /etc/apt/sources.list.d/mssql-server-2022.list
$STD apt-get clean *
curl -s https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc > /dev/null
curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | tee /etc/apt/sources.list.d/mssql-server-2022.list > /dev/null
$STD apt-get update -y
apt-get install -y mssql-server
$STD apt-get install -y mssql-server
msg_ok "Setup Server 2022"
msg_info "Installing SQL Server Tools"
export DEBIAN_FRONTEND=noninteractive
export ACCEPT_EULA=Y
curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc
curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | tee /etc/apt/sources.list.d/mssql-release.list
curl -s https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc > /dev/null
curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/prod.list | tee /etc/apt/sources.list.d/mssql-release.list > /dev/null
$STD apt-get update
$STD apt-get install -y -qq \
mssql-tools18 \
unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >>~/.bash_profile
source ~/.bash_profile
msg_ok "Installed SQL Server Tools"

View File

@@ -34,7 +34,7 @@ msg_ok "Installed Dependencies"
msg_info "Installing Node.js"
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install -g pnpm@9.7.1

View File

@@ -5,7 +5,7 @@
# License: MIT
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
@@ -14,70 +14,97 @@ network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y curl
$STD apt-get install -y sudo
$STD apt-get install -y mc
$STD apt-get install -y git
$STD apt-get install -y ca-certificates
$STD apt-get install -y gnupg
$STD apt-get install -y \
curl \
sudo \
mc \
git \
ca-certificates \
gnupg \
build-essential \
python3 \
g++ \
make
msg_ok "Installed Dependencies"
msg_info "Setting up Node.js Repository"
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
msg_ok "Set up Node.js Repository"
msg_info "Setting up PostgreSQL Repository"
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
echo "deb https://apt.postgresql.org/pub/repos/apt bookworm-pgdg main" >/etc/apt/sources.list.d/pgdg.list
msg_ok "Set up PostgreSQL Repository"
msg_info "Installing Node.js"
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install --global yarn
$STD npm install -g node-gyp
msg_ok "Installed Node.js"
msg_info "Installing Wiki.js"
mkdir -p /opt/wikijs
cd /opt/wikijs
$STD wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
tar xzf wiki-js.tar.gz
rm wiki-js.tar.gz
msg_info "Set up PostgreSQL"
$STD apt-get install -y postgresql-17
DB_NAME="wiki"
DB_USER="wikijs_user"
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 "CREATE EXTENSION IF NOT EXISTS pg_trgm;" $DB_NAME
$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 "WikiJS-Credentials"
echo "WikiJS Database User: $DB_USER"
echo "WikiJS Database Password: $DB_PASS"
echo "WikiJS Database Name: $DB_NAME"
} >> ~/wikijs.creds
msg_ok "Set up PostgreSQL"
cat <<EOF >/opt/wikijs/config.yml
bindIP: 0.0.0.0
port: 3000
db:
type: sqlite
storage: /opt/wikijs/db.sqlite
logLevel: info
logFormat: default
dataPath: /opt/wikijs/data
bodyParserLimit: 5mb
EOF
$STD npm rebuild sqlite3
msg_info "Setup Wiki.js"
temp_file=$(mktemp)
RELEASE=$(curl -s https://api.github.com/repos/Requarks/wiki/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q "https://github.com/Requarks/wiki/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
tar -xzf "$temp_file"
mv wiki-${RELEASE} /opt/wikijs
mv /opt/wikijs/config.sample.yml /opt/wikijs/config.yml
sed -i -E 's|^( *user: ).*|\1'"$DB_USER"'|' /opt/wikijs/config.yml
sed -i -E 's|^( *pass: ).*|\1'"$DB_PASS"'|' /opt/wikijs/config.yml
cd /opt/wikijs
export NODE_OPTIONS="--max-old-space-size=2048"
$STD yarn install --ignore-engines
$STD yarn build
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed Wiki.js"
msg_info "Creating Service"
service_path="/etc/systemd/system/wikijs.service"
echo "[Unit]
cat <<EOF >/etc/systemd/system/wikijs.service
[Unit]
Description=Wiki.js
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node server
ExecStart=/usr/bin/yarn start
Restart=always
User=root
Environment=NODE_ENV=production
WorkingDirectory=/opt/wikijs
[Install]
WantedBy=multi-user.target" >$service_path
$STD systemctl enable --now wikijs
WantedBy=multi-user.target
EOF
systemctl enable -q --now wikijs
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -22,7 +22,6 @@ msg_ok "Installed Dependencies"
msg_info "Installing WireGuard"
$STD apt-get install -y wireguard wireguard-tools net-tools iptables
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confnew" install -y iptables-persistent &>/dev/null
$STD netfilter-persistent reload
msg_ok "Installed WireGuard"

View File

@@ -33,14 +33,14 @@ msg_ok "Set up Node.js Repository"
msg_info "Installing Node.js"
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install -g yarn
$STD npm install -g pnpm
msg_ok "Installed Node.js"
msg_info "Setting up PostgreSQL"
DB_NAME=ziplinedb
DB_USER=zipline
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
SECRET_KEY="$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
SECRET_KEY="$(openssl rand -base64 42 | tr -dc 'a-zA-Z0-9')"
$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';"
@@ -60,13 +60,15 @@ wget -q "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip"
unzip -q v${RELEASE}.zip
mv zipline-${RELEASE} /opt/zipline
cd /opt/zipline
mv .env.local.example .env
sudo sed -i "s|CORE_SECRET=.*|CORE_SECRET=\"$SECRET_KEY\"|" /opt/zipline/.env
sudo sed -i "s|CORE_RETURN_HTTPS=.*|CORE_RETURN_HTTPS=false|" /opt/zipline/.env
sudo sed -i "s|CORE_DATABASE_URL=.*|CORE_DATABASE_URL=\"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME\"|" /opt/zipline/.env
cat <<EOF >/opt/zipline/.env
DATABASE_URL=postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME
CORE_SECRET=$SECRET_KEY
CORE_HOSTNAME=0.0.0.0
CORE_PORT=3000
CORE_RETURN_HTTPS=false
$STD yarn install
$STD yarn build
EOF
$STD pnpm install
$STD pnpm build
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed Zipline"
@@ -78,18 +80,17 @@ After=network.target
[Service]
WorkingDirectory=/opt/zipline
ExecStart=/usr/bin/yarn start
ExecStart=/usr/bin/pnpm start
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now zipline.service
systemctl enable -q --now zipline
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean

34
json/boltdiy.json Normal file
View File

@@ -0,0 +1,34 @@
{
"name": "bolt.diy",
"slug": "boltdiy",
"categories": [
20
],
"date_created": "2025-02-23",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 5173,
"documentation": "https://stackblitz-labs.github.io/bolt.diy/",
"website": "https://github.com/stackblitz-labs/bolt.diy",
"logo": "https://github.com/stackblitz-labs/bolt.diy/raw/refs/heads/main/icons/logo-text.svg",
"description": "The official open source version of Bolt.new (previously known as oTToDev and bolt.new ANY LLM), which allows you to choose the LLM that you use for each prompt! Currently, you can use OpenAI, Anthropic, Ollama, OpenRouter, Gemini, LMStudio, Mistral, xAI, HuggingFace, DeepSeek, or Groq models - and it is easily extended to use any other model supported by the Vercel AI SDK!",
"install_methods": [
{
"type": "default",
"script": "ct/boltdiy.sh",
"resources": {
"cpu": 2,
"ram": 3072,
"hdd": 6,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -11,7 +11,7 @@
"interface_port": null,
"documentation": null,
"website": "https://www.bunkerweb.io/",
"logo": "https://raw.githubusercontent.com/bunkerity/bunkerweb/v1.5.7/misc/logo.png",
"logo": "https://raw.githubusercontent.com/bunkerity/bunkerweb/master/misc/logo.png",
"description": "BunkerWeb is a security-focused web server that enhances web application protection. It guards against common web vulnerabilities like SQL injection, XSS, and CSRF. It features simple setup and configuration using a YAML file, customizable security rules, and provides detailed logs for traffic monitoring and threat detection.",
"install_methods": [
{
@@ -19,7 +19,7 @@
"script": "ct/bunkerweb.sh",
"resources": {
"cpu": 2,
"ram": 1024,
"ram": 4096,
"hdd": 4,
"os": "debian",
"version": "12"

View File

@@ -11,7 +11,7 @@
"interface_port": null,
"documentation": null,
"website": "https://www.debian.org/",
"logo": "https://seeklogo.com/images/D/debian-logo-C136FDAF9E-seeklogo.com.png",
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/debian.svg",
"description": "Debian Linux is a distribution that emphasizes free software. It supports many hardware platforms",
"install_methods": [
{

View File

@@ -11,7 +11,7 @@
"interface_port": null,
"documentation": null,
"website": "https://www.debian.org/",
"logo": "https://seeklogo.com/images/D/debian-logo-C136FDAF9E-seeklogo.com.png",
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/debian.svg",
"description": "Debian Linux is a distribution that emphasizes free software. It supports many hardware platforms.",
"install_methods": [
{

34
json/docmost.json Normal file
View File

@@ -0,0 +1,34 @@
{
"name": "Docmost",
"slug": "docmost",
"categories": [
12
],
"date_created": "2025-02-18",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3000,
"documentation": "https://docmost.com/docs/installation",
"website": "https://docmost.com/",
"logo": "https://raw.githubusercontent.com/docmost/docmost/refs/heads/main/apps/client/public/favicon-32x32.png",
"description": "Open-source collaborative wiki and documentation software Create, collaborate, and share knowledge seamlessly with Docmost. Ideal for managing your wiki, knowledge-base, documentation and a lot more.",
"install_methods": [
{
"type": "default",
"script": "ct/docmost.sh",
"resources": {
"cpu": 3,
"ram": 3072,
"hdd": 7,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

39
json/dolibarr.json Normal file
View File

@@ -0,0 +1,39 @@
{
"name": "Dolibarr",
"slug": "dolibarr",
"categories": [
25
],
"date_created": "2025-02-20",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://wiki.dolibarr.org/index.php?title=Home",
"website": "https://www.dolibarr.org/",
"logo": "https://wiki.dolibarr.org/images/5/51/Dolibarr_124x124_white.svg",
"description": "Dolibarr ERP CRM is a modern software package to manage your company or foundation's activity (contacts, suppliers, invoices, orders, stocks, agenda, accounting, ...). it's an open source Web application (written in PHP) designed for businesses of any sizes, foundations and freelancers.",
"install_methods": [
{
"type": "default",
"script": "ct/dolibarr.sh",
"resources": {
"cpu": 1,
"ram": 2048,
"hdd": 6,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Database credentials: `cat ~/dolibarr.creds`",
"type": "info"
}
]
}

View File

@@ -34,6 +34,10 @@
{
"text": "Database credentials: `cat ~/freshrss.creds`",
"type": "info"
},
{
"text": "Per FreshRSS documentation, a cron job to actualize FreshRSS will be setup at `/etc/cron.d/freshrss-actualize`. This can be adjusted as needed",
"type": "info"
}
]
}

View File

@@ -11,7 +11,7 @@
"interface_port": 8080,
"documentation": "https://github.com/glanceapp/glance/blob/main/docs/configuration.md",
"website": "https://github.com/glanceapp/glance",
"logo": "https://github.com/glanceapp/glance/blob/main/internal/assets/static/app-icon.png?raw=true",
"logo": "https://raw.githubusercontent.com/glanceapp/glance/refs/heads/main/internal/glance/static/app-icon.png",
"description": "A self-hosted dashboard that puts all your feeds in one place",
"install_methods": [
{

View File

@@ -11,7 +11,7 @@
"interface_port": 9000,
"documentation": "https://go2docs.graylog.org/current/home.htm",
"website": "https://graylog.org/",
"logo": "https://graylog.org/wp-content/uploads/2023/11/gl-logo-horiz-all-white-1200w-300x96.png.webp",
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/graylog.svg",
"description": "Graylog is a free and open log management platform.",
"install_methods": [
{

View File

@@ -0,0 +1,43 @@
{
"name": "hev-socks5-server",
"slug": "hev-socks5-server",
"categories": [
4
],
"date_created": "2025-02-23",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 1080,
"documentation": null,
"website": "https://github.com/heiher/hev-socks5-server",
"logo": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Tux.svg/405px-Tux.svg.png",
"description": "HevSocks5Server is a simple, lightweight socks5 server.",
"install_methods": [
{
"type": "default",
"script": "ct/hev-socks5-server.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 2,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Default credentials: `cat /root/hev.creds`",
"type": "info"
},
{
"text": "Config stored at `/etc/hev-socks5-server/main.yml`",
"type": "info"
}
]
}

View File

@@ -8,7 +8,7 @@
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3000,
"interface_port": 7575,
"documentation": null,
"website": "https://homarr.dev/",
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/homarr.svg",

View File

@@ -12,7 +12,7 @@
"documentation": "https://www.home-assistant.io/docs/",
"website": "https://www.home-assistant.io/",
"logo": "https://avatars.githubusercontent.com/u/13844975?s=200&v=4",
"description": "A standalone installation of Home Assistant Core refers to a setup where the Home Assistant Core software is installed directly on a device or operating system, without the use of Docker containers. This provides a simpler, but less flexible and scalable solution, as the software is tightly coupled with the underlying system.\r\n\r\n\ud83d\udec8 If the LXC is created Privileged, the script will automatically set up USB passthrough.",
"description": "A standalone installation of Home Assistant Core refers to a setup where the Home Assistant Core software is installed directly on a device or operating system, without the use of Docker containers. This provides a simpler, but less flexible and scalable solution, as the software is tightly coupled with the underlying system.",
"install_methods": [
{
"type": "default",

View File

@@ -34,6 +34,10 @@
{
"text": "During installation you will be prompted to input your TMDb key, Plex URL and Plex token. Make sure you have them ready.",
"type": "info"
},
{
"text": "Configuration file is at `/opt/kometa/config/config.yml`",
"type": "info"
}
]
}

View File

@@ -11,7 +11,7 @@
"interface_port": 80,
"documentation": "https://stonith404.github.io/pocket-id/introduction",
"website": "https://github.com/stonith404/pocket-id",
"logo": "https://raw.githubusercontent.com/stonith404/pocket-id/refs/heads/main/docs/static/img/pocket-id.png",
"logo": "https://raw.githubusercontent.com/pocket-id/pocket-id/refs/heads/main/backend/resources/images/logoDark.svg",
"description": "Pocket ID is a simple OIDC provider that allows users to authenticate with their passkeys to your services.",
"install_methods": [
{

View File

@@ -31,10 +31,6 @@
"password": null
},
"notes": [
{
"text": "Doesn't work with ZFS",
"type": "warning"
},
{
"text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
"type": "warning"
@@ -42,6 +38,10 @@
{
"text": "config path: `/var/lib/containers/storage/volumes/hass_config/_data`",
"type": "info"
},
{
"text": "Options to Install Portainer or Portainer Agent",
"type": "warning"
}
]
}

View File

@@ -32,7 +32,7 @@
},
"notes": [
{
"text": "Doesn't work with ZFS",
"text": "Options to Install Portainer or Portainer Agent",
"type": "warning"
}
]

View File

@@ -1,6 +1,6 @@
{
"name": "RustDesk Server",
"slug": "rustdesk-server",
"slug": "rustdeskserver",
"categories": [
21
],
@@ -32,7 +32,7 @@
},
"notes": [
{
"text": "Check documentation on how to configure RustDesk Server. `https://rustdesk.com/docs/en/`",
"text": "Check our configuration guide for help: `https://github.com/community-scripts/ProxmoxVE/discussions/2388`",
"type": "info"
}
]

View File

@@ -11,7 +11,7 @@
"interface_port": 8080,
"documentation": null,
"website": "https://github.com/Stirling-Tools/Stirling-PDF",
"logo": "https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/main/docs/stirling-pdf.png",
"logo": "https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/refs/heads/main/docs/stirling.svg",
"description": "Stirling-PDF is a powerful locally hosted web based PDF manipulation tool that allows you to perform various operations on PDF files, such as splitting merging, converting, reorganizing, adding images, rotating, compressing, and more.",
"install_methods": [
{

View File

@@ -18,9 +18,9 @@
"type": "default",
"script": "ct/wikijs.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 3,
"cpu": 2,
"ram": 2048,
"hdd": 7,
"os": "debian",
"version": "12"
}

View File

@@ -39,7 +39,7 @@ post_to_api() {
EOF
)
RESPONSE=$(curl -s -o response.txt -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \
RESPONSE=$(curl -s -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \
-H "Content-Type: application/json" \
-d "$JSON_PAYLOAD") || true
}
@@ -87,7 +87,7 @@ post_to_api_vm() {
EOF
)
RESPONSE=$(curl -s -o response.txt -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \
RESPONSE=$(curl -s -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \
-H "Content-Type: application/json" \
-d "$JSON_PAYLOAD") || true
}
@@ -115,7 +115,7 @@ post_update_to_api() {
EOF
)
RESPONSE=$(curl -s -o response.txt -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \
RESPONSE=$(curl -s -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \
-H "Content-Type: application/json" \
-d "$JSON_PAYLOAD") || true

View File

@@ -150,7 +150,7 @@ amd() {
}
# Check if this is a Proxmox Backup Server by verifying the presence of the datastore config.
if [ ! -f /etc/proxmox-backup/datastore.cfg ]; then
if [ ! -f /etc/proxmox-backup/user.cfg ]; then
header_info
msg_error "Proxmox Backup Server not detected!"
exit

View File

@@ -419,7 +419,7 @@ else
fi
msg_ok "Using ${CL}${BL}$STORAGE${CL} ${GN}for Storage Location."
msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}."
msg_info "Retrieving the URL for the Ubuntu 24.0 Disk Image"
msg_info "Retrieving the URL for the Ubuntu 24.10 Disk Image"
URL=https://cloud-images.ubuntu.com/oracular/current/oracular-server-cloudimg-amd64.img
sleep 2
msg_ok "${CL}${BL}${URL}${CL}"