Compare commits

...

9 Commits

Author SHA1 Message Date
github-actions[bot] b68f372c7e Update CHANGELOG.md 2026-09-07 14:58:15 +00:00
push-app-to-main[bot] 20624f3a84 Chatwoot (#17095)
* Add chatwoot (ct)

* Update var_arm64 default value in chatwoot.sh

Uncomment var_arm64 variable and adjust its default value.

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
2026-09-07 16:57:57 +02:00
push-app-to-main[bot] 0b630fc246 Add whisparr-eros (ct) (#17094)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2026-09-07 16:57:48 +02:00
community-scripts-pr-app[bot] c8722c0828 Update CHANGELOG.md (#17100)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-07 14:53:40 +00:00
push-app-to-main[bot] 08dfb5aa90 Matter-Hub (#17093)
* Add matter-hub (ct)

* Enable ARM64 support by default in matter-hub.sh

* Remove Home Assistant setup instruction

Removed instruction to set Home Assistant URL and token.

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
2026-09-07 16:53:13 +02:00
community-scripts-pr-app[bot] 790b329777 Update CHANGELOG.md (#17099)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-07 14:52:32 +00:00
push-app-to-main[bot] d458bf5aed Journiv (#17092)
* Add journiv (ct)

* Change default value of var_arm64 to 'yes'

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
2026-09-07 16:51:29 +02:00
community-scripts-pr-app[bot] aa4dfbf1f3 Update CHANGELOG.md (#17098)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-07 14:37:36 +00:00
CanbiZ (MickLesk) c039a297b3 flatnotes: follow upstream move to uv and Python 3.13 (#17090) 2026-09-07 16:37:07 +02:00
15 changed files with 710 additions and 14 deletions
+8
View File
@@ -542,6 +542,13 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
## 2026-09-07
### 🆕 New Scripts
- Chatwoot ([#17095](https://github.com/community-scripts/ProxmoxVE/pull/17095))
- whisparr-eros ([#17094](https://github.com/community-scripts/ProxmoxVE/pull/17094))
- Matter-Hub ([#17093](https://github.com/community-scripts/ProxmoxVE/pull/17093))
- Journiv ([#17092](https://github.com/community-scripts/ProxmoxVE/pull/17092))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
@@ -558,6 +565,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
- #### 🔧 Refactor
- flatnotes: follow upstream move to uv and Python 3.13 [@MickLesk](https://github.com/MickLesk) ([#17090](https://github.com/community-scripts/ProxmoxVE/pull/17090))
- heimdall: set up PHP 8.4 on update, keep only the database, run migrations [@MickLesk](https://github.com/MickLesk) ([#17067](https://github.com/community-scripts/ProxmoxVE/pull/17067))
### 📂 Github
+76
View File
@@ -0,0 +1,76 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.chatwoot.com/
APP="Chatwoot"
var_tags="${var_tags:-support;chat;helpdesk;crm}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-6144}"
var_disk="${var_disk:-16}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-no}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /opt/chatwoot/.env ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "chatwoot" "chatwoot/chatwoot"; then
msg_info "Stopping Services"
systemctl stop chatwoot-web chatwoot-worker
msg_ok "Stopped Services"
create_backup /opt/chatwoot/.env /opt/chatwoot/storage
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "chatwoot" "chatwoot/chatwoot" "tarball"
RUBY_VERSION=$(tr -d ' \n' </opt/chatwoot/.ruby-version)
RUBY_VERSION="${RUBY_VERSION}" RUBY_INSTALL_RAILS="false" setup_ruby
NODE_VERSION=$(tr -d ' \n' </opt/chatwoot/.nvmrc)
NODE_VERSION="${NODE_VERSION}" NODE_MODULE="pnpm" setup_nodejs
export PATH="$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH"
restore_backup
msg_info "Updating Application"
cd /opt/chatwoot
$STD bundle config set --local without 'development test'
$STD bundle config set --local deployment 'true'
$STD bundle install
$STD pnpm install --frozen-lockfile
RAILS_ENV=production $STD bundle exec rails db:chatwoot_prepare
RAILS_ENV=production $STD bundle exec rails assets:precompile
msg_ok "Updated Application"
msg_info "Starting Services"
systemctl start chatwoot-web chatwoot-worker
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 "${GATEWAY}${BGN}http://${IP}:3000${CL}"
+6 -7
View File
@@ -38,19 +38,18 @@ function update_script() {
create_backup /opt/flatnotes/.env /opt/flatnotes/data
PYTHON_VERSION="3.13" setup_uv
NODE_VERSION="24" setup_nodejs
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "flatnotes" "dullage/flatnotes" "tarball"
restore_backup
msg_info "Updating Flatnotes"
cd /opt/flatnotes/client
$STD npm install
$STD npm run build
cd /opt/flatnotes
rm -f uv.lock
sed -i 's/^name = ""$/name = "flatnotes"/' pyproject.toml
$STD /usr/local/bin/uvx migrate-to-uv
$STD /usr/local/bin/uv sync
$STD uv sync --locked --no-dev
$STD npm ci
$STD npm run build
msg_ok "Updated Flatnotes"
msg_info "Starting Service"
+6
View File
@@ -0,0 +1,6 @@
________ __ __
/ ____/ /_ ____ _/ /__ ______ ____ / /_
/ / / __ \/ __ `/ __/ | /| / / __ \/ __ \/ __/
/ /___/ / / / /_/ / /_ | |/ |/ / /_/ / /_/ / /_
\____/_/ /_/\__,_/\__/ |__/|__/\____/\____/\__/
+6
View File
@@ -0,0 +1,6 @@
__ _
/ /___ __ ___________ (_) __
__ / / __ \/ / / / ___/ __ \/ / | / /
/ /_/ / /_/ / /_/ / / / / / / /| |/ /
\____/\____/\__,_/_/ /_/ /_/_/ |___/
+6
View File
@@ -0,0 +1,6 @@
__ ___ __ __ __ __ __
/ |/ /___ _/ /_/ /____ _____ / / / /_ __/ /_
/ /|_/ / __ `/ __/ __/ _ \/ ___/_____/ /_/ / / / / __ \
/ / / / /_/ / /_/ /_/ __/ / /_____/ __ / /_/ / /_/ /
/_/ /_/\__,_/\__/\__/\___/_/ /_/ /_/\__,_/_.___/
+6
View File
@@ -0,0 +1,6 @@
_ ____ _ ______
| | / / /_ (_)________ ____ ___________ / ____/________ _____
| | /| / / __ \/ / ___/ __ \/ __ `/ ___/ ___/_____/ __/ / ___/ __ \/ ___/
| |/ |/ / / / / (__ ) /_/ / /_/ / / / / /_____/ /___/ / / /_/ (__ )
|__/|__/_/ /_/_/____/ .___/\__,_/_/ /_/ /_____/_/ \____/____/
/_/
+69
View File
@@ -0,0 +1,69 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/journiv/journiv-app
APP="Journiv"
var_tags="${var_tags:-journal;notes}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-12}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}"
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/journiv ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "journiv" "journiv/journiv-app"; then
msg_info "Stopping Services"
systemctl stop journiv journiv-worker journiv-beat
msg_ok "Stopped Services"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "journiv" "journiv/journiv-app" "tarball"
msg_info "Updating Python Environment"
cd /opt/journiv
$STD uv sync --locked --no-editable --no-install-project
msg_ok "Updated Python Environment"
msg_info "Running Database Migrations"
set -a
source /opt/journiv.env
set +a
$STD /opt/journiv/.venv/bin/python -c "from alembic.config import main; main(['upgrade', 'head'])"
msg_ok "Ran Database Migrations"
msg_info "Starting Services"
systemctl start journiv journiv-worker journiv-beat
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 "${GATEWAY}${BGN}http://${IP}:8000${CL}"
+72
View File
@@ -0,0 +1,72 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/RiDDiX/home-assistant-matter-hub
APP="Matter-Hub"
var_tags="${var_tags:-smarthome;matter}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-12}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}"
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/matter-hub ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "matter-hub" "RiDDiX/home-assistant-matter-hub"; then
msg_info "Stopping Service"
systemctl stop matter-hub
msg_ok "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "matter-hub" "RiDDiX/home-assistant-matter-hub" "tarball"
msg_info "Building Matter Hub"
cd /opt/matter-hub
MATTER_HUB_VERSION=$(cat ~/.matter-hub)
$STD pnpm install --frozen-lockfile
$STD pnpm run release:version "$MATTER_HUB_VERSION"
APP_VERSION="$MATTER_HUB_VERSION" $STD pnpm build
sed -i "s|^APP_VERSION=.*|APP_VERSION=${MATTER_HUB_VERSION}|" /opt/matter-hub.env
msg_ok "Built Matter Hub"
msg_info "Installing Matter Hub"
rm -rf /opt/matter-hub_app/node_modules /opt/matter-hub_app/package-lock.json
cd /opt/matter-hub_app
$STD npm install --omit=dev --no-audit --no-fund
msg_ok "Installed Matter Hub"
msg_info "Starting Service"
systemctl start matter-hub
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 "${GATEWAY}${BGN}http://${IP}:8482${CL}"
+59
View File
@@ -0,0 +1,59 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 community-scripts ORG
# Author: angusmaul
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Whisparr/Whisparr-Eros
APP="Whisparr-Eros"
var_tags="${var_tags:-arr}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}"
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 /var/lib/whisparr-eros ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "whisparr-eros" "Whisparr/Whisparr-Eros"; then
msg_info "Stopping Service"
systemctl stop whisparr-eros
msg_ok "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "whisparr-eros" "Whisparr/Whisparr-Eros" "prebuild" "latest" "/opt/Whisparr-Eros" "Whisparr.eros.*.linux-$(arch_resolve "x64" "arm64").tar.gz"
rm -rf /opt/Whisparr-Eros/Whisparr.Update
chmod +x /opt/Whisparr-Eros/Whisparr
msg_info "Starting Service"
systemctl start whisparr-eros
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}:6969${CL}"
+130
View File
@@ -0,0 +1,130 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.chatwoot.com/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
build-essential \
git \
imagemagick \
libpq-dev \
libvips42 \
pkg-config \
redis-server
msg_ok "Installed Dependencies"
PG_VERSION="17" PG_MODULES="pgvector" setup_postgresql
PG_DB_NAME="chatwoot_production" PG_DB_USER="chatwoot" PG_DB_EXTENSIONS="vector,pg_stat_statements" setup_postgresql_db
fetch_and_deploy_gh_release "chatwoot" "chatwoot/chatwoot" "tarball"
RUBY_VERSION=$(tr -d ' \n' </opt/chatwoot/.ruby-version)
RUBY_VERSION="${RUBY_VERSION}" RUBY_INSTALL_RAILS="false" setup_ruby
NODE_VERSION=$(grep -oP '"node":\s*"\K[0-9]+' /opt/chatwoot/package.json)
NODE_VERSION="${NODE_VERSION}" NODE_MODULE="pnpm" setup_nodejs
export PATH="$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH"
msg_info "Installing Application Dependencies"
cd /opt/chatwoot
$STD bundle config set --local without 'development test'
$STD bundle config set --local deployment 'true'
$STD bundle install
$STD pnpm install --frozen-lockfile
msg_ok "Installed Application Dependencies"
msg_info "Configuring Chatwoot"
SECRET_KEY_BASE=$(openssl rand -hex 64)
mkdir -p /opt/chatwoot/storage
cat <<EOF >/opt/chatwoot/.env
RAILS_ENV=production
NODE_ENV=production
RAILS_LOG_TO_STDOUT=true
SECRET_KEY_BASE=${SECRET_KEY_BASE}
FRONTEND_URL=http://${LOCAL_IP}:3000
FORCE_SSL=false
ENABLE_ACCOUNT_SIGNUP=false
POSTGRES_HOST=127.0.0.1
POSTGRES_PORT=5432
POSTGRES_DATABASE=${PG_DB_NAME}
POSTGRES_USERNAME=${PG_DB_USER}
POSTGRES_PASSWORD=${PG_DB_PASS}
REDIS_URL=redis://127.0.0.1:6379
ACTIVE_STORAGE_SERVICE=local
EOF
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=$(openssl rand -hex 32)
ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=$(openssl rand -hex 32)
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=$(openssl rand -hex 32)
cat <<EOF >>/opt/chatwoot/.env
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=${ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY}
ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=${ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY}
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=${ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT}
EOF
chmod 640 /opt/chatwoot/.env
msg_ok "Configured Chatwoot"
msg_info "Preparing Database"
RAILS_ENV=production $STD bundle exec rails db:chatwoot_prepare
msg_ok "Prepared Database"
msg_info "Precompiling Assets"
RAILS_ENV=production NODE_OPTIONS="--max-old-space-size=4096" $STD bundle exec rails assets:precompile
msg_ok "Precompiled Assets"
msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/chatwoot-web.service
[Unit]
Description=Chatwoot Web
After=network.target postgresql.service redis-server.service
Requires=postgresql.service redis-server.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/chatwoot
EnvironmentFile=/opt/chatwoot/.env
Environment=PATH=/root/.rbenv/shims:/root/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ExecStart=/root/.rbenv/shims/bundle exec rails server -p 3000 -e production
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/chatwoot-worker.service
[Unit]
Description=Chatwoot Worker
After=network.target postgresql.service redis-server.service
Requires=postgresql.service redis-server.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/chatwoot
EnvironmentFile=/opt/chatwoot/.env
Environment=PATH=/root/.rbenv/shims:/root/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ExecStart=/root/.rbenv/shims/bundle exec sidekiq -C config/sidekiq.yml
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now chatwoot-web chatwoot-worker redis-server
msg_ok "Created Services"
motd_ssh
customize
cleanup_lxc
+4 -7
View File
@@ -14,17 +14,14 @@ network_check
update_os
fetch_and_deploy_gh_release "flatnotes" "dullage/flatnotes" "tarball"
USE_UVX="YES" setup_uv
NODE_VERSION="22" setup_nodejs
PYTHON_VERSION="3.13" setup_uv
NODE_VERSION="24" setup_nodejs
msg_info "Setting up Flatnotes"
cd /opt/flatnotes
sed -i 's/^name = ""$/name = "flatnotes"/' pyproject.toml
$STD /usr/local/bin/uvx migrate-to-uv
$STD /usr/local/bin/uv sync
$STD uv sync --locked --no-dev
mkdir -p /opt/flatnotes/data
cd /opt/flatnotes/client
$STD npm install
$STD npm ci
$STD npm run build
cat <<EOF >/opt/flatnotes/.env
+131
View File
@@ -0,0 +1,131 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/journiv/journiv-app
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
build-essential \
libffi-dev \
libpq-dev \
libmagic1 \
libheif1 \
libde265-0 \
libpango-1.0-0 \
libpangoft2-1.0-0 \
redis-server
systemctl enable -q --now redis-server
msg_ok "Installed Dependencies"
setup_ffmpeg
PG_VERSION="17" setup_postgresql
PG_DB_NAME="journiv" PG_DB_USER="journiv" setup_postgresql_db
UV_PYTHON="3.12" setup_uv
fetch_and_deploy_gh_release "journiv" "journiv/journiv-app" "tarball"
msg_info "Setting up Python Environment"
cd /opt/journiv
$STD uv sync --locked --no-editable --no-install-project
msg_ok "Set up Python Environment"
msg_info "Configuring Journiv"
mkdir -p /opt/journiv_data/{media,logs,exports,imports/temp}
cat <<EOF >/opt/journiv.env
ENVIRONMENT=production
SECRET_KEY=$(openssl rand -hex 32)
DB_DRIVER=postgres
DATABASE_URL=postgresql://journiv:${PG_DB_PASS}@localhost:5432/journiv
REDIS_URL=redis://127.0.0.1:6379/0
MEDIA_ROOT=/opt/journiv_data/media
LOG_DIR=/opt/journiv_data/logs
EXPORT_DIR=/opt/journiv_data/exports
IMPORT_TEMP_DIR=/opt/journiv_data/imports/temp
DOMAIN_NAME=${LOCAL_IP}
DOMAIN_SCHEME=http
PYTHONPATH=/opt/journiv
EOF
chmod 600 /opt/journiv.env
msg_ok "Configured Journiv"
msg_info "Initializing Database"
set -a
source /opt/journiv.env
set +a
$STD /opt/journiv/.venv/bin/python -c "from alembic.config import main; main(['upgrade', 'head'])"
SKIP_DATA_SEEDING=false $STD /opt/journiv/.venv/bin/python -c "from app.core.database import seed_initial_data; seed_initial_data()"
msg_ok "Initialized Database"
msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/journiv.service
[Unit]
Description=Journiv
Wants=network-online.target
After=network-online.target postgresql.service redis-server.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/journiv
EnvironmentFile=/opt/journiv.env
ExecStart=/opt/journiv/.venv/bin/python -m gunicorn app.main:app -w 2 -k uvicorn.workers.UvicornWorker --timeout 300 -b 0.0.0.0:8000
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/journiv-worker.service
[Unit]
Description=Journiv Celery Worker
Wants=network-online.target
After=network-online.target journiv.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/journiv
EnvironmentFile=/opt/journiv.env
ExecStart=/opt/journiv/.venv/bin/python -m celery -A app.core.celery_app worker --loglevel=info
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/journiv-beat.service
[Unit]
Description=Journiv Celery Beat
Wants=network-online.target
After=network-online.target journiv.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/journiv
EnvironmentFile=/opt/journiv.env
ExecStart=/opt/journiv/.venv/bin/python -m celery -A app.core.celery_app beat --loglevel=info --scheduler redbeat.RedBeatScheduler --pidfile=/run/journiv-beat.pid
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now journiv journiv-worker journiv-beat
msg_ok "Created Services"
motd_ssh
customize
cleanup_lxc
+80
View File
@@ -0,0 +1,80 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/RiDDiX/home-assistant-matter-hub
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
NODE_VERSION="24" NODE_MODULE="pnpm@^10" setup_nodejs
fetch_and_deploy_gh_release "matter-hub" "RiDDiX/home-assistant-matter-hub" "tarball"
msg_info "Building Matter Hub"
cd /opt/matter-hub
MATTER_HUB_VERSION=$(cat ~/.matter-hub)
$STD pnpm install --frozen-lockfile
$STD pnpm run release:version "$MATTER_HUB_VERSION"
APP_VERSION="$MATTER_HUB_VERSION" $STD pnpm build
msg_ok "Built Matter Hub"
msg_info "Installing Matter Hub"
mkdir -p /opt/matter-hub_app
cat <<EOF >/opt/matter-hub_app/package.json
{
"name": "hamh-wrapper",
"version": "0.0.0",
"private": true,
"dependencies": {
"home-assistant-matter-hub": "file:/opt/matter-hub/apps/home-assistant-matter-hub/package.tgz"
}
}
EOF
cd /opt/matter-hub_app
$STD npm install --omit=dev --no-audit --no-fund
msg_ok "Installed Matter Hub"
msg_info "Configuring Matter Hub"
mkdir -p /opt/matter-hub_data
cat <<EOF >/opt/matter-hub.env
HAMH_HOME_ASSISTANT_URL=http://CHANGE_ME:8123/
HAMH_HOME_ASSISTANT_ACCESS_TOKEN=CHANGE_ME
HAMH_HTTP_PORT=8482
HAMH_LOG_LEVEL=info
APP_VERSION=${MATTER_HUB_VERSION}
EOF
chmod 600 /opt/matter-hub.env
msg_ok "Configured Matter Hub"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/matter-hub.service
[Unit]
Description=Home Assistant Matter Hub
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/matter-hub_data
EnvironmentFile=/opt/matter-hub.env
ExecStart=/opt/matter-hub_app/node_modules/.bin/home-assistant-matter-hub start --storage-location=/opt/matter-hub_data
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now matter-hub
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc
+51
View File
@@ -0,0 +1,51 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: angusmaul
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Whisparr/Whisparr-Eros
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y sqlite3 libicu-dev
msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "whisparr-eros" "Whisparr/Whisparr-Eros" "prebuild" "latest" "/opt/Whisparr-Eros" "Whisparr.eros.*.linux-$(arch_resolve "x64" "arm64").tar.gz"
msg_info "Configuring Whisparr-Eros"
rm -rf /opt/Whisparr-Eros/Whisparr.Update
chmod +x /opt/Whisparr-Eros/Whisparr
mkdir -p /var/lib/whisparr-eros/
chmod 775 /var/lib/whisparr-eros/ /opt/Whisparr-Eros/
msg_ok "Configured Whisparr-Eros"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/whisparr-eros.service
[Unit]
Description=Whisparr-Eros Daemon
After=syslog.target network.target
[Service]
UMask=0002
Type=simple
ExecStart=/opt/Whisparr-Eros/Whisparr -nobrowser -data=/var/lib/whisparr-eros/
TimeoutStopSec=20
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now whisparr-eros
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc