mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-04 10:22:50 +00:00
Compare commits
65 Commits
2025-07-31
...
2025-08-03
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
46728b01fe | ||
|
|
e0abf63778 | ||
|
|
4451f07990 | ||
|
|
6776912a42 | ||
|
|
b914fd95df | ||
|
|
f33afd9163 | ||
|
|
c811b51a0a | ||
|
|
ccbf86196b | ||
|
|
64366a0b34 | ||
|
|
183c459549 | ||
|
|
44e62f73d4 | ||
|
|
2f97e14f4d | ||
|
|
7cd5a8d771 | ||
|
|
9846bfd067 | ||
|
|
77c37a5552 | ||
|
|
8efcab38a4 | ||
|
|
201782552c | ||
|
|
7433f7df0c | ||
|
|
dde882f9e5 | ||
|
|
b8bdf56297 | ||
|
|
df504635a5 | ||
|
|
158bdfc88e | ||
|
|
4eaffda82d | ||
|
|
074bb615e7 | ||
|
|
7c0869e29b | ||
|
|
7862d23866 | ||
|
|
e1669c22de | ||
|
|
00a69678c0 | ||
|
|
1c2ccf81d2 | ||
|
|
88483b7dab | ||
|
|
7c41c51bfe | ||
|
|
ecf01637a5 | ||
|
|
3068ae1383 | ||
|
|
ca8cddb788 | ||
|
|
750397e1af | ||
|
|
30172379cd | ||
|
|
f07b273be3 | ||
|
|
e5c673df44 | ||
|
|
61fb45a0b8 | ||
|
|
084ceae9d9 | ||
|
|
054a963ca2 | ||
|
|
b366ffac34 | ||
|
|
29747ab8b8 | ||
|
|
12b904a014 | ||
|
|
fad4d2e0d7 | ||
|
|
899e576426 | ||
|
|
0f29e5672c | ||
|
|
3e1d43c29a | ||
|
|
ff695fa4ea | ||
|
|
93b80362f6 | ||
|
|
52e08e5474 | ||
|
|
b9408ef06f | ||
|
|
4652338536 | ||
|
|
3c7c540576 | ||
|
|
a0502e00db | ||
|
|
6f56655ad6 | ||
|
|
6de8d50969 | ||
|
|
da217bb3e0 | ||
|
|
f80c7008a8 | ||
|
|
afd577db9e | ||
|
|
47ab850e5b | ||
|
|
654bd1f0d5 | ||
|
|
b6bd8a6de4 | ||
|
|
ae7fe6e3e1 | ||
|
|
3bb787d746 |
61
CHANGELOG.md
61
CHANGELOG.md
@@ -10,8 +10,69 @@
|
||||
> [!CAUTION]
|
||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||
|
||||
## 2025-08-04
|
||||
|
||||
## 2025-08-03
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- docmost: remove build step due new version [@MickLesk](https://github.com/MickLesk) ([#6513](https://github.com/community-scripts/ProxmoxVE/pull/6513))
|
||||
- Fix: Komga uses .komga as storage / so it fails after install [@MickLesk](https://github.com/MickLesk) ([#6517](https://github.com/community-scripts/ProxmoxVE/pull/6517))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Remove: Ubuntu 24.10-VM [@MickLesk](https://github.com/MickLesk) ([#6515](https://github.com/community-scripts/ProxmoxVE/pull/6515))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: openHAB [@tremor021](https://github.com/tremor021) ([#6524](https://github.com/community-scripts/ProxmoxVE/pull/6524))
|
||||
- Refactor: OpenProject [@tremor021](https://github.com/tremor021) ([#6525](https://github.com/community-scripts/ProxmoxVE/pull/6525))
|
||||
|
||||
## 2025-08-02
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Alternative connectivity checks for LXC [@mariano-dagostino](https://github.com/mariano-dagostino) ([#6472](https://github.com/community-scripts/ProxmoxVE/pull/6472))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Immich: fix copy error during install [@vhsdream](https://github.com/vhsdream) ([#6497](https://github.com/community-scripts/ProxmoxVE/pull/6497))
|
||||
- MagicMirror: Fix install process [@tremor021](https://github.com/tremor021) ([#6492](https://github.com/community-scripts/ProxmoxVE/pull/6492))
|
||||
- chore: BookLore repo change [@vhsdream](https://github.com/vhsdream) ([#6493](https://github.com/community-scripts/ProxmoxVE/pull/6493))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- VictoriaMetrics: Make VictoriaLogs optional add-on [@tremor021](https://github.com/tremor021) ([#6489](https://github.com/community-scripts/ProxmoxVE/pull/6489))
|
||||
|
||||
## 2025-08-01
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Fumadocs: add git as dependency [@MickLesk](https://github.com/MickLesk) ([#6459](https://github.com/community-scripts/ProxmoxVE/pull/6459))
|
||||
- Immich: Fix immich-admin script; other fixes | pin to v.137.3 [@vhsdream](https://github.com/vhsdream) ([#6443](https://github.com/community-scripts/ProxmoxVE/pull/6443))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Re-Add: Suwayomi-Server [@MickLesk](https://github.com/MickLesk) ([#6458](https://github.com/community-scripts/ProxmoxVE/pull/6458))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Update homepage.sh to use setup_nodejs [@burgerga](https://github.com/burgerga) ([#6462](https://github.com/community-scripts/ProxmoxVE/pull/6462))
|
||||
- Refactor: Owncast [@tremor021](https://github.com/tremor021) ([#6434](https://github.com/community-scripts/ProxmoxVE/pull/6434))
|
||||
- Refactor: MediaMTX [@tremor021](https://github.com/tremor021) ([#6406](https://github.com/community-scripts/ProxmoxVE/pull/6406))
|
||||
- Refactor: LubeLogger [@tremor021](https://github.com/tremor021) ([#6400](https://github.com/community-scripts/ProxmoxVE/pull/6400))
|
||||
- Refactor: MagicMirror [@tremor021](https://github.com/tremor021) ([#6402](https://github.com/community-scripts/ProxmoxVE/pull/6402))
|
||||
- Refactor: Manage My Damn Life [@tremor021](https://github.com/tremor021) ([#6403](https://github.com/community-scripts/ProxmoxVE/pull/6403))
|
||||
- Refactor: Meilisearch [@tremor021](https://github.com/tremor021) ([#6407](https://github.com/community-scripts/ProxmoxVE/pull/6407))
|
||||
- Refactor: NodeBB [@tremor021](https://github.com/tremor021) ([#6419](https://github.com/community-scripts/ProxmoxVE/pull/6419))
|
||||
- Refactor: oauth2-proxy [@tremor021](https://github.com/tremor021) ([#6421](https://github.com/community-scripts/ProxmoxVE/pull/6421))
|
||||
- Refactor: Outline [@tremor021](https://github.com/tremor021) ([#6424](https://github.com/community-scripts/ProxmoxVE/pull/6424))
|
||||
- Refactor: Overseerr [@tremor021](https://github.com/tremor021) ([#6425](https://github.com/community-scripts/ProxmoxVE/pull/6425))
|
||||
|
||||
## 2025-07-31
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/adityachandelgit/BookLore
|
||||
# Source: https://github.com/booklore-app/BookLore
|
||||
|
||||
APP="BookLore"
|
||||
var_tags="${var_tags:-books;library}"
|
||||
@@ -29,13 +29,13 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/adityachandelgit/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||
if [[ "${RELEASE}" != "$(cat ~/.booklore 2>/dev/null)" ]] || [[ ! -f ~/.booklore ]]; then
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop booklore
|
||||
msg_ok "Stopped $APP"
|
||||
|
||||
fetch_and_deploy_gh_release "booklore" "adityachandelgit/BookLore"
|
||||
fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore"
|
||||
|
||||
msg_info "Building Frontend"
|
||||
cd /opt/booklore/booklore-ui
|
||||
@@ -45,7 +45,7 @@ function update_script() {
|
||||
|
||||
msg_info "Building Backend"
|
||||
cd /opt/booklore/booklore-api
|
||||
APP_VERSION=$(curl -fsSL https://api.github.com/repos/adityachandelgit/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||
APP_VERSION=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
|
||||
$STD ./gradlew clean build --no-daemon
|
||||
mkdir -p /opt/booklore/dist
|
||||
|
||||
@@ -43,6 +43,9 @@ function update_script() {
|
||||
msg_error "Project directory does not exist: $PROJECT_DIR"
|
||||
exit 1
|
||||
fi
|
||||
if ! command -v git &>/dev/null; then
|
||||
$STD apt-get install -y git
|
||||
fi
|
||||
|
||||
msg_info "Stopping service $SERVICE_NAME"
|
||||
systemctl stop "$SERVICE_NAME"
|
||||
|
||||
@@ -27,14 +27,9 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then
|
||||
if ! command -v npm >/dev/null 2>&1; then
|
||||
echo "Installing NPM..."
|
||||
$STD apt-get install -y npm
|
||||
$STD npm install -g pnpm
|
||||
echo "Installed NPM..."
|
||||
fi
|
||||
fi
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
|
||||
|
||||
# ensure that jq is installed
|
||||
if ! command -v jq &>/dev/null; then
|
||||
$STD msg_info "Installing jq..."
|
||||
|
||||
32
ct/immich.sh
32
ct/immich.sh
@@ -58,7 +58,7 @@ function update_script() {
|
||||
done
|
||||
msg_ok "Image-processing libraries updated"
|
||||
fi
|
||||
RELEASE="1.136.0"
|
||||
RELEASE="1.137.3"
|
||||
#RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
@@ -99,11 +99,25 @@ function update_script() {
|
||||
fi
|
||||
|
||||
cp "$ML_DIR"/ml_start.sh "$INSTALL_DIR"
|
||||
if grep -qs "set -a" "$APP_DIR"/bin/start.sh; then
|
||||
cp "$APP_DIR"/bin/start.sh "$INSTALL_DIR"
|
||||
else
|
||||
cat <<EOF >"$INSTALL_DIR"/start.sh
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -a
|
||||
. "$INSTALL_DIR"/.env
|
||||
set +a
|
||||
|
||||
/usr/bin/node "$APP_DIR"/dist/main.js "\$@"
|
||||
EOF
|
||||
chmod +x "$INSTALL_DIR"/start.sh
|
||||
fi
|
||||
rm -rf "${APP_DIR:?}"/*
|
||||
mkdir -p "$ML_DIR"
|
||||
rm -rf "$SRC_DIR"
|
||||
|
||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.136.0" "$SRC_DIR"
|
||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v${RELEASE}" "$SRC_DIR"
|
||||
|
||||
msg_info "Updating ${APP} web and microservices"
|
||||
cd "$SRC_DIR"/server
|
||||
@@ -114,6 +128,10 @@ function update_script() {
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
$STD npm prune --omit=dev --omit=optional
|
||||
cp -a {bin,dist,node_modules,resources,package*.json} "$APP_DIR"/
|
||||
cp package.json "$APP_DIR"/bin
|
||||
mv "$INSTALL_DIR"/start.sh "$APP_DIR"/bin
|
||||
sed -i 's|^start|./start|' "$APP_DIR"/bin/immich-admin
|
||||
cd "$SRC_DIR"/open-api/typescript-sdk
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
@@ -121,7 +139,6 @@ function update_script() {
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
cd "$SRC_DIR"
|
||||
cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,bin/start.sh} "$APP_DIR"/
|
||||
cp -a web/build "$APP_DIR"/www
|
||||
cp LICENSE "$APP_DIR"
|
||||
cd "$APP_DIR"
|
||||
@@ -151,8 +168,8 @@ function update_script() {
|
||||
fi
|
||||
ln -sf "$APP_DIR"/resources "$INSTALL_DIR"
|
||||
cd "$APP_DIR"
|
||||
grep -Rl /usr/src | xargs -n1 sed -i "s|\/usr/src|$INSTALL_DIR|g"
|
||||
grep -RlE "'/build'" | xargs -n1 sed -i "s|'/build'|'$APP_DIR'|g"
|
||||
grep -rl /usr/src | xargs -n1 sed -i "s|\/usr/src|$INSTALL_DIR|g"
|
||||
grep -rlE "'/build'" | xargs -n1 sed -i "s|'/build'|'$APP_DIR'|g"
|
||||
sed -i "s@\"/cache\"@\"$INSTALL_DIR/cache\"@g" "$ML_DIR"/immich_ml/config.py
|
||||
ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$APP_DIR"/upload
|
||||
ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$ML_DIR"/upload
|
||||
@@ -214,6 +231,7 @@ function compile_libjxl() {
|
||||
$STD make clean
|
||||
cd "$STAGING_DIR"
|
||||
rm -rf "$SOURCE"/{build,third_party}
|
||||
sed -i "s/libjxl: .*$/libjxl: $LIBJXL_REVISION/" ~/.immich_library_revisions
|
||||
msg_ok "Recompiled libjxl"
|
||||
fi
|
||||
}
|
||||
@@ -248,6 +266,7 @@ function compile_libheif() {
|
||||
$STD make clean
|
||||
cd "$STAGING_DIR"
|
||||
rm -rf "$SOURCE"/build
|
||||
sed -i "s/libheif: .*$/libheif: $LIBHEIF_REVISION/" ~/.immich_library_revisions
|
||||
msg_ok "Recompiled libheif"
|
||||
fi
|
||||
}
|
||||
@@ -269,6 +288,7 @@ function compile_libraw() {
|
||||
ldconfig /usr/local/lib
|
||||
$STD make clean
|
||||
cd "$STAGING_DIR"
|
||||
sed -i "s/libraw: .*$/libraw: $LIBRAW_REVISION/" ~/.immich_library_revisions
|
||||
msg_ok "Recompiled libraw"
|
||||
fi
|
||||
}
|
||||
@@ -288,6 +308,7 @@ function compile_imagemagick() {
|
||||
ldconfig /usr/local/lib
|
||||
$STD make clean
|
||||
cd "$STAGING_DIR"
|
||||
sed -i "s/imagemagick: .*$/imagemagick: $IMAGEMAGICK_REVISION/" ~/.immich_library_revisions
|
||||
msg_ok "Recompiled ImageMagick"
|
||||
fi
|
||||
}
|
||||
@@ -308,6 +329,7 @@ function compile_libvips() {
|
||||
ldconfig /usr/local/lib
|
||||
cd "$STAGING_DIR"
|
||||
rm -rf "$SOURCE"/build
|
||||
sed -i "s/libvips: .*$/libvips: $LIBVIPS_REVISION/" ~/.immich_library_revisions
|
||||
msg_ok "Recompiled libvips"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ function update_script() {
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
rm -f /opt/komga/komga.jar
|
||||
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "komga" "gotson/komga" "singlefile" "latest" "/opt/komga" "komga*.jar"
|
||||
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "komga-org" "gotson/komga" "singlefile" "latest" "/opt/komga" "komga*.jar"
|
||||
mv /opt/komga/komga-*.jar /opt/komga/komga.jar
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
|
||||
@@ -27,16 +27,17 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/hargata/lubelog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
RELEASE_TRIMMED=$(echo "${RELEASE}" | tr -d ".")
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
if ! command -v jq &>/dev/null; then
|
||||
$STD apt-get install -y jq
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/hargata/lubelog/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||
if [[ ! -f ~/.lubelogger ]] || [[ "${RELEASE}" != "$(cat ~/.lubelogger)" ]]; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop lubelogger
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating ${APP} to v${RELEASE}"
|
||||
cd /opt
|
||||
curl -fsSL "https://github.com/hargata/lubelog/releases/download/v${RELEASE}/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip" -o $(basename "https://github.com/hargata/lubelog/releases/download/v${RELEASE}/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip")
|
||||
msg_info "Backing up data"
|
||||
mkdir -p /tmp/lubeloggerData/data
|
||||
cp /opt/lubelogger/appsettings.json /tmp/lubeloggerData/appsettings.json
|
||||
cp -r /opt/lubelogger/data/ /tmp/lubeloggerData/
|
||||
@@ -50,20 +51,23 @@ function update_script() {
|
||||
[[ -e /opt/lubelogger/wwwroot/temp ]] && cp -r /opt/lubelogger/wwwroot/temp /tmp/lubeloggerData/data/
|
||||
[[ -e /opt/lubelogger/log ]] && cp -r /opt/lubelogger/log /tmp/lubeloggerData/
|
||||
rm -rf /opt/lubelogger
|
||||
$STD unzip LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip -d lubelogger
|
||||
msg_ok "Backed up data"
|
||||
|
||||
fetch_and_deploy_gh_release "lubelogger" "hargata/lubelog" "prebuild" "latest" "/opt/lubelogger" "LubeLogger*linux_x64.zip"
|
||||
|
||||
msg_info "Configuring LubeLogger"
|
||||
chmod 700 /opt/lubelogger/CarCareTracker
|
||||
cp -rf /tmp/lubeloggerData/* /opt/lubelogger/
|
||||
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||
msg_ok "Configured LubeLogger"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start lubelogger
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip
|
||||
rm -rf /tmp/lubeloggerData
|
||||
msg_ok "Cleaned"
|
||||
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||
|
||||
@@ -27,16 +27,17 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/MagicMirrorOrg/MagicMirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt; fi
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
if ! command -v jq &>/dev/null; then
|
||||
$STD apt-get install -y jq
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/MagicMirrorOrg/MagicMirror/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||
if [[ ! -f ~/.magicmirror ]] || [[ "${RELEASE}" != "$(cat ~/.magicmirror)" ]]; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop magicmirror
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating ${APP} to v${RELEASE}"
|
||||
$STD apt-get update
|
||||
$STD apt-get upgrade -y
|
||||
msg_info "Backing up data"
|
||||
rm -rf /opt/magicmirror-backup
|
||||
mkdir /opt/magicmirror-backup
|
||||
cp /opt/magicmirror/config/config.js /opt/magicmirror-backup
|
||||
@@ -44,27 +45,24 @@ function update_script() {
|
||||
cp /opt/magicmirror/css/custom.css /opt/magicmirror-backup
|
||||
fi
|
||||
cp -r /opt/magicmirror/modules /opt/magicmirror-backup
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://github.com/MagicMirrorOrg/MagicMirror/archive/refs/tags/v${RELEASE}.tar.gz" -o ""$temp_file""
|
||||
tar -xzf "$temp_file"
|
||||
rm -rf /opt/magicmirror
|
||||
mv MagicMirror-${RELEASE} /opt/magicmirror
|
||||
msg_ok "Backed up data"
|
||||
|
||||
fetch_and_deploy_gh_release "magicmirror" "MagicMirrorOrg/MagicMirror" "tarball"
|
||||
|
||||
msg_info "Configuring MagicMirror"
|
||||
cd /opt/magicmirror
|
||||
sed -i -E 's/("postinstall": )".*"/\1""/; s/("prepare": )".*"/\1""/' package.json
|
||||
$STD npm run install-mm
|
||||
cp /opt/magicmirror-backup/config.js /opt/magicmirror/config/
|
||||
if [[ -f /opt/magicmirror-backup/custom.css ]]; then
|
||||
cp /opt/magicmirror-backup/custom.css /opt/magicmirror/css/
|
||||
fi
|
||||
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||
msg_ok "Configured MagicMirror"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start magicmirror
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f $temp_file
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||
@@ -79,4 +77,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||
|
||||
@@ -28,39 +28,33 @@ 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
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/intri-in/manage-my-damn-life-nextjs/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ "${RELEASE}" != "$(cat /opt/mmdl_version.txt)" ]] || [[ ! -f /opt/mmdl_version.txt ]]; then
|
||||
msg_info "Stopping $APP"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/intri-in/manage-my-damn-life-nextjs/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||
if [[ "${RELEASE}" != "$(cat ~/.mmdl)" ]] || [[ ! -f ~/.mmdl ]]; then
|
||||
msg_info "Stopping service"
|
||||
systemctl stop mmdl
|
||||
msg_ok "Stopped $APP"
|
||||
msg_ok "Stopped service"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
cp /opt/mmdl/.env /opt/mmdl.env
|
||||
msg_ok "Backup Created"
|
||||
|
||||
msg_info "Updating $APP to v${RELEASE}"
|
||||
curl -fsSLO "https://github.com/intri-in/manage-my-damn-life-nextjs/archive/refs/tags/v${RELEASE}.zip"
|
||||
rm -r /opt/mmdl
|
||||
unzip -q v"$RELEASE".zip
|
||||
mv manage-my-damn-life-nextjs-"$RELEASE"/ /opt/mmdl
|
||||
mv /opt/mmdl.env /opt/mmdl/.env
|
||||
fetch_and_deploy_gh_release "mmdl" "intri-in/manage-my-damn-life-nextjs" "tarball"
|
||||
|
||||
msg_info "Configuring ${APP}"
|
||||
cd /opt/mmdl
|
||||
$STD npm install
|
||||
$STD npm run migrate
|
||||
$STD npm run build
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
msg_ok "Configured ${APP}"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
msg_info "Starting service"
|
||||
systemctl start mmdl
|
||||
msg_ok "Started $APP"
|
||||
msg_ok "Started service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -f ~/v"$RELEASE".zip
|
||||
msg_ok "Cleanup Completed"
|
||||
|
||||
# Last Action
|
||||
echo "$RELEASE" >/opt/mmdl_version.txt
|
||||
msg_ok "Update Successful"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
|
||||
@@ -20,15 +20,34 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/mediamtx/ ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
||||
exit
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/mediamtx/ ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
if ! command -v jq &>/dev/null; then
|
||||
$STD apt-get install -y jq
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/bluenviron/mediamtx/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||
if [[ "${RELEASE}" != "$(cat ~/.mediamtx)" ]] || [[ ! -f ~/.mediamtx ]]; then
|
||||
msg_info "Stopping service"
|
||||
systemctl stop mediamtx
|
||||
msg_ok "Service stopped"
|
||||
|
||||
fetch_and_deploy_gh_release "mediamtx" "bluenviron/mediamtx" "prebuild" "latest" "/opt/mediamtx" "mediamtx*linux_amd64.tar.gz"
|
||||
|
||||
msg_info "Starting service"
|
||||
systemctl start mediamtx
|
||||
msg_ok "Service started"
|
||||
|
||||
msg_ok "Updated successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
@@ -36,4 +55,4 @@ build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
|
||||
@@ -24,7 +24,7 @@ function update_script() {
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -f /opt/Meilisearch_version.txt ]]; then
|
||||
if [[ ! -d /opt/meilisearch ]]; then
|
||||
msg_error "No Meilisearch Installation Found!"
|
||||
exit
|
||||
fi
|
||||
@@ -38,13 +38,7 @@ function update_script() {
|
||||
systemctl stop meilisearch
|
||||
msg_ok "Stopped Meilisearch"
|
||||
|
||||
msg_info "Updating Meilisearch"
|
||||
tmp_file=$(mktemp)
|
||||
RELEASE=$(curl -s https://api.github.com/repos/meilisearch/meilisearch/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
curl -fsSL https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch.deb -o $tmp_file
|
||||
$STD dpkg -i $tmp_file
|
||||
echo "$RELEASE" >/opt/meilisearch_version.txt
|
||||
msg_ok "Updated Meilisearch"
|
||||
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"
|
||||
|
||||
msg_info "Starting Meilisearch"
|
||||
systemctl start meilisearch
|
||||
@@ -53,7 +47,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
if [ "$UPD" == "2" ]; then
|
||||
if [[ ! -f /opt/Meilisearch-ui_version.txt ]]; then
|
||||
if [[ ! -d /opt/meilisearch-ui ]]; then
|
||||
msg_error "No Meilisearch-UI Installation Found!"
|
||||
exit
|
||||
fi
|
||||
@@ -61,22 +55,16 @@ function update_script() {
|
||||
systemctl stop meilisearch-ui
|
||||
msg_ok "Stopped Meilisearch-UI"
|
||||
|
||||
msg_info "Updating Meilisearch-UI"
|
||||
tmp_file=$(mktemp)
|
||||
tmp_dir=$(mktemp -d)
|
||||
RELEASE_UI=$(curl -s https://api.github.com/repos/riccox/meilisearch-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
cp /opt/meilisearch-ui/.env.local /tmp/.env.local.bak
|
||||
rm -rf /opt/meilisearch-ui
|
||||
mkdir -p /opt/meilisearch-ui
|
||||
curl -fsSL "https://github.com/riccox/meilisearch-ui/archive/refs/tags/${RELEASE_UI}.zip" -o $tmp_file
|
||||
$STD unzip "$tmp_file" -d "$tmp_dir"
|
||||
mv "$tmp_dir"/*/* /opt/meilisearch-ui/
|
||||
fetch_and_deploy_gh_release "meilisearch-ui" "riccox/meilisearch-ui" "tarball"
|
||||
|
||||
msg_info "Configuring Meilisearch-UI"
|
||||
cd /opt/meilisearch-ui
|
||||
sed -i 's|const hash = execSync("git rev-parse HEAD").toString().trim();|const hash = "unknown";|' /opt/meilisearch-ui/vite.config.ts
|
||||
mv /tmp/.env.local.bak /opt/meilisearch-ui/.env.local
|
||||
$STD pnpm install
|
||||
echo "$RELEASE_UI" >/opt/meilisearch-ui_version.txt
|
||||
msg_ok "Updated Meilisearch-UI"
|
||||
msg_ok "Configured Meilisearch-UI"
|
||||
|
||||
msg_info "Starting Meilisearch-UI"
|
||||
systemctl start meilisearch-ui
|
||||
|
||||
@@ -32,7 +32,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NodeBB/NodeBB/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
|
||||
if [[ "${RELEASE}" != "$(cat ~/.nodebb)" ]] || [[ ! -f ~/.nodebb ]]; then
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop nodebb
|
||||
msg_ok "Stopped ${APP}"
|
||||
@@ -40,13 +40,14 @@ function update_script() {
|
||||
msg_info "Updating ${APP} to v${RELEASE}"
|
||||
cd /opt/nodebb
|
||||
$STD ./nodebb upgrade
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
echo "${RELEASE}" > ~/.nodebb
|
||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
systemctl start nodebb
|
||||
msg_ok "Started ${APP}"
|
||||
msg_ok "Updated Successfully"
|
||||
|
||||
msg_ok "Updated Successfully\n"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||
fi
|
||||
@@ -60,4 +61,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}:4567${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4567${CL}"
|
||||
|
||||
@@ -30,26 +30,18 @@ function update_script() {
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/oauth2-proxy/oauth2-proxy/releases/latest | jq -r .tag_name | sed 's/^v//')
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
if [[ ! -f ~/.oauth2-proxy ]] || [[ "${RELEASE}" != "$(cat ~/.oauth2-proxy)" ]]; then
|
||||
msg_info "Stopping ${APP} services"
|
||||
systemctl stop oauth2-proxy
|
||||
msg_ok "Stopped ${APP}"
|
||||
msg_ok "Stopped ${APP} service"
|
||||
|
||||
msg_info "Updating $APP to ${RELEASE}"
|
||||
rm -f /opt/oauth2-proxy/oauth2-proxy
|
||||
curl -fsSL "https://github.com/oauth2-proxy/oauth2-proxy/releases/download/v${RELEASE}/oauth2-proxy-v${RELEASE}.linux-amd64.tar.gz" -o /opt/oauth2-proxy.tar.gz
|
||||
tar -xzf /opt/oauth2-proxy.tar.gz
|
||||
mv /opt/oauth2-proxy-v${RELEASE}.linux-amd64/oauth2-proxy /opt/oauth2-proxy
|
||||
fetch_and_deploy_gh_release "oauth2-proxy" "oauth2-proxy/oauth2-proxy" "prebuild" "latest" "/opt/oauth2-proxy" "oauth2-proxy*linux-amd64.tar.gz"
|
||||
|
||||
msg_info "Starting ${APP} service"
|
||||
systemctl start oauth2-proxy
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||
msg_ok "Started ${APP} service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f "/opt/oauth2-proxy.tar.gz"
|
||||
rm -rf "/opt/oauth2-proxy-v${RELEASE}.linux-amd64"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!\n"
|
||||
else
|
||||
msg_ok "${APP} is already up to date (${RELEASE})"
|
||||
fi
|
||||
|
||||
@@ -42,4 +42,4 @@ msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using one of the following URLs:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:8443${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||
|
||||
@@ -27,36 +27,32 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/outline/outline/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
|
||||
if [[ ! -f ~/.outline ]] || [[ "${RELEASE}" != "$(cat ~/.outline)" ]]; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop outline
|
||||
msg_ok "Services Stopped"
|
||||
|
||||
msg_info "Updating ${APP} to ${RELEASE}"
|
||||
temp_file=$(mktemp)
|
||||
msg_info "Creating backup"
|
||||
cp /opt/outline/.env /opt
|
||||
rm -rf /opt/outline
|
||||
curl -fsSL "https://github.com/outline/outline/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||
tar zxf "$temp_file"
|
||||
mv outline-"${RELEASE}" /opt/outline
|
||||
msg_ok "Backup created"
|
||||
|
||||
fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
|
||||
|
||||
msg_info "Updating ${APP} to ${RELEASE}"
|
||||
cd /opt/outline
|
||||
export NODE_ENV=development
|
||||
export NODE_OPTIONS="--max-old-space-size=3584"
|
||||
$STD yarn install --frozen-lockfile
|
||||
$STD yarn build
|
||||
mv /opt/.env /opt/outline
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start outline
|
||||
msg_ok "Started Services"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf "$temp_file"
|
||||
rm -rf "$HOME"/outline-"${RELEASE}"
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
|
||||
@@ -27,20 +27,35 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating $APP"
|
||||
systemctl stop overseerr
|
||||
cd /opt/overseerr
|
||||
output=$(git pull)
|
||||
$STD git pull
|
||||
if echo "$output" | grep -q "Already up to date."; then
|
||||
msg_ok " $APP is already up to date."
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/sct/overseerr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ ! -f ~/.overseerr ]] || [[ "${RELEASE}" != "$(cat ~/.overseerr)" ]]; then
|
||||
msg_info "Stopping ${APP} service"
|
||||
systemctl stop overseerr
|
||||
msg_ok "Service stopped"
|
||||
|
||||
msg_info "Creating backup"
|
||||
mv /opt/overseerr/config /opt/config_backup
|
||||
msg_ok "Backup created"
|
||||
|
||||
fetch_and_deploy_gh_release "overseerr" "sct/overseerr" "tarball"
|
||||
rm -rf /opt/overseerr/config
|
||||
|
||||
msg_info "Configuring ${APP} (Patience)"
|
||||
cd /opt/overseerr
|
||||
$STD yarn install
|
||||
$STD yarn build
|
||||
mv /opt/config_backup /opt/overseerr/config
|
||||
msg_ok "Configured ${APP}"
|
||||
|
||||
msg_info "Starting ${APP} service"
|
||||
systemctl start overseerr
|
||||
exit
|
||||
msg_ok "Started ${APP} service"
|
||||
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
$STD yarn install
|
||||
$STD yarn build
|
||||
systemctl start overseerr
|
||||
msg_ok "Updated $APP"
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -51,4 +66,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}:5055${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5055${CL}"
|
||||
|
||||
@@ -27,10 +27,23 @@ function update_script() {
|
||||
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"
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/owncast/owncast/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ ! -f ~/.owncast ]] || [[ "${RELEASE}" != "$(cat ~/.owncast)" ]]; then
|
||||
msg_info "Stopping ${APP}"
|
||||
systemctl stop owncast
|
||||
msg_ok "Stopped ${APP}"
|
||||
|
||||
fetch_and_deploy_gh_release "owncast" "owncast/owncast" "prebuild" "latest" "/opt/owncast" "owncast*linux-64bit.zip"
|
||||
|
||||
msg_info "Starting ${APP}"
|
||||
systemctl start owncast
|
||||
msg_ok "Started ${APP}"
|
||||
|
||||
msg_ok "Updated Successfully"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -41,4 +54,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/admin${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/admin${CL}"
|
||||
|
||||
@@ -28,34 +28,20 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
if dpkg -l | grep -q "openjdk-17-jre"; then
|
||||
$STD apt-get remove -y openjdk-17-jre
|
||||
fi
|
||||
JAVA_VERSION=21 setup_java
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
if [[ "${RELEASE}" != "$(cat /opt/suwayomi-server_version.txt)" ]] || [[ ! -f /opt/suwayomi-server_version.txt ]]; then
|
||||
msg_info "Updating $APP"
|
||||
if [[ "${RELEASE}" != "$(cat ~/.suwayomi-server 2>/dev/null)" ]] || [[ ! -f ~/.suwayomi-server ]]; then
|
||||
JAVA_VERSION=21 setup_java
|
||||
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop suwayomi-server
|
||||
msg_ok "Stopped $APP"
|
||||
|
||||
msg_info "Updating $APP to v${RELEASE}"
|
||||
temp_file=$(mktemp)
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
curl -fsSL "https://github.com/Suwayomi/Suwayomi-Server/releases/download/${RELEASE}/Suwayomi-Server-${RELEASE}-debian-all.deb" -o "$temp_file"
|
||||
$STD dpkg -i "$temp_file"
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
fetch_and_deploy_gh_release "suwayomi-server" "Suwayomi/Suwayomi-Server" "binary"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
systemctl start suwayomi-server
|
||||
msg_ok "Started $APP"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -f "$temp_file"
|
||||
msg_ok "Cleanup Completed"
|
||||
|
||||
echo "${RELEASE}" >/opt/suwayomi-server_version.txt.txt
|
||||
msg_ok "Update Successful"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
|
||||
@@ -37,8 +37,11 @@ function update_script() {
|
||||
|
||||
fetch_and_deploy_gh_release "victoriametrics" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "victoria-metrics-linux-amd64-v+([0-9.]).tar.gz"
|
||||
fetch_and_deploy_gh_release "vmutils" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "vmutils-linux-amd64-v+([0-9.]).tar.gz"
|
||||
fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "victoria-logs-linux-amd64*.tar.gz"
|
||||
fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "vlutils-linux-amd64*.tar.gz"
|
||||
|
||||
if [[ -f /etc/systemd/system/victoriametrics-logs.service ]]; then
|
||||
fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "victoria-logs-linux-amd64*.tar.gz"
|
||||
fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "vlutils-linux-amd64*.tar.gz"
|
||||
fi
|
||||
chmod +x /opt/victoriametrics/*
|
||||
|
||||
msg_info "Starting $APP"
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 6060,
|
||||
"documentation": "https://github.com/adityachandelgit/BookLore",
|
||||
"website": "https://github.com/adityachandelgit/BookLore",
|
||||
"documentation": "https://booklore-app.github.io/booklore-docs/docs/getting-started",
|
||||
"website": "https://github.com/booklore-app/booklore",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/booklore.webp",
|
||||
"config_path": "/opt/booklore_storage/.env",
|
||||
"description": "BookLore is a self-hosted digital library for managing and reading books, offering a beautiful interface and support for metadata management. Built with a modern tech stack, it provides support for importing, organizing, and reading EPUBs and PDFs, while also managing cover images and book metadata.",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": "https://github.com/bluenviron/mediamtx/blob/main/README.md",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8080,
|
||||
"documentation": "https://owncast.online/docs/",
|
||||
|
||||
40
frontend/public/json/suwayomi-server.json
Normal file
40
frontend/public/json/suwayomi-server.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "Suwayomi-Server",
|
||||
"slug": "suwayomi-server",
|
||||
"categories": [
|
||||
13
|
||||
],
|
||||
"date_created": "2025-08-01",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 4567,
|
||||
"documentation": "https://github.com/Suwayomi/Suwayomi-Server/wiki",
|
||||
"website": "https://github.com/Suwayomi/Suwayomi-Server",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/suwayomi.webp",
|
||||
"config_path": "",
|
||||
"description": "A free and open source manga reader server that runs extensions built for Mihon (Tachiyomi).",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/suwayomiserver.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "This application can be conflicting with Kaspersky products. You maybe need to disable Kaspersky in order to use this application.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
{
|
||||
"name": "Ubuntu 24.10",
|
||||
"slug": "ubuntu2410-vm",
|
||||
"categories": [
|
||||
2
|
||||
],
|
||||
"date_created": "2025-01-24",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
"website": "https://ubuntu.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/ubuntu.webp",
|
||||
"config_path": "",
|
||||
"description": "Ubuntu is a distribution based on Debian, designed to have regular releases and a consistent user experience.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "vm/ubuntu2410-vm.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 8,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "after installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,8 +1,218 @@
|
||||
[
|
||||
{
|
||||
"name": "benjaminjonard/koillection",
|
||||
"version": "1.6.18",
|
||||
"date": "2025-08-03T21:41:45Z"
|
||||
},
|
||||
{
|
||||
"name": "jellyfin/jellyfin",
|
||||
"version": "v10.10.7",
|
||||
"date": "2025-04-05T19:14:59Z"
|
||||
},
|
||||
{
|
||||
"name": "Tautulli/Tautulli",
|
||||
"version": "v2.15.3",
|
||||
"date": "2025-08-03T17:27:16Z"
|
||||
},
|
||||
{
|
||||
"name": "project-zot/zot",
|
||||
"version": "v2.1.7",
|
||||
"date": "2025-08-03T16:35:59Z"
|
||||
},
|
||||
{
|
||||
"name": "karakeep-app/karakeep",
|
||||
"version": "mcp/v0.26.0",
|
||||
"date": "2025-08-03T16:21:47Z"
|
||||
},
|
||||
{
|
||||
"name": "gethomepage/homepage",
|
||||
"version": "v1.4.3",
|
||||
"date": "2025-08-03T15:19:16Z"
|
||||
},
|
||||
{
|
||||
"name": "firefly-iii/firefly-iii",
|
||||
"version": "v6.2.21",
|
||||
"date": "2025-07-17T04:46:25Z"
|
||||
},
|
||||
{
|
||||
"name": "blakeblackshear/frigate",
|
||||
"version": "v0.14.1",
|
||||
"date": "2024-08-29T22:32:51Z"
|
||||
},
|
||||
{
|
||||
"name": "Dolibarr/dolibarr",
|
||||
"version": "22.0.0",
|
||||
"date": "2025-08-03T12:07:59Z"
|
||||
},
|
||||
{
|
||||
"name": "Lidarr/Lidarr",
|
||||
"version": "v2.12.4.4658",
|
||||
"date": "2025-06-09T17:27:45Z"
|
||||
},
|
||||
{
|
||||
"name": "Radarr/Radarr",
|
||||
"version": "v5.26.2.10099",
|
||||
"date": "2025-06-11T20:10:39Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.22.2223",
|
||||
"date": "2025-08-03T06:03:15Z"
|
||||
},
|
||||
{
|
||||
"name": "MediaBrowser/Emby.Releases",
|
||||
"version": "4.9.1.2",
|
||||
"date": "2025-06-26T22:08:00Z"
|
||||
},
|
||||
{
|
||||
"name": "steveiliop56/tinyauth",
|
||||
"version": "v3.6.2",
|
||||
"date": "2025-07-17T12:08:03Z"
|
||||
},
|
||||
{
|
||||
"name": "advplyr/audiobookshelf",
|
||||
"version": "v2.27.0",
|
||||
"date": "2025-08-02T23:35:37Z"
|
||||
},
|
||||
{
|
||||
"name": "TwiN/gatus",
|
||||
"version": "v5.21.0",
|
||||
"date": "2025-08-02T18:56:03Z"
|
||||
},
|
||||
{
|
||||
"name": "linuxserver/Heimdall",
|
||||
"version": "v2.7.4",
|
||||
"date": "2025-08-02T16:51:19Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.24.9",
|
||||
"date": "2025-08-02T16:46:17Z"
|
||||
},
|
||||
{
|
||||
"name": "actualbudget/actual",
|
||||
"version": "v25.8.0",
|
||||
"date": "2025-08-02T16:17:45Z"
|
||||
},
|
||||
{
|
||||
"name": "fuma-nama/fumadocs",
|
||||
"version": "fumadocs-core@15.6.8",
|
||||
"date": "2025-08-02T09:44:14Z"
|
||||
},
|
||||
{
|
||||
"name": "inspircd/inspircd",
|
||||
"version": "v4.8.0",
|
||||
"date": "2025-08-02T09:12:10Z"
|
||||
},
|
||||
{
|
||||
"name": "evcc-io/evcc",
|
||||
"version": "0.207.0",
|
||||
"date": "2025-08-02T09:09:08Z"
|
||||
},
|
||||
{
|
||||
"name": "donaldzou/WGDashboard",
|
||||
"version": "v4.2.5",
|
||||
"date": "2025-08-02T08:58:21Z"
|
||||
},
|
||||
{
|
||||
"name": "theonedev/onedev",
|
||||
"version": "v12.0.3",
|
||||
"date": "2025-08-02T08:16:46Z"
|
||||
},
|
||||
{
|
||||
"name": "pocketbase/pocketbase",
|
||||
"version": "v0.29.1",
|
||||
"date": "2025-08-02T05:51:37Z"
|
||||
},
|
||||
{
|
||||
"name": "henrygd/beszel",
|
||||
"version": "v0.12.2",
|
||||
"date": "2025-08-02T01:12:52Z"
|
||||
},
|
||||
{
|
||||
"name": "mongodb/mongo",
|
||||
"version": "r8.2.0-rc2",
|
||||
"date": "2025-08-01T23:31:28Z"
|
||||
},
|
||||
{
|
||||
"name": "docmost/docmost",
|
||||
"version": "v0.22.2",
|
||||
"date": "2025-08-01T23:27:06Z"
|
||||
},
|
||||
{
|
||||
"name": "influxdata/influxdb",
|
||||
"version": "v1.12.2rc0",
|
||||
"date": "2025-08-01T21:48:30Z"
|
||||
},
|
||||
{
|
||||
"name": "homarr-labs/homarr",
|
||||
"version": "v1.31.0",
|
||||
"date": "2025-08-01T19:18:16Z"
|
||||
},
|
||||
{
|
||||
"name": "Koenkk/zigbee2mqtt",
|
||||
"version": "2.6.0",
|
||||
"date": "2025-08-01T15:42:21Z"
|
||||
},
|
||||
{
|
||||
"name": "immich-app/immich",
|
||||
"version": "v1.137.1",
|
||||
"date": "2025-07-31T23:19:24Z"
|
||||
"version": "v1.137.3",
|
||||
"date": "2025-08-01T15:06:36Z"
|
||||
},
|
||||
{
|
||||
"name": "Luligu/matterbridge",
|
||||
"version": "3.2.0",
|
||||
"date": "2025-08-01T14:49:29Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.0.14",
|
||||
"date": "2025-08-01T11:29:12Z"
|
||||
},
|
||||
{
|
||||
"name": "documenso/documenso",
|
||||
"version": "v1.12.2-rc.3",
|
||||
"date": "2025-08-01T14:46:22Z"
|
||||
},
|
||||
{
|
||||
"name": "alexta69/metube",
|
||||
"version": "2025.07.31",
|
||||
"date": "2025-08-01T14:44:48Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@1.104.2",
|
||||
"date": "2025-07-31T13:14:26Z"
|
||||
},
|
||||
{
|
||||
"name": "element-hq/synapse",
|
||||
"version": "v1.135.0",
|
||||
"date": "2025-08-01T12:43:17Z"
|
||||
},
|
||||
{
|
||||
"name": "crowdsecurity/crowdsec",
|
||||
"version": "v1.6.11",
|
||||
"date": "2025-07-22T12:11:38Z"
|
||||
},
|
||||
{
|
||||
"name": "zwave-js/zwave-js-ui",
|
||||
"version": "v11.0.1",
|
||||
"date": "2025-08-01T07:43:59Z"
|
||||
},
|
||||
{
|
||||
"name": "meilisearch/meilisearch",
|
||||
"version": "prototype-arroy-becomes-hannoy-8",
|
||||
"date": "2025-08-01T07:34:21Z"
|
||||
},
|
||||
{
|
||||
"name": "mattermost/mattermost",
|
||||
"version": "server/public/v0.1.16",
|
||||
"date": "2025-07-28T22:46:46Z"
|
||||
},
|
||||
{
|
||||
"name": "gotson/komga",
|
||||
"version": "1.23.1",
|
||||
"date": "2025-08-01T04:30:24Z"
|
||||
},
|
||||
{
|
||||
"name": "gristlabs/grist-core",
|
||||
@@ -39,16 +249,6 @@
|
||||
"version": "2025.7.4",
|
||||
"date": "2025-07-28T08:15:50Z"
|
||||
},
|
||||
{
|
||||
"name": "firefly-iii/firefly-iii",
|
||||
"version": "v6.2.21",
|
||||
"date": "2025-07-17T04:46:25Z"
|
||||
},
|
||||
{
|
||||
"name": "meilisearch/meilisearch",
|
||||
"version": "prototype-sharding-split-docs-1",
|
||||
"date": "2025-07-31T15:32:45Z"
|
||||
},
|
||||
{
|
||||
"name": "TryGhost/Ghost-CLI",
|
||||
"version": "v1.28.2",
|
||||
@@ -59,16 +259,6 @@
|
||||
"version": "v3.12.8",
|
||||
"date": "2025-07-31T14:00:13Z"
|
||||
},
|
||||
{
|
||||
"name": "fuma-nama/fumadocs",
|
||||
"version": "fumadocs-mdx@11.7.3",
|
||||
"date": "2025-07-31T13:53:15Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@1.104.2",
|
||||
"date": "2025-07-31T13:14:26Z"
|
||||
},
|
||||
{
|
||||
"name": "Stirling-Tools/Stirling-PDF",
|
||||
"version": "v1.1.1",
|
||||
@@ -89,11 +279,6 @@
|
||||
"version": "8.2-int",
|
||||
"date": "2025-07-31T09:01:24Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.22.2213",
|
||||
"date": "2025-07-31T05:56:37Z"
|
||||
},
|
||||
{
|
||||
"name": "ollama/ollama",
|
||||
"version": "v0.10.1",
|
||||
@@ -104,41 +289,21 @@
|
||||
"version": "v4.102.3",
|
||||
"date": "2025-07-31T03:41:16Z"
|
||||
},
|
||||
{
|
||||
"name": "mongodb/mongo",
|
||||
"version": "r7.0.23-rc0",
|
||||
"date": "2025-07-31T01:24:14Z"
|
||||
},
|
||||
{
|
||||
"name": "hyperion-project/hyperion.ng",
|
||||
"version": "2.1.1",
|
||||
"date": "2025-06-14T17:45:06Z"
|
||||
},
|
||||
{
|
||||
"name": "steveiliop56/tinyauth",
|
||||
"version": "v3.6.2",
|
||||
"date": "2025-07-17T12:08:03Z"
|
||||
},
|
||||
{
|
||||
"name": "gtsteffaniak/filebrowser",
|
||||
"version": "v0.7.18-beta",
|
||||
"date": "2025-07-30T21:26:00Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.3.2",
|
||||
"date": "2025-07-24T10:14:27Z"
|
||||
},
|
||||
{
|
||||
"name": "fallenbagel/jellyseerr",
|
||||
"version": "preview-fix-invalid-blacklisttag",
|
||||
"date": "2025-07-30T20:30:29Z"
|
||||
},
|
||||
{
|
||||
"name": "benjaminjonard/koillection",
|
||||
"version": "1.6.17",
|
||||
"date": "2025-07-30T20:24:17Z"
|
||||
},
|
||||
{
|
||||
"name": "semaphoreui/semaphore",
|
||||
"version": "v2.16.0-beta6",
|
||||
@@ -159,46 +324,16 @@
|
||||
"version": "v2025-07-30",
|
||||
"date": "2025-07-30T17:13:40Z"
|
||||
},
|
||||
{
|
||||
"name": "zwave-js/zwave-js-ui",
|
||||
"version": "v11.0.0",
|
||||
"date": "2025-07-30T13:50:13Z"
|
||||
},
|
||||
{
|
||||
"name": "influxdata/influxdb",
|
||||
"version": "v3.3.0",
|
||||
"date": "2025-07-30T13:27:54Z"
|
||||
},
|
||||
{
|
||||
"name": "element-hq/synapse",
|
||||
"version": "v1.134.0",
|
||||
"date": "2025-07-15T13:43:39Z"
|
||||
},
|
||||
{
|
||||
"name": "bunkerity/bunkerweb",
|
||||
"version": "v1.6.2",
|
||||
"date": "2025-07-08T13:52:33Z"
|
||||
},
|
||||
{
|
||||
"name": "crowdsecurity/crowdsec",
|
||||
"version": "v1.6.11",
|
||||
"date": "2025-07-22T12:11:38Z"
|
||||
},
|
||||
{
|
||||
"name": "dgtlmoon/changedetection.io",
|
||||
"version": "0.50.8",
|
||||
"date": "2025-07-30T11:33:00Z"
|
||||
},
|
||||
{
|
||||
"name": "mattermost/mattermost",
|
||||
"version": "server/public/v0.1.16",
|
||||
"date": "2025-07-28T22:46:46Z"
|
||||
},
|
||||
{
|
||||
"name": "evcc-io/evcc",
|
||||
"version": "0.206.0",
|
||||
"date": "2025-07-30T09:39:42Z"
|
||||
},
|
||||
{
|
||||
"name": "dani-garcia/vaultwarden",
|
||||
"version": "1.34.3",
|
||||
@@ -216,8 +351,8 @@
|
||||
},
|
||||
{
|
||||
"name": "wazuh/wazuh",
|
||||
"version": "coverity-w30-4.13.0",
|
||||
"date": "2025-07-18T12:05:26Z"
|
||||
"version": "coverity-w31-4.13.0",
|
||||
"date": "2025-07-30T08:30:15Z"
|
||||
},
|
||||
{
|
||||
"name": "morpheus65535/bazarr",
|
||||
@@ -229,11 +364,6 @@
|
||||
"version": "jenkins-2.521",
|
||||
"date": "2025-07-30T03:38:59Z"
|
||||
},
|
||||
{
|
||||
"name": "docmost/docmost",
|
||||
"version": "v0.22.0",
|
||||
"date": "2025-07-30T00:09:03Z"
|
||||
},
|
||||
{
|
||||
"name": "OliveTin/OliveTin",
|
||||
"version": "2025.7.29",
|
||||
@@ -249,16 +379,6 @@
|
||||
"version": "v1.86.2",
|
||||
"date": "2025-07-29T19:16:24Z"
|
||||
},
|
||||
{
|
||||
"name": "MediaBrowser/Emby.Releases",
|
||||
"version": "4.9.1.2",
|
||||
"date": "2025-06-26T22:08:00Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.24.8",
|
||||
"date": "2025-07-29T17:40:35Z"
|
||||
},
|
||||
{
|
||||
"name": "caddyserver/xcaddy",
|
||||
"version": "v0.4.5",
|
||||
@@ -274,11 +394,6 @@
|
||||
"version": "v2.0.115",
|
||||
"date": "2025-07-29T04:38:35Z"
|
||||
},
|
||||
{
|
||||
"name": "Luligu/matterbridge",
|
||||
"version": "3.1.8",
|
||||
"date": "2025-07-28T21:28:33Z"
|
||||
},
|
||||
{
|
||||
"name": "diced/zipline",
|
||||
"version": "v4.2.1",
|
||||
@@ -299,11 +414,6 @@
|
||||
"version": "v0.107.64",
|
||||
"date": "2025-07-28T14:24:56Z"
|
||||
},
|
||||
{
|
||||
"name": "alexta69/metube",
|
||||
"version": "2025-07-27",
|
||||
"date": "2025-07-28T15:57:09Z"
|
||||
},
|
||||
{
|
||||
"name": "booklore-app/BookLore",
|
||||
"version": "v0.35.0",
|
||||
@@ -314,11 +424,6 @@
|
||||
"version": "7.0.0-alpha.1",
|
||||
"date": "2025-07-28T11:28:22Z"
|
||||
},
|
||||
{
|
||||
"name": "gotson/komga",
|
||||
"version": "1.23.0",
|
||||
"date": "2025-07-28T08:44:47Z"
|
||||
},
|
||||
{
|
||||
"name": "Checkmk/checkmk",
|
||||
"version": "v2.3.0p35",
|
||||
@@ -334,11 +439,6 @@
|
||||
"version": "2025.7.4",
|
||||
"date": "2025-07-28T07:33:36Z"
|
||||
},
|
||||
{
|
||||
"name": "theonedev/onedev",
|
||||
"version": "v12.0.2",
|
||||
"date": "2025-07-28T03:34:53Z"
|
||||
},
|
||||
{
|
||||
"name": "umami-software/umami",
|
||||
"version": "v2.19.0",
|
||||
@@ -349,31 +449,11 @@
|
||||
"version": "v1.18.4",
|
||||
"date": "2025-06-25T00:06:56Z"
|
||||
},
|
||||
{
|
||||
"name": "project-zot/zot",
|
||||
"version": "v2.1.6",
|
||||
"date": "2025-07-27T01:14:14Z"
|
||||
},
|
||||
{
|
||||
"name": "aceberg/WatchYourLAN",
|
||||
"version": "2.1.3",
|
||||
"date": "2025-07-26T14:19:00Z"
|
||||
},
|
||||
{
|
||||
"name": "blakeblackshear/frigate",
|
||||
"version": "v0.14.1",
|
||||
"date": "2024-08-29T22:32:51Z"
|
||||
},
|
||||
{
|
||||
"name": "henrygd/beszel",
|
||||
"version": "v0.12.1",
|
||||
"date": "2025-07-25T23:53:12Z"
|
||||
},
|
||||
{
|
||||
"name": "homarr-labs/homarr",
|
||||
"version": "v1.30.1",
|
||||
"date": "2025-07-25T19:18:09Z"
|
||||
},
|
||||
{
|
||||
"name": "openobserve/openobserve",
|
||||
"version": "v0.15.0-rc4",
|
||||
@@ -404,11 +484,6 @@
|
||||
"version": "v5.10.0",
|
||||
"date": "2025-07-24T23:33:09Z"
|
||||
},
|
||||
{
|
||||
"name": "linuxserver/Heimdall",
|
||||
"version": "v2.7.3",
|
||||
"date": "2025-07-24T18:07:21Z"
|
||||
},
|
||||
{
|
||||
"name": "docker/compose",
|
||||
"version": "v2.39.1",
|
||||
@@ -424,11 +499,6 @@
|
||||
"version": "10.0.19",
|
||||
"date": "2025-07-16T09:45:14Z"
|
||||
},
|
||||
{
|
||||
"name": "advplyr/audiobookshelf",
|
||||
"version": "v2.26.3",
|
||||
"date": "2025-07-23T23:16:46Z"
|
||||
},
|
||||
{
|
||||
"name": "minio/minio",
|
||||
"version": "RELEASE.2025-07-23T15-54-02Z",
|
||||
@@ -444,11 +514,6 @@
|
||||
"version": "v3.5.0",
|
||||
"date": "2025-07-23T14:06:54Z"
|
||||
},
|
||||
{
|
||||
"name": "Radarr/Radarr",
|
||||
"version": "v5.26.2.10099",
|
||||
"date": "2025-06-11T20:10:39Z"
|
||||
},
|
||||
{
|
||||
"name": "Prowlarr/Prowlarr",
|
||||
"version": "v1.37.0.5076",
|
||||
@@ -484,11 +549,6 @@
|
||||
"version": "v3.42.0",
|
||||
"date": "2025-07-14T22:07:28Z"
|
||||
},
|
||||
{
|
||||
"name": "Dolibarr/dolibarr",
|
||||
"version": "21.0.2",
|
||||
"date": "2025-07-22T16:58:05Z"
|
||||
},
|
||||
{
|
||||
"name": "PCJones/UmlautAdaptarr",
|
||||
"version": "v0.7.3",
|
||||
@@ -544,16 +604,6 @@
|
||||
"version": "v1.6.4",
|
||||
"date": "2025-07-21T05:53:30Z"
|
||||
},
|
||||
{
|
||||
"name": "karakeep-app/karakeep",
|
||||
"version": "sdk/v0.26.0",
|
||||
"date": "2025-07-20T13:26:30Z"
|
||||
},
|
||||
{
|
||||
"name": "documenso/documenso",
|
||||
"version": "v1.12.2-rc.2",
|
||||
"date": "2025-07-20T07:05:19Z"
|
||||
},
|
||||
{
|
||||
"name": "linkwarden/linkwarden",
|
||||
"version": "v2.11.5",
|
||||
@@ -579,11 +629,6 @@
|
||||
"version": "v5.6.0",
|
||||
"date": "2025-07-19T13:34:36Z"
|
||||
},
|
||||
{
|
||||
"name": "pocketbase/pocketbase",
|
||||
"version": "v0.29.0",
|
||||
"date": "2025-07-19T08:54:54Z"
|
||||
},
|
||||
{
|
||||
"name": "cross-seed/cross-seed",
|
||||
"version": "v6.13.1",
|
||||
@@ -624,11 +669,6 @@
|
||||
"version": "v2.1.1",
|
||||
"date": "2025-07-15T22:38:01Z"
|
||||
},
|
||||
{
|
||||
"name": "gethomepage/homepage",
|
||||
"version": "v1.4.0",
|
||||
"date": "2025-07-15T16:43:28Z"
|
||||
},
|
||||
{
|
||||
"name": "WordPress/WordPress",
|
||||
"version": "6.8.2",
|
||||
@@ -684,11 +724,6 @@
|
||||
"version": "v4.47.1",
|
||||
"date": "2025-01-05T21:14:23Z"
|
||||
},
|
||||
{
|
||||
"name": "jellyfin/jellyfin",
|
||||
"version": "v10.10.7",
|
||||
"date": "2025-04-05T19:14:59Z"
|
||||
},
|
||||
{
|
||||
"name": "eclipse-mosquitto/mosquitto",
|
||||
"version": "v2.0.22",
|
||||
@@ -754,11 +789,6 @@
|
||||
"version": "mysql-cluster-9.4.0",
|
||||
"date": "2025-07-09T08:35:30Z"
|
||||
},
|
||||
{
|
||||
"name": "TwiN/gatus",
|
||||
"version": "v5.20.0",
|
||||
"date": "2025-07-08T16:27:11Z"
|
||||
},
|
||||
{
|
||||
"name": "photoprism/photoprism",
|
||||
"version": "250707-d28b3101e",
|
||||
@@ -809,16 +839,6 @@
|
||||
"version": "v4.1.2",
|
||||
"date": "2025-07-03T16:59:29Z"
|
||||
},
|
||||
{
|
||||
"name": "actualbudget/actual",
|
||||
"version": "v25.7.1",
|
||||
"date": "2025-07-03T01:03:18Z"
|
||||
},
|
||||
{
|
||||
"name": "Koenkk/zigbee2mqtt",
|
||||
"version": "2.5.1",
|
||||
"date": "2025-07-02T19:38:06Z"
|
||||
},
|
||||
{
|
||||
"name": "qbittorrent/qBittorrent",
|
||||
"version": "release-5.1.2",
|
||||
@@ -914,11 +934,6 @@
|
||||
"version": "2.0.0-pre3",
|
||||
"date": "2025-06-18T08:01:24Z"
|
||||
},
|
||||
{
|
||||
"name": "donaldzou/WGDashboard",
|
||||
"version": "v4.2.4",
|
||||
"date": "2025-06-17T05:37:06Z"
|
||||
},
|
||||
{
|
||||
"name": "webmin/webmin",
|
||||
"version": "2.402",
|
||||
@@ -939,11 +954,6 @@
|
||||
"version": "v2.0.0.4645",
|
||||
"date": "2017-03-07T18:56:06Z"
|
||||
},
|
||||
{
|
||||
"name": "Lidarr/Lidarr",
|
||||
"version": "v2.12.4.4658",
|
||||
"date": "2025-06-09T17:27:45Z"
|
||||
},
|
||||
{
|
||||
"name": "FlareSolverr/FlareSolverr",
|
||||
"version": "v3.3.25",
|
||||
@@ -1149,11 +1159,6 @@
|
||||
"version": "V1.2.0",
|
||||
"date": "2025-04-16T14:55:28Z"
|
||||
},
|
||||
{
|
||||
"name": "Tautulli/Tautulli",
|
||||
"version": "v2.15.2",
|
||||
"date": "2025-04-12T23:27:51Z"
|
||||
},
|
||||
{
|
||||
"name": "StarFleetCPTN/GoMFT",
|
||||
"version": "v0.2.11",
|
||||
@@ -1184,11 +1189,6 @@
|
||||
"version": "1.5.0",
|
||||
"date": "2025-03-30T17:42:59Z"
|
||||
},
|
||||
{
|
||||
"name": "inspircd/inspircd",
|
||||
"version": "v4.7.0",
|
||||
"date": "2025-03-29T03:50:50Z"
|
||||
},
|
||||
{
|
||||
"name": "grocy/grocy",
|
||||
"version": "v4.5.0",
|
||||
|
||||
@@ -31,5 +31,10 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
"notes": [
|
||||
{
|
||||
"text": "Included option to install VictoriaLogs.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/adityachandelgit/BookLore
|
||||
# Source: https://github.com/booklore-app/BookLore
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
@@ -17,7 +17,7 @@ msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y nginx
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
fetch_and_deploy_gh_release "booklore" "adityachandelgit/BookLore"
|
||||
fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore"
|
||||
JAVA_VERSION="21" setup_java
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
setup_mariadb
|
||||
@@ -59,7 +59,7 @@ msg_ok "Created Environment"
|
||||
|
||||
msg_info "Building Backend"
|
||||
cd /opt/booklore/booklore-api
|
||||
APP_VERSION=$(curl -fsSL https://api.github.com/repos/adityachandelgit/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||
APP_VERSION=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
|
||||
$STD ./gradlew clean build --no-daemon
|
||||
mkdir -p /opt/booklore/dist
|
||||
|
||||
@@ -14,7 +14,8 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
ca-certificates
|
||||
ca-certificates \
|
||||
git
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
|
||||
|
||||
@@ -283,7 +283,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${ML_DIR}","${INSTALL_DIR}"/cache}
|
||||
|
||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.136.0" "$SRC_DIR"
|
||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.137.3" "$SRC_DIR"
|
||||
|
||||
msg_info "Installing ${APPLICATION} (more patience please)"
|
||||
|
||||
@@ -292,6 +292,9 @@ $STD npm install -g node-gyp node-pre-gyp
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
$STD npm prune --omit=dev --omit=optional
|
||||
cp -a {bin,dist,node_modules,resources,package*.json} "$APP_DIR"/
|
||||
cp package.json "$APP_DIR"/bin
|
||||
sed -i 's|^start|./start|' "$APP_DIR"/bin/immich-admin
|
||||
cd "$SRC_DIR"/open-api/typescript-sdk
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
@@ -299,14 +302,13 @@ cd "$SRC_DIR"/web
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
cd "$SRC_DIR"
|
||||
cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,bin/start.sh} "$APP_DIR"/
|
||||
cp -a web/build "$APP_DIR"/www
|
||||
cp LICENSE "$APP_DIR"
|
||||
cd "$APP_DIR"
|
||||
export SHARP_FORCE_GLOBAL_LIBVIPS=true
|
||||
$STD npm install sharp
|
||||
rm -rf "$APP_DIR"/node_modules/@img/sharp-{libvips*,linuxmusl-x64}
|
||||
msg_ok "Installed Immich Web Components"
|
||||
msg_ok "Installed Immich Server and Web Components"
|
||||
|
||||
cd "$SRC_DIR"/machine-learning
|
||||
export VIRTUAL_ENV="${ML_DIR}/ml-venv"
|
||||
@@ -329,8 +331,8 @@ fi
|
||||
ln -sf "$APP_DIR"/resources "$INSTALL_DIR"
|
||||
|
||||
cd "$APP_DIR"
|
||||
grep -Rl /usr/src | xargs -n1 sed -i "s|\/usr/src|$INSTALL_DIR|g"
|
||||
grep -RlE "'/build'" | xargs -n1 sed -i "s|'/build'|'$APP_DIR'|g"
|
||||
grep -rl /usr/src | xargs -n1 sed -i "s|\/usr/src|$INSTALL_DIR|g"
|
||||
grep -rlE "'/build'" | xargs -n1 sed -i "s|'/build'|'$APP_DIR'|g"
|
||||
sed -i "s@\"/cache\"@\"$INSTALL_DIR/cache\"@g" "$ML_DIR"/immich_ml/config.py
|
||||
ln -s "$UPLOAD_DIR" "$APP_DIR"/upload
|
||||
ln -s "$UPLOAD_DIR" "$ML_DIR"/upload
|
||||
@@ -394,7 +396,16 @@ set +a
|
||||
|
||||
python3 -m immich_ml
|
||||
EOF
|
||||
chmod +x "$ML_DIR"/ml_start.sh
|
||||
cat <<EOF >"$APP_DIR"/bin/start.sh
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -a
|
||||
. "$INSTALL_DIR"/.env
|
||||
set +a
|
||||
|
||||
/usr/bin/node "$APP_DIR"/dist/main.js "\$@"
|
||||
EOF
|
||||
chmod +x "$ML_DIR"/ml_start.sh "$APP_DIR"/bin/start.sh
|
||||
cat <<EOF >/etc/systemd/system/"${APPLICATION}"-web.service
|
||||
[Unit]
|
||||
Description=${APPLICATION} Web Service
|
||||
|
||||
@@ -53,7 +53,6 @@ cd assets/
|
||||
$STD yarn install
|
||||
$STD yarn build
|
||||
chown -R www-data:www-data /opt/koillection/public/uploads
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
msg_ok "Configured Koillection"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@@ -14,7 +14,7 @@ network_check
|
||||
update_os
|
||||
|
||||
JAVA_VERSION="21" setup_java
|
||||
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "komga" "gotson/komga" "singlefile" "latest" "/opt/komga" "komga*.jar"
|
||||
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "komga-org" "gotson/komga" "singlefile" "latest" "/opt/komga" "komga*.jar"
|
||||
mv /opt/komga/komga-*.jar /opt/komga/komga.jar
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@@ -13,23 +13,14 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y jq
|
||||
msg_ok "Installed Dependencies"
|
||||
fetch_and_deploy_gh_release "lubelogger" "hargata/lubelog" "prebuild" "latest" "/opt/lubelogger" "LubeLogger*linux_x64.zip"
|
||||
|
||||
msg_info "Installing LubeLogger"
|
||||
cd /opt
|
||||
mkdir -p /opt/lubelogger
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/hargata/lubelog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
RELEASE_TRIMMED=$(echo "${RELEASE}" | tr -d ".")
|
||||
msg_info "Configuring LubeLogger"
|
||||
cd /opt/lubelogger
|
||||
curl -fsSL "https://github.com/hargata/lubelog/releases/download/v${RELEASE}/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip" -o "LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip"
|
||||
$STD unzip LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip
|
||||
chmod 700 /opt/lubelogger/CarCareTracker
|
||||
cp /opt/lubelogger/appsettings.json /opt/lubelogger/appsettings_bak.json
|
||||
jq '.Kestrel = {"Endpoints": {"Http": {"Url": "http://0.0.0.0:5000"}}}' /opt/lubelogger/appsettings_bak.json >/opt/lubelogger/appsettings.json
|
||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||
msg_ok "Installed LubeLogger"
|
||||
msg_ok "Configured LubeLogger"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/lubelogger.service
|
||||
@@ -51,7 +42,7 @@ Restart=on-failure
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl enable --now -q lubelogger.service
|
||||
systemctl enable -q --now lubelogger
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
@@ -59,7 +50,6 @@ customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/lubelogger/appsettings_bak.json
|
||||
rm -rf /opt/lubelogger/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
||||
@@ -14,14 +14,11 @@ network_check
|
||||
update_os
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
fetch_and_deploy_gh_release "magicmirror" "MagicMirrorOrg/MagicMirror" "tarball"
|
||||
|
||||
msg_info "Setup MagicMirror"
|
||||
temp_file=$(mktemp)
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/MagicMirrorOrg/MagicMirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
curl -fsSL "https://github.com/MagicMirrorOrg/MagicMirror/archive/refs/tags/v${RELEASE}.tar.gz" -o ""$temp_file""
|
||||
tar -xzf "$temp_file"
|
||||
mv MagicMirror-${RELEASE} /opt/magicmirror
|
||||
msg_info "Configuring MagicMirror"
|
||||
cd /opt/magicmirror
|
||||
sed -i -E 's/("postinstall": )".*"/\1""/; s/("prepare": )".*"/\1""/' package.json
|
||||
$STD npm run install-mm
|
||||
cat <<EOF >/opt/magicmirror/config/config.js
|
||||
let config = {
|
||||
@@ -112,8 +109,7 @@ let config = {
|
||||
/*************** DO NOT EDIT THE LINE BELOW ***************/
|
||||
if (typeof module !== "undefined") {module.exports = config;}
|
||||
EOF
|
||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||
msg_ok "Setup MagicMirror"
|
||||
msg_ok "Configured MagicMirror"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/magicmirror.service
|
||||
@@ -133,14 +129,13 @@ ExecStart=/usr/bin/npm run server
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable --now magicmirror
|
||||
systemctl enable -q --now magicmirror
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf $temp_file
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
||||
@@ -31,13 +31,10 @@ $STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH
|
||||
} >>~/mmdl.creds
|
||||
msg_ok "Set up Database"
|
||||
|
||||
msg_info "Installing ${APPLICATION}"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/intri-in/manage-my-damn-life-nextjs/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
curl -fsSLO "https://github.com/intri-in/manage-my-damn-life-nextjs/archive/refs/tags/v${RELEASE}.zip"
|
||||
unzip -q v"$RELEASE".zip
|
||||
mv manage-my-damn-life-nextjs-"$RELEASE"/ /opt/mmdl
|
||||
cp /opt/mmdl/sample.env.local /opt/mmdl/.env
|
||||
fetch_and_deploy_gh_release "mmdl" "intri-in/manage-my-damn-life-nextjs" "tarball"
|
||||
|
||||
msg_info "Configuring ${APPLICATION}"
|
||||
cp /opt/mmdl/sample.env.local /opt/mmdl/.env
|
||||
sed -i -e 's|db|localhost|' \
|
||||
-e "s|myuser|${DB_USER}|" \
|
||||
-e "s|mypassword|${DB_PASS}|" \
|
||||
@@ -46,15 +43,13 @@ sed -i -e 's|db|localhost|' \
|
||||
-e "s|sample_install_mmdm|${DB_NAME}|" \
|
||||
-e "s|=PASSWORD|=$(openssl rand -base64 40 | tr -dc 'a-zA-Z0-9' | head -c40)|" \
|
||||
/opt/mmdl/.env
|
||||
|
||||
cd /opt/mmdl
|
||||
export NEXT_TELEMETRY_DISABLE=1
|
||||
export CI="true"
|
||||
$STD npm install
|
||||
$STD npm run migrate
|
||||
$STD npm run build
|
||||
echo "${RELEASE}" >/opt/mmdl_version.txt
|
||||
msg_ok "Installed ${APPLICATION}"
|
||||
msg_ok "Configured ${APPLICATION}"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/mmdl.service
|
||||
@@ -78,7 +73,6 @@ motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f ~/v${RELEASE}.zip
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
||||
@@ -17,14 +17,7 @@ msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y ffmpeg
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing MediaMTX"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/bluenviron/mediamtx/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
mkdir -p /opt/mediamtx
|
||||
cd /opt/mediamtx
|
||||
curl -fsSL "https://github.com/bluenviron/mediamtx/releases/download/${RELEASE}/mediamtx_${RELEASE}_linux_amd64.tar.gz" -o "mediamtx_${RELEASE}_linux_amd64.tar.gz"
|
||||
tar xzf mediamtx_${RELEASE}_linux_amd64.tar.gz
|
||||
rm -rf mediamtx_${RELEASE}_linux_amd64.tar.gz
|
||||
msg_ok "Installed MediaMTX"
|
||||
fetch_and_deploy_gh_release "mediamtx" "bluenviron/mediamtx" "prebuild" "latest" "/opt/mediamtx" "mediamtx*linux_amd64.tar.gz"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/mediamtx.service
|
||||
|
||||
@@ -13,11 +13,10 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Setup ${APPLICATION}"
|
||||
tmp_file=$(mktemp)
|
||||
RELEASE=$(curl -s https://api.github.com/repos/meilisearch/meilisearch/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
curl -fsSL https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch.deb -o $tmp_file
|
||||
$STD dpkg -i $tmp_file
|
||||
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"
|
||||
|
||||
msg_info "Configuring ${APPLICATION}"
|
||||
cd /opt/meilisearch
|
||||
curl -fsSL https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -o /etc/meilisearch.toml
|
||||
MASTER_KEY=$(openssl rand -base64 12)
|
||||
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
||||
@@ -30,21 +29,14 @@ sed -i \
|
||||
-e 's|^# no_analytics = true|no_analytics = true|' \
|
||||
-e 's|^http_addr =.*|http_addr = "0.0.0.0:7700"|' \
|
||||
/etc/meilisearch.toml
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
msg_ok "Setup ${APPLICATION}"
|
||||
msg_ok "Configured ${APPLICATION}"
|
||||
|
||||
read -r -p "${TAB3}Do you want add meilisearch-ui? [y/n]: " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
|
||||
fetch_and_deploy_gh_release "meilisearch-ui" "riccox/meilisearch-ui" "tarball"
|
||||
|
||||
msg_info "Setup ${APPLICATION}-ui"
|
||||
tmp_file=$(mktemp)
|
||||
tmp_dir=$(mktemp -d)
|
||||
mkdir -p /opt/meilisearch-ui
|
||||
RELEASE_UI=$(curl -s https://api.github.com/repos/riccox/meilisearch-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
curl -fsSL "https://github.com/riccox/meilisearch-ui/archive/refs/tags/${RELEASE_UI}.zip" -o "$tmp_file"
|
||||
$STD unzip "$tmp_file" -d "$tmp_dir"
|
||||
mv "$tmp_dir"/*/* /opt/meilisearch-ui/
|
||||
msg_info "Configuring ${APPLICATION}-ui"
|
||||
cd /opt/meilisearch-ui
|
||||
sed -i 's|const hash = execSync("git rev-parse HEAD").toString().trim();|const hash = "unknown";|' /opt/meilisearch-ui/vite.config.ts
|
||||
$STD pnpm install
|
||||
@@ -53,11 +45,10 @@ VITE_SINGLETON_MODE=true
|
||||
VITE_SINGLETON_HOST=http://${LOCAL_IP}:7700
|
||||
VITE_SINGLETON_API_KEY=${MASTER_KEY}
|
||||
EOF
|
||||
echo "${RELEASE_UI}" >/opt/${APPLICATION}-ui_version.txt
|
||||
msg_ok "Setup ${APPLICATION}-ui"
|
||||
msg_ok "Configured ${APPLICATION}-ui"
|
||||
fi
|
||||
|
||||
msg_info "Setting up Services"
|
||||
msg_info "Creating service"
|
||||
cat <<EOF >/etc/systemd/system/meilisearch.service
|
||||
[Unit]
|
||||
Description=Meilisearch
|
||||
@@ -94,8 +85,7 @@ WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now meilisearch-ui
|
||||
fi
|
||||
|
||||
msg_ok "Set up Services"
|
||||
msg_ok "Service created"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
@@ -24,7 +24,7 @@ msg_ok "Installed Dependencies"
|
||||
setup_mongodb
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
|
||||
msg_info "Configure MongoDB"
|
||||
msg_info "Configuring MongoDB"
|
||||
MONGO_ADMIN_USER="admin"
|
||||
MONGO_ADMIN_PWD="$(openssl rand -base64 18 | cut -c1-13)"
|
||||
NODEBB_USER="nodebb"
|
||||
@@ -63,14 +63,11 @@ sed -i 's/bindIp: 127.0.0.1/bindIp: 0.0.0.0/' /etc/mongod.conf
|
||||
sed -i '/security:/d' /etc/mongod.conf
|
||||
bash -c 'echo -e "\nsecurity:\n authorization: enabled" >> /etc/mongod.conf'
|
||||
systemctl restart mongod
|
||||
msg_ok "MongoDB successfully configurated"
|
||||
msg_ok "MongoDB configured"
|
||||
|
||||
msg_info "Install NodeBB"
|
||||
cd /opt
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NodeBB/NodeBB/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
curl -fsSL "https://github.com/NodeBB/NodeBB/archive/refs/tags/v${RELEASE}.zip" -o "/opt/v${RELEASE}.zip"
|
||||
$STD unzip v${RELEASE}.zip
|
||||
mv NodeBB-${RELEASE} /opt/nodebb
|
||||
fetch_and_deploy_gh_release "nodebb" "NodeBB/NodeBB" "tarball"
|
||||
|
||||
msg_info "Configuring NodeBB"
|
||||
cd /opt/nodebb
|
||||
touch pidfile
|
||||
expect <<EOF >/dev/null 2>&1
|
||||
@@ -107,8 +104,7 @@ expect "Confirm Password" {
|
||||
}
|
||||
expect eof
|
||||
EOF
|
||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||
msg_ok "Installed NodeBB"
|
||||
msg_ok "Configured NodeBB"
|
||||
|
||||
msg_info "Creating Services"
|
||||
cat <<EOF >/etc/systemd/system/nodebb.service
|
||||
@@ -136,7 +132,6 @@ motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -R /opt/v${RELEASE}.zip
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
||||
@@ -13,20 +13,8 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
jq
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup OAuth2-Proxy"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/oauth2-proxy/oauth2-proxy/releases/latest | jq -r .tag_name | sed 's/^v//')
|
||||
mkdir -p /opt/oauth2-proxy
|
||||
curl -fsSL "https://github.com/oauth2-proxy/oauth2-proxy/releases/download/v${RELEASE}/oauth2-proxy-v${RELEASE}.linux-amd64.tar.gz" -o /opt/oauth2-proxy.tar.gz
|
||||
tar -xzf /opt/oauth2-proxy.tar.gz -C /opt
|
||||
mv /opt/oauth2-proxy-v${RELEASE}.linux-amd64/oauth2-proxy /opt/oauth2-proxy
|
||||
fetch_and_deploy_gh_release "oauth2-proxy" "oauth2-proxy/oauth2-proxy" "prebuild" "latest" "/opt/oauth2-proxy" "oauth2-proxy*linux-amd64.tar.gz"
|
||||
touch /opt/oauth2-proxy/config.toml
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
msg_ok "Setup OAuth2-Proxy"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/oauth2-proxy.service
|
||||
@@ -51,8 +39,6 @@ motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f "/opt/oauth2-proxy.tar.gz"
|
||||
rm -rf "/opt/oauth2-proxy-v${RELEASE}.linux-amd64"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
||||
@@ -19,12 +19,7 @@ $STD apt-get install -y \
|
||||
apt-transport-https
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Azul Zulu17"
|
||||
curl -fsSL https://repos.azul.com/azul-repo.key | gpg --dearmor -o /usr/share/keyrings/azul.gpg
|
||||
echo "deb [signed-by=/usr/share/keyrings/azul.gpg] https://repos.azul.com/zulu/deb stable main" >/etc/apt/sources.list.d/zulu.list
|
||||
$STD apt-get update
|
||||
$STD apt-get -y install zulu17-jdk
|
||||
msg_ok "Installed Azul Zulu17"
|
||||
JAVA_VERSION="21" setup_java
|
||||
|
||||
msg_info "Installing openHAB"
|
||||
curl -fsSL "https://openhab.jfrog.io/artifactory/api/gpg/key/public" | gpg --dearmor -o /usr/share/keyrings/openhab.gpg
|
||||
|
||||
@@ -19,21 +19,7 @@ $STD apt-get install -y \
|
||||
ca-certificates
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setting up OpenProject Repository"
|
||||
curl -fsSL "https://dl.packager.io/srv/opf/openproject/key" | gpg --dearmor >/etc/apt/trusted.gpg.d/packager-io.gpg
|
||||
curl -fsSL "https://dl.packager.io/srv/opf/openproject/stable/15/installer/debian/12.repo" -o "/etc/apt/sources.list.d/openproject.list"
|
||||
msg_ok "Setup OpenProject Repository"
|
||||
|
||||
msg_info "Setting up PostgreSQL Repository"
|
||||
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
||||
echo "deb http://apt.postgresql.org/pub/repos/apt ${VERSION}-pgdg main" >/etc/apt/sources.list.d/pgdg.list
|
||||
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor --output /etc/apt/trusted.gpg.d/postgresql.gpg
|
||||
msg_ok "Setup PostgreSQL Repository"
|
||||
|
||||
msg_info "Installing PostgreSQL"
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y postgresql
|
||||
msg_ok "Installed PostgreSQL"
|
||||
PG_VERSION="17" setup_postgresql
|
||||
|
||||
msg_info "Setting up PostgreSQL"
|
||||
DB_NAME=openproject
|
||||
@@ -51,6 +37,11 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMP
|
||||
} >>~/openproject.creds
|
||||
msg_ok "Set up PostgreSQL"
|
||||
|
||||
msg_info "Setting up OpenProject Repository"
|
||||
curl -fsSL "https://dl.packager.io/srv/opf/openproject/key" | gpg --dearmor >/etc/apt/trusted.gpg.d/packager-io.gpg
|
||||
curl -fsSL "https://dl.packager.io/srv/opf/openproject/stable/15/installer/debian/12.repo" -o "/etc/apt/sources.list.d/openproject.list"
|
||||
msg_ok "Setup OpenProject Repository"
|
||||
|
||||
msg_info "Installing OpenProject"
|
||||
$STD apt-get install -y openproject
|
||||
msg_ok "Installed OpenProject"
|
||||
|
||||
@@ -40,14 +40,11 @@ $STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
|
||||
} >>~/outline.creds
|
||||
msg_ok "Set up PostgreSQL Database"
|
||||
|
||||
msg_info "Setup Outline (Patience)"
|
||||
fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
|
||||
|
||||
msg_info "Configuring Outline (Patience)"
|
||||
SECRET_KEY="$(openssl rand -hex 32)"
|
||||
temp_file=$(mktemp)
|
||||
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/outline/outline/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
curl -fsSL "https://github.com/outline/outline/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||
tar zxf $temp_file
|
||||
mv outline-${RELEASE} /opt/outline
|
||||
cd /opt/outline
|
||||
cp .env.sample .env
|
||||
export NODE_ENV=development
|
||||
@@ -62,8 +59,7 @@ export NODE_OPTIONS="--max-old-space-size=3584"
|
||||
$STD yarn build
|
||||
sed -i 's/NODE_ENV=development/NODE_ENV=production/g' /opt/outline/.env
|
||||
export NODE_ENV=production
|
||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||
msg_ok "Setup Outline"
|
||||
msg_ok "Configured Outline"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/outline.service
|
||||
@@ -89,7 +85,6 @@ motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf $temp_file
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
||||
@@ -14,19 +14,17 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
git \
|
||||
ca-certificates
|
||||
$STD apt-get install -y ca-certificates
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
||||
fetch_and_deploy_gh_release "overseerr" "sct/overseerr" "tarball"
|
||||
|
||||
msg_info "Installing Overseerr (Patience)"
|
||||
git clone -q https://github.com/sct/overseerr.git /opt/overseerr
|
||||
msg_info "Configuring Overseerr (Patience)"
|
||||
cd /opt/overseerr
|
||||
$STD yarn install
|
||||
$STD yarn build
|
||||
msg_ok "Installed Overseerr"
|
||||
msg_ok "Configured Overseerr"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/overseerr.service
|
||||
|
||||
@@ -17,13 +17,7 @@ msg_info "Installing Dependencies (Patience)"
|
||||
$STD apt-get install -y ffmpeg
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Owncast"
|
||||
mkdir /opt/owncast
|
||||
cd /opt/owncast
|
||||
curl -fsSL "$(curl -fsSL https://api.github.com/repos/owncast/owncast/releases/latest | grep download | grep linux-64bit | cut -d\" -f4)" -o $(basename "$(curl -fsSL https://api.github.com/repos/owncast/owncast/releases/latest | grep download | grep linux-64bit | cut -d\" -f4)")
|
||||
$STD unzip owncast*.zip
|
||||
rm owncast*.zip
|
||||
msg_ok "Installed Owncast"
|
||||
fetch_and_deploy_gh_release "owncast" "owncast/owncast" "prebuild" "latest" "/opt/owncast" "owncast*linux-64bit.zip"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/owncast.service
|
||||
|
||||
@@ -18,14 +18,7 @@ $STD apt-get install -y libc++-dev
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
JAVA_VERSION=21 setup_java
|
||||
|
||||
msg_info "Settting up Suwayomi-Server"
|
||||
temp_file=$(mktemp)
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
curl -fsSL "https://github.com/Suwayomi/Suwayomi-Server/releases/download/${RELEASE}/Suwayomi-Server-${RELEASE}-debian-all.deb" -o "$temp_file"
|
||||
$STD dpkg -i "$temp_file"
|
||||
echo "${RELEASE}" >/opt/suwayomi-server_version.txt
|
||||
msg_ok "Done setting up Suwayomi-Server"
|
||||
fetch_and_deploy_gh_release "suwayomi-server" "Suwayomi/Suwayomi-Server" "binary"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/suwayomi-server.service
|
||||
@@ -47,7 +40,6 @@ motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f "$temp_file"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
||||
@@ -15,8 +15,13 @@ update_os
|
||||
|
||||
fetch_and_deploy_gh_release "victoriametrics" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "victoria-metrics-linux-amd64-v+([0-9.]).tar.gz"
|
||||
fetch_and_deploy_gh_release "vmutils" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "vmutils-linux-amd64-v+([0-9.]).tar.gz"
|
||||
fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "victoria-logs-linux-amd64*.tar.gz"
|
||||
fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "vlutils-linux-amd64*.tar.gz"
|
||||
|
||||
read -r -p "${TAB3}Would you like to add VictoriaLogs? <y/N> " prompt
|
||||
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "victoria-logs-linux-amd64*.tar.gz"
|
||||
fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "vlutils-linux-amd64*.tar.gz"
|
||||
fi
|
||||
|
||||
msg_info "Setup VictoriaMetrics"
|
||||
mkdir -p /opt/victoriametrics/data
|
||||
@@ -38,8 +43,10 @@ ExecStart=/opt/victoriametrics/victoria-metrics-prod --storageDataPath="/opt/vic
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now victoriametrics
|
||||
|
||||
cat <<EOF >/etc/systemd/system/victoriametrics-logs.service
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
cat <<EOF >/etc/systemd/system/victoriametrics-logs.service
|
||||
[Unit]
|
||||
Description=VictoriaMetrics Service
|
||||
|
||||
@@ -53,15 +60,14 @@ ExecStart=/opt/victoriametrics/victoria-logs-prod
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now victoriametrics
|
||||
systemctl enable -q --now victoriametrics-logs
|
||||
systemctl enable -q --now victoriametrics-logs
|
||||
fi
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf $temp_dir
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
|
||||
@@ -1286,6 +1286,10 @@ EOF
|
||||
msg_ok "Network in LXC is reachable"
|
||||
break
|
||||
fi
|
||||
if pct exec "$CTID" -- curl -fsSIL --max-time 10 deb.debian.org >/dev/null 2>&1; then
|
||||
msg_ok "Network in LXC is reachable"
|
||||
break
|
||||
fi
|
||||
if [ "$i" -lt 10 ]; then
|
||||
msg_warn "No network yet in LXC (try $i/10) – waiting..."
|
||||
sleep 3
|
||||
|
||||
@@ -1,552 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
source /dev/stdin <<<$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
|
||||
|
||||
function header_info {
|
||||
clear
|
||||
cat <<"EOF"
|
||||
__ ____ __ ___ __ __ _______ _ ____ ___
|
||||
/ / / / /_ __ ______ / /___ __ |__ \/ // / < / __ \ | | / / |/ /
|
||||
/ / / / __ \/ / / / __ \/ __/ / / / __/ / // /_ / / / / / | | / / /|_/ /
|
||||
/ /_/ / /_/ / /_/ / / / / /_/ /_/ / / __/__ __/ / / /_/ / | |/ / / / /
|
||||
\____/_.___/\__,_/_/ /_/\__/\__,_/ /____/ /_/ (_)_/\____/ |___/_/ /_/
|
||||
|
||||
EOF
|
||||
}
|
||||
header_info
|
||||
echo -e "\n Loading..."
|
||||
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
|
||||
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
|
||||
METHOD=""
|
||||
NSAPP="ubuntu-2410-vm"
|
||||
var_os="ubuntu"
|
||||
var_version="2410"
|
||||
|
||||
YW=$(echo "\033[33m")
|
||||
BL=$(echo "\033[36m")
|
||||
RD=$(echo "\033[01;31m")
|
||||
BGN=$(echo "\033[4;92m")
|
||||
GN=$(echo "\033[1;92m")
|
||||
DGN=$(echo "\033[32m")
|
||||
CL=$(echo "\033[m")
|
||||
|
||||
CL=$(echo "\033[m")
|
||||
BOLD=$(echo "\033[1m")
|
||||
BFR="\\r\\033[K"
|
||||
HOLD=" "
|
||||
TAB=" "
|
||||
|
||||
CM="${TAB}✔️${TAB}${CL}"
|
||||
CROSS="${TAB}✖️${TAB}${CL}"
|
||||
INFO="${TAB}💡${TAB}${CL}"
|
||||
OS="${TAB}🖥️${TAB}${CL}"
|
||||
CONTAINERTYPE="${TAB}📦${TAB}${CL}"
|
||||
DISKSIZE="${TAB}💾${TAB}${CL}"
|
||||
CPUCORE="${TAB}🧠${TAB}${CL}"
|
||||
RAMSIZE="${TAB}🛠️${TAB}${CL}"
|
||||
CONTAINERID="${TAB}🆔${TAB}${CL}"
|
||||
HOSTNAME="${TAB}🏠${TAB}${CL}"
|
||||
BRIDGE="${TAB}🌉${TAB}${CL}"
|
||||
GATEWAY="${TAB}🌐${TAB}${CL}"
|
||||
DEFAULT="${TAB}⚙️${TAB}${CL}"
|
||||
MACADDRESS="${TAB}🔗${TAB}${CL}"
|
||||
VLANTAG="${TAB}🏷️${TAB}${CL}"
|
||||
CREATING="${TAB}🚀${TAB}${CL}"
|
||||
ADVANCED="${TAB}🧩${TAB}${CL}"
|
||||
|
||||
THIN="discard=on,ssd=1,"
|
||||
set -e
|
||||
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
|
||||
trap cleanup EXIT
|
||||
trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT
|
||||
trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
|
||||
function error_handler() {
|
||||
local exit_code="$?"
|
||||
local line_number="$1"
|
||||
local command="$2"
|
||||
post_update_to_api "failed" "$command"
|
||||
local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
|
||||
echo -e "\n$error_message\n"
|
||||
cleanup_vmid
|
||||
}
|
||||
|
||||
function get_valid_nextid() {
|
||||
local try_id
|
||||
try_id=$(pvesh get /cluster/nextid)
|
||||
while true; do
|
||||
if [ -f "/etc/pve/qemu-server/${try_id}.conf" ] || [ -f "/etc/pve/lxc/${try_id}.conf" ]; then
|
||||
try_id=$((try_id + 1))
|
||||
continue
|
||||
fi
|
||||
if lvs --noheadings -o lv_name | grep -qE "(^|[-_])${try_id}($|[-_])"; then
|
||||
try_id=$((try_id + 1))
|
||||
continue
|
||||
fi
|
||||
break
|
||||
done
|
||||
echo "$try_id"
|
||||
}
|
||||
|
||||
function cleanup_vmid() {
|
||||
if qm status $VMID &>/dev/null; then
|
||||
qm stop $VMID &>/dev/null
|
||||
qm destroy $VMID &>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
function cleanup() {
|
||||
popd >/dev/null
|
||||
rm -rf $TEMP_DIR
|
||||
}
|
||||
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
pushd $TEMP_DIR >/dev/null
|
||||
if whiptail --backtitle "Proxmox VE Helper Scripts" --title "Ubuntu 24.10 VM" --yesno "This will create a New Ubuntu 24.10 VM. Proceed?" 10 58; then
|
||||
:
|
||||
else
|
||||
header_info && echo -e "${CROSS}${RD}User exited script${CL}\n" && exit
|
||||
fi
|
||||
|
||||
function msg_info() {
|
||||
local msg="$1"
|
||||
echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}"
|
||||
}
|
||||
|
||||
function msg_ok() {
|
||||
local msg="$1"
|
||||
echo -e "${BFR}${CM}${GN}${msg}${CL}"
|
||||
}
|
||||
|
||||
function msg_error() {
|
||||
local msg="$1"
|
||||
echo -e "${BFR}${CROSS}${RD}${msg}${CL}"
|
||||
}
|
||||
|
||||
function check_root() {
|
||||
if [[ "$(id -u)" -ne 0 || $(ps -o comm= -p $PPID) == "sudo" ]]; then
|
||||
clear
|
||||
msg_error "Please run this script as root."
|
||||
echo -e "\nExiting..."
|
||||
sleep 2
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
pve_check() {
|
||||
local PVE_VER
|
||||
PVE_VER="$(pveversion | awk -F'/' '{print $2}' | awk -F'-' '{print $1}')"
|
||||
|
||||
# Check for Proxmox VE 8.x
|
||||
if [[ "$PVE_VER" =~ ^8\.([0-9]+) ]]; then
|
||||
local MINOR="${BASH_REMATCH[1]}"
|
||||
if ((MINOR < 1 || MINOR > 4)); then
|
||||
msg_error "This version of Proxmox VE is not supported."
|
||||
echo -e "Required: Proxmox VE version 8.1 – 8.4"
|
||||
exit 1
|
||||
fi
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Check for Proxmox VE 9.x (Beta) — require confirmation
|
||||
if [[ "$PVE_VER" =~ ^9\.([0-9]+) ]]; then
|
||||
if whiptail --title "Proxmox 9.x Detected (Beta)" \
|
||||
--yesno "You are using Proxmox VE $PVE_VER, which is currently in Beta state.\n\nThis version is experimentally supported.\n\nDo you want to proceed anyway?" 12 70; then
|
||||
msg_ok "Confirmed: Continuing with Proxmox VE $PVE_VER"
|
||||
return 0
|
||||
else
|
||||
msg_error "Aborted by user: Proxmox VE 9.x was not confirmed."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# All other unsupported versions
|
||||
msg_error "This version of Proxmox VE is not supported."
|
||||
echo -e "Supported versions: Proxmox VE 8.1 – 8.4 or 9.x (Beta, with confirmation)"
|
||||
exit 1
|
||||
}
|
||||
|
||||
function arch_check() {
|
||||
if [ "$(dpkg --print-architecture)" != "amd64" ]; then
|
||||
echo -e "\n ${INFO}${YWB}This script will not work with PiMox! \n"
|
||||
echo -e "\n ${YWB}Visit https://github.com/asylumexp/Proxmox for ARM64 support. \n"
|
||||
echo -e "Exiting..."
|
||||
sleep 2
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
function ssh_check() {
|
||||
if command -v pveversion >/dev/null 2>&1; then
|
||||
if [ -n "${SSH_CLIENT:+x}" ]; then
|
||||
if whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SSH DETECTED" --yesno "It's suggested to use the Proxmox shell instead of SSH, since SSH can create issues while gathering variables. Would you like to proceed with using SSH?" 10 62; then
|
||||
echo "you've been warned"
|
||||
else
|
||||
clear
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function exit-script() {
|
||||
clear
|
||||
echo -e "\n${CROSS}${RD}User exited script${CL}\n"
|
||||
exit
|
||||
}
|
||||
|
||||
function default_settings() {
|
||||
VMID=$(get_valid_nextid)
|
||||
FORMAT=",efitype=4m"
|
||||
MACHINE=""
|
||||
DISK_SIZE="8G"
|
||||
DISK_CACHE=""
|
||||
HN="ubuntu"
|
||||
CPU_TYPE=""
|
||||
CORE_COUNT="2"
|
||||
RAM_SIZE="2048"
|
||||
BRG="vmbr0"
|
||||
MAC="$GEN_MAC"
|
||||
VLAN=""
|
||||
MTU=""
|
||||
START_VM="yes"
|
||||
METHOD="default"
|
||||
echo -e "${CONTAINERID}${BOLD}${DGN}Virtual Machine ID: ${BGN}${VMID}${CL}"
|
||||
echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}i440fx${CL}"
|
||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}${CL}"
|
||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Cache: ${BGN}None${CL}"
|
||||
echo -e "${HOSTNAME}${BOLD}${DGN}Hostname: ${BGN}${HN}${CL}"
|
||||
echo -e "${OS}${BOLD}${DGN}CPU Model: ${BGN}KVM64${CL}"
|
||||
echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}${CORE_COUNT}${CL}"
|
||||
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}${CL}"
|
||||
echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}${BRG}${CL}"
|
||||
echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}${MAC}${CL}"
|
||||
echo -e "${VLANTAG}${BOLD}${DGN}VLAN: ${BGN}Default${CL}"
|
||||
echo -e "${DEFAULT}${BOLD}${DGN}Interface MTU Size: ${BGN}Default${CL}"
|
||||
echo -e "${GATEWAY}${BOLD}${DGN}Start VM when completed: ${BGN}yes${CL}"
|
||||
echo -e "${CREATING}${BOLD}${DGN}Creating a Ubuntu 24.10 VM using the above default settings${CL}"
|
||||
}
|
||||
|
||||
function advanced_settings() {
|
||||
METHOD="advanced"
|
||||
[ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
|
||||
while true; do
|
||||
if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $VMID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||
if [ -z "$VMID" ]; then
|
||||
VMID=$(get_valid_nextid)
|
||||
fi
|
||||
if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
|
||||
echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
|
||||
sleep 2
|
||||
continue
|
||||
fi
|
||||
echo -e "${CONTAINERID}${BOLD}${DGN}Virtual Machine ID: ${BGN}$VMID${CL}"
|
||||
break
|
||||
else
|
||||
exit-script
|
||||
fi
|
||||
done
|
||||
|
||||
if MACH=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "MACHINE TYPE" --radiolist --cancel-button Exit-Script "Choose Type" 10 58 2 \
|
||||
"i440fx" "Machine i440fx" ON \
|
||||
"q35" "Machine q35" OFF \
|
||||
3>&1 1>&2 2>&3); then
|
||||
if [ $MACH = q35 ]; then
|
||||
echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}$MACH${CL}"
|
||||
FORMAT=""
|
||||
MACHINE=" -machine q35"
|
||||
else
|
||||
echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}$MACH${CL}"
|
||||
FORMAT=",efitype=4m"
|
||||
MACHINE=""
|
||||
fi
|
||||
else
|
||||
exit-script
|
||||
fi
|
||||
|
||||
if DISK_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Disk Size in GiB (e.g., 10, 20)" 8 58 "$DISK_SIZE" --title "DISK SIZE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||
DISK_SIZE=$(echo "$DISK_SIZE" | tr -d ' ')
|
||||
if [[ "$DISK_SIZE" =~ ^[0-9]+$ ]]; then
|
||||
DISK_SIZE="${DISK_SIZE}G"
|
||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}$DISK_SIZE${CL}"
|
||||
elif [[ "$DISK_SIZE" =~ ^[0-9]+G$ ]]; then
|
||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}$DISK_SIZE${CL}"
|
||||
else
|
||||
echo -e "${DISKSIZE}${BOLD}${RD}Invalid Disk Size. Please use a number (e.g., 10 or 10G).${CL}"
|
||||
exit-script
|
||||
fi
|
||||
else
|
||||
exit-script
|
||||
fi
|
||||
|
||||
if DISK_CACHE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "DISK CACHE" --radiolist "Choose" --cancel-button Exit-Script 10 58 2 \
|
||||
"0" "None (Default)" ON \
|
||||
"1" "Write Through" OFF \
|
||||
3>&1 1>&2 2>&3); then
|
||||
if [ $DISK_CACHE = "1" ]; then
|
||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Cache: ${BGN}Write Through${CL}"
|
||||
DISK_CACHE="cache=writethrough,"
|
||||
else
|
||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Cache: ${BGN}None${CL}"
|
||||
DISK_CACHE=""
|
||||
fi
|
||||
else
|
||||
exit-script
|
||||
fi
|
||||
|
||||
if VM_NAME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Hostname" 8 58 ubuntu --title "HOSTNAME" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||
if [ -z $VM_NAME ]; then
|
||||
HN="ubuntu"
|
||||
echo -e "${HOSTNAME}${BOLD}${DGN}Hostname: ${BGN}$HN${CL}"
|
||||
else
|
||||
HN=$(echo ${VM_NAME,,} | tr -d ' ')
|
||||
echo -e "${HOSTNAME}${BOLD}${DGN}Hostname: ${BGN}$HN${CL}"
|
||||
fi
|
||||
else
|
||||
exit-script
|
||||
fi
|
||||
|
||||
if CPU_TYPE1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "CPU MODEL" --radiolist "Choose" --cancel-button Exit-Script 10 58 2 \
|
||||
"0" "KVM64 (Default)" ON \
|
||||
"1" "Host" OFF \
|
||||
3>&1 1>&2 2>&3); then
|
||||
if [ $CPU_TYPE1 = "1" ]; then
|
||||
echo -e "${OS}${BOLD}${DGN}CPU Model: ${BGN}Host${CL}"
|
||||
CPU_TYPE=" -cpu host"
|
||||
else
|
||||
echo -e "${OS}${BOLD}${DGN}CPU Model: ${BGN}KVM64${CL}"
|
||||
CPU_TYPE=""
|
||||
fi
|
||||
else
|
||||
exit-script
|
||||
fi
|
||||
|
||||
if CORE_COUNT=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate CPU Cores" 8 58 2 --title "CORE COUNT" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||
if [ -z $CORE_COUNT ]; then
|
||||
CORE_COUNT="2"
|
||||
echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}$CORE_COUNT${CL}"
|
||||
else
|
||||
echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}$CORE_COUNT${CL}"
|
||||
fi
|
||||
else
|
||||
exit-script
|
||||
fi
|
||||
|
||||
if RAM_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate RAM in MiB" 8 58 2048 --title "RAM" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||
if [ -z $RAM_SIZE ]; then
|
||||
RAM_SIZE="2048"
|
||||
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}$RAM_SIZE${CL}"
|
||||
else
|
||||
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}$RAM_SIZE${CL}"
|
||||
fi
|
||||
else
|
||||
exit-script
|
||||
fi
|
||||
|
||||
if BRG=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a Bridge" 8 58 vmbr0 --title "BRIDGE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||
if [ -z $BRG ]; then
|
||||
BRG="vmbr0"
|
||||
echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}"
|
||||
else
|
||||
echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}"
|
||||
fi
|
||||
else
|
||||
exit-script
|
||||
fi
|
||||
|
||||
if MAC1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a MAC Address" 8 58 $GEN_MAC --title "MAC ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||
if [ -z $MAC1 ]; then
|
||||
MAC="$GEN_MAC"
|
||||
echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}$MAC${CL}"
|
||||
else
|
||||
MAC="$MAC1"
|
||||
echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}$MAC1${CL}"
|
||||
fi
|
||||
else
|
||||
exit-script
|
||||
fi
|
||||
|
||||
if VLAN1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a Vlan(leave blank for default)" 8 58 --title "VLAN" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||
if [ -z $VLAN1 ]; then
|
||||
VLAN1="Default"
|
||||
VLAN=""
|
||||
echo -e "${VLANTAG}${BOLD}${DGN}VLAN: ${BGN}$VLAN1${CL}"
|
||||
else
|
||||
VLAN=",tag=$VLAN1"
|
||||
echo -e "${VLANTAG}${BOLD}${DGN}VLAN: ${BGN}$VLAN1${CL}"
|
||||
fi
|
||||
else
|
||||
exit-script
|
||||
fi
|
||||
|
||||
if MTU1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Interface MTU Size (leave blank for default)" 8 58 --title "MTU SIZE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
||||
if [ -z $MTU1 ]; then
|
||||
MTU1="Default"
|
||||
MTU=""
|
||||
echo -e "${DEFAULT}${BOLD}${DGN}Interface MTU Size: ${BGN}$MTU1${CL}"
|
||||
else
|
||||
MTU=",mtu=$MTU1"
|
||||
echo -e "${DEFAULT}${BOLD}${DGN}Interface MTU Size: ${BGN}$MTU1${CL}"
|
||||
fi
|
||||
else
|
||||
exit-script
|
||||
fi
|
||||
|
||||
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "START VIRTUAL MACHINE" --yesno "Start VM when completed?" 10 58); then
|
||||
echo -e "${GATEWAY}${BOLD}${DGN}Start VM when completed: ${BGN}yes${CL}"
|
||||
START_VM="yes"
|
||||
else
|
||||
echo -e "${GATEWAY}${BOLD}${DGN}Start VM when completed: ${BGN}no${CL}"
|
||||
START_VM="no"
|
||||
fi
|
||||
|
||||
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create a Ubuntu 24.10 VM?" --no-button Do-Over 10 58); then
|
||||
echo -e "${CREATING}${BOLD}${DGN}Creating a Ubuntu 24.10 VM using the above advanced settings${CL}"
|
||||
else
|
||||
header_info
|
||||
echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings${CL}"
|
||||
advanced_settings
|
||||
fi
|
||||
}
|
||||
|
||||
function start_script() {
|
||||
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "SETTINGS" --yesno "Use Default Settings?" --no-button Advanced 10 58); then
|
||||
header_info
|
||||
echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings${CL}"
|
||||
default_settings
|
||||
else
|
||||
header_info
|
||||
echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings${CL}"
|
||||
advanced_settings
|
||||
fi
|
||||
}
|
||||
|
||||
check_root
|
||||
arch_check
|
||||
pve_check
|
||||
ssh_check
|
||||
start_script
|
||||
post_to_api_vm
|
||||
|
||||
msg_info "Validating Storage"
|
||||
while read -r line; do
|
||||
TAG=$(echo $line | awk '{print $1}')
|
||||
TYPE=$(echo $line | awk '{printf "%-10s", $2}')
|
||||
FREE=$(echo $line | numfmt --field 4-6 --from-unit=K --to=iec --format %.2f | awk '{printf( "%9sB", $6)}')
|
||||
ITEM=" Type: $TYPE Free: $FREE "
|
||||
OFFSET=2
|
||||
if [[ $((${#ITEM} + $OFFSET)) -gt ${MSG_MAX_LENGTH:-} ]]; then
|
||||
MSG_MAX_LENGTH=$((${#ITEM} + $OFFSET))
|
||||
fi
|
||||
STORAGE_MENU+=("$TAG" "$ITEM" "OFF")
|
||||
done < <(pvesm status -content images | awk 'NR>1')
|
||||
VALID=$(pvesm status -content images | awk 'NR>1')
|
||||
if [ -z "$VALID" ]; then
|
||||
msg_error "Unable to detect a valid storage location."
|
||||
exit
|
||||
elif [ $((${#STORAGE_MENU[@]} / 3)) -eq 1 ]; then
|
||||
STORAGE=${STORAGE_MENU[0]}
|
||||
else
|
||||
while [ -z "${STORAGE:+x}" ]; do
|
||||
STORAGE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Storage Pools" --radiolist \
|
||||
"Which storage pool would you like to use for ${HN}?\nTo make a selection, use the Spacebar.\n" \
|
||||
16 $(($MSG_MAX_LENGTH + 23)) 6 \
|
||||
"${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3)
|
||||
done
|
||||
fi
|
||||
msg_ok "Using ${CL}${BL}$STORAGE${CL} ${GN}for Storage Location."
|
||||
msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}."
|
||||
msg_info "Retrieving the URL for the Ubuntu 24.10 Disk Image"
|
||||
URL=https://cloud-images.ubuntu.com/oracular/current/oracular-server-cloudimg-amd64.img
|
||||
sleep 2
|
||||
msg_ok "${CL}${BL}${URL}${CL}"
|
||||
curl -f#SL -o "$(basename "$URL")" "$URL"
|
||||
echo -en "\e[1A\e[0K"
|
||||
FILE=$(basename $URL)
|
||||
msg_ok "Downloaded ${CL}${BL}${FILE}${CL}"
|
||||
|
||||
STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
|
||||
case $STORAGE_TYPE in
|
||||
nfs | dir | cifs)
|
||||
DISK_EXT=".qcow2"
|
||||
DISK_REF="$VMID/"
|
||||
DISK_IMPORT="-format qcow2"
|
||||
THIN=""
|
||||
;;
|
||||
btrfs)
|
||||
DISK_EXT=".raw"
|
||||
DISK_REF="$VMID/"
|
||||
DISK_IMPORT="-format raw"
|
||||
FORMAT=",efitype=4m"
|
||||
THIN=""
|
||||
;;
|
||||
esac
|
||||
for i in {0,1}; do
|
||||
disk="DISK$i"
|
||||
eval DISK${i}=vm-${VMID}-disk-${i}${DISK_EXT:-}
|
||||
eval DISK${i}_REF=${STORAGE}:${DISK_REF:-}${!disk}
|
||||
done
|
||||
|
||||
msg_info "Creating a Ubuntu 24.10 VM"
|
||||
qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
|
||||
-name $HN -tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
|
||||
qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
|
||||
qm set $VMID \
|
||||
-efidisk0 ${DISK0_REF}${FORMAT} \
|
||||
-scsi0 ${DISK1_REF},${DISK_CACHE}${THIN}size=${DISK_SIZE} \
|
||||
-ide2 ${STORAGE}:cloudinit \
|
||||
-boot order=scsi0 \
|
||||
-serial0 socket >/dev/null
|
||||
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;'/>
|
||||
</a>
|
||||
|
||||
<h2 style='font-size: 24px; margin: 20px 0;'>Ubuntu 24.10 VM</h2>
|
||||
|
||||
<p style='margin: 16px 0;'>
|
||||
<a href='https://ko-fi.com/community_scripts' target='_blank' rel='noopener noreferrer'>
|
||||
<img src='https://img.shields.io/badge/☕-Buy us a coffee-blue' alt='spend Coffee' />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<span style='margin: 0 10px;'>
|
||||
<i class="fa fa-github fa-fw" style="color: #f5f5f5;"></i>
|
||||
<a href='https://github.com/community-scripts/ProxmoxVE' target='_blank' rel='noopener noreferrer' style='text-decoration: none; color: #00617f;'>GitHub</a>
|
||||
</span>
|
||||
<span style='margin: 0 10px;'>
|
||||
<i class="fa fa-comments fa-fw" style="color: #f5f5f5;"></i>
|
||||
<a href='https://github.com/community-scripts/ProxmoxVE/discussions' target='_blank' rel='noopener noreferrer' style='text-decoration: none; color: #00617f;'>Discussions</a>
|
||||
</span>
|
||||
<span style='margin: 0 10px;'>
|
||||
<i class="fa fa-exclamation-circle fa-fw" style="color: #f5f5f5;"></i>
|
||||
<a href='https://github.com/community-scripts/ProxmoxVE/issues' target='_blank' rel='noopener noreferrer' style='text-decoration: none; color: #00617f;'>Issues</a>
|
||||
</span>
|
||||
</div>
|
||||
EOF
|
||||
)
|
||||
qm set "$VMID" -description "$DESCRIPTION" >/dev/null
|
||||
if [ -n "$DISK_SIZE" ]; then
|
||||
msg_info "Resizing disk to $DISK_SIZE GB"
|
||||
qm resize $VMID scsi0 ${DISK_SIZE} >/dev/null
|
||||
else
|
||||
msg_info "Using default disk size of $DEFAULT_DISK_SIZE GB"
|
||||
qm resize $VMID scsi0 ${DEFAULT_DISK_SIZE} >/dev/null
|
||||
fi
|
||||
|
||||
msg_ok "Created a Ubuntu 24.10 VM ${CL}${BL}(${HN})"
|
||||
if [ "$START_VM" == "yes" ]; then
|
||||
msg_info "Starting Ubuntu 24.10 VM"
|
||||
qm start $VMID
|
||||
msg_ok "Started Ubuntu 24.10 VM"
|
||||
fi
|
||||
post_update_to_api "done" "none"
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "Setup Cloud-Init before starting \n
|
||||
More info at https://github.com/community-scripts/ProxmoxVE/discussions/272 \n"
|
||||
Reference in New Issue
Block a user