Compare commits

...

46 Commits

Author SHA1 Message Date
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
community-scripts-pr-app[bot]
d71c3efecd Update CHANGELOG.md (#6412)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-31 00:14:04 +00:00
community-scripts-pr-app[bot]
d366abe8e2 Update versions.json (#6411)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-31 02:13:41 +02:00
community-scripts-pr-app[bot]
f76bb98d3d Update CHANGELOG.md (#6404)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 19:14:38 +00:00
Matt Visnovsky
4bd360d31b Strip SD and NS prefixes before writing to config file (#6356) 2025-07-30 21:14:16 +02:00
community-scripts-pr-app[bot]
27e095e1dd Update CHANGELOG.md (#6397)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 16:20:02 +00:00
leiweibau
e98f6051e2 PiAlert: bufix dependencies (#6396) 2025-07-30 18:19:42 +02:00
community-scripts-pr-app[bot]
e4d0ac301d Update CHANGELOG.md (#6395)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 15:07:58 +00:00
Slaviša Arežina
907be41752 Fixes (#6378) 2025-07-30 17:07:41 +02:00
Slaviša Arežina
af88ff3dd4 Refactor (#6379) 2025-07-30 17:07:11 +02:00
community-scripts-pr-app[bot]
2c618f53ca Update CHANGELOG.md (#6394)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 15:06:54 +00:00
CanbiZ
16dbcac3a1 n8n: add build-essential as dependency (#6392) 2025-07-30 17:06:26 +02:00
community-scripts-pr-app[bot]
0ba9c9dff3 Update CHANGELOG.md (#6393)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 13:31:24 +00:00
CanbiZ
23573bfce9 fix apt-cacher heredoc (#6385) 2025-07-30 15:31:00 +02:00
community-scripts-pr-app[bot]
9f1431b263 Update CHANGELOG.md (#6390)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 13:20:26 +00:00
Slaviša Arežina
53beca39e8 Refactor (#6376) 2025-07-30 15:20:20 +02:00
community-scripts-pr-app[bot]
2701308b45 Update CHANGELOG.md (#6389)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 13:20:03 +00:00
Slaviša Arežina
f33c292c3e Refactor (#6374) 2025-07-30 15:19:58 +02:00
community-scripts-pr-app[bot]
234b4e334e Update CHANGELOG.md (#6388)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 13:19:39 +00:00
Slaviša Arežina
eada9f3ae8 Refactor (#6373) 2025-07-30 15:19:33 +02:00
Slaviša Arežina
fb8c44b753 Refactor (#6372) 2025-07-30 15:19:12 +02:00
community-scripts-pr-app[bot]
4679d321a7 Update CHANGELOG.md (#6387)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 13:17:46 +00:00
Slaviša Arežina
50345c631a Habitica: Fix trusted domains (#6380)
* Fix trusted domains

* Update
2025-07-30 15:17:24 +02:00
community-scripts-pr-app[bot]
2f61a2ffe2 Update CHANGELOG.md (#6384)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 13:10:21 +00:00
Slaviša Arežina
e9240fb9b8 Fix undeclared var (#6371) 2025-07-30 15:09:57 +02:00
community-scripts-pr-app[bot]
f77e7b626d Update versions.json (#6381)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 14:05:58 +02:00
43 changed files with 607 additions and 630 deletions

View File

@@ -10,8 +10,52 @@
> [!CAUTION] > [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes. Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-08-01
## 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 ## 2025-07-30
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Strip SD and NS prefixes before writing to config file [@mattv8](https://github.com/mattv8) ([#6356](https://github.com/community-scripts/ProxmoxVE/pull/6356))
- [core] fix: expand $CACHER_IP in apt-proxy-detect.sh (revert quoted heredoc) [@MickLesk](https://github.com/MickLesk) ([#6385](https://github.com/community-scripts/ProxmoxVE/pull/6385))
- PiAlert: bugfix dependencies [@leiweibau](https://github.com/leiweibau) ([#6396](https://github.com/community-scripts/ProxmoxVE/pull/6396))
- Librespeed-Rust: Fix service name and RELEASE var fetching [@tremor021](https://github.com/tremor021) ([#6378](https://github.com/community-scripts/ProxmoxVE/pull/6378))
- n8n: add build-essential as dependency [@MickLesk](https://github.com/MickLesk) ([#6392](https://github.com/community-scripts/ProxmoxVE/pull/6392))
- Habitica: Fix trusted domains [@tremor021](https://github.com/tremor021) ([#6380](https://github.com/community-scripts/ProxmoxVE/pull/6380))
- Mafl: Fix undeclared var [@tremor021](https://github.com/tremor021) ([#6371](https://github.com/community-scripts/ProxmoxVE/pull/6371))
- #### 🔧 Refactor
- Refactor: Lidarr [@tremor021](https://github.com/tremor021) ([#6379](https://github.com/community-scripts/ProxmoxVE/pull/6379))
- Refactor: Kubo [@tremor021](https://github.com/tremor021) ([#6376](https://github.com/community-scripts/ProxmoxVE/pull/6376))
- Refactor: Komga [@tremor021](https://github.com/tremor021) ([#6374](https://github.com/community-scripts/ProxmoxVE/pull/6374))
- Refactor: Koillection [@tremor021](https://github.com/tremor021) ([#6373](https://github.com/community-scripts/ProxmoxVE/pull/6373))
- Refactor: Karakeep [@tremor021](https://github.com/tremor021) ([#6372](https://github.com/community-scripts/ProxmoxVE/pull/6372))
## 2025-07-29 ## 2025-07-29
### 🆕 New Scripts ### 🆕 New Scripts

View File

@@ -28,17 +28,18 @@ function update_script() {
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/benjaminjonard/koillection/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/benjaminjonard/koillection/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f ~/.koillection ]] || [[ "${RELEASE}" != "$(cat ~/.koillection)" ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop apache2 systemctl stop apache2
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}" msg_info "Creating a backup"
cd /opt
mv /opt/koillection/ /opt/koillection-backup mv /opt/koillection/ /opt/koillection-backup
curl -fsSL "https://github.com/benjaminjonard/koillection/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/benjaminjonard/koillection/archive/refs/tags/${RELEASE}.zip") msg_ok "Backup created"
$STD unzip "${RELEASE}.zip"
mv "/opt/koillection-${RELEASE}" /opt/koillection fetch_and_deploy_gh_release "koillection" "benjaminjonard/koillection"
msg_info "Updating ${APP} to v${RELEASE}"
cd /opt/koillection cd /opt/koillection
cp -r /opt/koillection-backup/.env.local /opt/koillection cp -r /opt/koillection-backup/.env.local /opt/koillection
cp -r /opt/koillection-backup/public/uploads/. /opt/koillection/public/uploads/ cp -r /opt/koillection-backup/public/uploads/. /opt/koillection/public/uploads/
@@ -50,7 +51,6 @@ function update_script() {
$STD yarn install $STD yarn install
$STD yarn build $STD yarn build
chown -R www-data:www-data /opt/koillection/public/uploads chown -R www-data:www-data /opt/koillection/public/uploads
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}" msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
@@ -58,9 +58,9 @@ function update_script() {
msg_ok "Started Service" msg_ok "Started Service"
msg_info "Cleaning up" msg_info "Cleaning up"
rm -r "/opt/${RELEASE}.zip"
rm -r /opt/koillection-backup rm -r /opt/koillection-backup
msg_ok "Cleaned" msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -27,23 +27,21 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating ${APP}"
RELEASE=$(curl -fsSL https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f ~/.komga ]] || [[ "${RELEASE}" != "$(cat ~/.komga)" ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop komga systemctl stop komga
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"
msg_info "Updating ${APP} to ${RELEASE}" rm -f /opt/komga/komga.jar
curl -fsSL "https://github.com/gotson/komga/releases/download/${RELEASE}/komga-${RELEASE}.jar" -o $(basename "https://github.com/gotson/komga/releases/download/${RELEASE}/komga-${RELEASE}.jar") USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "komga" "gotson/komga" "singlefile" "latest" "/opt/komga" "komga*.jar"
rm -rf /opt/komga/komga.jar mv /opt/komga/komga-*.jar /opt/komga/komga.jar
mv -f komga-${RELEASE}.jar /opt/komga/komga.jar
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start komga systemctl start komga
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}." msg_ok "No update required. ${APP} is already at ${RELEASE}."

View File

@@ -23,21 +23,24 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /usr/local/kubo ]]; then if [[ ! -f /usr/local/kubo/ipfs ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://github.com/ipfs/kubo/releases/latest | grep "title>Release" | cut -d " " -f 4)
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then RELEASE=$(curl -fsSL https://api.github.com/repos/ipfs/kubo/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
msg_info "Updating $APP LXC" if [[ "${RELEASE}" != "$(cat ~/.kubo)" ]] || [[ ! -f ~/.kubo ]]; then
$STD apt-get update msg_info "Stopping service"
$STD apt-get -y upgrade systemctl stop ipfs
curl -fsSL "https://github.com/ipfs/kubo/releases/download/${RELEASE}/kubo_${RELEASE}_linux-amd64.tar.gz" -o $(basename "https://github.com/ipfs/kubo/releases/download/${RELEASE}/kubo_${RELEASE}_linux-amd64.tar.gz") msg_ok "Stopped service"
tar -xzf "kubo_${RELEASE}_linux-amd64.tar.gz" -C /usr/local
systemctl restart ipfs.service fetch_and_deploy_gh_release "kubo" "ipfs/kubo" "prebuild" "latest" "/usr/local/kubo" "kubo*linux-amd64.tar.gz"
echo "${RELEASE}" >/opt/${APP}_version.txt
rm "kubo_${RELEASE}_linux-amd64.tar.gz" msg_info "Starting service"
msg_ok "Updated $APP LXC" systemctl start ipfs
msg_ok "Service started"
msg_ok "Updated successfuly"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi

View File

@@ -27,16 +27,17 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/librespeed/speedtest-rust/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "v([^"]+).*/\1/')
RELEASE=$(curl -fsSL https://api.github.com/repos/librespeed/speedtest-rust/releases/latest | jq -r '.tag_name' | sed 's/^v//')
if [[ "${RELEASE}" != "$(cat ~/.librespeed 2>/dev/null)" ]] || [[ ! -f ~/.librespeed ]]; then if [[ "${RELEASE}" != "$(cat ~/.librespeed 2>/dev/null)" ]] || [[ ! -f ~/.librespeed ]]; then
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop librespeed-rs systemctl stop librespeed_rs
msg_ok "Services Stopped" msg_ok "Services Stopped"
fetch_and_deploy_gh_release "librespeed-rust" "librespeed/speedtest-rust" "binary" "latest" "/opt/librespeed-rust" "librespeed-rs-x86_64-unknown-linux-gnu.deb" fetch_and_deploy_gh_release "librespeed-rust" "librespeed/speedtest-rust" "binary" "latest" "/opt/librespeed-rust" "librespeed-rs-x86_64-unknown-linux-gnu.deb"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start librespeed-rs systemctl start librespeed_rs
msg_ok "Started Service" msg_ok "Started Service"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -29,19 +29,24 @@ function update_script() {
exit exit
fi fi
msg_info "Updating $APP LXC" RELEASE=$(curl -fsSL https://api.github.com/repos/Lidarr/Lidarr/releases/latest | jq -r '.tag_name' | sed 's/^v//')
temp_file="$(mktemp)" if [[ "${RELEASE}" != "$(cat ~/.lidarr)" ]] || [[ ! -f ~/.lidarr ]]; then
rm -rf /opt/Lidarr
RELEASE=$(curl -fsSL https://api.github.com/repos/Lidarr/Lidarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/Lidarr/Lidarr/releases/download/v${RELEASE}/Lidarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
$STD tar -xvzf "$temp_file"
mv Lidarr /opt
chmod 775 /opt/Lidarr
msg_ok "Updated $APP LXC"
msg_info "Cleaning up" msg_info "Stopping service"
rm -rf "$temp_file" systemctl stop lidarr
msg_ok "Cleaned up" msg_ok "Service stopped"
fetch_and_deploy_gh_release "lidarr" "Lidarr/Lidarr" "prebuild" "latest" "/opt/Lidarr" "Lidarr.master*linux-core-x64.tar.gz"
chmod 775 /opt/Lidarr
msg_info "Starting service"
systemctl start lidarr
msg_ok "Service started"
msg_ok "Updated successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit exit
} }

View File

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

View File

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

View File

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

View File

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

View File

@@ -28,16 +28,7 @@ function update_script() {
exit exit
fi fi
if ! dpkg -l | grep -q temurin-21-jre; then if ! dpkg -l | grep -q temurin-21-jre; then
msg_info "Installing Adoptium JDK" JAVA_VERSION="21" setup_java
$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"
fi fi
msg_info "Updating ${APP}" msg_info "Updating ${APP}"
$STD apt-get update $STD apt-get update

View File

@@ -27,22 +27,29 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi 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 RELEASE=$(curl -fsSL https://api.github.com/repos/Ombi-app/Ombi/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
msg_info "Stopping ${APP}" if [[ "${RELEASE}" != "$(cat ~/.ombi)" ]] || [[ ! -f ~/.ombi ]]; then
msg_info "Stopping ${APP} service"
systemctl stop ombi systemctl stop ombi
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP} service"
msg_info "Updating ${APP} to ${RELEASE}" msg_info "Creating backup"
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") [[ -f /opt/ombi/Ombi.db ]] && mv /opt/ombi/Ombi.db /opt
tar -xzf linux-x64.tar.gz -C /opt/ombi [[ -f /opt/ombi/OmbiExternal.db ]] && mv /opt/ombi/OmbiExternal.db /opt
rm -rf linux-x64.tar.gz [[ -f /opt/ombi/OmbiSettings.db ]] && mv /opt/ombi/OmbiSettings.db /opt
echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Backup created"
msg_ok "Updated ${APP} to ${RELEASE}"
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 systemctl start ombi
msg_ok "Started ${APP}" msg_ok "Started ${APP} service"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} ia already at ${RELEASE}." 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!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/thomiceli/opengist/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') 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" msg_info "Stopping Service"
systemctl stop opengist.service systemctl stop opengist
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}" msg_info "Creating backup"
$STD apt-get update
$STD apt-get -y upgrade
cd /opt
mv /opt/opengist /opt/opengist-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") msg_ok "Backup created"
tar -xzf opengist${RELEASE}-linux-amd64.tar.gz
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 mv /opt/opengist-backup/config.yml /opt/opengist/config.yml
chmod +x /opt/opengist/opengist msg_ok "Configured ${APP}"
echo "${RELEASE}" >"/opt/${APP}_version.txt"
msg_ok "Updated ${APP} LXC"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start opengist.service systemctl start opengist
msg_ok "Started Service" 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" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}." 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!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if ! [[ $(dpkg -s python3-xmlsec 2>/dev/null) ]]; then #if ! [[ $(dpkg -s python3-xmlsec 2>/dev/null) ]]; then
$STD apt-get update #$STD apt-get update
$STD apt-get install -y python3-xmlsec #$STD apt-get install -y python3-xmlsec
fi #fi
if cd /opt/tandoor && git pull | grep -q 'Already up to date'; then #if cd /opt/tandoor && git pull | grep -q 'Already up to date'; then
msg_ok "There is currently no update available." msg_ok "There is currently no update available."
else #else
msg_info "Updating ${APP} (Patience)" #msg_info "Updating ${APP} (Patience)"
export $(cat /opt/tandoor/.env | grep "^[^#]" | xargs) #export $(cat /opt/tandoor/.env | grep "^[^#]" | xargs)
cd /opt/tandoor/ #cd /opt/tandoor/
$STD pip3 install -r requirements.txt #$STD pip3 install -r requirements.txt
$STD /usr/bin/python3 /opt/tandoor/manage.py migrate #$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 --no-input
$STD /usr/bin/python3 /opt/tandoor/manage.py collectstatic_js_reverse #$STD /usr/bin/python3 /opt/tandoor/manage.py collectstatic_js_reverse
cd /opt/tandoor/vue #cd /opt/tandoor/vue
$STD yarn install #$STD yarn install
$STD yarn build #$STD yarn build
cd /opt/tandoor #cd /opt/tandoor
$STD python3 version.py #$STD python3 version.py
systemctl restart gunicorn_tandoor #systemctl restart gunicorn_tandoor
msg_ok "Updated ${APP}" #msg_ok "Updated ${APP}"
fi fi
exit exit
} }

View File

@@ -9,10 +9,10 @@
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8686, "interface_port": 8686,
"documentation": null, "documentation": "https://wiki.servarr.com/en/lidarr",
"website": "https://lidarr.audio/", "website": "https://lidarr.audio/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/lidarr.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/lidarr.webp",
"config_path": "", "config_path": "/var/lib/lidarr/config.xml",
"description": "Lidarr is a music management tool designed for Usenet and BitTorrent users. It allows users to manage and organize their music collection with ease. Lidarr integrates with popular Usenet and BitTorrent clients, such as Sonarr and Radarr, to automate the downloading and organizing of music files. The software provides a web-based interface for managing and organizing music, making it easy to search and find songs, albums, and artists. Lidarr also supports metadata management, including album art, artist information, and lyrics, making it easy for users to keep their music collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing music collections, making it a valuable tool for music lovers who want to keep their collection organized and up-to-date. With Lidarr, users can enjoy their music collection from anywhere, making it a powerful tool for managing and sharing music files.", "description": "Lidarr is a music management tool designed for Usenet and BitTorrent users. It allows users to manage and organize their music collection with ease. Lidarr integrates with popular Usenet and BitTorrent clients, such as Sonarr and Radarr, to automate the downloading and organizing of music files. The software provides a web-based interface for managing and organizing music, making it easy to search and find songs, albums, and artists. Lidarr also supports metadata management, including album art, artist information, and lyrics, making it easy for users to keep their music collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing music collections, making it a valuable tool for music lovers who want to keep their collection organized and up-to-date. With Lidarr, users can enjoy their music collection from anywhere, making it a powerful tool for managing and sharing music files.",
"install_methods": [ "install_methods": [
{ {

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,18 +1,243 @@
[ [
{ {
"name": "OliveTin/OliveTin", "name": "immich-app/immich",
"version": "2025.7.29", "version": "v1.137.1",
"date": "2025-07-29T22:20:13Z" "date": "2025-07-31T23:19:24Z"
},
{
"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": "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",
"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": "n8n-io/n8n",
"version": "n8n@1.104.2",
"date": "2025-07-31T13:14:26Z"
},
{
"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": "Jackett/Jackett",
"version": "v0.22.2213",
"date": "2025-07-31T05:56:37Z"
},
{
"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": "mongodb/mongo", "name": "mongodb/mongo",
"version": "r8.2.0-rc1", "version": "r7.0.23-rc0",
"date": "2025-07-29T20:59:27Z" "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",
"date": "2025-07-23T19:18:14Z"
},
{
"name": "wizarrrr/wizarr",
"version": "2025.7.8",
"date": "2025-07-30T18:17:51Z"
},
{
"name": "oauth2-proxy/oauth2-proxy",
"version": "v7.11.0",
"date": "2025-07-30T18:16:38Z"
},
{
"name": "leiweibau/Pi.Alert",
"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", "name": "influxdata/influxdb",
"version": "v3.3.0", "version": "v3.3.0",
"date": "2025-07-29T20:49:38Z" "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",
"date": "2025-07-30T09:10:59Z"
},
{
"name": "BookStackApp/BookStack",
"version": "v25.07",
"date": "2025-07-30T08:52:20Z"
},
{
"name": "zabbix/zabbix",
"version": "7.4.1",
"date": "2025-07-30T08:43:04Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w30-4.13.0",
"date": "2025-07-18T12:05:26Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3-beta.10",
"date": "2025-07-15T06:07:03Z"
},
{
"name": "jenkinsci/jenkins",
"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",
"date": "2025-07-29T22:20:13Z"
}, },
{ {
"name": "netbox-community/netbox", "name": "netbox-community/netbox",
@@ -29,81 +254,26 @@
"version": "4.9.1.2", "version": "4.9.1.2",
"date": "2025-06-26T22:08:00Z" "date": "2025-06-26T22:08:00Z"
}, },
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.2",
"date": "2025-07-08T13:52:33Z"
},
{ {
"name": "msgbyte/tianji", "name": "msgbyte/tianji",
"version": "v1.24.8", "version": "v1.24.8",
"date": "2025-07-29T17:40:35Z" "date": "2025-07-29T17:40:35Z"
}, },
{
"name": "zitadel/zitadel",
"version": "v2.70.14",
"date": "2025-07-15T15:27:51Z"
},
{ {
"name": "caddyserver/xcaddy", "name": "caddyserver/xcaddy",
"version": "v0.4.5", "version": "v0.4.5",
"date": "2025-07-29T16:39:18Z" "date": "2025-07-29T16:39:18Z"
}, },
{
"name": "TandoorRecipes/recipes",
"version": "1.5.35",
"date": "2025-06-22T08:30:10Z"
},
{ {
"name": "node-red/node-red", "name": "node-red/node-red",
"version": "4.1.0", "version": "4.1.0",
"date": "2025-07-29T15:15:26Z" "date": "2025-07-29T15:15:26Z"
}, },
{
"name": "zwave-js/zwave-js-ui",
"version": "v10.11.0",
"date": "2025-07-29T14:06:44Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.521",
"date": "2025-07-29T13:10:02Z"
},
{
"name": "meilisearch/meilisearch",
"version": "prototype-arroy-becomes-hannoy-4",
"date": "2025-07-29T11:53:01Z"
},
{
"name": "apache/cassandra",
"version": "5.0.5-tentative",
"date": "2025-07-29T10:00:00Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3-beta.10",
"date": "2025-07-15T06:07:03Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2207",
"date": "2025-07-29T05:57:09Z"
},
{ {
"name": "rogerfar/rdt-client", "name": "rogerfar/rdt-client",
"version": "v2.0.115", "version": "v2.0.115",
"date": "2025-07-29T04:38:35Z" "date": "2025-07-29T04:38:35Z"
}, },
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "mattermost/mattermost",
"version": "server/public/v0.1.16",
"date": "2025-07-28T22:46:46Z"
},
{ {
"name": "Luligu/matterbridge", "name": "Luligu/matterbridge",
"version": "3.1.8", "version": "3.1.8",
@@ -124,16 +294,6 @@
"version": "v0.58.0", "version": "v0.58.0",
"date": "2025-07-28T18:59:50Z" "date": "2025-07-28T18:59:50Z"
}, },
{
"name": "ollama/ollama",
"version": "v0.10.0-rc2",
"date": "2025-07-25T21:24:06Z"
},
{
"name": "keycloak/keycloak",
"version": "26.3.2",
"date": "2025-07-24T10:14:27Z"
},
{ {
"name": "AdguardTeam/AdGuardHome", "name": "AdguardTeam/AdGuardHome",
"version": "v0.107.64", "version": "v0.107.64",
@@ -144,11 +304,6 @@
"version": "2025-07-27", "version": "2025-07-27",
"date": "2025-07-28T15:57:09Z" "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", "name": "booklore-app/BookLore",
"version": "v0.35.0", "version": "v0.35.0",
@@ -159,11 +314,6 @@
"version": "7.0.0-alpha.1", "version": "7.0.0-alpha.1",
"date": "2025-07-28T11:28:22Z" "date": "2025-07-28T11:28:22Z"
}, },
{
"name": "Paymenter/Paymenter",
"version": "v1.2.6",
"date": "2025-07-28T09:31:34Z"
},
{ {
"name": "gotson/komga", "name": "gotson/komga",
"version": "1.23.0", "version": "1.23.0",
@@ -174,11 +324,6 @@
"version": "v2.3.0p35", "version": "v2.3.0p35",
"date": "2025-07-28T08:32:54Z" "date": "2025-07-28T08:32:54Z"
}, },
{
"name": "home-assistant/core",
"version": "2025.7.4",
"date": "2025-07-28T08:15:50Z"
},
{ {
"name": "PrivateBin/PrivateBin", "name": "PrivateBin/PrivateBin",
"version": "2.0.0", "version": "2.0.0",
@@ -189,21 +334,11 @@
"version": "2025.7.4", "version": "2025.7.4",
"date": "2025-07-28T07:33:36Z" "date": "2025-07-28T07:33:36Z"
}, },
{
"name": "firefly-iii/firefly-iii",
"version": "v6.2.21",
"date": "2025-07-17T04:46:25Z"
},
{ {
"name": "theonedev/onedev", "name": "theonedev/onedev",
"version": "v12.0.2", "version": "v12.0.2",
"date": "2025-07-28T03:34:53Z" "date": "2025-07-28T03:34:53Z"
}, },
{
"name": "TryGhost/Ghost-CLI",
"version": "v1.28.1",
"date": "2025-07-28T01:39:35Z"
},
{ {
"name": "umami-software/umami", "name": "umami-software/umami",
"version": "v2.19.0", "version": "v2.19.0",
@@ -214,16 +349,6 @@
"version": "v1.18.4", "version": "v1.18.4",
"date": "2025-06-25T00:06:56Z" "date": "2025-06-25T00:06:56Z"
}, },
{
"name": "dani-garcia/vaultwarden",
"version": "1.34.2",
"date": "2025-07-27T18:49:05Z"
},
{
"name": "benjaminjonard/koillection",
"version": "1.6.16",
"date": "2025-07-27T14:48:37Z"
},
{ {
"name": "project-zot/zot", "name": "project-zot/zot",
"version": "v2.1.6", "version": "v2.1.6",
@@ -244,11 +369,6 @@
"version": "v0.12.1", "version": "v0.12.1",
"date": "2025-07-25T23:53:12Z" "date": "2025-07-25T23:53:12Z"
}, },
{
"name": "gtsteffaniak/filebrowser",
"version": "v0.7.17-beta",
"date": "2025-07-25T22:03:43Z"
},
{ {
"name": "homarr-labs/homarr", "name": "homarr-labs/homarr",
"version": "v1.30.1", "version": "v1.30.1",
@@ -259,11 +379,6 @@
"version": "v0.15.0-rc4", "version": "v0.15.0-rc4",
"date": "2025-07-25T16:50:34Z" "date": "2025-07-25T16:50:34Z"
}, },
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-openapi@9.1.5",
"date": "2025-07-25T16:20:20Z"
},
{ {
"name": "emqx/emqx", "name": "emqx/emqx",
"version": "e6.0.0-M2.202508-alpha.1", "version": "e6.0.0-M2.202508-alpha.1",
@@ -289,11 +404,6 @@
"version": "v5.10.0", "version": "v5.10.0",
"date": "2025-07-24T23:33:09Z" "date": "2025-07-24T23:33:09Z"
}, },
{
"name": "coder/code-server",
"version": "v4.102.2",
"date": "2025-07-24T22:42:01Z"
},
{ {
"name": "linuxserver/Heimdall", "name": "linuxserver/Heimdall",
"version": "v2.7.3", "version": "v2.7.3",
@@ -304,26 +414,11 @@
"version": "v2.39.1", "version": "v2.39.1",
"date": "2025-07-24T17:02:01Z" "date": "2025-07-24T17:02:01Z"
}, },
{
"name": "wizarrrr/wizarr",
"version": "2025.7.7",
"date": "2025-07-24T16:44:19Z"
},
{
"name": "immich-app/immich",
"version": "v1.136.0",
"date": "2025-07-24T16:42:30Z"
},
{ {
"name": "grokability/snipe-it", "name": "grokability/snipe-it",
"version": "v8.2.1", "version": "v8.2.1",
"date": "2025-07-24T14:37:54Z" "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", "name": "glpi-project/glpi",
"version": "10.0.19", "version": "10.0.19",
@@ -344,16 +439,6 @@
"version": "v12.1.0", "version": "v12.1.0",
"date": "2025-07-23T19:35:52Z" "date": "2025-07-23T19:35:52Z"
}, },
{
"name": "semaphoreui/semaphore",
"version": "v2.16.0-beta6",
"date": "2025-07-23T19:18:14Z"
},
{
"name": "fallenbagel/jellyseerr",
"version": "preview-plex-home-profile",
"date": "2025-07-23T16:40:31Z"
},
{ {
"name": "traefik/traefik", "name": "traefik/traefik",
"version": "v3.5.0", "version": "v3.5.0",
@@ -369,16 +454,16 @@
"version": "v1.37.0.5076", "version": "v1.37.0.5076",
"date": "2025-06-04T11:04:53Z" "date": "2025-06-04T11:04:53Z"
}, },
{
"name": "zabbix/zabbix",
"version": "7.4.1rc1",
"date": "2025-07-23T11:54:39Z"
},
{ {
"name": "cockpit-project/cockpit", "name": "cockpit-project/cockpit",
"version": "343", "version": "343",
"date": "2025-07-23T11:21:34Z" "date": "2025-07-23T11:21:34Z"
}, },
{
"name": "neo4j/neo4j",
"version": "2025.07.0",
"date": "2025-07-23T10:13:43Z"
},
{ {
"name": "jhuckaby/Cronicle", "name": "jhuckaby/Cronicle",
"version": "v0.9.85", "version": "v0.9.85",
@@ -409,26 +494,11 @@
"version": "v0.7.3", "version": "v0.7.3",
"date": "2025-07-22T14:39:54Z" "date": "2025-07-22T14:39:54Z"
}, },
{
"name": "element-hq/synapse",
"version": "v1.134.0",
"date": "2025-07-15T13:43:39Z"
},
{ {
"name": "goauthentik/authentik", "name": "goauthentik/authentik",
"version": "version/2025.4.4", "version": "version/2025.4.4",
"date": "2025-07-22T13:08:15Z" "date": "2025-07-22T13:08:15Z"
}, },
{
"name": "crowdsecurity/crowdsec",
"version": "v1.6.11",
"date": "2025-07-22T12:11:38Z"
},
{
"name": "lazy-media/Reactive-Resume",
"version": "v1.2.2",
"date": "2025-07-22T03:12:54Z"
},
{ {
"name": "ellite/Wallos", "name": "ellite/Wallos",
"version": "v4.0.0", "version": "v4.0.0",
@@ -514,11 +584,6 @@
"version": "v0.29.0", "version": "v0.29.0",
"date": "2025-07-19T08:54:54Z" "date": "2025-07-19T08:54:54Z"
}, },
{
"name": "wazuh/wazuh",
"version": "coverity-w30-4.13.0",
"date": "2025-07-18T12:05:26Z"
},
{ {
"name": "cross-seed/cross-seed", "name": "cross-seed/cross-seed",
"version": "v6.13.1", "version": "v6.13.1",
@@ -534,11 +599,6 @@
"version": "2.0.7", "version": "2.0.7",
"date": "2025-07-17T15:33:14Z" "date": "2025-07-17T15:33:14Z"
}, },
{
"name": "oauth2-proxy/oauth2-proxy",
"version": "v7.10.0",
"date": "2025-07-17T12:08:40Z"
},
{ {
"name": "icereed/paperless-gpt", "name": "icereed/paperless-gpt",
"version": "v0.22.0", "version": "v0.22.0",
@@ -574,11 +634,6 @@
"version": "6.8.2", "version": "6.8.2",
"date": "2025-07-15T15:14:16Z" "date": "2025-07-15T15:14:16Z"
}, },
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.7",
"date": "2025-07-15T11:29:29Z"
},
{ {
"name": "cloudreve/cloudreve", "name": "cloudreve/cloudreve",
"version": "4.3.0", "version": "4.3.0",
@@ -619,11 +674,6 @@
"version": "1.3.11", "version": "1.3.11",
"date": "2025-07-13T13:33:48Z" "date": "2025-07-13T13:33:48Z"
}, },
{
"name": "evcc-io/evcc",
"version": "0.205.0",
"date": "2025-07-13T12:27:31Z"
},
{ {
"name": "authelia/authelia", "name": "authelia/authelia",
"version": "v4.39.5", "version": "v4.39.5",
@@ -639,21 +689,11 @@
"version": "v10.10.7", "version": "v10.10.7",
"date": "2025-04-05T19:14:59Z" "date": "2025-04-05T19:14:59Z"
}, },
{
"name": "leiweibau/Pi.Alert",
"version": "v2025-07-12",
"date": "2025-07-12T07:53:52Z"
},
{ {
"name": "eclipse-mosquitto/mosquitto", "name": "eclipse-mosquitto/mosquitto",
"version": "v2.0.22", "version": "v2.0.22",
"date": "2025-07-11T21:34:20Z" "date": "2025-07-11T21:34:20Z"
}, },
{
"name": "neo4j/neo4j",
"version": "2025.06.2",
"date": "2025-07-11T18:03:51Z"
},
{ {
"name": "FlowiseAI/Flowise", "name": "FlowiseAI/Flowise",
"version": "flowise@3.0.4", "version": "flowise@3.0.4",
@@ -729,11 +769,6 @@
"version": "v6.8.1", "version": "v6.8.1",
"date": "2025-07-07T14:40:11Z" "date": "2025-07-07T14:40:11Z"
}, },
{
"name": "BookStackApp/BookStack",
"version": "v25.05.2",
"date": "2025-07-07T14:08:25Z"
},
{ {
"name": "slskd/slskd", "name": "slskd/slskd",
"version": "0.23.1", "version": "0.23.1",
@@ -749,16 +784,6 @@
"version": "v1.17.2", "version": "v1.17.2",
"date": "2025-07-06T12:21:52Z" "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", "name": "Kareadita/Kavita",
"version": "v0.8.7", "version": "v0.8.7",
@@ -794,11 +819,6 @@
"version": "2.5.1", "version": "2.5.1",
"date": "2025-07-02T19:38:06Z" "date": "2025-07-02T19:38:06Z"
}, },
{
"name": "apache/tomcat",
"version": "9.0.107",
"date": "2025-07-02T07:12:09Z"
},
{ {
"name": "qbittorrent/qBittorrent", "name": "qbittorrent/qBittorrent",
"version": "release-5.1.2", "version": "release-5.1.2",
@@ -839,11 +859,6 @@
"version": "v1.3.8", "version": "v1.3.8",
"date": "2025-06-29T07:41:53Z" "date": "2025-06-29T07:41:53Z"
}, },
{
"name": "gristlabs/grist-core",
"version": "v1.6.1",
"date": "2025-06-25T21:19:25Z"
},
{ {
"name": "arunavo4/gitea-mirror", "name": "arunavo4/gitea-mirror",
"version": "v2.18.0", "version": "v2.18.0",
@@ -884,21 +899,11 @@
"version": "v3.5.5", "version": "v3.5.5",
"date": "2025-06-19T05:43:47Z" "date": "2025-06-19T05:43:47Z"
}, },
{
"name": "docmost/docmost",
"version": "v0.21.0",
"date": "2025-06-18T21:43:27Z"
},
{ {
"name": "pterodactyl/panel", "name": "pterodactyl/panel",
"version": "v1.11.11", "version": "v1.11.11",
"date": "2025-06-18T18:04:50Z" "date": "2025-06-18T18:04:50Z"
}, },
{
"name": "NodeBB/NodeBB",
"version": "v3.12.7",
"date": "2025-06-18T14:22:53Z"
},
{ {
"name": "Bubka/2FAuth", "name": "Bubka/2FAuth",
"version": "v5.6.0", "version": "v5.6.0",
@@ -1129,11 +1134,6 @@
"version": "v4.1.2", "version": "v4.1.2",
"date": "2024-05-04T08:06:50Z" "date": "2024-05-04T08:06:50Z"
}, },
{
"name": "Suwayomi/Suwayomi-Server",
"version": "v2.0.1727",
"date": "2025-04-21T17:53:05Z"
},
{ {
"name": "caddyserver/caddy", "name": "caddyserver/caddy",
"version": "v2.10.0", "version": "v2.10.0",

View File

@@ -26,10 +26,12 @@ NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha,npm@10" setup_nodejs
fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica" fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
msg_info "Setup ${APPLICATION}" msg_info "Setup ${APPLICATION}"
IPADDRESS=$(hostname -I | awk '{print $1}')
cd /opt/habitica cd /opt/habitica
$STD npm i $STD npm i
$STD npm run postinstall $STD npm run postinstall
cp config.json.example config.json cp config.json.example config.json
sed -i "s/\"TRUSTED_DOMAINS\": \"/&http:\/\/$IPADDRESS:3000,/" config.json
$STD npm run client:build $STD npm run client:build
$STD gulp build:prod $STD gulp build:prod

View File

@@ -15,28 +15,20 @@ update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y \
g++ \
build-essential \ build-essential \
git \ git \
ca-certificates \ ca-certificates \
chromium/stable \ chromium/stable \
chromium-common/stable \ chromium-common/stable \
graphicsmagick \ graphicsmagick \
ghostscript \ ghostscript
jq
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Additional Tools" fetch_and_deploy_gh_release "monolith" "Y2Z/monolith" "singlefile" "latest" "/usr/bin" "monolith-gnu-linux-x86_64"
curl -fsSL "https://github.com/Y2Z/monolith/releases/latest/download/monolith-gnu-linux-x86_64" -o "/usr/bin/monolith" fetch_and_deploy_gh_release "yt-dlp" "yt-dlp/yt-dlp-nightly-builds" "singlefile" "latest" "/usr/bin" "yt-dlp_linux"
chmod +x /usr/bin/monolith fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"
curl -fsSL "https://github.com/yt-dlp/yt-dlp-nightly-builds/releases/latest/download/yt-dlp_linux" -o "/usr/bin/yt-dlp"
chmod +x /usr/bin/yt-dlp
msg_ok "Installed Additional Tools"
msg_info "Installing Meilisearch" msg_info "Configuring Meilisearch"
cd /tmp
curl -fsSL "https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch.deb" -o "meilisearch.deb"
$STD dpkg -i meilisearch.deb
curl -fsSL "https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml" -o "/etc/meilisearch.toml" curl -fsSL "https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml" -o "/etc/meilisearch.toml"
MASTER_KEY=$(openssl rand -base64 12) MASTER_KEY=$(openssl rand -base64 12)
sed -i \ sed -i \
@@ -47,7 +39,7 @@ sed -i \
-e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \ -e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \
-e 's|^# no_analytics = true|no_analytics = true|' \ -e 's|^# no_analytics = true|no_analytics = true|' \
/etc/meilisearch.toml /etc/meilisearch.toml
msg_ok "Installed Meilisearch" msg_ok "Configured Meilisearch"
fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep" fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep"
cd /opt/karakeep cd /opt/karakeep
@@ -185,7 +177,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf /tmp/meilisearch.deb
$STD apt-get autoremove -y $STD apt-get autoremove -y
$STD apt-get autoclean -y $STD apt-get autoclean -y
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -13,29 +13,10 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
apache2 \
lsb-release
msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="apcu,ctype,dom,fileinfo,iconv,pgsql" setup_php
msg_info "Setup PHP8.4 Repository" setup_composer
$STD curl -fsSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
$STD dpkg -i /tmp/debsuryorg-archive-keyring.deb
$STD sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
$STD apt-get update
msg_ok "Setup PHP8.4 Repository"
msg_info "Setup PHP"
$STD apt-get install -y \
php8.4 \
php8.4-{apcu,ctype,curl,dom,fileinfo,gd,iconv,intl,mbstring,pgsql} \
libapache2-mod-php8.4 \
composer
msg_info "Setup PHP"
msg_info "Setting up PostgreSQL" msg_info "Setting up PostgreSQL"
DB_NAME=koillection DB_NAME=koillection
@@ -51,12 +32,9 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMP
} >>~/koillection.creds } >>~/koillection.creds
msg_ok "Set up PostgreSQL" msg_ok "Set up PostgreSQL"
msg_info "Installing Koillection" fetch_and_deploy_gh_release "koillection" "benjaminjonard/koillection"
RELEASE=$(curl -fsSL https://api.github.com/repos/benjaminjonard/koillection/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
cd /opt msg_info "Configuring Koillection"
curl -fsSL "https://github.com/benjaminjonard/koillection/archive/refs/tags/${RELEASE}.zip" -o "/opt/${RELEASE}.zip"
$STD unzip "${RELEASE}.zip"
mv "/opt/koillection-${RELEASE}" /opt/koillection
cd /opt/koillection cd /opt/koillection
cp /opt/koillection/.env /opt/koillection/.env.local cp /opt/koillection/.env /opt/koillection/.env.local
APP_SECRET=$(openssl rand -base64 32) APP_SECRET=$(openssl rand -base64 32)
@@ -76,7 +54,7 @@ $STD yarn install
$STD yarn build $STD yarn build
chown -R www-data:www-data /opt/koillection/public/uploads chown -R www-data:www-data /opt/koillection/public/uploads
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Koillection" msg_ok "Configured Koillection"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/apache2/sites-available/koillection.conf cat <<EOF >/etc/apache2/sites-available/koillection.conf
@@ -107,7 +85,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf "/opt/${RELEASE}.zip"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -13,17 +13,9 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies" JAVA_VERSION="21" setup_java
$STD apt-get install -y openjdk-17-jre USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "komga" "gotson/komga" "singlefile" "latest" "/opt/komga" "komga*.jar"
msg_ok "Installed Dependencies" mv /opt/komga/komga-*.jar /opt/komga/komga.jar
msg_info "Installing Komga"
RELEASE=$(curl -fsSL https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://github.com/gotson/komga/releases/download/${RELEASE}/komga-${RELEASE}.jar" -o "komga-${RELEASE}.jar"
mkdir -p /opt/komga
mv -f komga-${RELEASE}.jar /opt/komga/komga.jar
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed Komga"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/komga.service cat <<EOF >/etc/systemd/system/komga.service
@@ -42,7 +34,7 @@ Restart=on-failure
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable --now -q komga systemctl enable -q --now komga
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh

View File

@@ -14,10 +14,9 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing IPFS" fetch_and_deploy_gh_release "kubo" "ipfs/kubo" "prebuild" "latest" "/usr/local/kubo" "kubo*linux-amd64.tar.gz"
RELEASE=$(curl -fsSL https://github.com/ipfs/kubo/releases/latest | grep "title>Release" | cut -d " " -f 4)
$STD curl -fsSL "https://github.com/ipfs/kubo/releases/download/${RELEASE}/kubo_${RELEASE}_linux-amd64.tar.gz" -o "kubo_${RELEASE}_linux-amd64.tar.gz" msg_info "Configuring IPFS"
tar -xzf "kubo_${RELEASE}_linux-amd64.tar.gz" -C /usr/local
$STD ln -s /usr/local/kubo/ipfs /usr/local/bin/ipfs $STD ln -s /usr/local/kubo/ipfs /usr/local/bin/ipfs
$STD ipfs init $STD ipfs init
ipfs config Addresses.API /ip4/0.0.0.0/tcp/5001 ipfs config Addresses.API /ip4/0.0.0.0/tcp/5001
@@ -25,9 +24,7 @@ ipfs config Addresses.Gateway /ip4/0.0.0.0/tcp/8080
LXCIP=$(hostname -I | awk '{print $1}') LXCIP=$(hostname -I | awk '{print $1}')
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"http://${LXCIP}:5001\", \"http://localhost:3000\", \"http://127.0.0.1:5001\", \"https://webui.ipfs.io\", \"http://0.0.0.0:5001\"]" ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"http://${LXCIP}:5001\", \"http://localhost:3000\", \"http://127.0.0.1:5001\", \"https://webui.ipfs.io\", \"http://0.0.0.0:5001\"]"
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "POST"]' ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "POST"]'
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Configured IPFS"
$STD rm "kubo_${RELEASE}_linux-amd64.tar.gz"
msg_ok "Installed IPFS"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/ipfs.service cat <<EOF >/etc/systemd/system/ipfs.service
@@ -43,7 +40,7 @@ Environment=HOME=/root
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable --now -q ipfs.service systemctl enable -q --now ipfs
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh

View File

@@ -16,7 +16,7 @@ update_os
fetch_and_deploy_gh_release "librespeed-rust" "librespeed/speedtest-rust" "binary" "latest" "/opt/librespeed-rust" "librespeed-rs-x86_64-unknown-linux-gnu.deb" fetch_and_deploy_gh_release "librespeed-rust" "librespeed/speedtest-rust" "binary" "latest" "/opt/librespeed-rust" "librespeed-rs-x86_64-unknown-linux-gnu.deb"
msg_info "Enabling Service" msg_info "Enabling Service"
systemctl enable -q --now speedtest_rs.service systemctl enable -q --now speedtest_rs
msg_ok "Enabled Service" msg_ok "Enabled Service"
motd_ssh motd_ssh

View File

@@ -20,22 +20,20 @@ $STD apt-get install -y \
mediainfo mediainfo
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Lidarr" fetch_and_deploy_gh_release "lidarr" "Lidarr/Lidarr" "prebuild" "latest" "/opt/Lidarr" "Lidarr.master*linux-core-x64.tar.gz"
temp_file="$(mktemp)"
msg_info "Configuring Lidarr"
mkdir -p /var/lib/lidarr/ mkdir -p /var/lib/lidarr/
chmod 775 /var/lib/lidarr/ chmod 775 /var/lib/lidarr/
RELEASE=$(curl -fsSL https://api.github.com/repos/Lidarr/Lidarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/Lidarr/Lidarr/releases/download/v${RELEASE}/Lidarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
$STD tar -xvzf "$temp_file"
mv Lidarr /opt
chmod 775 /opt/Lidarr chmod 775 /opt/Lidarr
msg_ok "Installed Lidarr" msg_ok "Configured Lidarr"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/lidarr.service cat <<EOF >/etc/systemd/system/lidarr.service
[Unit] [Unit]
Description=Lidarr Daemon Description=Lidarr Daemon
After=syslog.target network.target After=syslog.target network.target
[Service] [Service]
UMask=0002 UMask=0002
Type=simple Type=simple
@@ -43,6 +41,7 @@ ExecStart=/opt/Lidarr/Lidarr -nobrowser -data=/var/lib/lidarr/
TimeoutStopSec=20 TimeoutStopSec=20
KillMode=process KillMode=process
Restart=on-failure Restart=on-failure
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
@@ -53,7 +52,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf "$temp_file"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -13,11 +13,9 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies" PG_VERSION="17" setup_postgresql
$STD apt-get install -y postgresql
msg_ok "Installed Dependencies"
msg_info "Setting up PostgreSQL" msg_info "Configuring PostgreSQL"
DB_NAME=listmonk DB_NAME=listmonk
DB_USER=listmonk DB_USER=listmonk
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13) 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 Password: \e[32m$DB_PASS\e[0m"
echo -e "listmonk Database Name: \e[32m$DB_NAME\e[0m" echo -e "listmonk Database Name: \e[32m$DB_NAME\e[0m"
} >>~/listmonk.creds } >>~/listmonk.creds
msg_ok "Set up PostgreSQL" msg_ok "Configured PostgreSQL"
msg_info "Installing listmonk" fetch_and_deploy_gh_release "listmonk" "knadh/listmonk" "prebuild" "latest" "/opt/listmonk" "listmonk*linux_amd64.tar.gz"
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
msg_info "Configuring listmonk"
mkdir -p /opt/listmonk/uploads
$STD /opt/listmonk/listmonk --new-config --config /opt/listmonk/config.toml $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 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 $STD /opt/listmonk/listmonk --install --yes --config /opt/listmonk/config.toml
msg_ok "Configured listmonk"
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed listmonk"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/listmonk.service cat <<EOF >/etc/systemd/system/listmonk.service
@@ -70,7 +62,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf "/opt/listmonk_${RELEASE}_linux_amd64.tar.gz"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -22,14 +22,14 @@ msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
fetch_and_deploy_gh_release "mafl" "hywax/mafl" fetch_and_deploy_gh_release "mafl" "hywax/mafl"
msg_info "Installing Mafl v${RELEASE}" msg_info "Installing Mafl"
mkdir -p /opt/mafl/data mkdir -p /opt/mafl/data
curl -fsSL "https://raw.githubusercontent.com/hywax/mafl/main/.example/config.yml" -o "/opt/mafl/data/config.yml" curl -fsSL "https://raw.githubusercontent.com/hywax/mafl/main/.example/config.yml" -o "/opt/mafl/data/config.yml"
cd /opt/mafl cd /opt/mafl
export NUXT_TELEMETRY_DISABLED=true export NUXT_TELEMETRY_DISABLED=true
$STD yarn install $STD yarn install
$STD yarn build $STD yarn build
msg_ok "Installed Mafl v${RELEASE}" msg_ok "Installed Mafl"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/mafl.service cat <<EOF >/etc/systemd/system/mafl.service

View File

@@ -14,29 +14,8 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies" fetch_and_deploy_gh_release "memos" "usememos/memos" "prebuild" "latest" "/opt/memos" "memos*linux_amd64.tar.gz"
$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)"
mkdir -p /opt/memos_data 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" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/memos.service cat <<EOF >/etc/systemd/system/memos.service

View File

@@ -13,14 +13,8 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies" PHP_VERSION="8.2" PHP_APACHE="YES" PHP_MODULE="dom,gmp,iconv,mysqli,pdo-mysql,redis,tokenizer" setup_php
$STD apt-get install -y \ setup_composer
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"
setup_mariadb setup_mariadb
NODE_VERSION="20" NODE_MODULE="yarn@latest" setup_nodejs 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 } >>~/monica.creds
msg_ok "Set up MariaDB" msg_ok "Set up MariaDB"
msg_info "Installing monica" fetch_and_deploy_gh_release "monica" "monicahq/monica" "prebuild" "latest" "/opt/monica" "monica-v*.tar.bz2"
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 msg_info "Configuring monica"
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
cd /opt/monica cd /opt/monica
cp /opt/monica/.env.example /opt/monica/.env cp /opt/monica/.env.example /opt/monica/.env
HASH_SALT=$(openssl rand -base64 32) 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 $STD php artisan setup:production --email=admin@helper-scripts.com --password=helper-scripts.com --force
chown -R www-data:www-data /opt/monica chown -R www-data:www-data /opt/monica
chmod -R 775 /opt/monica/storage chmod -R 775 /opt/monica/storage
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Configured monica"
msg_ok "Installed monica"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/apache2/sites-available/monica.conf cat <<EOF >/etc/apache2/sites-available/monica.conf
@@ -87,7 +77,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf "/opt/monica-v${RELEASE}.tar.bz2"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

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

View File

@@ -14,7 +14,9 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y ca-certificates $STD apt-get install -y \
ca-certificates \
build-essential
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs

View File

@@ -14,22 +14,12 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies" JAVA_VERSION="21" setup_java
$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"
msg_info "Installing Neo4j (patience)" msg_info "Installing Neo4j (patience)"
curl -fsSL "https://debian.neo4j.com/neotechnology.gpg.key" | gpg --dearmor -o /etc/apt/keyrings/neotechnology.gpg 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 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 update
$STD apt-get install -y temurin-21-jre
$STD apt-get install -y neo4j $STD apt-get install -y neo4j
sed -i '/server.default_listen_address/s/^#//' /etc/neo4j/neo4j.conf sed -i '/server.default_listen_address/s/^#//' /etc/neo4j/neo4j.conf
systemctl enable -q --now neo4j systemctl enable -q --now neo4j

View File

@@ -13,14 +13,7 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Ombi" fetch_and_deploy_gh_release "ombi" "Ombi-app/Ombi" "prebuild" "latest" "/opt/ombi" "linux-x64.tar.gz"
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"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/ombi.service cat <<EOF >/etc/systemd/system/ombi.service

View File

@@ -17,20 +17,11 @@ msg_info "Installing Dependencies"
$STD apt-get install -y git $STD apt-get install -y git
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Install Opengist" fetch_and_deploy_gh_release "opengist" "thomiceli/opengist" "prebuild" "latest" "/opt/opengist" "opengist*linux-amd64.tar.gz"
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
mkdir -p /opt/opengist-data 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 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 cat <<EOF >/etc/systemd/system/opengist.service
[Unit] [Unit]
Description=Opengist server to manage your Gists Description=Opengist server to manage your Gists
@@ -52,7 +43,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf /opengist${RELEASE}-linux-amd64.tar.gz
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -16,7 +16,7 @@ update_os
msg_info "Installing OpenObserve" msg_info "Installing OpenObserve"
mkdir -p /opt/openobserve/data mkdir -p /opt/openobserve/data
LATEST=$(curl -fsSL https://api.github.com/repos/openobserve/openobserve/releases/latest | grep '"tag_name":' | cut -d'"' -f4) 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 cat <<EOF >/opt/openobserve/data/.env
ZO_ROOT_USER_EMAIL = "admin@example.com" ZO_ROOT_USER_EMAIL = "admin@example.com"

View File

@@ -52,7 +52,6 @@ $STD apt-get -y install \
python3-tz \ python3-tz \
python3-tzlocal \ python3-tzlocal \
python3-aiohttp \ python3-aiohttp \
python3-paho-mqtt \
python3-cryptography python3-cryptography
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
$STD pip3 install mac-vendor-lookup $STD pip3 install mac-vendor-lookup
@@ -61,6 +60,7 @@ $STD pip3 install cryptography
$STD pip3 install pyunifi $STD pip3 install pyunifi
$STD pip3 install openwrt-luci-rpc $STD pip3 install openwrt-luci-rpc
$STD pip3 install asusrouter $STD pip3 install asusrouter
$STD pip3 install paho-mqtt
msg_ok "Installed Python Dependencies" msg_ok "Installed Python Dependencies"
msg_info "Installing Pi.Alert" msg_info "Installing Pi.Alert"

View File

@@ -250,6 +250,17 @@ write_config() {
if whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "Write configfile" --yesno "Do you want to write the selections to a config file?" 10 60; then if whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "Write configfile" --yesno "Do you want to write the selections to a config file?" 10 60; then
FILEPATH="/opt/community-scripts/${NSAPP}.conf" FILEPATH="/opt/community-scripts/${NSAPP}.conf"
[[ "$GATE" =~ ",gw=" ]] && local GATE="${GATE##,gw=}" [[ "$GATE" =~ ",gw=" ]] && local GATE="${GATE##,gw=}"
# Strip prefixes from parameters for config file storage
local SD_VALUE="${SD}"
local NS_VALUE="${NS}"
local MAC_VALUE="${MAC}"
local VLAN_VALUE="${VLAN}"
[[ "$SD" =~ ^-searchdomain= ]] && SD_VALUE="${SD#-searchdomain=}"
[[ "$NS" =~ ^-nameserver= ]] && NS_VALUE="${NS#-nameserver=}"
[[ "$MAC" =~ ^,hwaddr= ]] && MAC_VALUE="${MAC#,hwaddr=}"
[[ "$VLAN" =~ ^,tag= ]] && VLAN_VALUE="${VLAN#,tag=}"
if [[ ! -f $FILEPATH ]]; then if [[ ! -f $FILEPATH ]]; then
cat <<EOF >"$FILEPATH" cat <<EOF >"$FILEPATH"
# ${NSAPP} Configuration File # ${NSAPP} Configuration File
@@ -272,10 +283,10 @@ IPV6_METHOD="${IPV6_METHOD:-none}"
GATE="${GATE:-none}" GATE="${GATE:-none}"
APT_CACHER_IP="${APT_CACHER_IP:-none}" APT_CACHER_IP="${APT_CACHER_IP:-none}"
MTU="${MTU:-1500}" MTU="${MTU:-1500}"
SD="${SD:-none}" SD="${SD_VALUE:-none}"
NS="${NS:-none}" NS="${NS_VALUE:-none}"
MAC="${MAC:-none}" MAC="${MAC_VALUE:-none}"
VLAN="${VLAN:-none}" VLAN="${VLAN_VALUE:-none}"
SSH="${SSH}" SSH="${SSH}"
SSH_AUTHORIZED_KEY="${SSH_AUTHORIZED_KEY}" SSH_AUTHORIZED_KEY="${SSH_AUTHORIZED_KEY}"
TAGS="${TAGS:-none}" TAGS="${TAGS:-none}"
@@ -310,10 +321,10 @@ IPV6_METHOD="${IPV6_METHOD:-none}"
GATE="${GATE:-none}" GATE="${GATE:-none}"
APT_CACHER_IP="${APT_CACHER_IP:-none}" APT_CACHER_IP="${APT_CACHER_IP:-none}"
MTU="${MTU:-1500}" MTU="${MTU:-1500}"
SD="${SD:-none}" SD="${SD_VALUE:-none}"
NS="${NS:-none}" NS="${NS_VALUE:-none}"
MAC="${MAC:-none}" MAC="${MAC_VALUE:-none}"
VLAN="${VLAN:-none}" VLAN="${VLAN_VALUE:-none}"
SSH="${SSH}" SSH="${SSH}"
SSH_AUTHORIZED_KEY="${SSH_AUTHORIZED_KEY}" SSH_AUTHORIZED_KEY="${SSH_AUTHORIZED_KEY}"
TAGS="${TAGS:-none}" TAGS="${TAGS:-none}"
@@ -807,7 +818,36 @@ advanced_settings() {
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create ${APP} LXC?" 10 58); then if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create ${APP} LXC?" 10 58); then
echo -e "${CREATING}${BOLD}${RD}Creating a ${APP} LXC using the above advanced settings${CL}" echo -e "${CREATING}${BOLD}${RD}Creating a ${APP} LXC using the above advanced settings${CL}"
# Strip prefixes from DNS parameters for config file storage
local SD_VALUE="$SD"
local NS_VALUE="$NS"
local MAC_VALUE="$MAC"
local VLAN_VALUE="$VLAN"
[[ "$SD" =~ ^-searchdomain= ]] && SD_VALUE="${SD#-searchdomain=}"
[[ "$NS" =~ ^-nameserver= ]] && NS_VALUE="${NS#-nameserver=}"
[[ "$MAC" =~ ^,hwaddr= ]] && MAC_VALUE="${MAC#,hwaddr=}"
[[ "$VLAN" =~ ^,tag= ]] && VLAN_VALUE="${VLAN#,tag=}"
# Temporarily store original values
local SD_ORIG="$SD"
local NS_ORIG="$NS"
local MAC_ORIG="$MAC"
local VLAN_ORIG="$VLAN"
# Set clean values for config file writing
SD="$SD_VALUE"
NS="$NS_VALUE"
MAC="$MAC_VALUE"
VLAN="$VLAN_VALUE"
write_config write_config
# Restore original formatted values for container creation
SD="$SD_ORIG"
NS="$NS_ORIG"
MAC="$MAC_ORIG"
VLAN="$VLAN_ORIG"
else else
clear clear
header_info header_info

View File

@@ -469,8 +469,11 @@ config_file() {
SD="" SD=""
echo -e "${SEARCH}${BOLD}${DGN}DNS Search Domain: ${BGN}Host${CL}" echo -e "${SEARCH}${BOLD}${DGN}DNS Search Domain: ${BGN}Host${CL}"
else else
echo -e "${SEARCH}${BOLD}${DGN}DNS Search Domain: ${BGN}$SD${CL}" # Strip prefix if present for config file storage
SD="-searchdomain=$SD" local SD_VALUE="$SD"
[[ "$SD" =~ ^-searchdomain= ]] && SD_VALUE="${SD#-searchdomain=}"
echo -e "${SEARCH}${BOLD}${DGN}DNS Search Domain: ${BGN}$SD_VALUE${CL}"
SD="-searchdomain=$SD_VALUE"
fi fi
else else
if SD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a DNS Search Domain (leave blank for HOST)" 8 58 --title "DNS Search Domain" 3>&1 1>&2 2>&3); then if SD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a DNS Search Domain (leave blank for HOST)" 8 58 --title "DNS Search Domain" 3>&1 1>&2 2>&3); then
@@ -492,11 +495,14 @@ config_file() {
NS="" NS=""
echo -e "${NETWORK}${BOLD}${DGN}DNS Server IP Address: ${BGN}Host${CL}" echo -e "${NETWORK}${BOLD}${DGN}DNS Server IP Address: ${BGN}Host${CL}"
else else
if [[ "$NS" =~ $ip_regex ]]; then # Strip prefix if present for config file storage
echo -e "${NETWORK}${BOLD}${DGN}DNS Server IP Address: ${BGN}$NS${CL}" local NS_VALUE="$NS"
NS="-nameserver=$NS" [[ "$NS" =~ ^-nameserver= ]] && NS_VALUE="${NS#-nameserver=}"
if [[ "$NS_VALUE" =~ $ip_regex ]]; then
echo -e "${NETWORK}${BOLD}${DGN}DNS Server IP Address: ${BGN}$NS_VALUE${CL}"
NS="-nameserver=$NS_VALUE"
else else
msg_error "Invalid IP Address format for DNS Server. Needs to be 0.0.0.0, was ${NS}" msg_error "Invalid IP Address format for DNS Server. Needs to be 0.0.0.0, was ${NS_VALUE}"
exit exit
fi fi
fi fi
@@ -519,11 +525,14 @@ config_file() {
MAC="" MAC=""
echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}Host${CL}" echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}Host${CL}"
else else
if [[ "$MAC" =~ ^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$ ]]; then # Strip prefix if present for config file storage
echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}$MAC${CL}" local MAC_VALUE="$MAC"
MAC=",hwaddr=$MAC" [[ "$MAC" =~ ^,hwaddr= ]] && MAC_VALUE="${MAC#,hwaddr=}"
if [[ "$MAC_VALUE" =~ ^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$ ]]; then
echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}$MAC_VALUE${CL}"
MAC=",hwaddr=$MAC_VALUE"
else else
msg_error "MAC Address must be in the format xx:xx:xx:xx:xx:xx, was ${MAC}" msg_error "MAC Address must be in the format xx:xx:xx:xx:xx:xx, was ${MAC_VALUE}"
exit exit
fi fi
fi fi
@@ -546,11 +555,14 @@ config_file() {
VLAN="" VLAN=""
echo -e "${VLANTAG}${BOLD}${DGN}Vlan: ${BGN}Host${CL}" echo -e "${VLANTAG}${BOLD}${DGN}Vlan: ${BGN}Host${CL}"
else else
if [[ "$VLAN" =~ ^-?[0-9]+$ ]]; then # Strip prefix if present for config file storage
echo -e "${VLANTAG}${BOLD}${DGN}Vlan: ${BGN}$VLAN${CL}" local VLAN_VALUE="$VLAN"
VLAN=",tag=$VLAN" [[ "$VLAN" =~ ^,tag= ]] && VLAN_VALUE="${VLAN#,tag=}"
if [[ "$VLAN_VALUE" =~ ^-?[0-9]+$ ]]; then
echo -e "${VLANTAG}${BOLD}${DGN}Vlan: ${BGN}$VLAN_VALUE${CL}"
VLAN=",tag=$VLAN_VALUE"
else else
msg_error "VLAN must be an integer, was ${VLAN}" msg_error "VLAN must be an integer, was ${VLAN_VALUE}"
exit exit
fi fi
fi fi

View File

@@ -131,8 +131,8 @@ network_check() {
update_os() { update_os() {
msg_info "Updating Container OS" msg_info "Updating Container OS"
if [[ "$CACHER" == "yes" ]]; then if [[ "$CACHER" == "yes" ]]; then
echo "Acquire::http::Proxy-Auto-Detect \"/usr/local/bin/apt-proxy-detect.sh\";" >/etc/apt/apt.conf.d/00aptproxy echo 'Acquire::http::Proxy-Auto-Detect "/usr/local/bin/apt-proxy-detect.sh";' >/etc/apt/apt.conf.d/00aptproxy
cat <<'EOF' >/usr/local/bin/apt-proxy-detect.sh cat <<EOF >/usr/local/bin/apt-proxy-detect.sh
#!/bin/bash #!/bin/bash
if nc -w1 -z "${CACHER_IP}" 3142; then if nc -w1 -z "${CACHER_IP}" 3142; then
echo -n "http://${CACHER_IP}:3142" echo -n "http://${CACHER_IP}:3142"