mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-07-01 19:47:38 +00:00
Compare commits
26 Commits
2025-06-23
...
migrate_ub
Author | SHA1 | Date | |
---|---|---|---|
2fca5309fe | |||
828a52fb92 | |||
00575130f5 | |||
2a873d974c | |||
439fdbf071 | |||
8ccf3de8f7 | |||
5fc126b61c | |||
c75af3a750 | |||
5c768b54c0 | |||
e8848c1641 | |||
24c90699e6 | |||
e6ab47f341 | |||
f63a1d89a3 | |||
0c1aaedf6b | |||
5b35d537a8 | |||
1d06016ae1 | |||
15b36b4d16 | |||
6a285e1e19 | |||
f60d132b20 | |||
d73bc95d4a | |||
2faeb5255c | |||
b4c6f28e4e | |||
d95bfdb7dc | |||
99a0fb727b | |||
0efa83ff48 | |||
66ab254fb2 |
22
CHANGELOG.md
22
CHANGELOG.md
@ -16,6 +16,28 @@ All LXC instances created using this repository come pre-installed with Midnight
|
||||
|
||||
## 2025-06-24
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- ONLYOFFICE Docs ([#5420](https://github.com/community-scripts/ProxmoxVE/pull/5420))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- 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))
|
||||
- [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))
|
||||
- Minio: use latest version or latest feature rich version [@MickLesk](https://github.com/MickLesk) ([#5423](https://github.com/community-scripts/ProxmoxVE/pull/5423))
|
||||
|
||||
- #### 🔧 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
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-ubuntu}"
|
||||
var_version="${var_version:-22.04}"
|
||||
var_version="${var_version:-24.04}"
|
||||
var_unprivileged="${var_unprivileged:-0}"
|
||||
|
||||
header_info "$APP"
|
||||
@ -20,15 +20,15 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/agentdvr ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/agentdvr ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@ -38,4 +38,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-3}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-2}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@ -31,7 +31,7 @@ function update_script() {
|
||||
msg_info "Restarting Forgejo"
|
||||
$STD rc-service forgejo restart
|
||||
msg_ok "Restarted Forgejo"
|
||||
|
||||
|
||||
exit 0
|
||||
}
|
||||
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-3}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -9,9 +9,9 @@ APP="Alpine-IT-Tools"
|
||||
var_tags="${var_tags:-alpine;development}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-0.5}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-10}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-2}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@ -58,4 +58,4 @@ description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${APP} should be reachable by going to the following URL.
|
||||
${BL}https://${IP}${CL} \n"
|
||||
${BL}https://${IP}${CL} \n"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
var_fuse="${var_fuse:-yes}"
|
||||
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@ -69,4 +69,4 @@ description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
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"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-2}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@ -31,13 +31,13 @@ function update_script() {
|
||||
|
||||
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) }')
|
||||
|
||||
|
||||
if [ "${RELEASE}" != "$(cat /opt/tinyauth_version.txt)" ] || [ ! -f /opt/tinyauth_version.txt ]; then
|
||||
$STD service tinyauth stop
|
||||
rm -f /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
|
||||
echo "${RELEASE}" > /opt/tinyauth_version.txt
|
||||
echo "${RELEASE}" >/opt/tinyauth_version.txt
|
||||
msg_info "Restarting Tinyauth"
|
||||
$STD service tinyauth start
|
||||
msg_ok "Restarted Tinyauth"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-256}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -7,11 +7,11 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
|
||||
APP="Alpine-Zigbee2MQTT"
|
||||
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_ram="${var_ram:-256}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-0}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-1}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-ubuntu}"
|
||||
var_version="${var_version:-22.04}"
|
||||
var_version="${var_version:-24.04}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -25,22 +25,57 @@ function update_script() {
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/systemd/system/esphomeDashboard.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
exit 1
|
||||
fi
|
||||
msg_info "Stopping ESPHome"
|
||||
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop esphomeDashboard
|
||||
msg_ok "Stopped ESPHome"
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
msg_info "Updating ESPHome"
|
||||
if [[ -d /srv/esphome ]]; then
|
||||
$STD source /srv/esphome/bin/activate
|
||||
VENV_PATH="/opt/esphome/.venv"
|
||||
ESPHOME_BIN="${VENV_PATH}/bin/esphome"
|
||||
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
|
||||
$STD pip3 install -U esphome
|
||||
msg_ok "Updated ESPHome"
|
||||
SERVICE_FILE="/etc/systemd/system/esphomeDashboard.service"
|
||||
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
|
||||
msg_ok "Started ESPHome"
|
||||
msg_ok "Started ${APP}"
|
||||
msg_ok "Updated Successfully"
|
||||
exit
|
||||
}
|
||||
@ -52,4 +87,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6052${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6052${CL}"
|
||||
|
6
ct/headers/onlyoffice
Normal file
6
ct/headers/onlyoffice
Normal file
@ -0,0 +1,6 @@
|
||||
____ _ ______ ______ ____________________________ ____
|
||||
/ __ \/ | / / /\ \/ / __ \/ ____/ ____/ _/ ____/ ____/ / __ \____ __________
|
||||
/ / / / |/ / / \ / / / / /_ / /_ / // / / __/ / / / / __ \/ ___/ ___/
|
||||
/ /_/ / /| / /___/ / /_/ / __/ / __/ _/ // /___/ /___ / /_/ / /_/ / /__(__ )
|
||||
\____/_/ |_/_____/_/\____/_/ /_/ /___/\____/_____/ /_____/\____/\___/____/
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-ubuntu}"
|
||||
var_version="${var_version:-22.04}"
|
||||
var_version="${var_version:-24.04}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@ -20,19 +20,19 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /usr/lib/jellyfin ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt-get update
|
||||
$STD apt-get -y upgrade
|
||||
$STD apt-get -y --with-new-pkgs upgrade jellyfin jellyfin-server
|
||||
msg_ok "Updated ${APP} LXC"
|
||||
exit
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /usr/lib/jellyfin ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt-get update
|
||||
$STD apt-get -y upgrade
|
||||
$STD apt-get -y --with-new-pkgs upgrade jellyfin jellyfin-server
|
||||
msg_ok "Updated ${APP} LXC"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@ -42,4 +42,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8096${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8096${CL}"
|
||||
|
91
ct/metube.sh
91
ct/metube.sh
@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
APP="MeTube"
|
||||
var_tags="${var_tags:-media;youtube}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-10}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
@ -23,40 +23,97 @@ function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/metube ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Stopping ${APP} Service"
|
||||
systemctl stop metube
|
||||
msg_ok "Stopped ${APP} Service"
|
||||
|
||||
msg_info "Updating ${APP} to latest Git"
|
||||
cd /opt
|
||||
if [ -d metube_bak ]; then
|
||||
rm -rf metube_bak
|
||||
msg_info "Backing up Old Installation"
|
||||
if [[ -d /opt/metube_bak ]]; then
|
||||
rm -rf /opt/metube_bak
|
||||
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
|
||||
msg_ok "Cloned ${APP}"
|
||||
|
||||
msg_info "Building Frontend"
|
||||
cd /opt/metube/ui
|
||||
$STD npm install
|
||||
$STD node_modules/.bin/ng build
|
||||
cd /opt/metube
|
||||
cp /opt/metube_bak/.env /opt/metube/
|
||||
$STD pip3 install pipenv
|
||||
$STD pipenv install
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
if [ -d "/opt/metube_bak" ]; then
|
||||
rm -rf /opt/metube_bak
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
|
||||
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
|
||||
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"
|
||||
systemctl start metube
|
||||
systemctl enable -q --now metube
|
||||
sleep 1
|
||||
msg_ok "Started ${APP} Service"
|
||||
msg_ok "Updated Successfully!\n"
|
||||
exit
|
||||
|
||||
msg_ok "Updated Successfully!"
|
||||
}
|
||||
|
||||
start
|
||||
@ -66,4 +123,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8081${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8081${CL}"
|
||||
|
23
ct/minio.sh
23
ct/minio.sh
@ -27,16 +27,33 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
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}')
|
||||
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}"
|
||||
systemctl stop minio
|
||||
msg_ok "${APP} Stopped"
|
||||
|
||||
msg_info "Updating ${APP} to ${RELEASE}"
|
||||
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")
|
||||
mv minio /usr/local/bin/
|
||||
curl -fsSL "https://dl.min.io/server/minio/release/linux-amd64/minio" -o /usr/local/bin/minio
|
||||
chmod +x /usr/local/bin/minio
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP}"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-3}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.21}"
|
||||
var_version="${var_version:-3.22}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
52
ct/onlyoffice.sh
Normal file
52
ct/onlyoffice.sh
Normal 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 Docs"
|
||||
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}"
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-ubuntu}"
|
||||
var_version="${var_version:-22.04}"
|
||||
var_version="${var_version:-24.04}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
@ -20,26 +20,69 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/systemd/system/prometheus-pve-exporter.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop prometheus-pve-exporter
|
||||
msg_ok "Stopped ${APP}"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/systemd/system/prometheus-pve-exporter.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
$STD pip install prometheus-pve-exporter --default-timeout=300 --upgrade --root-user-action=ignore
|
||||
msg_ok "Updated ${APP}"
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop prometheus-pve-exporter
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
systemctl start prometheus-pve-exporter
|
||||
msg_ok "Started ${APP}"
|
||||
msg_ok "Updated Successfully"
|
||||
exit
|
||||
export PVE_VENV_PATH="/opt/prometheus-pve-exporter/.venv"
|
||||
export PVE_EXPORTER_BIN="${PVE_VENV_PATH}/bin/pve_exporter"
|
||||
|
||||
if [[ ! -d "$PVE_VENV_PATH" || ! -x "$PVE_EXPORTER_BIN" ]]; then
|
||||
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
|
||||
@ -49,4 +92,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9221${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9221${CL}"
|
||||
|
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-ubuntu}"
|
||||
var_version="${var_version:-22.04}"
|
||||
var_version="${var_version:-24.04}"
|
||||
var_unprivileged="${var_unprivileged:-0}"
|
||||
|
||||
header_info "$APP"
|
||||
@ -44,4 +44,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/super${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/super${CL}"
|
||||
|
2
frontend/public/json/adguard.json
generated
2
frontend/public/json/adguard.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/agentdvr.json
generated
2
frontend/public/json/agentdvr.json
generated
@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "ubuntu",
|
||||
"version": "22.04"
|
||||
"version": "24.04"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
8
frontend/public/json/alpine-it-tools.json
generated
8
frontend/public/json/alpine-it-tools.json
generated
@ -21,9 +21,9 @@
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 256,
|
||||
"hdd": 0.5,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -32,9 +32,9 @@
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 256,
|
||||
"hdd": 0.5,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
4
frontend/public/json/alpine-tinyauth.json
generated
4
frontend/public/json/alpine-tinyauth.json
generated
@ -23,7 +23,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 2,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -34,7 +34,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 2,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/alpine.json
generated
2
frontend/public/json/alpine.json
generated
@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/bitmagnet.json
generated
2
frontend/public/json/bitmagnet.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 3,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/docker.json
generated
2
frontend/public/json/docker.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 2,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/emby.json
generated
2
frontend/public/json/emby.json
generated
@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "ubuntu",
|
||||
"version": "22.04"
|
||||
"version": "24.04"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
4
frontend/public/json/forgejo.json
generated
4
frontend/public/json/forgejo.json
generated
@ -34,10 +34,10 @@
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
|
2
frontend/public/json/gatus.json
generated
2
frontend/public/json/gatus.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 3,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/gitea.json
generated
2
frontend/public/json/gitea.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/grafana.json
generated
2
frontend/public/json/grafana.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/jellyfin.json
generated
2
frontend/public/json/jellyfin.json
generated
@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "ubuntu",
|
||||
"version": "22.04"
|
||||
"version": "24.04"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/komodo.json
generated
2
frontend/public/json/komodo.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 10,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/mariadb.json
generated
2
frontend/public/json/mariadb.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
35
frontend/public/json/metube.json
generated
Normal file
35
frontend/public/json/metube.json
generated
Normal 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": []
|
||||
}
|
@ -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": []
|
||||
}
|
2
frontend/public/json/nextcloudpi.json
generated
2
frontend/public/json/nextcloudpi.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 2,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/node-red.json
generated
2
frontend/public/json/node-red.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
4
frontend/public/json/npmplus.json
generated
4
frontend/public/json/npmplus.json
generated
@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 3,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -34,7 +34,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 3,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
40
frontend/public/json/onlyoffice.json
generated
Normal file
40
frontend/public/json/onlyoffice.json
generated
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
2
frontend/public/json/plex.json
generated
2
frontend/public/json/plex.json
generated
@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "ubuntu",
|
||||
"version": "22.04"
|
||||
"version": "24.04"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/postgresql.json
generated
2
frontend/public/json/postgresql.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/prometheus.json
generated
2
frontend/public/json/prometheus.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
4
frontend/public/json/rclone.json
generated
4
frontend/public/json/rclone.json
generated
@ -26,7 +26,7 @@
|
||||
"version": "12"
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
"type": "alpine",
|
||||
"script": "ct/alpine-rclone.sh",
|
||||
"resources": {
|
||||
@ -34,7 +34,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/redis.json
generated
2
frontend/public/json/redis.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/shinobi.json
generated
2
frontend/public/json/shinobi.json
generated
@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": "ubuntu",
|
||||
"version": "22.04"
|
||||
"version": "24.04"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/traefik.json
generated
2
frontend/public/json/traefik.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/transmission.json
generated
2
frontend/public/json/transmission.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/ubuntu.json
generated
2
frontend/public/json/ubuntu.json
generated
@ -23,7 +23,7 @@
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "ubuntu",
|
||||
"version": "22.04"
|
||||
"version": "24.04"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
2
frontend/public/json/vaultwarden.json
generated
2
frontend/public/json/vaultwarden.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
66
frontend/public/json/versions.json
generated
66
frontend/public/json/versions.json
generated
@ -1,8 +1,33 @@
|
||||
[
|
||||
{
|
||||
"name": "rcourtman/Pulse",
|
||||
"version": "v3.31.1",
|
||||
"date": "2025-06-23T23:13:13Z"
|
||||
"version": "v3.31.2",
|
||||
"date": "2025-06-24T09:45:34Z"
|
||||
},
|
||||
{
|
||||
"name": "fallenbagel/jellyseerr",
|
||||
"version": "preview-fix-proxy-axios",
|
||||
"date": "2025-06-24T08:50:22Z"
|
||||
},
|
||||
{
|
||||
"name": "arunavo4/gitea-mirror",
|
||||
"version": "v2.18.0",
|
||||
"date": "2025-06-24T08:29:55Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.22.2052",
|
||||
"date": "2025-06-24T05:59:30Z"
|
||||
},
|
||||
{
|
||||
"name": "wazuh/wazuh",
|
||||
"version": "coverity-w26-4.13.0",
|
||||
"date": "2025-06-24T02:02:34Z"
|
||||
},
|
||||
{
|
||||
"name": "evcc-io/evcc",
|
||||
"version": "0.204.4",
|
||||
"date": "2025-06-23T22:21:08Z"
|
||||
},
|
||||
{
|
||||
"name": "meilisearch/meilisearch",
|
||||
@ -14,6 +39,11 @@
|
||||
"version": "RELEASE.2025-06-13T11-33-47Z",
|
||||
"date": "2025-06-23T20:58:42Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.2.5",
|
||||
"date": "2025-05-28T06:49:43Z"
|
||||
},
|
||||
{
|
||||
"name": "esphome/esphome",
|
||||
"version": "2025.6.1",
|
||||
@ -54,11 +84,6 @@
|
||||
"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",
|
||||
@ -119,11 +144,6 @@
|
||||
"version": "v5.37.0",
|
||||
"date": "2025-06-21T14:05:12Z"
|
||||
},
|
||||
{
|
||||
"name": "fallenbagel/jellyseerr",
|
||||
"version": "preview-fix-proxy-auth",
|
||||
"date": "2025-06-21T13:43:58Z"
|
||||
},
|
||||
{
|
||||
"name": "rogerfar/rdt-client",
|
||||
"version": "v2.0.114",
|
||||
@ -137,7 +157,7 @@
|
||||
{
|
||||
"name": "theonedev/onedev",
|
||||
"version": "v11.11.1",
|
||||
"date": "2025-06-21T07:32:15Z"
|
||||
"date": "2025-06-21T09:23:39Z"
|
||||
},
|
||||
{
|
||||
"name": "pocketbase/pocketbase",
|
||||
@ -189,11 +209,6 @@
|
||||
"version": "v4.0.15.2941",
|
||||
"date": "2025-06-20T17:20:54Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.2.5",
|
||||
"date": "2025-05-28T06:49:43Z"
|
||||
},
|
||||
{
|
||||
"name": "bunkerity/bunkerweb",
|
||||
"version": "testing",
|
||||
@ -219,11 +234,6 @@
|
||||
"version": "v12.7.0",
|
||||
"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",
|
||||
"version": "v2.17.1",
|
||||
@ -299,11 +309,6 @@
|
||||
"version": "v11.0.2",
|
||||
"date": "2025-06-18T09:38:19Z"
|
||||
},
|
||||
{
|
||||
"name": "evcc-io/evcc",
|
||||
"version": "0.204.3",
|
||||
"date": "2025-06-18T08:31:58Z"
|
||||
},
|
||||
{
|
||||
"name": "silverbulletmd/silverbullet",
|
||||
"version": "2.0.0-pre3",
|
||||
@ -479,11 +484,6 @@
|
||||
"version": "v3.3.25",
|
||||
"date": "2025-06-14T02:52:44Z"
|
||||
},
|
||||
{
|
||||
"name": "wazuh/wazuh",
|
||||
"version": "coverity-w25-4.13.0",
|
||||
"date": "2025-06-13T13:58:23Z"
|
||||
},
|
||||
{
|
||||
"name": "FlowiseAI/Flowise",
|
||||
"version": "flowise@3.0.2",
|
||||
|
2
frontend/public/json/wireguard.json
generated
2
frontend/public/json/wireguard.json
generated
@ -34,7 +34,7 @@
|
||||
"ram": 256,
|
||||
"hdd": 1,
|
||||
"os": "alpine",
|
||||
"version": "3.21"
|
||||
"version": "3.22"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
96
frontend/public/json/zigbee2mqtt.json
generated
96
frontend/public/json/zigbee2mqtt.json
generated
@ -1,51 +1,51 @@
|
||||
{
|
||||
"name": "Zigbee2MQTT",
|
||||
"slug": "zigbee2mqtt",
|
||||
"categories": [
|
||||
17
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": true,
|
||||
"interface_port": 9442,
|
||||
"documentation": "https://www.zigbee2mqtt.io/guide/getting-started/",
|
||||
"website": "https://www.zigbee2mqtt.io/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zigbee2mqtt.webp",
|
||||
"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.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/zigbee2mqtt.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"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
|
||||
"name": "Zigbee2MQTT",
|
||||
"slug": "zigbee2mqtt",
|
||||
"categories": [
|
||||
17
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": true,
|
||||
"interface_port": 9442,
|
||||
"documentation": "https://www.zigbee2mqtt.io/guide/getting-started/",
|
||||
"website": "https://www.zigbee2mqtt.io/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zigbee2mqtt.webp",
|
||||
"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.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/zigbee2mqtt.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "You can find the post-install guide here: `https://github.com/community-scripts/ProxmoxVE/discussions/410`",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
{
|
||||
"type": "alpine",
|
||||
"script": "ct/alpine-zigbee2mqtt.sh",
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -17,34 +17,34 @@ msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y git
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-pip \
|
||||
python3-venv
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Setup Python3"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Installing ESPHome"
|
||||
mkdir /root/config
|
||||
$STD pip install esphome tornado esptool
|
||||
msg_ok "Installed ESPHome"
|
||||
msg_info "Setting up Virtual Environment"
|
||||
mkdir -p /opt/esphome
|
||||
mkdir -p /root/config
|
||||
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"
|
||||
mkdir -p /root/config
|
||||
cat <<EOF >/etc/systemd/system/esphomeDashboard.service
|
||||
[Unit]
|
||||
Description=ESPHome Dashboard
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/local/bin/esphome dashboard /root/config/
|
||||
ExecStart=/opt/esphome/.venv/bin/esphome dashboard /root/config/
|
||||
Restart=always
|
||||
User=root
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl enable -q --now esphomeDashboard
|
||||
msg_ok "Created Service"
|
||||
|
||||
|
@ -19,7 +19,8 @@ $STD apt-get install -y \
|
||||
rclone \
|
||||
tzdata \
|
||||
ca-certificates \
|
||||
build-essential
|
||||
build-essential \
|
||||
git
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_go
|
||||
@ -32,7 +33,12 @@ curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}
|
||||
tar -xzf "$temp_file"
|
||||
mv GoMFT-"${RELEASE}"/ /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@v${TEMPL_VERSION}
|
||||
cp /opt/gomft/components/file_metadata/search/file_metadata_search_content.templ{,.bak}
|
||||
sed -i -e '/<div id="search-results">/a \ @{' \
|
||||
-e '/^ }$/a \ }' \
|
||||
/opt/gomft/components/file_metadata/search/file_metadata_search_content.templ
|
||||
$STD "$HOME"/go/bin/templ generate
|
||||
$STD go build -o gomft main.go
|
||||
chmod +x /opt/gomft/gomft
|
||||
|
@ -1,8 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck
|
||||
# Co-Author: MickLesk (Canbiz)
|
||||
# Author: MickLesk (Canbiz)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/alexta69/metube
|
||||
|
||||
@ -28,14 +27,7 @@ $STD apt-get install -y --no-install-recommends \
|
||||
ca-certificates
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-pip \
|
||||
python3-venv
|
||||
msg_ok "Setup Python3"
|
||||
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
|
||||
msg_info "Installing MeTube"
|
||||
@ -44,8 +36,13 @@ cd /opt/metube/ui
|
||||
$STD npm install
|
||||
$STD node_modules/.bin/ng build
|
||||
cd /opt/metube
|
||||
$STD pip3 install pipenv
|
||||
$STD pipenv install
|
||||
$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
|
||||
|
||||
mkdir -p /opt/metube_downloads /opt/metube_downloads/.metube /opt/metube_downloads/music /opt/metube_downloads/videos
|
||||
cat <<EOF >/opt/metube/.env
|
||||
DOWNLOAD_DIR=/opt/metube_downloads
|
||||
@ -65,7 +62,7 @@ After=network.target
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/metube
|
||||
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
|
||||
User=root
|
||||
|
||||
|
@ -13,31 +13,60 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Setup MinIO"
|
||||
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
|
||||
FEATURE_RICH_VERSION="2025-04-22T22-12-26Z"
|
||||
|
||||
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
|
||||
useradd -r minio-user -s /sbin/nologin
|
||||
mkdir -p /home/minio-user
|
||||
chown minio-user:minio-user /home/minio-user
|
||||
mkdir -p /data
|
||||
chown minio-user:minio-user /data
|
||||
|
||||
MINIO_ADMIN_USER="minioadmin"
|
||||
MINIO_ADMIN_PASSWORD="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
|
||||
|
||||
cat <<EOF >/etc/default/minio
|
||||
MINIO_ROOT_USER=${MINIO_ADMIN_USER}
|
||||
MINIO_ROOT_PASSWORD=${MINIO_ADMIN_PASSWORD}
|
||||
EOF
|
||||
|
||||
{
|
||||
echo ""
|
||||
echo "MinIO-Credentials"
|
||||
echo "MinIO Credentials"
|
||||
echo "MinIO Admin User: $MINIO_ADMIN_USER"
|
||||
echo "MinIO Admin Password: $MINIO_ADMIN_PASSWORD"
|
||||
} >>~/minio.creds
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
echo "${RELEASE}" >/opt/${APPLICATION,,}_version.txt
|
||||
msg_ok "Setup MinIO"
|
||||
|
||||
msg_info "Creating Service"
|
||||
msg_info "Creating service"
|
||||
cat <<EOF >/etc/systemd/system/minio.service
|
||||
[Unit]
|
||||
Description=MinIO
|
||||
@ -57,8 +86,9 @@ LimitNOFILE=65536
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl enable -q --now minio
|
||||
msg_ok "Created Service"
|
||||
msg_ok "Service created"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
@ -66,4 +96,4 @@ customize
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Cleanup complete"
|
||||
|
103
install/onlyoffice-install.sh
Normal file
103
install/onlyoffice-install.sh
Normal 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"
|
@ -13,16 +13,16 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-pip
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Setup Python3"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Installing Prometheus Proxmox VE Exporter"
|
||||
python3 -m pip install --default-timeout=300 --quiet --root-user-action=ignore prometheus-pve-exporter
|
||||
mkdir -p /opt/prometheus-pve-exporter
|
||||
cd /opt/prometheus-pve-exporter
|
||||
|
||||
$STD uv venv /opt/prometheus-pve-exporter/.venv
|
||||
$STD /opt/prometheus-pve-exporter/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/prometheus-pve-exporter/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/prometheus-pve-exporter/.venv/bin/python -m pip install prometheus-pve-exporter
|
||||
cat <<EOF >/opt/prometheus-pve-exporter/pve.yml
|
||||
default:
|
||||
user: prometheus@pve
|
||||
@ -42,7 +42,7 @@ After=syslog.target network.target
|
||||
User=root
|
||||
Restart=always
|
||||
Type=simple
|
||||
ExecStart=pve_exporter \
|
||||
ExecStart=/opt/prometheus-pve-exporter/.venv/bin/pve_exporter \
|
||||
--config.file=/opt/prometheus-pve-exporter/pve.yml \
|
||||
--web.listen-address=0.0.0.0:9221
|
||||
ExecReload=/bin/kill -HUP \$MAINPID
|
||||
|
@ -747,12 +747,12 @@ function fetch_and_deploy_gh_release() {
|
||||
|
||||
local app_lc=$(echo "${app,,}" | tr -d ' ')
|
||||
local version_file="$HOME/.${app_lc}"
|
||||
local curl_timeout="--connect-timeout 10 --max-time 30"
|
||||
|
||||
local api_timeout="--connect-timeout 5 --max-time 30"
|
||||
local download_timeout="--connect-timeout 15 --max-time 900"
|
||||
|
||||
local current_version=""
|
||||
if [[ -f "$version_file" ]]; then
|
||||
current_version=$(<"$version_file")
|
||||
fi
|
||||
[[ -f "$version_file" ]] && current_version=$(<"$version_file")
|
||||
|
||||
if ! command -v jq &>/dev/null; then
|
||||
$STD apt-get install -y jq &>/dev/null
|
||||
@ -763,11 +763,22 @@ function fetch_and_deploy_gh_release() {
|
||||
local header=()
|
||||
[[ -n "${GITHUB_TOKEN:-}" ]] && header=(-H "Authorization: token $GITHUB_TOKEN")
|
||||
|
||||
local resp http_code
|
||||
resp=$(curl $curl_timeout -fsSL -w "%{http_code}" -o /tmp/gh_rel.json "${header[@]}" "$api_url")
|
||||
local max_retries=3 retry_delay=2 attempt=1 success=false resp http_code
|
||||
|
||||
while ((attempt <= max_retries)); do
|
||||
resp=$(curl $api_timeout -fsSL -w "%{http_code}" -o /tmp/gh_rel.json "${header[@]}" "$api_url") && success=true && break
|
||||
sleep "$retry_delay"
|
||||
((attempt++))
|
||||
done
|
||||
|
||||
if ! $success; then
|
||||
msg_error "Failed to fetch release metadata after $max_retries attempts"
|
||||
return 1
|
||||
fi
|
||||
|
||||
http_code="${resp:(-3)}"
|
||||
[[ "$http_code" != "200" ]] && {
|
||||
msg_error "Failed to fetch release: HTTP $http_code"
|
||||
msg_error "GitHub API returned HTTP $http_code"
|
||||
return 1
|
||||
}
|
||||
|
||||
@ -785,14 +796,14 @@ function fetch_and_deploy_gh_release() {
|
||||
tmpdir=$(mktemp -d) || return 1
|
||||
local filename="" url=""
|
||||
|
||||
msg_info "Setup $app ($version)"
|
||||
msg_info "Fetching GitHub release: $app ($version)"
|
||||
|
||||
if [[ "$mode" == "tarball" || "$mode" == "source" ]]; then
|
||||
url=$(echo "$json" | jq -r '.tarball_url // empty')
|
||||
[[ -z "$url" ]] && url="https://github.com/$repo/archive/refs/tags/v$version.tar.gz"
|
||||
filename="${app_lc}-${version}.tar.gz"
|
||||
|
||||
curl $curl_timeout -fsSL -o "$tmpdir/$filename" "$url" || {
|
||||
curl $download_timeout -fsSL -o "$tmpdir/$filename" "$url" || {
|
||||
msg_error "Download failed: $url"
|
||||
rm -rf "$tmpdir"
|
||||
return 1
|
||||
@ -836,7 +847,7 @@ function fetch_and_deploy_gh_release() {
|
||||
fi
|
||||
|
||||
filename="${url_match##*/}"
|
||||
curl $curl_timeout -fsSL -o "$tmpdir/$filename" "$url_match" || {
|
||||
curl $download_timeout -fsSL -o "$tmpdir/$filename" "$url_match" || {
|
||||
msg_error "Download failed: $url_match"
|
||||
rm -rf "$tmpdir"
|
||||
return 1
|
||||
@ -871,7 +882,7 @@ function fetch_and_deploy_gh_release() {
|
||||
}
|
||||
|
||||
filename="${asset_url##*/}"
|
||||
curl $curl_timeout -fsSL -o "$tmpdir/$filename" "$asset_url" || {
|
||||
curl $download_timeout -fsSL -o "$tmpdir/$filename" "$asset_url" || {
|
||||
msg_error "Download failed: $asset_url"
|
||||
rm -rf "$tmpdir"
|
||||
return 1
|
||||
@ -912,7 +923,7 @@ function fetch_and_deploy_gh_release() {
|
||||
|
||||
filename="${asset_url##*/}"
|
||||
mkdir -p "$target"
|
||||
curl $curl_timeout -fsSL -o "$target/$app" "$asset_url" || {
|
||||
curl $download_timeout -fsSL -o "$target/$app" "$asset_url" || {
|
||||
msg_error "Download failed: $asset_url"
|
||||
rm -rf "$tmpdir"
|
||||
return 1
|
||||
@ -927,7 +938,7 @@ function fetch_and_deploy_gh_release() {
|
||||
fi
|
||||
|
||||
echo "$version" >"$version_file"
|
||||
msg_ok "Setup $app ($version)"
|
||||
msg_ok "Deployed: $app ($version)"
|
||||
rm -rf "$tmpdir"
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user