mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-09-13 07:10:51 +02:00
Compare commits
28 Commits
base_setti
...
add-script
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9f7f3a5db5 | ||
|
|
3906f7da51 | ||
|
|
ed7fbabc07 | ||
|
|
2494af7e1c | ||
|
|
0c4711d99f | ||
|
|
039f73a5ed | ||
|
|
74b58d5b10 | ||
|
|
61044104a2 | ||
|
|
fac612077a | ||
|
|
135b3ff964 | ||
|
|
393b853119 | ||
|
|
6bb2938e34 | ||
|
|
fbf16fd54d | ||
|
|
d6d4fd034f | ||
|
|
aa4999dac6 | ||
|
|
b6c0b50e79 | ||
|
|
0f07f1927e | ||
|
|
4493d86e51 | ||
|
|
fbfeeeb88f | ||
|
|
2366111bba | ||
|
|
5fb42b87f1 | ||
|
|
500c35c58d | ||
|
|
ca3446c90e | ||
|
|
4c3d42d5d1 | ||
|
|
299a10efe8 | ||
|
|
7adac2a342 | ||
|
|
eb58b10d75 | ||
|
|
5e46d81c45 |
27
CHANGELOG.md
27
CHANGELOG.md
@@ -10,14 +10,41 @@
|
|||||||
> [!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-09-09
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- AdventureLog: remove folder during update process [@MickLesk](https://github.com/MickLesk) ([#7507](https://github.com/community-scripts/ProxmoxVE/pull/7507))
|
||||||
|
- PLANKA: Fix backup and restore commands [@tremor021](https://github.com/tremor021) ([#7505](https://github.com/community-scripts/ProxmoxVE/pull/7505))
|
||||||
|
- Recyclarr: Suppress config creation output [@tremor021](https://github.com/tremor021) ([#7502](https://github.com/community-scripts/ProxmoxVE/pull/7502))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Refactor GitHubStarsButton to wrap in Link component for external navigation [@BramSuurdje](https://github.com/BramSuurdje) ([#7492](https://github.com/community-scripts/ProxmoxVE/pull/7492))
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- swizzin: Change category from nvr to media [@MickLesk](https://github.com/MickLesk) ([#7511](https://github.com/community-scripts/ProxmoxVE/pull/7511))
|
||||||
|
|
||||||
## 2025-09-08
|
## 2025-09-08
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- CT's: fix missing variable declaration (actualBudget, openziti, umlautadaptarr) [@MickLesk](https://github.com/MickLesk) ([#7483](https://github.com/community-scripts/ProxmoxVE/pull/7483))
|
||||||
|
- karakeep: fix service file [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7482](https://github.com/community-scripts/ProxmoxVE/pull/7482))
|
||||||
- Update searxng-install.sh [@sebguy](https://github.com/sebguy) ([#7469](https://github.com/community-scripts/ProxmoxVE/pull/7469))
|
- Update searxng-install.sh [@sebguy](https://github.com/sebguy) ([#7469](https://github.com/community-scripts/ProxmoxVE/pull/7469))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Immich: bump to version 1.141.1 [@vhsdream](https://github.com/vhsdream) ([#7418](https://github.com/community-scripts/ProxmoxVE/pull/7418))
|
||||||
|
- [core]: switch all base_settings to variables [@MickLesk](https://github.com/MickLesk) ([#7479](https://github.com/community-scripts/ProxmoxVE/pull/7479))
|
||||||
|
|
||||||
- #### 💥 Breaking Changes
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
- RustDesk Server: Update the credentials info [@tremor021](https://github.com/tremor021) ([#7473](https://github.com/community-scripts/ProxmoxVE/pull/7473))
|
- RustDesk Server: Update the credentials info [@tremor021](https://github.com/tremor021) ([#7473](https://github.com/community-scripts/ProxmoxVE/pull/7473))
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
# Source: https://actualbudget.org/
|
# Source: https://actualbudget.org/
|
||||||
|
|
||||||
APP="Actual Budget"
|
APP="Actual Budget"
|
||||||
var_tags="finance"
|
var_tags="${var_tags:-finance}"
|
||||||
var_cpu="2"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="2048"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="4"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="debian"
|
var_os="${var_os:-debian}"
|
||||||
var_version="12"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="1"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
variables
|
variables
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Backup Old Installation"
|
msg_info "Backup Old Installation"
|
||||||
cp -r /opt/adventurelog /opt/adventurelog-backup
|
cp -r /opt/adventurelog /opt/adventurelog-backup
|
||||||
|
rm -rf /opt/adventurelog
|
||||||
msg_ok "Backup done"
|
msg_ok "Backup done"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
|
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
|
||||||
|
|||||||
83
ct/autocaliweb.sh
Normal file
83
ct/autocaliweb.sh
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: vhsdream
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/gelbphoenix/autocaliweb
|
||||||
|
|
||||||
|
APP="Autocaliweb"
|
||||||
|
var_tags="${var_tags:-ebooks}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-6}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/autocaliweb ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
setup_uv
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/gelbphoenix/autocaliweb/releases/latest | jq '.tag_name' | sed 's/^"v//;s/"$//')
|
||||||
|
if check_for_gh_release "autocaliweb" "gelbphoenix/autocaliweb"; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop autocaliweb metadata-change-detector acw-ingest-service acw-auto-zipper
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
|
INSTALL_DIR="/opt/autocaliweb"
|
||||||
|
export VIRTUAL_ENV="${INSTALL_DIR}/venv"
|
||||||
|
$STD tar -cf ~/autocaliweb_bkp.tar "$INSTALL_DIR"/{metadata_change_logs,dirs.json,.env,scripts/ingest_watcher.sh,scripts/auto_zipper_wrapper.sh,scripts/metadata_change_detector_wrapper.sh}
|
||||||
|
fetch_and_deploy_gh_release "autocaliweb" "gelbphoenix/autocaliweb" "tarball" "latest" "/opt/autocaliweb"
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
|
cd "$INSTALL_DIR"
|
||||||
|
if [[ ! -d "$VIRTUAL_ENV" ]]; then
|
||||||
|
$STD uv venv "$VIRTUAL_ENV"
|
||||||
|
fi
|
||||||
|
$STD uv sync --all-extras --active
|
||||||
|
cd "$INSTALL_DIR"/koreader/plugins
|
||||||
|
PLUGIN_DIGEST="$(find acwsync.koplugin -type f -name "*.lua" -o -name "*.json" | sort | xargs sha256sum | sha256sum | cut -d' ' -f1)"
|
||||||
|
echo "Plugin files digest: $PLUGIN_DIGEST" >acwsync.koplugin/${PLUGIN_DIGEST}.digest
|
||||||
|
echo "Build date: $(date)" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
|
||||||
|
echo "Files included:" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
|
||||||
|
$STD zip -r koplugin.zip acwsync.koplugin/
|
||||||
|
cp -r koplugin.zip "$INSTALL_DIR"/cps/static
|
||||||
|
mkdir -p "$INSTALL_DIR"/metadata_temp
|
||||||
|
$STD tar -xf ~/autocaliweb_bkp.tar --directory /
|
||||||
|
KEPUB_VERSION="$(/usr/bin/kepubify --version)"
|
||||||
|
CALIBRE_RELEASE="$(curl -s https://api.github.com/repos/kovidgoyal/calibre/releases/latest | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)"
|
||||||
|
echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE
|
||||||
|
echo "${CALIBRE_RELEASE#v}" >/"$INSTALL_DIR"/CALIBRE_RELEASE
|
||||||
|
sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
|
||||||
|
chown -R acw:acw "$INSTALL_DIR"
|
||||||
|
rm ~/autocaliweb_bkp.tar
|
||||||
|
msg_ok "Updated $APP"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start autocaliweb metadata-change-detector acw-ingest-service acw-auto-zipper
|
||||||
|
msg_ok "Started Services"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}"
|
||||||
6
ct/headers/autocaliweb
Normal file
6
ct/headers/autocaliweb
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
___ __ ___ __
|
||||||
|
/ | __ __/ /_____ _________ _/ (_) _____ / /_
|
||||||
|
/ /| |/ / / / __/ __ \/ ___/ __ `/ / / | /| / / _ \/ __ \
|
||||||
|
/ ___ / /_/ / /_/ /_/ / /__/ /_/ / / /| |/ |/ / __/ /_/ /
|
||||||
|
/_/ |_\__,_/\__/\____/\___/\__,_/_/_/ |__/|__/\___/_.___/
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ function update_script() {
|
|||||||
done
|
done
|
||||||
msg_ok "Image-processing libraries up to date"
|
msg_ok "Image-processing libraries up to date"
|
||||||
fi
|
fi
|
||||||
RELEASE="1.140.1"
|
RELEASE="1.141.1"
|
||||||
if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
|
if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop immich-web
|
systemctl stop immich-web
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
|
|||||||
# Source: https://github.com/openziti/ziti
|
# Source: https://github.com/openziti/ziti
|
||||||
|
|
||||||
APP="openziti-controller"
|
APP="openziti-controller"
|
||||||
var_tags="network;openziti-controller"
|
var_tags="${var_tags:-network;openziti-controller}"
|
||||||
var_cpu="2"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="1024"
|
var_ram="${var_ram:-1024}"
|
||||||
var_disk="8"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="debian"
|
var_os="${var_os:-debian}"
|
||||||
var_version="12"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="1"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
variables
|
variables
|
||||||
@@ -20,18 +20,18 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/openziti ]]; then
|
if [[ ! -d /opt/openziti ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating $APP LXC"
|
msg_info "Updating $APP LXC"
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get -y upgrade
|
$STD apt-get -y upgrade
|
||||||
msg_ok "Updated $APP LXC"
|
msg_ok "Updated $APP LXC"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
25
ct/planka.sh
25
ct/planka.sh
@@ -34,12 +34,13 @@ function update_script() {
|
|||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
msg_info "Backing up data"
|
msg_info "Backing up data"
|
||||||
mkdir -p /opt/planka-backup/{favicons,user-avatars,background-images,attachments}
|
BK="/opt/planka-backup"
|
||||||
mv /opt/planka/.env /opt/planka-backup
|
mkdir -p "$BK"/{favicons,user-avatars,background-images,attachments}
|
||||||
[ -d /opt/planka/public/favicons ] && find /opt/planka/public/favicons -maxdepth 1 -type f -exec mv -t /opt/planka-backup/favicons {} +
|
[ -f /opt/planka/.env ] && mv /opt/planka/.env "$BK"/
|
||||||
[ -d /opt/planka/public/user-avatars ] && find /opt/planka/public/user-avatars -maxdepth 1 -type f -exec mv -t /opt/planka-backup/user-avatars {} +
|
[ -d /opt/planka/public/favicons ] && cp -a /opt/planka/public/favicons/. "$BK/favicons/"
|
||||||
[ -d /opt/planka/public/background-images ] && find /opt/planka/public/background-images -maxdepth 1 -type f -exec mv -t /opt/planka-backup/background-images {} +
|
[ -d /opt/planka/public/user-avatars ] && cp -a /opt/planka/public/user-avatars/. "$BK/user-avatars/"
|
||||||
[ -d /opt/planka/private/attachments ] && find /opt/planka/private/attachments -maxdepth 1 -type f -exec mv -t /opt/planka-backup/attachments {} +
|
[ -d /opt/planka/public/background-images ] && cp -a /opt/planka/public/background-images/. "$BK/background-images/"
|
||||||
|
[ -d /opt/planka/private/attachments ] && cp -a /opt/planka/private/attachments/. "$BK/attachments/"
|
||||||
rm -rf /opt/planka
|
rm -rf /opt/planka
|
||||||
msg_ok "Backed up data"
|
msg_ok "Backed up data"
|
||||||
|
|
||||||
@@ -51,11 +52,13 @@ function update_script() {
|
|||||||
msg_ok "Updated Frontend"
|
msg_ok "Updated Frontend"
|
||||||
|
|
||||||
msg_info "Restoring data"
|
msg_info "Restoring data"
|
||||||
mv /opt/planka-backup/.env /opt/planka/
|
[ -f "$BK/.env" ] && mv "$BK/.env" /opt/planka/.env
|
||||||
[ -d /opt/planka-backup/favicons ] && find /opt/planka-backup/favicons -maxdepth 1 -type f -exec mv -t /opt/planka/public/favicons {} +
|
mkdir -p /opt/planka/public/{favicons,user-avatars,background-images} /opt/planka/private/attachments
|
||||||
[ -d /opt/planka-backup/user-avatars ] && find /opt/planka-backup/user-avatars -maxdepth 1 -type f -exec mv -t /opt/planka/public/user-avatars {} +
|
[ -d "$BK/favicons" ] && cp -a "$BK/favicons/." /opt/planka/public/favicons/
|
||||||
[ -d /opt/planka-backup/background-images ] && find /opt/planka-backup/background-images -maxdepth 1 -type f -exec mv -t /opt/planka/public/background-images {} +
|
[ -d "$BK/user-avatars" ] && cp -a "$BK/user-avatars/." /opt/planka/public/user-avatars/
|
||||||
[ -d /opt/planka-backup/attachments ] && find /opt/planka-backup/attachments -maxdepth 1 -type f -exec mv -t /opt/planka/private/attachments {} +
|
[ -d "$BK/background-images" ] && cp -a "$BK/background-images/." /opt/planka/public/background-images/
|
||||||
|
[ -d "$BK/attachments" ] && cp -a "$BK/attachments/." /opt/planka/private/attachments/
|
||||||
|
rm -rf "$BK"
|
||||||
msg_ok "Restored data"
|
msg_ok "Restored data"
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ function update_script() {
|
|||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "recyclarr" "recyclarr/recyclarr" "prebuild" "latest" "/usr/local/bin" "recyclarr-linux-x64.tar.xz"
|
fetch_and_deploy_gh_release "recyclarr" "recyclarr/recyclarr" "prebuild" "latest" "/usr/local/bin" "recyclarr-linux-x64.tar.xz"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start recyclarr
|
systemctl start recyclarr
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
# Source: https://github.com/PCJones/UmlautAdaptarr
|
# Source: https://github.com/PCJones/UmlautAdaptarr
|
||||||
|
|
||||||
APP="UmlautAdaptarr"
|
APP="UmlautAdaptarr"
|
||||||
var_tags="arr"
|
var_tags="${var_tags:-arr}"
|
||||||
var_cpu="1"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="512"
|
var_ram="${var_ram:-512}"
|
||||||
var_disk="4"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="debian"
|
var_os="${var_os:-debian}"
|
||||||
var_version="12"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="1"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
variables
|
variables
|
||||||
@@ -20,33 +20,33 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/UmlautAdaptarr ]]; then
|
if [[ ! -d /opt/UmlautAdaptarr ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/PCJones/Umlautadaptarr/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
|
|
||||||
if [[ ! -f /opt/UmlautAdaptarr_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/UmlautAdaptarr_version.txt)" ]]; then
|
|
||||||
msg_info "Stopping Service"
|
|
||||||
systemctl stop umlautadaptarr
|
|
||||||
msg_ok "Stopped Service"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/PCJones/Umlautadaptarr/releases/download/${RELEASE}/linux-x64.zip" -o $temp_file
|
|
||||||
$STD unzip -u $temp_file '*/**' -d /opt/UmlautAdaptarr
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
|
||||||
systemctl start umlautadaptarr
|
|
||||||
msg_ok "Started Service"
|
|
||||||
msg_ok "$APP has been updated to ${RELEASE}."
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/PCJones/Umlautadaptarr/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
|
||||||
|
if [[ ! -f /opt/UmlautAdaptarr_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/UmlautAdaptarr_version.txt)" ]]; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop umlautadaptarr
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
curl -fsSL "https://github.com/PCJones/Umlautadaptarr/releases/download/${RELEASE}/linux-x64.zip" -o $temp_file
|
||||||
|
$STD unzip -u $temp_file '*/**' -d /opt/UmlautAdaptarr
|
||||||
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start umlautadaptarr
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "$APP has been updated to ${RELEASE}."
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
|
|||||||
35
frontend/public/json/autocaliweb.json
Normal file
35
frontend/public/json/autocaliweb.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "Autocaliweb",
|
||||||
|
"slug": "autocaliweb",
|
||||||
|
"categories": [
|
||||||
|
13
|
||||||
|
],
|
||||||
|
"date_created": "2025-08-30",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 8083,
|
||||||
|
"documentation": "https://github.com/gelbphoenix/autocaliweb/wiki",
|
||||||
|
"config_path": "/etc/autocaliweb",
|
||||||
|
"website": "https://github.com/gelbphoenix/autocaliweb",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/autocaliweb.webp",
|
||||||
|
"description": "A modern web management system for eBooks, eComics and PDFs",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/autocaliweb.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 6,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": "admin",
|
||||||
|
"password": "admin123"
|
||||||
|
},
|
||||||
|
"notes": []
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "Swizzin",
|
"name": "Swizzin",
|
||||||
"slug": "swizzin",
|
"slug": "swizzin",
|
||||||
"categories": [
|
"categories": [
|
||||||
15
|
13
|
||||||
],
|
],
|
||||||
"date_created": "2025-08-19",
|
"date_created": "2025-08-19",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
|
|||||||
@@ -1,14 +1,194 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "9001/copyparty",
|
"name": "element-hq/synapse",
|
||||||
"version": "v1.19.8",
|
"version": "v1.138.0",
|
||||||
"date": "2025-09-07T23:36:42Z"
|
"date": "2025-09-09T11:25:50Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "traefik/traefik",
|
||||||
|
"version": "v3.5.2",
|
||||||
|
"date": "2025-09-09T10:28:12Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "authelia/authelia",
|
||||||
|
"version": "v4.39.9",
|
||||||
|
"date": "2025-09-09T10:20:45Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "chrisvel/tududi",
|
||||||
|
"version": "v0.80",
|
||||||
|
"date": "2025-07-24T14:12:39Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "docker/compose",
|
||||||
|
"version": "v2.39.3",
|
||||||
|
"date": "2025-09-09T08:27:27Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "OctoPrint/OctoPrint",
|
||||||
|
"version": "1.11.3",
|
||||||
|
"date": "2025-09-09T08:03:31Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "readeck/readeck",
|
||||||
|
"version": "0.20.2",
|
||||||
|
"date": "2025-09-09T06:09:25Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jackett/Jackett",
|
||||||
|
"version": "v0.22.2444",
|
||||||
|
"date": "2025-09-09T06:00:01Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "TandoorRecipes/recipes",
|
||||||
|
"version": "2.1.2",
|
||||||
|
"date": "2025-09-09T05:55:58Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gotson/komga",
|
||||||
|
"version": "1.23.4",
|
||||||
|
"date": "2025-09-09T02:47:05Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Tautulli/Tautulli",
|
||||||
|
"version": "v2.16.0",
|
||||||
|
"date": "2025-09-09T01:05:45Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jeedom/core",
|
||||||
|
"version": "4.4.20",
|
||||||
|
"date": "2025-09-09T00:27:11Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "steveiliop56/tinyauth",
|
||||||
|
"version": "v3.6.2",
|
||||||
|
"date": "2025-07-17T12:08:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "YunoHost/yunohost",
|
||||||
|
"version": "debian/12.1.20",
|
||||||
|
"date": "2025-09-08T23:47:21Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mongodb/mongo",
|
||||||
|
"version": "r8.0.14-rc1",
|
||||||
|
"date": "2025-09-08T22:50:53Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "diced/zipline",
|
||||||
|
"version": "v4.3.1",
|
||||||
|
"date": "2025-09-08T22:26:23Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cross-seed/cross-seed",
|
||||||
|
"version": "v6.13.3",
|
||||||
|
"date": "2025-09-08T21:45:15Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "HabitRPG/habitica",
|
||||||
|
"version": "v5.40.2",
|
||||||
|
"date": "2025-09-08T20:59:44Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "keycloak/keycloak",
|
||||||
|
"version": "26.0.15",
|
||||||
|
"date": "2025-08-27T12:12:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "booklore-app/booklore",
|
||||||
|
"version": "v1.2.1",
|
||||||
|
"date": "2025-09-08T19:31:07Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mattermost/mattermost",
|
||||||
|
"version": "server/public/v0.1.18",
|
||||||
|
"date": "2025-09-08T18:04:10Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "immich-app/immich",
|
||||||
|
"version": "v1.141.1",
|
||||||
|
"date": "2025-09-08T17:15:33Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "msgbyte/tianji",
|
||||||
|
"version": "v1.24.27",
|
||||||
|
"date": "2025-09-08T16:23:37Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Paymenter/Paymenter",
|
||||||
|
"version": "v1.3.1",
|
||||||
|
"date": "2025-09-08T15:26:01Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "n8n-io/n8n",
|
||||||
|
"version": "n8n@1.109.2",
|
||||||
|
"date": "2025-09-03T07:50:21Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "apache/tomcat",
|
||||||
|
"version": "10.1.46",
|
||||||
|
"date": "2025-09-08T14:29:54Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "home-assistant/operating-system",
|
||||||
|
"version": "16.2",
|
||||||
|
"date": "2025-09-08T14:03:25Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "zitadel/zitadel",
|
||||||
|
"version": "v4.1.3",
|
||||||
|
"date": "2025-09-08T13:36:08Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "theonedev/onedev",
|
||||||
|
"version": "v12.0.10",
|
||||||
|
"date": "2025-09-08T13:20:16Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "evcc-io/evcc",
|
||||||
|
"version": "0.207.6",
|
||||||
|
"date": "2025-09-08T11:52:00Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "autobrr/autobrr",
|
||||||
|
"version": "v1.66.1",
|
||||||
|
"date": "2025-09-08T10:49:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "meilisearch/meilisearch",
|
||||||
|
"version": "latest",
|
||||||
|
"date": "2025-09-08T10:03:11Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "syncthing/syncthing",
|
||||||
|
"version": "v2.0.8",
|
||||||
|
"date": "2025-09-08T08:07:18Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nzbgetcom/nzbget",
|
||||||
|
"version": "v25.3",
|
||||||
|
"date": "2025-09-01T09:47:06Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "firefly-iii/firefly-iii",
|
||||||
|
"version": "v6.3.2",
|
||||||
|
"date": "2025-08-19T04:08:36Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "webmin/webmin",
|
||||||
|
"version": "2.501",
|
||||||
|
"date": "2025-09-08T04:50:25Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "paperless-ngx/paperless-ngx",
|
"name": "paperless-ngx/paperless-ngx",
|
||||||
"version": "v2.18.4",
|
"version": "v2.18.4",
|
||||||
"date": "2025-09-07T23:57:32Z"
|
"date": "2025-09-07T23:57:32Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "9001/copyparty",
|
||||||
|
"version": "v1.19.8",
|
||||||
|
"date": "2025-09-07T23:36:42Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Part-DB/Part-DB-server",
|
"name": "Part-DB/Part-DB-server",
|
||||||
"version": "v2.1.1",
|
"version": "v2.1.1",
|
||||||
@@ -34,31 +214,16 @@
|
|||||||
"version": "0.50.12",
|
"version": "0.50.12",
|
||||||
"date": "2025-09-07T14:16:07Z"
|
"date": "2025-09-07T14:16:07Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "cross-seed/cross-seed",
|
|
||||||
"version": "v6.13.2",
|
|
||||||
"date": "2025-08-19T18:18:40Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "firefly-iii/firefly-iii",
|
|
||||||
"version": "v6.3.2",
|
|
||||||
"date": "2025-08-19T04:08:36Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "runtipi/runtipi",
|
"name": "runtipi/runtipi",
|
||||||
"version": "nightly",
|
"version": "v4.4.0",
|
||||||
"date": "2025-09-07T12:16:33Z"
|
"date": "2025-09-02T19:26:18Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "semaphoreui/semaphore",
|
"name": "semaphoreui/semaphore",
|
||||||
"version": "v2.17.0-beta1",
|
"version": "v2.17.0-beta1",
|
||||||
"date": "2025-09-07T08:56:50Z"
|
"date": "2025-09-07T08:56:50Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Jackett/Jackett",
|
|
||||||
"version": "v0.22.2438",
|
|
||||||
"date": "2025-09-07T06:00:21Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Radarr/Radarr",
|
"name": "Radarr/Radarr",
|
||||||
"version": "v5.27.5.10198",
|
"version": "v5.27.5.10198",
|
||||||
@@ -79,16 +244,6 @@
|
|||||||
"version": "v2.13.3.4711",
|
"version": "v2.13.3.4711",
|
||||||
"date": "2025-08-28T20:06:24Z"
|
"date": "2025-08-28T20:06:24Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "jeedom/core",
|
|
||||||
"version": "4.4.19",
|
|
||||||
"date": "2025-09-07T00:27:07Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "steveiliop56/tinyauth",
|
|
||||||
"version": "v3.6.2",
|
|
||||||
"date": "2025-07-17T12:08:03Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "rcourtman/Pulse",
|
"name": "rcourtman/Pulse",
|
||||||
"version": "v4.14.0",
|
"version": "v4.14.0",
|
||||||
@@ -99,21 +254,11 @@
|
|||||||
"version": "v1.6.4",
|
"version": "v1.6.4",
|
||||||
"date": "2025-08-18T20:22:07Z"
|
"date": "2025-08-18T20:22:07Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "autobrr/autobrr",
|
|
||||||
"version": "v1.66.0",
|
|
||||||
"date": "2025-09-06T15:07:16Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "fuma-nama/fumadocs",
|
"name": "fuma-nama/fumadocs",
|
||||||
"version": "create-fumadocs-app@15.7.10",
|
"version": "create-fumadocs-app@15.7.10",
|
||||||
"date": "2025-09-06T10:13:43Z"
|
"date": "2025-09-06T10:13:43Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Paymenter/Paymenter",
|
|
||||||
"version": "v1.3.0",
|
|
||||||
"date": "2025-09-06T09:02:08Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Luligu/matterbridge",
|
"name": "Luligu/matterbridge",
|
||||||
"version": "3.2.6",
|
"version": "3.2.6",
|
||||||
@@ -124,11 +269,6 @@
|
|||||||
"version": "v12.0.3",
|
"version": "v12.0.3",
|
||||||
"date": "2025-09-06T07:01:44Z"
|
"date": "2025-09-06T07:01:44Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "theonedev/onedev",
|
|
||||||
"version": "v12.0.9",
|
|
||||||
"date": "2025-09-06T00:39:00Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "moghtech/komodo",
|
"name": "moghtech/komodo",
|
||||||
"version": "v1.19.3",
|
"version": "v1.19.3",
|
||||||
@@ -139,16 +279,6 @@
|
|||||||
"version": "v1.36.1",
|
"version": "v1.36.1",
|
||||||
"date": "2025-09-05T21:14:40Z"
|
"date": "2025-09-05T21:14:40Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "booklore-app/booklore",
|
|
||||||
"version": "v1.2.0",
|
|
||||||
"date": "2025-09-05T20:43:03Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "immich-app/immich",
|
|
||||||
"version": "v1.141.1",
|
|
||||||
"date": "2025-09-05T19:44:39Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "gtsteffaniak/filebrowser",
|
"name": "gtsteffaniak/filebrowser",
|
||||||
"version": "v0.8.4-beta",
|
"version": "v0.8.4-beta",
|
||||||
@@ -159,21 +289,11 @@
|
|||||||
"version": "v1.3.2",
|
"version": "v1.3.2",
|
||||||
"date": "2025-09-05T18:44:15Z"
|
"date": "2025-09-05T18:44:15Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "diced/zipline",
|
|
||||||
"version": "v4.3.0",
|
|
||||||
"date": "2025-09-05T18:43:28Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "henrygd/beszel",
|
"name": "henrygd/beszel",
|
||||||
"version": "v0.12.7",
|
"version": "v0.12.7",
|
||||||
"date": "2025-09-05T18:11:36Z"
|
"date": "2025-09-05T18:11:36Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "keycloak/keycloak",
|
|
||||||
"version": "26.0.15",
|
|
||||||
"date": "2025-08-27T12:12:03Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Brandawg93/PeaNUT",
|
"name": "Brandawg93/PeaNUT",
|
||||||
"version": "v5.14.2",
|
"version": "v5.14.2",
|
||||||
@@ -184,26 +304,11 @@
|
|||||||
"version": "2025.9.0",
|
"version": "2025.9.0",
|
||||||
"date": "2025-09-05T14:21:34Z"
|
"date": "2025-09-05T14:21:34Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "chrisvel/tududi",
|
|
||||||
"version": "v0.80",
|
|
||||||
"date": "2025-07-24T14:12:39Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "home-assistant/core",
|
"name": "home-assistant/core",
|
||||||
"version": "2025.9.1",
|
"version": "2025.9.1",
|
||||||
"date": "2025-09-05T11:15:21Z"
|
"date": "2025-09-05T11:15:21Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "syncthing/syncthing",
|
|
||||||
"version": "v2.0.7",
|
|
||||||
"date": "2025-09-05T10:18:24Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "zitadel/zitadel",
|
|
||||||
"version": "v4.1.2",
|
|
||||||
"date": "2025-09-05T08:23:30Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "CrazyWolf13/streamlink-webui",
|
"name": "CrazyWolf13/streamlink-webui",
|
||||||
"version": "0.6",
|
"version": "0.6",
|
||||||
@@ -234,36 +339,16 @@
|
|||||||
"version": "v1.0.0-beta17",
|
"version": "v1.0.0-beta17",
|
||||||
"date": "2025-09-04T21:30:14Z"
|
"date": "2025-09-04T21:30:14Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "TandoorRecipes/recipes",
|
|
||||||
"version": "2.1.0",
|
|
||||||
"date": "2025-09-04T20:24:47Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "mongodb/mongo",
|
|
||||||
"version": "r7.0.24",
|
|
||||||
"date": "2025-09-04T19:50:49Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Cleanuparr/Cleanuparr",
|
"name": "Cleanuparr/Cleanuparr",
|
||||||
"version": "v2.2.3",
|
"version": "v2.2.3",
|
||||||
"date": "2025-09-04T19:24:39Z"
|
"date": "2025-09-04T19:24:39Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "HabitRPG/habitica",
|
|
||||||
"version": "v5.40.1",
|
|
||||||
"date": "2025-09-04T19:10:45Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "AdguardTeam/AdGuardHome",
|
"name": "AdguardTeam/AdGuardHome",
|
||||||
"version": "v0.107.65",
|
"version": "v0.107.65",
|
||||||
"date": "2025-08-20T14:02:28Z"
|
"date": "2025-08-20T14:02:28Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "webmin/webmin",
|
|
||||||
"version": "2.500",
|
|
||||||
"date": "2025-09-04T17:44:27Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "ollama/ollama",
|
"name": "ollama/ollama",
|
||||||
"version": "v0.11.10",
|
"version": "v0.11.10",
|
||||||
@@ -339,21 +424,11 @@
|
|||||||
"version": "5.26.12",
|
"version": "5.26.12",
|
||||||
"date": "2025-09-03T12:03:22Z"
|
"date": "2025-09-03T12:03:22Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "n8n-io/n8n",
|
|
||||||
"version": "n8n@1.109.2",
|
|
||||||
"date": "2025-09-03T07:50:21Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Checkmk/checkmk",
|
"name": "Checkmk/checkmk",
|
||||||
"version": "v2.4.0p11",
|
"version": "v2.4.0p11",
|
||||||
"date": "2025-09-03T09:58:14Z"
|
"date": "2025-09-03T09:58:14Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "mattermost/mattermost",
|
|
||||||
"version": "server/public/v0.1.17",
|
|
||||||
"date": "2025-09-02T21:38:40Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "cockpit-project/cockpit",
|
"name": "cockpit-project/cockpit",
|
||||||
"version": "346",
|
"version": "346",
|
||||||
@@ -379,21 +454,11 @@
|
|||||||
"version": "v4.4.0",
|
"version": "v4.4.0",
|
||||||
"date": "2025-09-02T17:04:25Z"
|
"date": "2025-09-02T17:04:25Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "element-hq/synapse",
|
|
||||||
"version": "v1.137.0",
|
|
||||||
"date": "2025-08-26T09:51:47Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "rabbitmq/rabbitmq-server",
|
"name": "rabbitmq/rabbitmq-server",
|
||||||
"version": "v4.1.4",
|
"version": "v4.1.4",
|
||||||
"date": "2025-09-02T14:26:24Z"
|
"date": "2025-09-02T14:26:24Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "apache/tomcat",
|
|
||||||
"version": "10.1.45",
|
|
||||||
"date": "2025-09-02T12:46:34Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Dolibarr/dolibarr",
|
"name": "Dolibarr/dolibarr",
|
||||||
"version": "22.0.1",
|
"version": "22.0.1",
|
||||||
@@ -409,11 +474,6 @@
|
|||||||
"version": "v25.5.0",
|
"version": "v25.5.0",
|
||||||
"date": "2025-09-02T01:00:11Z"
|
"date": "2025-09-02T01:00:11Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "authelia/authelia",
|
|
||||||
"version": "v4.39.8",
|
|
||||||
"date": "2025-09-02T00:44:45Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "postgres/postgres",
|
"name": "postgres/postgres",
|
||||||
"version": "REL_18_RC1",
|
"version": "REL_18_RC1",
|
||||||
@@ -434,11 +494,6 @@
|
|||||||
"version": "v0.87.3",
|
"version": "v0.87.3",
|
||||||
"date": "2025-09-01T16:25:43Z"
|
"date": "2025-09-01T16:25:43Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "home-assistant/operating-system",
|
|
||||||
"version": "16.1",
|
|
||||||
"date": "2025-08-13T07:58:10Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "seanmorley15/AdventureLog",
|
"name": "seanmorley15/AdventureLog",
|
||||||
"version": "v0.11.0",
|
"version": "v0.11.0",
|
||||||
@@ -454,11 +509,6 @@
|
|||||||
"version": "preview-issue-description",
|
"version": "preview-issue-description",
|
||||||
"date": "2025-09-01T12:21:58Z"
|
"date": "2025-09-01T12:21:58Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "nzbgetcom/nzbget",
|
|
||||||
"version": "v25.3",
|
|
||||||
"date": "2025-09-01T09:47:06Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "grokability/snipe-it",
|
"name": "grokability/snipe-it",
|
||||||
"version": "v8.3.1",
|
"version": "v8.3.1",
|
||||||
@@ -469,16 +519,6 @@
|
|||||||
"version": "v1.7.0",
|
"version": "v1.7.0",
|
||||||
"date": "2025-09-01T10:10:34Z"
|
"date": "2025-09-01T10:10:34Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "readeck/readeck",
|
|
||||||
"version": "0.20.1",
|
|
||||||
"date": "2025-09-01T07:35:48Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "YunoHost/yunohost",
|
|
||||||
"version": "debian/12.1.17.1",
|
|
||||||
"date": "2025-08-31T21:38:21Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "LibreTranslate/LibreTranslate",
|
"name": "LibreTranslate/LibreTranslate",
|
||||||
"version": "v1.7.3",
|
"version": "v1.7.3",
|
||||||
@@ -489,11 +529,6 @@
|
|||||||
"version": "v0.9.91",
|
"version": "v0.9.91",
|
||||||
"date": "2025-08-30T21:49:57Z"
|
"date": "2025-08-30T21:49:57Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "msgbyte/tianji",
|
|
||||||
"version": "v1.24.26",
|
|
||||||
"date": "2025-08-29T20:26:08Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "silverbulletmd/silverbullet",
|
"name": "silverbulletmd/silverbullet",
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
@@ -549,11 +584,6 @@
|
|||||||
"version": "v1.9.2",
|
"version": "v1.9.2",
|
||||||
"date": "2025-08-28T07:06:14Z"
|
"date": "2025-08-28T07:06:14Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "gotson/komga",
|
|
||||||
"version": "1.23.3",
|
|
||||||
"date": "2025-08-28T02:50:06Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "pocket-id/pocket-id",
|
"name": "pocket-id/pocket-id",
|
||||||
"version": "v1.10.0",
|
"version": "v1.10.0",
|
||||||
@@ -569,21 +599,6 @@
|
|||||||
"version": "v11.2.1",
|
"version": "v11.2.1",
|
||||||
"date": "2025-08-27T15:19:02Z"
|
"date": "2025-08-27T15:19:02Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "traefik/traefik",
|
|
||||||
"version": "v3.5.1",
|
|
||||||
"date": "2025-08-27T09:21:19Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "meilisearch/meilisearch",
|
|
||||||
"version": "latest",
|
|
||||||
"date": "2025-08-26T14:14:42Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "evcc-io/evcc",
|
|
||||||
"version": "0.207.5",
|
|
||||||
"date": "2025-08-26T06:57:07Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "documenso/documenso",
|
"name": "documenso/documenso",
|
||||||
"version": "v1.12.2-rc.6",
|
"version": "v1.12.2-rc.6",
|
||||||
@@ -829,11 +844,6 @@
|
|||||||
"version": "2.38.0",
|
"version": "2.38.0",
|
||||||
"date": "2025-08-08T21:47:19Z"
|
"date": "2025-08-08T21:47:19Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "docker/compose",
|
|
||||||
"version": "v2.39.2",
|
|
||||||
"date": "2025-08-08T16:06:06Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "apache/tika",
|
"name": "apache/tika",
|
||||||
"version": "3.2.2",
|
"version": "3.2.2",
|
||||||
@@ -874,11 +884,6 @@
|
|||||||
"version": "v2.0.116",
|
"version": "v2.0.116",
|
||||||
"date": "2025-08-05T04:45:21Z"
|
"date": "2025-08-05T04:45:21Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Tautulli/Tautulli",
|
|
||||||
"version": "v2.15.3",
|
|
||||||
"date": "2025-08-03T17:27:16Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "linuxserver/Heimdall",
|
"name": "linuxserver/Heimdall",
|
||||||
"version": "v2.7.4",
|
"version": "v2.7.4",
|
||||||
@@ -1119,11 +1124,6 @@
|
|||||||
"version": "v2.0.0.4645",
|
"version": "v2.0.0.4645",
|
||||||
"date": "2017-03-07T18:56:06Z"
|
"date": "2017-03-07T18:56:06Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "OctoPrint/OctoPrint",
|
|
||||||
"version": "1.11.2",
|
|
||||||
"date": "2025-06-10T11:07:14Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "glanceapp/glance",
|
"name": "glanceapp/glance",
|
||||||
"version": "v0.8.4",
|
"version": "v0.8.4",
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import type { VariantProps } from "class-variance-authority";
|
|||||||
|
|
||||||
import { cva } from "class-variance-authority";
|
import { cva } from "class-variance-authority";
|
||||||
import { StarIcon } from "lucide-react";
|
import { StarIcon } from "lucide-react";
|
||||||
|
import Link from "next/link";
|
||||||
|
|
||||||
import type { ButtonProps as ButtonPrimitiveProps } from "@/components/animate-ui/primitives/buttons/button";
|
import type { ButtonProps as ButtonPrimitiveProps } from "@/components/animate-ui/primitives/buttons/button";
|
||||||
import type { GithubStarsProps } from "@/components/animate-ui/primitives/animate/github-stars";
|
import type { GithubStarsProps } from "@/components/animate-ui/primitives/animate/github-stars";
|
||||||
@@ -71,30 +72,37 @@ function GitHubStarsButton({
|
|||||||
...props
|
...props
|
||||||
}: GitHubStarsButtonProps) {
|
}: GitHubStarsButtonProps) {
|
||||||
return (
|
return (
|
||||||
<GithubStars
|
<Link
|
||||||
asChild
|
target="_blank"
|
||||||
username={username}
|
rel="noopener noreferrer"
|
||||||
repo={repo}
|
data-umami-event="github-stars"
|
||||||
value={value}
|
href={`https://github.com/${username}/${repo}`}
|
||||||
delay={delay}
|
|
||||||
inView={inView}
|
|
||||||
inViewMargin={inViewMargin}
|
|
||||||
inViewOnce={inViewOnce}
|
|
||||||
>
|
>
|
||||||
<ButtonPrimitive className={cn(buttonVariants({ variant, size, className }))} {...props}>
|
<GithubStars
|
||||||
<GithubStarsLogo />
|
asChild
|
||||||
<GithubStarsNumber />
|
username={username}
|
||||||
<GithubStarsParticles className="text-yellow-500">
|
repo={repo}
|
||||||
<GithubStarsIcon
|
value={value}
|
||||||
icon={StarIcon}
|
delay={delay}
|
||||||
data-variant={variant}
|
inView={inView}
|
||||||
className={cn(buttonStarVariants({ variant }))}
|
inViewMargin={inViewMargin}
|
||||||
activeClassName="text-yellow-500"
|
inViewOnce={inViewOnce}
|
||||||
size={18}
|
>
|
||||||
/>
|
<ButtonPrimitive className={cn(buttonVariants({ variant, size, className }))} {...props}>
|
||||||
</GithubStarsParticles>
|
<GithubStarsLogo />
|
||||||
</ButtonPrimitive>
|
<GithubStarsNumber />
|
||||||
</GithubStars>
|
<GithubStarsParticles className="text-yellow-500">
|
||||||
|
<GithubStarsIcon
|
||||||
|
icon={StarIcon}
|
||||||
|
data-variant={variant}
|
||||||
|
className={cn(buttonStarVariants({ variant }))}
|
||||||
|
activeClassName="text-yellow-500"
|
||||||
|
size={18}
|
||||||
|
/>
|
||||||
|
</GithubStarsParticles>
|
||||||
|
</ButtonPrimitive>
|
||||||
|
</GithubStars>
|
||||||
|
</Link>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
330
install/autocaliweb-install.sh
Normal file
330
install/autocaliweb-install.sh
Normal file
@@ -0,0 +1,330 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2025 Community Scripts ORG
|
||||||
|
# Author: vhsdream
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/gelbphoenix/autocaliweb
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing dependencies"
|
||||||
|
$STD apt-get install -y --no-install-recommends \
|
||||||
|
python3-dev \
|
||||||
|
sqlite3 \
|
||||||
|
build-essential \
|
||||||
|
libldap2-dev \
|
||||||
|
libssl-dev \
|
||||||
|
libsasl2-dev \
|
||||||
|
imagemagick \
|
||||||
|
ghostscript \
|
||||||
|
libmagic1 \
|
||||||
|
libxi6 \
|
||||||
|
libxslt1.1 \
|
||||||
|
libxtst6 \
|
||||||
|
libxrandr2 \
|
||||||
|
libxkbfile1 \
|
||||||
|
libxcomposite1 \
|
||||||
|
libopengl0 \
|
||||||
|
libnss3 \
|
||||||
|
libxkbcommon0 \
|
||||||
|
libegl1 \
|
||||||
|
libxdamage1 \
|
||||||
|
libgl1 \
|
||||||
|
libglx-mesa0 \
|
||||||
|
xz-utils \
|
||||||
|
xdg-utils \
|
||||||
|
inotify-tools \
|
||||||
|
binutils \
|
||||||
|
unrar-free \
|
||||||
|
zip
|
||||||
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "kepubify" "pgaskin/kepubify" "singlefile" "latest" "/usr/bin" "kepubify-linux-64bit"
|
||||||
|
KEPUB_VERSION="$(/usr/bin/kepubify --version | awk '{print $2}')"
|
||||||
|
|
||||||
|
msg_info "Installing Calibre"
|
||||||
|
CALIBRE_RELEASE="$(curl -s https://api.github.com/repos/kovidgoyal/calibre/releases/latest | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)"
|
||||||
|
CALIBRE_VERSION=${CALIBRE_RELEASE#v}
|
||||||
|
curl -fsSL https://github.com/kovidgoyal/calibre/releases/download/${CALIBRE_RELEASE}/calibre-${CALIBRE_VERSION}-x86_64.txz -o /tmp/calibre.txz
|
||||||
|
mkdir -p /opt/calibre
|
||||||
|
$STD tar -xf /tmp/calibre.txz -C /opt/calibre
|
||||||
|
rm /tmp/calibre.txz
|
||||||
|
$STD /opt/calibre/calibre_postinstall
|
||||||
|
msg_ok "Calibre installed"
|
||||||
|
|
||||||
|
setup_uv
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "autocaliweb" "gelbphoenix/autocaliweb" "tarball" "latest" "/opt/autocaliweb"
|
||||||
|
|
||||||
|
msg_info "Configuring Autocaliweb"
|
||||||
|
INSTALL_DIR="/opt/autocaliweb"
|
||||||
|
CONFIG_DIR="/etc/autocaliweb"
|
||||||
|
CALIBRE_LIB_DIR="/opt/calibre-library"
|
||||||
|
INGEST_DIR="/opt/acw-book-ingest"
|
||||||
|
SERVICE_USER="acw"
|
||||||
|
SERVICE_GROUP="acw"
|
||||||
|
SCRIPTS_DIR="${INSTALL_DIR}/scripts"
|
||||||
|
export VIRTUAL_ENV="${INSTALL_DIR}/venv"
|
||||||
|
|
||||||
|
mkdir -p "$CONFIG_DIR"/{.config/calibre/plugins,log_archive,.acw_conversion_tmp}
|
||||||
|
mkdir -p "$CONFIG_DIR"/processed_books/{converted,imported,failed,fixed_originals}
|
||||||
|
mkdir -p "$INSTALL_DIR"/{metadata_change_logs,metadata_temp}
|
||||||
|
mkdir -p {"$CALIBRE_LIB_DIR","$INGEST_DIR"}
|
||||||
|
echo "$CALIBRE_VERSION" >"$INSTALL_DIR"/CALIBRE_RELEASE
|
||||||
|
echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE
|
||||||
|
sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
|
||||||
|
|
||||||
|
cd "$INSTALL_DIR"
|
||||||
|
$STD uv venv "$VIRTUAL_ENV"
|
||||||
|
$STD uv sync --all-extras --active
|
||||||
|
cat <<EOF >./dirs.json
|
||||||
|
{
|
||||||
|
"ingest_folder": "$INGEST_DIR",
|
||||||
|
"calibre_library_dir": "$CALIBRE_LIB_DIR",
|
||||||
|
"tmp_conversion_dir": "$CONFIG_DIR/.acw_conversion_tmp"
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
useradd -s /usr/sbin/nologin -d "$CONFIG_DIR" -M "$SERVICE_USER"
|
||||||
|
ln -sf "$CONFIG_DIR"/.config/calibre/plugins "$CONFIG_DIR"/calibre_plugins
|
||||||
|
cat <<EOF >"$INSTALL_DIR"/.env
|
||||||
|
ACW_INSTALL_DIR=$INSTALL_DIR
|
||||||
|
ACW_CONFIG_DIR=$CONFIG_DIR
|
||||||
|
ACW_USER=$SERVICE_USER
|
||||||
|
ACW_GROUP=$SERVICE_GROUP
|
||||||
|
LIBRARY_DIR=$CALIBRE_LIB_DIR
|
||||||
|
EOF
|
||||||
|
msg_ok "Configured Autocaliweb"
|
||||||
|
|
||||||
|
msg_info "Creating ACWSync Plugin for KOReader"
|
||||||
|
cd "$INSTALL_DIR"/koreader/plugins
|
||||||
|
PLUGIN_DIGEST="$(find acwsync.koplugin -type f -name "*.lua" -o -name "*.json" | sort | xargs sha256sum | sha256sum | cut -d' ' -f1)"
|
||||||
|
echo "Plugin files digest: $PLUGIN_DIGEST" >acwsync.koplugin/${PLUGIN_DIGEST}.digest
|
||||||
|
echo "Build date: $(date)" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
|
||||||
|
echo "Files included:" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
|
||||||
|
$STD zip -r koplugin.zip acwsync.koplugin/
|
||||||
|
cp -r koplugin.zip "$INSTALL_DIR"/cps/static
|
||||||
|
msg_ok "Created ACWSync Plugin"
|
||||||
|
|
||||||
|
msg_info "Initializing databases"
|
||||||
|
KEPUBIFY_PATH=$(command -v kepubify 2>/dev/null || echo "/usr/bin/kepubify")
|
||||||
|
EBOOK_CONVERT_PATH=$(command -v ebook-convert 2>/dev/null || echo "/usr/bin/ebook-convert")
|
||||||
|
CALIBRE_BIN_DIR=$(dirname "$EBOOK_CONVERT_PATH")
|
||||||
|
curl -fsSL https://github.com/gelbphoenix/autocaliweb/raw/refs/heads/main/library/metadata.db -o "$CALIBRE_LIB_DIR"/metadata.db
|
||||||
|
curl -fsSL https://github.com/gelbphoenix/autocaliweb/raw/refs/heads/main/library/app.db -o "$CONFIG_DIR"/app.db
|
||||||
|
sqlite3 "$CONFIG_DIR/app.db" <<EOS
|
||||||
|
UPDATE settings SET
|
||||||
|
config_kepubifypath='$KEPUBIFY_PATH',
|
||||||
|
config_converterpath='$EBOOK_CONVERT_PATH',
|
||||||
|
config_binariesdir='$CALIBRE_BIN_DIR',
|
||||||
|
config_calibre_dir='$CALIBRE_LIB_DIR',
|
||||||
|
config_logfile='$CONFIG_DIR/autocaliweb.log',
|
||||||
|
config_access_logfile='$CONFIG_DIR/access.log'
|
||||||
|
WHERE 1=1;
|
||||||
|
EOS
|
||||||
|
msg_ok "Initialized databases"
|
||||||
|
|
||||||
|
msg_info "Creating scripts and service files"
|
||||||
|
|
||||||
|
# auto-ingest watcher
|
||||||
|
cat <<EOF >"$SCRIPTS_DIR"/ingest_watcher.sh
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
INSTALL_PATH="$INSTALL_DIR"
|
||||||
|
WATCH_FOLDER=\$(grep -o '"ingest_folder": "[^"]*' \${INSTALL_PATH}/dirs.json | grep -o '[^"]*\$')
|
||||||
|
echo "[acw-ingest-service] Watching folder: \$WATCH_FOLDER"
|
||||||
|
|
||||||
|
# Monitor the folder for new files
|
||||||
|
/usr/bin/inotifywait -m -r --format="%e %w%f" -e close_write -e moved_to "\$WATCH_FOLDER" |
|
||||||
|
while read -r events filepath ; do
|
||||||
|
echo "[acw-ingest-service] New files detected - \$filepath - Starting Ingest Processor..."
|
||||||
|
# Use the Python interpreter from the virtual environment
|
||||||
|
\${INSTALL_PATH}/venv/bin/python \${INSTALL_PATH}/scripts/ingest_processor.py "\$filepath"
|
||||||
|
done
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# auto-zipper
|
||||||
|
cat <<EOF >"$SCRIPTS_DIR"/auto_zipper_wrapper.sh
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Source virtual environment
|
||||||
|
source ${INSTALL_DIR}/venv/bin/activate
|
||||||
|
|
||||||
|
WAKEUP="23:59"
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
# Replace expr with modern Bash arithmetic (safer and less prone to parsing issues)
|
||||||
|
# fix: expr: non-integer argument and sleep: missing operand
|
||||||
|
SECS=\$(( \$(date -d "\$WAKEUP" +%s) - \$(date -d "now" +%s) ))
|
||||||
|
if [[ \$SECS -lt 0 ]]; then
|
||||||
|
SECS=\$(( \$(date -d "tomorrow \$WAKEUP" +%s) - \$(date -d "now" +%s) ))
|
||||||
|
fi
|
||||||
|
echo "[acw-auto-zipper] Next run in \$SECS seconds."
|
||||||
|
sleep \$SECS &
|
||||||
|
wait \$!
|
||||||
|
|
||||||
|
# Use virtual environment python
|
||||||
|
python ${SCRIPTS_DIR}/auto_zip.py
|
||||||
|
|
||||||
|
if [[ \$? == 1 ]]; then
|
||||||
|
echo "[acw-auto-zipper] Error occurred during script initialisation."
|
||||||
|
elif [[ \$? == 2 ]]; then
|
||||||
|
echo "[acw-auto-zipper] Error occurred while zipping today's files."
|
||||||
|
elif [[ \$? == 3 ]]; then
|
||||||
|
echo "[acw-auto-zipper] Error occurred while trying to remove zipped files."
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 60
|
||||||
|
done
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# metadata change detector
|
||||||
|
cat <<EOF >"$SCRIPTS_DIR"/metadata_change_detector_wrapper.sh
|
||||||
|
#!/bin/bash
|
||||||
|
# metadata_change_detector_wrapper.sh - Wrapper for periodic metadata enforcement
|
||||||
|
|
||||||
|
# Source virtual environment
|
||||||
|
source ${INSTALL_DIR}/venv/bin/activate
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
CHECK_INTERVAL=300 # Check every 5 minutes (300 seconds)
|
||||||
|
METADATA_LOGS_DIR="${INSTALL_DIR}/metadata_change_logs"
|
||||||
|
|
||||||
|
echo "[metadata-change-detector] Starting metadata change detector service..."
|
||||||
|
echo "[metadata-change-detector] Checking for changes every \$CHECK_INTERVAL seconds"
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
# Check if there are any log files to process
|
||||||
|
if [ -d "\$METADATA_LOGS_DIR" ] && [ "\$(ls -A \$METADATA_LOGS_DIR 2>/dev/null)" ]; then
|
||||||
|
echo "[metadata-change-detector] Found metadata change logs, processing..."
|
||||||
|
|
||||||
|
# Process each log file
|
||||||
|
for log_file in "\$METADATA_LOGS_DIR"/*.json; do
|
||||||
|
if [ -f "\$log_file" ]; then
|
||||||
|
log_name=\$(basename "\$log_file")
|
||||||
|
echo "[metadata-change-detector] Processing log: \$log_name"
|
||||||
|
|
||||||
|
# Call cover_enforcer.py with the log file
|
||||||
|
${INSTALL_DIR}/venv/bin/python ${SCRIPTS_DIR}/cover_enforcer.py --log "\$log_name"
|
||||||
|
|
||||||
|
if [ \$? -eq 0 ]; then
|
||||||
|
echo "[metadata-change-detector] Successfully processed \$log_name"
|
||||||
|
else
|
||||||
|
echo "[metadata-change-detector] Error processing \$log_name"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "[metadata-change-detector] No metadata changes detected"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[metadata-change-detector] Sleeping for \$CHECK_INTERVAL seconds..."
|
||||||
|
sleep \$CHECK_INTERVAL
|
||||||
|
done
|
||||||
|
EOF
|
||||||
|
chmod +x "$SCRIPTS_DIR"/{ingest_watcher.sh,auto_zipper_wrapper.sh,metadata_change_detector_wrapper.sh}
|
||||||
|
chown -R "$SERVICE_USER":"$SERVICE_GROUP" {"$INSTALL_DIR","$CONFIG_DIR","$INGEST_DIR","$CALIBRE_LIB_DIR"}
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/autocaliweb.service
|
||||||
|
[Unit]
|
||||||
|
Description=Autocaliweb
|
||||||
|
After=network.target
|
||||||
|
Wants=network-online.target
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=$SERVICE_USER
|
||||||
|
Group=$SERVICE_GROUP
|
||||||
|
WorkingDirectory=$INSTALL_DIR
|
||||||
|
Environment=PATH=$INSTALL_DIR/venv/bin:/usr/bin:/bin
|
||||||
|
Environment=PYTHONPATH=$SCRIPTS_DIR:$INSTALL_DIR
|
||||||
|
Environment=PYTHONDONTWRITEBYTECODE=1
|
||||||
|
Environment=PYTHONUNBUFFERED=1
|
||||||
|
Environment=CALIBRE_DBPATH=$CONFIG_DIR
|
||||||
|
EnvironmentFile=$INSTALL_DIR/.env
|
||||||
|
ExecStart=$INSTALL_DIR/venv/bin/python $INSTALL_DIR/cps.py -p $CONFIG_DIR/app.db
|
||||||
|
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/acw-ingest-service.service
|
||||||
|
[Unit]
|
||||||
|
Description=Autocaliweb Ingest Processor Service
|
||||||
|
After=autocaliweb.service
|
||||||
|
Requires=autocaliweb.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=${SERVICE_USER}
|
||||||
|
Group=${SERVICE_GROUP}
|
||||||
|
WorkingDirectory=${INSTALL_DIR}
|
||||||
|
Environment=CALIBRE_DBPATH=${CONFIG_DIR}
|
||||||
|
Environment=HOME=${CONFIG_DIR}
|
||||||
|
ExecStart=/bin/bash ${SCRIPTS_DIR}/ingest_watcher.sh
|
||||||
|
Restart=always
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/acw-auto-zipper.service
|
||||||
|
[Unit]
|
||||||
|
Description=Autocaliweb Auto Zipper Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=${SERVICE_USER}
|
||||||
|
Group=${SERVICE_GROUP}
|
||||||
|
WorkingDirectory=${INSTALL_DIR}
|
||||||
|
Environment=CALIBRE_DBPATH=${CONFIG_DIR}
|
||||||
|
ExecStart=${SCRIPTS_DIR}/auto_zipper_wrapper.sh
|
||||||
|
Restart=always
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/metadata-change-detector.service
|
||||||
|
[Unit]
|
||||||
|
Description=Autocaliweb Metadata Change Detector
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=${SERVICE_USER}
|
||||||
|
Group=${SERVICE_GROUP}
|
||||||
|
WorkingDirectory=${INSTALL_DIR}
|
||||||
|
ExecStart=/bin/bash ${SCRIPTS_DIR}/metadata_change_detector_wrapper.sh
|
||||||
|
Restart=always
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal
|
||||||
|
Environment=CALIBRE_DBPATH=${CONFIG_DIR}
|
||||||
|
Environment=HOME=${CONFIG_DIR}
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl -q enable --now autocaliweb acw-ingest-service acw-auto-zipper metadata-change-detector
|
||||||
|
msg_ok "Created scripts and service files"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -285,7 +285,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
|
|||||||
mkdir -p "$INSTALL_DIR"
|
mkdir -p "$INSTALL_DIR"
|
||||||
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
|
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.140.1" "$SRC_DIR"
|
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.141.1" "$SRC_DIR"
|
||||||
|
|
||||||
msg_info "Installing ${APPLICATION} (more patience please)"
|
msg_info "Installing ${APPLICATION} (more patience please)"
|
||||||
|
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ Wants=network.target karakeep-browser.service meilisearch.service
|
|||||||
After=network.target karakeep-browser.service meilisearch.service
|
After=network.target karakeep-browser.service meilisearch.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=/usr/bin/node dist/index.mjs
|
ExecStart=/usr/bin/node dist/index.js
|
||||||
WorkingDirectory=/opt/karakeep/apps/workers
|
WorkingDirectory=/opt/karakeep/apps/workers
|
||||||
EnvironmentFile=/etc/karakeep/karakeep.env
|
EnvironmentFile=/etc/karakeep/karakeep.env
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ fetch_and_deploy_gh_release "recyclarr" "recyclarr/recyclarr" "prebuild" "latest
|
|||||||
|
|
||||||
msg_info "Configuring Recyclarr"
|
msg_info "Configuring Recyclarr"
|
||||||
mkdir -p /root/.config/recyclarr
|
mkdir -p /root/.config/recyclarr
|
||||||
recyclarr config create
|
$STD recyclarr config create
|
||||||
msg_ok "Configured Recyclarr"
|
msg_ok "Configured Recyclarr"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ elif command -v wget >/dev/null 2>&1; then
|
|||||||
fi
|
fi
|
||||||
# This function enables error handling in the script by setting options and defining a trap for the ERR signal.
|
# This function enables error handling in the script by setting options and defining a trap for the ERR signal.
|
||||||
catch_errors() {
|
catch_errors() {
|
||||||
set -Eeuo pipefail
|
set -Eeo pipefail
|
||||||
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
|
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -346,7 +346,7 @@ echo_default() {
|
|||||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE} GB${CL}"
|
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE} GB${CL}"
|
||||||
echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}${CORE_COUNT}${CL}"
|
echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}${CORE_COUNT}${CL}"
|
||||||
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE} MiB${CL}"
|
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE} MiB${CL}"
|
||||||
if [ "$VERB" == "yes" ]; then
|
if [ "$VERBOSE" == "yes" ]; then
|
||||||
echo -e "${SEARCH}${BOLD}${DGN}Verbose Mode: ${BGN}Enabled${CL}"
|
echo -e "${SEARCH}${BOLD}${DGN}Verbose Mode: ${BGN}Enabled${CL}"
|
||||||
fi
|
fi
|
||||||
echo -e "${CREATING}${BOLD}${BL}Creating a ${APP} LXC using the above default settings${CL}"
|
echo -e "${CREATING}${BOLD}${BL}Creating a ${APP} LXC using the above default settings${CL}"
|
||||||
|
|||||||
Reference in New Issue
Block a user