Compare commits
27
Commits
2025-08-22
...
2025-08-24
@@ -10,8 +10,42 @@
|
|||||||
> [!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-25
|
||||||
|
|
||||||
|
## 2025-08-24
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Kasm: Fix install log parsing [@tremor021](https://github.com/tremor021) ([#7140](https://github.com/community-scripts/ProxmoxVE/pull/7140))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- BookLore: Fix Nginx config [@tremor021](https://github.com/tremor021) ([#7155](https://github.com/community-scripts/ProxmoxVE/pull/7155))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Syncthing: Switch to v2 stable repository [@tremor021](https://github.com/tremor021) ([#7150](https://github.com/community-scripts/ProxmoxVE/pull/7150))
|
||||||
|
|
||||||
## 2025-08-23
|
## 2025-08-23
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- qBittorrent: Fix file names [@tremor021](https://github.com/tremor021) ([#7136](https://github.com/community-scripts/ProxmoxVE/pull/7136))
|
||||||
|
- Tandoor: Fix env path [@tremor021](https://github.com/tremor021) ([#7130](https://github.com/community-scripts/ProxmoxVE/pull/7130))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Immich: v1.139.2 [@vhsdream](https://github.com/vhsdream) ([#7116](https://github.com/community-scripts/ProxmoxVE/pull/7116))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Pf2eTools [@tremor021](https://github.com/tremor021) ([#7096](https://github.com/community-scripts/ProxmoxVE/pull/7096))
|
||||||
|
- Refactor: Prowlarr [@tremor021](https://github.com/tremor021) ([#7091](https://github.com/community-scripts/ProxmoxVE/pull/7091))
|
||||||
|
- Refactor: Radarr [@tremor021](https://github.com/tremor021) ([#7088](https://github.com/community-scripts/ProxmoxVE/pull/7088))
|
||||||
|
- Refactor: Snipe-IT [@tremor021](https://github.com/tremor021) ([#7081](https://github.com/community-scripts/ProxmoxVE/pull/7081))
|
||||||
|
|
||||||
## 2025-08-22
|
## 2025-08-22
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
+29
-23
@@ -29,6 +29,8 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
setup_uv
|
setup_uv
|
||||||
|
PNPM_VERSION="$(curl -fsSL "https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/package.json" | jq -r '.packageManager | split("@")[1]')"
|
||||||
|
NODE_VERSION="22" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs
|
||||||
|
|
||||||
STAGING_DIR=/opt/staging
|
STAGING_DIR=/opt/staging
|
||||||
BASE_DIR=${STAGING_DIR}/base-images
|
BASE_DIR=${STAGING_DIR}/base-images
|
||||||
@@ -59,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.138.1"
|
RELEASE="1.139.2"
|
||||||
#RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
#RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
|
if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
@@ -116,8 +118,12 @@ set +a
|
|||||||
EOF
|
EOF
|
||||||
chmod +x "$INSTALL_DIR"/start.sh
|
chmod +x "$INSTALL_DIR"/start.sh
|
||||||
fi
|
fi
|
||||||
rm -rf "${APP_DIR:?}"/*
|
|
||||||
mkdir -p "$ML_DIR"
|
(
|
||||||
|
shopt -s dotglob
|
||||||
|
rm -rf "${APP_DIR:?}"/*
|
||||||
|
)
|
||||||
|
|
||||||
rm -rf "$SRC_DIR"
|
rm -rf "$SRC_DIR"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v${RELEASE}" "$SRC_DIR"
|
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v${RELEASE}" "$SRC_DIR"
|
||||||
@@ -127,30 +133,34 @@ EOF
|
|||||||
if [[ "$RELEASE" == "1.135.1" ]]; then
|
if [[ "$RELEASE" == "1.135.1" ]]; then
|
||||||
rm ./src/schema/migrations/1750323941566-UnsetPrewarmDimParameter.ts
|
rm ./src/schema/migrations/1750323941566-UnsetPrewarmDimParameter.ts
|
||||||
fi
|
fi
|
||||||
$STD npm install -g node-gyp node-pre-gyp
|
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||||
$STD npm ci
|
export CI=1
|
||||||
$STD npm run build
|
corepack enable
|
||||||
$STD npm prune --omit=dev --omit=optional
|
|
||||||
cp -a {bin,dist,node_modules,resources,package*.json} "$APP_DIR"/
|
# server build
|
||||||
cp package.json "$APP_DIR"/bin
|
$STD pnpm --filter immich --frozen-lockfile build
|
||||||
mv "$INSTALL_DIR"/start.sh "$APP_DIR"/bin
|
$STD pnpm --filter immich --frozen-lockfile --prod --no-optional deploy "$APP_DIR"
|
||||||
|
cp "$APP_DIR"/package.json "$APP_DIR"/bin
|
||||||
sed -i 's|^start|./start|' "$APP_DIR"/bin/immich-admin
|
sed -i 's|^start|./start|' "$APP_DIR"/bin/immich-admin
|
||||||
cd "$SRC_DIR"/open-api/typescript-sdk
|
|
||||||
$STD npm ci
|
# openapi & web build
|
||||||
$STD npm run build
|
|
||||||
cd "$SRC_DIR"/web
|
|
||||||
$STD npm ci
|
|
||||||
$STD npm run build
|
|
||||||
cd "$SRC_DIR"
|
cd "$SRC_DIR"
|
||||||
|
export SHARP_FORCE_GLOBAL_LIBVIPS=true
|
||||||
|
$STD pnpm --filter @immich/sdk --filter immich-web --frozen-lockfile --force install
|
||||||
|
$STD pnpm --filter @immich/sdk --filter immich-web build
|
||||||
cp -a web/build "$APP_DIR"/www
|
cp -a web/build "$APP_DIR"/www
|
||||||
cp LICENSE "$APP_DIR"
|
cp LICENSE "$APP_DIR"
|
||||||
|
|
||||||
|
# cli build
|
||||||
|
$STD pnpm --filter @immich/sdk --filter @immich/cli --frozen-lockfile install
|
||||||
|
$STD pnpm --filter @immich/sdk --filter @immich/cli build
|
||||||
|
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
|
||||||
cd "$APP_DIR"
|
cd "$APP_DIR"
|
||||||
export SHARP_FORCE_GLOBAL_LIBVIPS=true
|
mv "$INSTALL_DIR"/start.sh "$APP_DIR"/bin
|
||||||
$STD npm install sharp
|
|
||||||
rm -rf "$APP_DIR"/node_modules/@img/sharp-{libvips*,linuxmusl-x64}
|
|
||||||
msg_ok "Updated ${APP} web and microservices"
|
msg_ok "Updated ${APP} web and microservices"
|
||||||
|
|
||||||
cd "$SRC_DIR"/machine-learning
|
cd "$SRC_DIR"/machine-learning
|
||||||
|
mkdir -p "$ML_DIR"
|
||||||
export VIRTUAL_ENV="${ML_DIR}"/ml-venv
|
export VIRTUAL_ENV="${ML_DIR}"/ml-venv
|
||||||
$STD /usr/local/bin/uv venv "$VIRTUAL_ENV"
|
$STD /usr/local/bin/uv venv "$VIRTUAL_ENV"
|
||||||
if [[ -f ~/.openvino ]]; then
|
if [[ -f ~/.openvino ]]; then
|
||||||
@@ -178,10 +188,6 @@ EOF
|
|||||||
ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$ML_DIR"/upload
|
ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$ML_DIR"/upload
|
||||||
ln -s "$GEO_DIR" "$APP_DIR"
|
ln -s "$GEO_DIR" "$APP_DIR"
|
||||||
|
|
||||||
msg_info "Updating Immich CLI"
|
|
||||||
$STD npm i -g @immich/cli
|
|
||||||
msg_ok "Updated Immich CLI"
|
|
||||||
|
|
||||||
chown -R immich:immich "$INSTALL_DIR"
|
chown -R immich:immich "$INSTALL_DIR"
|
||||||
if [[ ! -f ~/.debian_version.bak ]]; then
|
if [[ ! -f ~/.debian_version.bak ]]; then
|
||||||
cp /etc/debian_version ~/.debian_version.bak
|
cp /etc/debian_version ~/.debian_version.bak
|
||||||
|
|||||||
+6
-11
@@ -29,30 +29,25 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Pf2eToolsOrg/Pf2eTools/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Pf2eToolsOrg/Pf2eTools/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f "/opt/${APP}_version.txt" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.pf2etools 2>/dev/null)" ]] || [[ ! -f ~/.pf2etools ]]; then
|
||||||
msg_info "Updating System"
|
msg_info "Updating System"
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get -y upgrade
|
$STD apt-get -y upgrade
|
||||||
msg_ok "Updated System"
|
msg_ok "Updated System"
|
||||||
|
|
||||||
|
rm -rf /opt/Pf2eTools
|
||||||
|
fetch_and_deploy_gh_release "pf2etools" "Pf2eToolsOrg/Pf2eTools" "tarball" "latest" "/opt/Pf2eTools"
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
cd /opt
|
|
||||||
curl -fsSL "https://github.com/Pf2eToolsOrg/Pf2eTools/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/Pf2eToolsOrg/Pf2eTools/archive/refs/tags/${RELEASE}.zip")
|
|
||||||
$STD unzip ${RELEASE}.zip
|
|
||||||
rm -rf "/opt/${APP}"
|
|
||||||
mv ${APP}-${RELEASE:1} /opt/${APP}
|
|
||||||
cd /opt/Pf2eTools
|
cd /opt/Pf2eTools
|
||||||
$STD npm install
|
$STD npm install
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
chown -R www-data: "/opt/${APP}"
|
chown -R www-data: "/opt/${APP}"
|
||||||
chmod -R 755 "/opt/${APP}"
|
chmod -R 755 "/opt/${APP}"
|
||||||
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
msg_ok "Updated successfully"
|
||||||
rm -rf /opt/${RELEASE}.zip
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
+8
-12
@@ -23,25 +23,21 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /var/lib/prowlarr/ ]]; then
|
if [[ ! -d /var/lib/prowlarr/ ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
temp_file="$(mktemp)"
|
|
||||||
rm -rf /opt/Prowlarr
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Prowlarr/Prowlarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Prowlarr/Prowlarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
curl -fsSL "https://github.com/Prowlarr/Prowlarr/releases/download/v${RELEASE}/Prowlarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
|
if [[ "${RELEASE}" != "$(cat ~/.prowlarr 2>/dev/null)" ]] || [[ ! -f ~/.prowlarr ]]; then
|
||||||
$STD tar -xvzf "$temp_file"
|
rm -rf /opt/Prowlarr
|
||||||
mv Prowlarr /opt
|
fetch_and_deploy_gh_release "prowlarr" "Prowlarr/Prowlarr" "prebuild" "latest" "/opt/Prowlarr" "Prowlarr.master*linux-core-x64.tar.gz"
|
||||||
chmod 775 /opt/Prowlarr
|
chmod 775 /opt/Prowlarr
|
||||||
msg_ok "Updated $APP LXC"
|
msg_ok "Successfully updated"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -f "$temp_file"
|
|
||||||
msg_ok "Cleaned up"
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -38,8 +38,9 @@ function update_script() {
|
|||||||
systemctl stop qbittorrent-nox
|
systemctl stop qbittorrent-nox
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
rm -f /opt/qbittorrent/qbittorrent-nox
|
||||||
fetch_and_deploy_gh_release "qbittorrent" "userdocs/qbittorrent-nox-static" "singlefile" "latest" "/opt/qbittorrent" "x86_64-qbittorrent-nox"
|
fetch_and_deploy_gh_release "qbittorrent" "userdocs/qbittorrent-nox-static" "singlefile" "latest" "/opt/qbittorrent" "x86_64-qbittorrent-nox"
|
||||||
mv /opt/qbittorrent/x86_64-qbittorrent-nox /opt/qbittorrent/qbittorrent-nox
|
mv /opt/qbittorrent/qbittorrent /opt/qbittorrent/qbittorrent-nox
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start qbittorrent-nox
|
systemctl start qbittorrent-nox
|
||||||
|
|||||||
+9
-12
@@ -29,19 +29,16 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Updating $APP LXC"
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Radarr/Radarr/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
temp_file="$(mktemp)"
|
if [[ ! -f ~/.radarr ]] || [[ "$RELEASE" != "$(cat ~/.radarr 2>/dev/null)" ]]; then
|
||||||
rm -rf /opt/Radarr
|
rm -rf /opt/Radarr
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Radarr/Radarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
fetch_and_deploy_gh_release "Radarr" "Radarr/Radarr" "prebuild" "latest" "/opt/Radarr" "Radarr.master*linux-core-x64.tar.gz"
|
||||||
curl -fsSL "https://github.com/Radarr/Radarr/releases/download/v${RELEASE}/Radarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
|
chmod 775 /opt/Radarr
|
||||||
$STD tar -xvzf "$temp_file"
|
msg_ok "Updated successfully"
|
||||||
mv Radarr /opt
|
else
|
||||||
chmod 775 /opt/Radarr
|
msg_ok "No update required. $APP is already at v${RELEASE}"
|
||||||
msg_ok "Updated $APP LXC"
|
fi
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf "$temp_file"
|
|
||||||
msg_ok "Cleaned up"
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+10
-7
@@ -27,20 +27,24 @@ 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/snipe/snipe-it/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "v([^"]+).*/\1/')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/snipe/snipe-it/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "v([^"]+).*/\1/')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f ~/.snipe-it ]] || [[ "${RELEASE}" != "$(cat ~/.snipe-it 2>/dev/null)" ]]; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop nginx
|
systemctl stop nginx
|
||||||
msg_ok "Services Stopped"
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
|
msg_info "Creating backup"
|
||||||
|
mv /opt/snipe-it /opt/snipe-it-backup
|
||||||
|
msg_ok "Backup created"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "snipe-it" "snipe/snipe-it" "tarball"
|
||||||
|
[[ "$(php -v 2>/dev/null)" == PHP\ 8.2* ]] && PHP_VERSION="8.3" PHP_MODULE="common,ctype,ldap,fileinfo,iconv,mysql,soap,xsl" PHP_FPM="YES" setup_php
|
||||||
|
setup_composer
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get -y upgrade
|
$STD apt-get -y upgrade
|
||||||
mv /opt/snipe-it /opt/snipe-it-backup
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf "$temp_file"
|
|
||||||
mv "snipe-it-${RELEASE}" /opt/snipe-it
|
|
||||||
cp /opt/snipe-it-backup/.env /opt/snipe-it/.env
|
cp /opt/snipe-it-backup/.env /opt/snipe-it/.env
|
||||||
cp -r /opt/snipe-it-backup/public/uploads/ /opt/snipe-it/public/uploads/
|
cp -r /opt/snipe-it-backup/public/uploads/ /opt/snipe-it/public/uploads/
|
||||||
cp -r /opt/snipe-it-backup/storage/private_uploads /opt/snipe-it/storage/private_uploads
|
cp -r /opt/snipe-it-backup/storage/private_uploads /opt/snipe-it/storage/private_uploads
|
||||||
@@ -55,7 +59,6 @@ function update_script() {
|
|||||||
$STD php artisan view:clear
|
$STD php artisan view:clear
|
||||||
chown -R www-data: /opt/snipe-it
|
chown -R www-data: /opt/snipe-it
|
||||||
chmod -R 755 /opt/snipe-it
|
chmod -R 755 /opt/snipe-it
|
||||||
rm -rf "$temp_file"
|
|
||||||
rm -rf /opt/snipe-it-backup
|
rm -rf /opt/snipe-it-backup
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -49,7 +49,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
cp -r /opt/tandoor.bak/{config,api,mediafiles,staticfiles} /opt/tandoor/
|
cp -r /opt/tandoor.bak/{config,api,mediafiles,staticfiles} /opt/tandoor/
|
||||||
mv /opt/.env /opt/tandoor/.env
|
mv /opt/tandoor.bak/.env /opt/tandoor/.env
|
||||||
cd /opt/tandoor
|
cd /opt/tandoor
|
||||||
$STD uv venv .venv --python=python3
|
$STD uv venv .venv --python=python3
|
||||||
$STD uv pip install -r requirements.txt --python .venv/bin/python
|
$STD uv pip install -r requirements.txt --python .venv/bin/python
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
"type": "warning"
|
"type": "warning"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "Show password: `cat ~/kasm.creds`",
|
"text": "Show credentials: `cat ~/kasm.creds`",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Show Login Credentials, type `cat ~/paperless.creds` in the LXC console",
|
"text": "Show Login Credentials, type `cat ~/paperless-ngx.creds` in the LXC console",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
+144
-144
@@ -1,18 +1,148 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"name": "crafty-controller/crafty-4",
|
||||||
|
"version": "v4.5.1",
|
||||||
|
"date": "2025-08-24T23:58:52Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gtsteffaniak/filebrowser",
|
||||||
|
"version": "v0.8.2-beta",
|
||||||
|
"date": "2025-08-24T22:58:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Ombi-app/Ombi",
|
||||||
|
"version": "v4.47.1",
|
||||||
|
"date": "2025-01-05T21:14:23Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pocket-id/pocket-id",
|
||||||
|
"version": "v1.9.1",
|
||||||
|
"date": "2025-08-24T21:27:58Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "moghtech/komodo",
|
||||||
|
"version": "v1.19.1",
|
||||||
|
"date": "2025-08-24T20:16:32Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "firefly-iii/firefly-iii",
|
||||||
|
"version": "v6.3.2",
|
||||||
|
"date": "2025-08-19T04:08:36Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wavelog/wavelog",
|
||||||
|
"version": "2.1",
|
||||||
|
"date": "2025-08-24T15:42:19Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rcourtman/Pulse",
|
||||||
|
"version": "v4.7.6",
|
||||||
|
"date": "2025-08-23T22:49:00Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Radarr/Radarr",
|
||||||
|
"version": "v5.26.2.10099",
|
||||||
|
"date": "2025-06-11T20:10:39Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Prowlarr/Prowlarr",
|
||||||
|
"version": "v2.0.5.5160",
|
||||||
|
"date": "2025-08-23T21:23:11Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fuma-nama/fumadocs",
|
||||||
|
"version": "fumadocs-openapi@9.2.3",
|
||||||
|
"date": "2025-08-24T12:48:14Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Lidarr/Lidarr",
|
||||||
|
"version": "v2.12.4.4658",
|
||||||
|
"date": "2025-06-09T17:27:45Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "msgbyte/tianji",
|
||||||
|
"version": "v1.24.22",
|
||||||
|
"date": "2025-08-24T09:51:24Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "janeczku/calibre-web",
|
||||||
|
"version": "0.6.25",
|
||||||
|
"date": "2025-08-24T08:51:55Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "morpheus65535/bazarr",
|
||||||
|
"version": "v1.5.3-beta.10",
|
||||||
|
"date": "2025-07-15T06:07:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jackett/Jackett",
|
||||||
|
"version": "v0.22.2329",
|
||||||
|
"date": "2025-08-24T05:53:12Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "plexguide/Huntarr.io",
|
||||||
|
"version": "8.2.9",
|
||||||
|
"date": "2025-08-24T04:51:15Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jeedom/core",
|
||||||
|
"version": "4.4.19",
|
||||||
|
"date": "2025-08-24T00:27:11Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "steveiliop56/tinyauth",
|
||||||
|
"version": "v3.6.2",
|
||||||
|
"date": "2025-07-17T12:08:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "YunoHost/yunohost",
|
||||||
|
"version": "debian/12.1.15.1",
|
||||||
|
"date": "2025-08-23T20:07:50Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sysadminsmedia/homebox",
|
||||||
|
"version": "v0.21.0",
|
||||||
|
"date": "2025-08-23T18:33:53Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "immich-app/immich",
|
||||||
|
"version": "v1.139.3",
|
||||||
|
"date": "2025-08-23T16:37:46Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "booklore-app/booklore",
|
||||||
|
"version": "v0.38.0",
|
||||||
|
"date": "2025-08-23T14:36:32Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "prometheus/prometheus",
|
||||||
|
"version": "v0.306.0-rc.0",
|
||||||
|
"date": "2025-08-21T13:31:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "TandoorRecipes/recipes",
|
||||||
|
"version": "2.0.3",
|
||||||
|
"date": "2025-08-23T07:08:13Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pocketbase/pocketbase",
|
||||||
|
"version": "v0.29.3",
|
||||||
|
"date": "2025-08-23T06:37:44Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "caddyserver/caddy",
|
||||||
|
"version": "v2.10.2",
|
||||||
|
"date": "2025-08-23T03:10:31Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "paperless-ngx/paperless-ngx",
|
"name": "paperless-ngx/paperless-ngx",
|
||||||
"version": "v2.18.2",
|
"version": "v2.18.2",
|
||||||
"date": "2025-08-22T23:56:41Z"
|
"date": "2025-08-22T23:56:41Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "gtsteffaniak/filebrowser",
|
"name": "ollama/ollama",
|
||||||
"version": "v0.8.1-beta",
|
"version": "v0.11.7-rc0",
|
||||||
"date": "2025-08-22T21:18:11Z"
|
"date": "2025-08-22T23:26:48Z"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "rcourtman/Pulse",
|
|
||||||
"version": "v4.7.0",
|
|
||||||
"date": "2025-08-22T19:58:51Z"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "homarr-labs/homarr",
|
"name": "homarr-labs/homarr",
|
||||||
@@ -20,14 +150,9 @@
|
|||||||
"date": "2025-08-22T19:16:24Z"
|
"date": "2025-08-22T19:16:24Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "immich-app/immich",
|
"name": "keycloak/keycloak",
|
||||||
"version": "v1.139.2",
|
"version": "26.3.3",
|
||||||
"date": "2025-08-22T18:07:48Z"
|
"date": "2025-08-20T10:12:51Z"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msgbyte/tianji",
|
|
||||||
"version": "v1.24.20",
|
|
||||||
"date": "2025-08-22T18:03:58Z"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "tailscale/tailscale",
|
"name": "tailscale/tailscale",
|
||||||
@@ -40,9 +165,9 @@
|
|||||||
"date": "2025-08-22T16:41:23Z"
|
"date": "2025-08-22T16:41:23Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "caddyserver/caddy",
|
"name": "emqx/emqx",
|
||||||
"version": "v2.10.1",
|
"version": "e5.9.2-beta.2",
|
||||||
"date": "2025-08-22T16:14:52Z"
|
"date": "2025-08-22T15:34:17Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "goauthentik/authentik",
|
"name": "goauthentik/authentik",
|
||||||
@@ -74,11 +199,6 @@
|
|||||||
"version": "v12.0.7",
|
"version": "v12.0.7",
|
||||||
"date": "2025-08-22T10:00:28Z"
|
"date": "2025-08-22T10:00:28Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "fuma-nama/fumadocs",
|
|
||||||
"version": "fumadocs-openapi@9.2.2",
|
|
||||||
"date": "2025-08-22T09:35:27Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "syncthing/syncthing",
|
"name": "syncthing/syncthing",
|
||||||
"version": "v2.0.3",
|
"version": "v2.0.3",
|
||||||
@@ -104,16 +224,6 @@
|
|||||||
"version": "v3.5.5",
|
"version": "v3.5.5",
|
||||||
"date": "2025-08-22T06:57:33Z"
|
"date": "2025-08-22T06:57:33Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Jackett/Jackett",
|
|
||||||
"version": "v0.22.2321",
|
|
||||||
"date": "2025-08-22T05:54:29Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "firefly-iii/firefly-iii",
|
|
||||||
"version": "v6.3.2",
|
|
||||||
"date": "2025-08-19T04:08:36Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "traccar/traccar",
|
"name": "traccar/traccar",
|
||||||
"version": "v6.9.1",
|
"version": "v6.9.1",
|
||||||
@@ -124,16 +234,6 @@
|
|||||||
"version": "4.6.0",
|
"version": "4.6.0",
|
||||||
"date": "2025-08-22T02:21:40Z"
|
"date": "2025-08-22T02:21:40Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "jeedom/core",
|
|
||||||
"version": "4.4.19",
|
|
||||||
"date": "2025-08-22T00:27:23Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "steveiliop56/tinyauth",
|
|
||||||
"version": "v3.6.2",
|
|
||||||
"date": "2025-07-17T12:08:03Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "9001/copyparty",
|
"name": "9001/copyparty",
|
||||||
"version": "v1.19.5",
|
"version": "v1.19.5",
|
||||||
@@ -149,11 +249,6 @@
|
|||||||
"version": "nightly",
|
"version": "nightly",
|
||||||
"date": "2025-08-21T19:17:27Z"
|
"date": "2025-08-21T19:17:27Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "keycloak/keycloak",
|
|
||||||
"version": "26.3.3",
|
|
||||||
"date": "2025-08-20T10:12:51Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "HabitRPG/habitica",
|
"name": "HabitRPG/habitica",
|
||||||
"version": "v5.39.0",
|
"version": "v5.39.0",
|
||||||
@@ -189,41 +284,16 @@
|
|||||||
"version": "v1.4.6",
|
"version": "v1.4.6",
|
||||||
"date": "2025-08-21T14:05:58Z"
|
"date": "2025-08-21T14:05:58Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "prometheus/prometheus",
|
|
||||||
"version": "v0.306.0-rc.0",
|
|
||||||
"date": "2025-08-21T13:31:03Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "glpi-project/glpi",
|
"name": "glpi-project/glpi",
|
||||||
"version": "10.0.19",
|
"version": "10.0.19",
|
||||||
"date": "2025-07-16T09:45:14Z"
|
"date": "2025-07-16T09:45:14Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "emqx/emqx",
|
|
||||||
"version": "e6.0.0-M2.202508-rc.1",
|
|
||||||
"date": "2025-08-20T18:02:55Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "semaphoreui/semaphore",
|
"name": "semaphoreui/semaphore",
|
||||||
"version": "v2.16.18",
|
"version": "v2.16.18",
|
||||||
"date": "2025-08-21T08:19:58Z"
|
"date": "2025-08-21T08:19:58Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "morpheus65535/bazarr",
|
|
||||||
"version": "v1.5.3-beta.10",
|
|
||||||
"date": "2025-07-15T06:07:03Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ollama/ollama",
|
|
||||||
"version": "v0.11.6",
|
|
||||||
"date": "2025-08-20T21:00:13Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "YunoHost/yunohost",
|
|
||||||
"version": "debian/12.1.14",
|
|
||||||
"date": "2025-08-20T20:52:44Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "jenkinsci/jenkins",
|
"name": "jenkinsci/jenkins",
|
||||||
"version": "jenkins-2.516.2",
|
"version": "jenkins-2.516.2",
|
||||||
@@ -334,11 +404,6 @@
|
|||||||
"version": "v7.12.0",
|
"version": "v7.12.0",
|
||||||
"date": "2025-08-19T06:57:20Z"
|
"date": "2025-08-19T06:57:20Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "plexguide/Huntarr.io",
|
|
||||||
"version": "8.2.6",
|
|
||||||
"date": "2025-08-18T23:31:31Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "bunkerity/bunkerweb",
|
"name": "bunkerity/bunkerweb",
|
||||||
"version": "v1.6.4",
|
"version": "v1.6.4",
|
||||||
@@ -379,11 +444,6 @@
|
|||||||
"version": "@jupyter-notebook/ui-components@7.5.0-alpha.2",
|
"version": "@jupyter-notebook/ui-components@7.5.0-alpha.2",
|
||||||
"date": "2025-08-18T07:39:41Z"
|
"date": "2025-08-18T07:39:41Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "moghtech/komodo",
|
|
||||||
"version": "v1.19.0",
|
|
||||||
"date": "2025-08-18T01:22:47Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "lldap/lldap",
|
"name": "lldap/lldap",
|
||||||
"version": "v0.6.2",
|
"version": "v0.6.2",
|
||||||
@@ -409,31 +469,6 @@
|
|||||||
"version": "3.3.0",
|
"version": "3.3.0",
|
||||||
"date": "2025-08-17T19:57:11Z"
|
"date": "2025-08-17T19:57:11Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Radarr/Radarr",
|
|
||||||
"version": "v5.26.2.10099",
|
|
||||||
"date": "2025-06-11T20:10:39Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Prowlarr/Prowlarr",
|
|
||||||
"version": "v1.37.0.5076",
|
|
||||||
"date": "2025-06-04T11:04:53Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Lidarr/Lidarr",
|
|
||||||
"version": "v2.12.4.4658",
|
|
||||||
"date": "2025-06-09T17:27:45Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Ombi-app/Ombi",
|
|
||||||
"version": "v4.47.1",
|
|
||||||
"date": "2025-01-05T21:14:23Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "TandoorRecipes/recipes",
|
|
||||||
"version": "2.0.2",
|
|
||||||
"date": "2025-08-17T09:24:37Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "mylar3/mylar3",
|
"name": "mylar3/mylar3",
|
||||||
"version": "v0.8.3",
|
"version": "v0.8.3",
|
||||||
@@ -489,11 +524,6 @@
|
|||||||
"version": "v2.11.7",
|
"version": "v2.11.7",
|
||||||
"date": "2025-08-14T17:14:33Z"
|
"date": "2025-08-14T17:14:33Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "booklore-app/booklore",
|
|
||||||
"version": "v0.37.0",
|
|
||||||
"date": "2025-08-14T00:37:49Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "jellyfin/jellyfin",
|
"name": "jellyfin/jellyfin",
|
||||||
"version": "v10.10.7",
|
"version": "v10.10.7",
|
||||||
@@ -589,11 +619,6 @@
|
|||||||
"version": "v2.28.0",
|
"version": "v2.28.0",
|
||||||
"date": "2025-08-10T23:09:55Z"
|
"date": "2025-08-10T23:09:55Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "pocket-id/pocket-id",
|
|
||||||
"version": "v1.7.0",
|
|
||||||
"date": "2025-08-10T18:10:25Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "ioBroker/ioBroker",
|
"name": "ioBroker/ioBroker",
|
||||||
"version": "1012-08-09",
|
"version": "1012-08-09",
|
||||||
@@ -624,11 +649,6 @@
|
|||||||
"version": "v4.39.6",
|
"version": "v4.39.6",
|
||||||
"date": "2025-08-09T08:11:44Z"
|
"date": "2025-08-09T08:11:44Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "pocketbase/pocketbase",
|
|
||||||
"version": "v0.29.2",
|
|
||||||
"date": "2025-08-09T07:28:08Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "kimai/kimai",
|
"name": "kimai/kimai",
|
||||||
"version": "2.38.0",
|
"version": "2.38.0",
|
||||||
@@ -899,11 +919,6 @@
|
|||||||
"version": "v3.2.5r2",
|
"version": "v3.2.5r2",
|
||||||
"date": "2025-07-21T12:52:26Z"
|
"date": "2025-07-21T12:52:26Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "wavelog/wavelog",
|
|
||||||
"version": "2.0.7",
|
|
||||||
"date": "2025-07-17T15:33:14Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "icereed/paperless-gpt",
|
"name": "icereed/paperless-gpt",
|
||||||
"version": "v0.22.0",
|
"version": "v0.22.0",
|
||||||
@@ -984,11 +999,6 @@
|
|||||||
"version": "release-5.1.2",
|
"version": "release-5.1.2",
|
||||||
"date": "2025-07-02T06:13:16Z"
|
"date": "2025-07-02T06:13:16Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "sysadminsmedia/homebox",
|
|
||||||
"version": "v0.20.2",
|
|
||||||
"date": "2025-07-02T00:37:07Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "hivemq/hivemq-community-edition",
|
"name": "hivemq/hivemq-community-edition",
|
||||||
"version": "2025.4",
|
"version": "2025.4",
|
||||||
@@ -1064,11 +1074,6 @@
|
|||||||
"version": "2.402",
|
"version": "2.402",
|
||||||
"date": "2025-06-17T05:20:42Z"
|
"date": "2025-06-17T05:20:42Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "crafty-controller/crafty-4",
|
|
||||||
"version": "v4.4.11",
|
|
||||||
"date": "2025-06-15T21:41:02Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "TriliumNext/Notes",
|
"name": "TriliumNext/Notes",
|
||||||
"version": "v0.95.0",
|
"version": "v0.95.0",
|
||||||
@@ -1374,11 +1379,6 @@
|
|||||||
"version": "v1.7.3",
|
"version": "v1.7.3",
|
||||||
"date": "2024-11-27T21:26:11Z"
|
"date": "2024-11-27T21:26:11Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "janeczku/calibre-web",
|
|
||||||
"version": "0.6.24",
|
|
||||||
"date": "2024-11-16T06:47:56Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "swizzin/swizzin",
|
"name": "swizzin/swizzin",
|
||||||
"version": "stable",
|
"version": "stable",
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ cat <<EOF >/opt/booklore_storage/.env
|
|||||||
DATABASE_URL=jdbc:mariadb://localhost:3306/$DB_NAME
|
DATABASE_URL=jdbc:mariadb://localhost:3306/$DB_NAME
|
||||||
DATABASE_USERNAME=$DB_USER
|
DATABASE_USERNAME=$DB_USER
|
||||||
DATABASE_PASSWORD=$DB_PASS
|
DATABASE_PASSWORD=$DB_PASS
|
||||||
|
BOOKLORE_PORT=6060
|
||||||
|
|
||||||
BOOKLORE_DATA_PATH=/opt/booklore_storage/data
|
BOOKLORE_DATA_PATH=/opt/booklore_storage/data
|
||||||
BOOKLORE_BOOKS_PATH=/opt/booklore_storage/books
|
BOOKLORE_BOOKS_PATH=/opt/booklore_storage/books
|
||||||
@@ -75,6 +76,7 @@ msg_info "Configure Nginx"
|
|||||||
rm -rf /usr/share/nginx/html
|
rm -rf /usr/share/nginx/html
|
||||||
ln -s /opt/booklore/booklore-ui/dist/booklore/browser /usr/share/nginx/html
|
ln -s /opt/booklore/booklore-ui/dist/booklore/browser /usr/share/nginx/html
|
||||||
cp /opt/booklore/nginx.conf /etc/nginx/nginx.conf
|
cp /opt/booklore/nginx.conf /etc/nginx/nginx.conf
|
||||||
|
sed -i "s/listen \${BOOKLORE_PORT};/listen 6060;/" /etc/nginx/nginx.conf
|
||||||
systemctl restart nginx
|
systemctl restart nginx
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
|
|||||||
+42
-46
@@ -30,8 +30,12 @@ $STD apt-get install --no-install-recommends -y \
|
|||||||
autoconf \
|
autoconf \
|
||||||
build-essential \
|
build-essential \
|
||||||
python3-dev \
|
python3-dev \
|
||||||
|
automake \
|
||||||
cmake \
|
cmake \
|
||||||
jq \
|
jq \
|
||||||
|
libtool \
|
||||||
|
libltdl-dev \
|
||||||
|
libgdk-pixbuf-2.0-dev \
|
||||||
libbrotli-dev \
|
libbrotli-dev \
|
||||||
libde265-dev \
|
libde265-dev \
|
||||||
libexif-dev \
|
libexif-dev \
|
||||||
@@ -39,37 +43,28 @@ $STD apt-get install --no-install-recommends -y \
|
|||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libgsf-1-dev \
|
libgsf-1-dev \
|
||||||
libjpeg62-turbo-dev \
|
libjpeg62-turbo-dev \
|
||||||
librsvg2-dev \
|
|
||||||
libspng-dev \
|
libspng-dev \
|
||||||
|
liblcms2-dev \
|
||||||
|
libopenexr-dev \
|
||||||
|
libgif-dev \
|
||||||
|
librsvg2-dev \
|
||||||
|
libexpat1 \
|
||||||
|
libgcc-s1 \
|
||||||
|
libgomp1 \
|
||||||
|
liblqr-1-0 \
|
||||||
|
libltdl7 \
|
||||||
|
libmimalloc2.0 \
|
||||||
|
libopenjp2-7 \
|
||||||
meson \
|
meson \
|
||||||
ninja-build \
|
ninja-build \
|
||||||
pkg-config \
|
pkg-config \
|
||||||
cpanminus \
|
cpanminus \
|
||||||
libde265-0 \
|
|
||||||
libexif12 \
|
|
||||||
libexpat1 \
|
|
||||||
libgcc-s1 \
|
|
||||||
libglib2.0-0 \
|
|
||||||
libgomp1 \
|
|
||||||
libgsf-1-114 \
|
|
||||||
liblcms2-dev \
|
|
||||||
liblqr-1-0 \
|
|
||||||
libltdl7 \
|
|
||||||
libmimalloc2.0 \
|
|
||||||
libopenexr-dev \
|
|
||||||
libgif-dev \
|
|
||||||
libopenjp2-7 \
|
|
||||||
librsvg2-2 \
|
|
||||||
libspng0 \
|
|
||||||
mesa-utils \
|
mesa-utils \
|
||||||
mesa-va-drivers \
|
mesa-va-drivers \
|
||||||
mesa-vulkan-drivers \
|
mesa-vulkan-drivers \
|
||||||
ocl-icd-libopencl1 \
|
ocl-icd-libopencl1 \
|
||||||
tini \
|
tini \
|
||||||
libaom-dev \
|
|
||||||
zlib1g
|
zlib1g
|
||||||
$STD apt-get install -y \
|
|
||||||
libgdk-pixbuf-2.0-dev librsvg2-dev libtool
|
|
||||||
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg
|
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg
|
||||||
DPKG_ARCHITECTURE="$(dpkg --print-architecture)"
|
DPKG_ARCHITECTURE="$(dpkg --print-architecture)"
|
||||||
export DPKG_ARCHITECTURE
|
export DPKG_ARCHITECTURE
|
||||||
@@ -111,7 +106,8 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
|||||||
msg_ok "Installed OpenVINO dependencies"
|
msg_ok "Installed OpenVINO dependencies"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
NODE_VERSION="22" setup_nodejs
|
PNPM_VERSION="$(curl -fsSL "https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/package.json" | jq -r '.packageManager | split("@")[1]')"
|
||||||
|
NODE_VERSION="22" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs
|
||||||
PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql
|
PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql
|
||||||
|
|
||||||
msg_info "Setting up Postgresql Database"
|
msg_info "Setting up Postgresql Database"
|
||||||
@@ -149,7 +145,8 @@ $STD apt-get install -t testing --no-install-recommends -y \
|
|||||||
libhwy1t64 \
|
libhwy1t64 \
|
||||||
libdav1d-dev \
|
libdav1d-dev \
|
||||||
libhwy-dev \
|
libhwy-dev \
|
||||||
libwebp-dev
|
libwebp-dev \
|
||||||
|
libaom-dev
|
||||||
if [[ -f ~/.openvino ]]; then
|
if [[ -f ~/.openvino ]]; then
|
||||||
$STD apt-get install -t testing -y patchelf
|
$STD apt-get install -t testing -y patchelf
|
||||||
fi
|
fi
|
||||||
@@ -281,36 +278,39 @@ APP_DIR="${INSTALL_DIR}/app"
|
|||||||
ML_DIR="${APP_DIR}/machine-learning"
|
ML_DIR="${APP_DIR}/machine-learning"
|
||||||
GEO_DIR="${INSTALL_DIR}/geodata"
|
GEO_DIR="${INSTALL_DIR}/geodata"
|
||||||
mkdir -p "$INSTALL_DIR"
|
mkdir -p "$INSTALL_DIR"
|
||||||
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${ML_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.138.1" "$SRC_DIR"
|
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.139.2" "$SRC_DIR"
|
||||||
|
|
||||||
msg_info "Installing ${APPLICATION} (more patience please)"
|
msg_info "Installing ${APPLICATION} (more patience please)"
|
||||||
|
|
||||||
cd "$SRC_DIR"/server
|
cd "$SRC_DIR"/server
|
||||||
$STD npm install -g node-gyp node-pre-gyp
|
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||||
$STD npm ci
|
export CI=1
|
||||||
$STD npm run build
|
corepack enable
|
||||||
$STD npm prune --omit=dev --omit=optional
|
|
||||||
cp -a {bin,dist,node_modules,resources,package*.json} "$APP_DIR"/
|
# server build
|
||||||
cp package.json "$APP_DIR"/bin
|
$STD pnpm --filter immich --frozen-lockfile build
|
||||||
|
$STD pnpm --filter immich --frozen-lockfile --prod --no-optional deploy "$APP_DIR"
|
||||||
|
cp "$APP_DIR"/package.json "$APP_DIR"/bin
|
||||||
sed -i 's|^start|./start|' "$APP_DIR"/bin/immich-admin
|
sed -i 's|^start|./start|' "$APP_DIR"/bin/immich-admin
|
||||||
cd "$SRC_DIR"/open-api/typescript-sdk
|
|
||||||
$STD npm ci
|
# openapi & web build
|
||||||
$STD npm run build
|
|
||||||
cd "$SRC_DIR"/web
|
|
||||||
$STD npm ci
|
|
||||||
$STD npm run build
|
|
||||||
cd "$SRC_DIR"
|
cd "$SRC_DIR"
|
||||||
|
export SHARP_FORCE_GLOBAL_LIBVIPS=true
|
||||||
|
$STD pnpm --filter @immich/sdk --filter immich-web --frozen-lockfile --force install
|
||||||
|
$STD pnpm --filter @immich/sdk --filter immich-web build
|
||||||
cp -a web/build "$APP_DIR"/www
|
cp -a web/build "$APP_DIR"/www
|
||||||
cp LICENSE "$APP_DIR"
|
cp LICENSE "$APP_DIR"
|
||||||
cd "$APP_DIR"
|
|
||||||
export SHARP_FORCE_GLOBAL_LIBVIPS=true
|
# cli build
|
||||||
$STD npm install sharp
|
$STD pnpm --filter @immich/sdk --filter @immich/cli --frozen-lockfile install
|
||||||
rm -rf "$APP_DIR"/node_modules/@img/sharp-{libvips*,linuxmusl-x64}
|
$STD pnpm --filter @immich/sdk --filter @immich/cli build
|
||||||
|
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
|
||||||
msg_ok "Installed Immich Server and Web Components"
|
msg_ok "Installed Immich Server and Web Components"
|
||||||
|
|
||||||
cd "$SRC_DIR"/machine-learning
|
cd "$SRC_DIR"/machine-learning
|
||||||
|
mkdir -p "$ML_DIR"
|
||||||
export VIRTUAL_ENV="${ML_DIR}/ml-venv"
|
export VIRTUAL_ENV="${ML_DIR}/ml-venv"
|
||||||
$STD uv venv "$VIRTUAL_ENV"
|
$STD uv venv "$VIRTUAL_ENV"
|
||||||
if [[ -f ~/.openvino ]]; then
|
if [[ -f ~/.openvino ]]; then
|
||||||
@@ -337,10 +337,6 @@ sed -i "s@\"/cache\"@\"$INSTALL_DIR/cache\"@g" "$ML_DIR"/immich_ml/config.py
|
|||||||
ln -s "$UPLOAD_DIR" "$APP_DIR"/upload
|
ln -s "$UPLOAD_DIR" "$APP_DIR"/upload
|
||||||
ln -s "$UPLOAD_DIR" "$ML_DIR"/upload
|
ln -s "$UPLOAD_DIR" "$ML_DIR"/upload
|
||||||
|
|
||||||
msg_info "Installing Immich CLI"
|
|
||||||
$STD npm i -g @immich/cli
|
|
||||||
msg_ok "Installed Immich CLI"
|
|
||||||
|
|
||||||
msg_info "Installing GeoNames data"
|
msg_info "Installing GeoNames data"
|
||||||
cd "$GEO_DIR"
|
cd "$GEO_DIR"
|
||||||
URL_LIST=(
|
URL_LIST=(
|
||||||
@@ -400,10 +396,10 @@ cat <<EOF >"$APP_DIR"/bin/start.sh
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -a
|
set -a
|
||||||
. "$INSTALL_DIR"/.env
|
. ${INSTALL_DIR}/.env
|
||||||
set +a
|
set +a
|
||||||
|
|
||||||
/usr/bin/node "$APP_DIR"/dist/main.js "\$@"
|
/usr/bin/node ${APP_DIR}/dist/main.js "\$@"
|
||||||
EOF
|
EOF
|
||||||
chmod +x "$ML_DIR"/ml_start.sh "$APP_DIR"/bin/start.sh
|
chmod +x "$ML_DIR"/ml_start.sh "$APP_DIR"/bin/start.sh
|
||||||
cat <<EOF >/etc/systemd/system/"${APPLICATION}"-web.service
|
cat <<EOF >/etc/systemd/system/"${APPLICATION}"-web.service
|
||||||
|
|||||||
@@ -16,22 +16,22 @@ update_os
|
|||||||
msg_info "Installing Kasm Workspaces"
|
msg_info "Installing Kasm Workspaces"
|
||||||
KASM_VERSION=$(curl -fsSL 'https://www.kasmweb.com/downloads' | grep -o 'https://kasm-static-content.s3.amazonaws.com/kasm_release_[^"]*\.tar\.gz' | head -n 1 | sed -E 's/.*release_(.*)\.tar\.gz/\1/')
|
KASM_VERSION=$(curl -fsSL 'https://www.kasmweb.com/downloads' | grep -o 'https://kasm-static-content.s3.amazonaws.com/kasm_release_[^"]*\.tar\.gz' | head -n 1 | sed -E 's/.*release_(.*)\.tar\.gz/\1/')
|
||||||
curl -fsSL -o "/opt/kasm_release_${KASM_VERSION}.tar.gz" "https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz"
|
curl -fsSL -o "/opt/kasm_release_${KASM_VERSION}.tar.gz" "https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz"
|
||||||
|
|
||||||
cd /opt
|
cd /opt
|
||||||
tar -xf "kasm_release_${KASM_VERSION}.tar.gz"
|
tar -xf "kasm_release_${KASM_VERSION}.tar.gz"
|
||||||
chmod +x /opt/kasm_release/install.sh
|
chmod +x /opt/kasm_release/install.sh
|
||||||
printf 'y\ny\ny\n4\n' | bash /opt/kasm_release/install.sh > ~/kasm-install.output 2>&1
|
printf 'y\ny\ny\n4\n' | bash /opt/kasm_release/install.sh > ~/kasm-install.output 2>&1
|
||||||
cat ~/kasm-install.output | grep -A 20 -i "credentials\|login\|password\|admin" | sed '1i Kasm-Workspaces-Credentials' >~/kasm.creds
|
awk '
|
||||||
|
/^Kasm UI Login Credentials$/ {capture=1}
|
||||||
|
capture {print}
|
||||||
|
/^Service Registration Token$/ {in_token=1}
|
||||||
|
in_token && /^-+$/ {dash_count++}
|
||||||
|
in_token && dash_count==2 {exit}
|
||||||
|
' ~/kasm-install.output > ~/kasm.creds
|
||||||
msg_ok "Installed Kasm Workspaces"
|
msg_ok "Installed Kasm Workspaces"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Displaying Kasm Credentials"
|
|
||||||
cat ~/kasm.creds
|
|
||||||
msg_ok "Kasm Credentials displayed"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -f /opt/kasm_release_${KASM_VERSION}.tar.gz
|
rm -f /opt/kasm_release_${KASM_VERSION}.tar.gz
|
||||||
rm -f ~/kasm-install.output
|
rm -f ~/kasm-install.output
|
||||||
|
|||||||
@@ -21,18 +21,13 @@ $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 "pf2etools" "Pf2eToolsOrg/Pf2eTools" "tarball" "latest" "/opt/Pf2eTools"
|
||||||
|
|
||||||
msg_info "Setup Pf2eTools"
|
msg_info "Configuring Pf2eTools"
|
||||||
cd /opt
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Pf2eToolsOrg/Pf2eTools/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
curl -fsSL "https://github.com/Pf2eToolsOrg/Pf2eTools/archive/refs/tags/${RELEASE}.zip" -o "${RELEASE}.zip"
|
|
||||||
$STD unzip "${RELEASE}.zip"
|
|
||||||
mv "Pf2eTools-${RELEASE:1}" /opt/Pf2eTools
|
|
||||||
cd /opt/Pf2eTools
|
cd /opt/Pf2eTools
|
||||||
$STD npm install
|
$STD npm install
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
echo "${RELEASE}" >/opt/Pf2eTools_version.txt
|
msg_ok "Configured Pf2eTools"
|
||||||
msg_ok "Set up Pf2eTools"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >>/etc/apache2/apache2.conf
|
cat <<EOF >>/etc/apache2/apache2.conf
|
||||||
@@ -49,7 +44,6 @@ chmod -R 755 "/opt/Pf2eTools"
|
|||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
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"
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ msg_info "Installing Prometheus"
|
|||||||
mkdir -p /etc/prometheus
|
mkdir -p /etc/prometheus
|
||||||
mkdir -p /var/lib/prometheus
|
mkdir -p /var/lib/prometheus
|
||||||
mv /usr/local/bin/prometheus.yml /etc/prometheus/prometheus.yml
|
mv /usr/local/bin/prometheus.yml /etc/prometheus/prometheus.yml
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
msg_ok "Installed Prometheus"
|
msg_ok "Installed Prometheus"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@@ -17,23 +17,19 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt-get install -y sqlite3
|
$STD apt-get install -y sqlite3
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Prowlarr"
|
fetch_and_deploy_gh_release "prowlarr" "Prowlarr/Prowlarr" "prebuild" "latest" "/opt/Prowlarr" "Prowlarr.master*linux-core-x64.tar.gz"
|
||||||
temp_file="$(mktemp)"
|
|
||||||
|
msg_info "Configuring Prowlarr"
|
||||||
mkdir -p /var/lib/prowlarr/
|
mkdir -p /var/lib/prowlarr/
|
||||||
chmod 775 /var/lib/prowlarr/
|
chmod 775 /var/lib/prowlarr/ /opt/Prowlarr
|
||||||
cd /var/lib/prowlarr/
|
msg_ok "Configured Prowlarr"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Prowlarr/Prowlarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/Prowlarr/Prowlarr/releases/download/v${RELEASE}/Prowlarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
|
|
||||||
$STD tar -xvzf "$temp_file"
|
|
||||||
mv Prowlarr /opt
|
|
||||||
chmod 775 /opt/Prowlarr
|
|
||||||
msg_ok "Installed Prowlarr"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/prowlarr.service
|
cat <<EOF >/etc/systemd/system/prowlarr.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Prowlarr Daemon
|
Description=Prowlarr Daemon
|
||||||
After=syslog.target network.target
|
After=syslog.target network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
UMask=0002
|
UMask=0002
|
||||||
Type=simple
|
Type=simple
|
||||||
@@ -41,6 +37,7 @@ ExecStart=/opt/Prowlarr/Prowlarr -nobrowser -data=/var/lib/prowlarr/
|
|||||||
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
|
||||||
@@ -51,7 +48,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -f "$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"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ update_os
|
|||||||
fetch_and_deploy_gh_release "qbittorrent" "userdocs/qbittorrent-nox-static" "singlefile" "latest" "/opt/qbittorrent" "x86_64-qbittorrent-nox"
|
fetch_and_deploy_gh_release "qbittorrent" "userdocs/qbittorrent-nox-static" "singlefile" "latest" "/opt/qbittorrent" "x86_64-qbittorrent-nox"
|
||||||
|
|
||||||
msg_info "Setup qBittorrent-nox"
|
msg_info "Setup qBittorrent-nox"
|
||||||
mv /opt/qbittorrent/x86_64-qbittorrent-nox /opt/qbittorrent/qbittorrent-nox
|
mv /opt/qbittorrent/qbittorrent /opt/qbittorrent/qbittorrent-nox
|
||||||
mkdir -p ~/.config/qBittorrent/
|
mkdir -p ~/.config/qBittorrent/
|
||||||
cat <<EOF >~/.config/qBittorrent/qBittorrent.conf
|
cat <<EOF >~/.config/qBittorrent/qBittorrent.conf
|
||||||
[LegalNotice]
|
[LegalNotice]
|
||||||
|
|||||||
@@ -17,23 +17,19 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt-get install -y sqlite3
|
$STD apt-get install -y sqlite3
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Radarr"
|
fetch_and_deploy_gh_release "Radarr" "Radarr/Radarr" "prebuild" "latest" "/opt/Radarr" "Radarr.master*linux-core-x64.tar.gz"
|
||||||
temp_file="$(mktemp)"
|
|
||||||
|
msg_info "Configuring Radarr"
|
||||||
mkdir -p /var/lib/radarr/
|
mkdir -p /var/lib/radarr/
|
||||||
chmod 775 /var/lib/radarr/
|
chmod 775 /var/lib/radarr/ /opt/Radarr/
|
||||||
cd /var/lib/radarr/
|
msg_ok "Configured Radarr"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Radarr/Radarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/Radarr/Radarr/releases/download/v${RELEASE}/Radarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
|
|
||||||
$STD tar -xvzf "$temp_file"
|
|
||||||
mv Radarr /opt
|
|
||||||
chmod 775 /opt/Radarr
|
|
||||||
msg_ok "Installed Radarr"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/radarr.service
|
cat <<EOF >/etc/systemd/system/radarr.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Radarr Daemon
|
Description=Radarr Daemon
|
||||||
After=syslog.target network.target
|
After=syslog.target network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
UMask=0002
|
UMask=0002
|
||||||
Type=simple
|
Type=simple
|
||||||
@@ -41,6 +37,7 @@ ExecStart=/opt/Radarr/Radarr -nobrowser -data=/var/lib/radarr/
|
|||||||
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
|
||||||
@@ -51,7 +48,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"
|
||||||
|
|||||||
@@ -15,12 +15,13 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
composer \
|
|
||||||
git \
|
git \
|
||||||
nginx \
|
nginx
|
||||||
php8.2-{bcmath,common,ctype,ldap,curl,fileinfo,fpm,gd,iconv,intl,mbstring,mysql,soap,xml,xsl,zip,cli}
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
PHP_VERSION="8.3" PHP_MODULE="common,ctype,ldap,fileinfo,iconv,mysql,soap,xsl" PHP_FPM="YES" setup_php
|
||||||
|
setup_composer
|
||||||
|
fetch_and_deploy_gh_release "snipe-it" "snipe/snipe-it" "tarball"
|
||||||
setup_mariadb
|
setup_mariadb
|
||||||
|
|
||||||
msg_info "Setting up database"
|
msg_info "Setting up database"
|
||||||
@@ -38,12 +39,7 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
|
|||||||
} >>~/snipeit.creds
|
} >>~/snipeit.creds
|
||||||
msg_ok "Set up database"
|
msg_ok "Set up database"
|
||||||
|
|
||||||
msg_info "Installing Snipe-IT"
|
msg_info "Configuring Snipe-IT"
|
||||||
temp_file=$(mktemp)
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf $temp_file
|
|
||||||
mv snipe-it-${RELEASE} /opt/snipe-it
|
|
||||||
cd /opt/snipe-it
|
cd /opt/snipe-it
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
IPADDRESS=$(hostname -I | awk '{print $1}')
|
IPADDRESS=$(hostname -I | awk '{print $1}')
|
||||||
@@ -56,11 +52,9 @@ sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \
|
|||||||
chown -R www-data: /opt/snipe-it
|
chown -R www-data: /opt/snipe-it
|
||||||
chmod -R 755 /opt/snipe-it
|
chmod -R 755 /opt/snipe-it
|
||||||
export COMPOSER_ALLOW_SUPERUSER=1
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
#$STD composer update --no-plugins --no-scripts
|
|
||||||
$STD composer install --no-dev --optimize-autoloader --no-interaction
|
$STD composer install --no-dev --optimize-autoloader --no-interaction
|
||||||
$STD php artisan key:generate --force
|
$STD php artisan key:generate --force
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
msg_ok "Configured SnipeIT"
|
||||||
msg_ok "Installed SnipeIT"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/nginx/conf.d/snipeit.conf
|
cat <<EOF >/etc/nginx/conf.d/snipeit.conf
|
||||||
@@ -84,15 +78,13 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
systemctl reload nginx
|
systemctl reload nginx
|
||||||
msg_ok "Configured Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -f $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"
|
||||||
|
|||||||
@@ -13,16 +13,19 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Syncthing"
|
msg_info "Setting up Syncthing repo"
|
||||||
curl -fsSL -o /usr/share/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
|
mkdir -p /etc/apt/keyrings
|
||||||
sh -c 'echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" > /etc/apt/sources.list.d/syncthing.list'
|
curl -fsSL "https://syncthing.net/release-key.gpg" -o /etc/apt/keyrings/syncthing-archive-keyring.gpg
|
||||||
|
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" >/etc/apt/sources.list.d/syncthing.list
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
|
msg_ok "Set up Syncthing repo"
|
||||||
|
|
||||||
|
msg_info "Installing Syncthing"
|
||||||
$STD apt-get install -y syncthing
|
$STD apt-get install -y syncthing
|
||||||
$STD systemctl enable syncthing@root.service
|
systemctl enable -q --now syncthing@root
|
||||||
systemctl start syncthing@root.service
|
|
||||||
sleep 5
|
sleep 5
|
||||||
sed -i "{s/127.0.0.1:8384/0.0.0.0:8384/g}" /root/.local/state/syncthing/config.xml
|
sed -i "{s/127.0.0.1:8384/0.0.0.0:8384/g}" /root/.local/state/syncthing/config.xml
|
||||||
systemctl restart syncthing@root.service
|
systemctl restart syncthing@root
|
||||||
msg_ok "Installed Syncthing"
|
msg_ok "Installed Syncthing"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
Reference in New Issue
Block a user