Compare commits

...

59 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
00a69678c0 Update CHANGELOG.md (#6486)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-02 00:13:46 +00:00
community-scripts-pr-app[bot]
1c2ccf81d2 Update versions.json (#6485)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-02 02:13:28 +02:00
CanbiZ
88483b7dab Magicmirror: add git dependency 2025-08-01 22:07:33 +02:00
community-scripts-pr-app[bot]
7c41c51bfe Update CHANGELOG.md (#6481)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 19:06:58 +00:00
community-scripts-pr-app[bot]
ecf01637a5 Update CHANGELOG.md (#6480)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 19:06:45 +00:00
CanbiZ
3068ae1383 Fumadocs: add git as dependency (#6459) 2025-08-01 21:06:36 +02:00
community-scripts-pr-app[bot]
ca8cddb788 Update CHANGELOG.md (#6479)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 19:06:26 +00:00
community-scripts-pr-app[bot]
750397e1af Update CHANGELOG.md (#6478)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 19:06:16 +00:00
Chris
30172379cd Immich: v1.137.3 (#6443) 2025-08-01 21:06:03 +02:00
community-scripts-pr-app[bot]
f07b273be3 Update CHANGELOG.md (#6477)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 19:05:56 +00:00
community-scripts-pr-app[bot]
e5c673df44 Update date in json (#6476)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-08-01 19:05:37 +00:00
CanbiZ
61fb45a0b8 Re-Add: Suwayomi-Server (#6458) 2025-08-01 21:05:16 +02:00
community-scripts-pr-app[bot]
084ceae9d9 Update CHANGELOG.md (#6475)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 18:33:01 +00:00
Gerhard Burger
054a963ca2 Update homepage.sh to use setup_nodejs (#6462) 2025-08-01 20:32:38 +02:00
CanbiZ
b366ffac34 remove wrong RELEASE var 2025-08-01 14:45:25 +02:00
community-scripts-pr-app[bot]
29747ab8b8 Update versions.json (#6466)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 14:06:58 +02:00
community-scripts-pr-app[bot]
12b904a014 Update CHANGELOG.md (#6461)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 07:50:18 +00:00
CanbiZ
fad4d2e0d7 pnpm nx run server:build 2025-08-01 09:49:42 +02:00
community-scripts-pr-app[bot]
899e576426 Update CHANGELOG.md (#6455)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 05:27:13 +00:00
Slaviša Arežina
0f29e5672c Refactor: LubeLogger (#6400) 2025-08-01 07:26:58 +02:00
community-scripts-pr-app[bot]
3e1d43c29a Update CHANGELOG.md (#6454)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 05:26:54 +00:00
Slaviša Arežina
ff695fa4ea Refactor: MagicMirror (#6402) 2025-08-01 07:26:35 +02:00
community-scripts-pr-app[bot]
93b80362f6 Update CHANGELOG.md (#6453)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 05:26:31 +00:00
Slaviša Arežina
52e08e5474 Refactor: Manage My Damn Life (#6403) 2025-08-01 07:26:11 +02:00
community-scripts-pr-app[bot]
b9408ef06f Update CHANGELOG.md (#6452)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 05:26:07 +00:00
community-scripts-pr-app[bot]
4652338536 Update CHANGELOG.md (#6451)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 05:25:48 +00:00
Slaviša Arežina
3c7c540576 Refactor (#6406) 2025-08-01 07:25:45 +02:00
community-scripts-pr-app[bot]
a0502e00db Update CHANGELOG.md (#6450)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 05:25:25 +00:00
Slaviša Arežina
6f56655ad6 Refactor: Meilisearch (#6407) 2025-08-01 07:25:23 +02:00
community-scripts-pr-app[bot]
6de8d50969 Update CHANGELOG.md (#6449)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 05:25:05 +00:00
Slaviša Arežina
da217bb3e0 Refactor: NodeBB (#6419) 2025-08-01 07:25:00 +02:00
community-scripts-pr-app[bot]
f80c7008a8 Update CHANGELOG.md (#6448)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 05:24:39 +00:00
Slaviša Arežina
afd577db9e Refactor (#6421) 2025-08-01 07:24:33 +02:00
community-scripts-pr-app[bot]
47ab850e5b Update CHANGELOG.md (#6447)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 05:24:15 +00:00
Slaviša Arežina
654bd1f0d5 Refactor (#6424) 2025-08-01 07:24:13 +02:00
Slaviša Arežina
b6bd8a6de4 Refactor (#6425) 2025-08-01 07:23:52 +02:00
community-scripts-pr-app[bot]
ae7fe6e3e1 Update CHANGELOG.md (#6446)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 05:23:50 +00:00
Slaviša Arežina
3bb787d746 Refactor (#6434) 2025-08-01 07:23:27 +02:00
community-scripts-pr-app[bot]
82ff5f587e Update CHANGELOG.md (#6445)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 00:17:10 +00:00
community-scripts-pr-app[bot]
38cb85d9c4 Update versions.json (#6444)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-01 02:16:49 +02:00
community-scripts-pr-app[bot]
296bcbf56f Update CHANGELOG.md (#6439)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-31 18:14:42 +00:00
CanbiZ
6f096b04fe Remove temp. Tandoor during Install & Update Issues (#6438)
* Tandoor: Remove update & from website until breaking

* remove json
2025-07-31 20:14:18 +02:00
community-scripts-pr-app[bot]
3c889430ed Update CHANGELOG.md (#6436)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-31 16:58:42 +00:00
Slaviša Arežina
bb664636f6 Refactor: listmonk (#6399)
* Refactor

* Update
2025-07-31 18:58:19 +02:00
community-scripts-pr-app[bot]
5acca4975c Update versions.json (#6432)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-31 14:05:40 +02:00
community-scripts-pr-app[bot]
7f07395ab1 Update CHANGELOG.md (#6431)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-31 12:03:00 +00:00
Slaviša Arežina
dcd979e00c Refactor (#6418) 2025-07-31 14:02:42 +02:00
community-scripts-pr-app[bot]
e7c7b6384a Update CHANGELOG.md (#6430)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-31 12:01:16 +00:00
Slaviša Arežina
492be65aec Refactor (#6416) 2025-07-31 14:00:57 +02:00
community-scripts-pr-app[bot]
b5b59342bd Update CHANGELOG.md (#6429)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-31 12:00:51 +00:00
Slaviša Arežina
30fed5b1bc Refactor (#6415) 2025-07-31 14:00:31 +02:00
community-scripts-pr-app[bot]
dd30ad5fa3 Update CHANGELOG.md (#6428)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-31 12:00:11 +00:00
Slaviša Arežina
5b67c8a426 Refactor (#6423) 2025-07-31 13:59:52 +02:00
community-scripts-pr-app[bot]
709fb03305 Update CHANGELOG.md (#6427)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-31 11:59:47 +00:00
Slaviša Arežina
c7a1334b29 Refactor (#6422) 2025-07-31 13:59:27 +02:00
community-scripts-pr-app[bot]
9b2b794f9c Update CHANGELOG.md (#6426)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-31 11:59:09 +00:00
Slaviša Arežina
9e9bff2315 Refactor (#6417) 2025-07-31 13:58:48 +02:00
community-scripts-pr-app[bot]
dd2defebaf Update CHANGELOG.md (#6413)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-31 05:30:53 +00:00
Slaviša Arežina
9d3250a82d Update (#6409) 2025-07-31 07:30:34 +02:00
57 changed files with 707 additions and 741 deletions

View File

@@ -10,8 +10,57 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-08-02
## 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
- #### 🐞 Bug Fixes
- OpenObserve: Fix release fetching [@tremor021](https://github.com/tremor021) ([#6409](https://github.com/community-scripts/ProxmoxVE/pull/6409))
- #### 💥 Breaking Changes
- Remove temp. Tandoor during Install & Update Issues [@MickLesk](https://github.com/MickLesk) ([#6438](https://github.com/community-scripts/ProxmoxVE/pull/6438))
- #### 🔧 Refactor
- Refactor: listmonk [@tremor021](https://github.com/tremor021) ([#6399](https://github.com/community-scripts/ProxmoxVE/pull/6399))
- Refactor: Neo4j [@tremor021](https://github.com/tremor021) ([#6418](https://github.com/community-scripts/ProxmoxVE/pull/6418))
- Refactor: Monica [@tremor021](https://github.com/tremor021) ([#6416](https://github.com/community-scripts/ProxmoxVE/pull/6416))
- Refactor: Memos [@tremor021](https://github.com/tremor021) ([#6415](https://github.com/community-scripts/ProxmoxVE/pull/6415))
- Refactor: Opengist [@tremor021](https://github.com/tremor021) ([#6423](https://github.com/community-scripts/ProxmoxVE/pull/6423))
- Refactor: Ombi [@tremor021](https://github.com/tremor021) ([#6422](https://github.com/community-scripts/ProxmoxVE/pull/6422))
- Refactor: MySpeed [@tremor021](https://github.com/tremor021) ([#6417](https://github.com/community-scripts/ProxmoxVE/pull/6417))
## 2025-07-30
### 🚀 Updated Scripts

View File

@@ -49,6 +49,7 @@ function update_script() {
mv /opt/.env /opt/docmost/.env
mv /opt/data /opt/docmost/data
$STD pnpm install --force
$STD pnpm nx run server:build # Dirty fix https://github.com/community-scripts/ProxmoxVE/issues/6377
$STD pnpm build
msg_ok "Updated ${APP}"

View File

@@ -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"

View File

@@ -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..."

View File

@@ -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
}

View File

@@ -27,31 +27,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/knadh/listmonk/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
RELEASE=$(curl -fsSL https://api.github.com/repos/knadh/listmonk/releases/latest | jq -r '.tag_name' | sed 's/^v//')
if [[ "${RELEASE}" != "$(cat ~/.listmonk)" ]] || [[ ! -f ~/.listmonk ]]; then
msg_info "Stopping ${APP}"
systemctl stop listmonk
msg_ok "Stopped ${APP}"
msg_info "Updating ${APP} to v${RELEASE}"
cd /opt
msg_info "Backing up data"
mv /opt/listmonk/ /opt/listmonk-backup
mkdir /opt/listmonk/
curl -fsSL "https://github.com/knadh/listmonk/releases/download/v${RELEASE}/listmonk_${RELEASE}_linux_amd64.tar.gz" -o $(basename "https://github.com/knadh/listmonk/releases/download/v${RELEASE}/listmonk_${RELEASE}_linux_amd64.tar.gz")
tar -xzf "listmonk_${RELEASE}_linux_amd64.tar.gz" -C /opt/listmonk
msg_ok "Backed up data"
fetch_and_deploy_gh_release "listmonk" "knadh/listmonk" "prebuild" "latest" "/opt/listmonk" "listmonk*linux_amd64.tar.gz"
msg_info "Configuring listmonk"
mv /opt/listmonk-backup/config.toml /opt/listmonk/config.toml
mv /opt/listmonk-backup/uploads /opt/listmonk/uploads
$STD /opt/listmonk/listmonk --upgrade --yes --config /opt/listmonk/config.toml
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_ok "Configured listmonk"
msg_info "Starting ${APP}"
systemctl start listmonk
msg_ok "Started ${APP}"
msg_info "Cleaning up"
rm -rf "/opt/listmonk_${RELEASE}_linux_amd64.tar.gz"
rm -rf /opt/listmonk-backup/
msg_ok "Cleaned"

View File

@@ -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}."

View File

@@ -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,23 @@ 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
$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 +76,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}"

View File

@@ -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}"

View File

@@ -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}"

View File

@@ -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

View File

@@ -7,9 +7,9 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="Memos"
var_tags="${var_tags:-notes}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-3072}"
var_disk="${var_disk:-7}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-3}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
@@ -27,26 +27,23 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating $APP (Patience)"
cd /opt/memos
git reset --hard HEAD
output=$(git pull --no-rebase)
if echo "$output" | grep -q "Already up to date."; then
msg_ok "$APP is already up to date."
exit
RELEASE=$(curl -fsSL https://api.github.com/repos/usememos/memos/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat ~/.memos 2>/dev/null)" ]] || [[ ! -f ~/.memos ]]; then
msg_info "Stopping service"
systemctl stop memos
msg_ok "Service stopped"
fetch_and_deploy_gh_release "memos" "usememos/memos" "prebuild" "latest" "/opt/memos" "memos*linux_amd64.tar.gz"
msg_info "Starting service"
systemctl start memos
msg_ok "Service started"
msg_ok "Updated successfully"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
systemctl stop memos
export NODE_OPTIONS="--max-old-space-size=2048"
cd /opt/memos/web
$STD pnpm i --frozen-lockfile
$STD pnpm build
cd /opt/memos
mkdir -p /opt/memos/server/dist
cp -r web/dist/* /opt/memos/server/dist/
cp -r web/dist/* /opt/memos/server/router/frontend/dist/
$STD go build -o /opt/memos/memos -tags=embed bin/memos/main.go
systemctl start memos
msg_ok "Updated $APP"
exit
}
@@ -57,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}:9030${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9030${CL}"

View File

@@ -27,18 +27,20 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/monicahq/monica/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 ~/.monica ]] || [[ "${RELEASE}" != "$(cat ~/.monica)" ]]; then
msg_info "Stopping Service"
systemctl stop apache2
msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}"
cd /opt
msg_info "Creating backup"
mv /opt/monica/ /opt/monica-backup
curl -fsSL "https://github.com/monicahq/monica/releases/download/v${RELEASE}/monica-v${RELEASE}.tar.bz2" -o $(basename "https://github.com/monicahq/monica/releases/download/v${RELEASE}/monica-v${RELEASE}.tar.bz2")
tar -xjf "monica-v${RELEASE}.tar.bz2"
mv "/opt/monica-v${RELEASE}" /opt/monica
msg_ok "Backup created"
fetch_and_deploy_gh_release "monica" "monicahq/monica" "prebuild" "latest" "/opt/monica" "monica-v*.tar.bz2"
msg_info "Configuring monica"
cd /opt/monica/
cp -r /opt/monica-backup/.env /opt/monica
cp -r /opt/monica-backup/storage/* /opt/monica/storage/
@@ -48,17 +50,16 @@ function update_script() {
$STD php artisan monica:update --force
chown -R www-data:www-data /opt/monica
chmod -R 775 /opt/monica/storage
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_ok "Configured monica"
msg_info "Starting Service"
systemctl start apache2
msg_ok "Started Service"
msg_info "Cleaning up"
rm -r "/opt/monica-v${RELEASE}.tar.bz2"
rm -r /opt/monica-backup
msg_ok "Cleaned"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -28,31 +28,28 @@ function update_script() {
exit
fi
RELEASE=$(curl -fsSL https://github.com/gnmyt/myspeed/releases/latest | grep "title>Release" | cut -d " " -f 5)
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
if [[ ! -f ~/.myspeed ]] || [[ "${RELEASE}" != "$(cat ~/.myspeed)" ]]; then
msg_info "Stopping ${APP} Service"
systemctl stop myspeed
msg_ok "Stopped ${APP} Service"
msg_info "Updating ${APP} to ${RELEASE}"
msg_info "Creating backup"
cd /opt
rm -rf myspeed_bak
mv myspeed myspeed_bak
curl -fsSL "https://github.com/gnmyt/myspeed/releases/download/v$RELEASE/MySpeed-$RELEASE.zip" -o $(basename "https://github.com/gnmyt/myspeed/releases/download/v$RELEASE/MySpeed-$RELEASE.zip")
$STD unzip MySpeed-$RELEASE.zip -d myspeed
cd myspeed
msg_ok "Backup created"
fetch_and_deploy_gh_release "myspeed" "gnmyt/myspeed" "prebuild" "latest" "/opt/myspeed" "MySpeed-*.zip"
msg_info "Updating ${APP} to ${RELEASE}"
cd /opt/myspeed
$STD npm install
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting ${APP} Service"
systemctl start myspeed
msg_ok "Started ${APP} Service"
msg_info "Cleaning up"
rm -rf MySpeed-$RELEASE.zip
msg_ok "Cleaned"
msg_ok "Updated Successfully!\n"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -28,16 +28,7 @@ function update_script() {
exit
fi
if ! dpkg -l | grep -q temurin-21-jre; then
msg_info "Installing Adoptium JDK"
$STD apt-get install -y \
gnupg2 \
lsb-release
mkdir -p /etc/apt/keyrings
curl -fsSL https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor >/etc/apt/trusted.gpg.d/adoptium.gpg
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" >/etc/apt/sources.list.d/adoptium.list
$STD apt-get update
$STD apt-get install -y temurin-21-jre
msg_ok "Adoptium JDK installed"
JAVA_VERSION="21" setup_java
fi
msg_info "Updating ${APP}"
$STD apt-get update

View File

@@ -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}"

View File

@@ -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

View File

@@ -27,22 +27,29 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/Ombi-app/Ombi/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Stopping ${APP}"
RELEASE=$(curl -fsSL https://api.github.com/repos/Ombi-app/Ombi/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat ~/.ombi)" ]] || [[ ! -f ~/.ombi ]]; then
msg_info "Stopping ${APP} service"
systemctl stop ombi
msg_ok "Stopped ${APP}"
msg_ok "Stopped ${APP} service"
msg_info "Updating ${APP} to ${RELEASE}"
curl -fsSL "https://github.com/Ombi-app/Ombi/releases/download/${RELEASE}/linux-x64.tar.gz" -o $(basename "https://github.com/Ombi-app/Ombi/releases/download/${RELEASE}/linux-x64.tar.gz")
tar -xzf linux-x64.tar.gz -C /opt/ombi
rm -rf linux-x64.tar.gz
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Creating backup"
[[ -f /opt/ombi/Ombi.db ]] && mv /opt/ombi/Ombi.db /opt
[[ -f /opt/ombi/OmbiExternal.db ]] && mv /opt/ombi/OmbiExternal.db /opt
[[ -f /opt/ombi/OmbiSettings.db ]] && mv /opt/ombi/OmbiSettings.db /opt
msg_ok "Backup created"
msg_info "Starting ${APP}"
rm -rf /opt/ombi
fetch_and_deploy_gh_release "ombi" "Ombi-app/Ombi" "prebuild" "latest" "/opt/ombi" "linux-x64.tar.gz"
[[ -f /opt/Ombi.db ]] && mv /opt/Ombi.db /opt/ombi
[[ -f /opt/OmbiExternal.db ]] && mv /opt/OmbiExternal.db /opt/ombi
[[ -f /opt/OmbiSettings.db ]] && mv /opt/OmbiSettings.db /opt/ombi
msg_info "Starting ${APP} service"
systemctl start ombi
msg_ok "Started ${APP}"
msg_ok "Started ${APP} service"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} ia already at ${RELEASE}."

View File

@@ -27,34 +27,27 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/thomiceli/opengist/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 ~/.opengist ]] || [[ "${RELEASE}" != "$(cat ~/.opengist)" ]]; then
msg_info "Stopping Service"
systemctl stop opengist.service
systemctl stop opengist
msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}"
$STD apt-get update
$STD apt-get -y upgrade
cd /opt
msg_info "Creating backup"
mv /opt/opengist /opt/opengist-backup
curl -fsSL "https://github.com/thomiceli/opengist/releases/download/v${RELEASE}/opengist${RELEASE}-linux-amd64.tar.gz" -o $(basename "https://github.com/thomiceli/opengist/releases/download/v${RELEASE}/opengist${RELEASE}-linux-amd64.tar.gz")
tar -xzf opengist${RELEASE}-linux-amd64.tar.gz
msg_ok "Backup created"
fetch_and_deploy_gh_release "opengist" "thomiceli/opengist" "prebuild" "latest" "/opt/opengist" "opengist*linux-amd64.tar.gz"
msg_info "Configuring ${APP}"
mv /opt/opengist-backup/config.yml /opt/opengist/config.yml
chmod +x /opt/opengist/opengist
echo "${RELEASE}" >"/opt/${APP}_version.txt"
msg_ok "Updated ${APP} LXC"
msg_ok "Configured ${APP}"
msg_info "Starting Service"
systemctl start opengist.service
systemctl start opengist
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf /opt/opengist${RELEASE}-linux-amd64.tar.gz
rm -rf /opt/opengist-backup
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}."

View File

@@ -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}"

View File

@@ -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}"

View File

@@ -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}"

View File

@@ -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}"

View File

@@ -27,27 +27,27 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if ! [[ $(dpkg -s python3-xmlsec 2>/dev/null) ]]; then
$STD apt-get update
$STD apt-get install -y python3-xmlsec
fi
if cd /opt/tandoor && git pull | grep -q 'Already up to date'; then
#if ! [[ $(dpkg -s python3-xmlsec 2>/dev/null) ]]; then
#$STD apt-get update
#$STD apt-get install -y python3-xmlsec
#fi
#if cd /opt/tandoor && git pull | grep -q 'Already up to date'; then
msg_ok "There is currently no update available."
else
msg_info "Updating ${APP} (Patience)"
export $(cat /opt/tandoor/.env | grep "^[^#]" | xargs)
cd /opt/tandoor/
$STD pip3 install -r requirements.txt
$STD /usr/bin/python3 /opt/tandoor/manage.py migrate
$STD /usr/bin/python3 /opt/tandoor/manage.py collectstatic --no-input
$STD /usr/bin/python3 /opt/tandoor/manage.py collectstatic_js_reverse
cd /opt/tandoor/vue
$STD yarn install
$STD yarn build
cd /opt/tandoor
$STD python3 version.py
systemctl restart gunicorn_tandoor
msg_ok "Updated ${APP}"
#else
#msg_info "Updating ${APP} (Patience)"
#export $(cat /opt/tandoor/.env | grep "^[^#]" | xargs)
#cd /opt/tandoor/
#$STD pip3 install -r requirements.txt
#$STD /usr/bin/python3 /opt/tandoor/manage.py migrate
#$STD /usr/bin/python3 /opt/tandoor/manage.py collectstatic --no-input
#$STD /usr/bin/python3 /opt/tandoor/manage.py collectstatic_js_reverse
#cd /opt/tandoor/vue
#$STD yarn install
#$STD yarn build
#cd /opt/tandoor
#$STD python3 version.py
#systemctl restart gunicorn_tandoor
#msg_ok "Updated ${APP}"
fi
exit
}

View File

@@ -1,35 +1,35 @@
{
"name": "listmonk",
"slug": "listmonk",
"categories": [
0
],
"date_created": "2024-11-22",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 9000,
"documentation": "https://listmonk.app/docs/",
"website": "https://listmonk.app/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/listmonk.webp",
"config_path": "/opt/listmonk/config.toml",
"description": "High performance, self-hosted, newsletter and mailing list manager with a modern dashboard.",
"install_methods": [
{
"type": "default",
"script": "ct/listmonk.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 4,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
"name": "listmonk",
"slug": "listmonk",
"categories": [
0
],
"date_created": "2024-11-22",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 9000,
"documentation": "https://listmonk.app/docs/",
"website": "https://listmonk.app/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/listmonk.webp",
"config_path": "/opt/listmonk/config.toml",
"description": "High performance, self-hosted, newsletter and mailing list manager with a modern dashboard.",
"install_methods": [
{
"type": "default",
"script": "ct/listmonk.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 4,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -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",

View File

@@ -19,9 +19,9 @@
"type": "default",
"script": "ct/memos.sh",
"resources": {
"cpu": 2,
"ram": 3072,
"hdd": 7,
"cpu": 1,
"ram": 1024,
"hdd": 3,
"os": "debian",
"version": "12"
}

View File

@@ -6,10 +6,10 @@
],
"date_created": "2024-10-20",
"type": "ct",
"updateable": false,
"updateable": true,
"privileged": false,
"interface_port": 7474,
"documentation": null,
"documentation": "https://neo4j.com/docs/",
"website": "https://neo4j.com/product/neo4j-graph-database/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/neo4j.webp",
"config_path": "/etc/neo4j/neo4j.conf",

View File

@@ -6,7 +6,7 @@
],
"date_created": "2024-05-02",
"type": "ct",
"updateable": false,
"updateable": true,
"privileged": false,
"interface_port": 5000,
"documentation": "https://docs.ombi.app/",

View File

@@ -9,7 +9,7 @@
"updateable": true,
"privileged": false,
"interface_port": 6157,
"documentation": null,
"documentation": "https://opengist.io/docs/",
"website": "https://opengist.io/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/opengist.webp",
"config_path": "/opt/opengist/config.yml",

View File

@@ -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/",

View 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"
}
]
}

View File

@@ -1,24 +1,219 @@
[
{
"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": "MediaBrowser/Emby.Releases",
"version": "4.9.1.2",
"date": "2025-06-26T22:08:00Z"
},
{
"name": "mongodb/mongo",
"version": "r8.0.13-rc0",
"date": "2025-08-01T18:05:23Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.2.21",
"date": "2025-07-17T04:46:25Z"
},
{
"name": "Koenkk/zigbee2mqtt",
"version": "2.6.0",
"date": "2025-08-01T15:42:21Z"
},
{
"name": "immich-app/immich",
"version": "v1.137.3",
"date": "2025-08-01T15:06:36Z"
},
{
"name": "Luligu/matterbridge",
"version": "3.2.0",
"date": "2025-08-01T14:49:29Z"
},
{
"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": "evcc-io/evcc",
"version": "0.206.1",
"date": "2025-08-01T11:48:40Z"
},
{
"name": "keycloak/keycloak",
"version": "26.0.14",
"date": "2025-08-01T11:29:12Z"
},
{
"name": "inspircd/inspircd",
"version": "v4.7.0",
"date": "2025-03-29T03:50:50Z"
},
{
"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": "Jackett/Jackett",
"version": "v0.22.2217",
"date": "2025-08-01T05:54:13Z"
},
{
"name": "gotson/komga",
"version": "1.23.1",
"date": "2025-08-01T04:30:24Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.7.1",
"date": "2025-07-31T22:26:54Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.0.0",
"date": "2025-07-31T20:05:45Z"
},
{
"name": "lazy-media/Reactive-Resume",
"version": "v1.2.3",
"date": "2025-07-31T19:18:36Z"
},
{
"name": "apache/tomcat",
"version": "9.0.108",
"date": "2025-07-31T18:24:50Z"
},
{
"name": "Suwayomi/Suwayomi-Server",
"version": "v2.1.1867",
"date": "2025-07-31T18:08:43Z"
},
{
"name": "TandoorRecipes/recipes",
"version": "2.0.1",
"date": "2025-07-31T17:29:38Z"
},
{
"name": "home-assistant/core",
"version": "2025.7.4",
"date": "2025-07-28T08:15:50Z"
},
{
"name": "TryGhost/Ghost-CLI",
"version": "v1.28.2",
"date": "2025-07-31T15:02:56Z"
},
{
"name": "NodeBB/NodeBB",
"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": "Stirling-Tools/Stirling-PDF",
"version": "v1.1.1",
"date": "2025-07-31T12:16:54Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.2.7",
"date": "2025-07-31T09:50:54Z"
},
{
"name": "apache/cassandra",
"version": "5.0.5-tentative",
"date": "2025-07-31T09:40:54Z"
},
{
"name": "redis/redis",
"version": "8.2-int",
"date": "2025-07-31T09:01:24Z"
},
{
"name": "ollama/ollama",
"version": "v0.10.1",
"date": "2025-07-31T04:39:49Z"
},
{
"name": "coder/code-server",
"version": "v4.102.3",
"date": "2025-07-31T03:41:16Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{
"name": "gtsteffaniak/filebrowser",
"version": "v0.7.18-beta",
"date": "2025-07-30T21:26:00Z"
},
{
"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": "mongodb/mongo",
"version": "r8.3.0-alpha0",
"date": "2025-07-30T20:23:07Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.7.0",
"date": "2025-07-30T20:19:50Z"
},
{
"name": "semaphoreui/semaphore",
"version": "v2.16.0-beta6",
@@ -39,71 +234,16 @@
"version": "v2025-07-30",
"date": "2025-07-30T17:13:40Z"
},
{
"name": "ollama/ollama",
"version": "v0.10.0-rc4",
"date": "2025-07-29T23:41:25Z"
},
{
"name": "meilisearch/meilisearch",
"version": "prototype-arroy-becomes-hannoy-6",
"date": "2025-07-30T15:24:55Z"
},
{
"name": "home-assistant/core",
"version": "2025.7.4",
"date": "2025-07-28T08:15:50Z"
},
{
"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": "firefly-iii/firefly-iii",
"version": "v6.2.21",
"date": "2025-07-17T04:46:25Z"
},
{
"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": "fuma-nama/fumadocs",
"version": "create-fumadocs-app@15.6.7",
"date": "2025-07-30T11:07:48Z"
},
{
"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",
@@ -121,34 +261,19 @@
},
{
"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",
"version": "v1.5.3-beta.10",
"date": "2025-07-15T06:07:03Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2208",
"date": "2025-07-30T05:56:51Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.521",
"date": "2025-07-30T03:38:59Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "docmost/docmost",
"version": "v0.22.0",
"date": "2025-07-30T00:09:03Z"
},
{
"name": "OliveTin/OliveTin",
"version": "2025.7.29",
@@ -164,56 +289,26 @@
"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": "zitadel/zitadel",
"version": "v2.70.14",
"date": "2025-07-15T15:27:51Z"
},
{
"name": "caddyserver/xcaddy",
"version": "v0.4.5",
"date": "2025-07-29T16:39:18Z"
},
{
"name": "TandoorRecipes/recipes",
"version": "1.5.35",
"date": "2025-06-22T08:30:10Z"
},
{
"name": "node-red/node-red",
"version": "4.1.0",
"date": "2025-07-29T15:15:26Z"
},
{
"name": "keycloak/keycloak",
"version": "26.3.2",
"date": "2025-07-24T10:14:27Z"
},
{
"name": "apache/cassandra",
"version": "5.0.5-tentative",
"date": "2025-07-29T10:00:00Z"
},
{
"name": "rogerfar/rdt-client",
"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",
@@ -234,16 +329,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": "n8n-io/n8n",
"version": "n8n@1.103.2",
"date": "2025-07-22T11:22:26Z"
},
{
"name": "booklore-app/BookLore",
"version": "v0.35.0",
@@ -254,16 +339,6 @@
"version": "7.0.0-alpha.1",
"date": "2025-07-28T11:28:22Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.2.6",
"date": "2025-07-28T09:31:34Z"
},
{
"name": "gotson/komga",
"version": "1.23.0",
"date": "2025-07-28T08:44:47Z"
},
{
"name": "Checkmk/checkmk",
"version": "v2.3.0p35",
@@ -284,11 +359,6 @@
"version": "v12.0.2",
"date": "2025-07-28T03:34:53Z"
},
{
"name": "TryGhost/Ghost-CLI",
"version": "v1.28.1",
"date": "2025-07-28T01:39:35Z"
},
{
"name": "umami-software/umami",
"version": "v2.19.0",
@@ -319,11 +389,6 @@
"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",
@@ -354,11 +419,6 @@
"version": "v5.10.0",
"date": "2025-07-24T23:33:09Z"
},
{
"name": "coder/code-server",
"version": "v4.102.2",
"date": "2025-07-24T22:42:01Z"
},
{
"name": "linuxserver/Heimdall",
"version": "v2.7.3",
@@ -369,21 +429,11 @@
"version": "v2.39.1",
"date": "2025-07-24T17:02:01Z"
},
{
"name": "immich-app/immich",
"version": "v1.136.0",
"date": "2025-07-24T16:42:30Z"
},
{
"name": "grokability/snipe-it",
"version": "v8.2.1",
"date": "2025-07-24T14:37:54Z"
},
{
"name": "Stirling-Tools/Stirling-PDF",
"version": "v1.1.0",
"date": "2025-07-24T14:08:58Z"
},
{
"name": "glpi-project/glpi",
"version": "10.0.19",
@@ -404,11 +454,6 @@
"version": "v12.1.0",
"date": "2025-07-23T19:35:52Z"
},
{
"name": "fallenbagel/jellyseerr",
"version": "preview-plex-home-profile",
"date": "2025-07-23T16:40:31Z"
},
{
"name": "traefik/traefik",
"version": "v3.5.0",
@@ -469,11 +514,6 @@
"version": "version/2025.4.4",
"date": "2025-07-22T13:08:15Z"
},
{
"name": "lazy-media/Reactive-Resume",
"version": "v1.2.2",
"date": "2025-07-22T03:12:54Z"
},
{
"name": "ellite/Wallos",
"version": "v4.0.0",
@@ -524,11 +564,6 @@
"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",
@@ -759,16 +794,6 @@
"version": "v1.17.2",
"date": "2025-07-06T12:21:52Z"
},
{
"name": "redis/redis",
"version": "8.0.3",
"date": "2025-07-06T12:19:24Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{
"name": "Kareadita/Kavita",
"version": "v0.8.7",
@@ -799,16 +824,6 @@
"version": "v25.7.1",
"date": "2025-07-03T01:03:18Z"
},
{
"name": "Koenkk/zigbee2mqtt",
"version": "2.5.1",
"date": "2025-07-02T19:38:06Z"
},
{
"name": "apache/tomcat",
"version": "9.0.107",
"date": "2025-07-02T07:12:09Z"
},
{
"name": "qbittorrent/qBittorrent",
"version": "release-5.1.2",
@@ -894,11 +909,6 @@
"version": "v1.11.11",
"date": "2025-06-18T18:04:50Z"
},
{
"name": "NodeBB/NodeBB",
"version": "v3.12.7",
"date": "2025-06-18T14:22:53Z"
},
{
"name": "Bubka/2FAuth",
"version": "v5.6.0",
@@ -1129,11 +1139,6 @@
"version": "v4.1.2",
"date": "2024-05-04T08:06:50Z"
},
{
"name": "Suwayomi/Suwayomi-Server",
"version": "v2.0.1727",
"date": "2025-04-21T17:53:05Z"
},
{
"name": "caddyserver/caddy",
"version": "v2.10.0",
@@ -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",

View File

@@ -51,6 +51,7 @@ sed -i -e "s|APP_SECRET=.*|APP_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z
/opt/docmost/.env
export NODE_OPTIONS="--max-old-space-size=2048"
$STD pnpm install
$STD pnpm nx run server:build # Dirty fix https://github.com/community-scripts/ProxmoxVE/issues/6377
$STD pnpm build
msg_ok "Configured Docmost"

View File

@@ -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

View File

@@ -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,21 +292,22 @@ $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
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 -a web "$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 +330,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 +395,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

View File

@@ -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"

View File

@@ -13,11 +13,9 @@ setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y postgresql
msg_ok "Installed Dependencies"
PG_VERSION="17" setup_postgresql
msg_info "Setting up PostgreSQL"
msg_info "Configuring PostgreSQL"
DB_NAME=listmonk
DB_USER=listmonk
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
@@ -29,22 +27,16 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMP
echo -e "listmonk Database Password: \e[32m$DB_PASS\e[0m"
echo -e "listmonk Database Name: \e[32m$DB_NAME\e[0m"
} >>~/listmonk.creds
msg_ok "Set up PostgreSQL"
msg_ok "Configured PostgreSQL"
msg_info "Installing listmonk"
cd /opt
mkdir /opt/listmonk
mkdir /opt/listmonk/uploads
RELEASE=$(curl -fsSL https://api.github.com/repos/knadh/listmonk/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/knadh/listmonk/releases/download/v${RELEASE}/listmonk_${RELEASE}_linux_amd64.tar.gz" -o "listmonk_${RELEASE}_linux_amd64.tar.gz"
tar -xzf "listmonk_${RELEASE}_linux_amd64.tar.gz" -C /opt/listmonk
fetch_and_deploy_gh_release "listmonk" "knadh/listmonk" "prebuild" "latest" "/opt/listmonk" "listmonk*linux_amd64.tar.gz"
msg_info "Configuring listmonk"
mkdir -p /opt/listmonk/uploads
$STD /opt/listmonk/listmonk --new-config --config /opt/listmonk/config.toml
sed -i -e 's/address = "localhost:9000"/address = "0.0.0.0:9000"/' -e 's/^password = ".*"/password = "'"$DB_PASS"'"/' /opt/listmonk/config.toml
$STD /opt/listmonk/listmonk --install --yes --config /opt/listmonk/config.toml
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed listmonk"
msg_ok "Configured listmonk"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/listmonk.service
@@ -70,7 +62,6 @@ motd_ssh
customize
msg_info "Cleaning up"
rm -rf "/opt/listmonk_${RELEASE}_linux_amd64.tar.gz"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -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"

View File

@@ -13,14 +13,14 @@ setting_up_container
network_check
update_os
NODE_VERSION="22" setup_nodejs
msg_info "Setup Dependencies"
$STD apt-get install -y git
msg_ok "Setup Dependencies"
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
NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "magicmirror" "MagicMirrorOrg/MagicMirror" "tarball"
msg_info "Configuring MagicMirror"
cd /opt/magicmirror
$STD npm run install-mm
cat <<EOF >/opt/magicmirror/config/config.js
@@ -112,8 +112,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 +132,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"

View File

@@ -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"

View File

@@ -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

View File

@@ -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

View File

@@ -14,29 +14,8 @@ setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
build-essential \
git \
tzdata
msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
setup_go
msg_info "Installing Memos (Patience)"
fetch_and_deploy_gh_release "memos" "usememos/memos" "prebuild" "latest" "/opt/memos" "memos*linux_amd64.tar.gz"
mkdir -p /opt/memos_data
export NODE_OPTIONS="--max-old-space-size=2048"
$STD git clone https://github.com/usememos/memos.git /opt/memos
cd /opt/memos/web
$STD pnpm i --frozen-lockfile
$STD pnpm build
cd /opt/memos
mkdir -p /opt/memos/server/dist
cp -r web/dist/* /opt/memos/server/dist/
cp -r web/dist/* /opt/memos/server/router/frontend/dist/
$STD go build -o /opt/memos/memos -tags=embed bin/memos/main.go
msg_ok "Installed Memos"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/memos.service

View File

@@ -13,14 +13,8 @@ setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
apache2 \
libapache2-mod-php \
php-{bcmath,curl,dom,gd,gmp,iconv,intl,json,mbstring,mysqli,opcache,pdo-mysql,redis,tokenizer,xml,zip} \
composer
msg_ok "Installed Dependencies"
PHP_VERSION="8.2" PHP_APACHE="YES" PHP_MODULE="dom,gmp,iconv,mysqli,pdo-mysql,redis,tokenizer" setup_php
setup_composer
setup_mariadb
NODE_VERSION="20" NODE_MODULE="yarn@latest" setup_nodejs
@@ -39,12 +33,9 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
} >>~/monica.creds
msg_ok "Set up MariaDB"
msg_info "Installing monica"
RELEASE=$(curl -fsSL https://api.github.com/repos/monicahq/monica/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
cd /opt
curl -fsSL "https://github.com/monicahq/monica/releases/download/v${RELEASE}/monica-v${RELEASE}.tar.bz2" -o "monica-v${RELEASE}.tar.bz2"
tar -xjf "monica-v${RELEASE}.tar.bz2"
mv "/opt/monica-v${RELEASE}" /opt/monica
fetch_and_deploy_gh_release "monica" "monicahq/monica" "prebuild" "latest" "/opt/monica" "monica-v*.tar.bz2"
msg_info "Configuring monica"
cd /opt/monica
cp /opt/monica/.env.example /opt/monica/.env
HASH_SALT=$(openssl rand -base64 32)
@@ -59,8 +50,7 @@ $STD php artisan key:generate
$STD php artisan setup:production --email=admin@helper-scripts.com --password=helper-scripts.com --force
chown -R www-data:www-data /opt/monica
chmod -R 775 /opt/monica/storage
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed monica"
msg_ok "Configured monica"
msg_info "Creating Service"
cat <<EOF >/etc/apache2/sites-available/monica.conf
@@ -87,7 +77,6 @@ motd_ssh
customize
msg_info "Cleaning up"
rm -rf "/opt/monica-v${RELEASE}.tar.bz2"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -20,15 +20,11 @@ $STD apt-get install -y \
msg_ok "Installed Dependencies"
NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "myspeed" "gnmyt/myspeed" "prebuild" "latest" "/opt/myspeed" "MySpeed-*.zip"
msg_info "Installing MySpeed"
RELEASE=$(curl -fsSL https://github.com/gnmyt/myspeed/releases/latest | grep "title>Release" | cut -d " " -f 5)
cd /opt
curl -fsSL "https://github.com/gnmyt/myspeed/releases/download/v$RELEASE/MySpeed-$RELEASE.zip" -o "MySpeed-$RELEASE.zip"
$STD unzip MySpeed-$RELEASE.zip -d myspeed
cd myspeed
msg_info "Configuring MySpeed"
cd /opt/myspeed
$STD npm install
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed MySpeed"
msg_info "Creating Service"
@@ -56,6 +52,5 @@ customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
rm -rf /opt/MySpeed-$RELEASE.zip
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -14,22 +14,12 @@ setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
lsb-release
msg_ok "Installed Dependencies"
msg_info "Setting up Adoptium Repository"
mkdir -p /etc/apt/keyrings
curl -fsSL "https://packages.adoptium.net/artifactory/api/gpg/key/public" | gpg --dearmor >/etc/apt/trusted.gpg.d/adoptium.gpg
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" >/etc/apt/sources.list.d/adoptium.list
msg_ok "Set up Adoptium Repository"
JAVA_VERSION="21" setup_java
msg_info "Installing Neo4j (patience)"
curl -fsSL "https://debian.neo4j.com/neotechnology.gpg.key" | gpg --dearmor -o /etc/apt/keyrings/neotechnology.gpg
echo 'deb [signed-by=/etc/apt/keyrings/neotechnology.gpg] https://debian.neo4j.com stable latest' >/etc/apt/sources.list.d/neo4j.list
$STD apt-get update
$STD apt-get install -y temurin-21-jre
$STD apt-get install -y neo4j
sed -i '/server.default_listen_address/s/^#//' /etc/neo4j/neo4j.conf
systemctl enable -q --now neo4j

View File

@@ -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"

View File

@@ -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"

View File

@@ -13,14 +13,7 @@ setting_up_container
network_check
update_os
msg_info "Installing Ombi"
RELEASE=$(curl -fsSL https://api.github.com/repos/Ombi-app/Ombi/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
curl -fsSL "https://github.com/Ombi-app/Ombi/releases/download/${RELEASE}/linux-x64.tar.gz" -o "linux-x64.tar.gz"
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
mkdir -p /opt/ombi
tar -xzf linux-x64.tar.gz -C /opt/ombi
rm -rf linux-x64.tar.gz
msg_ok "Installed Ombi"
fetch_and_deploy_gh_release "ombi" "Ombi-app/Ombi" "prebuild" "latest" "/opt/ombi" "linux-x64.tar.gz"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/ombi.service

View File

@@ -17,20 +17,11 @@ msg_info "Installing Dependencies"
$STD apt-get install -y git
msg_ok "Installed Dependencies"
msg_info "Install Opengist"
RELEASE=$(curl -fsSL https://api.github.com/repos/thomiceli/opengist/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
curl -fsSL "https://github.com/thomiceli/opengist/releases/download/v${RELEASE}/opengist${RELEASE}-linux-amd64.tar.gz" -o "opengist${RELEASE}-linux-amd64.tar.gz"
$STD tar -xzf opengist${RELEASE}-linux-amd64.tar.gz
mv opengist /opt/opengist
chmod +x /opt/opengist/opengist
fetch_and_deploy_gh_release "opengist" "thomiceli/opengist" "prebuild" "latest" "/opt/opengist" "opengist*linux-amd64.tar.gz"
mkdir -p /opt/opengist-data
msg_ok "Installed Opengist"
msg_info "Creating Service"
sed -i 's|opengist-home:.*|opengist-home: /opt/opengist-data|' /opt/opengist/config.yml
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/opengist.service
[Unit]
Description=Opengist server to manage your Gists
@@ -52,7 +43,6 @@ motd_ssh
customize
msg_info "Cleaning up"
rm -rf /opengist${RELEASE}-linux-amd64.tar.gz
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -16,7 +16,7 @@ update_os
msg_info "Installing OpenObserve"
mkdir -p /opt/openobserve/data
LATEST=$(curl -fsSL https://api.github.com/repos/openobserve/openobserve/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
$STD tar zxvf <(curl -fsSL https://github.com/openobserve/openobserve/releases/download/$LATEST/openobserve-${LATEST}-linux-amd64.tar.gz) -C /opt/openobserve
$STD tar zxvf <(curl -fsSL https://downloads.openobserve.ai/releases/openobserve/$LATEST/openobserve-$LATEST-linux-amd64.tar.gz) -C /opt/openobserve
cat <<EOF >/opt/openobserve/data/.env
ZO_ROOT_USER_EMAIL = "admin@example.com"

View File

@@ -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"

View File

@@ -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

View File

@@ -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

View File

@@ -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"