mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-02-22 04:55:55 +01:00
Compare commits
24 Commits
fix/docker
...
add-script
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a408de7ff | ||
|
|
802cbdd22b | ||
|
|
4f9490184b | ||
|
|
b5288692cd | ||
|
|
8cc2c7c025 | ||
|
|
85c5d54a12 | ||
|
|
1273778dc2 | ||
|
|
2a7fa5addb | ||
|
|
116888201c | ||
|
|
a3d9ea7530 | ||
|
|
903e63d758 | ||
|
|
901b90f956 | ||
|
|
8795cfb03f | ||
|
|
ae834cb39e | ||
|
|
7dbd1fdc36 | ||
|
|
300f8c80e8 | ||
|
|
d969969c2d | ||
|
|
f6558953bc | ||
|
|
b9f4e6c8bd | ||
|
|
54031b56d6 | ||
|
|
c68b9b6a40 | ||
|
|
f4c10ed75d | ||
|
|
097ee57598 | ||
|
|
120aefbdfe |
31
CHANGELOG.md
31
CHANGELOG.md
@@ -404,6 +404,21 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
</details>
|
||||
|
||||
## 2026-02-21
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Pangolin: restore config before db migration, use drizzle-kit push [@MickLesk](https://github.com/MickLesk) ([#12130](https://github.com/community-scripts/ProxmoxVE/pull/12130))
|
||||
- PLANKA: fix msg's [@danielalanbates](https://github.com/danielalanbates) ([#12143](https://github.com/community-scripts/ProxmoxVE/pull/12143))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- MediaManager: Update documentation URL [@tremor021](https://github.com/tremor021) ([#12154](https://github.com/community-scripts/ProxmoxVE/pull/12154))
|
||||
|
||||
## 2026-02-20
|
||||
|
||||
### 🆕 New Scripts
|
||||
@@ -411,6 +426,22 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
- Sure ([#12114](https://github.com/community-scripts/ProxmoxVE/pull/12114))
|
||||
- Calibre-Web ([#12115](https://github.com/community-scripts/ProxmoxVE/pull/12115))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Zammad: fix Elasticsearch JVM config and add daemon-reload [@MickLesk](https://github.com/MickLesk) ([#12125](https://github.com/community-scripts/ProxmoxVE/pull/12125))
|
||||
- Huntarr: add build-essential for native pip dependencies [@MickLesk](https://github.com/MickLesk) ([#12126](https://github.com/community-scripts/ProxmoxVE/pull/12126))
|
||||
- Dokploy: fix update function [@vhsdream](https://github.com/vhsdream) ([#12116](https://github.com/community-scripts/ProxmoxVE/pull/12116))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- recyclarr: adjust paths for v8.0 breaking changes [@MickLesk](https://github.com/MickLesk) ([#12129](https://github.com/community-scripts/ProxmoxVE/pull/12129))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Planka: migrate data paths to new v2 directory structure [@MickLesk](https://github.com/MickLesk) ([#12128](https://github.com/community-scripts/ProxmoxVE/pull/12128))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
@@ -30,7 +30,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
msg_info "Updating Dokploy"
|
||||
$STD bash <(curl -sSL https://dokploy.com/install.sh)
|
||||
curl -sSL https://dokploy.com/install.sh | $STD bash -s update
|
||||
msg_ok "Updated Dokploy"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
|
||||
120
ct/gramps-web.sh
Normal file
120
ct/gramps-web.sh
Normal file
@@ -0,0 +1,120 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: GitHub Copilot
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.grampsweb.org/
|
||||
|
||||
APP="gramps-web"
|
||||
var_tags="${var_tags:-genealogy;family;collaboration}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-20}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
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/gramps-web-api ]]; then
|
||||
msg_error "No Gramps Web API Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [[ ! -d /opt/gramps-web/frontend ]]; then
|
||||
msg_error "No Gramps Web Frontend Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [[ ! -f /opt/gramps-web/config/config.cfg ]]; then
|
||||
msg_error "No Gramps Web Configuration Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
|
||||
UPDATE_AVAILABLE=0
|
||||
if check_for_gh_release "gramps-web-api" "gramps-project/gramps-web-api"; then
|
||||
UPDATE_AVAILABLE=1
|
||||
fi
|
||||
if check_for_gh_release "gramps-web" "gramps-project/gramps-web"; then
|
||||
UPDATE_AVAILABLE=1
|
||||
fi
|
||||
|
||||
if [[ "$UPDATE_AVAILABLE" == "1" ]]; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop gramps-web
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
if apt-cache show libgirepository1.0-dev >/dev/null 2>&1; then
|
||||
GI_DEV_PACKAGE="libgirepository1.0-dev"
|
||||
elif apt-cache show libgirepository-2.0-dev >/dev/null 2>&1; then
|
||||
GI_DEV_PACKAGE="libgirepository-2.0-dev"
|
||||
else
|
||||
msg_error "No supported girepository development package found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Ensuring Build Dependencies"
|
||||
$STD apt install -y \
|
||||
gobject-introspection \
|
||||
libcairo2-dev \
|
||||
libglib2.0-dev \
|
||||
pkg-config \
|
||||
"$GI_DEV_PACKAGE"
|
||||
msg_ok "Ensured Build Dependencies"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gramps-web-api" "gramps-project/gramps-web-api" "tarball" "latest" "/opt/gramps-web-api"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gramps-web" "gramps-project/gramps-web" "tarball" "latest" "/opt/gramps-web/frontend"
|
||||
|
||||
msg_info "Updating Gramps Web API"
|
||||
$STD uv venv -c -p python3.12 /opt/gramps-web/venv
|
||||
source /opt/gramps-web/venv/bin/activate
|
||||
$STD uv pip install --no-cache-dir --upgrade pip setuptools wheel
|
||||
$STD uv pip install --no-cache-dir gunicorn
|
||||
$STD uv pip install --no-cache-dir /opt/gramps-web-api
|
||||
msg_ok "Updated Gramps Web API"
|
||||
|
||||
msg_info "Updating Gramps Web Frontend"
|
||||
cd /opt/gramps-web/frontend
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
corepack enable
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
msg_ok "Updated Gramps Web Frontend"
|
||||
|
||||
msg_info "Applying Database Migration"
|
||||
cd /opt/gramps-web-api
|
||||
GRAMPS_API_CONFIG=/opt/gramps-web/config/config.cfg \
|
||||
ALEMBIC_CONFIG=/opt/gramps-web-api/alembic.ini \
|
||||
GRAMPSHOME=/opt/gramps-web/data/gramps \
|
||||
GRAMPS_DATABASE_PATH=/opt/gramps-web/data/gramps/grampsdb \
|
||||
$STD /opt/gramps-web/venv/bin/python3 -m gramps_webapi user migrate
|
||||
msg_ok "Applied Database Migration"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start gramps-web
|
||||
msg_ok "Started Service"
|
||||
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}:5000${CL}"
|
||||
6
ct/headers/calibre-web
Normal file
6
ct/headers/calibre-web
Normal file
@@ -0,0 +1,6 @@
|
||||
___ __ __
|
||||
_________ _/ (_) /_ ________ _ _____ / /_
|
||||
/ ___/ __ `/ / / __ \/ ___/ _ \_____| | /| / / _ \/ __ \
|
||||
/ /__/ /_/ / / / /_/ / / / __/_____/ |/ |/ / __/ /_/ /
|
||||
\___/\__,_/_/_/_.___/_/ \___/ |__/|__/\___/_.___/
|
||||
|
||||
6
ct/headers/sure
Normal file
6
ct/headers/sure
Normal file
@@ -0,0 +1,6 @@
|
||||
_____
|
||||
/ ___/__ __________
|
||||
\__ \/ / / / ___/ _ \
|
||||
___/ / /_/ / / / __/
|
||||
/____/\__,_/_/ \___/
|
||||
|
||||
@@ -35,7 +35,8 @@ function update_script() {
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop huntarr
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
|
||||
ensure_dependencies build-essential
|
||||
fetch_and_deploy_gh_release "huntarr" "plexguide/Huntarr.io" "tarball"
|
||||
|
||||
msg_info "Updating Huntarr"
|
||||
|
||||
@@ -51,7 +51,6 @@ function update_script() {
|
||||
$STD npm run db:generate
|
||||
$STD npm run build
|
||||
$STD npm run build:cli
|
||||
$STD npm run db:push
|
||||
cp -R .next/standalone ./
|
||||
chmod +x ./dist/cli.mjs
|
||||
cp server/db/names.json ./dist/names.json
|
||||
@@ -64,6 +63,11 @@ function update_script() {
|
||||
rm -f /opt/pangolin_config_backup.tar.gz
|
||||
msg_ok "Restored config"
|
||||
|
||||
msg_info "Running database migrations"
|
||||
cd /opt/pangolin
|
||||
ENVIRONMENT=prod $STD npx drizzle-kit push --config drizzle.sqlite.config.ts
|
||||
msg_ok "Ran database migrations"
|
||||
|
||||
msg_info "Updating Badger plugin version"
|
||||
BADGER_VERSION=$(get_latest_github_release "fosrl/badger" "false")
|
||||
sed -i "s/version: \"v[0-9.]*\"/version: \"$BADGER_VERSION\"/g" /opt/pangolin/config/traefik/traefik_config.yml
|
||||
|
||||
31
ct/planka.sh
31
ct/planka.sh
@@ -31,16 +31,24 @@ function update_script() {
|
||||
if check_for_gh_release "planka" "plankanban/planka"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop planka
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up data"
|
||||
BK="/opt/planka-backup"
|
||||
mkdir -p "$BK"/{favicons,user-avatars,background-images,attachments}
|
||||
[ -f /opt/planka/.env ] && mv /opt/planka/.env "$BK"/
|
||||
[ -d /opt/planka/public/favicons ] && cp -a /opt/planka/public/favicons/. "$BK/favicons/"
|
||||
[ -d /opt/planka/public/user-avatars ] && cp -a /opt/planka/public/user-avatars/. "$BK/user-avatars/"
|
||||
[ -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/"
|
||||
# Support both old (pre-v2) and new (v2) directory layouts
|
||||
if [ -d /opt/planka/data/protected ]; then
|
||||
[ -d /opt/planka/data/protected/favicons ] && cp -a /opt/planka/data/protected/favicons/. "$BK/favicons/"
|
||||
[ -d /opt/planka/data/protected/user-avatars ] && cp -a /opt/planka/data/protected/user-avatars/. "$BK/user-avatars/"
|
||||
[ -d /opt/planka/data/protected/background-images ] && cp -a /opt/planka/data/protected/background-images/. "$BK/background-images/"
|
||||
[ -d /opt/planka/data/private/attachments ] && cp -a /opt/planka/data/private/attachments/. "$BK/attachments/"
|
||||
else
|
||||
[ -d /opt/planka/public/favicons ] && cp -a /opt/planka/public/favicons/. "$BK/favicons/"
|
||||
[ -d /opt/planka/public/user-avatars ] && cp -a /opt/planka/public/user-avatars/. "$BK/user-avatars/"
|
||||
[ -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/"
|
||||
fi
|
||||
rm -rf /opt/planka
|
||||
msg_ok "Backed up data"
|
||||
|
||||
@@ -53,15 +61,16 @@ function update_script() {
|
||||
|
||||
msg_info "Restoring data"
|
||||
[ -f "$BK/.env" ] && mv "$BK/.env" /opt/planka/.env
|
||||
mkdir -p /opt/planka/public/{favicons,user-avatars,background-images} /opt/planka/private/attachments
|
||||
[ -d "$BK/favicons" ] && cp -a "$BK/favicons/." /opt/planka/public/favicons/
|
||||
[ -d "$BK/user-avatars" ] && cp -a "$BK/user-avatars/." /opt/planka/public/user-avatars/
|
||||
[ -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/
|
||||
# Planka v2 uses unified data directory structure
|
||||
mkdir -p /opt/planka/data/protected/{favicons,user-avatars,background-images} /opt/planka/data/private/attachments
|
||||
[ -d "$BK/favicons" ] && cp -a "$BK/favicons/." /opt/planka/data/protected/favicons/
|
||||
[ -d "$BK/user-avatars" ] && cp -a "$BK/user-avatars/." /opt/planka/data/protected/user-avatars/
|
||||
[ -d "$BK/background-images" ] && cp -a "$BK/background-images/." /opt/planka/data/protected/background-images/
|
||||
[ -d "$BK/attachments" ] && cp -a "$BK/attachments/." /opt/planka/data/private/attachments/
|
||||
rm -rf "$BK"
|
||||
msg_ok "Restored data"
|
||||
|
||||
msg_ok "Migrate Database"
|
||||
msg_info "Migrate Database"
|
||||
cd /opt/planka
|
||||
$STD npm run db:upgrade
|
||||
$STD npm run db:migrate
|
||||
|
||||
@@ -23,7 +23,7 @@ function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /root/.config/recyclarr/recyclarr.yml ]]; then
|
||||
if [[ ! -f /root/.config/recyclarr/recyclarr.yml ]] && [[ ! -d /root/.config/recyclarr/configs ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
@@ -33,6 +33,20 @@ function update_script() {
|
||||
|
||||
fetch_and_deploy_gh_release "recyclarr" "recyclarr/recyclarr" "prebuild" "latest" "/usr/local/bin" "recyclarr-linux-x64.tar.xz"
|
||||
|
||||
# Migrate includes from configs/ to includes/ (recyclarr v8)
|
||||
RECYCLARR_DIR="/root/.config/recyclarr"
|
||||
mkdir -p "$RECYCLARR_DIR/includes"
|
||||
if [[ -d "$RECYCLARR_DIR/configs" ]]; then
|
||||
for item in "$RECYCLARR_DIR/configs"/*/; do
|
||||
[[ -d "$item" ]] || continue
|
||||
dir_name=$(basename "$item")
|
||||
# Only move subdirs that look like include dirs (not the configs themselves)
|
||||
if [[ "$dir_name" != "configs" ]] && [[ ! -d "$RECYCLARR_DIR/includes/$dir_name" ]]; then
|
||||
mv "$item" "$RECYCLARR_DIR/includes/"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated": "2026-02-20T18:14:23Z",
|
||||
"generated": "2026-02-21T18:07:18Z",
|
||||
"versions": [
|
||||
{
|
||||
"slug": "2fauth",
|
||||
@@ -116,16 +116,16 @@
|
||||
{
|
||||
"slug": "bentopdf",
|
||||
"repo": "alam00000/bentopdf",
|
||||
"version": "v2.2.1",
|
||||
"version": "v2.3.1",
|
||||
"pinned": false,
|
||||
"date": "2026-02-14T16:33:47Z"
|
||||
"date": "2026-02-21T09:04:27Z"
|
||||
},
|
||||
{
|
||||
"slug": "beszel",
|
||||
"repo": "henrygd/beszel",
|
||||
"version": "v0.18.3",
|
||||
"version": "v0.18.4",
|
||||
"pinned": false,
|
||||
"date": "2026-02-01T19:02:42Z"
|
||||
"date": "2026-02-20T21:10:52Z"
|
||||
},
|
||||
{
|
||||
"slug": "bichon",
|
||||
@@ -183,12 +183,19 @@
|
||||
"pinned": false,
|
||||
"date": "2025-07-29T16:39:18Z"
|
||||
},
|
||||
{
|
||||
"slug": "calibre-web",
|
||||
"repo": "janeczku/calibre-web",
|
||||
"version": "0.6.26",
|
||||
"pinned": false,
|
||||
"date": "2026-02-06T21:17:44Z"
|
||||
},
|
||||
{
|
||||
"slug": "checkmate",
|
||||
"repo": "bluewave-labs/Checkmate",
|
||||
"version": "v3.3",
|
||||
"version": "v3.4.0",
|
||||
"pinned": false,
|
||||
"date": "2026-01-28T14:25:25Z"
|
||||
"date": "2026-02-20T21:08:55Z"
|
||||
},
|
||||
{
|
||||
"slug": "cleanuparr",
|
||||
@@ -221,9 +228,9 @@
|
||||
{
|
||||
"slug": "configarr",
|
||||
"repo": "raydak-labs/configarr",
|
||||
"version": "v1.21.0",
|
||||
"version": "v1.22.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-17T22:59:07Z"
|
||||
"date": "2026-02-20T21:55:46Z"
|
||||
},
|
||||
{
|
||||
"slug": "convertx",
|
||||
@@ -256,9 +263,9 @@
|
||||
{
|
||||
"slug": "databasus",
|
||||
"repo": "databasus/databasus",
|
||||
"version": "v3.15.1",
|
||||
"version": "v3.16.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-20T12:28:04Z"
|
||||
"date": "2026-02-21T13:16:08Z"
|
||||
},
|
||||
{
|
||||
"slug": "dawarich",
|
||||
@@ -375,9 +382,9 @@
|
||||
{
|
||||
"slug": "fladder",
|
||||
"repo": "DonutWare/Fladder",
|
||||
"version": "v0.10.0",
|
||||
"version": "v0.10.1",
|
||||
"pinned": false,
|
||||
"date": "2026-02-20T14:16:51Z"
|
||||
"date": "2026-02-21T12:45:53Z"
|
||||
},
|
||||
{
|
||||
"slug": "flaresolverr",
|
||||
@@ -410,16 +417,16 @@
|
||||
{
|
||||
"slug": "gatus",
|
||||
"repo": "TwiN/gatus",
|
||||
"version": "v5.34.0",
|
||||
"version": "v5.35.0",
|
||||
"pinned": false,
|
||||
"date": "2026-01-03T03:12:12Z"
|
||||
"date": "2026-02-20T20:58:03Z"
|
||||
},
|
||||
{
|
||||
"slug": "ghostfolio",
|
||||
"repo": "ghostfolio/ghostfolio",
|
||||
"version": "2.240.0",
|
||||
"version": "2.241.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-18T20:08:56Z"
|
||||
"date": "2026-02-21T07:39:22Z"
|
||||
},
|
||||
{
|
||||
"slug": "gitea",
|
||||
@@ -522,9 +529,9 @@
|
||||
{
|
||||
"slug": "homarr",
|
||||
"repo": "homarr-labs/homarr",
|
||||
"version": "v1.53.1",
|
||||
"version": "v1.53.2",
|
||||
"pinned": false,
|
||||
"date": "2026-02-13T19:47:11Z"
|
||||
"date": "2026-02-20T19:41:55Z"
|
||||
},
|
||||
{
|
||||
"slug": "homebox",
|
||||
@@ -585,16 +592,16 @@
|
||||
{
|
||||
"slug": "invoiceninja",
|
||||
"repo": "invoiceninja/invoiceninja",
|
||||
"version": "v5.12.64",
|
||||
"version": "v5.12.65",
|
||||
"pinned": false,
|
||||
"date": "2026-02-18T07:59:44Z"
|
||||
"date": "2026-02-21T01:03:52Z"
|
||||
},
|
||||
{
|
||||
"slug": "jackett",
|
||||
"repo": "Jackett/Jackett",
|
||||
"version": "v0.24.1167",
|
||||
"version": "v0.24.1174",
|
||||
"pinned": false,
|
||||
"date": "2026-02-20T05:54:07Z"
|
||||
"date": "2026-02-21T05:53:02Z"
|
||||
},
|
||||
{
|
||||
"slug": "jellystat",
|
||||
@@ -1110,9 +1117,9 @@
|
||||
{
|
||||
"slug": "pocketbase",
|
||||
"repo": "pocketbase/pocketbase",
|
||||
"version": "v0.36.4",
|
||||
"version": "v0.36.5",
|
||||
"pinned": false,
|
||||
"date": "2026-02-17T08:02:51Z"
|
||||
"date": "2026-02-21T11:45:32Z"
|
||||
},
|
||||
{
|
||||
"slug": "pocketid",
|
||||
@@ -1187,9 +1194,9 @@
|
||||
{
|
||||
"slug": "pulse",
|
||||
"repo": "rcourtman/Pulse",
|
||||
"version": "v5.1.11",
|
||||
"version": "v5.1.12",
|
||||
"pinned": false,
|
||||
"date": "2026-02-19T20:20:44Z"
|
||||
"date": "2026-02-20T20:53:16Z"
|
||||
},
|
||||
{
|
||||
"slug": "pve-scripts-local",
|
||||
@@ -1264,9 +1271,9 @@
|
||||
{
|
||||
"slug": "recyclarr",
|
||||
"repo": "recyclarr/recyclarr",
|
||||
"version": "v8.0.1",
|
||||
"version": "v8.1.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-20T04:52:19Z"
|
||||
"date": "2026-02-21T01:36:23Z"
|
||||
},
|
||||
{
|
||||
"slug": "reitti",
|
||||
@@ -1355,9 +1362,9 @@
|
||||
{
|
||||
"slug": "signoz",
|
||||
"repo": "SigNoz/signoz-otel-collector",
|
||||
"version": "v0.142.0",
|
||||
"version": "v0.142.1",
|
||||
"pinned": false,
|
||||
"date": "2026-02-06T11:40:30Z"
|
||||
"date": "2026-02-21T18:04:07Z"
|
||||
},
|
||||
{
|
||||
"slug": "silverbullet",
|
||||
@@ -1418,9 +1425,9 @@
|
||||
{
|
||||
"slug": "stirling-pdf",
|
||||
"repo": "Stirling-Tools/Stirling-PDF",
|
||||
"version": "v2.5.1",
|
||||
"version": "v2.5.2",
|
||||
"pinned": false,
|
||||
"date": "2026-02-18T11:05:34Z"
|
||||
"date": "2026-02-20T23:20:20Z"
|
||||
},
|
||||
{
|
||||
"slug": "streamlink-webui",
|
||||
@@ -1436,6 +1443,13 @@
|
||||
"pinned": false,
|
||||
"date": "2025-09-19T22:23:28Z"
|
||||
},
|
||||
{
|
||||
"slug": "sure",
|
||||
"repo": "we-promise/sure",
|
||||
"version": "chart-v0.6.8-alpha.13",
|
||||
"pinned": false,
|
||||
"date": "2026-02-20T11:15:15Z"
|
||||
},
|
||||
{
|
||||
"slug": "tandoor",
|
||||
"repo": "TandoorRecipes/recipes",
|
||||
|
||||
44
frontend/public/json/gramps-web.json
Normal file
44
frontend/public/json/gramps-web.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "Gramps Web",
|
||||
"slug": "gramps-web",
|
||||
"categories": [
|
||||
12
|
||||
],
|
||||
"date_created": "2026-02-16",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 5000,
|
||||
"documentation": "https://www.grampsweb.org/install_setup/setup/",
|
||||
"website": "https://www.grampsweb.org/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/gramps.webp",
|
||||
"config_path": "/opt/gramps-web/config/config.cfg",
|
||||
"description": "Gramps Web is a collaborative genealogy platform for browsing, editing and sharing family trees through a modern web interface.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/gramps-web.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 4096,
|
||||
"hdd": 20,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "On first access, create the owner account via the built-in onboarding wizard.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "The initial deployment compiles the frontend and can take several minutes.",
|
||||
"type": "warning"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -10,7 +10,7 @@
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8000,
|
||||
"documentation": "https://maxdorninger.github.io/MediaManager/introduction.html",
|
||||
"documentation": "https://maxdorninger.github.io/MediaManager/latest/",
|
||||
"config_path": "/opt/mm/config/config.toml",
|
||||
"website": "https://github.com/maxdorninger/MediaManager",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/mediamanager.webp",
|
||||
|
||||
131
install/gramps-web-install.sh
Normal file
131
install/gramps-web-install.sh
Normal file
@@ -0,0 +1,131 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: GitHub Copilot
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.grampsweb.org/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
if apt-cache show libgirepository1.0-dev >/dev/null 2>&1; then
|
||||
GI_DEV_PACKAGE="libgirepository1.0-dev"
|
||||
elif apt-cache show libgirepository-2.0-dev >/dev/null 2>&1; then
|
||||
GI_DEV_PACKAGE="libgirepository-2.0-dev"
|
||||
else
|
||||
msg_error "No supported girepository development package found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
appstream \
|
||||
build-essential \
|
||||
ffmpeg \
|
||||
gettext \
|
||||
gobject-introspection \
|
||||
gir1.2-gexiv2-0.10 \
|
||||
gir1.2-gtk-3.0 \
|
||||
gir1.2-osmgpsmap-1.0 \
|
||||
gir1.2-pango-1.0 \
|
||||
git \
|
||||
graphviz \
|
||||
libcairo2-dev \
|
||||
libglib2.0-dev \
|
||||
libicu-dev \
|
||||
libopencv-dev \
|
||||
pkg-config \
|
||||
poppler-utils \
|
||||
python3-dev \
|
||||
tesseract-ocr \
|
||||
"$GI_DEV_PACKAGE"
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
|
||||
fetch_and_deploy_gh_release "gramps-web-api" "gramps-project/gramps-web-api" "tarball" "latest" "/opt/gramps-web-api"
|
||||
fetch_and_deploy_gh_release "gramps-web" "gramps-project/gramps-web" "tarball" "latest" "/opt/gramps-web/frontend"
|
||||
|
||||
msg_info "Setting up Gramps Web"
|
||||
mkdir -p \
|
||||
/opt/gramps-web/config \
|
||||
/opt/gramps-web/data/cache/export \
|
||||
/opt/gramps-web/data/cache/persistent \
|
||||
/opt/gramps-web/data/cache/report \
|
||||
/opt/gramps-web/data/cache/request \
|
||||
/opt/gramps-web/data/cache/thumbnail \
|
||||
/opt/gramps-web/data/gramps/grampsdb \
|
||||
/opt/gramps-web/data/indexdir \
|
||||
/opt/gramps-web/data/media \
|
||||
/opt/gramps-web/data/users
|
||||
|
||||
SECRET_KEY="$(python3 -c "import secrets; print(secrets.token_urlsafe(32))")"
|
||||
|
||||
cat <<EOF >/opt/gramps-web/config/config.cfg
|
||||
TREE="Gramps Web"
|
||||
SECRET_KEY="${SECRET_KEY}"
|
||||
BASE_URL="http://${LOCAL_IP}:5000"
|
||||
USER_DB_URI="sqlite:////opt/gramps-web/data/users/users.sqlite"
|
||||
SEARCH_INDEX_DB_URI="sqlite:////opt/gramps-web/data/indexdir/search_index.db"
|
||||
MEDIA_BASE_DIR="/opt/gramps-web/data/media"
|
||||
STATIC_PATH="/opt/gramps-web/frontend/dist"
|
||||
THUMBNAIL_CACHE_CONFIG={"CACHE_TYPE":"FileSystemCache","CACHE_DIR":"/opt/gramps-web/data/cache/thumbnail","CACHE_THRESHOLD":1000,"CACHE_DEFAULT_TIMEOUT":0}
|
||||
REQUEST_CACHE_CONFIG={"CACHE_TYPE":"FileSystemCache","CACHE_DIR":"/opt/gramps-web/data/cache/request","CACHE_THRESHOLD":1000,"CACHE_DEFAULT_TIMEOUT":0}
|
||||
PERSISTENT_CACHE_CONFIG={"CACHE_TYPE":"FileSystemCache","CACHE_DIR":"/opt/gramps-web/data/cache/persistent","CACHE_THRESHOLD":0,"CACHE_DEFAULT_TIMEOUT":0}
|
||||
REPORT_DIR="/opt/gramps-web/data/cache/report"
|
||||
EXPORT_DIR="/opt/gramps-web/data/cache/export"
|
||||
EOF
|
||||
|
||||
$STD uv venv -c -p python3.12 /opt/gramps-web/venv
|
||||
source /opt/gramps-web/venv/bin/activate
|
||||
$STD uv pip install --no-cache-dir --upgrade pip setuptools wheel
|
||||
$STD uv pip install --no-cache-dir gunicorn
|
||||
$STD uv pip install --no-cache-dir /opt/gramps-web-api
|
||||
|
||||
cd /opt/gramps-web/frontend
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
corepack enable
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
|
||||
cd /opt/gramps-web-api
|
||||
GRAMPS_API_CONFIG=/opt/gramps-web/config/config.cfg \
|
||||
ALEMBIC_CONFIG=/opt/gramps-web-api/alembic.ini \
|
||||
GRAMPSHOME=/opt/gramps-web/data/gramps \
|
||||
GRAMPS_DATABASE_PATH=/opt/gramps-web/data/gramps/grampsdb \
|
||||
$STD /opt/gramps-web/venv/bin/python3 -m gramps_webapi user migrate
|
||||
msg_ok "Set up Gramps Web"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/gramps-web.service
|
||||
[Unit]
|
||||
Description=Gramps Web Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/gramps-web-api
|
||||
Environment=GRAMPS_API_CONFIG=/opt/gramps-web/config/config.cfg
|
||||
Environment=GRAMPSHOME=/opt/gramps-web/data/gramps
|
||||
Environment=GRAMPS_DATABASE_PATH=/opt/gramps-web/data/gramps/grampsdb
|
||||
Environment=PATH=/opt/gramps-web/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
ExecStart=/opt/gramps-web/venv/bin/gunicorn -w 2 -b 0.0.0.0:5000 gramps_webapi.wsgi:app --timeout 120 --limit-request-line 8190
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now gramps-web
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -13,6 +13,10 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y build-essential
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
fetch_and_deploy_gh_release "huntarr" "plexguide/Huntarr.io" "tarball"
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@ cp .env.sample .env
|
||||
sed -i "s#http://localhost:1337#http://$LOCAL_IP:1337#g" /opt/planka/.env
|
||||
sed -i "s#postgres@localhost#planka:$DB_PASS@localhost#g" /opt/planka/.env
|
||||
sed -i "s#notsecretkey#$SECRET_KEY#g" /opt/planka/.env
|
||||
mkdir -p /opt/planka/data/protected/{favicons,user-avatars,background-images} /opt/planka/data/private/attachments
|
||||
$STD npm run db:init
|
||||
msg_ok "Configured PLANKA"
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ msg_ok "Installed Dependencies"
|
||||
fetch_and_deploy_gh_release "recyclarr" "recyclarr/recyclarr" "prebuild" "latest" "/usr/local/bin" "recyclarr-linux-x64.tar.xz"
|
||||
|
||||
msg_info "Configuring Recyclarr"
|
||||
mkdir -p /root/.config/recyclarr
|
||||
mkdir -p /root/.config/recyclarr/{configs,includes}
|
||||
$STD recyclarr config create
|
||||
msg_ok "Configured Recyclarr"
|
||||
|
||||
|
||||
@@ -28,9 +28,10 @@ setup_deb822_repo \
|
||||
"stable" \
|
||||
"main"
|
||||
$STD apt install -y elasticsearch
|
||||
echo "-Xms2g" >>/etc/elasticsearch/jvm.options
|
||||
echo "-Xmx2g" >>/etc/elasticsearch/jvm.options
|
||||
sed -i 's/^-Xms.*/-Xms2g/' /etc/elasticsearch/jvm.options
|
||||
sed -i 's/^-Xmx.*/-Xmx2g/' /etc/elasticsearch/jvm.options
|
||||
$STD /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment -b
|
||||
systemctl daemon-reload
|
||||
systemctl enable -q elasticsearch
|
||||
systemctl restart -q elasticsearch
|
||||
msg_ok "Setup Elasticsearch"
|
||||
|
||||
Reference in New Issue
Block a user