Compare commits

..

56 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
7289c68399 Update CHANGELOG.md (#5478)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-26 01:16:06 +01:00
community-scripts-pr-app[bot]
4a5ddc8410 Update versions.json (#5477)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-26 02:15:17 +02:00
community-scripts-pr-app[bot]
93808fbd75 Update CHANGELOG.md (#5471)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-25 19:42:32 +01:00
community-scripts-pr-app[bot]
24394a0947 Update CHANGELOG.md (#5470)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-25 19:40:52 +01:00
CanbiZ
4676eb616c Website: mark VM's and "OS"-LXC's as updatable (#5453) 2025-06-25 20:40:33 +02:00
community-scripts-pr-app[bot]
e9ae558c25 Update CHANGELOG.md (#5469)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-25 19:39:54 +01:00
community-scripts-pr-app[bot]
afee37794b Update CHANGELOG.md (#5468)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-25 19:39:39 +01:00
Bram Suurd
72e7bda418 Enhance InstallCommand component to support Gitea as an alternative source for installation scripts. Added informational alert for Gitea usage and refactored command generation logic to accommodate the new option. (#5464) 2025-06-25 20:39:26 +02:00
Bram Suurd
69e14c8fca Update Tooltips component to conditionally display updateable status based on item type (#5461) 2025-06-25 20:39:02 +02:00
community-scripts-pr-app[bot]
6394c0cf17 Update CHANGELOG.md (#5467)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-25 19:35:45 +01:00
Bram Suurd
d1deffb235 Refactor CommandMenu to prevent duplicate scripts across categories (#5463) 2025-06-25 20:35:17 +02:00
community-scripts-pr-app[bot]
ac885f8adb Update CHANGELOG.md (#5466)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-25 17:04:25 +01:00
CanbiZ
8d91a5df5f Fix Apt-Cacher Issue with CAT 2025-06-25 18:03:54 +02:00
Slaviša Arežina
5ad9323944 Docmost: Increase resources (#5458)
* Update docmost.sh

* Update docmost.json
2025-06-25 14:25:17 +02:00
community-scripts-pr-app[bot]
559bf61c31 Update versions.json (#5459)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-25 14:07:52 +02:00
community-scripts-pr-app[bot]
3a391c34fc Update CHANGELOG.md (#5457)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-25 11:39:00 +01:00
community-scripts-pr-app[bot]
332a96ea03 Update CHANGELOG.md (#5456)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-25 11:38:10 +01:00
CanbiZ
454c574d38 tools.func: new helper for imagemagick (#5452) 2025-06-25 12:37:15 +02:00
community-scripts-pr-app[bot]
2512c828e7 Update CHANGELOG.md (#5455)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-25 11:37:04 +01:00
CanbiZ
a99ecb60ef refactor tailscale script & remove debian 12 note (#5454) 2025-06-25 12:36:15 +02:00
community-scripts-pr-app[bot]
24f22dfecc Update CHANGELOG.md (#5451)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-25 10:01:49 +01:00
CanbiZ
8521e2389b YunoHost: add Update-Funtion (#5450) 2025-06-25 11:01:11 +02:00
community-scripts-pr-app[bot]
ea60b9b5e4 Update CHANGELOG.md (#5449)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-25 01:15:50 +01:00
community-scripts-pr-app[bot]
c5cb6b2ade Update versions.json (#5448)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-25 02:15:19 +02:00
community-scripts-pr-app[bot]
81eb020430 Update .app files (#5442)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-06-24 22:02:16 +02:00
CanbiZ
73f1816e49 fix App name 2025-06-24 21:55:46 +02:00
community-scripts-pr-app[bot]
d0f0efca37 Update CHANGELOG.md (#5440)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-24 17:36:44 +01:00
community-scripts-pr-app[bot]
1697ffa752 Update CHANGELOG.md (#5439)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-24 17:35:53 +01:00
CanbiZ
8130b83328 GoMFT: tmpl bugfix to work with current version until a new release pushed (#5435) 2025-06-24 18:35:13 +02:00
community-scripts-pr-app[bot]
b384a387c3 Update CHANGELOG.md (#5438)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-24 17:35:02 +01:00
CanbiZ
8fd491460a bump scripts (Installer) from Ubuntu 22.04 to Ubuntu 24.04 (agentdvr, emby, jellyfin, plex, shinobi) (#5434) 2025-06-24 18:34:20 +02:00
CanbiZ
f86f90b2e0 Update gomft-install.sh 2025-06-24 15:49:54 +02:00
CanbiZ
00575130f5 Merge branch 'main' of https://github.com/community-scripts/ProxmoxVE 2025-06-24 15:42:13 +02:00
CanbiZ
2a873d974c add git 2025-06-24 15:42:00 +02:00
community-scripts-pr-app[bot]
439fdbf071 Update .app files (#5432)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-06-24 15:37:51 +02:00
community-scripts-pr-app[bot]
8ccf3de8f7 Update CHANGELOG.md (#5431)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-24 14:37:06 +01:00
community-scripts-pr-app[bot]
5fc126b61c Update date in json (#5430)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-06-24 14:35:59 +01:00
push-app-to-main[bot]
c75af3a750 ONLYOFFICE Docs (#5420)
* 'Add new script'

* Update install/onlyoffice-install.sh

* Update onlyoffice-install.sh

* add info for credentials

* Update onlyoffice.sh

* curl

* naming

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-06-24 15:35:24 +02:00
CanbiZ
5c768b54c0 Merge branch 'main' of https://github.com/community-scripts/ProxmoxVE 2025-06-24 15:34:59 +02:00
CanbiZ
e8848c1641 templ fix - gomft 2025-06-24 15:34:53 +02:00
community-scripts-pr-app[bot]
24c90699e6 Update CHANGELOG.md (#5429)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-24 14:29:20 +01:00
CanbiZ
e6ab47f341 general: update all alpine scripts to 3.22 (#5428) 2025-06-24 15:28:35 +02:00
community-scripts-pr-app[bot]
f63a1d89a3 Update versions.json (#5427)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-24 14:07:55 +02:00
community-scripts-pr-app[bot]
0c1aaedf6b Update CHANGELOG.md (#5426)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-24 12:26:01 +01:00
community-scripts-pr-app[bot]
5b35d537a8 Update CHANGELOG.md (#5425)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-24 12:25:34 +01:00
CanbiZ
1d06016ae1 Update tools.func (#5422) 2025-06-24 13:25:26 +02:00
CanbiZ
15b36b4d16 Minio: use latest version or latest feature rich version (#5423)
* minio ref

* Improvements

* Update minio-install.sh
2025-06-24 13:24:55 +02:00
community-scripts-pr-app[bot]
6a285e1e19 Update CHANGELOG.md (#5419)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-24 10:59:54 +01:00
Michel Roegl-Brunner
f60d132b20 Update all Alpine Scripts to atleast 1GB HDD (#5418)
* Update alpine-it-tools.sh

* Update alpine-zigbee2mqtt.sh

* Update jsons

---------

Co-authored-by: tremor021 <arezina.slavisa@gmail.com>
2025-06-24 11:58:42 +02:00
community-scripts-pr-app[bot]
d73bc95d4a Update CHANGELOG.md (#5417)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-24 10:35:12 +01:00
community-scripts-pr-app[bot]
2faeb5255c Update date in json (#5416)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-06-24 10:35:05 +01:00
community-scripts-pr-app[bot]
b4c6f28e4e Update CHANGELOG.md (#5415)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-24 10:34:52 +01:00
CanbiZ
d95bfdb7dc Refactor: MeTube to uv based install (#5411)
* Refactor: MeTube (uv migrated)

* Setup_nodejs
2025-06-24 11:34:07 +02:00
community-scripts-pr-app[bot]
99a0fb727b Update CHANGELOG.md (#5414)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-24 10:33:54 +01:00
CanbiZ
0efa83ff48 Refactor: Prometheus PVE Exporter to uv based install (#5412) 2025-06-24 11:33:46 +02:00
CanbiZ
66ab254fb2 Refactor: ESPHome to uv based install (#5413)
* Refactor: ESPHome to uv based install

* fix curl
2025-06-24 11:33:26 +02:00
104 changed files with 1415 additions and 721 deletions

View File

@@ -14,8 +14,69 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment. All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
## 2025-06-26
## 2025-06-25
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Docmost: Increase resources [@tremor021](https://github.com/tremor021) ([#5458](https://github.com/community-scripts/ProxmoxVE/pull/5458))
- #### ✨ New Features
- tools.func: new helper for imagemagick [@MickLesk](https://github.com/MickLesk) ([#5452](https://github.com/community-scripts/ProxmoxVE/pull/5452))
- YunoHost: add Update-Function [@MickLesk](https://github.com/MickLesk) ([#5450](https://github.com/community-scripts/ProxmoxVE/pull/5450))
- #### 🔧 Refactor
- Refactor: Tailscale [@MickLesk](https://github.com/MickLesk) ([#5454](https://github.com/community-scripts/ProxmoxVE/pull/5454))
### 🌐 Website
- #### 🐞 Bug Fixes
- Update Tooltips component to conditionally display updateable status based on item type [@BramSuurdje](https://github.com/BramSuurdje) ([#5461](https://github.com/community-scripts/ProxmoxVE/pull/5461))
- Refactor CommandMenu to prevent duplicate scripts across categories [@BramSuurdje](https://github.com/BramSuurdje) ([#5463](https://github.com/community-scripts/ProxmoxVE/pull/5463))
- #### ✨ New Features
- Enhance InstallCommand component to support Gitea as an alternative source for installation scripts. [@BramSuurdje](https://github.com/BramSuurdje) ([#5464](https://github.com/community-scripts/ProxmoxVE/pull/5464))
- #### 📝 Script Information
- Website: mark VM's and "OS"-LXC's as updatable [@MickLesk](https://github.com/MickLesk) ([#5453](https://github.com/community-scripts/ProxmoxVE/pull/5453))
## 2025-06-24 ## 2025-06-24
### 🆕 New Scripts
- ONLYOFFICE Docs ([#5420](https://github.com/community-scripts/ProxmoxVE/pull/5420))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- GoMFT: tmpl bugfix to work with current version until a new release pushed [@MickLesk](https://github.com/MickLesk) ([#5435](https://github.com/community-scripts/ProxmoxVE/pull/5435))
- Update all Alpine Scripts to atleast 1GB HDD [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#5418](https://github.com/community-scripts/ProxmoxVE/pull/5418))
- #### ✨ New Features
- general: update all alpine scripts to version 3.22 [@MickLesk](https://github.com/MickLesk) ([#5428](https://github.com/community-scripts/ProxmoxVE/pull/5428))
- Minio: use latest version or latest feature rich version [@MickLesk](https://github.com/MickLesk) ([#5423](https://github.com/community-scripts/ProxmoxVE/pull/5423))
- [core]: Improve GitHub release fetch robustness with split timeouts and retry logic [@MickLesk](https://github.com/MickLesk) ([#5422](https://github.com/community-scripts/ProxmoxVE/pull/5422))
- #### 💥 Breaking Changes
- bump scripts (Installer) from Ubuntu 22.04 to Ubuntu 24.04 (agentdvr, emby, jellyfin, plex, shinobi) [@MickLesk](https://github.com/MickLesk) ([#5434](https://github.com/community-scripts/ProxmoxVE/pull/5434))
- #### 🔧 Refactor
- Refactor: MeTube to uv based install [@MickLesk](https://github.com/MickLesk) ([#5411](https://github.com/community-scripts/ProxmoxVE/pull/5411))
- Refactor: Prometheus PVE Exporter to uv based install [@MickLesk](https://github.com/MickLesk) ([#5412](https://github.com/community-scripts/ProxmoxVE/pull/5412))
- Refactor: ESPHome to uv based install [@MickLesk](https://github.com/MickLesk) ([#5413](https://github.com/community-scripts/ProxmoxVE/pull/5413))
## 2025-06-23 ## 2025-06-23
### 🆕 New Scripts ### 🆕 New Scripts

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}" var_disk="${var_disk:-8}"
var_os="${var_os:-ubuntu}" var_os="${var_os:-ubuntu}"
var_version="${var_version:-22.04}" var_version="${var_version:-24.04}"
var_unprivileged="${var_unprivileged:-0}" var_unprivileged="${var_unprivileged:-0}"
header_info "$APP" header_info "$APP"
@@ -20,15 +20,15 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/agentdvr ]]; then if [[ ! -d /opt/agentdvr ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
msg_error "Currently we don't provide an update function for this ${APP}."
exit exit
fi
msg_error "Currently we don't provide an update function for this ${APP}."
exit
} }
start start
@@ -38,4 +38,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-3}" var_disk="${var_disk:-3}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-2}" var_disk="${var_disk:-2}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -31,7 +31,7 @@ function update_script() {
msg_info "Restarting Forgejo" msg_info "Restarting Forgejo"
$STD rc-service forgejo restart $STD rc-service forgejo restart
msg_ok "Restarted Forgejo" msg_ok "Restarted Forgejo"
exit 0 exit 0
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-3}" var_disk="${var_disk:-3}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -9,9 +9,9 @@ APP="Alpine-IT-Tools"
var_tags="${var_tags:-alpine;development}" var_tags="${var_tags:-alpine;development}"
var_cpu="${var_cpu:-1}" var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-0.5}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-10}" var_disk="${var_disk:-10}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-2}" var_disk="${var_disk:-2}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -58,4 +58,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable by going to the following URL. echo -e "${APP} should be reachable by going to the following URL.
${BL}https://${IP}${CL} \n" ${BL}https://${IP}${CL} \n"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
var_fuse="${var_fuse:-yes}" var_fuse="${var_fuse:-yes}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -69,4 +69,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${APP} should be reachable on port 6379. echo -e "${APP} should be reachable on port 6379.
${BL}redis-cli -h ${IP} -p 6379${CL} \n" ${BL}redis-cli -h ${IP} -p 6379${CL} \n"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-2}" var_disk="${var_disk:-2}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -31,13 +31,13 @@ function update_script() {
msg_info "Updating Tinyauth" msg_info "Updating Tinyauth"
RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [ "${RELEASE}" != "$(cat /opt/tinyauth_version.txt)" ] || [ ! -f /opt/tinyauth_version.txt ]; then if [ "${RELEASE}" != "$(cat /opt/tinyauth_version.txt)" ] || [ ! -f /opt/tinyauth_version.txt ]; then
$STD service tinyauth stop $STD service tinyauth stop
rm -f /opt/tinyauth/tinyauth rm -f /opt/tinyauth/tinyauth
curl -fsSL "https://github.com/steveiliop56/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth curl -fsSL "https://github.com/steveiliop56/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
chmod +x /opt/tinyauth/tinyauth chmod +x /opt/tinyauth/tinyauth
echo "${RELEASE}" > /opt/tinyauth_version.txt echo "${RELEASE}" >/opt/tinyauth_version.txt
msg_info "Restarting Tinyauth" msg_info "Restarting Tinyauth"
$STD service tinyauth start $STD service tinyauth start
msg_ok "Restarted Tinyauth" msg_ok "Restarted Tinyauth"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -7,11 +7,11 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="Alpine-Zigbee2MQTT" APP="Alpine-Zigbee2MQTT"
var_tags="${var_tags:-alpine;zigbee;mqtt;smarthome}" var_tags="${var_tags:-alpine;zigbee;mqtt;smarthome}"
var_disk="${var_disk:-0.3}" var_disk="${var_disk:-1}"
var_cpu="${var_cpu:-1}" var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}" var_ram="${var_ram:-256}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-0}" var_unprivileged="${var_unprivileged:-0}"
header_info "$APP" header_info "$APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-1}" var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -8,8 +8,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="Docmost" APP="Docmost"
var_tags="${var_tags:-documents}" var_tags="${var_tags:-documents}"
var_cpu="${var_cpu:-3}" var_cpu="${var_cpu:-3}"
var_ram="${var_ram:-3072}" var_ram="${var_ram:-4096}"
var_disk="${var_disk:-7}" var_disk="${var_disk:-8}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}" var_disk="${var_disk:-8}"
var_os="${var_os:-ubuntu}" var_os="${var_os:-ubuntu}"
var_version="${var_version:-22.04}" var_version="${var_version:-24.04}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -25,22 +25,57 @@ function update_script() {
check_container_resources check_container_resources
if [[ ! -f /etc/systemd/system/esphomeDashboard.service ]]; then if [[ ! -f /etc/systemd/system/esphomeDashboard.service ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit 1
fi fi
msg_info "Stopping ESPHome"
msg_info "Stopping ${APP}"
systemctl stop esphomeDashboard systemctl stop esphomeDashboard
msg_ok "Stopped ESPHome" msg_ok "Stopped ${APP}"
msg_info "Updating ESPHome" VENV_PATH="/opt/esphome/.venv"
if [[ -d /srv/esphome ]]; then ESPHOME_BIN="${VENV_PATH}/bin/esphome"
$STD source /srv/esphome/bin/activate export PYTHON_VERSION="3.12"
if [[ ! -d "$VENV_PATH" || ! -x "$ESPHOME_BIN" ]]; then
PYTHON_VERSION="3.12" setup_uv
msg_info "Migrating to uv/venv"
rm -rf "$VENV_PATH"
mkdir -p /opt/esphome
cd /opt/esphome
$STD uv venv "$VENV_PATH"
$STD "$VENV_PATH/bin/python" -m ensurepip --upgrade
$STD "$VENV_PATH/bin/python" -m pip install --upgrade pip
$STD "$VENV_PATH/bin/python" -m pip install esphome tornado esptool
msg_ok "Migrated to uv/venv"
else
msg_info "Updating ESPHome"
PYTHON_VERSION="3.12" setup_uv
$STD "$VENV_PATH/bin/python" -m pip install --upgrade esphome tornado esptool
msg_ok "Updated ESPHome"
fi fi
$STD pip3 install -U esphome SERVICE_FILE="/etc/systemd/system/esphomeDashboard.service"
msg_ok "Updated ESPHome" if ! grep -q "${VENV_PATH}/bin/esphome" "$SERVICE_FILE"; then
msg_info "Updating systemd service"
cat <<EOF >"$SERVICE_FILE"
[Unit]
Description=ESPHome Dashboard
After=network.target
msg_info "Starting ESPHome" [Service]
ExecStart=${VENV_PATH}/bin/esphome dashboard /root/config/
Restart=always
User=root
[Install]
WantedBy=multi-user.target
EOF
$STD systemctl daemon-reload
msg_ok "Updated systemd service"
fi
msg_info "Starting ${APP}"
systemctl start esphomeDashboard systemctl start esphomeDashboard
msg_ok "Started ESPHome" msg_ok "Started ${APP}"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
exit exit
} }
@@ -52,4 +87,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6052${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6052${CL}"

View File

@@ -45,6 +45,9 @@ function update_script() {
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Updating $APP to ${RELEASE}" msg_info "Updating $APP to ${RELEASE}"
if ! command -v git >/dev/null 2>&1; then
$STD apt-get install -y git
fi
rm -f /opt/gomft/gomft rm -f /opt/gomft/gomft
temp_file=$(mktemp) temp_file=$(mktemp)
curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file" curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
@@ -53,6 +56,43 @@ function update_script() {
cd /opt/gomft cd /opt/gomft
$STD npm install $STD npm install
$STD npm run build $STD npm run build
TEMPL_VERSION="$(awk '/github.com\/a-h\/templ/{print $2}' go.mod)"
$STD go install github.com/a-h/templ/cmd/templ@${TEMPL_VERSION}
# dirty hack to fix templ
cat <<'EOF' >/opt/gomft/components/file_metadata/search/file_metadata_search_content.templ
package search
import (
"context"
"github.com/starfleetcptn/gomft/components/file_metadata"
"github.com/starfleetcptn/gomft/components/file_metadata/list"
)
templ FileMetadataSearchContent(ctx context.Context, data file_metadata.FileMetadataSearchData) {
<!-- Search Results -->
<div id="search-results">
if len(data.Files) > 0 {
@list.FileMetadataListPartial(ctx, file_metadata.FileMetadataListData{
Files: data.Files,
Page: data.Page,
Limit: data.Limit,
TotalCount: data.TotalCount,
TotalPages: data.TotalPages,
Filter: data.Filter,
SortBy: data.SortBy,
SortDir: data.SortDir,
}, "/files/search/partial", "#search-results-container")
} else {
<div class="p-6 text-center text-gray-500 dark:text-gray-400">
<svg class="mx-auto mb-4 w-12 h-12 text-gray-400" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z" />
</svg>
<p>No files found matching your search criteria.</p>
</div>
}
</div>
}
EOF
$STD "$HOME"/go/bin/templ generate $STD "$HOME"/go/bin/templ generate
export CGO_ENABLED=1 export CGO_ENABLED=1
export GOOS=linux export GOOS=linux

6
ct/headers/onlyoffice Normal file
View File

@@ -0,0 +1,6 @@
____ _ ______ ______ ____________________________
/ __ \/ | / / /\ \/ / __ \/ ____/ ____/ _/ ____/ ____/
/ / / / |/ / / \ / / / / /_ / /_ / // / / __/
/ /_/ / /| / /___/ / /_/ / __/ / __/ _/ // /___/ /___
\____/_/ |_/_____/_/\____/_/ /_/ /___/\____/_____/

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}" var_disk="${var_disk:-8}"
var_os="${var_os:-ubuntu}" var_os="${var_os:-ubuntu}"
var_version="${var_version:-22.04}" var_version="${var_version:-24.04}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -20,19 +20,19 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /usr/lib/jellyfin ]]; then if [[ ! -d /usr/lib/jellyfin ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating ${APP} LXC" msg_info "Updating ${APP} LXC"
$STD apt-get update $STD apt-get update
$STD apt-get -y upgrade $STD apt-get -y upgrade
$STD apt-get -y --with-new-pkgs upgrade jellyfin jellyfin-server $STD apt-get -y --with-new-pkgs upgrade jellyfin jellyfin-server
msg_ok "Updated ${APP} LXC" msg_ok "Updated ${APP} LXC"
exit exit
} }
start start
@@ -42,4 +42,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8096${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8096${CL}"

View File

@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="MeTube" APP="MeTube"
var_tags="${var_tags:-media;youtube}" var_tags="${var_tags:-media;youtube}"
var_cpu="${var_cpu:-1}" var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-10}" var_disk="${var_disk:-10}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"
@@ -23,40 +23,97 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/metube ]]; then if [[ ! -d /opt/metube ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Stopping ${APP} Service" msg_info "Stopping ${APP} Service"
systemctl stop metube systemctl stop metube
msg_ok "Stopped ${APP} Service" msg_ok "Stopped ${APP} Service"
msg_info "Updating ${APP} to latest Git" msg_info "Backing up Old Installation"
cd /opt if [[ -d /opt/metube_bak ]]; then
if [ -d metube_bak ]; then rm -rf /opt/metube_bak
rm -rf metube_bak
fi fi
mv metube metube_bak mv /opt/metube /opt/metube_bak
msg_ok "Backup created"
msg_info "Cloning Latest ${APP} Release"
$STD git clone https://github.com/alexta69/metube /opt/metube $STD git clone https://github.com/alexta69/metube /opt/metube
msg_ok "Cloned ${APP}"
msg_info "Building Frontend"
cd /opt/metube/ui cd /opt/metube/ui
$STD npm install $STD npm install
$STD node_modules/.bin/ng build $STD node_modules/.bin/ng build
cd /opt/metube msg_ok "Built Frontend"
cp /opt/metube_bak/.env /opt/metube/
$STD pip3 install pipenv
$STD pipenv install
if [ -d "/opt/metube_bak" ]; then PYTHON_VERSION="3.13" setup_uv
rm -rf /opt/metube_bak
msg_info "Setting up Python Environment (uv)"
$STD uv venv /opt/metube/.venv
$STD /opt/metube/.venv/bin/python -m ensurepip --upgrade
$STD /opt/metube/.venv/bin/python -m pip install --upgrade pip
$STD /opt/metube/.venv/bin/python -m pip install pipenv
msg_ok "Python Environment Ready"
msg_info "Installing Backend Requirements"
cd /opt/metube
$STD /opt/metube/.venv/bin/pipenv install
msg_ok "Installed Backend"
msg_info "Restoring Environment File"
if [[ -f /opt/metube_bak/.env ]]; then
cp /opt/metube_bak/.env /opt/metube/.env
fi fi
msg_ok "Updated ${APP} to latest Git" msg_ok "Restored .env"
if [[ ! -d /opt/metube/.venv ]]; then
msg_info "Migrating to uv-based environment"
PYTHON_VERSION="3.13" setup_uv
$STD uv venv /opt/metube/.venv
$STD /opt/metube/.venv/bin/python -m ensurepip --upgrade
$STD /opt/metube/.venv/bin/python -m pip install --upgrade pip
$STD /opt/metube/.venv/bin/python -m pip install pipenv
$STD /opt/metube/.venv/bin/pipenv install
$STD /opt/metube/.venv/bin/pipenv update yt-dlp
msg_info "Patching systemd Service"
cat <<EOF >/etc/systemd/system/metube.service
[Unit]
Description=Metube - YouTube Downloader
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/metube
EnvironmentFile=/opt/metube/.env
ExecStart=/opt/metube/.venv/bin/pipenv run python3 app/main.py
Restart=always
User=root
[Install]
WantedBy=multi-user.target
EOF
msg_ok "Patched systemd Service"
fi
$STD systemctl daemon-reload
msg_ok "Service Updated"
msg_info "Cleaning up"
rm -rf /opt/metube_bak
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned Up"
msg_info "Starting ${APP} Service" msg_info "Starting ${APP} Service"
systemctl start metube systemctl enable -q --now metube
sleep 1 sleep 1
msg_ok "Started ${APP} Service" msg_ok "Started ${APP} Service"
msg_ok "Updated Successfully!\n"
exit msg_ok "Updated Successfully!"
} }
start start
@@ -66,4 +123,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8081${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8081${CL}"

View File

@@ -27,16 +27,33 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
FEATURE_RICH_VERSION="2025-04-22T22-12-26Z"
RELEASE=$(curl -fsSL https://api.github.com/repos/minio/minio/releases/latest | grep '"tag_name"' | awk -F '"' '{print $4}') RELEASE=$(curl -fsSL https://api.github.com/repos/minio/minio/releases/latest | grep '"tag_name"' | awk -F '"' '{print $4}')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then CURRENT_VERSION=""
[[ -f /opt/${APP}_version.txt ]] && CURRENT_VERSION=$(cat /opt/${APP}_version.txt)
RELEASE=$(curl -fsSL https://api.github.com/repos/minio/minio/releases/latest | grep '"tag_name"' | awk -F '"' '{print $4}')
if [[ "${CURRENT_VERSION}" == "${FEATURE_RICH_VERSION}" && "${RELEASE}" != "${FEATURE_RICH_VERSION}" ]]; then
echo
echo "You are currently running the last feature-rich community version: ${FEATURE_RICH_VERSION}"
echo "WARNING: Updating to the latest version will REMOVE most management features from the Console UI."
echo "Do you still want to upgrade to the latest version? [y/N]: "
read -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
msg_ok "No update performed. Staying on the feature-rich version."
exit
fi
fi
if [[ "${CURRENT_VERSION}" != "${RELEASE}" ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop minio systemctl stop minio
msg_ok "${APP} Stopped" msg_ok "${APP} Stopped"
msg_info "Updating ${APP} to ${RELEASE}" msg_info "Updating ${APP} to ${RELEASE}"
mv /usr/local/bin/minio /usr/local/bin/minio_bak mv /usr/local/bin/minio /usr/local/bin/minio_bak
curl -fsSL "https://dl.min.io/server/minio/release/linux-amd64/minio" -o $(basename "https://dl.min.io/server/minio/release/linux-amd64/minio") curl -fsSL "https://dl.min.io/server/minio/release/linux-amd64/minio" -o /usr/local/bin/minio
mv minio /usr/local/bin/
chmod +x /usr/local/bin/minio chmod +x /usr/local/bin/minio
echo "${RELEASE}" >/opt/${APP}_version.txt echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-3}" var_disk="${var_disk:-3}"
var_os="${var_os:-alpine}" var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}" var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

52
ct/onlyoffice.sh Normal file
View File

@@ -0,0 +1,52 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.onlyoffice.com/
APP="ONLYOFFICE"
var_tags="${var_tags:-word;excel;powerpoint;pdf}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-10}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /var/www/onlyoffice ]]; then
msg_error "No valid ${APP} installation found!"
exit 1
fi
msg_info "Updating $APP"
$STD apt-get update
$STD apt-get -y --only-upgrade install onlyoffice-documentserver
msg_ok "Updated $APP"
if systemctl is-enabled --quiet onlyoffice-documentserver; then
msg_info "Restarting $APP"
$STD systemctl restart onlyoffice-documentserver
msg_ok "$APP restarted"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}" var_disk="${var_disk:-8}"
var_os="${var_os:-ubuntu}" var_os="${var_os:-ubuntu}"
var_version="${var_version:-22.04}" var_version="${var_version:-24.04}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -20,26 +20,69 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /etc/systemd/system/prometheus-pve-exporter.service ]]; then if [[ ! -f /etc/systemd/system/prometheus-pve-exporter.service ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit 1
fi fi
msg_info "Stopping ${APP}"
systemctl stop prometheus-pve-exporter
msg_ok "Stopped ${APP}"
msg_info "Updating ${APP}" msg_info "Stopping ${APP}"
$STD pip install prometheus-pve-exporter --default-timeout=300 --upgrade --root-user-action=ignore systemctl stop prometheus-pve-exporter
msg_ok "Updated ${APP}" msg_ok "Stopped ${APP}"
msg_info "Starting ${APP}" export PVE_VENV_PATH="/opt/prometheus-pve-exporter/.venv"
systemctl start prometheus-pve-exporter export PVE_EXPORTER_BIN="${PVE_VENV_PATH}/bin/pve_exporter"
msg_ok "Started ${APP}"
msg_ok "Updated Successfully" if [[ ! -d "$PVE_VENV_PATH" || ! -x "$PVE_EXPORTER_BIN" ]]; then
exit PYTHON_VERSION="3.12" setup_uv
msg_info "Migrating to uv/venv"
rm -rf "$PVE_VENV_PATH"
mkdir -p /opt/prometheus-pve-exporter
cd /opt/prometheus-pve-exporter
$STD uv venv "$PVE_VENV_PATH"
$STD "$PVE_VENV_PATH/bin/python" -m ensurepip --upgrade
$STD "$PVE_VENV_PATH/bin/python" -m pip install --upgrade pip
$STD "$PVE_VENV_PATH/bin/python" -m pip install prometheus-pve-exporter
msg_ok "Migrated to uv/venv"
else
msg_info "Updating Prometheus Proxmox VE Exporter"
PYTHON_VERSION="3.12" setup_uv
$STD "$PVE_VENV_PATH/bin/python" -m pip install --upgrade prometheus-pve-exporter
msg_ok "Updated Prometheus Proxmox VE Exporter"
fi
local service_file="/etc/systemd/system/prometheus-pve-exporter.service"
if ! grep -q "${PVE_VENV_PATH}/bin/pve_exporter" "$service_file"; then
msg_info "Updating systemd service"
cat <<EOF >"$service_file"
[Unit]
Description=Prometheus Proxmox VE Exporter
Documentation=https://github.com/znerol/prometheus-pve-exporter
After=syslog.target network.target
[Service]
User=root
Restart=always
Type=simple
ExecStart=${PVE_VENV_PATH}/bin/pve_exporter \\
--config.file=/opt/prometheus-pve-exporter/pve.yml \\
--web.listen-address=0.0.0.0:9221
ExecReload=/bin/kill -HUP \$MAINPID
[Install]
WantedBy=multi-user.target
EOF
$STD systemctl daemon-reload
msg_ok "Updated systemd service"
fi
msg_info "Starting ${APP}"
systemctl start prometheus-pve-exporter
msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
exit 0
} }
start start
@@ -49,4 +92,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9221${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9221${CL}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}" var_disk="${var_disk:-8}"
var_os="${var_os:-ubuntu}" var_os="${var_os:-ubuntu}"
var_version="${var_version:-22.04}" var_version="${var_version:-24.04}"
var_unprivileged="${var_unprivileged:-0}" var_unprivileged="${var_unprivileged:-0}"
header_info "$APP" header_info "$APP"
@@ -44,4 +44,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/super${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/super${CL}"

View File

@@ -20,18 +20,24 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /etc/apt/trusted.gpg.d/php.gpg ]]; then if [[ ! -f /etc/apt/trusted.gpg.d/php.gpg ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating $APP LXC"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated $APP LXC"
exit exit
fi
msg_info "Updating OS"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated OS"
msg_info "Updating $APP LXC"
$STD yunohost tools update
$STD yunohost tools upgrade system
$STD yunohost tools upgrade apps
msg_ok "Updated $APP LXC"
exit
} }
start start
@@ -41,4 +47,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -32,10 +32,6 @@
"password": null "password": null
}, },
"notes": [ "notes": [
{
"text": "Only supported on Debian 12 LXCs",
"type": "warning"
},
{ {
"text": "After the script finishes, reboot the LXC then run `tailscale up` in the LXC console", "text": "After the script finishes, reboot the LXC then run `tailscale up` in the LXC console",
"type": "info" "type": "info"

View File

@@ -34,7 +34,7 @@
"ram": 256, "ram": 256,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -23,7 +23,7 @@
"ram": 2048, "ram": 2048,
"hdd": 8, "hdd": 8,
"os": "ubuntu", "os": "ubuntu",
"version": "22.04" "version": "24.04"
} }
} }
], ],

View File

@@ -21,9 +21,9 @@
"resources": { "resources": {
"cpu": 1, "cpu": 1,
"ram": 256, "ram": 256,
"hdd": 0.5, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
}, },
{ {
@@ -32,9 +32,9 @@
"resources": { "resources": {
"cpu": 1, "cpu": 1,
"ram": 256, "ram": 256,
"hdd": 0.5, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -23,7 +23,7 @@
"ram": 256, "ram": 256,
"hdd": 2, "hdd": 2,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
}, },
{ {
@@ -34,7 +34,7 @@
"ram": 256, "ram": 256,
"hdd": 2, "hdd": 2,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": null, "documentation": null,
@@ -23,7 +23,7 @@
"ram": 512, "ram": 512,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2025-01-27", "date_created": "2025-01-27",
"type": "vm", "type": "vm",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": null, "documentation": null,

View File

@@ -34,7 +34,7 @@
"ram": 1024, "ram": 1024,
"hdd": 3, "hdd": 3,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "vm", "type": "vm",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": null, "documentation": null,

View File

@@ -1,35 +1,35 @@
{ {
"name": "Debian", "name": "Debian",
"slug": "debian", "slug": "debian",
"categories": [ "categories": [
2 2
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": null, "documentation": null,
"website": "https://www.debian.org/", "website": "https://www.debian.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/debian.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/debian.webp",
"config_path": "", "config_path": "",
"description": "Debian Linux is a distribution that emphasizes free software. It supports many hardware platforms.", "description": "Debian Linux is a distribution that emphasizes free software. It supports many hardware platforms.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/debian.sh", "script": "ct/debian.sh",
"resources": { "resources": {
"cpu": 1, "cpu": 1,
"ram": 512, "ram": 512,
"hdd": 2, "hdd": 2,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": []
} }

View File

@@ -7,7 +7,7 @@
], ],
"date_created": "2025-01-20", "date_created": "2025-01-20",
"type": "vm", "type": "vm",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": null, "documentation": null,

View File

@@ -34,7 +34,7 @@
"ram": 1024, "ram": 1024,
"hdd": 2, "hdd": 2,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -20,8 +20,8 @@
"script": "ct/docmost.sh", "script": "ct/docmost.sh",
"resources": { "resources": {
"cpu": 3, "cpu": 3,
"ram": 3072, "ram": 4096,
"hdd": 7, "hdd": 8,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }

View File

@@ -23,7 +23,7 @@
"ram": 2048, "ram": 2048,
"hdd": 8, "hdd": 8,
"os": "ubuntu", "os": "ubuntu",
"version": "22.04" "version": "24.04"
} }
} }
], ],

View File

@@ -34,10 +34,10 @@
"ram": 256, "ram": 256,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null

View File

@@ -34,7 +34,7 @@
"ram": 256, "ram": 256,
"hdd": 3, "hdd": 3,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -34,7 +34,7 @@
"ram": 256, "ram": 256,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -34,7 +34,7 @@
"ram": 256, "ram": 256,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -1,44 +1,44 @@
{ {
"name": "Home Assistant OS", "name": "Home Assistant OS",
"slug": "haos-vm", "slug": "haos-vm",
"categories": [ "categories": [
16 16
], ],
"date_created": "2024-04-29", "date_created": "2024-04-29",
"type": "vm", "type": "vm",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8123, "interface_port": 8123,
"documentation": "https://www.home-assistant.io/docs/", "documentation": "https://www.home-assistant.io/docs/",
"website": "https://www.home-assistant.io/", "website": "https://www.home-assistant.io/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp",
"config_path": "", "config_path": "",
"description": "This script automates the process of creating a Virtual Machine (VM) using the official KVM (qcow2) disk image provided by the Home Assistant Team. It involves finding, downloading, and extracting the image, defining user-defined settings, importing and attaching the disk, setting the boot order, and starting the VM. It supports various storage types, and does not involve any hidden installations. After the script completes, click on the VM, then on the Summary tab to find the VM IP.", "description": "This script automates the process of creating a Virtual Machine (VM) using the official KVM (qcow2) disk image provided by the Home Assistant Team. It involves finding, downloading, and extracting the image, defining user-defined settings, importing and attaching the disk, setting the boot order, and starting the VM. It supports various storage types, and does not involve any hidden installations. After the script completes, click on the VM, then on the Summary tab to find the VM IP.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "vm/haos-vm.sh", "script": "vm/haos-vm.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 4096, "ram": 4096,
"hdd": 32, "hdd": 32,
"os": null, "os": null,
"version": null "version": null
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null
},
"notes": [
{
"text": "The disk must have a minimum size of 32GB and its size cannot be changed during the creation of the VM.",
"type": "warning"
}, },
"notes": [ {
{ "text": "After the script completes, click on the VM, then on the Summary or Console tab to find the VM IP.",
"text": "The disk must have a minimum size of 32GB and its size cannot be changed during the creation of the VM.", "type": "info"
"type": "warning" }
}, ]
{
"text": "After the script completes, click on the VM, then on the Summary or Console tab to find the VM IP.",
"type": "info"
}
]
} }

View File

@@ -23,7 +23,7 @@
"ram": 2048, "ram": 2048,
"hdd": 8, "hdd": 8,
"os": "ubuntu", "os": "ubuntu",
"version": "22.04" "version": "24.04"
} }
} }
], ],

View File

@@ -34,7 +34,7 @@
"ram": 1024, "ram": 1024,
"hdd": 10, "hdd": 10,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -34,7 +34,7 @@
"ram": 256, "ram": 256,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

35
frontend/public/json/metube.json generated Normal file
View File

@@ -0,0 +1,35 @@
{
"name": "MeTube",
"slug": "metube",
"categories": [
11
],
"date_created": "2025-06-24",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8081,
"documentation": null,
"website": "https://github.com/alexta69/metube",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/metube.webp",
"config_path": "/opt/metube/.env",
"description": "MeTube allows you to download videos from YouTube and dozens of other sites.",
"install_methods": [
{
"type": "default",
"script": "ct/metube.sh",
"resources": {
"cpu": 1,
"ram": 2048,
"hdd": 10,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -1,35 +0,0 @@
{
"name": "MeTube",
"slug": "metube",
"categories": [
11
],
"date_created": "2024-06-12",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8081,
"documentation": null,
"website": "https://github.com/alexta69/metube",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/metube.webp",
"config_path": "/opt/metube/.env",
"description": "MeTube allows you to download videos from YouTube and dozens of other sites.",
"install_methods": [
{
"type": "default",
"script": "ct/metube.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 10,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -7,7 +7,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "vm", "type": "vm",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": null, "documentation": null,

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2023-11-14", "date_created": "2023-11-14",
"type": "vm", "type": "vm",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 80, "interface_port": 80,
"documentation": null, "documentation": null,

View File

@@ -34,7 +34,7 @@
"ram": 1024, "ram": 1024,
"hdd": 2, "hdd": 2,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -34,7 +34,7 @@
"ram": 256, "ram": 256,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -23,7 +23,7 @@
"ram": 512, "ram": 512,
"hdd": 3, "hdd": 3,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
}, },
{ {
@@ -34,7 +34,7 @@
"ram": 512, "ram": 512,
"hdd": 3, "hdd": 3,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

40
frontend/public/json/onlyoffice.json generated Normal file
View File

@@ -0,0 +1,40 @@
{
"name": "ONLYOFFICE Docs",
"slug": "onlyoffice",
"categories": [
9
],
"date_created": "2025-06-24",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://helpcenter.onlyoffice.com/docs",
"website": "https://onlyoffice.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/onlyoffice.webp",
"config_path": "/etc/onlyoffice/documentserver/local.json",
"description": "ONLYOFFICE Docs is an open-source online office suite that provides collaborative editors for text documents, spreadsheets, and presentations, fully compatible with Microsoft Office formats (DOCX, XLSX, PPTX).",
"install_methods": [
{
"type": "default",
"script": "ct/onlyoffice.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 10,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": "admin",
"password": "admin"
},
"notes": [
{
"text": "Database / RabbitMQ Credentials: `cat ~/onlyoffice.creds`",
"type": "info"
}
]
}

View File

@@ -7,7 +7,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "vm", "type": "vm",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": null, "documentation": null,

View File

@@ -7,7 +7,7 @@
], ],
"date_created": "2025-02-11", "date_created": "2025-02-11",
"type": "vm", "type": "vm",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 443, "interface_port": 443,
"documentation": "https://docs.opnsense.org/", "documentation": "https://docs.opnsense.org/",

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "vm", "type": "vm",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 80, "interface_port": 80,
"documentation": null, "documentation": null,

View File

@@ -1,40 +1,40 @@
{ {
"name": "PiMox HAOS", "name": "PiMox HAOS",
"slug": "pimox-haos-vm", "slug": "pimox-haos-vm",
"categories": [ "categories": [
16 16
], ],
"date_created": "2024-04-29", "date_created": "2024-04-29",
"type": "vm", "type": "vm",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8123, "interface_port": 8123,
"documentation": null, "documentation": null,
"website": "https://github.com/jiangcuo/Proxmox-Port", "website": "https://github.com/jiangcuo/Proxmox-Port",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp",
"config_path": "", "config_path": "",
"description": "The script automates the manual process of finding, downloading and extracting the aarch64 (qcow2) disk image provided by the Home Assistant Team, creating a VM with user defined settings, importing and attaching the disk, setting the boot order and starting the VM.", "description": "The script automates the manual process of finding, downloading and extracting the aarch64 (qcow2) disk image provided by the Home Assistant Team, creating a VM with user defined settings, importing and attaching the disk, setting the boot order and starting the VM.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "vm/pimox-haos-vm.sh", "script": "vm/pimox-haos-vm.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 4096, "ram": 4096,
"hdd": 32, "hdd": 32,
"os": null, "os": null,
"version": null "version": null
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [ "notes": [
{ {
"text": "After the script completes, click on the VM, then on the Summary or Console tab to find the VM IP.", "text": "After the script completes, click on the VM, then on the Summary or Console tab to find the VM IP.",
"type": "info" "type": "info"
} }
] ]
} }

View File

@@ -23,7 +23,7 @@
"ram": 2048, "ram": 2048,
"hdd": 8, "hdd": 8,
"os": "ubuntu", "os": "ubuntu",
"version": "22.04" "version": "24.04"
} }
} }
], ],

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 5432, "interface_port": 5432,
"documentation": null, "documentation": null,
@@ -34,7 +34,7 @@
"ram": 256, "ram": 256,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -34,7 +34,7 @@
"ram": 256, "ram": 256,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -26,7 +26,7 @@
"version": "12" "version": "12"
} }
}, },
{ {
"type": "alpine", "type": "alpine",
"script": "ct/alpine-rclone.sh", "script": "ct/alpine-rclone.sh",
"resources": { "resources": {
@@ -34,7 +34,7 @@
"ram": 256, "ram": 256,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -34,7 +34,7 @@
"ram": 256, "ram": 256,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -23,7 +23,7 @@
"ram": 2048, "ram": 2048,
"hdd": 8, "hdd": 8,
"os": "ubuntu", "os": "ubuntu",
"version": "22.04" "version": "24.04"
} }
} }
], ],

View File

@@ -34,7 +34,7 @@
"ram": 512, "ram": 512,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -34,7 +34,7 @@
"ram": 256, "ram": 256,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -1,35 +1,35 @@
{ {
"name": "Ubuntu", "name": "Ubuntu",
"slug": "ubuntu", "slug": "ubuntu",
"categories": [ "categories": [
2 2
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": null, "documentation": null,
"website": "https://ubuntu.com/", "website": "https://ubuntu.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/ubuntu.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/ubuntu.webp",
"config_path": "", "config_path": "",
"description": "Ubuntu is a distribution based on Debian, designed to have regular releases and a consistent user experience.", "description": "Ubuntu is a distribution based on Debian, designed to have regular releases and a consistent user experience.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/ubuntu.sh", "script": "ct/ubuntu.sh",
"resources": { "resources": {
"cpu": 1, "cpu": 1,
"ram": 512, "ram": 512,
"hdd": 2, "hdd": 2,
"os": "ubuntu", "os": "ubuntu",
"version": "22.04" "version": "24.04"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": []
} }

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "vm", "type": "vm",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": null, "documentation": null,

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "vm", "type": "vm",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": null, "documentation": null,

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2025-01-24", "date_created": "2025-01-24",
"type": "vm", "type": "vm",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": null, "documentation": null,

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2025-06-19", "date_created": "2025-06-19",
"type": "vm", "type": "vm",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": null, "documentation": null,

View File

@@ -34,7 +34,7 @@
"ram": 256, "ram": 256,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -1,13 +1,148 @@
[ [
{
"name": "mongodb/mongo",
"version": "r8.1.2-rc1",
"date": "2025-06-25T22:42:04Z"
},
{ {
"name": "rcourtman/Pulse", "name": "rcourtman/Pulse",
"version": "v3.31.1", "version": "v3.32.0",
"date": "2025-06-23T23:13:13Z" "date": "2025-06-25T22:27:01Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.6.1",
"date": "2025-06-25T21:19:25Z"
},
{
"name": "coder/code-server",
"version": "v4.101.2",
"date": "2025-06-25T21:18:52Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.22.4",
"date": "2025-06-25T20:46:20Z"
}, },
{ {
"name": "meilisearch/meilisearch", "name": "meilisearch/meilisearch",
"version": "prototype-incremental-vector-store-1", "version": "prototype-tmp-failing-upgrade-0",
"date": "2025-06-23T21:37:47Z" "date": "2025-06-25T19:51:55Z"
},
{
"name": "home-assistant/core",
"version": "2025.6.3",
"date": "2025-06-24T13:00:12Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.2.18",
"date": "2025-06-20T04:45:37Z"
},
{
"name": "ollama/ollama",
"version": "v0.9.4-citest0",
"date": "2025-06-25T17:44:00Z"
},
{
"name": "influxdata/influxdb",
"version": "v3.2.0",
"date": "2025-06-25T17:31:48Z"
},
{
"name": "wavelog/wavelog",
"version": "2.0.5",
"date": "2025-06-25T14:53:31Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.504.3",
"date": "2025-06-25T14:43:01Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "testing",
"date": "2025-06-16T18:10:42Z"
},
{
"name": "cockpit-project/cockpit",
"version": "341",
"date": "2025-06-25T11:49:28Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.0",
"date": "2025-05-12T09:12:04Z"
},
{
"name": "mattermost/mattermost",
"version": "v9.11.17",
"date": "2025-06-18T08:12:05Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.100.0",
"date": "2025-06-23T12:48:35Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2054",
"date": "2025-06-25T05:54:03Z"
},
{
"name": "moghtech/komodo",
"version": "v1.18.4",
"date": "2025-06-25T00:06:56Z"
},
{
"name": "duplicati/duplicati",
"version": "v2.1.0.120-2.1.0.120_canary_2025-06-24",
"date": "2025-06-24T22:39:50Z"
},
{
"name": "keycloak/keycloak",
"version": "26.2.5",
"date": "2025-05-28T06:49:43Z"
},
{
"name": "evcc-io/evcc",
"version": "0.204.5",
"date": "2025-06-24T19:17:16Z"
},
{
"name": "ErsatzTV/ErsatzTV",
"version": "v25.2.0",
"date": "2025-06-24T17:06:31Z"
},
{
"name": "arunavo4/gitea-mirror",
"version": "v2.18.0",
"date": "2025-06-24T08:29:55Z"
},
{
"name": "element-hq/synapse",
"version": "v1.132.0",
"date": "2025-06-17T13:49:30Z"
},
{
"name": "docker/compose",
"version": "v2.37.3",
"date": "2025-06-24T14:05:33Z"
},
{
"name": "Checkmk/checkmk",
"version": "v2.4.0p5",
"date": "2025-06-24T13:06:53Z"
},
{
"name": "fallenbagel/jellyseerr",
"version": "preview-fix-proxy-axios",
"date": "2025-06-24T08:50:22Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w26-4.13.0",
"date": "2025-06-24T02:02:34Z"
}, },
{ {
"name": "minio/minio", "name": "minio/minio",
@@ -24,46 +159,16 @@
"version": "v4.2.1", "version": "v4.2.1",
"date": "2025-06-03T20:04:28Z" "date": "2025-06-03T20:04:28Z"
}, },
{
"name": "home-assistant/core",
"version": "2025.6.2",
"date": "2025-06-23T18:38:37Z"
},
{
"name": "Checkmk/checkmk",
"version": "v2.4.0p5-rc2",
"date": "2025-06-23T15:50:55Z"
},
{ {
"name": "VictoriaMetrics/VictoriaMetrics", "name": "VictoriaMetrics/VictoriaMetrics",
"version": "pmm-6401-v1.120.0", "version": "pmm-6401-v1.120.0",
"date": "2025-06-23T15:12:12Z" "date": "2025-06-23T15:12:12Z"
}, },
{
"name": "n8n-io/n8n",
"version": "n8n@1.98.2",
"date": "2025-06-18T18:20:16Z"
},
{ {
"name": "Graylog2/graylog2-server", "name": "Graylog2/graylog2-server",
"version": "6.3.0-rc.2", "version": "6.3.0-rc.2",
"date": "2025-06-23T11:31:38Z" "date": "2025-06-23T11:31:38Z"
}, },
{
"name": "mattermost/mattermost",
"version": "v9.11.17",
"date": "2025-06-18T08:12:05Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2042",
"date": "2025-06-23T05:54:00Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.2.18",
"date": "2025-06-20T04:45:37Z"
},
{ {
"name": "gotson/komga", "name": "gotson/komga",
"version": "1.22.0", "version": "1.22.0",
@@ -89,11 +194,6 @@
"version": "v1.4.1", "version": "v1.4.1",
"date": "2025-06-22T19:38:08Z" "date": "2025-06-22T19:38:08Z"
}, },
{
"name": "msgbyte/tianji",
"version": "v1.22.3",
"date": "2025-06-22T18:29:00Z"
},
{ {
"name": "clusterzx/paperless-ai", "name": "clusterzx/paperless-ai",
"version": "v3.0.7", "version": "v3.0.7",
@@ -119,11 +219,6 @@
"version": "v5.37.0", "version": "v5.37.0",
"date": "2025-06-21T14:05:12Z" "date": "2025-06-21T14:05:12Z"
}, },
{
"name": "fallenbagel/jellyseerr",
"version": "preview-fix-proxy-auth",
"date": "2025-06-21T13:43:58Z"
},
{ {
"name": "rogerfar/rdt-client", "name": "rogerfar/rdt-client",
"version": "v2.0.114", "version": "v2.0.114",
@@ -137,7 +232,7 @@
{ {
"name": "theonedev/onedev", "name": "theonedev/onedev",
"version": "v11.11.1", "version": "v11.11.1",
"date": "2025-06-21T07:32:15Z" "date": "2025-06-21T09:23:39Z"
}, },
{ {
"name": "pocketbase/pocketbase", "name": "pocketbase/pocketbase",
@@ -149,11 +244,6 @@
"version": "0.50.4", "version": "0.50.4",
"date": "2025-06-21T07:47:02Z" "date": "2025-06-21T07:47:02Z"
}, },
{
"name": "coder/code-server",
"version": "v4.101.1",
"date": "2025-06-21T02:47:08Z"
},
{ {
"name": "go-gitea/gitea", "name": "go-gitea/gitea",
"version": "v1.24.2", "version": "v1.24.2",
@@ -174,36 +264,11 @@
"version": "v1.25.0", "version": "v1.25.0",
"date": "2025-06-20T19:15:43Z" "date": "2025-06-20T19:15:43Z"
}, },
{
"name": "mongodb/mongo",
"version": "r8.1.2-rc0",
"date": "2025-06-20T17:35:38Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.0",
"date": "2025-05-12T09:12:04Z"
},
{ {
"name": "Sonarr/Sonarr", "name": "Sonarr/Sonarr",
"version": "v4.0.15.2941", "version": "v4.0.15.2941",
"date": "2025-06-20T17:20:54Z" "date": "2025-06-20T17:20:54Z"
}, },
{
"name": "keycloak/keycloak",
"version": "26.2.5",
"date": "2025-05-28T06:49:43Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "testing",
"date": "2025-06-16T18:10:42Z"
},
{
"name": "docker/compose",
"version": "v2.37.2",
"date": "2025-06-20T13:25:03Z"
},
{ {
"name": "zabbix/zabbix", "name": "zabbix/zabbix",
"version": "7.2.9", "version": "7.2.9",
@@ -219,11 +284,6 @@
"version": "v12.7.0", "version": "v12.7.0",
"date": "2025-06-20T08:31:16Z" "date": "2025-06-20T08:31:16Z"
}, },
{
"name": "arunavo4/gitea-mirror",
"version": "v2.16.3",
"date": "2025-06-20T05:49:06Z"
},
{ {
"name": "paperless-ngx/paperless-ngx", "name": "paperless-ngx/paperless-ngx",
"version": "v2.17.1", "version": "v2.17.1",
@@ -269,11 +329,6 @@
"version": "v1.11.11", "version": "v1.11.11",
"date": "2025-06-18T18:04:50Z" "date": "2025-06-18T18:04:50Z"
}, },
{
"name": "ollama/ollama",
"version": "v0.9.2",
"date": "2025-06-18T14:29:39Z"
},
{ {
"name": "NodeBB/NodeBB", "name": "NodeBB/NodeBB",
"version": "v3.12.7", "version": "v3.12.7",
@@ -299,11 +354,6 @@
"version": "v11.0.2", "version": "v11.0.2",
"date": "2025-06-18T09:38:19Z" "date": "2025-06-18T09:38:19Z"
}, },
{
"name": "evcc-io/evcc",
"version": "0.204.3",
"date": "2025-06-18T08:31:58Z"
},
{ {
"name": "silverbulletmd/silverbullet", "name": "silverbulletmd/silverbullet",
"version": "2.0.0-pre3", "version": "2.0.0-pre3",
@@ -319,11 +369,6 @@
"version": "v11.5.6", "version": "v11.5.6",
"date": "2025-06-17T22:00:40Z" "date": "2025-06-17T22:00:40Z"
}, },
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.515",
"date": "2025-06-17T19:17:56Z"
},
{ {
"name": "project-zot/zot", "name": "project-zot/zot",
"version": "v2.1.5", "version": "v2.1.5",
@@ -334,11 +379,6 @@
"version": "v25.05.1", "version": "v25.05.1",
"date": "2025-06-17T14:38:04Z" "date": "2025-06-17T14:38:04Z"
}, },
{
"name": "element-hq/synapse",
"version": "v1.132.0",
"date": "2025-06-17T13:49:30Z"
},
{ {
"name": "cloudflare/cloudflared", "name": "cloudflare/cloudflared",
"version": "2025.6.1", "version": "2025.6.1",
@@ -404,11 +444,6 @@
"version": "15.2", "version": "15.2",
"date": "2025-04-14T15:37:12Z" "date": "2025-04-14T15:37:12Z"
}, },
{
"name": "moghtech/komodo",
"version": "v1.18.3",
"date": "2025-06-16T07:03:46Z"
},
{ {
"name": "jellyfin/jellyfin", "name": "jellyfin/jellyfin",
"version": "v10.10.7", "version": "v10.10.7",
@@ -479,11 +514,6 @@
"version": "v3.3.25", "version": "v3.3.25",
"date": "2025-06-14T02:52:44Z" "date": "2025-06-14T02:52:44Z"
}, },
{
"name": "wazuh/wazuh",
"version": "coverity-w25-4.13.0",
"date": "2025-06-13T13:58:23Z"
},
{ {
"name": "FlowiseAI/Flowise", "name": "FlowiseAI/Flowise",
"version": "flowise@3.0.2", "version": "flowise@3.0.2",
@@ -634,11 +664,6 @@
"version": "v4.1.1", "version": "v4.1.1",
"date": "2025-06-04T19:10:05Z" "date": "2025-06-04T19:10:05Z"
}, },
{
"name": "cockpit-project/cockpit",
"version": "340",
"date": "2025-06-04T16:41:44Z"
},
{ {
"name": "intri-in/manage-my-damn-life-nextjs", "name": "intri-in/manage-my-damn-life-nextjs",
"version": "v0.7.1", "version": "v0.7.1",
@@ -649,11 +674,6 @@
"version": "2.0.0-beta.2-temp", "version": "2.0.0-beta.2-temp",
"date": "2025-03-28T08:45:58Z" "date": "2025-03-28T08:45:58Z"
}, },
{
"name": "influxdata/influxdb",
"version": "v1.12.1rc3",
"date": "2025-06-03T14:05:52Z"
},
{ {
"name": "Pf2eToolsOrg/Pf2eTools", "name": "Pf2eToolsOrg/Pf2eTools",
"version": "v0.9.0", "version": "v0.9.0",
@@ -704,11 +724,6 @@
"version": "0.26.3", "version": "0.26.3",
"date": "2025-05-29T21:18:15Z" "date": "2025-05-29T21:18:15Z"
}, },
{
"name": "gristlabs/grist-core",
"version": "v1.6.0",
"date": "2025-05-29T19:11:21Z"
},
{ {
"name": "navidrome/navidrome", "name": "navidrome/navidrome",
"version": "v0.56.1", "version": "v0.56.1",
@@ -719,11 +734,6 @@
"version": "0.19.2", "version": "0.19.2",
"date": "2025-05-29T14:39:17Z" "date": "2025-05-29T14:39:17Z"
}, },
{
"name": "duplicati/duplicati",
"version": "v2.1.0.119-2.1.0.119_canary_2025-05-29",
"date": "2025-05-29T06:14:27Z"
},
{ {
"name": "apache/cassandra", "name": "apache/cassandra",
"version": "cassandra-4.0.18", "version": "cassandra-4.0.18",
@@ -819,11 +829,6 @@
"version": "v1.1.1", "version": "v1.1.1",
"date": "2025-05-17T10:10:36Z" "date": "2025-05-17T10:10:36Z"
}, },
{
"name": "wavelog/wavelog",
"version": "2.0.4",
"date": "2025-05-16T15:09:53Z"
},
{ {
"name": "Dolibarr/dolibarr", "name": "Dolibarr/dolibarr",
"version": "18.0.7", "version": "18.0.7",
@@ -1229,11 +1234,6 @@
"version": "0.7.2", "version": "0.7.2",
"date": "2025-01-13T22:17:18Z" "date": "2025-01-13T22:17:18Z"
}, },
{
"name": "ErsatzTV/ErsatzTV",
"version": "v25.1.0",
"date": "2025-01-10T18:14:54Z"
},
{ {
"name": "go-vikunja/vikunja", "name": "go-vikunja/vikunja",
"version": "v0.24.6", "version": "v0.24.6",

View File

@@ -34,7 +34,7 @@
"ram": 256, "ram": 256,
"hdd": 1, "hdd": 1,
"os": "alpine", "os": "alpine",
"version": "3.21" "version": "3.22"
} }
} }
], ],

View File

@@ -1,40 +1,40 @@
{ {
"name": "YunoHost", "name": "YunoHost",
"slug": "yunohost", "slug": "yunohost",
"categories": [ "categories": [
2 2
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 80, "interface_port": 80,
"documentation": null, "documentation": null,
"website": "https://yunohost.org/", "website": "https://yunohost.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/yunohost.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/yunohost.webp",
"config_path": "", "config_path": "",
"description": "YunoHost is an operating system aiming for the simplest administration of a server, and therefore democratize self-hosting, while making sure it stays reliable, secure, ethical and lightweight.", "description": "YunoHost is an operating system aiming for the simplest administration of a server, and therefore democratize self-hosting, while making sure it stays reliable, secure, ethical and lightweight.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/yunohost.sh", "script": "ct/yunohost.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,
"hdd": 20, "hdd": 20,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [ "notes": [
{ {
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.", "text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
"type": "warning" "type": "warning"
} }
] ]
} }

View File

@@ -1,51 +1,51 @@
{ {
"name": "Zigbee2MQTT", "name": "Zigbee2MQTT",
"slug": "zigbee2mqtt", "slug": "zigbee2mqtt",
"categories": [ "categories": [
17 17
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": true, "privileged": true,
"interface_port": 9442, "interface_port": 9442,
"documentation": "https://www.zigbee2mqtt.io/guide/getting-started/", "documentation": "https://www.zigbee2mqtt.io/guide/getting-started/",
"website": "https://www.zigbee2mqtt.io/", "website": "https://www.zigbee2mqtt.io/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zigbee2mqtt.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zigbee2mqtt.webp",
"config_path": "/opt/zigbee2mqtt/data/configuration.yaml", "config_path": "/opt/zigbee2mqtt/data/configuration.yaml",
"description": "Zigbee2MQTT is an open-source software project that allows you to use Zigbee-based smart home devices (such as those sold under the Philips Hue and Ikea Tradfri brands) with MQTT-based home automation systems, like Home Assistant, Node-RED, and others. The software acts as a bridge between your Zigbee devices and MQTT, allowing you to control and monitor these devices from your home automation system.", "description": "Zigbee2MQTT is an open-source software project that allows you to use Zigbee-based smart home devices (such as those sold under the Philips Hue and Ikea Tradfri brands) with MQTT-based home automation systems, like Home Assistant, Node-RED, and others. The software acts as a bridge between your Zigbee devices and MQTT, allowing you to control and monitor these devices from your home automation system.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/zigbee2mqtt.sh", "script": "ct/zigbee2mqtt.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 1024, "ram": 1024,
"hdd": 4, "hdd": 4,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
},
{
"type": "alpine",
"script": "ct/alpine-zigbee2mqtt.sh",
"resources": {
"cpu": 1,
"ram": 256,
"hdd": 0.3,
"os": "alpine",
"version": "3.21"
}
}
],
"default_credentials": {
"username": null,
"password": null
}, },
"notes": [ {
{ "type": "alpine",
"text": "You can find the post-install guide here: `https://github.com/community-scripts/ProxmoxVE/discussions/410`", "script": "ct/alpine-zigbee2mqtt.sh",
"type": "info" "resources": {
} "cpu": 1,
] "ram": 256,
"hdd": 1,
"os": "alpine",
"version": "3.22"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "You can find the post-install guide here: `https://github.com/community-scripts/ProxmoxVE/discussions/410`",
"type": "info"
}
]
} }

View File

@@ -1,17 +1,20 @@
import CodeCopyButton from "@/components/ui/code-copy-button"; import CodeCopyButton from "@/components/ui/code-copy-button";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { Alert, AlertDescription } from "@/components/ui/alert";
import { Info } from "lucide-react";
import { basePath } from "@/config/siteConfig"; import { basePath } from "@/config/siteConfig";
import { Script } from "@/lib/types"; import { Script } from "@/lib/types";
import { getDisplayValueFromType } from "../ScriptInfoBlocks"; import { getDisplayValueFromType } from "../ScriptInfoBlocks";
const getInstallCommand = (scriptPath = "", isAlpine = false) => { const getInstallCommand = (scriptPath = "", isAlpine = false, useGitea = false) => {
const url = `https://raw.githubusercontent.com/community-scripts/${basePath}/main/${scriptPath}`; const githubUrl = `https://raw.githubusercontent.com/community-scripts/${basePath}/main/${scriptPath}`;
return isAlpine ? `bash -c "$(curl -fsSL ${url})"` : `bash -c "$(curl -fsSL ${url})"`; const giteaUrl = `https://git.community-scripts.org/community-scripts/${basePath}/raw/branch/main/${scriptPath}`;
const url = useGitea ? giteaUrl : githubUrl;
return `bash -c "$(curl -fsSL ${url})"`;
}; };
export default function InstallCommand({ item }: { item: Script }) { export default function InstallCommand({ item }: { item: Script }) {
const alpineScript = item.install_methods.find((method) => method.type === "alpine"); const alpineScript = item.install_methods.find((method) => method.type === "alpine");
const defaultScript = item.install_methods.find((method) => method.type === "default"); const defaultScript = item.install_methods.find((method) => method.type === "default");
const renderInstructions = (isAlpine = false) => ( const renderInstructions = (isAlpine = false) => (
@@ -49,9 +52,20 @@ export default function InstallCommand({ item }: { item: Script }) {
</> </>
); );
return ( const renderGiteaInfo = () => (
<div className="p-4"> <Alert className="mt-3 mb-3">
{alpineScript ? ( <Info className="h-4 w-4" />
<AlertDescription className="text-sm">
<strong>When to use Gitea:</strong> GitHub may have issues including slow connections, delayed updates after bug
fixes, no IPv6 support, API rate limits (60/hour). Use our Gitea mirror as a reliable alternative when
experiencing these issues.
</AlertDescription>
</Alert>
);
const renderScriptTabs = (useGitea = false) => {
if (alpineScript) {
return (
<Tabs defaultValue="default" className="mt-2 w-full max-w-4xl"> <Tabs defaultValue="default" className="mt-2 w-full max-w-4xl">
<TabsList> <TabsList>
<TabsTrigger value="default">Default</TabsTrigger> <TabsTrigger value="default">Default</TabsTrigger>
@@ -59,19 +73,40 @@ export default function InstallCommand({ item }: { item: Script }) {
</TabsList> </TabsList>
<TabsContent value="default"> <TabsContent value="default">
{renderInstructions()} {renderInstructions()}
<CodeCopyButton>{getInstallCommand(defaultScript?.script)}</CodeCopyButton> <CodeCopyButton>{getInstallCommand(defaultScript?.script, false, useGitea)}</CodeCopyButton>
</TabsContent> </TabsContent>
<TabsContent value="alpine"> <TabsContent value="alpine">
{renderInstructions(true)} {renderInstructions(true)}
<CodeCopyButton>{getInstallCommand(alpineScript.script, true)}</CodeCopyButton> <CodeCopyButton>{getInstallCommand(alpineScript.script, true, useGitea)}</CodeCopyButton>
</TabsContent> </TabsContent>
</Tabs> </Tabs>
) : defaultScript?.script ? ( );
} else if (defaultScript?.script) {
return (
<> <>
{renderInstructions()} {renderInstructions()}
<CodeCopyButton>{getInstallCommand(defaultScript.script)}</CodeCopyButton> <CodeCopyButton>{getInstallCommand(defaultScript.script, false, useGitea)}</CodeCopyButton>
</> </>
) : null} );
}
return null;
};
return (
<div className="p-4">
<Tabs defaultValue="github" className="w-full max-w-4xl">
<TabsList>
<TabsTrigger value="github">GitHub</TabsTrigger>
<TabsTrigger value="gitea">Gitea</TabsTrigger>
</TabsList>
<TabsContent value="github">
{renderScriptTabs(false)}
</TabsContent>
<TabsContent value="gitea">
{renderGiteaInfo()}
{renderScriptTabs(true)}
</TabsContent>
</Tabs>
</div> </div>
); );
} }

View File

@@ -34,14 +34,14 @@ export default function Tooltips({ item }: { item: Script }) {
{item.privileged && ( {item.privileged && (
<TooltipBadge variant="warning" label="Privileged" content="This script will be run in a privileged LXC" /> <TooltipBadge variant="warning" label="Privileged" content="This script will be run in a privileged LXC" />
)} )}
{item.updateable && ( {(item.updateable || item.type !== "pve") && (
<TooltipBadge <TooltipBadge
variant="success" variant="success"
label="Updateable" label="Updateable"
content={`To Update ${item.name}, run the command below (or type update) in the LXC Console.`} content={`To Update ${item.name}, run the command below (or type update) in the LXC Console.`}
/> />
)} )}
{!item.updateable && <TooltipBadge variant="failure" label="Not Updateable" />} {!item.updateable && item.type !== "pve" && <TooltipBadge variant="failure" label="Not Updateable" />}
</div> </div>
); );
} }

View File

@@ -134,34 +134,54 @@ export default function CommandMenu() {
<CommandInput placeholder="Search for a script..." /> <CommandInput placeholder="Search for a script..." />
<CommandList> <CommandList>
<CommandEmpty>{isLoading ? "Loading..." : "No scripts found."}</CommandEmpty> <CommandEmpty>{isLoading ? "Loading..." : "No scripts found."}</CommandEmpty>
{links.map((category) => ( {(() => {
<CommandGroup key={`category:${category.name}`} heading={category.name}> // Track seen scripts globally to avoid duplicates across all categories
{category.scripts.map((script) => ( const globalSeenScripts = new Set<string>();
<CommandItem
key={`script:${script.slug}`} return links.map((category) => {
value={`${script.slug}-${script.name}`} const uniqueScripts = category.scripts.filter((script) => {
onSelect={() => { if (globalSeenScripts.has(script.slug)) {
setOpen(false); return false;
router.push(`/scripts?id=${script.slug}`); }
}} globalSeenScripts.add(script.slug);
> return true;
<div className="flex gap-2" onClick={() => setOpen(false)}> });
<Image
src={script.logo || `/${basePath}/logo.png`} // Only render category if it has unique scripts
onError={(e) => ((e.currentTarget as HTMLImageElement).src = `/${basePath}/logo.png`)} if (uniqueScripts.length === 0) {
unoptimized return null;
width={16} }
height={16}
alt="" return (
className="h-5 w-5" <CommandGroup key={`category:${category.name}`} heading={category.name}>
/> {uniqueScripts.map((script) => (
<span>{script.name}</span> <CommandItem
<span>{formattedBadge(script.type)}</span> key={`script:${script.slug}`}
</div> value={`${script.slug}-${script.name}`}
</CommandItem> onSelect={() => {
))} setOpen(false);
</CommandGroup> router.push(`/scripts?id=${script.slug}`);
))} }}
>
<div className="flex gap-2" onClick={() => setOpen(false)}>
<Image
src={script.logo || `/${basePath}/logo.png`}
onError={(e) => ((e.currentTarget as HTMLImageElement).src = `/${basePath}/logo.png`)}
unoptimized
width={16}
height={16}
alt=""
className="h-5 w-5"
/>
<span>{script.name}</span>
<span>{formattedBadge(script.type)}</span>
</div>
</CommandItem>
))}
</CommandGroup>
);
});
})()}
</CommandList> </CommandList>
</CommandDialog> </CommandDialog>
</> </>

View File

@@ -17,34 +17,34 @@ msg_info "Installing Dependencies"
$STD apt-get install -y git $STD apt-get install -y git
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setup Python3" PYTHON_VERSION="3.12" setup_uv
$STD apt-get install -y \
python3 \
python3-dev \
python3-pip \
python3-venv
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Setup Python3"
msg_info "Installing ESPHome" msg_info "Setting up Virtual Environment"
mkdir /root/config mkdir -p /opt/esphome
$STD pip install esphome tornado esptool mkdir -p /root/config
msg_ok "Installed ESPHome" cd /opt/esphome
$STD uv venv /opt/esphome/.venv
$STD /opt/esphome/.venv/bin/python -m ensurepip --upgrade
$STD /opt/esphome/.venv/bin/python -m pip install --upgrade pip
$STD /opt/esphome/.venv/bin/python -m pip install esphome tornado esptool
msg_ok "Setup and Installed ESPHome"
msg_info "Creating Service" msg_info "Creating Service"
mkdir -p /root/config
cat <<EOF >/etc/systemd/system/esphomeDashboard.service cat <<EOF >/etc/systemd/system/esphomeDashboard.service
[Unit] [Unit]
Description=ESPHome Dashboard Description=ESPHome Dashboard
After=network.target After=network.target
[Service] [Service]
ExecStart=/usr/local/bin/esphome dashboard /root/config/ ExecStart=/opt/esphome/.venv/bin/esphome dashboard /root/config/
Restart=always Restart=always
User=root User=root
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now esphomeDashboard systemctl enable -q --now esphomeDashboard
msg_ok "Created Service" msg_ok "Created Service"

View File

@@ -19,7 +19,8 @@ $STD apt-get install -y \
rclone \ rclone \
tzdata \ tzdata \
ca-certificates \ ca-certificates \
build-essential build-essential \
git
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_go setup_go
@@ -32,7 +33,44 @@ curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}
tar -xzf "$temp_file" tar -xzf "$temp_file"
mv GoMFT-"${RELEASE}"/ /opt/gomft mv GoMFT-"${RELEASE}"/ /opt/gomft
cd /opt/gomft cd /opt/gomft
$STD go install github.com/a-h/templ/cmd/templ@latest TEMPL_VERSION="$(awk '/github.com\/a-h\/templ/{print $2}' go.mod)"
$STD go install github.com/a-h/templ/cmd/templ@${TEMPL_VERSION}
cp /opt/gomft/components/file_metadata/search/file_metadata_search_content.templ{,.bak}
# dirty hack to fix templ
cat <<'EOF' >/opt/gomft/components/file_metadata/search/file_metadata_search_content.templ
package search
import (
"context"
"github.com/starfleetcptn/gomft/components/file_metadata"
"github.com/starfleetcptn/gomft/components/file_metadata/list"
)
templ FileMetadataSearchContent(ctx context.Context, data file_metadata.FileMetadataSearchData) {
<!-- Search Results -->
<div id="search-results">
if len(data.Files) > 0 {
@list.FileMetadataListPartial(ctx, file_metadata.FileMetadataListData{
Files: data.Files,
Page: data.Page,
Limit: data.Limit,
TotalCount: data.TotalCount,
TotalPages: data.TotalPages,
Filter: data.Filter,
SortBy: data.SortBy,
SortDir: data.SortDir,
}, "/files/search/partial", "#search-results-container")
} else {
<div class="p-6 text-center text-gray-500 dark:text-gray-400">
<svg class="mx-auto mb-4 w-12 h-12 text-gray-400" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z" />
</svg>
<p>No files found matching your search criteria.</p>
</div>
}
</div>
}
EOF
$STD "$HOME"/go/bin/templ generate $STD "$HOME"/go/bin/templ generate
$STD go build -o gomft main.go $STD go build -o gomft main.go
chmod +x /opt/gomft/gomft chmod +x /opt/gomft/gomft

View File

@@ -1,8 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Copyright (c) 2021-2025 tteck # Copyright (c) 2021-2025 tteck
# Author: tteck # Author: MickLesk (Canbiz)
# Co-Author: MickLesk (Canbiz)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/alexta69/metube # Source: https://github.com/alexta69/metube
@@ -28,14 +27,7 @@ $STD apt-get install -y --no-install-recommends \
ca-certificates ca-certificates
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setup Python3" PYTHON_VERSION="3.13" setup_uv
$STD apt-get install -y \
python3 \
python3-dev \
python3-pip \
python3-venv
msg_ok "Setup Python3"
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
msg_info "Installing MeTube" msg_info "Installing MeTube"
@@ -44,8 +36,13 @@ cd /opt/metube/ui
$STD npm install $STD npm install
$STD node_modules/.bin/ng build $STD node_modules/.bin/ng build
cd /opt/metube cd /opt/metube
$STD pip3 install pipenv $STD uv venv /opt/metube/.venv
$STD pipenv install $STD /opt/metube/.venv/bin/python -m ensurepip --upgrade
$STD /opt/metube/.venv/bin/python -m pip install --upgrade pip
$STD /opt/metube/.venv/bin/python -m pip install pipenv
$STD /opt/metube/.venv/bin/pipenv install
$STD /opt/metube/.venv/bin/pipenv update yt-dlp
mkdir -p /opt/metube_downloads /opt/metube_downloads/.metube /opt/metube_downloads/music /opt/metube_downloads/videos mkdir -p /opt/metube_downloads /opt/metube_downloads/.metube /opt/metube_downloads/music /opt/metube_downloads/videos
cat <<EOF >/opt/metube/.env cat <<EOF >/opt/metube/.env
DOWNLOAD_DIR=/opt/metube_downloads DOWNLOAD_DIR=/opt/metube_downloads
@@ -65,7 +62,7 @@ After=network.target
Type=simple Type=simple
WorkingDirectory=/opt/metube WorkingDirectory=/opt/metube
EnvironmentFile=/opt/metube/.env EnvironmentFile=/opt/metube/.env
ExecStart=/usr/local/bin/pipenv run python3 app/main.py ExecStart=/opt/metube/.venv/bin/pipenv run python3 app/main.py
Restart=always Restart=always
User=root User=root

View File

@@ -13,31 +13,60 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Setup MinIO" FEATURE_RICH_VERSION="2025-04-22T22-12-26Z"
RELEASE=$(curl -fsSL https://api.github.com/repos/minio/minio/releases/latest | grep '"tag_name"' | awk -F '"' '{print $4}')
curl -fsSL "https://dl.min.io/server/minio/release/linux-amd64/minio" -o /usr/local/bin/minio echo
echo "MinIO recently removed many management features from the Console UI."
echo "The last feature-complete version is: $FEATURE_RICH_VERSION"
echo "Latest versions require the paid edition for full UI functionality."
echo
echo "Choose which version to install:"
echo " [N] Feature-rich community version ($FEATURE_RICH_VERSION) [Recommended]"
echo " [Y] Latest version (may lack UI features)"
echo
read -p "Install latest MinIO version? [y/N]: " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
USE_LATEST=true
else
USE_LATEST=false
fi
msg_info "Setting up MinIO"
if [[ "$USE_LATEST" == "true" ]]; then
RELEASE=$(curl -fsSL https://api.github.com/repos/minio/minio/releases/latest | grep '"tag_name"' | awk -F '"' '{print $4}')
DOWNLOAD_URL="https://dl.min.io/server/minio/release/linux-amd64/minio"
else
RELEASE="$FEATURE_RICH_VERSION"
DOWNLOAD_URL="https://dl.min.io/server/minio/release/linux-amd64/archive/minio.RELEASE.${FEATURE_RICH_VERSION}"
fi
curl -fsSL "$DOWNLOAD_URL" -o /usr/local/bin/minio
chmod +x /usr/local/bin/minio chmod +x /usr/local/bin/minio
useradd -r minio-user -s /sbin/nologin useradd -r minio-user -s /sbin/nologin
mkdir -p /home/minio-user mkdir -p /home/minio-user
chown minio-user:minio-user /home/minio-user chown minio-user:minio-user /home/minio-user
mkdir -p /data mkdir -p /data
chown minio-user:minio-user /data chown minio-user:minio-user /data
MINIO_ADMIN_USER="minioadmin" MINIO_ADMIN_USER="minioadmin"
MINIO_ADMIN_PASSWORD="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)" MINIO_ADMIN_PASSWORD="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
cat <<EOF >/etc/default/minio cat <<EOF >/etc/default/minio
MINIO_ROOT_USER=${MINIO_ADMIN_USER} MINIO_ROOT_USER=${MINIO_ADMIN_USER}
MINIO_ROOT_PASSWORD=${MINIO_ADMIN_PASSWORD} MINIO_ROOT_PASSWORD=${MINIO_ADMIN_PASSWORD}
EOF EOF
{ {
echo "" echo ""
echo "MinIO-Credentials" echo "MinIO Credentials"
echo "MinIO Admin User: $MINIO_ADMIN_USER" echo "MinIO Admin User: $MINIO_ADMIN_USER"
echo "MinIO Admin Password: $MINIO_ADMIN_PASSWORD" echo "MinIO Admin Password: $MINIO_ADMIN_PASSWORD"
} >>~/minio.creds } >>~/minio.creds
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt echo "${RELEASE}" >/opt/${APPLICATION,,}_version.txt
msg_ok "Setup MinIO" msg_ok "Setup MinIO"
msg_info "Creating Service" msg_info "Creating service"
cat <<EOF >/etc/systemd/system/minio.service cat <<EOF >/etc/systemd/system/minio.service
[Unit] [Unit]
Description=MinIO Description=MinIO
@@ -57,8 +86,9 @@ LimitNOFILE=65536
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now minio systemctl enable -q --now minio
msg_ok "Created Service" msg_ok "Service created"
motd_ssh motd_ssh
customize customize
@@ -66,4 +96,4 @@ customize
msg_info "Cleaning up" msg_info "Cleaning up"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleanup complete"

View File

@@ -0,0 +1,103 @@
#!/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 /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 \
nginx \
rabbitmq-server \
ca-certificates \
software-properties-common
msg_ok "Installed Dependencies"
PG_VERSION="16" setup_postgresql
msg_info "Setup Database"
DB_NAME=onlyoffice
DB_USER=onlyoffice_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 "ONLYOFFICE-Credentials"
echo "ONLYOFFICE Database User: $DB_USER"
echo "ONLYOFFICE Database Password: $DB_PASS"
echo "ONLYOFFICE Database Name: $DB_NAME"
} >>~/onlyoffice.creds
msg_ok "Set up Database"
msg_info "Adding ONLYOFFICE GPG Key"
GPG_TMP="/tmp/onlyoffice.gpg"
KEY_URL="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE"
TMP_KEY_CONTENT=$(mktemp)
if curl -fsSL "$KEY_URL" -o "$TMP_KEY_CONTENT" && grep -q "BEGIN PGP PUBLIC KEY BLOCK" "$TMP_KEY_CONTENT"; then
gpg --quiet --batch --yes --no-default-keyring --keyring "gnupg-ring:$GPG_TMP" --import "$TMP_KEY_CONTENT" >/dev/null 2>&1
chmod 644 "$GPG_TMP"
chown root:root "$GPG_TMP"
mv "$GPG_TMP" /usr/share/keyrings/onlyoffice.gpg
echo "deb [signed-by=/usr/share/keyrings/onlyoffice.gpg] https://download.onlyoffice.com/repo/debian squeeze main" >/etc/apt/sources.list.d/onlyoffice.list
$STD apt-get update
msg_ok "GPG Key Added"
else
msg_error "Failed to download or verify GPG key from $KEY_URL"
[[ -f "$TMP_KEY_CONTENT" ]] && rm -f "$TMP_KEY_CONTENT"
exit 1
fi
rm -f "$TMP_KEY_CONTENT"
msg_info "Preconfiguring ONLYOFFICE Debconf Settings"
RMQ_USER=onlyoffice_rmq
RMQ_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
JWT_SECRET=$(openssl rand -hex 16)
echo onlyoffice-documentserver onlyoffice/db-host string localhost | debconf-set-selections
echo onlyoffice-documentserver onlyoffice/db-user string $DB_USER | debconf-set-selections
echo onlyoffice-documentserver onlyoffice/db-pwd password $DB_PASS | debconf-set-selections
echo onlyoffice-documentserver onlyoffice/db-name string $DB_NAME | debconf-set-selections
echo onlyoffice-documentserver onlyoffice/rabbitmq-host string localhost | debconf-set-selections
echo onlyoffice-documentserver onlyoffice/rabbitmq-user string $RMQ_USER | debconf-set-selections
echo onlyoffice-documentserver onlyoffice/rabbitmq-pwd password $RMQ_PASS | debconf-set-selections
echo onlyoffice-documentserver onlyoffice/jwt-enabled boolean true | debconf-set-selections
echo onlyoffice-documentserver onlyoffice/jwt-secret password $JWT_SECRET | debconf-set-selections
echo "RabbitMQ User: $RMQ_USER" >>~/onlyoffice.creds
echo "RabbitMQ Password: $RMQ_PASS" >>~/onlyoffice.creds
echo "JWT Secret: $JWT_SECRET" >>~/onlyoffice.creds
{
echo ""
echo "ONLYOFFICE RabbitMQ Credentials"
echo "User: $RMQ_USER"
echo "Password: $RMQ_PASS"
echo "Secret: $JWT_SECRET"
} >>~/onlyoffice.creds
msg_ok "Debconf Preconfiguration Done"
msg_info "Installing ttf-mscorefonts-installer"
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections
$STD apt-get install -y ttf-mscorefonts-installer
msg_ok "Installed Microsoft Core Fonts"
msg_info "Installing ONLYOFFICE Docs"
$STD apt-get install -y onlyoffice-documentserver
msg_ok "ONLYOFFICE Docs Installed"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

Some files were not shown because too many files have changed in this diff Show More