mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-07-02 03:57:37 +00:00
Compare commits
66 Commits
2025-06-04
...
python_to_
Author | SHA1 | Date | |
---|---|---|---|
8dbd9aa750 | |||
6ade76b9fb | |||
3a7fd878ed | |||
dde3331cfc | |||
6eb3b84073 | |||
729e213d46 | |||
72d0a01382 | |||
3958172e81 | |||
46dadba06a | |||
84e93cd7d0 | |||
0c04d8900b | |||
dbb268ebf6 | |||
1fd87132c3 | |||
7ebfebce74 | |||
9e84828e3e | |||
f0849a43b7 | |||
94a55020e3 | |||
dbfddc2332 | |||
665a47e60b | |||
2664b358c6 | |||
82a0b1ff60 | |||
083810ff5a | |||
c675b23d05 | |||
9ed66d711c | |||
4b5b1a32a5 | |||
1a5fdc0afa | |||
11d6a33da1 | |||
171626edba | |||
591c37cbac | |||
201d2ae93e | |||
e5f2535b6f | |||
3b9160a1aa | |||
00fe49156d | |||
88cae8982f | |||
68b4ff652a | |||
961464e1e2 | |||
581cbae64e | |||
7923132972 | |||
97e8775616 | |||
31006e290a | |||
90e8a73219 | |||
130af1a447 | |||
b080c94add | |||
506ce07bf4 | |||
dbd08c7735 | |||
2cfaaa4cac | |||
2cc17f4028 | |||
cd4a9d4b55 | |||
3b912745e7 | |||
e08247874d | |||
a151d26527 | |||
2da5f5e842 | |||
7e8083f98c | |||
647af55b40 | |||
a8ddfaddf0 | |||
9d9b810480 | |||
3b1a17c5a3 | |||
594dc3c9d5 | |||
a7f4bf2843 | |||
5965a426ff | |||
96511db9ef | |||
128c84a79a | |||
ddb01f602a | |||
44c98dda24 | |||
5551c2757c | |||
246936dfcf |
19
CHANGELOG.md
19
CHANGELOG.md
@ -14,19 +14,6 @@ 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.
|
||||
|
||||
|
||||
## 2025-06-05
|
||||
|
||||
## 2025-06-04
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Pulse: add polkit for sudoless web updates [@rcourtman](https://github.com/rcourtman) ([#4970](https://github.com/community-scripts/ProxmoxVE/pull/4970))
|
||||
- Pulse: add correct Port for URL output [@rcourtman](https://github.com/rcourtman) ([#4951](https://github.com/community-scripts/ProxmoxVE/pull/4951))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- [refactor] Seelf [@tremor021](https://github.com/tremor021) ([#4954](https://github.com/community-scripts/ProxmoxVE/pull/4954))
|
||||
|
||||
## 2025-06-03
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
@ -35,12 +22,6 @@ All LXC instances created using this repository come pre-installed with Midnight
|
||||
|
||||
- Kasm: Swap fix [@omiinaya](https://github.com/omiinaya) ([#4937](https://github.com/community-scripts/ProxmoxVE/pull/4937))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- netbox: correct website URL [@theincrediblenoone](https://github.com/theincrediblenoone) ([#4952](https://github.com/community-scripts/ProxmoxVE/pull/4952))
|
||||
|
||||
## 2025-06-02
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: MickLesk (Canbiz)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -27,6 +27,8 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/seanmorley15/AdventureLog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
msg_info "Stopping Services"
|
||||
@ -43,10 +45,16 @@ function update_script() {
|
||||
mv /opt/adventurelog-backup/backend/server/.env /opt/adventurelog/backend/server/.env
|
||||
mv /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media
|
||||
cd /opt/adventurelog/backend/server
|
||||
$STD pip install --upgrade pip
|
||||
$STD pip install -r requirements.txt
|
||||
$STD python3 manage.py collectstatic --noinput
|
||||
$STD python3 manage.py migrate
|
||||
$STD uv venv --python "$UV_PYTHON_VERSION" .venv
|
||||
if grep -q "ExecStart=.*python3 manage.py runserver" /etc/systemd/system/adventurelog-backend.service; then
|
||||
sed -i "s|ExecStart=.*python3 manage.py runserver|ExecStart=$(pwd)/.venv/bin/python manage.py runserver|" /etc/systemd/system/adventurelog-backend.service
|
||||
systemctl daemon-reload
|
||||
fi
|
||||
|
||||
$STD uv pip install --upgrade pip --python=.venv/bin/python
|
||||
$STD uv pip install -r requirements.txt --python=.venv/bin/python
|
||||
$STD uv run --python=.venv/bin/python python manage.py collectstatic --noinput
|
||||
$STD uv run --python=.venv/bin/python python manage.py migrate
|
||||
|
||||
mv /opt/adventurelog-backup/frontend/.env /opt/adventurelog/frontend/.env
|
||||
cd /opt/adventurelog/frontend
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,29 +20,45 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/archivebox ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop archivebox
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
cd /opt/archivebox/data
|
||||
pip install --upgrade --ignore-installed archivebox
|
||||
sudo -u archivebox archivebox init
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
systemctl start archivebox
|
||||
msg_ok "Started ${APP}"
|
||||
|
||||
msg_ok "Updated Successfully"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/archivebox ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop archivebox
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
cd /opt/archivebox
|
||||
$STD uv venv --python "$UV_PYTHON_VERSION" .venv
|
||||
|
||||
if [[ -f /opt/archivebox/uv.lock ]]; then
|
||||
cp /opt/archivebox/uv.lock /opt/archivebox/data/ || true
|
||||
fi
|
||||
|
||||
cd /opt/archivebox/data
|
||||
$STD ../.venv/bin/uv sync
|
||||
|
||||
msg_info "Running ArchiveBox Setup"
|
||||
sudo -u archivebox ../.venv/bin/playwright install-deps chromium
|
||||
sudo -u archivebox ../.venv/bin/playwright install chromium
|
||||
sudo -u archivebox ../.venv/bin/archivebox init
|
||||
msg_ok "ArchiveBox Updated"
|
||||
|
||||
if grep -q "ExecStart=/usr/local/bin/archivebox" /etc/systemd/system/archivebox.service; then
|
||||
sed -i "s|ExecStart=/usr/local/bin/archivebox|ExecStart=/opt/archivebox/.venv/bin/archivebox|" /etc/systemd/system/archivebox.service
|
||||
systemctl daemon-reload
|
||||
fi
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
systemctl start archivebox
|
||||
msg_ok "Started ${APP}"
|
||||
|
||||
msg_ok "Updated Successfully"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@ -52,4 +68,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}:8000/admin/login${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000/admin/login${CL}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
26
ct/bazarr.sh
26
ct/bazarr.sh
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,18 +20,18 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /var/lib/bazarr/ ]]; then
|
||||
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"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /var/lib/bazarr/ ]]; then
|
||||
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
|
||||
}
|
||||
|
||||
start
|
||||
@ -41,4 +41,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}:6767${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6767${CL}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster) | Co-Author: remz1337
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -135,4 +135,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}:8083${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -74,4 +74,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}:5000${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts
|
||||
# Author: CrazyWolf13
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
@ -4,7 +4,7 @@
|
||||
# Author: tteck (tteckster)
|
||||
# Co-Author: MickLesk
|
||||
# License: MIT
|
||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# https://github.com/community-scripts/ProxmoxVE/raw/python_to_uv/LICENSE
|
||||
|
||||
# This sets verbose mode if the global variable is set to "yes"
|
||||
# if [ "$VERBOSE" == "yes" ]; then set -x; fi
|
||||
|
26
ct/deluge.sh
26
ct/deluge.sh
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,18 +20,18 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/systemd/system/deluged.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating $APP LXC"
|
||||
$STD apt-get update
|
||||
pip3 install deluge[all] --upgrade
|
||||
msg_ok "Updated $APP LXC"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/systemd/system/deluged.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating $APP LXC"
|
||||
$STD apt-get update
|
||||
pip3 install deluge[all] --upgrade
|
||||
msg_ok "Updated $APP LXC"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@ -41,4 +41,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}:8112${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8112${CL}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -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}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Source: https://github.com/gristlabs/grist-core
|
||||
|
||||
APP="Grist"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
76
ct/homer.sh
76
ct/homer.sh
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,44 +20,44 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/homer ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop homer
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
msg_info "Backing up assets directory"
|
||||
cd ~
|
||||
mkdir -p assets-backup
|
||||
cp -R /opt/homer/assets/. assets-backup
|
||||
msg_ok "Backed up assets directory"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
rm -rf /opt/homer/*
|
||||
cd /opt/homer
|
||||
curl -fsSL "https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip" -o $(basename "https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip")
|
||||
$STD unzip homer.zip
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Restoring assets directory"
|
||||
cd ~
|
||||
cp -Rf assets-backup/. /opt/homer/assets/
|
||||
msg_ok "Restored assets directory"
|
||||
|
||||
msg_info "Cleaning"
|
||||
rm -rf assets-backup /opt/homer/homer.zip
|
||||
msg_ok "Cleaned"
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
systemctl start homer
|
||||
msg_ok "Started ${APP}"
|
||||
msg_ok "Updated Successfully"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/homer ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop homer
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
msg_info "Backing up assets directory"
|
||||
cd ~
|
||||
mkdir -p assets-backup
|
||||
cp -R /opt/homer/assets/. assets-backup
|
||||
msg_ok "Backed up assets directory"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
rm -rf /opt/homer/*
|
||||
cd /opt/homer
|
||||
curl -fsSL "https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip" -o $(basename "https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip")
|
||||
$STD unzip homer.zip
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Restoring assets directory"
|
||||
cd ~
|
||||
cp -Rf assets-backup/. /opt/homer/assets/
|
||||
msg_ok "Restored assets directory"
|
||||
|
||||
msg_info "Cleaning"
|
||||
rm -rf assets-backup /opt/homer/homer.zip
|
||||
msg_ok "Cleaned"
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
systemctl start homer
|
||||
msg_ok "Started ${APP}"
|
||||
msg_ok "Updated Successfully"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
22
ct/immich.sh
22
ct/immich.sh
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: vhsdream
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -27,6 +27,9 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
setup_uv
|
||||
|
||||
STAGING_DIR=/opt/staging
|
||||
BASE_DIR=${STAGING_DIR}/base-images
|
||||
SOURCE_DIR=${STAGING_DIR}/image-source
|
||||
@ -251,23 +254,16 @@ EOF
|
||||
msg_ok "Updated ${APP} web and microservices"
|
||||
|
||||
cd "$SRC_DIR"/machine-learning
|
||||
$STD python3 -m venv "$ML_DIR"/ml-venv
|
||||
export VIRTUAL_ENV="${ML_DIR}/ml-venv"
|
||||
$STD uv venv "$VIRTUAL_ENV"
|
||||
if [[ -f ~/.openvino ]]; then
|
||||
msg_info "Updating HW-accelerated machine-learning"
|
||||
(
|
||||
source "$ML_DIR"/ml-venv/bin/activate
|
||||
$STD pip3 install -U uv
|
||||
uv -q sync --extra openvino --no-cache --active
|
||||
)
|
||||
patchelf --clear-execstack "$ML_DIR"/ml-venv/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so
|
||||
uv -q sync --extra openvino --no-cache --active
|
||||
patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so"
|
||||
msg_ok "Updated HW-accelerated machine-learning"
|
||||
else
|
||||
msg_info "Updating machine-learning"
|
||||
(
|
||||
source "$ML_DIR"/ml-venv/bin/activate
|
||||
$STD pip3 install -U uv
|
||||
uv -q sync --extra cpu --no-cache --active
|
||||
)
|
||||
uv -q sync --extra cpu --no-cache --active
|
||||
msg_ok "Updated machine-learning"
|
||||
fi
|
||||
cd "$SRC_DIR"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Dave-code-creater (Tan Dat, Ta)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,16 +20,16 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y upgrade
|
||||
$STD pip3 install jupyter --upgrade
|
||||
msg_ok "Updated Successfully"
|
||||
exit
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y upgrade
|
||||
$STD pip3 install jupyter --upgrade
|
||||
msg_ok "Updated Successfully"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@ -39,4 +39,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}:8888${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8888${CL}"
|
||||
|
90
ct/kometa.sh
90
ct/kometa.sh
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,51 +20,51 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -f "/opt/kometa/kometa.py" ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ "${RELEASE}" != "$(cat /opt/kometa_version.txt)" ]] || [[ ! -f /opt/kometa_version.txt ]]; then
|
||||
msg_info "Updating $APP"
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop kometa
|
||||
msg_ok "Stopped $APP"
|
||||
|
||||
msg_info "Updating $APP to ${RELEASE}"
|
||||
cd /tmp
|
||||
temp_file=$(mktemp)
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
curl -fsSL "https://github.com/Kometa-Team/Kometa/archive/refs/tags/v${RELEASE}.tar.gz" -o ""$temp_file""
|
||||
tar -xzf "$temp_file"
|
||||
cp /opt/kometa/config/config.yml /opt
|
||||
rm -rf /opt/kometa
|
||||
mv Kometa-${RELEASE} /opt/kometa
|
||||
cd /opt/kometa
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
$STD pip install -r requirements.txt --ignore-installed
|
||||
mkdir -p config/assets
|
||||
cp /opt/config.yml config/config.yml
|
||||
echo "${RELEASE}" >/opt/kometa_version.txt
|
||||
msg_ok "Updated $APP to ${RELEASE}"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
systemctl start kometa
|
||||
msg_ok "Started $APP"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -f $temp_file
|
||||
msg_ok "Cleanup Completed"
|
||||
|
||||
msg_ok "Update Successful"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
if [[ ! -f "/opt/kometa/kometa.py" ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ "${RELEASE}" != "$(cat /opt/kometa_version.txt)" ]] || [[ ! -f /opt/kometa_version.txt ]]; then
|
||||
msg_info "Updating $APP"
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop kometa
|
||||
msg_ok "Stopped $APP"
|
||||
|
||||
msg_info "Updating $APP to ${RELEASE}"
|
||||
cd /tmp
|
||||
temp_file=$(mktemp)
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
curl -fsSL "https://github.com/Kometa-Team/Kometa/archive/refs/tags/v${RELEASE}.tar.gz" -o ""$temp_file""
|
||||
tar -xzf "$temp_file"
|
||||
cp /opt/kometa/config/config.yml /opt
|
||||
rm -rf /opt/kometa
|
||||
mv Kometa-${RELEASE} /opt/kometa
|
||||
cd /opt/kometa
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
$STD pip install -r requirements.txt --ignore-installed
|
||||
mkdir -p config/assets
|
||||
cp /opt/config.yml config/config.yml
|
||||
echo "${RELEASE}" >/opt/kometa_version.txt
|
||||
msg_ok "Updated $APP to ${RELEASE}"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
systemctl start kometa
|
||||
msg_ok "Started $APP"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -f $temp_file
|
||||
msg_ok "Cleanup Completed"
|
||||
|
||||
msg_ok "Update Successful"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@ -74,4 +74,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access the LXC at following IP address:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}${CL}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck | Co-Author: MountyMapleSyrup (MountyMapleSyrup)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,27 +20,27 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/LazyLibrarian/ ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Stopping LazyLibrarian"
|
||||
systemctl stop lazylibrarian
|
||||
msg_ok "LazyLibrarian Stopped"
|
||||
|
||||
msg_info "Updating $APP LXC"
|
||||
$STD git -C /opt/LazyLibrarian pull origin master
|
||||
msg_ok "Updated $APP LXC"
|
||||
|
||||
msg_info "Starting LazyLibrarian"
|
||||
systemctl start lazylibrarian
|
||||
msg_ok "Started LazyLibrarian"
|
||||
|
||||
msg_ok "Updated Successfully"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/LazyLibrarian/ ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Stopping LazyLibrarian"
|
||||
systemctl stop lazylibrarian
|
||||
msg_ok "LazyLibrarian Stopped"
|
||||
|
||||
msg_info "Updating $APP LXC"
|
||||
$STD git -C /opt/LazyLibrarian pull origin master
|
||||
msg_ok "Updated $APP LXC"
|
||||
|
||||
msg_info "Starting LazyLibrarian"
|
||||
systemctl start lazylibrarian
|
||||
msg_ok "Started LazyLibrarian"
|
||||
|
||||
msg_ok "Updated Successfully"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@ -50,4 +50,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}:5299${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5299${CL}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -53,4 +53,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}"
|
||||
|
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}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,17 +20,17 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/systemd/system/motioneye.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD pip install motioneye --upgrade
|
||||
msg_ok "Updated Successfully"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/systemd/system/motioneye.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD pip install motioneye --upgrade
|
||||
msg_ok "Updated Successfully"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@ -40,4 +40,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}:8765${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8765${CL}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: davalanche
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -29,7 +29,7 @@ function update_script() {
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
msg_info "Updating ${APP} to ${RELEASE}"
|
||||
rm -rf /opt/mylar3/* /opt/mylar3/.*
|
||||
curl -fsSL "https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz" | tar -xz --strip-components=1 -C /opt/mylar3
|
||||
curl -fsSL "https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz" | tar -xz --strip-components=1 -C /opt/mylar3
|
||||
systemctl restart mylar3
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||
@ -46,4 +46,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}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: bvdberg01
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,27 +20,27 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/octoprint ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Stopping OctoPrint"
|
||||
systemctl stop octoprint
|
||||
msg_ok "Stopped OctoPrint"
|
||||
|
||||
msg_info "Updating OctoPrint"
|
||||
source /opt/octoprint/bin/activate
|
||||
$STD pip3 install octoprint --upgrade
|
||||
msg_ok "Updated OctoPrint"
|
||||
|
||||
msg_info "Starting OctoPrint"
|
||||
systemctl start octoprint
|
||||
msg_ok "Started OctoPrint"
|
||||
msg_ok "Updated Successfully"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/octoprint ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Stopping OctoPrint"
|
||||
systemctl stop octoprint
|
||||
msg_ok "Stopped OctoPrint"
|
||||
|
||||
msg_info "Updating OctoPrint"
|
||||
source /opt/octoprint/bin/activate
|
||||
$STD pip3 install octoprint --upgrade
|
||||
msg_ok "Updated OctoPrint"
|
||||
|
||||
msg_info "Starting OctoPrint"
|
||||
systemctl start octoprint
|
||||
msg_ok "Started OctoPrint"
|
||||
msg_ok "Updated Successfully"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@ -50,4 +50,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}:5000${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: havardthom
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,16 +20,16 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/pialert ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
bash -c "$(curl -fsSL https://github.com/leiweibau/Pi.Alert/raw/main/install/pialert_update.sh)" -s --lxc
|
||||
msg_ok "Updated $APP"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/pialert ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
bash -c "$(curl -fsSL https://github.com/leiweibau/Pi.Alert/raw/main/install/pialert_update.sh)" -s --lxc
|
||||
msg_ok "Updated $APP"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Andy Grunwald (andygrunwald)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -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}"
|
||||
|
@ -67,4 +67,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}:7655${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}(:your_port)${CL}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: tremor021
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,25 +20,25 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/radicale ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
python3 -m venv /opt/radicale
|
||||
source /opt/radicale/bin/activate
|
||||
python3 -m pip install --upgrade https://github.com/Kozea/Radicale/archive/master.tar.gz
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl enable -q --now radicale
|
||||
msg_ok "Started Service"
|
||||
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/radicale ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
python3 -m venv /opt/radicale
|
||||
source /opt/radicale/bin/activate
|
||||
python3 -m pip install --upgrade https://github.com/Kozea/Radicale/archive/master.tar.gz
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl enable -q --now radicale
|
||||
msg_ok "Started Service"
|
||||
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@ -48,4 +48,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}:5232${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5232${CL}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster) | Co-Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,44 +20,44 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/sabnzbd ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
setup_uv
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
if [[ -f /opt/${APP}_version.txt ]] && [[ "${RELEASE}" == "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating $APP to ${RELEASE}"
|
||||
systemctl stop sabnzbd
|
||||
cp -r /opt/sabnzbd /opt/sabnzbd_backup_$(date +%s)
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://github.com/sabnzbd/sabnzbd/releases/download/${RELEASE}/SABnzbd-${RELEASE}-src.tar.gz" -o "$temp_file"
|
||||
tar -xzf "$temp_file" -C /opt/sabnzbd --strip-components=1
|
||||
rm -f "$temp_file"
|
||||
if [[ ! -d /opt/sabnzbd/venv ]]; then
|
||||
msg_info "Migrating SABnzbd to uv virtual environment"
|
||||
$STD uv venv /opt/sabnzbd/venv
|
||||
msg_ok "Created uv venv at /opt/sabnzbd/venv"
|
||||
|
||||
if grep -q "ExecStart=python3 SABnzbd.py" /etc/systemd/system/sabnzbd.service; then
|
||||
sed -i "s|ExecStart=python3 SABnzbd.py|ExecStart=/opt/sabnzbd/venv/bin/python SABnzbd.py|" /etc/systemd/system/sabnzbd.service
|
||||
systemctl daemon-reload
|
||||
msg_ok "Updated SABnzbd service to use uv venv"
|
||||
fi
|
||||
fi
|
||||
$STD uv pip install --upgrade pip --python=/opt/sabnzbd/venv/bin/python
|
||||
$STD uv pip install -r /opt/sabnzbd/requirements.txt --python=/opt/sabnzbd/venv/bin/python
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
systemctl start sabnzbd
|
||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||
if [[ ! -d /opt/sabnzbd ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
setup_uv
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
if [[ -f /opt/${APP}_version.txt ]] && [[ "${RELEASE}" == "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating $APP to ${RELEASE}"
|
||||
systemctl stop sabnzbd
|
||||
cp -r /opt/sabnzbd /opt/sabnzbd_backup_$(date +%s)
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://github.com/sabnzbd/sabnzbd/releases/download/${RELEASE}/SABnzbd-${RELEASE}-src.tar.gz" -o "$temp_file"
|
||||
tar -xzf "$temp_file" -C /opt/sabnzbd --strip-components=1
|
||||
rm -f "$temp_file"
|
||||
if [[ ! -d /opt/sabnzbd/venv ]]; then
|
||||
msg_info "Migrating SABnzbd to uv virtual environment"
|
||||
$STD uv venv /opt/sabnzbd/venv
|
||||
msg_ok "Created uv venv at /opt/sabnzbd/venv"
|
||||
|
||||
if grep -q "ExecStart=python3 SABnzbd.py" /etc/systemd/system/sabnzbd.service; then
|
||||
sed -i "s|ExecStart=python3 SABnzbd.py|ExecStart=/opt/sabnzbd/venv/bin/python SABnzbd.py|" /etc/systemd/system/sabnzbd.service
|
||||
systemctl daemon-reload
|
||||
msg_ok "Updated SABnzbd service to use uv venv"
|
||||
fi
|
||||
fi
|
||||
$STD uv pip install --upgrade pip --python=/opt/sabnzbd/venv/bin/python
|
||||
$STD uv pip install -r /opt/sabnzbd/requirements.txt --python=/opt/sabnzbd/venv/bin/python
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
systemctl start sabnzbd
|
||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@ -68,4 +68,3 @@ 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}:7777${CL}"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: MickLesk (Canbiz)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
66
ct/seelf.sh
66
ct/seelf.sh
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# Author: tremor021
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/YuukanOO/seelf
|
||||
|
||||
@ -20,31 +20,49 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/seelf ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
if [[ ! -d /opt/seelf ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/YuukanOO/seelf/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||
msg_info "Updating $APP"
|
||||
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop seelf
|
||||
msg_ok "Stopped $APP"
|
||||
|
||||
msg_info "Updating $APP to v${RELEASE}. Patience"
|
||||
export PATH=$PATH:/usr/local/go/bin
|
||||
source ~/.bashrc
|
||||
curl -fsSL "https://github.com/YuukanOO/seelf/archive/refs/tags/v${RELEASE}.tar.gz" -o $(basename "https://github.com/YuukanOO/seelf/archive/refs/tags/v${RELEASE}.tar.gz")
|
||||
tar -xzf v${RELEASE}.tar.gz
|
||||
cp -r seelf-${RELEASE}/ /opt/seelf
|
||||
cd /opt/seelf
|
||||
$STD make build
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
systemctl start seelf
|
||||
msg_ok "Started $APP"
|
||||
|
||||
# Cleaning up
|
||||
msg_info "Cleaning Up"
|
||||
rm -f ~/*.tar.gz
|
||||
rm -rf ~/seelf-${RELEASE}
|
||||
msg_ok "Cleanup Completed"
|
||||
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Update Successful"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
fi
|
||||
if fetch_and_deploy_gh_release "YuukanOO/seelf"; then
|
||||
msg_ok "$APP already at the latest version. No update required."
|
||||
else
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop seelf
|
||||
msg_ok "Stopped $APP"
|
||||
|
||||
msg_info "Updating $APP"
|
||||
cd /opt/seelf
|
||||
$STD make build
|
||||
msg_ok "Updated $APP"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
systemctl start seelf
|
||||
msg_ok "Started $APP"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: vhsdream
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: MickLesk (Canbiz)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: MickLesk (Canbiz)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,43 +20,43 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/tasmocompiler ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/benzino77/tasmocompiler/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop tasmocompiler
|
||||
msg_ok "Stopped $APP"
|
||||
msg_info "Updating $APP to v${RELEASE}"
|
||||
cd /opt
|
||||
rm -rf /opt/tasmocompiler
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/benzino77/tasmocompiler/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
curl -fsSL "https://github.com/benzino77/tasmocompiler/archive/refs/tags/v${RELEASE}.tar.gz" -o $(basename "https://github.com/benzino77/tasmocompiler/archive/refs/tags/v${RELEASE}.tar.gz")
|
||||
tar xzf v${RELEASE}.tar.gz
|
||||
mv tasmocompiler-${RELEASE}/ /opt/tasmocompiler/
|
||||
cd /opt/tasmocompiler
|
||||
$STD yarn install
|
||||
export NODE_OPTIONS=--openssl-legacy-provider
|
||||
$STD npm i
|
||||
$STD yarn build
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
msg_info "Starting $APP"
|
||||
systemctl start tasmocompiler
|
||||
msg_ok "Started $APP"
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_info "Cleaning up"
|
||||
rm -r "/opt/v${RELEASE}.tar.gz"
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Update Successful"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
fi
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/tasmocompiler ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/benzino77/tasmocompiler/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop tasmocompiler
|
||||
msg_ok "Stopped $APP"
|
||||
msg_info "Updating $APP to v${RELEASE}"
|
||||
cd /opt
|
||||
rm -rf /opt/tasmocompiler
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/benzino77/tasmocompiler/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
curl -fsSL "https://github.com/benzino77/tasmocompiler/archive/refs/tags/v${RELEASE}.tar.gz" -o $(basename "https://github.com/benzino77/tasmocompiler/archive/refs/tags/v${RELEASE}.tar.gz")
|
||||
tar xzf v${RELEASE}.tar.gz
|
||||
mv tasmocompiler-${RELEASE}/ /opt/tasmocompiler/
|
||||
cd /opt/tasmocompiler
|
||||
$STD yarn install
|
||||
export NODE_OPTIONS=--openssl-legacy-provider
|
||||
$STD npm i
|
||||
$STD yarn build
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
msg_info "Starting $APP"
|
||||
systemctl start tasmocompiler
|
||||
msg_ok "Started $APP"
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_info "Cleaning up"
|
||||
rm -r "/opt/v${RELEASE}.tar.gz"
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Update Successful"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,18 +20,18 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/Tautulli/ ]]; then
|
||||
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"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/Tautulli/ ]]; then
|
||||
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
|
||||
}
|
||||
|
||||
start
|
||||
@ -41,4 +41,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}:8181${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8181${CL}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: MickLesk (Canbiz)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -26,9 +26,6 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
if ! command -v jq &>/dev/null; then
|
||||
$STD apt-get install -y jq
|
||||
fi
|
||||
if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "22" ]]; then
|
||||
msg_info "Installing Node.js 22"
|
||||
$STD apt-get purge -y nodejs
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -41,4 +41,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}:8888${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8888${CL}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: CrazyWolf13
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@ -20,15 +20,15 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/web-check ]]; 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/web-check ]]; 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}:3000${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
@ -10,7 +10,7 @@
|
||||
"privileged": false,
|
||||
"interface_port": 443,
|
||||
"documentation": "https://netboxlabs.com/docs/netbox/en/stable/",
|
||||
"website": "https://netboxlabs.com/products/netbox/",
|
||||
"website": "https://netboxlabs.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/netbox.webp",
|
||||
"config_path": "/opt/netbox/netbox/netbox/configuration.py",
|
||||
"description": "NetBox is the source of truth for everything on your network, from physical components like power systems and cabling to virtual assets like IP addresses and VLANs. Network automation and observability tools depend on NetBox’s authoritative data to roll out configurations, monitor changes, and accelerate operations across the enterprise",
|
||||
|
@ -1,184 +1,44 @@
|
||||
[
|
||||
{
|
||||
"name": "actualbudget/actual",
|
||||
"version": "v25.6.1",
|
||||
"date": "2025-06-04T22:24:31Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.21.9",
|
||||
"date": "2025-06-04T19:17:58Z"
|
||||
},
|
||||
{
|
||||
"name": "rabbitmq/rabbitmq-server",
|
||||
"version": "v4.1.1",
|
||||
"date": "2025-06-04T19:10:05Z"
|
||||
},
|
||||
{
|
||||
"name": "FlareSolverr/FlareSolverr",
|
||||
"version": "v3.3.24",
|
||||
"date": "2025-06-04T18:02:30Z"
|
||||
},
|
||||
{
|
||||
"name": "firefly-iii/firefly-iii",
|
||||
"version": "v6.2.16",
|
||||
"date": "2025-05-27T16:27:42Z"
|
||||
},
|
||||
{
|
||||
"name": "cockpit-project/cockpit",
|
||||
"version": "340",
|
||||
"date": "2025-06-04T16:41:44Z"
|
||||
},
|
||||
{
|
||||
"name": "donaldzou/WGDashboard",
|
||||
"version": "v4.2.3",
|
||||
"date": "2025-05-07T15:35:04Z"
|
||||
},
|
||||
{
|
||||
"name": "openobserve/openobserve",
|
||||
"version": "v0.15.0-rc1",
|
||||
"date": "2025-06-04T15:12:56Z"
|
||||
},
|
||||
{
|
||||
"name": "theonedev/onedev",
|
||||
"version": "v11.10.0",
|
||||
"date": "2025-06-04T14:29:05Z"
|
||||
},
|
||||
{
|
||||
"name": "goauthentik/authentik",
|
||||
"version": "version/2025.6.0",
|
||||
"date": "2025-06-04T14:26:01Z"
|
||||
},
|
||||
{
|
||||
"name": "crowdsecurity/crowdsec",
|
||||
"version": "v1.6.8",
|
||||
"date": "2025-03-25T13:33:10Z"
|
||||
},
|
||||
{
|
||||
"name": "MariaDB/server",
|
||||
"version": "mariadb-11.8.2",
|
||||
"date": "2025-06-04T13:35:16Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@1.95.3",
|
||||
"date": "2025-06-03T11:09:42Z"
|
||||
},
|
||||
{
|
||||
"name": "Graylog2/graylog2-server",
|
||||
"version": "6.1.12",
|
||||
"date": "2025-06-04T12:48:55Z"
|
||||
},
|
||||
{
|
||||
"name": "Checkmk/checkmk",
|
||||
"version": "v2.4.0p3-rc1",
|
||||
"date": "2025-06-04T11:32:09Z"
|
||||
},
|
||||
{
|
||||
"name": "Prowlarr/Prowlarr",
|
||||
"version": "v1.37.0.5076",
|
||||
"date": "2025-06-04T11:04:53Z"
|
||||
},
|
||||
{
|
||||
"name": "nzbgetcom/nzbget",
|
||||
"version": "v25.0",
|
||||
"date": "2025-05-12T09:12:04Z"
|
||||
},
|
||||
{
|
||||
"name": "zabbix/zabbix",
|
||||
"version": "7.4.0rc1",
|
||||
"date": "2025-06-04T09:06:57Z"
|
||||
},
|
||||
{
|
||||
"name": "home-assistant/core",
|
||||
"version": "2025.5.3",
|
||||
"date": "2025-05-23T15:10:33Z"
|
||||
},
|
||||
{
|
||||
"name": "glpi-project/glpi",
|
||||
"version": "10.0.18",
|
||||
"date": "2025-02-12T11:07:02Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.22.1987",
|
||||
"date": "2025-06-04T06:23:49Z"
|
||||
},
|
||||
{
|
||||
"name": "mattermost/mattermost",
|
||||
"version": "server/public/v0.1.14",
|
||||
"date": "2025-05-29T15:35:16Z"
|
||||
},
|
||||
{
|
||||
"name": "louislam/uptime-kuma",
|
||||
"version": "2.0.0-beta.2-temp",
|
||||
"date": "2025-03-28T08:45:58Z"
|
||||
},
|
||||
{
|
||||
"name": "webmin/webmin",
|
||||
"version": "2.401",
|
||||
"date": "2025-06-04T02:53:03Z"
|
||||
},
|
||||
{
|
||||
"name": "coder/code-server",
|
||||
"version": "v4.100.3",
|
||||
"date": "2025-06-03T21:06:41Z"
|
||||
},
|
||||
{
|
||||
"name": "pocket-id/pocket-id",
|
||||
"version": "v1.2.0",
|
||||
"date": "2025-06-03T20:42:28Z"
|
||||
},
|
||||
{
|
||||
"name": "runtipi/runtipi",
|
||||
"version": "v4.2.1",
|
||||
"date": "2025-06-03T20:04:28Z"
|
||||
},
|
||||
{
|
||||
"name": "jenkinsci/jenkins",
|
||||
"version": "jenkins-2.513",
|
||||
"date": "2025-06-03T17:53:03Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.2.5",
|
||||
"date": "2025-05-28T06:49:43Z"
|
||||
},
|
||||
{
|
||||
"name": "dgtlmoon/changedetection.io",
|
||||
"version": "0.50.2",
|
||||
"date": "2025-06-03T14:29:07Z"
|
||||
},
|
||||
{
|
||||
"name": "element-hq/synapse",
|
||||
"version": "v1.131.0",
|
||||
"date": "2025-06-03T14:13:00Z"
|
||||
},
|
||||
{
|
||||
"name": "zitadel/zitadel",
|
||||
"version": "v2.71.12",
|
||||
"date": "2025-06-03T14:11:41Z"
|
||||
},
|
||||
{
|
||||
"name": "influxdata/influxdb",
|
||||
"version": "v1.12.1rc3",
|
||||
"date": "2025-06-03T14:05:52Z"
|
||||
},
|
||||
{
|
||||
"name": "Pf2eToolsOrg/Pf2eTools",
|
||||
"version": "v0.9.0",
|
||||
"date": "2025-06-03T11:49:40Z"
|
||||
},
|
||||
{
|
||||
"name": "esphome/esphome",
|
||||
"version": "2025.5.2",
|
||||
"date": "2025-06-03T08:45:14Z"
|
||||
},
|
||||
{
|
||||
"name": "Checkmk/checkmk",
|
||||
"version": "v2.2.0p43-rc4",
|
||||
"date": "2025-06-03T06:59:25Z"
|
||||
},
|
||||
{
|
||||
"name": "openobserve/openobserve",
|
||||
"version": "v0.0.1-dev",
|
||||
"date": "2025-06-03T06:50:25Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.22.1984",
|
||||
"date": "2025-06-03T06:09:13Z"
|
||||
},
|
||||
{
|
||||
"name": "FlareSolverr/FlareSolverr",
|
||||
"version": "v3.3.22",
|
||||
"date": "2025-06-03T04:54:48Z"
|
||||
},
|
||||
{
|
||||
"name": "FreshRSS/FreshRSS",
|
||||
"version": "1.26.3",
|
||||
"date": "2025-06-02T22:00:14Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.2.5",
|
||||
"date": "2025-05-28T06:49:43Z"
|
||||
},
|
||||
{
|
||||
"name": "TandoorRecipes/recipes",
|
||||
"version": "2.0.0-alpha-4",
|
||||
@ -204,6 +64,16 @@
|
||||
"version": "v8.1.15",
|
||||
"date": "2025-06-02T17:38:24Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.21.6",
|
||||
"date": "2025-06-02T17:12:58Z"
|
||||
},
|
||||
{
|
||||
"name": "mattermost/mattermost",
|
||||
"version": "server/public/v0.1.14",
|
||||
"date": "2025-05-29T15:35:16Z"
|
||||
},
|
||||
{
|
||||
"name": "NodeBB/NodeBB",
|
||||
"version": "v4.4.2",
|
||||
@ -211,14 +81,29 @@
|
||||
},
|
||||
{
|
||||
"name": "wazuh/wazuh",
|
||||
"version": "coverity-w23-4.13.0",
|
||||
"date": "2025-05-30T15:39:11Z"
|
||||
"version": "coverity-w22-4.13.0",
|
||||
"date": "2025-05-26T15:04:48Z"
|
||||
},
|
||||
{
|
||||
"name": "inventree/InvenTree",
|
||||
"version": "0.17.13",
|
||||
"date": "2025-06-02T12:44:20Z"
|
||||
},
|
||||
{
|
||||
"name": "Graylog2/graylog2-server",
|
||||
"version": "6.3.0-beta.4",
|
||||
"date": "2025-06-02T11:21:42Z"
|
||||
},
|
||||
{
|
||||
"name": "zitadel/zitadel",
|
||||
"version": "v2.68.11",
|
||||
"date": "2025-06-02T09:32:57Z"
|
||||
},
|
||||
{
|
||||
"name": "firefly-iii/firefly-iii",
|
||||
"version": "v6.2.16",
|
||||
"date": "2025-05-27T16:27:42Z"
|
||||
},
|
||||
{
|
||||
"name": "usememos/memos",
|
||||
"version": "v0.24.4",
|
||||
@ -259,6 +144,11 @@
|
||||
"version": "2025.6.1",
|
||||
"date": "2025-06-01T12:31:14Z"
|
||||
},
|
||||
{
|
||||
"name": "runtipi/runtipi",
|
||||
"version": "v4.2.0",
|
||||
"date": "2025-06-01T12:31:14Z"
|
||||
},
|
||||
{
|
||||
"name": "evcc-io/evcc",
|
||||
"version": "0.204.1",
|
||||
@ -269,6 +159,11 @@
|
||||
"version": "v5.25.0.10024",
|
||||
"date": "2025-05-26T21:58:37Z"
|
||||
},
|
||||
{
|
||||
"name": "home-assistant/core",
|
||||
"version": "2025.5.3",
|
||||
"date": "2025-05-23T15:10:33Z"
|
||||
},
|
||||
{
|
||||
"name": "kimai/kimai",
|
||||
"version": "2.35.1",
|
||||
@ -294,6 +189,11 @@
|
||||
"version": "v0.14.1",
|
||||
"date": "2024-08-29T22:32:51Z"
|
||||
},
|
||||
{
|
||||
"name": "goauthentik/authentik",
|
||||
"version": "version/2025.4.1",
|
||||
"date": "2025-05-15T17:48:29Z"
|
||||
},
|
||||
{
|
||||
"name": "moghtech/komodo",
|
||||
"version": "v1.18.0",
|
||||
@ -309,11 +209,21 @@
|
||||
"version": "e5.10.0-beta.1",
|
||||
"date": "2025-05-30T16:49:17Z"
|
||||
},
|
||||
{
|
||||
"name": "element-hq/synapse",
|
||||
"version": "test-pro",
|
||||
"date": "2025-05-30T14:53:00Z"
|
||||
},
|
||||
{
|
||||
"name": "icereed/paperless-gpt",
|
||||
"version": "v0.20.0",
|
||||
"date": "2025-05-30T14:39:51Z"
|
||||
},
|
||||
{
|
||||
"name": "nzbgetcom/nzbget",
|
||||
"version": "v25.0",
|
||||
"date": "2025-05-12T09:12:04Z"
|
||||
},
|
||||
{
|
||||
"name": "binwiederhier/ntfy",
|
||||
"version": "v2.12.0",
|
||||
@ -334,6 +244,11 @@
|
||||
"version": "v0.56.1",
|
||||
"date": "2025-05-29T19:09:16Z"
|
||||
},
|
||||
{
|
||||
"name": "influxdata/influxdb",
|
||||
"version": "v2.7.12",
|
||||
"date": "2025-05-29T17:08:26Z"
|
||||
},
|
||||
{
|
||||
"name": "HabitRPG/habitica",
|
||||
"version": "v5.36.5",
|
||||
@ -364,6 +279,11 @@
|
||||
"version": "v0.9.0",
|
||||
"date": "2025-05-29T05:41:01Z"
|
||||
},
|
||||
{
|
||||
"name": "webmin/webmin",
|
||||
"version": "2.400",
|
||||
"date": "2025-05-28T22:36:05Z"
|
||||
},
|
||||
{
|
||||
"name": "apache/cassandra",
|
||||
"version": "cassandra-4.0.18",
|
||||
@ -374,6 +294,16 @@
|
||||
"version": "r6.0.24",
|
||||
"date": "2025-05-28T21:25:03Z"
|
||||
},
|
||||
{
|
||||
"name": "jenkinsci/jenkins",
|
||||
"version": "jenkins-2.504.2",
|
||||
"date": "2025-05-28T14:36:54Z"
|
||||
},
|
||||
{
|
||||
"name": "pocket-id/pocket-id",
|
||||
"version": "v1.1.0",
|
||||
"date": "2025-05-28T09:39:00Z"
|
||||
},
|
||||
{
|
||||
"name": "Athou/commafeed",
|
||||
"version": "5.10.0",
|
||||
@ -429,6 +359,11 @@
|
||||
"version": "1.34.1",
|
||||
"date": "2025-05-26T21:40:54Z"
|
||||
},
|
||||
{
|
||||
"name": "dgtlmoon/changedetection.io",
|
||||
"version": "0.49.18",
|
||||
"date": "2025-05-26T18:36:33Z"
|
||||
},
|
||||
{
|
||||
"name": "MediaBrowser/Emby.Releases",
|
||||
"version": "4.8.11.0",
|
||||
@ -454,6 +389,11 @@
|
||||
"version": "v1.13.0",
|
||||
"date": "2025-05-25T20:21:13Z"
|
||||
},
|
||||
{
|
||||
"name": "Prowlarr/Prowlarr",
|
||||
"version": "v1.36.3.5071",
|
||||
"date": "2025-05-25T13:59:43Z"
|
||||
},
|
||||
{
|
||||
"name": "Lidarr/Lidarr",
|
||||
"version": "v2.11.2.4629",
|
||||
@ -504,6 +444,16 @@
|
||||
"version": "v11.2.10",
|
||||
"date": "2025-05-22T23:50:45Z"
|
||||
},
|
||||
{
|
||||
"name": "crowdsecurity/crowdsec",
|
||||
"version": "v1.6.8",
|
||||
"date": "2025-03-25T13:33:10Z"
|
||||
},
|
||||
{
|
||||
"name": "MariaDB/server",
|
||||
"version": "mariadb-11.4.7",
|
||||
"date": "2025-05-22T14:22:22Z"
|
||||
},
|
||||
{
|
||||
"name": "0xERR0R/blocky",
|
||||
"version": "v0.26.2",
|
||||
@ -529,6 +479,21 @@
|
||||
"version": "v0.35.0",
|
||||
"date": "2025-05-21T18:00:32Z"
|
||||
},
|
||||
{
|
||||
"name": "cockpit-project/cockpit",
|
||||
"version": "339",
|
||||
"date": "2025-05-21T14:49:36Z"
|
||||
},
|
||||
{
|
||||
"name": "theonedev/onedev",
|
||||
"version": "v11.9.9",
|
||||
"date": "2025-05-21T13:13:31Z"
|
||||
},
|
||||
{
|
||||
"name": "glpi-project/glpi",
|
||||
"version": "10.0.18",
|
||||
"date": "2025-02-12T11:07:02Z"
|
||||
},
|
||||
{
|
||||
"name": "diced/zipline",
|
||||
"version": "v4.1.0",
|
||||
@ -549,6 +514,11 @@
|
||||
"version": "v0.46.2",
|
||||
"date": "2025-05-20T11:21:04Z"
|
||||
},
|
||||
{
|
||||
"name": "zabbix/zabbix",
|
||||
"version": "7.2.7",
|
||||
"date": "2025-05-20T11:00:56Z"
|
||||
},
|
||||
{
|
||||
"name": "crafty-controller/crafty-4",
|
||||
"version": "v4.4.9",
|
||||
@ -604,6 +574,11 @@
|
||||
"version": "1.21.3",
|
||||
"date": "2025-05-16T04:31:05Z"
|
||||
},
|
||||
{
|
||||
"name": "coder/code-server",
|
||||
"version": "v4.100.2",
|
||||
"date": "2025-05-15T23:02:46Z"
|
||||
},
|
||||
{
|
||||
"name": "cloudflare/cloudflared",
|
||||
"version": "2025.5.0",
|
||||
@ -684,6 +659,11 @@
|
||||
"version": "10.1.41",
|
||||
"date": "2025-05-08T12:45:44Z"
|
||||
},
|
||||
{
|
||||
"name": "donaldzou/WGDashboard",
|
||||
"version": "v4.2.3",
|
||||
"date": "2025-05-07T15:35:04Z"
|
||||
},
|
||||
{
|
||||
"name": "Brandawg93/PeaNUT",
|
||||
"version": "v5.7.5",
|
||||
@ -729,6 +709,11 @@
|
||||
"version": "v2.0.0.4645",
|
||||
"date": "2017-03-07T18:56:06Z"
|
||||
},
|
||||
{
|
||||
"name": "actualbudget/actual",
|
||||
"version": "v25.5.0",
|
||||
"date": "2025-05-03T19:03:17Z"
|
||||
},
|
||||
{
|
||||
"name": "forgejo/forgejo",
|
||||
"version": "v11.0.1",
|
||||
@ -854,6 +839,11 @@
|
||||
"version": "v0.4.15",
|
||||
"date": "2024-12-19T03:19:49Z"
|
||||
},
|
||||
{
|
||||
"name": "rabbitmq/rabbitmq-server",
|
||||
"version": "v4.1.0",
|
||||
"date": "2025-04-15T16:18:29Z"
|
||||
},
|
||||
{
|
||||
"name": "slskd/slskd",
|
||||
"version": "0.22.5",
|
||||
@ -944,6 +934,11 @@
|
||||
"version": "v4.5.0",
|
||||
"date": "2025-03-28T19:02:22Z"
|
||||
},
|
||||
{
|
||||
"name": "louislam/uptime-kuma",
|
||||
"version": "2.0.0-beta.2-temp",
|
||||
"date": "2025-03-28T08:45:58Z"
|
||||
},
|
||||
{
|
||||
"name": "hakimel/reveal.js",
|
||||
"version": "5.2.1",
|
||||
@ -1199,6 +1194,11 @@
|
||||
"version": "r1720",
|
||||
"date": "2024-08-03T04:07:20Z"
|
||||
},
|
||||
{
|
||||
"name": "Pf2eToolsOrg/Pf2eTools",
|
||||
"version": "v0.8.13",
|
||||
"date": "2024-07-29T12:54:27Z"
|
||||
},
|
||||
{
|
||||
"name": "hywax/mafl",
|
||||
"version": "v0.15.4",
|
||||
|
@ -33,7 +33,7 @@
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Database credentials: `cat ~/wavelog.creds`",
|
||||
"text": "Database credentials: `cat wavelog.creds`",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
|
@ -18,11 +18,10 @@ msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
gdal-bin \
|
||||
libgdal-dev \
|
||||
git \
|
||||
python3-venv \
|
||||
python3-pip
|
||||
git
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@latest" install_node_and_modules
|
||||
PG_VERSION="16" PG_MODULES="postgis" install_postgresql
|
||||
|
||||
@ -79,11 +78,13 @@ DISABLE_REGISTRATION=False
|
||||
EOF
|
||||
cd /opt/adventurelog/backend/server
|
||||
mkdir -p /opt/adventurelog/backend/server/media
|
||||
$STD pip install --upgrade pip
|
||||
$STD pip install -r requirements.txt
|
||||
$STD python3 manage.py collectstatic --noinput
|
||||
$STD python3 manage.py migrate
|
||||
$STD python3 manage.py download-countries
|
||||
$STD uv venv /opt/adventurelog/backend/server/.venv
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install -r requirements.txt
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m manage collectstatic --noinput
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m manage migrate
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m manage download-countries
|
||||
cat <<EOF >/opt/adventurelog/frontend/.env
|
||||
PUBLIC_SERVER_URL=http://$LOCAL_IP:8000
|
||||
BODY_SIZE_LIMIT=Infinity
|
||||
@ -96,7 +97,8 @@ echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||
msg_ok "Installed AdventureLog"
|
||||
|
||||
msg_info "Setting up Django Admin"
|
||||
$STD python3 /opt/adventurelog/backend/server/manage.py shell <<EOF
|
||||
cd /opt/adventurelog/backend/server
|
||||
$STD .venv/bin/python -m manage shell <<EOF
|
||||
from django.contrib.auth import get_user_model
|
||||
UserModel = get_user_model()
|
||||
user = UserModel.objects.create_user('$DJANGO_ADMIN_USER', password='$DJANGO_ADMIN_PASS')
|
||||
@ -120,7 +122,7 @@ After=network.target postgresql.service
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/opt/adventurelog/backend/server
|
||||
ExecStart=python3 manage.py runserver 0.0.0.0:8000
|
||||
ExecStart=/opt/adventurelog/backend/server/.venv/bin/python -m manage runserver 0.0.0.0:8000
|
||||
Restart=always
|
||||
EnvironmentFile=/opt/adventurelog/backend/server/.env
|
||||
|
||||
|
@ -25,34 +25,38 @@ $STD apt-get install -y \
|
||||
ripgrep
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Python Dependencies"
|
||||
$STD apt-get install -y \
|
||||
python3-pip \
|
||||
python3-ldap \
|
||||
python3-msgpack \
|
||||
python3-regex
|
||||
msg_ok "Installed Python Dependencies"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_VERSION="22" install_node_and_modules
|
||||
|
||||
msg_info "Installing Playwright"
|
||||
$STD pip install playwright
|
||||
$STD playwright install-deps chromium
|
||||
msg_ok "Installed Playwright"
|
||||
msg_info "Installing ArchiveBox"
|
||||
|
||||
msg_info "Installing Chromium and ArchiveBox"
|
||||
mkdir -p /opt/archivebox/{data,.npm,.cache,.local}
|
||||
$STD adduser --system --shell /bin/bash --gecos 'Archive Box User' --group --disabled-password --home /home/archivebox archivebox
|
||||
chown -R archivebox:archivebox /opt/archivebox/{data,.npm,.cache,.local}
|
||||
chmod -R 755 /opt/archivebox/data
|
||||
$STD pip install archivebox
|
||||
cd /opt/archivebox/data
|
||||
adduser --system --shell /bin/bash --gecos 'Archive Box User' --group --disabled-password --home /home/archivebox archivebox
|
||||
|
||||
sudo -u archivebox bash
|
||||
cd /opt/archivebox
|
||||
$STD uv venv /opt/archivebox/.venv
|
||||
$STD /opt/archivebox/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/archivebox/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/archivebox/.venv/bin/python -m pip install archivebox playwright
|
||||
|
||||
chown -R archivebox:archivebox /opt/archivebox
|
||||
chmod -R 755 /opt/archivebox
|
||||
|
||||
sudo -u archivebox /opt/archivebox/.venv/bin/playwright install-deps chromium
|
||||
sudo -u archivebox /opt/archivebox/.venv/bin/playwright install chromium
|
||||
|
||||
msg_ok "Installed ArchiveBox & Playwright"
|
||||
|
||||
msg_info "Initial ArchiveBox Setup"
|
||||
expect <<EOF
|
||||
set timeout -1
|
||||
log_user 0
|
||||
|
||||
spawn sudo -u archivebox playwright install chromium
|
||||
spawn sudo -u archivebox archivebox setup
|
||||
spawn sudo -u archivebox /opt/archivebox/.venv/bin/playwright install chromium
|
||||
expect eof
|
||||
|
||||
spawn sudo -u archivebox /opt/archivebox/.venv/bin/archivebox setup
|
||||
|
||||
expect "Username"
|
||||
send "\r"
|
||||
@ -68,7 +72,7 @@ send "helper-scripts.com\r"
|
||||
|
||||
expect eof
|
||||
EOF
|
||||
msg_ok "Installed ArchiveBox"
|
||||
msg_ok "Initialized ArchiveBox"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/archivebox.service
|
||||
@ -79,12 +83,13 @@ After=network.target
|
||||
[Service]
|
||||
User=archivebox
|
||||
WorkingDirectory=/opt/archivebox/data
|
||||
ExecStart=/usr/local/bin/archivebox server 0.0.0.0:8000
|
||||
ExecStart=/opt/archivebox/.venv/bin/archivebox server 0.0.0.0:8000
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl enable -q --now archivebox
|
||||
msg_ok "Created Service"
|
||||
|
||||
|
@ -19,8 +19,7 @@ $STD apt-get install -y \
|
||||
uwsgi-plugin-python3 \
|
||||
libopenjp2-7-dev \
|
||||
libpq-dev \
|
||||
nginx \
|
||||
python3
|
||||
nginx
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_uv
|
||||
@ -32,9 +31,13 @@ mkdir -p /opt/{babybuddy,data}
|
||||
curl -fsSL "https://github.com/babybuddy/babybuddy/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||
tar zxf "$temp_file" --strip-components=1 -C /opt/babybuddy
|
||||
cd /opt/babybuddy
|
||||
$STD uv venv .venv
|
||||
$STD source .venv/bin/activate
|
||||
$STD uv pip install -r requirements.txt
|
||||
setup_uv
|
||||
|
||||
$STD uv venv /opt/babybuddy/.venv
|
||||
$STD /opt/babybuddy/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/babybuddy/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/babybuddy/.venv/bin/python -m pip install -r requirements.txt
|
||||
|
||||
cp babybuddy/settings/production.example.py babybuddy/settings/production.py
|
||||
SECRET_KEY=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)
|
||||
ALLOWED_HOSTS=$(hostname -I | tr ' ' ',' | sed 's/,$//')",127.0.0.1,localhost"
|
||||
@ -44,7 +47,8 @@ sed -i \
|
||||
babybuddy/settings/production.py
|
||||
|
||||
export DJANGO_SETTINGS_MODULE=babybuddy.settings.production
|
||||
$STD python manage.py migrate
|
||||
cd /opt/babybuddy
|
||||
$STD /opt/babybuddy/.venv/bin/python -m manage migrate
|
||||
chown -R www-data:www-data /opt/data
|
||||
chmod 640 /opt/data/db.sqlite3
|
||||
chmod 750 /opt/data
|
||||
@ -93,7 +97,7 @@ server {
|
||||
EOF
|
||||
|
||||
ln -sf /etc/nginx/sites-available/babybuddy /etc/nginx/sites-enabled/babybuddy
|
||||
rm /etc/nginx/sites-enabled/default
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
systemctl enable -q --now nginx
|
||||
service nginx reload
|
||||
msg_ok "Configured NGINX"
|
||||
|
@ -13,20 +13,18 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-pip
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Setup Python3"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Installing Bazarr"
|
||||
mkdir -p /var/lib/bazarr/
|
||||
curl -fsSL "https://github.com/morpheus65535/bazarr/releases/latest/download/bazarr.zip" -o "bazarr.zip"
|
||||
$STD unzip bazarr -d /opt/bazarr
|
||||
chmod 775 /opt/bazarr /var/lib/bazarr/
|
||||
$STD python3 -m pip install -q -r /opt/bazarr/requirements.txt
|
||||
cd /opt/bazarr
|
||||
$STD uv venv /opt/bazarr/.venv
|
||||
$STD /opt/bazarr/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/bazarr/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/bazarr/.venv/bin/python -m pip install -r requirements.txt
|
||||
msg_ok "Installed Bazarr"
|
||||
|
||||
msg_info "Creating Service"
|
||||
@ -41,7 +39,7 @@ UMask=0002
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/python3 /opt/bazarr/bazarr.py
|
||||
ExecStart=/opt/bazarr/.venv/bin/python /opt/bazarr/bazarr.py
|
||||
KillSignal=SIGINT
|
||||
TimeoutStopSec=20
|
||||
SyslogIdentifier=bazarr
|
||||
|
@ -15,13 +15,10 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y imagemagick
|
||||
$STD apt-get install -y imagemagick calibre
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Python Dependencies"
|
||||
$STD apt-get -y install python3-pip
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Installed Python Dependencies"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Installing Kepubify"
|
||||
mkdir -p /opt/kepubify
|
||||
@ -32,10 +29,10 @@ msg_ok "Installed Kepubify"
|
||||
|
||||
msg_info "Installing Calibre-Web"
|
||||
mkdir -p /opt/calibre-web
|
||||
$STD apt-get install -y calibre
|
||||
$STD curl -fsSL https://github.com/janeczku/calibre-web/raw/master/library/metadata.db -o /opt/calibre-web/metadata.db
|
||||
$STD pip install calibreweb
|
||||
$STD pip install jsonschema
|
||||
cd /opt/calibre-web
|
||||
$STD uv venv /opt/calibre-web/.venv
|
||||
$STD uv pip install calibreweb jsonschema
|
||||
msg_ok "Installed Calibre-Web"
|
||||
|
||||
msg_info "Creating Service"
|
||||
@ -47,7 +44,7 @@ After=network.target
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/calibre-web
|
||||
ExecStart=/usr/local/bin/cps
|
||||
ExecStart=/opt/calibre-web/.venv/bin/cps
|
||||
TimeoutStopSec=20
|
||||
KillMode=process
|
||||
Restart=on-failure
|
||||
|
@ -43,24 +43,19 @@ $STD apt-get install -y \
|
||||
ca-certificates
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-pip
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Setup Python3"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_VERSION="22" install_node_and_modules
|
||||
|
||||
msg_info "Installing Change Detection"
|
||||
mkdir /opt/changedetection
|
||||
$STD pip3 install changedetection.io
|
||||
mkdir -p /opt/changedetection
|
||||
cd /opt/changedetection
|
||||
$STD uv venv /opt/changedetection/.venv
|
||||
$STD uv pip install changedetection.io
|
||||
msg_ok "Installed Change Detection"
|
||||
|
||||
msg_info "Installing Browserless & Playwright"
|
||||
mkdir /opt/browserless
|
||||
$STD python3 -m pip install playwright
|
||||
$STD /opt/paperless/.venv/bin/uv pip install playwright
|
||||
$STD git clone https://github.com/browserless/chrome /opt/browserless
|
||||
$STD npm install --prefix /opt/browserless
|
||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install --with-deps &>/dev/null
|
||||
@ -117,7 +112,7 @@ Type=simple
|
||||
WorkingDirectory=/opt/changedetection
|
||||
Environment=WEBDRIVER_URL=http://127.0.0.1:4444/wd/hub
|
||||
Environment=PLAYWRIGHT_DRIVER_URL=ws://localhost:3000/chrome?launch={"defaultViewport":{"height":720,"width":1280},"headless":false,"stealth":true}&blockAds=true
|
||||
ExecStart=changedetection.io -d /opt/changedetection -p 5000
|
||||
ExecStart=/opt/changedetection/.venv/bin/changedetection.io -d /opt/changedetection -p 5000
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
@ -13,7 +13,7 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies (a lot of patience)"
|
||||
msg_info "Installing Dependencies (Patience)"
|
||||
$STD apt-get install -y \
|
||||
git \
|
||||
sed \
|
||||
@ -23,6 +23,8 @@ $STD apt-get install -y \
|
||||
software-properties-common
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Setting up TemurinJDK"
|
||||
mkdir -p /etc/apt/keyrings
|
||||
curl -fsSL "https://packages.adoptium.net/artifactory/api/gpg/key/public" | tee /etc/apt/keyrings/adoptium.asc
|
||||
@ -32,20 +34,11 @@ $STD apt-get install -y temurin-{8,11,17,21}-jre
|
||||
sudo update-alternatives --set java /usr/lib/jvm/temurin-21-jre-amd64/bin/java
|
||||
msg_ok "Installed TemurinJDK"
|
||||
|
||||
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"
|
||||
|
||||
msg_info "Installing Craty-Controller (Patience)"
|
||||
useradd crafty -m -s /bin/bash
|
||||
cd /opt
|
||||
mkdir -p /opt/crafty-controller/crafty /opt/crafty-controller/server
|
||||
RELEASE=$(curl -fsSL "https://gitlab.com/api/v4/projects/20430749/releases" | grep -o '"tag_name":"v[^"]*"' | head -n 1 | sed 's/"tag_name":"v//;s/"//')
|
||||
RELEASE=$(curl -fsSL "https://gitlab.com/api/v4/projects/20430749/releases" | grep -o '"tag_name":"v[^\"]*"' | head -n 1 | sed 's/"tag_name":"v//;s/"//')
|
||||
echo "${RELEASE}" >"/opt/crafty-controller_version.txt"
|
||||
curl -fsSL "https://gitlab.com/crafty-controller/crafty-4/-/archive/v${RELEASE}/crafty-4-v${RELEASE}.zip" -o "crafty-4-v${RELEASE}.zip"
|
||||
$STD unzip crafty-4-v${RELEASE}.zip
|
||||
@ -53,12 +46,11 @@ cp -a crafty-4-v${RELEASE}/. /opt/crafty-controller/crafty/crafty-4/
|
||||
rm -rf crafty-4-v${RELEASE}
|
||||
|
||||
cd /opt/crafty-controller/crafty
|
||||
python3 -m venv .venv
|
||||
$STD uv venv /opt/crafty-controller/crafty/.venv
|
||||
chown -R crafty:crafty /opt/crafty-controller/
|
||||
$STD sudo -u crafty bash -c '
|
||||
source /opt/crafty-controller/crafty/.venv/bin/activate
|
||||
cd /opt/crafty-controller/crafty/crafty-4
|
||||
pip3 install --no-cache-dir -r requirements.txt
|
||||
uv pip install --no-cache-dir -r requirements.txt
|
||||
'
|
||||
msg_ok "Installed Craft-Controller and dependencies"
|
||||
|
||||
@ -83,8 +75,8 @@ $STD systemctl enable -q --now crafty-controller
|
||||
sleep 10
|
||||
{
|
||||
echo "Crafty-Controller-Credentials"
|
||||
echo "Username: $(grep -oP '(?<="username": ")[^"]*' /opt/crafty-controller/crafty/crafty-4/app/config/default-creds.txt)"
|
||||
echo "Password: $(grep -oP '(?<="password": ")[^"]*' /opt/crafty-controller/crafty/crafty-4/app/config/default-creds.txt)"
|
||||
echo "Username: $(grep -oP '(?<="username": \")[^\"]*' /opt/crafty-controller/crafty/crafty-4/app/config/default-creds.txt)"
|
||||
echo "Password: $(grep -oP '(?<="password": \")[^\"]*' /opt/crafty-controller/crafty/crafty-4/app/config/default-creds.txt)"
|
||||
} >>~/crafty-controller.creds
|
||||
msg_ok "Crafty-Controller service started"
|
||||
|
||||
|
@ -14,24 +14,23 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y python3-libtorrent
|
||||
$STD apt-get install -y python3-libtorrent build-essential
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-pip
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Setup Python3"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Installing Deluge"
|
||||
$STD pip install deluge[all]
|
||||
mkdir -p /opt/deluge
|
||||
cd /opt/deluge
|
||||
$STD uv venv /opt/deluge/.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 deluge libtorrent
|
||||
msg_ok "Installed Deluge"
|
||||
|
||||
msg_info "Creating Service"
|
||||
service_path="/etc/systemd/system/deluged.service"
|
||||
echo "[Unit]
|
||||
cat <<EOF >/etc/systemd/system/deluged.service
|
||||
[Unit]
|
||||
Description=Deluge Bittorrent Client Daemon
|
||||
Documentation=man:deluged
|
||||
After=network-online.target
|
||||
@ -39,15 +38,16 @@ After=network-online.target
|
||||
[Service]
|
||||
Type=simple
|
||||
UMask=007
|
||||
ExecStart=/usr/local/bin/deluged -d
|
||||
ExecStart=/opt/deluge/.venv/bin/deluged -d
|
||||
Restart=on-failure
|
||||
TimeoutStopSec=300
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target" >$service_path
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
service_path="/etc/systemd/system/deluge-web.service"
|
||||
echo "[Unit]
|
||||
cat <<EOF >/etc/systemd/system/deluge-web.service
|
||||
[Unit]
|
||||
Description=Deluge Bittorrent Client Web Interface
|
||||
Documentation=man:deluge-web
|
||||
After=deluged.service
|
||||
@ -56,11 +56,13 @@ Wants=deluged.service
|
||||
[Service]
|
||||
Type=simple
|
||||
UMask=027
|
||||
ExecStart=/usr/local/bin/deluge-web -d
|
||||
ExecStart=/opt/deluge/.venv/bin/deluge-web -d
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target" >$service_path
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl enable --now -q deluged.service
|
||||
systemctl enable --now -q deluge-web.service
|
||||
msg_ok "Created Service"
|
||||
|
@ -23,13 +23,12 @@ $STD apt-get install -y \
|
||||
libc6 \
|
||||
make \
|
||||
cmake \
|
||||
jq \
|
||||
python3 \
|
||||
python3-bcrypt
|
||||
jq
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="turbo@1.9.3" install_node_and_modules
|
||||
PG_VERSION="16" install_postgresql
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Setting up PostgreSQL"
|
||||
DB_NAME="documenso_db"
|
||||
@ -55,6 +54,10 @@ curl -fsSL "https://github.com/documenso/documenso/archive/refs/tags/v${RELEASE}
|
||||
$STD unzip v${RELEASE}.zip
|
||||
mv documenso-${RELEASE} /opt/documenso
|
||||
cd /opt/documenso
|
||||
$STD uv venv /opt/documenso/.venv
|
||||
$STD /opt/documenso/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/documenso/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/documenso/.venv/bin/python -m pip install bcrypt
|
||||
mv .env.example /opt/documenso/.env
|
||||
sed -i \
|
||||
-e "s|^NEXTAUTH_SECRET=.*|NEXTAUTH_SECRET='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \
|
||||
@ -78,7 +81,7 @@ echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||
msg_ok "Installed Documenso"
|
||||
|
||||
msg_info "Create User"
|
||||
PASSWORD_HASH=$(python3 -c "import bcrypt; print(bcrypt.hashpw(b'helper-scripts', bcrypt.gensalt(rounds=12)).decode())")
|
||||
PASSWORD_HASH=$(/opt/documenso/.venv/bin/python3 -c "import bcrypt; print(bcrypt.hashpw(b'helper-scripts', bcrypt.gensalt(rounds=12)).decode())")
|
||||
$STD sudo -u postgres psql -d documenso_db -c "INSERT INTO \"User\" (name, email, \"emailVerified\", password, \"identityProvider\", roles, \"createdAt\", \"lastSignedIn\", \"updatedAt\", \"customerId\") VALUES ('helper-scripts', 'helper-scripts@local.com', '2025-01-20 17:14:45.058', '$PASSWORD_HASH', 'DOCUMENSO', ARRAY['USER', 'ADMIN']::\"Role\"[], '2025-01-20 16:04:05.543', '2025-01-20 16:14:55.249', '2025-01-20 16:14:55.25', NULL) RETURNING id;"
|
||||
$STD npm run prisma:migrate-deploy
|
||||
msg_ok "User created"
|
||||
|
@ -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"
|
||||
|
||||
|
@ -14,12 +14,10 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
make \
|
||||
ca-certificates \
|
||||
python3.11-venv
|
||||
$STD apt-get install -y make ca-certificates
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" install_node_and_modules
|
||||
|
||||
msg_info "Installing Grist"
|
||||
@ -28,20 +26,24 @@ export CYPRESS_INSTALL_BINARY=0
|
||||
export NODE_OPTIONS="--max-old-space-size=2048"
|
||||
cd /opt
|
||||
curl -fsSL "https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
|
||||
$STD unzip v$RELEASE.zip
|
||||
mv grist-core-${RELEASE} grist
|
||||
cd grist
|
||||
$STD unzip "v${RELEASE}.zip"
|
||||
mv "grist-core-${RELEASE}" /opt/grist
|
||||
cd /opt/grist
|
||||
$STD uv venv /opt/grist/sandbox_venv3
|
||||
$STD /opt/grist/sandbox_venv3/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/grist/sandbox_venv3/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/grist/sandbox_venv3/bin/python -m pip install -r sandbox/requirements.txt
|
||||
$STD yarn install
|
||||
$STD yarn run build:prod
|
||||
$STD yarn run install:python
|
||||
ln -sf /opt/grist/sandbox_venv3/bin/python3 /opt/grist/sandbox_venv3/bin/python
|
||||
cat <<EOF >/opt/grist/.env
|
||||
NODE_ENV=production
|
||||
GRIST_HOST=0.0.0.0
|
||||
EOF
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
echo "${RELEASE}" >/opt/grist_version.txt
|
||||
msg_ok "Installed Grist"
|
||||
|
||||
msg_info "Create Service"
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/grist.service
|
||||
[Unit]
|
||||
Description=Grist
|
||||
@ -49,9 +51,10 @@ After=network.target
|
||||
|
||||
[Service]
|
||||
Type=exec
|
||||
WorkingDirectory=/opt/grist
|
||||
WorkingDirectory=/opt/grist
|
||||
ExecStart=/usr/bin/yarn run start:prod
|
||||
EnvironmentFile=-/opt/grist/.env
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@ -64,7 +67,7 @@ motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/v${RELEASE}.zip
|
||||
rm -rf "/opt/v${RELEASE}.zip"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
@ -13,19 +13,6 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
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"
|
||||
|
||||
msg_info "Installing runlike"
|
||||
$STD pip install runlike
|
||||
msg_ok "Installed runlike"
|
||||
|
||||
get_latest_release() {
|
||||
curl -fsSL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||
}
|
||||
@ -36,8 +23,8 @@ PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
|
||||
|
||||
msg_info "Installing Docker $DOCKER_LATEST_VERSION"
|
||||
DOCKER_CONFIG_PATH='/etc/docker/daemon.json'
|
||||
mkdir -p $(dirname $DOCKER_CONFIG_PATH)
|
||||
echo -e '{\n "log-driver": "journald"\n}' >/etc/docker/daemon.json
|
||||
mkdir -p $(dirname "$DOCKER_CONFIG_PATH")
|
||||
echo -e '{\n "log-driver": "journald"\n}' >"$DOCKER_CONFIG_PATH"
|
||||
$STD sh <(curl -fsSL https://get.docker.com)
|
||||
msg_ok "Installed Docker $DOCKER_LATEST_VERSION"
|
||||
|
||||
|
@ -13,12 +13,11 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y pip
|
||||
msg_ok "Installed Dependencies"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Installing Homer"
|
||||
mkdir -p /opt/homer
|
||||
$STD uv venv /opt/homer/.venv
|
||||
cd /opt/homer
|
||||
curl -fsSL "https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip" -o "homer.zip"
|
||||
$STD unzip homer.zip
|
||||
@ -34,7 +33,7 @@ After=network-online.target
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/homer
|
||||
ExecStart=python3 -m http.server 8010
|
||||
ExecStart=/opt/homer/.venv/bin/python3 -m http.server 8010
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
@ -13,6 +13,8 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
setup_uv
|
||||
|
||||
msg_info "Configuring apt and installing dependencies"
|
||||
echo "deb http://deb.debian.org/debian testing main contrib" >/etc/apt/sources.list.d/immich.list
|
||||
cat <<EOF >/etc/apt/preferences.d/immich
|
||||
@ -27,7 +29,6 @@ $STD apt-get install --no-install-recommends -y \
|
||||
redis \
|
||||
autoconf \
|
||||
build-essential \
|
||||
python3-venv \
|
||||
python3-dev \
|
||||
cmake \
|
||||
jq \
|
||||
@ -304,25 +305,19 @@ cp LICENSE "$APP_DIR"
|
||||
msg_ok "Installed Immich Web Components"
|
||||
|
||||
cd "$SRC_DIR"/machine-learning
|
||||
$STD python3 -m venv "$ML_DIR/ml-venv"
|
||||
export VIRTUAL_ENV="${ML_DIR}/ml-venv"
|
||||
$STD uv venv "$VIRTUAL_ENV"
|
||||
if [[ -f ~/.openvino ]]; then
|
||||
msg_info "Installing HW-accelerated machine-learning"
|
||||
(
|
||||
source "$ML_DIR"/ml-venv/bin/activate
|
||||
$STD pip3 install uv
|
||||
uv -q sync --extra openvino --no-cache --active
|
||||
)
|
||||
patchelf --clear-execstack "$ML_DIR"/ml-venv/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so
|
||||
uv -q sync --no-cache --extra openvino --active
|
||||
patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so"
|
||||
msg_ok "Installed HW-accelerated machine-learning"
|
||||
else
|
||||
msg_info "Installing machine-learning"
|
||||
(
|
||||
source "$ML_DIR"/ml-venv/bin/activate
|
||||
$STD pip3 install uv
|
||||
uv -q sync --extra cpu --no-cache --active
|
||||
)
|
||||
uv -q sync --no-cache --extra cpu --active
|
||||
msg_ok "Installed machine-learning"
|
||||
fi
|
||||
|
||||
cd "$SRC_DIR"
|
||||
cp -a machine-learning/{ann,immich_ml} "$ML_DIR"
|
||||
if [[ -f ~/.openvino ]]; then
|
||||
@ -396,7 +391,7 @@ set -a
|
||||
. ${INSTALL_DIR}/.env
|
||||
set +a
|
||||
|
||||
python -m immich_ml
|
||||
python3 -m immich_ml
|
||||
EOF
|
||||
chmod +x "$ML_DIR"/ml_start.sh
|
||||
cat <<EOF >/etc/systemd/system/"${APPLICATION}"-web.service
|
||||
|
@ -13,15 +13,16 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-pip
|
||||
msg_ok "Installed Dependencies"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Setting up Jupyter Notebook"
|
||||
$STD pip3 install jupyter
|
||||
msg_ok "Setup Jupyter Notebook"
|
||||
msg_info "Installing Jupyter"
|
||||
mkdir -p /opt/jupyter
|
||||
cd /opt/jupyter
|
||||
$STD uv venv /opt/jupyter/.venv
|
||||
$STD /opt/jupyter/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/jupyter/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/jupyter/.venv/bin/python -m pip install jupyter
|
||||
msg_ok "Installed Jupyter"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/jupyternotebook.service
|
||||
@ -31,7 +32,8 @@ After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=jupyter notebook --ip=0.0.0.0 --port=8888 --allow-root
|
||||
WorkingDirectory=/opt/jupyter
|
||||
ExecStart=/opt/jupyter/.venv/bin/jupyter notebook --ip=0.0.0.0 --port=8888 --allow-root
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
|
||||
@ -39,6 +41,7 @@ RestartSec=10
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now jupyternotebook
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
@ -13,28 +13,28 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Setup Python 3"
|
||||
$STD apt-get install python3-pip -y
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Setup Python 3"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Setup Kometa"
|
||||
temp_file=$(mktemp)
|
||||
msg_info "Installing Kometa"
|
||||
tmp_file=$(mktemp)
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
curl -fsSL "https://github.com/Kometa-Team/Kometa/archive/refs/tags/v${RELEASE}.tar.gz" -o """$temp_file"""
|
||||
tar -xzf "$temp_file"
|
||||
mv Kometa-"${RELEASE}" /opt/kometa
|
||||
curl -fsSL "https://github.com/Kometa-Team/Kometa/archive/refs/tags/v${RELEASE}.tar.gz" -o "$tmp_file"
|
||||
tar -xzf "$tmp_file"
|
||||
mv "Kometa-${RELEASE}" /opt/kometa
|
||||
cd /opt/kometa
|
||||
$STD pip install -r requirements.txt --ignore-installed
|
||||
$STD uv venv /home/wger/.venv
|
||||
$STD /opt/kometa/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/kometa/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/kometa/.venv/bin/python -m pip install -r requirements.txt
|
||||
mkdir -p config/assets
|
||||
cp config/config.yml.template config/config.yml
|
||||
echo "${RELEASE}" >/opt/kometa_version.txt
|
||||
msg_ok "Setup Kometa"
|
||||
echo "$RELEASE" >/opt/kometa_version.txt
|
||||
msg_ok "Installed Kometa"
|
||||
|
||||
read -p "${TAB3}nter your TMDb API key: " TMDBKEY
|
||||
read -p "${TAB3}Enter your TMDb API key: " TMDBKEY
|
||||
read -p "${TAB3}Enter your Plex URL: " PLEXURL
|
||||
read -p "${TAB3}Enter your Plex token: " PLEXTOKEN
|
||||
sed -i -e "s#url: http://192.168.1.12:32400#url: $PLEXURL #g" /opt/kometa/config/config.yml
|
||||
sed -i -e "s#url: http://192.168.1.12:32400#url: $PLEXURL#g" /opt/kometa/config/config.yml
|
||||
sed -i -e "s/token: ####################/token: $PLEXTOKEN/g" /opt/kometa/config/config.yml
|
||||
sed -i -e "s/apikey: ################################/apikey: $TMDBKEY/g" /opt/kometa/config/config.yml
|
||||
|
||||
@ -47,21 +47,21 @@ After=network-online.target
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/kometa
|
||||
ExecStart=/usr/bin/python3 kometa.py
|
||||
ExecStart=/opt/kometa/.venv/bin/python kometa.py
|
||||
Restart=always
|
||||
RestartSec=30
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable --now -q kometa
|
||||
systemctl enable -q --now kometa
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f "$temp_file"
|
||||
rm -f "$tmp_file"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
@ -14,29 +14,24 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
git \
|
||||
libpng-dev \
|
||||
libjpeg-dev \
|
||||
libtiff-dev \
|
||||
imagemagick
|
||||
git \
|
||||
libpng-dev \
|
||||
libjpeg-dev \
|
||||
libtiff-dev \
|
||||
imagemagick
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y \
|
||||
pip \
|
||||
python3-irc
|
||||
$STD pip install jaraco.stream
|
||||
$STD pip install python-Levenshtein
|
||||
$STD pip install soupsieve
|
||||
$STD pip install pypdf
|
||||
msg_ok "Setup Python3"
|
||||
|
||||
msg_info "Installing LazyLibrarian"
|
||||
$STD git clone https://gitlab.com/LazyLibrarian/LazyLibrarian /opt/LazyLibrarian
|
||||
cd /opt/LazyLibrarian
|
||||
$STD pip install .
|
||||
$STD uv venv /opt/LazyLibrarian/.venv
|
||||
$STD /opt/LazyLibrarian/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/LazyLibrarian/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/LazyLibrarian/.venv/bin/python -m pip install . jaraco.stream python-Levenshtein soupsieve pypdf
|
||||
msg_ok "Installed LazyLibrarian"
|
||||
|
||||
msg_info "Creating Service"
|
||||
@ -44,17 +39,20 @@ cat <<EOF >/etc/systemd/system/lazylibrarian.service
|
||||
[Unit]
|
||||
Description=LazyLibrarian Daemon
|
||||
After=syslog.target network.target
|
||||
|
||||
[Service]
|
||||
UMask=0002
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/python3 /opt/LazyLibrarian/LazyLibrarian.py
|
||||
WorkingDirectory=/opt/LazyLibrarian
|
||||
ExecStart=/opt/LazyLibrarian/.venv/bin/python LazyLibrarian.py
|
||||
UMask=0002
|
||||
Restart=on-failure
|
||||
TimeoutStopSec=20
|
||||
KillMode=process
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable --now -q lazylibrarian
|
||||
systemctl enable -q --now lazylibrarian
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
|
@ -14,6 +14,8 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
git-core \
|
||||
@ -29,6 +31,11 @@ msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Medusa"
|
||||
$STD git clone https://github.com/pymedusa/Medusa.git /opt/medusa
|
||||
cd /opt/medusa
|
||||
$STD uv venv /opt/medusa/.venv
|
||||
$STD /opt/LazyLibrarian/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/LazyLibrarian/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/LazyLibrarian/.venv/bin/python -m pip install .
|
||||
msg_ok "Installed Medusa"
|
||||
|
||||
msg_info "Creating Service"
|
||||
@ -39,7 +46,8 @@ After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/python3 /opt/medusa/start.py -q --nolaunch --datadir=/opt/medusa
|
||||
WorkingDirectory=/opt/medusa
|
||||
ExecStart=/opt/medusa/.venv/bin/python start.py -q --nolaunch --datadir=/opt/medusa
|
||||
TimeoutStopSec=25
|
||||
KillMode=process
|
||||
Restart=on-failure
|
||||
|
@ -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" install_node_and_modules
|
||||
|
||||
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
|
||||
|
||||
|
@ -18,13 +18,7 @@ $STD apt-get install -y git
|
||||
$STD apt-get install -y cifs-utils
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-pip
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Setup Python3"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Installing Motion"
|
||||
$STD apt-get install -y motion
|
||||
@ -38,7 +32,11 @@ msg_ok "Installed FFmpeg"
|
||||
|
||||
msg_info "Installing MotionEye"
|
||||
$STD apt-get update
|
||||
$STD pip install git+https://github.com/motioneye-project/motioneye.git@dev
|
||||
$STD uv venv /opt/motioneye/.venv
|
||||
$STD /opt/motioneye/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/motioneye/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/motioneye/.venv/bin/python -m pip install --pre motioneye
|
||||
|
||||
mkdir -p /etc/motioneye
|
||||
chown -R root:root /etc/motioneye
|
||||
chmod -R 777 /etc/motioneye
|
||||
@ -48,6 +46,8 @@ msg_ok "Installed MotionEye"
|
||||
|
||||
msg_info "Creating Service"
|
||||
curl -fsSL "https://raw.githubusercontent.com/motioneye-project/motioneye/dev/motioneye/extra/motioneye.systemd" -o "/etc/systemd/system/motioneye.service"
|
||||
sed -i 's|^ExecStart=.*|ExecStart=/opt/motioneye/.venv/bin/meyectl startserver -c /etc/motioneye/motioneye.conf|' /etc/systemd/system/motioneye.service
|
||||
systemctl daemon-reexec
|
||||
systemctl enable -q --now motioneye
|
||||
msg_ok "Created Service"
|
||||
|
||||
|
@ -21,18 +21,18 @@ $STD apt-get install -y unrar
|
||||
rm /etc/apt/sources.list.d/non-free.list
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y python3-pip
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
$STD pip install -U --no-cache-dir pip
|
||||
msg_ok "Setup Python3"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Installing ${APPLICATION}"
|
||||
mkdir -p /opt/mylar3
|
||||
mkdir -p /opt/mylar3-data
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/mylar3/mylar3/releases/latest | jq -r '.tag_name')
|
||||
curl -fsSL "https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz" | tar -xz --strip-components=1 -C /opt/mylar3
|
||||
$STD pip install --no-cache-dir -r /opt/mylar3/requirements.txt
|
||||
cd /opt/mylar3
|
||||
$STD uv venv /opt/mylar3/.venv
|
||||
$STD /opt/mylar3/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/mylar3/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/mylar3/.venv/bin/python -m pip install -r requirements.txt
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
msg_ok "Installed ${APPLICATION}"
|
||||
|
||||
@ -43,7 +43,7 @@ Description=Mylar3 Service
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/python3 /opt/mylar3/Mylar.py --daemon --nolaunch --datadir=/opt/mylar3-data
|
||||
ExecStart=/opt/mylar3/.venv/bin/python /opt/mylar3/Mylar.py --daemon --nolaunch --datadir=/opt/mylar3-data
|
||||
GuessMainPID=no
|
||||
Type=forking
|
||||
Restart=on-failure
|
||||
|
@ -27,14 +27,7 @@ $STD apt-get install -y \
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PG_VERSION="16" install_postgresql
|
||||
|
||||
msg_info "Installing Python"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-pip \
|
||||
python3-venv \
|
||||
python3-dev
|
||||
msg_ok "Installed Python"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Setting up PostgreSQL"
|
||||
DB_NAME=netbox
|
||||
@ -63,8 +56,11 @@ chown --recursive netbox /opt/netbox/netbox/reports/
|
||||
chown --recursive netbox /opt/netbox/netbox/scripts/
|
||||
|
||||
mv /opt/netbox/netbox/netbox/configuration_example.py /opt/netbox/netbox/netbox/configuration.py
|
||||
$STD uv venv /opt/netbox/.venv
|
||||
$STD /opt/netbox/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/netbox/.venv/bin/python -m pip install --upgrade pip
|
||||
|
||||
SECRET_KEY=$(python3 /opt/netbox/netbox/generate_secret_key.py)
|
||||
SECRET_KEY=$(/opt/netbox/.venv/bin/python /opt/netbox/netbox/generate_secret_key.py)
|
||||
ESCAPED_SECRET_KEY=$(printf '%s\n' "$SECRET_KEY" | sed 's/[&/\]/\\&/g')
|
||||
|
||||
sed -i 's/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = ["*"]/' /opt/netbox/netbox/netbox/configuration.py
|
||||
@ -95,7 +91,7 @@ DJANGO_USER=Admin
|
||||
DJANGO_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
||||
|
||||
source /opt/netbox/venv/bin/activate
|
||||
$STD python3 /opt/netbox/netbox/manage.py shell <<EOF
|
||||
$STD /opt/netbox/.venv/bin/python /opt/netbox/netbox/manage shell <<EOF
|
||||
from django.contrib.auth import get_user_model
|
||||
UserModel = get_user_model()
|
||||
user = UserModel.objects.create_user('$DJANGO_USER', password='$DJANGO_PASS')
|
||||
|
@ -13,85 +13,45 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_VERSION="20" NODE_MODULE="yarn@latest" install_node_and_modules
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get update
|
||||
$STD apt-get -y install \
|
||||
ca-certificates \
|
||||
apache2-utils \
|
||||
logrotate \
|
||||
$STD apt-get install -y \
|
||||
build-essential \
|
||||
git
|
||||
make gcc g++ git curl \
|
||||
apache2-utils logrotate \
|
||||
libffi-dev
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Python Dependencies"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-pip \
|
||||
python3-venv \
|
||||
python3-cffi \
|
||||
python3-certbot \
|
||||
python3-certbot-dns-cloudflare
|
||||
$STD pip3 install certbot-dns-multi
|
||||
$STD python3 -m venv /opt/certbot/
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Installed Python Dependencies"
|
||||
msg_info "Setting up certbot"
|
||||
$STD apt-get install -y libaugeas0
|
||||
$STD uv venv /opt/certbot/.venv
|
||||
$STD /opt/certbot/.venv/bin/uv pip install certbot certbot-dns-cloudflare certbot-dns-multi
|
||||
ln -sf /opt/certbot/.venv/bin/certbot /usr/bin/certbot
|
||||
msg_ok "Set up certbot"
|
||||
|
||||
msg_info "Installing OpenResty"
|
||||
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
||||
|
||||
msg_info "Installing Openresty"
|
||||
curl -fsSL "https://openresty.org/package/pubkey.gpg" | gpg --dearmor -o /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg
|
||||
echo -e "deb http://openresty.org/package/debian bullseye openresty" >/etc/apt/sources.list.d/openresty.list
|
||||
curl -fsSL https://openresty.org/package/pubkey.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/openresty.gpg
|
||||
echo "deb http://openresty.org/package/debian $VERSION openresty" >/etc/apt/sources.list.d/openresty.list
|
||||
$STD apt-get update
|
||||
$STD apt-get -y install openresty
|
||||
msg_ok "Installed Openresty"
|
||||
|
||||
msg_info "Installing Node.js"
|
||||
$STD bash <(curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh)
|
||||
source ~/.bashrc
|
||||
$STD nvm install 16.20.2
|
||||
ln -sf /root/.nvm/versions/node/v16.20.2/bin/node /usr/bin/node
|
||||
msg_ok "Installed Node.js"
|
||||
|
||||
msg_info "Installing pnpm"
|
||||
$STD npm install -g pnpm@8.15
|
||||
msg_ok "Installed pnpm"
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
||||
grep "tag_name" |
|
||||
awk '{print substr($2, 3, length($2)-4) }')
|
||||
|
||||
read -r -p "${TAB3}Would you like to install an older version (v2.10.4)? <y/N> " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Downloading Nginx Proxy Manager v2.10.4"
|
||||
curl -fsSL "https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v2.10.4" | tar -xz
|
||||
cd ./nginx-proxy-manager-2.10.4
|
||||
msg_ok "Downloaded Nginx Proxy Manager v2.10.4"
|
||||
else
|
||||
msg_info "Downloading Nginx Proxy Manager v${RELEASE}"
|
||||
curl -fsSL "https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v${RELEASE}" | tar -xz
|
||||
cd ./nginx-proxy-manager-"${RELEASE}"
|
||||
msg_ok "Downloaded Nginx Proxy Manager v${RELEASE}"
|
||||
fi
|
||||
msg_info "Setting up Environment"
|
||||
ln -sf /usr/bin/python3 /usr/bin/python
|
||||
ln -sf /usr/bin/certbot /opt/certbot/bin/certbot
|
||||
$STD apt-get install -y openresty
|
||||
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
||||
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"2.10.4\"|" backend/package.json
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"2.10.4\"|" frontend/package.json
|
||||
else
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" backend/package.json
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" frontend/package.json
|
||||
fi
|
||||
sed -i 's|"fork-me": ".*"|"fork-me": "Proxmox VE Helper-Scripts"|' frontend/js/i18n/messages.json
|
||||
sed -i "s|https://github.com.*source=nginx-proxy-manager|https://helper-scripts.com|g" frontend/js/app/ui/footer/main.ejs
|
||||
sed -i 's+^daemon+#daemon+g' docker/rootfs/etc/nginx/nginx.conf
|
||||
NGINX_CONFS=$(find "$(pwd)" -type f -name "*.conf")
|
||||
for NGINX_CONF in $NGINX_CONFS; do
|
||||
sed -i 's+include conf.d+include /etc/nginx/conf.d+g' "$NGINX_CONF"
|
||||
done
|
||||
ln -sf /usr/local/openresty/nginx /etc/nginx
|
||||
msg_ok "Installed OpenResty"
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest | grep "tag_name" | awk -F'"' '{print $4}')
|
||||
msg_info "Downloading Nginx Proxy Manager v${RELEASE}"
|
||||
curl -fsSL "https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/refs/tags/v${RELEASE}" | tar -xz
|
||||
cd ./nginx-proxy-manager-${RELEASE}
|
||||
msg_ok "Downloaded Nginx Proxy Manager"
|
||||
|
||||
msg_info "Setting up Nginx Proxy Manager"
|
||||
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"${RELEASE}\"|" backend/package.json frontend/package.json
|
||||
sed -i 's|^daemon|#daemon|' docker/rootfs/etc/nginx/nginx.conf
|
||||
find . -type f -name "*.conf" -exec sed -i 's|include conf.d|include /etc/nginx/conf.d|g' {} \;
|
||||
|
||||
mkdir -p /var/www/html /etc/nginx/logs
|
||||
cp -r docker/rootfs/var/www/html/* /var/www/html/
|
||||
@ -100,7 +60,9 @@ cp docker/rootfs/etc/letsencrypt.ini /etc/letsencrypt.ini
|
||||
cp docker/rootfs/etc/logrotate.d/nginx-proxy-manager /etc/logrotate.d/nginx-proxy-manager
|
||||
ln -sf /etc/nginx/nginx.conf /etc/nginx/conf/nginx.conf
|
||||
rm -f /etc/nginx/conf.d/dev.conf
|
||||
msg_ok "Set up Nginx Proxy Manager"
|
||||
|
||||
msg_info "Preparing Runtime Environment"
|
||||
mkdir -p /tmp/nginx/body \
|
||||
/run/nginx \
|
||||
/data/nginx \
|
||||
@ -120,31 +82,29 @@ mkdir -p /tmp/nginx/body \
|
||||
|
||||
chmod -R 777 /var/cache/nginx
|
||||
chown root /tmp/nginx
|
||||
|
||||
echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" {print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf);" >/etc/nginx/conf.d/include/resolvers.conf
|
||||
|
||||
if [ ! -f /data/nginx/dummycert.pem ] || [ ! -f /data/nginx/dummykey.pem ]; then
|
||||
openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -subj "/O=Nginx Proxy Manager/OU=Dummy Certificate/CN=localhost" -keyout /data/nginx/dummykey.pem -out /data/nginx/dummycert.pem &>/dev/null
|
||||
openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 \
|
||||
-subj "/O=Nginx Proxy Manager/OU=Dummy Certificate/CN=localhost" \
|
||||
-keyout /data/nginx/dummykey.pem \
|
||||
-out /data/nginx/dummycert.pem &>/dev/null
|
||||
fi
|
||||
|
||||
mkdir -p /app/global /app/frontend/images
|
||||
cp -r backend/* /app
|
||||
cp -r global/* /app/global
|
||||
msg_ok "Set up Environment"
|
||||
msg_ok "Prepared Runtime Environment"
|
||||
|
||||
msg_info "Building Frontend"
|
||||
cd ./frontend
|
||||
$STD pnpm install
|
||||
$STD pnpm upgrade
|
||||
$STD pnpm run build
|
||||
$STD yarn install --frozen-lockfile
|
||||
$STD yarn upgrade
|
||||
$STD yarn run build
|
||||
cp -r dist/* /app/frontend
|
||||
cp -r app-images/* /app/frontend/images
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Initializing Backend"
|
||||
cd ../backend
|
||||
rm -rf /app/config/default.json
|
||||
if [ ! -f /app/config/production.json ]; then
|
||||
cat <<'EOF' >/app/config/production.json
|
||||
mkdir -p /app/config
|
||||
cat <<EOF >/app/config/production.json
|
||||
{
|
||||
"database": {
|
||||
"engine": "knex-native",
|
||||
@ -157,13 +117,16 @@ if [ ! -f /app/config/production.json ]; then
|
||||
}
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
cd ..
|
||||
mkdir -p /app/global /app/frontend/images
|
||||
cp -r backend/* /app
|
||||
cp -r global/* /app/global
|
||||
cd /app
|
||||
$STD pnpm install
|
||||
$STD yarn install --frozen-lockfile
|
||||
msg_ok "Initialized Backend"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<'EOF' >/lib/systemd/system/npm.service
|
||||
msg_info "Creating Systemd Service"
|
||||
cat <<EOF >/etc/systemd/system/npm.service
|
||||
[Unit]
|
||||
Description=Nginx Proxy Manager
|
||||
After=network.target
|
||||
@ -180,22 +143,21 @@ Restart=on-failure
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
msg_ok "Created Service"
|
||||
msg_ok "Created Systemd Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Starting Services"
|
||||
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
||||
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
||||
sed -i 's/include-system-site-packages = false/include-system-site-packages = true/g' /opt/certbot/pyvenv.cfg
|
||||
sed -i 's/user npm/user root/g; s/^pid/#pid/' /usr/local/openresty/nginx/conf/nginx.conf
|
||||
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/' /etc/logrotate.d/nginx-proxy-manager
|
||||
sed -i 's/include-system-site-packages = false/include-system-site-packages = true/' /opt/certbot/.venv/pyvenv.cfg
|
||||
systemctl enable -q --now openresty
|
||||
systemctl enable -q --now npm
|
||||
msg_ok "Started Services"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf ../nginx-proxy-manager-*
|
||||
systemctl restart openresty
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
@ -19,15 +19,7 @@ $STD apt-get install -y git \
|
||||
build-essential
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-pip \
|
||||
python3-venv \
|
||||
python3-setuptools
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Setup Python3"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Creating user octoprint"
|
||||
useradd -m -s /bin/bash -p $(openssl passwd -1 octoprint) octoprint
|
||||
@ -40,11 +32,9 @@ msg_info "Installing OctoPrint"
|
||||
$STD sudo -u octoprint bash <<EOF
|
||||
mkdir /opt/octoprint
|
||||
cd /opt/octoprint
|
||||
python3 -m venv .
|
||||
source bin/activate
|
||||
pip install --upgrade pip
|
||||
pip install wheel
|
||||
pip install octoprint
|
||||
uv venv --python $PYTHON_VERSION
|
||||
uv pip install wheel
|
||||
uv pip install octoprint
|
||||
EOF
|
||||
msg_ok "Installed OctoPrint"
|
||||
|
||||
@ -60,7 +50,7 @@ Environment="LC_ALL=C.UTF-8"
|
||||
Environment="LANG=C.UTF-8"
|
||||
Type=exec
|
||||
User=octoprint
|
||||
ExecStart=/opt/octoprint/bin/octoprint serve
|
||||
ExecStart=/opt/octoprint/.venv/bin/octoprint serve
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
@ -20,19 +20,15 @@ $STD apt-get install -y \
|
||||
ffmpeg
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y --no-install-recommends \
|
||||
python3 \
|
||||
python3-pip
|
||||
msg_ok "Setup Python3"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_VERSION="22" install_node_and_modules
|
||||
|
||||
msg_info "Installing Open WebUI (Patience)"
|
||||
$STD git clone https://github.com/open-webui/open-webui.git /opt/open-webui
|
||||
cd /opt/open-webui/backend
|
||||
$STD pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
|
||||
$STD pip3 install -r requirements.txt -U
|
||||
$STD uv venv /opt/open-webui/.venv
|
||||
$STD /opt/open-webui/.venv/bin/uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
|
||||
$STD /opt/open-webui/.venv/bin/uv pip install -r requirements.txt -U
|
||||
cd /opt/open-webui
|
||||
cp .env.example .env
|
||||
cat <<EOF >/opt/open-webui/.env
|
||||
|
@ -18,12 +18,9 @@ $STD apt-get install -y \
|
||||
build-essential
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Python3"
|
||||
$STD apt-get install -y \
|
||||
python3-pip
|
||||
msg_ok "Installed Python3"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
install_node_and_modules
|
||||
NODE_VERSION="22" install_node_and_modules
|
||||
|
||||
msg_info "Setup Paperless-AI"
|
||||
cd /opt
|
||||
@ -32,7 +29,8 @@ curl -fsSL "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEA
|
||||
$STD unzip v${RELEASE}.zip
|
||||
mv paperless-ai-${RELEASE} /opt/paperless-ai
|
||||
cd /opt/paperless-ai
|
||||
$STD pip install --no-cache-dir -r requirements.txt
|
||||
$STD uv venv .venv
|
||||
$STD .venv/bin/uv pip install --no-cache-dir -r requirements.txt
|
||||
mkdir -p data/chromadb
|
||||
$STD npm install
|
||||
mkdir -p /opt/paperless-ai/data
|
||||
@ -87,7 +85,7 @@ After=network.target
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/opt/paperless-ai
|
||||
ExecStart=/usr/bin/python3 main.py --host 0.0.0.0 --port 8000 --initialize
|
||||
ExecStart=/opt/paperless-ai/.venv/bin/python main.py --host 0.0.0.0 --port 8000 --initialize
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
|
@ -35,17 +35,9 @@ $STD apt-get install -y \
|
||||
libleptonica-dev
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
PG_VERSION="16" install_postgresql
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-pip \
|
||||
python3-dev \
|
||||
python3-setuptools \
|
||||
python3-wheel
|
||||
msg_ok "Setup Python3"
|
||||
|
||||
msg_info "Installing OCR Dependencies (Patience)"
|
||||
$STD apt-get install -y \
|
||||
unpaper \
|
||||
@ -85,8 +77,7 @@ $STD tar -xf "paperless-ngx-$Paperlessngx.tar.xz" -C /opt/
|
||||
mv paperless-ngx paperless
|
||||
rm "paperless-ngx-$Paperlessngx.tar.xz"
|
||||
cd /opt/paperless
|
||||
$STD pip install --upgrade pip
|
||||
$STD pip install -r requirements.txt
|
||||
$STD uv sync
|
||||
curl -fsSL "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/paperless.conf.example" -o /opt/paperless/paperless.conf
|
||||
mkdir -p {consume,data,media,static}
|
||||
sed -i -e 's|#PAPERLESS_REDIS=redis://localhost:6379|PAPERLESS_REDIS=redis://localhost:6379|' /opt/paperless/paperless.conf
|
||||
@ -98,7 +89,7 @@ echo "${Paperlessngx}" >/opt/"${APPLICATION}"_version.txt
|
||||
msg_ok "Installed Paperless-ngx"
|
||||
|
||||
msg_info "Installing Natural Language Toolkit (Patience)"
|
||||
$STD python3 -m nltk.downloader -d /usr/share/nltk_data all
|
||||
$STD /opt/paperless/.venv/bin/python -m nltk.downloader -d /usr/share/nltk_data all
|
||||
msg_ok "Installed Natural Language Toolkit"
|
||||
|
||||
msg_info "Setting up PostgreSQL database"
|
||||
@ -122,7 +113,7 @@ sed -i -e "s|#PAPERLESS_DBUSER=paperless|PAPERLESS_DBUSER=$DB_USER|" /opt/paperl
|
||||
sed -i -e "s|#PAPERLESS_DBPASS=paperless|PAPERLESS_DBPASS=$DB_PASS|" /opt/paperless/paperless.conf
|
||||
sed -i -e "s|#PAPERLESS_SECRET_KEY=change-me|PAPERLESS_SECRET_KEY=$SECRET_KEY|" /opt/paperless/paperless.conf
|
||||
cd /opt/paperless/src
|
||||
$STD python3 manage.py migrate
|
||||
$STD /opt/paperless/.venv/bin/python manage migrate
|
||||
msg_ok "Set up PostgreSQL database"
|
||||
|
||||
read -r -p "${TAB3}Would you like to add Adminer? <y/N> " prompt
|
||||
@ -144,7 +135,7 @@ fi
|
||||
|
||||
msg_info "Setting up admin Paperless-ngx User & Password"
|
||||
## From https://github.com/linuxserver/docker-paperless-ngx/blob/main/root/etc/cont-init.d/99-migrations
|
||||
cat <<EOF | python3 /opt/paperless/src/manage.py shell
|
||||
cat <<EOF | /opt/paperless/.venv/bin/python /opt/paperless/src/manage shell
|
||||
from django.contrib.auth import get_user_model
|
||||
UserModel = get_user_model()
|
||||
user = UserModel.objects.create_user('admin', password='$DB_PASS')
|
||||
@ -194,7 +185,7 @@ Requires=redis.service
|
||||
[Service]
|
||||
WorkingDirectory=/opt/paperless/src
|
||||
ExecStartPre=/bin/sleep 2
|
||||
ExecStart=python3 manage.py document_consumer
|
||||
ExecStart=/opt/paperless/.venv/bin/python manage document_consumer
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
@ -42,22 +42,16 @@ $STD lighttpd-enable-mod fastcgi-php
|
||||
service lighttpd force-reload
|
||||
msg_ok "Installed PHP Dependencies"
|
||||
|
||||
msg_info "Installing Python Dependencies"
|
||||
$STD apt-get -y install \
|
||||
python3-pip \
|
||||
python3-requests \
|
||||
python3-tz \
|
||||
python3-tzlocal
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
$STD pip3 install mac-vendor-lookup
|
||||
$STD pip3 install fritzconnection
|
||||
$STD pip3 install cryptography
|
||||
$STD pip3 install pyunifi
|
||||
msg_ok "Installed Python Dependencies"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Installing Pi.Alert"
|
||||
curl -fsSL https://github.com/leiweibau/Pi.Alert/raw/main/tar/pialert_latest.tar | tar xvf - -C /opt >/dev/null 2>&1
|
||||
rm -rf /var/lib/ieee-data /var/www/html/index.html
|
||||
cd /opt/pialert
|
||||
$STD uv venv /opt/pialert/.venv
|
||||
$STD /opt/pialert/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/pialert/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/pialert/.venv/bin/python -m pip install mac-vendor-lookup fritzconnection cryptography pyunifi
|
||||
sed -i -e 's#^sudo cp -n /usr/share/ieee-data/.* /var/lib/ieee-data/#\# &#' -e '/^sudo mkdir -p 2_backup$/s/^/# /' -e '/^sudo cp \*.txt 2_backup$/s/^/# /' -e '/^sudo cp \*.csv 2_backup$/s/^/# /' /opt/pialert/back/update_vendors.sh
|
||||
mv /var/www/html/index.lighttpd.html /var/www/html/index.lighttpd.html.old
|
||||
ln -s /usr/share/ieee-data/ /var/lib/
|
||||
@ -75,7 +69,7 @@ done
|
||||
sed -i 's#PIALERT_PATH\s*=\s*'\''/home/pi/pialert'\''#PIALERT_PATH = '\''/opt/pialert'\''#' /opt/pialert/config/pialert.conf
|
||||
sed -i 's/$HOME/\/opt/g' /opt/pialert/install/pialert.cron
|
||||
crontab /opt/pialert/install/pialert.cron
|
||||
echo "python3 /opt/pialert/back/pialert.py 1" >/usr/bin/scan
|
||||
echo "/opt/pialert/.venv/bin/python /opt/pialert/back/pialert.py 1" >/usr/bin/scan
|
||||
chmod +x /usr/bin/scan
|
||||
echo "/opt/pialert/back/pialert-cli set_permissions --lxc" >/usr/bin/permissions
|
||||
chmod +x /usr/bin/permissions
|
||||
@ -84,9 +78,9 @@ chmod +x /usr/bin/sudoers
|
||||
msg_ok "Installed Pi.Alert"
|
||||
|
||||
msg_info "Start Pi.Alert Scan (Patience)"
|
||||
$STD python3 /opt/pialert/back/pialert.py update_vendors
|
||||
$STD python3 /opt/pialert/back/pialert.py internet_IP
|
||||
$STD python3 /opt/pialert/back/pialert.py 1
|
||||
$STD /opt/pialert/.venv/bin/python /opt/pialert/back/pialert.py update_vendors
|
||||
$STD /opt/pialert/.venv/bin/python /opt/pialert/back/pialert.py internet_IP
|
||||
$STD /opt/pialert/.venv/bin/python /opt/pialert/back/pialert.py 1
|
||||
msg_ok "Finished Pi.Alert Scan"
|
||||
|
||||
motd_ssh
|
||||
|
@ -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
|
||||
|
@ -16,8 +16,7 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
diffutils \
|
||||
policykit-1
|
||||
diffutils
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Creating dedicated user pulse..."
|
||||
|
@ -15,17 +15,20 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
apache2-utils \
|
||||
python3-pip \
|
||||
python3.11-venv
|
||||
apache2-utils
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Setting up Radicale"
|
||||
python3 -m venv /opt/radicale
|
||||
source /opt/radicale/bin/activate
|
||||
$STD python3 -m pip install --upgrade https://github.com/Kozea/Radicale/archive/master.tar.gz
|
||||
mkdir -p /opt/radicale/{users}
|
||||
cd /opt/radicale
|
||||
$STD uv venv /opt/radicale/.venv
|
||||
$STD /opt/radicale/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/radicale/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/radicale/.venv/bin/python -m pip install --upgrade https://github.com/Kozea/Radicale/archive/master.tar.gz
|
||||
RNDPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
$STD htpasswd -c -b -5 /opt/radicale/users admin $RNDPASS
|
||||
$STD htpasswd -c -b -5 /opt/radicale/users admin "$RNDPASS"
|
||||
{
|
||||
echo "Radicale Credentials"
|
||||
echo "Admin User: admin"
|
||||
@ -34,16 +37,15 @@ $STD htpasswd -c -b -5 /opt/radicale/users admin $RNDPASS
|
||||
msg_ok "Done setting up Radicale"
|
||||
|
||||
msg_info "Setup Service"
|
||||
|
||||
cat <<EOF >/opt/radicale/start.sh
|
||||
#!/usr/bin/env bash
|
||||
source /opt/radicale/bin/activate
|
||||
python3 -m radicale --storage-filesystem-folder=/var/lib/radicale/collections --hosts 0.0.0.0:5232 --auth-type htpasswd --auth-htpasswd-filename /opt/radicale/users --auth-htpasswd-encryption sha512
|
||||
uv run -m radicale --storage-filesystem-folder=/var/lib/radicale/collections --hosts 0.0.0.0:5232 --auth-type htpasswd --auth-htpasswd-filename /opt/radicale/users --auth-htpasswd-encryption sha512
|
||||
EOF
|
||||
|
||||
chmod +x /opt/radicale/start.sh
|
||||
|
||||
cat <<EOF >/etc/systemd/system/radicale.service
|
||||
[Unit]
|
||||
Description=A simple CalDAV (calendar) and CardDAV (contact) server
|
||||
After=network.target
|
||||
Requires=network.target
|
||||
@ -51,13 +53,11 @@ Requires=network.target
|
||||
[Service]
|
||||
ExecStart=/opt/radicale/start.sh
|
||||
Restart=on-failure
|
||||
# User=radicale
|
||||
# Deny other users access to the calendar data
|
||||
# UMask=0027
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl enable -q --now radicale
|
||||
msg_ok "Created Service"
|
||||
|
||||
|
@ -15,14 +15,10 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
par2 \
|
||||
p7zip-full
|
||||
par2 \
|
||||
p7zip-full
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup uv"
|
||||
setup_uv
|
||||
msg_ok "Setup uv"
|
||||
|
||||
msg_info "Setup Unrar"
|
||||
cat <<EOF >/etc/apt/sources.list.d/non-free.list
|
||||
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
|
||||
@ -35,11 +31,11 @@ msg_ok "Setup Unrar"
|
||||
msg_info "Installing SABnzbd"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
mkdir -p /opt/sabnzbd
|
||||
$STD uv venv /opt/sabnzbd/venv
|
||||
cd /opt/sabnzbd
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://github.com/sabnzbd/sabnzbd/releases/download/${RELEASE}/SABnzbd-${RELEASE}-src.tar.gz" -o "$temp_file"
|
||||
tar -xzf "$temp_file" -C /opt/sabnzbd --strip-components=1
|
||||
$STD uv pip install -r /opt/sabnzbd/requirements.txt --python=/opt/sabnzbd/venv/bin/python
|
||||
VENV_FOLDER="/opt/sabnzbd/.venv" REQUIREMENTS_FILE="requirements.txt" PYTHON_VERSION="3.12" setup_uv_venv
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
msg_ok "Installed SABnzbd"
|
||||
|
||||
@ -51,7 +47,7 @@ After=network.target
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/opt/sabnzbd
|
||||
ExecStart=/opt/sabnzbd/venv/bin/python SABnzbd.py -s 0.0.0.0:7777
|
||||
ExecStart=/opt/sabnzbd/.venv/bin/python SABnzbd.py -s 0.0.0.0:7777
|
||||
Restart=always
|
||||
User=root
|
||||
|
||||
|
@ -22,13 +22,7 @@ $STD apt-get install -y \
|
||||
git
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-{pip,venv,yaml,dev}
|
||||
$STD pip install --upgrade pip setuptools wheel
|
||||
$STD pip install pyyaml
|
||||
msg_ok "Setup Python3"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Setup SearXNG"
|
||||
mkdir -p /usr/local/searxng /etc/searxng
|
||||
@ -36,11 +30,10 @@ useradd -d /etc/searxng searxng
|
||||
chown searxng:searxng /usr/local/searxng /etc/searxng
|
||||
$STD git clone https://github.com/searxng/searxng.git /usr/local/searxng/searxng-src
|
||||
cd /usr/local/searxng/
|
||||
sudo -u searxng python3 -m venv /usr/local/searxng/searx-pyenv
|
||||
source /usr/local/searxng/searx-pyenv/bin/activate
|
||||
$STD pip install --upgrade pip setuptools wheel
|
||||
$STD pip install pyyaml
|
||||
$STD pip install --use-pep517 --no-build-isolation -e /usr/local/searxng/searxng-src
|
||||
$STD uv venv /usr/local/searxng/.venv
|
||||
$STD uv pip install --upgrade pip setuptools wheel pyyaml
|
||||
$STD uv pip install --no-build-isolation -e /usr/local/searxng/searxng-src
|
||||
|
||||
SECRET_KEY=$(openssl rand -hex 32)
|
||||
cat <<EOF >/etc/searxng/settings.yml
|
||||
# SearXNG settings
|
||||
@ -94,7 +87,7 @@ Type=simple
|
||||
User=searxng
|
||||
Group=searxng
|
||||
Environment="SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml"
|
||||
ExecStart=/usr/local/searxng/searx-pyenv/bin/python -m searx.webapp
|
||||
ExecStart=/usr/local/searxng/searx-pyenv/bin/uv run -m searx.webapp
|
||||
WorkingDirectory=/usr/local/searxng/searxng-src
|
||||
Restart=always
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# Author: tremor021
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/YuukanOO/seelf
|
||||
|
||||
@ -21,17 +21,21 @@ msg_ok "Installed Dependencies"
|
||||
|
||||
install_go
|
||||
NODE_VERSION="22" install_node_and_modules
|
||||
fetch_and_deploy_gh_release "YuukanOO/seelf"
|
||||
|
||||
msg_info "Setting up seelf. Patience"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/YuukanOO/seelf/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
curl -fsSL "https://github.com/YuukanOO/seelf/archive/refs/tags/v${RELEASE}.tar.gz" -o "v${RELEASE}.tar.gz"
|
||||
tar -xzf v"${RELEASE}".tar.gz
|
||||
mv seelf-"${RELEASE}"/ /opt/seelf
|
||||
cd /opt/seelf
|
||||
$STD make build
|
||||
PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
mkdir -p /opt/seelf/data
|
||||
{
|
||||
echo "ADMIN_EMAIL=admin@example.com"
|
||||
echo "ADMIN_PASSWORD=$PASS"
|
||||
} | tee .env ~/seelf.creds >/dev/null
|
||||
|
||||
echo "${RELEASE}" >/opt/seelf_version.txt
|
||||
SEELF_ADMIN_EMAIL=admin@example.com SEELF_ADMIN_PASSWORD=$PASS ./seelf serve &>/dev/null &
|
||||
sleep 5
|
||||
kill $!
|
||||
@ -47,10 +51,8 @@ After=network.target
|
||||
Type=simple
|
||||
User=root
|
||||
Group=root
|
||||
EnvironmentFile=/opt/seelf/.env
|
||||
Environment=DATA_PATH=/opt/seelf/data
|
||||
WorkingDirectory=/opt/seelf
|
||||
ExecStart=/opt/seelf/./seelf -c data/conf.yml serve
|
||||
ExecStart=/opt/seelf/./seelf serve
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
@ -62,7 +64,13 @@ msg_ok "Created Service"
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
# Cleanup
|
||||
msg_info "Cleaning up"
|
||||
rm -f ~/v"${RELEASE}".tar.gz
|
||||
rm -f "$temp_file"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
@ -13,16 +13,13 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
python3-pip
|
||||
msg_ok "Installed Dependencies"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Setup ${APPLICATION}"
|
||||
tmp_file=$(mktemp)
|
||||
RELEASE=$(curl -s https://api.github.com/repos/slskd/slskd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
curl -fsSL "https://github.com/slskd/slskd/releases/download/${RELEASE}/slskd-${RELEASE}-linux-x64.zip" -o $tmp_file
|
||||
$STD unzip $tmp_file -d /opt/${APPLICATION}
|
||||
curl -fsSL "https://github.com/slskd/slskd/releases/download/${RELEASE}/slskd-${RELEASE}-linux-x64.zip" -o "$tmp_file"
|
||||
$STD unzip "$tmp_file" -d /opt/${APPLICATION}
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
JWT_KEY=$(openssl rand -base64 44)
|
||||
SLSKD_API_KEY=$(openssl rand -base64 44)
|
||||
@ -40,13 +37,13 @@ sed -i \
|
||||
msg_ok "Setup ${APPLICATION}"
|
||||
|
||||
msg_info "Installing Soularr"
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
cd /tmp
|
||||
curl -fsSL -o main.zip https://github.com/mrusse/soularr/archive/refs/heads/main.zip
|
||||
$STD unzip main.zip
|
||||
mv soularr-main /opt/soularr
|
||||
cd /opt/soularr
|
||||
$STD pip install -r requirements.txt
|
||||
$STD uv venv /opt/soularr/.venv
|
||||
$STD uv pip install -r requirements.txt
|
||||
sed -i \
|
||||
-e "\|[Slskd]|,\|host_url|s|yourslskdapikeygoeshere|$SLSKD_API_KEY|" \
|
||||
-e "/host_url/s/slskd/localhost/" \
|
||||
@ -54,7 +51,7 @@ sed -i \
|
||||
sed -i \
|
||||
-e "/#This\|#Default\|INTERVAL/{N;d;}" \
|
||||
-e "/while\|#Pass/d" \
|
||||
-e "\|python|s|app|opt/soularr|; s|python|python3|" \
|
||||
-e "\|python|s|app|opt/soularr|; s|python|/opt/soularr/.venv/bin/python3|" \
|
||||
-e "/dt/,+2d" \
|
||||
/opt/soularr/run.sh
|
||||
sed -i -E "/(soularr.py)/s/.{5}$//; /if/,/fi/s/.{4}//" /opt/soularr/run.sh
|
||||
@ -85,7 +82,6 @@ RefuseManualStop=no
|
||||
|
||||
[Timer]
|
||||
Persistent=true
|
||||
# run every 5 minutes
|
||||
OnCalendar=*-*-* *:0/5:00
|
||||
Unit=soularr.service
|
||||
|
||||
@ -106,7 +102,8 @@ ExecStart=/bin/bash -c /opt/soularr/run.sh
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now ${APPLICATION}
|
||||
|
||||
systemctl enable -q --now soularr
|
||||
systemctl enable -q soularr.timer
|
||||
msg_ok "Created Services"
|
||||
|
||||
@ -114,8 +111,7 @@ motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf $tmp_file
|
||||
rm -rf /tmp/main.zip
|
||||
rm -f "$tmp_file" /tmp/main.zip
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
@ -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/Donkie/Spoolman
|
||||
|
||||
@ -22,24 +21,14 @@ $STD apt-get install -y \
|
||||
ca-certificates
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y \
|
||||
python3-dev \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
python3-pip
|
||||
msg_ok "Setup Python3"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
fetch_and_deploy_gh_release "spoolman" "Donkie/Spoolman" "prebuild" "latest" "/opt/spoolman" "spoolman.zip"
|
||||
|
||||
msg_info "Installing Spoolman"
|
||||
RELEASE=$(curl -fsSL https://github.com/Donkie/Spoolman/releases/latest | grep "title>Release" | cut -d " " -f 4)
|
||||
cd /opt
|
||||
curl -fsSL "https://github.com/Donkie/Spoolman/releases/download/$RELEASE/spoolman.zip" -o "spoolman.zip"
|
||||
$STD unzip spoolman.zip -d spoolman
|
||||
rm -rf spoolman.zip
|
||||
cd spoolman
|
||||
$STD pip3 install -r requirements.txt
|
||||
cd /opt/spoolman
|
||||
$STD uv venv /opt/spoolman/.venv
|
||||
$STD /opt/spoolman/.venv/bin/uv pip install -r requirements.txt
|
||||
curl -fsSL "https://raw.githubusercontent.com/Donkie/Spoolman/master/.env.example" -o ".env"
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
msg_ok "Installed Spoolman"
|
||||
|
||||
msg_info "Creating Service"
|
||||
@ -47,13 +36,15 @@ cat <<EOF >/etc/systemd/system/spoolman.service
|
||||
[Unit]
|
||||
Description=Spoolman
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/spoolman
|
||||
EnvironmentFile=/opt/spoolman/.env
|
||||
ExecStart=uvicorn spoolman.main:app --host 0.0.0.0 --port 7912
|
||||
ExecStart=/opt/spoolman/.venv/bin/uvicorn spoolman.main:app --host 0.0.0.0 --port 7912
|
||||
Restart=always
|
||||
User=root
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
@ -40,12 +40,13 @@ $STD apt-get install -y \
|
||||
python3-uno
|
||||
msg_ok "Installed LibreOffice Components"
|
||||
|
||||
msg_info "Installing Python Dependencies"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-pip
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
$STD pip3 install \
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Installing Python Dependencies via uv"
|
||||
$STD uv venv /opt/stirling/.venv
|
||||
$STD /opt/stirling/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/stirling/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/stirling/.venv/bin/python -m pip install \
|
||||
uno \
|
||||
opencv-python-headless \
|
||||
unoconv \
|
||||
|
@ -14,10 +14,8 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
NODE_VERSION="22"
|
||||
NODE_MODULE="npm@latest,yarn@latest"
|
||||
install_node_and_modules
|
||||
setup_uv
|
||||
NODE_VERSION="22" NODE_MODULE="npm@latest,yarn@latest" install_node_and_modules
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
fetch_and_deploy_gh_release "CrazyWolf13/streamlink-webui"
|
||||
|
||||
msg_info "Setup ${APPLICATION}"
|
||||
|
@ -15,7 +15,7 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies (Patience)"
|
||||
$STD apt-get install -y --no-install-recommends \
|
||||
$STD apt-get install -y \
|
||||
build-essential \
|
||||
libpq-dev \
|
||||
libmagic-dev \
|
||||
@ -32,25 +32,22 @@ $STD apt-get install -y --no-install-recommends \
|
||||
libxmlsec1-openssl
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-setuptools \
|
||||
python3-pip \
|
||||
python3-xmlsec
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Setup Python3"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_VERSION="20" NODE_MODULE="yarn@latest" install_node_and_modules
|
||||
|
||||
msg_info "Installing Tandoor (Patience)"
|
||||
$STD git clone https://github.com/TandoorRecipes/recipes -b master /opt/tandoor
|
||||
mkdir -p /opt/tandoor/{config,api,mediafiles,staticfiles}
|
||||
$STD pip3 install -r /opt/tandoor/requirements.txt
|
||||
cd /opt/tandoor
|
||||
$STD uv venv /opt/tandoor/.venv
|
||||
$STD /opt/tandoor/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/tandoor/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/tandoor/.venv/bin/python -m pip install -r requirements.txt
|
||||
|
||||
cd /opt/tandoor/vue
|
||||
$STD yarn install
|
||||
$STD yarn build
|
||||
|
||||
curl -fsSL "https://raw.githubusercontent.com/TandoorRecipes/recipes/develop/.env.template" -o "/opt/tandoor/.env"
|
||||
DB_NAME=db_recipes
|
||||
DB_USER=tandoor
|
||||
@ -65,7 +62,7 @@ sed -i -e "s|SECRET_KEY=.*|SECRET_KEY=$secret_key|g" \
|
||||
-e "s|POSTGRES_USER=.*|POSTGRES_USER=$DB_USER|g" \
|
||||
-e "\$a\STATIC_URL=/staticfiles/" /opt/tandoor/.env
|
||||
cd /opt/tandoor
|
||||
$STD python3 version.py
|
||||
$STD /opt/tandoor/.venv/bin/python -m version.py
|
||||
msg_ok "Installed Tandoor"
|
||||
|
||||
msg_info "Install/Set up PostgreSQL Database"
|
||||
@ -83,9 +80,9 @@ echo -e "Tandoor Database Name: \e[32m$DB_NAME\e[0m" >>~/tandoor.creds
|
||||
echo -e "Tandoor Database User: \e[32m$DB_USER\e[0m" >>~/tandoor.creds
|
||||
echo -e "Tandoor Database Password: \e[32m$DB_PASS\e[0m" >>~/tandoor.creds
|
||||
export $(cat /opt/tandoor/.env | grep "^[^#]" | xargs)
|
||||
/usr/bin/python3 /opt/tandoor/manage.py migrate >/dev/null 2>&1
|
||||
/usr/bin/python3 /opt/tandoor/manage.py collectstatic --no-input >/dev/null 2>&1
|
||||
/usr/bin/python3 /opt/tandoor/manage.py collectstatic_js_reverse >/dev/null 2>&1
|
||||
$STD /opt/tandoor/.venv/bin/python -m manage migrate
|
||||
$STD /opt/tandoor/.venv/bin/python -m manage collectstatic --no-input
|
||||
$STD /opt/tandoor/.venv/bin/python -m python manage collectstatic_js_reverse
|
||||
msg_ok "Set up PostgreSQL Database"
|
||||
|
||||
msg_info "Creating Services"
|
||||
@ -100,7 +97,7 @@ Restart=always
|
||||
RestartSec=3
|
||||
WorkingDirectory=/opt/tandoor
|
||||
EnvironmentFile=/opt/tandoor/.env
|
||||
ExecStart=/usr/local/bin/gunicorn --error-logfile /tmp/gunicorn_err.log --log-level debug --capture-output --bind unix:/opt/tandoor/tandoor.sock recipes.wsgi:application
|
||||
ExecStart=/opt/tandoor/.venv/bin/gunicorn --error-logfile /tmp/gunicorn_err.log --log-level debug --capture-output --bind unix:/opt/tandoor/tandoor.sock recipes.wsgi:application
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
@ -14,21 +14,12 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies. Patience"
|
||||
$STD apt-get install -y \
|
||||
git
|
||||
$STD apt-get install -y git
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y python3-venv
|
||||
msg_ok "Setup Python3"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" install_node_and_modules
|
||||
|
||||
msg_info "Setup Platformio"
|
||||
curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
|
||||
$STD python3 get-platformio.py
|
||||
msg_ok "Setup Platformio"
|
||||
|
||||
msg_info "Setup TasmoCompiler"
|
||||
mkdir /tmp/Tasmota
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/benzino77/tasmocompiler/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
@ -37,14 +28,18 @@ cd /tmp
|
||||
tar xzf /tmp/v${RELEASE}.tar.gz
|
||||
mv tasmocompiler-${RELEASE}/ /opt/tasmocompiler/
|
||||
cd /opt/tasmocompiler
|
||||
$STD uv venv /opt/tasmocompiler/.venv
|
||||
$STD /opt/tasmocompiler/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/tasmocompiler/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/tasmocompiler/.venv/bin/python -m pip install platformio
|
||||
$STD yarn install
|
||||
export NODE_OPTIONS=--openssl-legacy-provider
|
||||
$STD npm i
|
||||
$STD yarn build
|
||||
mkdir -p /usr/local/bin
|
||||
ln -s ~/.platformio/penv/bin/platformio /usr/local/bin/platformio
|
||||
ln -s ~/.platformio/penv/bin/pio /usr/local/bin/pio
|
||||
ln -s ~/.platformio/penv/bin/piodebuggdb /usr/local/bin/piodebuggdb
|
||||
ln -sf /opt/tasmocompiler/.venv/bin/platformio /usr/local/bin/platformio
|
||||
ln -sf /opt/tasmocompiler/.venv/bin/pio /usr/local/bin/pio
|
||||
ln -sf /opt/tasmocompiler/.venv/bin/piodebuggdb /usr/local/bin/piodebuggdb
|
||||
echo "${RELEASE}" >"/opt/tasmocompiler_version.txt"
|
||||
msg_ok "Setup TasmoCompiler"
|
||||
|
||||
|
@ -15,22 +15,17 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y git
|
||||
$STD apt-get install -y pip
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-pip
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Setup Python3"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Installing Tautulli"
|
||||
cd /opt
|
||||
$STD git clone https://github.com/Tautulli/Tautulli.git
|
||||
$STD pip install -q -r /opt/Tautulli/requirements.txt
|
||||
$STD pip install pyopenssl
|
||||
cd /opt/Tautulli
|
||||
$STD uv venv /opt/Tautulli/.venv
|
||||
$STD uv pip install -r /opt/Tautulli/requirements.txt
|
||||
$STD uv pip install pyopenssl
|
||||
msg_ok "Installed Tautulli"
|
||||
|
||||
msg_info "Creating Service"
|
||||
@ -44,7 +39,7 @@ WorkingDirectory=/opt/Tautulli/
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/python3 /opt/Tautulli/Tautulli.py
|
||||
ExecStart=/opt/Tautulli/.venv/bin/python /opt/Tautulli/Tautulli.py
|
||||
KillSignal=SIGINT
|
||||
TimeoutStopSec=20
|
||||
SyslogIdentifier=tautulli
|
||||
|
@ -16,7 +16,6 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
python3 \
|
||||
cmake \
|
||||
g++ \
|
||||
build-essential \
|
||||
|
@ -14,10 +14,11 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies (Patience)"
|
||||
$STD apt-get install -y ffmpeg
|
||||
$STD apt-get install -y python3-pip
|
||||
$STD apt-get install -y ffmpeg gcc
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
if [[ "$CTTYPE" == "0" ]]; then
|
||||
msg_info "Setting Up Hardware Acceleration"
|
||||
$STD apt-get -y install \
|
||||
@ -33,7 +34,12 @@ if [[ "$CTTYPE" == "0" ]]; then
|
||||
fi
|
||||
|
||||
msg_info "Installing Unmanic"
|
||||
$STD pip3 install unmanic
|
||||
mkdir -p /opt/unmanic
|
||||
cd /opt/unmanic
|
||||
$STD uv venv /opt/unmanic/.venv
|
||||
$STD /opt/unmanic/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/unmanic/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/unmanic/.venv/bin/python -m pip install unmanic
|
||||
sed -i -e 's/^sgx:x:104:$/render:x:104:root/' -e 's/^render:x:106:root$/sgx:x:106:/' /etc/group
|
||||
msg_ok "Installed Unmanic"
|
||||
|
||||
@ -47,7 +53,7 @@ StartLimitBurst=3
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/local/bin/unmanic
|
||||
ExecStart=/opt/unmanic/.venv/bin/unmanic
|
||||
Restart=always
|
||||
RestartSec=30
|
||||
|
||||
|
@ -35,13 +35,9 @@ $STD apt-get -y install --no-install-recommends \
|
||||
x11-apps
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" install_node_and_modules
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD apt-get install -y python3
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Setup Python3"
|
||||
|
||||
msg_info "Installing Chromium"
|
||||
curl -fsSL https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /etc/apt/trusted.gpg.d/google-archive.gpg
|
||||
echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >/etc/apt/sources.list.d/google.list
|
||||
|
@ -20,11 +20,7 @@ $STD apt-get install -y \
|
||||
libapache2-mod-wsgi-py3
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Python"
|
||||
$STD apt-get install -y python3-pip
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Installed Python"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_VERSION="22" NODE_MODULE="yarn@latest,sass" install_node_and_modules
|
||||
|
||||
msg_info "Setting up wger"
|
||||
@ -42,13 +38,17 @@ curl -fsSL "https://github.com/wger-project/wger/archive/refs/tags/$RELEASE.tar.
|
||||
tar xzf $RELEASE.tar.gz
|
||||
mv wger-$RELEASE /home/wger/src
|
||||
cd /home/wger/src
|
||||
$STD pip install -r requirements_prod.txt
|
||||
$STD pip install -e .
|
||||
$STD wger create-settings --database-path /home/wger/db/database.sqlite
|
||||
$STD uv venv /home/wger/.venv
|
||||
$STD /home/wger/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /home/wger/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /home/wger/.venv/bin/python -m pip install -r requirements_prod.txt
|
||||
$STD /home/wger/.venv/bin/python -m pip install -e .
|
||||
$STD /home/wger/.venv/bin/wger create-settings --database-path /home/wger/db/database.sqlite
|
||||
sed -i "s#home/wger/src/media#home/wger/media#g" /home/wger/src/settings.py
|
||||
sed -i "/MEDIA_ROOT = '\/home\/wger\/media'/a STATIC_ROOT = '/home/wger/static'" /home/wger/src/settings.py
|
||||
$STD wger bootstrap
|
||||
$STD python3 manage.py collectstatic
|
||||
$STD /home/wger/.venv/bin/wger bootstrap
|
||||
cd /home/wger/src/
|
||||
$STD /home/wger/.venv/bin/python -m manage collectstatic
|
||||
echo "${RELEASE}" >/opt/wger_version.txt
|
||||
msg_ok "Finished setting up wger"
|
||||
|
||||
@ -92,7 +92,7 @@ After=network.target
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
ExecStart=/usr/local/bin/wger start -a 0.0.0.0 -p 3000
|
||||
ExecStart=/home/wger/.venv/bin/wger start -a 0.0.0.0 -p 3000
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Author: tteck (tteckster)
|
||||
# Co-Author: MickLesk
|
||||
# Co-Author: michelroegl-brunner
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/python_to_uv/LICENSE
|
||||
|
||||
variables() {
|
||||
NSAPP=$(echo "${APP,,}" | tr -d ' ') # This function sets the NSAPP variable by converting the value of the APP variable to lowercase and removing any spaces.
|
||||
@ -14,7 +14,7 @@ variables() {
|
||||
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)" # generates a random UUID and sets it to the RANDOM_UUID variable.
|
||||
}
|
||||
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/api.func)
|
||||
|
||||
# This function sets various color variables using ANSI escape codes for formatting text in the terminal.
|
||||
color() {
|
||||
@ -70,7 +70,7 @@ catch_errors() {
|
||||
|
||||
# This function is called when an error occurs. It receives the exit code, line number, and command that caused the error, and displays an error message.
|
||||
error_handler() {
|
||||
source /dev/stdin <<<$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
|
||||
source /dev/stdin <<<$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/api.func)
|
||||
if [ -n "$SPINNER_PID" ] && ps -p "$SPINNER_PID" >/dev/null; then kill "$SPINNER_PID" >/dev/null; fi
|
||||
printf "\e[?25h"
|
||||
local exit_code="$?"
|
||||
@ -276,7 +276,7 @@ update_motd_ip() {
|
||||
# Function to download & save header files
|
||||
get_header() {
|
||||
local app_name=$(echo "${APP,,}" | tr -d ' ')
|
||||
local header_url="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/headers/${app_name}"
|
||||
local header_url="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/ct/headers/${app_name}"
|
||||
local local_header_path="/usr/local/community-scripts/headers/${app_name}"
|
||||
|
||||
mkdir -p "$(dirname "$local_header_path")"
|
||||
@ -952,7 +952,7 @@ install_script() {
|
||||
header_info
|
||||
echo -e "${INFO}${HOLD} ${GN}Using Config File on node $PVEHOST_NAME${CL}"
|
||||
METHOD="config_file"
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/config-file.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/config-file.func)
|
||||
config_file
|
||||
break
|
||||
;;
|
||||
@ -1025,13 +1025,8 @@ check_container_storage() {
|
||||
}
|
||||
|
||||
start() {
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/tools.func)
|
||||
if command -v pveversion >/dev/null 2>&1; then
|
||||
if ! (whiptail --backtitle "Proxmox VE Helper Scripts" --title "${APP} LXC" --yesno "This will create a New ${APP} LXC. Proceed?" 10 58); then
|
||||
clear
|
||||
exit_script
|
||||
exit
|
||||
fi
|
||||
SPINNER_PID=""
|
||||
install_script
|
||||
fi
|
||||
@ -1086,9 +1081,9 @@ build_container() {
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
pushd "$TEMP_DIR" >/dev/null
|
||||
if [ "$var_os" == "alpine" ]; then
|
||||
export FUNCTIONS_FILE_PATH="$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/alpine-install.func)"
|
||||
export FUNCTIONS_FILE_PATH="$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/alpine-install.func)"
|
||||
else
|
||||
export FUNCTIONS_FILE_PATH="$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/install.func)"
|
||||
export FUNCTIONS_FILE_PATH="$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/install.func)"
|
||||
fi
|
||||
export RANDOM_UUID="$RANDOM_UUID"
|
||||
export CACHER="$APT_CACHER"
|
||||
@ -1122,7 +1117,7 @@ build_container() {
|
||||
$PW
|
||||
"
|
||||
# This executes create_lxc.sh and creates the container and .conf file
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/create_lxc.sh)" $?
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/ct/create_lxc.sh)" $?
|
||||
|
||||
LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
|
||||
if [ "$CT_TYPE" == "0" ]; then
|
||||
@ -1191,7 +1186,7 @@ http://dl-cdn.alpinelinux.org/alpine/latest-stable/community
|
||||
EOF'
|
||||
pct exec "$CTID" -- ash -c "apk add bash >/dev/null"
|
||||
fi
|
||||
lxc-attach -n "$CTID" -- bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/install/"$var_install".sh)" $?
|
||||
lxc-attach -n "$CTID" -- bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/install/"$var_install".sh)" $?
|
||||
|
||||
}
|
||||
|
||||
@ -1204,7 +1199,7 @@ description() {
|
||||
cat <<EOF
|
||||
<div align='center'>
|
||||
<a href='https://Helper-Scripts.com' target='_blank' rel='noopener noreferrer'>
|
||||
<img src='https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo-81x112.png' alt='Logo' style='width:81px;height:112px;'/>
|
||||
<img src='https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/images/logo-81x112.png' alt='Logo' style='width:81px;height:112px;'/>
|
||||
</a>
|
||||
|
||||
<h2 style='font-size: 24px; margin: 20px 0;'>${APP} LXC</h2>
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Author: tteck (tteckster)
|
||||
# Co-Author: MickLesk
|
||||
# License: MIT
|
||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# https://github.com/community-scripts/ProxmoxVE/raw/python_to_uv/LICENSE
|
||||
|
||||
# This function sets color variables for formatting output in the terminal
|
||||
color() {
|
||||
@ -69,7 +69,7 @@ catch_errors() {
|
||||
|
||||
# This function handles errors
|
||||
error_handler() {
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/api.func)
|
||||
if [ -n "$SPINNER_PID" ] && ps -p "$SPINNER_PID" >/dev/null; then kill "$SPINNER_PID" >/dev/null; fi
|
||||
printf "\e[?25h"
|
||||
local exit_code="$?"
|
||||
@ -216,7 +216,7 @@ EOF
|
||||
msg_info "Installing core dependencies"
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y sudo curl mc gnupg2
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/misc/tools.func)
|
||||
msg_ok "Core dependencies installed"
|
||||
}
|
||||
|
||||
@ -267,7 +267,7 @@ EOF
|
||||
systemctl restart $(basename $(dirname $GETTY_OVERRIDE) | sed 's/\.d//')
|
||||
msg_ok "Customized Container"
|
||||
fi
|
||||
echo "bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/${app}.sh)\"" >/usr/bin/update
|
||||
echo "bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/python_to_uv/ct/${app}.sh)\"" >/usr/bin/update
|
||||
chmod +x /usr/bin/update
|
||||
|
||||
if [[ -n "${SSH_AUTHORIZED_KEY}" ]]; then
|
||||
|
777
misc/tools.func
777
misc/tools.func
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user