mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-10-03 14:16:14 -04:00
Compare commits
7 Commits
refactor/c
...
github-act
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
89b69a525f | ||
|
|
01906fe930 | ||
|
|
7a9fd31696 | ||
|
|
fa4e227f7b | ||
|
|
075769abdc | ||
|
|
7f57d0998c | ||
|
|
45599d63ec |
20
CHANGELOG.md
20
CHANGELOG.md
@@ -549,6 +549,22 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
</details>
|
||||
|
||||
## 2026-10-03
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Keeper.sh ([#17659](https://github.com/community-scripts/ProxmoxVE/pull/17659))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix(nginxproxymanager): clean yarn cache after builds to prevent disk growth [@PsycoStea](https://github.com/PsycoStea) ([#17653](https://github.com/community-scripts/ProxmoxVE/pull/17653))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor/core qol adoption [@MickLesk](https://github.com/MickLesk) ([#17655](https://github.com/community-scripts/ProxmoxVE/pull/17655))
|
||||
|
||||
## 2026-10-02
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
@@ -564,6 +580,10 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
- NPM: Refactor / Fix npm openresty user and certbot version [@MickLesk](https://github.com/MickLesk) ([#17649](https://github.com/community-scripts/ProxmoxVE/pull/17649))
|
||||
- several scripts: use the release helpers instead of hand-rolled version checks and downloads [@MickLesk](https://github.com/MickLesk) ([#17625](https://github.com/community-scripts/ProxmoxVE/pull/17625))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- QoL: message blocks, clean-install keep list, password helper, network limits [@MickLesk](https://github.com/MickLesk) ([core#61](https://github.com/community-scripts/core/pull/61))
|
||||
|
||||
## 2026-10-01
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
@@ -36,9 +36,9 @@ function update_script() {
|
||||
systemctl stop airtrail
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/airtrail/.env /opt/airtrail/uploads
|
||||
create_backup /opt/airtrail/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "airtrail" "johanohly/AirTrail" "tarball" "latest" "/opt/airtrail"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="uploads" fetch_and_deploy_gh_release "airtrail" "johanohly/AirTrail" "tarball" "latest" "/opt/airtrail"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -48,9 +48,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Setting up SSH Public Key for backup user"
|
||||
|
||||
msg_info "Please paste your SSH public key (e.g., ssh-rsa AAAAB3... user@host): \n"
|
||||
echo -e "${INFO}${YW}Please paste your SSH public key (e.g., ssh-rsa AAAAB3... user@host):${CL}"
|
||||
read -p "Key: " SSH_PUBLIC_KEY
|
||||
echo
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ function update_script() {
|
||||
|
||||
msg_warn "⚠️ ${APP} has been migrated to an addon script."
|
||||
echo ""
|
||||
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
|
||||
echo -e "${INFO}${YW}This is a one-time migration. After this, you can update ${APP} anytime with:${CL}"
|
||||
echo -e "${TAB}${TAB}${GN}update_komodo${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
|
||||
echo ""
|
||||
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
|
||||
@@ -62,7 +62,7 @@ MIGRATION_EOF
|
||||
ln -sf /usr/bin/update /usr/bin/update_komodo 2>/dev/null || true
|
||||
msg_ok "Migration complete"
|
||||
|
||||
msg_info "Running addon update"
|
||||
echo -e "${INFO}${YW}Running addon update${CL}"
|
||||
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -136,7 +136,6 @@ function update_script() {
|
||||
export UV_COMPILE_BYTECODE="1"
|
||||
export UV_LINK_MODE="copy"
|
||||
export UV_NATIVE_TLS="1"
|
||||
export UV_HTTP_TIMEOUT="300"
|
||||
export RUSTUP_PERMIT_COPY_RENAME="true"
|
||||
export UV_PYTHON_INSTALL_DIR="/usr/local/bin"
|
||||
cd /opt/authentik
|
||||
|
||||
@@ -33,7 +33,7 @@ function update_script() {
|
||||
if check_for_gh_release "beszel" "henrygd/beszel"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop beszel-hub
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating Beszel"
|
||||
$STD /opt/beszel/beszel update
|
||||
|
||||
@@ -38,11 +38,9 @@ function update_script() {
|
||||
systemctl stop nginx "$PHP_FPM_SERVICE"
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
create_backup /opt/chevereto/app/env.php \
|
||||
/opt/chevereto/images \
|
||||
/opt/chevereto/content
|
||||
create_backup /opt/chevereto/app/env.php /opt/chevereto/content
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "chevereto" "chevereto/chevereto" "tarball"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="images" fetch_and_deploy_gh_release "chevereto" "chevereto/chevereto" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ function update_script() {
|
||||
if check_for_gh_release "cloudreve" "cloudreve/cloudreve"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop cloudreve
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
fetch_and_deploy_gh_release "cloudreve" "cloudreve/cloudreve" "prebuild" "latest" "/opt/cloudreve" "*linux_$(arch_resolve).tar.gz"
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ function update_script() {
|
||||
if check_for_gh_release "ConvertX" "C4illin/ConvertX"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop convertx
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
ensure_dependencies libreoffice-writer dasel graphicsmagick libemail-outlook-message-perl libheif-examples libjxl-tools resvg
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ function update_script() {
|
||||
|
||||
msg_warn "⚠️ ${APP} has been migrated to an addon script."
|
||||
echo ""
|
||||
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
|
||||
echo -e "${INFO}${YW}This is a one-time migration. After this, you can update ${APP} anytime with:${CL}"
|
||||
echo -e "${TAB}${TAB}${GN}update_coolify${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
|
||||
echo ""
|
||||
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
|
||||
@@ -58,7 +58,7 @@ MIGRATION_EOF
|
||||
ln -sf /usr/bin/update /usr/bin/update_coolify 2>/dev/null || true
|
||||
msg_ok "Migration complete"
|
||||
|
||||
msg_info "Running addon update"
|
||||
echo -e "${INFO}${YW}Running addon update${CL}"
|
||||
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -33,18 +33,11 @@ function update_script() {
|
||||
if check_for_gh_release "cryptpad" "cryptpad/cryptpad"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop cryptpad
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/cryptpad/config/config.js \
|
||||
/opt/cryptpad/blob \
|
||||
/opt/cryptpad/block \
|
||||
/opt/cryptpad/customize \
|
||||
/opt/cryptpad/data \
|
||||
/opt/cryptpad/datastore \
|
||||
/opt/cryptpad/www/common/onlyoffice/dist \
|
||||
/opt/cryptpad/onlyoffice-conf
|
||||
create_backup /opt/cryptpad/config/config.js /opt/cryptpad/www/common/onlyoffice/dist
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad" "tarball"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="blob block customize data datastore onlyoffice-conf" fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -137,7 +137,6 @@ EOF
|
||||
set +o allexport
|
||||
if [[ -n "$POSTGRES_DB" ]] && [[ -n "$POSTGRES_USER" ]] && [[ -n "$POSTGRES_PASSWORD" ]]; then
|
||||
PGPASSWORD=$POSTGRES_PASSWORD pg_dump -U "$POSTGRES_USER" -h "${POSTGRES_HOST:-localhost}" -p "${POSTGRES_PORT:-5432}" "$POSTGRES_DB" >/tmp/dispatcharr_db_$(date +%F).sql
|
||||
msg_info "Database backup created"
|
||||
fi
|
||||
fi
|
||||
$STD tar -czf "$BACKUP_FILE" -C /opt dispatcharr /tmp/dispatcharr_db_*.sql
|
||||
@@ -150,7 +149,7 @@ EOF
|
||||
|
||||
msg_info "Updating Dispatcharr Backend"
|
||||
if ! grep -q "DJANGO_SECRET_KEY" /opt/dispatcharr/.env; then
|
||||
DJANGO_SECRET=$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9' | cut -c1-50)
|
||||
DJANGO_SECRET=$(random_password 50)
|
||||
echo "DJANGO_SECRET_KEY=$DJANGO_SECRET" >>/opt/dispatcharr/.env
|
||||
fi
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ function update_script() {
|
||||
|
||||
msg_warn "⚠️ ${APP} has been migrated to an addon script."
|
||||
echo ""
|
||||
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
|
||||
echo -e "${INFO}${YW}This is a one-time migration. After this, you can update ${APP} anytime with:${CL}"
|
||||
echo -e "${TAB}${TAB}${GN}update_dockge${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
|
||||
echo ""
|
||||
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
|
||||
@@ -60,7 +60,7 @@ MIGRATION_EOF
|
||||
ln -sf /usr/bin/update /usr/bin/update_dockge 2>/dev/null || true
|
||||
msg_ok "Migration complete"
|
||||
|
||||
msg_info "Running addon update"
|
||||
echo -e "${INFO}${YW}Running addon update${CL}"
|
||||
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -38,9 +38,9 @@ function update_script() {
|
||||
systemctl stop docmost
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/docmost/.env /opt/docmost/data
|
||||
create_backup /opt/docmost/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ function update_script() {
|
||||
|
||||
msg_warn "⚠️ ${APP} has been migrated to an addon script."
|
||||
echo ""
|
||||
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
|
||||
echo -e "${INFO}${YW}This is a one-time migration. After this, you can update ${APP} anytime with:${CL}"
|
||||
echo -e "${TAB}${TAB}${GN}update_dokploy${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
|
||||
echo ""
|
||||
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
|
||||
@@ -58,7 +58,7 @@ MIGRATION_EOF
|
||||
ln -sf /usr/bin/update /usr/bin/update_dokploy 2>/dev/null || true
|
||||
msg_ok "Migration complete"
|
||||
|
||||
msg_info "Running addon update"
|
||||
echo -e "${INFO}${YW}Running addon update${CL}"
|
||||
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ function update_script() {
|
||||
if check_for_gh_release "domain-locker" "Lissy93/domain-locker"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop domain-locker
|
||||
msg_info "Service stopped"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
PG_VERSION="17" setup_postgresql
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
@@ -51,7 +51,7 @@ function update_script() {
|
||||
source /opt/domain-locker.env
|
||||
set +a
|
||||
$STD npm run build
|
||||
msg_info "Built Domain-Locker"
|
||||
msg_ok "Built Domain-Locker"
|
||||
|
||||
msg_info "Restarting Services"
|
||||
systemctl start domain-locker
|
||||
|
||||
@@ -42,7 +42,7 @@ function update_script() {
|
||||
if check_for_gh_release "domain-monitor" "Hosteroid/domain-monitor"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop apache2
|
||||
msg_info "Service stopped"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/domain-monitor/.env
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ function update_script() {
|
||||
if check_for_gh_release "duplicati" "duplicati/duplicati"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop duplicati
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "duplicati-*-linux-$(arch_resolve "x64" "arm64")-gui.deb"
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ function update_script() {
|
||||
if check_for_gh_release "excalidraw" "excalidraw/excalidraw"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop excalidraw
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw" "tarball"
|
||||
|
||||
|
||||
@@ -36,9 +36,8 @@ function update_script() {
|
||||
systemctl stop flame
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/flame/.env \
|
||||
/opt/flame/data
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "flame" "pawelmalak/flame" "tarball"
|
||||
create_backup /opt/flame/.env
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "flame" "pawelmalak/flame" "tarball"
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Application"
|
||||
|
||||
@@ -37,7 +37,7 @@ function update_script() {
|
||||
if check_for_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop fluid-calendar
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/fluid-calendar/.env
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar" "tarball"
|
||||
|
||||
@@ -50,10 +50,10 @@ function update_script() {
|
||||
echo ""
|
||||
read -r -p "Final confirmation - proceed? (y/N): " CONFIRM2
|
||||
if [[ ! "$CONFIRM2" =~ ^[Yy]$ ]]; then
|
||||
msg_info "Update cancelled. Please backup your configuration before proceeding."
|
||||
msg_warn "Update cancelled. Please backup your configuration before proceeding."
|
||||
exit 0
|
||||
fi
|
||||
msg_info "Proceeding with version $APP_VERSION update. All configuration will be cleared as warned."
|
||||
msg_warn "Proceeding with version $APP_VERSION update. All configuration will be cleared as warned."
|
||||
rm -rf /opt/gitea-mirror
|
||||
fi
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ function update_script() {
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop graylog-datanode
|
||||
systemctl stop graylog-server
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
CURRENT_VERSION=$(apt list --installed 2>/dev/null | grep graylog-server | grep -oP '\d+\.\d+\.\d+')
|
||||
|
||||
|
||||
@@ -38,9 +38,9 @@ function update_script() {
|
||||
systemctl stop grist
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/grist/.env /opt/grist/docs /opt/grist/grist-sessions.db /opt/grist/landing.db
|
||||
create_backup /opt/grist/.env /opt/grist/grist-sessions.db /opt/grist/landing.db
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="docs" fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ function update_script() {
|
||||
[ -d /opt/.data ] && mv /opt/.data /opt/homebox/.data
|
||||
|
||||
if ! grep -q "HBOX_AUTH_API_KEY_PEPPER" /opt/homebox/.env; then
|
||||
AUTH_KEY=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)
|
||||
AUTH_KEY=$(random_password 32)
|
||||
echo "HBOX_AUTH_API_KEY_PEPPER=${AUTH_KEY}" >>/opt/homebox/.env
|
||||
fi
|
||||
|
||||
|
||||
@@ -36,9 +36,9 @@ function update_script() {
|
||||
systemctl stop homelable
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/homelable/backend/.env /opt/homelable/data /opt/homelable/mcp/.env
|
||||
create_backup /opt/homelable/backend/.env /opt/homelable/mcp/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homelable" "Pouzor/homelable" "tarball" "latest" "/opt/homelable"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "homelable" "Pouzor/homelable" "tarball" "latest" "/opt/homelable"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -38,10 +38,10 @@ function update_script() {
|
||||
systemctl stop homepage
|
||||
msg_ok "Stopped service"
|
||||
|
||||
create_backup /opt/homepage/.env /opt/homepage/config
|
||||
create_backup /opt/homepage/.env
|
||||
BACKUP_DIR=/opt/homepage-assets.backup create_backup /opt/homepage/public/images /opt/homepage/public/icons
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homepage" "gethomepage/homepage" "tarball"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="config" fetch_and_deploy_gh_release "homepage" "gethomepage/homepage" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -55,18 +55,13 @@ function update_script() {
|
||||
printf '["%s"]\n' "$(<~/.hortusfox)" >app/migrations/verhist.json
|
||||
fi
|
||||
|
||||
create_backup \
|
||||
/opt/hortusfox/.env \
|
||||
create_backup /opt/hortusfox/.env \
|
||||
/opt/hortusfox/app/migrations/migrations.list \
|
||||
/opt/hortusfox/app/migrations/verhist.json \
|
||||
/opt/hortusfox/public/img \
|
||||
/opt/hortusfox/public/attachments \
|
||||
/opt/hortusfox/public/backup \
|
||||
/opt/hortusfox/public/exports \
|
||||
/opt/hortusfox/public/snd \
|
||||
/opt/hortusfox/public/themes
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "hortusfox" "danielbrendel/hortusfox-web" "tarball"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="public/attachments public/backup public/exports public/snd" fetch_and_deploy_gh_release "hortusfox" "danielbrendel/hortusfox-web" "tarball"
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating HortusFox"
|
||||
|
||||
@@ -262,7 +262,6 @@ EOF
|
||||
chown immich:immich "${UPLOAD_DIR:-$INSTALL_DIR/upload}" 2>/dev/null || true
|
||||
chown immich:immich ./uv.lock
|
||||
export VIRTUAL_ENV="${ML_DIR}"/ml-venv
|
||||
export UV_HTTP_TIMEOUT=300
|
||||
if [[ -f ~/.openvino ]]; then
|
||||
ML_PYTHON="python3.13"
|
||||
msg_info "Pre-installing Python ${ML_PYTHON} for machine-learning"
|
||||
|
||||
@@ -42,9 +42,9 @@ function update_script() {
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
PG_VERSION="17" setup_postgresql
|
||||
|
||||
create_backup /opt/investbrain/.env /opt/investbrain/storage
|
||||
create_backup /opt/investbrain/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Investbrain" "investbrainapp/investbrain" "tarball" "latest" "/opt/investbrain"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="storage" fetch_and_deploy_gh_release "Investbrain" "investbrainapp/investbrain" "tarball" "latest" "/opt/investbrain"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -36,9 +36,9 @@ function update_script() {
|
||||
systemctl stop caddy
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
create_backup /opt/invoiceshelf/.env /opt/invoiceshelf/storage
|
||||
create_backup /opt/invoiceshelf/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "invoiceshelf" "InvoiceShelf/InvoiceShelf" "tarball"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="storage" fetch_and_deploy_gh_release "invoiceshelf" "InvoiceShelf/InvoiceShelf" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ function update_script() {
|
||||
msg_error "Unable to detect latest Kasm release URL."
|
||||
exit 250
|
||||
fi
|
||||
msg_info "Checked for new version"
|
||||
msg_ok "Checked for new version"
|
||||
|
||||
msg_info "Removing outdated docker-compose plugin"
|
||||
[ -f ~/.docker/cli-plugins/docker-compose ] && rm -rf ~/.docker/cli-plugins/docker-compose
|
||||
|
||||
73
ct/keeper.sh
Normal file
73
ct/keeper.sh
Normal file
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env bash
|
||||
_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/ridafkih/keeper.sh
|
||||
|
||||
APP="Keeper"
|
||||
var_tags="${var_tags:-calendar;sync}"
|
||||
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 /opt/keeper ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "keeper" "ridafkih/keeper.sh"; then
|
||||
msg_info "Stopping Keeper"
|
||||
systemctl stop keeper-web keeper-worker keeper-cron keeper-api
|
||||
msg_ok "Stopped Keeper"
|
||||
|
||||
msg_info "Updating Bun"
|
||||
$STD bun upgrade
|
||||
msg_ok "Updated Bun"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "keeper" "ridafkih/keeper.sh" "tarball"
|
||||
|
||||
msg_info "Building Keeper"
|
||||
cd /opt/keeper
|
||||
$STD bun install --frozen-lockfile
|
||||
$STD bun run --cwd services/api build
|
||||
$STD bun run --cwd services/cron build
|
||||
$STD bun run --cwd services/worker build
|
||||
$STD bun run --cwd applications/web build
|
||||
msg_ok "Built Keeper"
|
||||
|
||||
msg_info "Migrating Keeper Database"
|
||||
$STD bun --env-file=/opt/keeper_data/.env packages/database/scripts/migrate.ts
|
||||
msg_ok "Migrated Keeper Database"
|
||||
|
||||
msg_info "Starting Keeper"
|
||||
systemctl start keeper-api keeper-cron keeper-worker keeper-web
|
||||
msg_ok "Started Keeper"
|
||||
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}"
|
||||
@@ -66,7 +66,7 @@ MIGRATION_EOF
|
||||
ln -sf /usr/bin/update /usr/bin/update_komodo 2>/dev/null || true
|
||||
msg_ok "Migration complete"
|
||||
|
||||
msg_info "Running addon update"
|
||||
echo -e "${INFO}${YW}Running addon update${CL}"
|
||||
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -37,8 +37,8 @@ function update_script() {
|
||||
systemctl stop php8.4-fpm librenms-scheduler.timer
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
create_backup /opt/librenms/.env /opt/librenms/config.php /opt/librenms/rrd
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "librenms" "librenms/librenms" "tarball"
|
||||
create_backup /opt/librenms/.env /opt/librenms/config.php
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="rrd" fetch_and_deploy_gh_release "librenms" "librenms/librenms" "tarball"
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating LibreNMS"
|
||||
|
||||
@@ -36,9 +36,9 @@ function update_script() {
|
||||
|
||||
RUST_CRATES="monolith" setup_rust
|
||||
|
||||
create_backup /opt/linkwarden/.env /opt/linkwarden/data
|
||||
create_backup /opt/linkwarden/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden" "tarball"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ function update_script() {
|
||||
if check_for_gh_release "livebook" "livebook-dev/livebook"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop livebook
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating Container"
|
||||
apt_update_safe
|
||||
@@ -47,10 +47,11 @@ function update_script() {
|
||||
$STD mix escript.install hex livebook --force
|
||||
|
||||
chown -R livebook:livebook /opt/livebook /data
|
||||
msg_ok "Updated Livebook"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start livebook
|
||||
msg_info "Started Service"
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
|
||||
@@ -33,7 +33,7 @@ function update_script() {
|
||||
if check_for_gh_release "metabase" "metabase/metabase"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop metabase
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Creating backup"
|
||||
mv /opt/metabase/.env /opt
|
||||
|
||||
@@ -36,9 +36,9 @@ function update_script() {
|
||||
systemctl stop nametag
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/nametag/.env /opt/nametag/data
|
||||
create_backup /opt/nametag/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nametag" "mattogodoy/nametag" "tarball" "latest" "/opt/nametag"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "nametag" "mattogodoy/nametag" "tarball" "latest" "/opt/nametag"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -216,6 +216,7 @@ EOF
|
||||
$STD yarn install --network-timeout 600000
|
||||
$STD yarn locale-compile
|
||||
$STD yarn build
|
||||
$STD yarn cache clean
|
||||
cp -r /opt/nginxproxymanager/frontend/dist/* /app/frontend
|
||||
cp -r /opt/nginxproxymanager/frontend/public/images/* /app/frontend/images
|
||||
msg_ok "Built Frontend"
|
||||
@@ -241,6 +242,7 @@ EOF
|
||||
sed -i 's/"client": "sqlite3"/"client": "better-sqlite3"/' /app/config/production.json
|
||||
cd /app
|
||||
$STD yarn install --network-timeout 600000
|
||||
$STD yarn cache clean
|
||||
msg_ok "Initialized Backend"
|
||||
|
||||
msg_info "Starting Services"
|
||||
|
||||
@@ -49,7 +49,6 @@ function update_script() {
|
||||
|
||||
msg_info "Installing uv-based Open-WebUI"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
export UV_HTTP_TIMEOUT=300
|
||||
for attempt in $(seq 1 3); do
|
||||
$STD uv tool install --python 3.12 --constraint <(echo "numba>=0.60") open-webui[all] && break
|
||||
[[ $attempt -lt 3 ]] && msg_warn "Open WebUI install attempt $attempt failed, retrying..." && sleep 10
|
||||
@@ -126,7 +125,6 @@ EOF
|
||||
OTEL_ARGS+=(--with "$pkg")
|
||||
done < <(uv pip list --python "$OWUI_PYTHON" --format freeze 2>/dev/null | grep -i '^opentelemetry-' | cut -d= -f1)
|
||||
fi
|
||||
export UV_HTTP_TIMEOUT=300
|
||||
for attempt in $(seq 1 3); do
|
||||
$STD uv tool install --force --python 3.12 --constraint <(echo "numba>=0.60") "${OTEL_ARGS[@]}" open-webui[all] && break
|
||||
[[ $attempt -lt 3 ]] && msg_warn "Open WebUI update attempt $attempt failed, retrying..." && sleep 10
|
||||
|
||||
@@ -36,11 +36,7 @@ function update_script() {
|
||||
systemctl stop ownfoil
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/ownfoil/app/config
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ownfoil" "a1ex4/ownfoil" "tarball" "${RELEASE}"
|
||||
|
||||
restore_backup
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="app/config" fetch_and_deploy_gh_release "ownfoil" "a1ex4/ownfoil" "tarball" "${RELEASE}"
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
cd /opt/ownfoil
|
||||
|
||||
@@ -52,7 +52,7 @@ function update_script() {
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop pangolin
|
||||
systemctl stop gerbil
|
||||
msg_info "Service stopped"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
DB_URL=$(sed -n 's/.*connection_string: "\(.*\)".*/\1/p' /opt/pangolin/config/config.yml)
|
||||
create_backup /opt/pangolin/config
|
||||
|
||||
@@ -36,9 +36,9 @@ function update_script() {
|
||||
systemctl stop passwordpusher
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/passwordpusher/storage /opt/passwordpusher/.env.production
|
||||
create_backup /opt/passwordpusher/.env.production
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "passwordpusher" "pglombardo/PasswordPusher" "tarball"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="storage" fetch_and_deploy_gh_release "passwordpusher" "pglombardo/PasswordPusher" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ function update_script() {
|
||||
if check_for_gh_release "PeaNUT" "Brandawg93/PeaNUT"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop peanut
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "PeaNUT" "Brandawg93/PeaNUT" "tarball" "latest" "/opt/peanut"
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ function update_script() {
|
||||
if check_for_gh_release "plant-it" "MDeLuise/plant-it" "${RELEASE}" "last version that includes the web frontend"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop plant-it
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "plant-it" "MDeLuise/plant-it" "singlefile" "${RELEASE}" "/opt/plant-it/backend" "server.jar"
|
||||
fetch_and_deploy_gh_release "plant-it-front" "MDeLuise/plant-it" "prebuild" "${RELEASE}" "/opt/plant-it/frontend" "client.tar.gz"
|
||||
|
||||
@@ -37,10 +37,9 @@ function update_script() {
|
||||
systemctl stop postiz-orchestrator postiz-frontend postiz-backend
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
create_backup /opt/postiz/.env \
|
||||
/opt/postiz/uploads
|
||||
create_backup /opt/postiz/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "postiz" "gitroomhq/postiz-app" "tarball"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="uploads" fetch_and_deploy_gh_release "postiz" "gitroomhq/postiz-app" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -35,12 +35,8 @@ function update_script() {
|
||||
systemctl stop radicale
|
||||
msg_ok "Stopped service"
|
||||
|
||||
create_backup /opt/radicale/users
|
||||
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Radicale" "Kozea/Radicale" "tarball" "latest" "/opt/radicale"
|
||||
|
||||
restore_backup
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="users" fetch_and_deploy_gh_release "Radicale" "Kozea/Radicale" "tarball" "latest" "/opt/radicale"
|
||||
|
||||
if grep -q 'start.sh' /etc/systemd/system/radicale.service; then
|
||||
sed -i -e '/^Description/i[Unit]' \
|
||||
|
||||
@@ -33,7 +33,7 @@ function update_script() {
|
||||
if check_for_gh_release "revealjs" "hakimel/reveal.js"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop revealjs
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
cp /opt/revealjs/index.html /opt
|
||||
fetch_and_deploy_gh_release "revealjs" "hakimel/reveal.js" "tarball"
|
||||
|
||||
@@ -35,7 +35,7 @@ function update_script() {
|
||||
|
||||
msg_warn "⚠️ ${APP} has been migrated to an addon script."
|
||||
echo ""
|
||||
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
|
||||
echo -e "${INFO}${YW}This is a one-time migration. After this, you can update ${APP} anytime with:${CL}"
|
||||
echo -e "${TAB}${TAB}${GN}update_runtipi${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
|
||||
echo ""
|
||||
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
|
||||
@@ -58,7 +58,7 @@ MIGRATION_EOF
|
||||
ln -sf /usr/bin/update /usr/bin/update_runtipi 2>/dev/null || true
|
||||
msg_ok "Migration complete"
|
||||
|
||||
msg_info "Running addon update"
|
||||
echo -e "${INFO}${YW}Running addon update${CL}"
|
||||
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ update_deb_based() {
|
||||
if [[ -f /lib/systemd/system/rustdesk-api.service ]]; then
|
||||
systemctl stop rustdesk-api
|
||||
fi
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
fetch_and_deploy_gh_release "rustdesk-hbbr" "lejianwen/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-hbbr*$(arch_resolve).deb"
|
||||
fetch_and_deploy_gh_release "rustdesk-hbbs" "lejianwen/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-hbbs*$(arch_resolve).deb"
|
||||
|
||||
@@ -33,7 +33,7 @@ function update_script() {
|
||||
if check_for_gh_release "seelf" "YuukanOO/seelf"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop seelf
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating seelf"
|
||||
cd /opt/seelf
|
||||
|
||||
@@ -36,9 +36,9 @@ function update_script() {
|
||||
systemctl stop caddy
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
create_backup /opt/solidtime/.env /opt/solidtime/storage
|
||||
create_backup /opt/solidtime/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "solidtime" "solidtime-io/solidtime" "tarball"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="storage" fetch_and_deploy_gh_release "solidtime" "solidtime-io/solidtime" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -38,9 +38,9 @@ function update_script() {
|
||||
systemctl stop soulsync
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/soulsync/config /opt/soulsync/data
|
||||
create_backup /opt/soulsync/config
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "soulsync" "Nezreka/SoulSync" "tarball"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "soulsync" "Nezreka/SoulSync" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -37,11 +37,7 @@ function update_script() {
|
||||
systemctl stop sparkyfitness-server nginx
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
create_backup /opt/sparkyfitness/SparkyFitnessServer/uploads /opt/sparkyfitness/SparkyFitnessServer/backup
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "sparkyfitness" "CodeWithCJ/SparkyFitness" "tarball"
|
||||
|
||||
restore_backup
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="SparkyFitnessServer/uploads SparkyFitnessServer/backup" fetch_and_deploy_gh_release "sparkyfitness" "CodeWithCJ/SparkyFitness" "tarball"
|
||||
|
||||
PNPM_VERSION="$(jq -r '.packageManager | split("@")[1]' /opt/sparkyfitness/package.json)"
|
||||
NODE_VERSION="25" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs
|
||||
|
||||
@@ -34,7 +34,7 @@ function update_script() {
|
||||
if check_for_gh_release "streamlink-webui" "CrazyWolf13/streamlink-webui"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop streamlink-webui
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
setup_uv
|
||||
|
||||
@@ -34,7 +34,7 @@ function update_script() {
|
||||
if check_for_gh_release "stylus" "mmastrac/stylus"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop stylus
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
fetch_and_deploy_gh_release "stylus" "mmastrac/stylus" "singlefile" "latest" "/usr/bin/" "*_linux_$(arch_resolve)"
|
||||
|
||||
|
||||
@@ -65,9 +65,7 @@ EOF
|
||||
msg_ok "Stopped services"
|
||||
fi
|
||||
|
||||
create_backup /opt/sure/storage
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Sure" "we-promise/sure" "tarball" "latest" "/opt/sure"
|
||||
restore_backup
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="storage" fetch_and_deploy_gh_release "Sure" "we-promise/sure" "tarball" "latest" "/opt/sure"
|
||||
RUBY_VERSION="$(cat /opt/sure/.ruby-version)" RUBY_INSTALL_RAILS=false HOME=/root setup_ruby
|
||||
|
||||
msg_info "Updating Sure"
|
||||
|
||||
@@ -44,11 +44,11 @@ function update_script() {
|
||||
systemctl stop tandoor
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/tandoor/config /opt/tandoor/api /opt/tandoor/mediafiles /opt/tandoor/staticfiles /opt/tandoor/.env
|
||||
create_backup /opt/tandoor/.env
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="config api mediafiles staticfiles" fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -163,13 +163,9 @@ EOF
|
||||
fi
|
||||
msg_ok "Migrated Configuration"
|
||||
|
||||
create_backup \
|
||||
/opt/termix/db/data \
|
||||
/opt/termix/data \
|
||||
/opt/termix/uploads \
|
||||
/opt/termix/.env
|
||||
create_backup /opt/termix/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix" "tarball"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="db/data data uploads" fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -41,9 +41,9 @@ function update_script() {
|
||||
systemctl stop transmute
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/transmute/backend/.env /opt/transmute/data
|
||||
create_backup /opt/transmute/backend/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "transmute" "transmute-app/transmute" "tarball"
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "transmute" "transmute-app/transmute" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -36,11 +36,7 @@ function update_script() {
|
||||
systemctl stop xyops
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/xyops/data /opt/xyops/conf
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "xyops" "pixlcore/xyops" "tarball"
|
||||
|
||||
restore_backup
|
||||
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data conf" fetch_and_deploy_gh_release "xyops" "pixlcore/xyops" "tarball"
|
||||
|
||||
msg_info "Rebuilding Application"
|
||||
cd /opt/xyops
|
||||
|
||||
@@ -30,10 +30,10 @@ PG_DB_NAME="adventurelog_db" PG_DB_USER="adventurelog_user" PG_DB_EXTENSIONS="po
|
||||
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog" "tarball"
|
||||
|
||||
msg_info "Installing AdventureLog (Patience)"
|
||||
SECRET_KEY="$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)"
|
||||
SECRET_KEY="$(random_password 32)"
|
||||
echo "AdventureLog Secret: $SECRET_KEY" >>~/adventurelog.creds
|
||||
DJANGO_ADMIN_USER="djangoadmin"
|
||||
DJANGO_ADMIN_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
|
||||
DJANGO_ADMIN_PASS="$(random_password 13)"
|
||||
cat <<EOF >/opt/adventurelog/backend/server/.env
|
||||
PGHOST='localhost'
|
||||
PGDATABASE='${PG_DB_NAME}'
|
||||
|
||||
@@ -160,7 +160,7 @@ systemctl enable -q --now redis-server affine-web affine-worker
|
||||
msg_ok "Created Services"
|
||||
|
||||
msg_info "Creating Admin User"
|
||||
ADMIN_PASS=$(openssl rand -base64 12)
|
||||
ADMIN_PASS=$(random_password 16)
|
||||
for i in {1..30}; do
|
||||
if curl -s http://localhost:3010/info >/dev/null 2>&1; then
|
||||
break
|
||||
|
||||
@@ -37,8 +37,8 @@ msg_ok "Installed PHP/Redis"
|
||||
msg_info "Installing MySQL Database"
|
||||
DB_NAME=nextcloud
|
||||
DB_USER=nextcloud
|
||||
DB_PASS="$(openssl rand -base64 18 | cut -c1-13)"
|
||||
ADMIN_PASS="$(openssl rand -base64 18 | cut -c1-13)"
|
||||
DB_PASS="$(random_password 13)"
|
||||
ADMIN_PASS="$(random_password 13)"
|
||||
echo "" >>~/nextcloud.creds
|
||||
echo -e "MySQL Admin Password: \e[32m$ADMIN_PASS\e[0m" >>~/nextcloud.creds
|
||||
echo -e "Nextcloud Database Username: \e[32m$DB_USER\e[0m" >>~/nextcloud.creds
|
||||
|
||||
@@ -40,7 +40,7 @@ msg_ok "Installed Apache Airflow"
|
||||
msg_info "Configuring Application"
|
||||
FERNET_KEY=$(/opt/airflow/.venv/bin/python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())")
|
||||
SECRET_KEY=$(openssl rand -hex 32)
|
||||
ADMIN_PASS=$(openssl rand -base64 12 | tr -dc 'a-zA-Z0-9' | cut -c1-12)
|
||||
ADMIN_PASS=$(random_password 12)
|
||||
cat <<EOF >/opt/airflow/.env
|
||||
AIRFLOW_HOME=/opt/airflow
|
||||
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}
|
||||
|
||||
@@ -15,7 +15,7 @@ update_os
|
||||
|
||||
msg_info "Installing Apache CouchDB"
|
||||
ERLANG_COOKIE=$(openssl rand -hex 32)
|
||||
ADMIN_PASS="$(openssl rand -base64 18 | cut -c1-13)"
|
||||
ADMIN_PASS="$(random_password 13)"
|
||||
debconf-set-selections <<<"couchdb couchdb/cookie string $ERLANG_COOKIE"
|
||||
debconf-set-selections <<<"couchdb couchdb/mode select standalone"
|
||||
debconf-set-selections <<<"couchdb couchdb/bindaddress string 0.0.0.0"
|
||||
|
||||
@@ -124,7 +124,6 @@ export UV_NO_BINARY_PACKAGE="cryptography lxml python-kadmin-rs xmlsec"
|
||||
export UV_COMPILE_BYTECODE="1"
|
||||
export UV_LINK_MODE="copy"
|
||||
export UV_NATIVE_TLS="1"
|
||||
export UV_HTTP_TIMEOUT="300"
|
||||
export UV_PYTHON_INSTALL_DIR="/usr/local/bin"
|
||||
cd /opt/authentik
|
||||
for attempt in 1 2 3; do
|
||||
@@ -142,7 +141,7 @@ msg_ok "Setup python server"
|
||||
msg_info "Creating authentik config"
|
||||
mkdir -p /etc/authentik
|
||||
mv /opt/authentik/authentik/lib/default.yml /etc/authentik/config.yml
|
||||
yq -i ".secret_key = \"$(openssl rand -base64 128 | tr -dc 'a-zA-Z0-9' | head -c64)\"" /etc/authentik/config.yml
|
||||
yq -i ".secret_key = \"$(random_password 64)\"" /etc/authentik/config.yml
|
||||
yq -i ".postgresql.password = \"${PG_DB_PASS}\"" /etc/authentik/config.yml
|
||||
yq -i ".events.context_processors.geoip = \"/opt/authentik-data/geoip/GeoLite2-City.mmdb\"" /etc/authentik/config.yml
|
||||
yq -i ".events.context_processors.asn = \"/opt/authentik-data/geoip/GeoLite2-ASN.mmdb\"" /etc/authentik/config.yml
|
||||
|
||||
@@ -33,7 +33,7 @@ $STD uv venv --clear .venv
|
||||
$STD source .venv/bin/activate
|
||||
$STD uv pip install -r requirements.txt
|
||||
cp babybuddy/settings/production.example.py babybuddy/settings/production.py
|
||||
SECRET_KEY=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)
|
||||
SECRET_KEY=$(random_password 32)
|
||||
ALLOWED_HOSTS=$(hostname -I | tr ' ' ',' | sed 's/,$//')",127.0.0.1,localhost"
|
||||
sed -i \
|
||||
-e "s/^SECRET_KEY = \"\"/SECRET_KEY = \"$SECRET_KEY\"/" \
|
||||
|
||||
@@ -21,7 +21,7 @@ PG_VERSION="16" setup_postgresql
|
||||
PHP_APACHE="YES" PHP_VERSION="8.3" setup_php
|
||||
setup_composer
|
||||
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal" "tarball"
|
||||
PG_DB_NAME="baikal_db" PG_DB_USER="baikal_user" PG_DB_PASS="$(openssl rand -base64 12)" setup_postgresql_db
|
||||
PG_DB_NAME="baikal_db" PG_DB_USER="baikal_user" PG_DB_PASS="$(random_password 16)" setup_postgresql_db
|
||||
|
||||
msg_info "Configuring Baikal"
|
||||
cd /opt/baikal
|
||||
|
||||
@@ -34,7 +34,7 @@ msg_info "Configuring PHP"
|
||||
PHPVER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION . "\n";')
|
||||
sed -i.bak -E 's/^\s*;?\s*ffi\.enable\s*=.*/ffi.enable=true/' /etc/php/${PHPVER}/fpm/php.ini
|
||||
$STD systemctl reload php${PHPVER}-fpm
|
||||
msg_info "configured PHP"
|
||||
msg_ok "Configured PHP"
|
||||
|
||||
msg_info "Installing Bar Assistant"
|
||||
cd /opt/bar-assistant
|
||||
|
||||
@@ -50,7 +50,7 @@ NODE_OPTIONS="--max-old-space-size=4096" $STD npm run build
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Configuring Baserow"
|
||||
SECRET_KEY=$(openssl rand -base64 64 | tr -dc 'a-zA-Z0-9' | head -c50)
|
||||
SECRET_KEY=$(random_password 50)
|
||||
cat <<EOF >/opt/baserow/.env
|
||||
DATABASE_HOST=localhost
|
||||
DATABASE_PORT=5432
|
||||
|
||||
@@ -28,7 +28,7 @@ fi
|
||||
|
||||
msg_info "Setting up Bichon"
|
||||
mkdir -p /opt/bichon-data
|
||||
BICHON_ENC_PASSWORD=$(openssl rand -base64 32 | tr -d "=+/" | cut -c1-32)
|
||||
BICHON_ENC_PASSWORD=$(random_password 32)
|
||||
|
||||
cat <<EOF >/opt/bichon/bichon.env
|
||||
BICHON_ROOT_DIR=/opt/bichon-data
|
||||
|
||||
@@ -17,7 +17,7 @@ NODE_VERSION="22" setup_nodejs
|
||||
fetch_and_deploy_gh_release "bytestash" "jordan-dalby/ByteStash" "tarball"
|
||||
|
||||
msg_info "Installing ByteStash"
|
||||
JWT_SECRET=$(openssl rand -base64 32 | tr -d '/+=')
|
||||
JWT_SECRET=$(random_password 42)
|
||||
cd /opt/bytestash/server
|
||||
$STD npm install
|
||||
cd /opt/bytestash/client
|
||||
|
||||
@@ -25,7 +25,7 @@ msg_ok "Installed Checkmk"
|
||||
msg_info "Creating Service"
|
||||
SITE_NAME="monitoring"
|
||||
$STD omd create "$SITE_NAME"
|
||||
MKPASSWORD=$(openssl rand -base64 18 | tr -d '/+=' | cut -c1-16)
|
||||
MKPASSWORD=$(random_password 16)
|
||||
|
||||
echo -e "$MKPASSWORD\n$MKPASSWORD" | su - "$SITE_NAME" -c "cmk-passwd cmkadmin --stdin"
|
||||
$STD omd start "$SITE_NAME"
|
||||
|
||||
@@ -63,7 +63,7 @@ cd /opt/convertx
|
||||
mkdir -p data
|
||||
$STD bun install
|
||||
|
||||
JWT_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32)
|
||||
JWT_SECRET=$(random_password 32)
|
||||
cat <<EOF >/opt/convertx/.env
|
||||
JWT_SECRET=$JWT_SECRET
|
||||
HTTP_ALLOWED=true
|
||||
|
||||
@@ -55,7 +55,7 @@ WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl enable -q --now cosmos
|
||||
msg_info "Created Service"
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
@@ -35,7 +35,7 @@ msg_ok "Installed Directus"
|
||||
msg_info "Configuring Directus"
|
||||
DIRECTUS_KEY=$(openssl rand -hex 32)
|
||||
DIRECTUS_SECRET=$(openssl rand -hex 32)
|
||||
DIRECTUS_ADMIN_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
|
||||
DIRECTUS_ADMIN_PASSWORD=$(random_password 16)
|
||||
cat <<EOF >/opt/directus/.env
|
||||
HOST="0.0.0.0"
|
||||
PORT=8055
|
||||
|
||||
@@ -33,7 +33,7 @@ NODE_VERSION="24" setup_nodejs
|
||||
RUBY_VERSION="3.4.4" setup_ruby
|
||||
|
||||
msg_info "Configuring PostgreSQL for Discourse"
|
||||
DISCOURSE_DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
DISCOURSE_DB_PASS=$(random_password 13)
|
||||
PG_HBA=$(find /etc/postgresql -name pg_hba.conf 2>/dev/null | head -n1)
|
||||
sed -i 's/^local\s\+all\s\+all\s\+peer$/local all all md5/' "$PG_HBA"
|
||||
$STD systemctl restart postgresql
|
||||
@@ -97,7 +97,7 @@ $STD bundle exec rails db:seed
|
||||
msg_ok "Set Up Database"
|
||||
|
||||
msg_info "Creating Admin Account"
|
||||
ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
|
||||
ADMIN_PASS=$(random_password 16)
|
||||
$STD bundle exec rails runner "
|
||||
user = User.new(email: 'admin@discourse.local', username: 'admin', password: '${ADMIN_PASS}')
|
||||
user.active = true
|
||||
|
||||
@@ -62,7 +62,7 @@ install -d -m 755 \
|
||||
/data/uploads/{m3us,epgs} \
|
||||
/data/{m3us,epgs}
|
||||
chown -R root:root /data
|
||||
DJANGO_SECRET=$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9' | cut -c1-50)
|
||||
DJANGO_SECRET=$(random_password 50)
|
||||
export DATABASE_URL="postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}"
|
||||
export POSTGRES_DB=$PG_DB_NAME
|
||||
export POSTGRES_USER=$PG_DB_USER
|
||||
|
||||
@@ -39,7 +39,7 @@ fi
|
||||
|
||||
mv .env.example .env
|
||||
mkdir data
|
||||
sed -i -e "s|APP_SECRET=.*|APP_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)|" \
|
||||
sed -i -e "s|APP_SECRET=.*|APP_SECRET=$(random_password 32)|" \
|
||||
-e "s|DATABASE_URL=.*|DATABASE_URL=\"postgres://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME?schema=public\"|" \
|
||||
-e "s|FILE_UPLOAD_SIZE_LIMIT=.*|FILE_UPLOAD_SIZE_LIMIT=50mb|" \
|
||||
-e "s|DRAWIO_URL=.*|DRAWIO_URL=https://embed.diagrams.net|" \
|
||||
|
||||
@@ -22,7 +22,7 @@ msg_ok "Installed Dependencies"
|
||||
setup_mariadb
|
||||
|
||||
msg_info "Setting up Database"
|
||||
ROOT_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
ROOT_PASS=$(random_password 13)
|
||||
$STD mariadb -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$ROOT_PASS'; flush privileges;"
|
||||
cat <<EOF >~/dolibarr.creds
|
||||
Dolibarr DB Credentials
|
||||
|
||||
@@ -46,7 +46,7 @@ set -a
|
||||
source /opt/domain-locker.env
|
||||
set +a
|
||||
$STD npm run build
|
||||
msg_info "Built Domain-Locker"
|
||||
msg_ok "Built Domain-Locker"
|
||||
|
||||
msg_info "Building Database schema"
|
||||
export PGPASSWORD="$DL_PG_PASSWORD"
|
||||
@@ -69,7 +69,7 @@ Restart=always
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now domain-locker
|
||||
msg_info "Created Service"
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
@@ -31,7 +31,7 @@ read -r -p "${TAB3}Type the assembly name of the project: " var_project_name
|
||||
|
||||
msg_info "Setting up FTP Server"
|
||||
useradd ftpuser
|
||||
FTP_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
FTP_PASS=$(random_password 13)
|
||||
usermod --password $(echo ${FTP_PASS} | openssl passwd -1 -stdin) ftpuser
|
||||
mkdir -p /var/www/html
|
||||
usermod -d /var/www/html ftp
|
||||
|
||||
@@ -23,8 +23,8 @@ msg_ok "Installed Dependencies"
|
||||
fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "duplicati-*-linux-$(arch_resolve "x64" "arm64")-gui.deb"
|
||||
|
||||
msg_info "Configuring duplicati"
|
||||
DECRYPTKEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
ADMINPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
DECRYPTKEY=$(random_password 13)
|
||||
ADMINPASS=$(random_password 13)
|
||||
cat <<EOF >~/duplicati.creds
|
||||
Admin password = ${ADMINPASS}
|
||||
Database encryption key = ${DECRYPTKEY}
|
||||
|
||||
@@ -40,7 +40,7 @@ rm -f /usr/sbin/policy-rc.d
|
||||
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/matrix-synapse/homeserver.yaml
|
||||
sed -i 's/'\''::1'\'', //g' /etc/matrix-synapse/homeserver.yaml
|
||||
SECRET=$(openssl rand -hex 32)
|
||||
ADMIN_PASS="$(openssl rand -base64 18 | cut -c1-13)"
|
||||
ADMIN_PASS="$(random_password 13)"
|
||||
echo "enable_registration_without_verification: true" >>/etc/matrix-synapse/homeserver.yaml
|
||||
echo "registration_shared_secret: ${SECRET}" >>/etc/matrix-synapse/homeserver.yaml
|
||||
|
||||
|
||||
@@ -61,8 +61,8 @@ $STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; uv tool insta
|
||||
msg_ok "Installed Frappe Bench"
|
||||
|
||||
msg_info "Initializing Frappe Bench"
|
||||
ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
DB_ROOT_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
ADMIN_PASS=$(random_password 13)
|
||||
DB_ROOT_PASS=$(random_password 13)
|
||||
mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '${DB_ROOT_PASS}'; FLUSH PRIVILEGES;"
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; uv python install 3.14'
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; cd /opt && bench init --frappe-branch version-16 --python "$(uv python find 3.14)" frappe-bench'
|
||||
|
||||
@@ -17,7 +17,7 @@ fetch_and_deploy_gh_release "ezbookkeeping" "mayswind/ezbookkeeping" "prebuild"
|
||||
create_self_signed_cert
|
||||
|
||||
msg_info "Configuring ezBookkeeping"
|
||||
SECRET_KEY=$(openssl rand -base64 64 | tr -dc 'a-zA-Z0-9' | head -c50)
|
||||
SECRET_KEY=$(random_password 50)
|
||||
sed -i "s/enable_gzip = false/enable_gzip = true/" /opt/ezbookkeeping/conf/ezbookkeeping.ini
|
||||
sed -i "s/protocol = http/protocol = https/" /opt/ezbookkeeping/conf/ezbookkeeping.ini
|
||||
sed -i "s/http_port = 8080/http_port = 443/" /opt/ezbookkeeping/conf/ezbookkeeping.ini
|
||||
|
||||
@@ -54,12 +54,11 @@ if [[ "$install_server" =~ ^[Ss]$ ]]; then
|
||||
systemctl enable -q --now fileflows
|
||||
msg_ok "Installed FileFlows Server"
|
||||
else
|
||||
msg_info "Installing FileFlows Agent"
|
||||
stop_spinner
|
||||
read -r -p "${TAB3}Enter FileFlows Server URL (e.g. http://192.168.1.10:19200): " server_url
|
||||
while [[ -z "${server_url// /}" ]]; do
|
||||
read -r -p "${TAB3}Enter FileFlows Server URL (e.g. http://192.168.1.10:19200): " server_url
|
||||
done
|
||||
msg_info "Installing FileFlows Agent"
|
||||
cd /opt/fileflows/Agent
|
||||
before_units="$(systemctl list-unit-files 'fileflows*' --no-legend 2>/dev/null | awk '{print $1}' | sort || true)"
|
||||
$STD dotnet FileFlows.Agent.dll --server "$server_url" --systemd install --root true
|
||||
|
||||
@@ -56,7 +56,7 @@ msg_ok "Configured pg_cron"
|
||||
msg_info "Configuring RabbitMQ"
|
||||
systemctl enable -q --now rabbitmq-server
|
||||
until rabbitmqctl status &>/dev/null; do sleep 1; done
|
||||
RABBITMQ_PASSWORD="$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c24)"
|
||||
RABBITMQ_PASSWORD="$(random_password 24)"
|
||||
$STD rabbitmqctl add_user firecrawl "$RABBITMQ_PASSWORD"
|
||||
$STD rabbitmqctl set_permissions -p / firecrawl ".*" ".*" ".*"
|
||||
msg_ok "Configured RabbitMQ"
|
||||
|
||||
@@ -92,7 +92,7 @@ $STD ldconfig
|
||||
msg_ok "Compiled ffmpeg"
|
||||
|
||||
msg_info "Configuring Fireshare (Patience)"
|
||||
ADMIN_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
ADMIN_PASSWORD=$(random_password 13)
|
||||
SECRET=$(openssl rand -base64 48)
|
||||
mkdir -p /opt/fireshare-{data,videos,images,processed}
|
||||
cd /opt/fireshare
|
||||
|
||||
@@ -25,7 +25,7 @@ NODE_VERSION="24" setup_nodejs
|
||||
fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar" "tarball"
|
||||
|
||||
msg_info "Configuring fluid-calendar"
|
||||
NEXTAUTH_SECRET="$(openssl rand -base64 44 | tr -dc 'a-zA-Z0-9' | cut -c1-32)"
|
||||
NEXTAUTH_SECRET="$(random_password 32)"
|
||||
echo "NextAuth Secret: $NEXTAUTH_SECRET" >>~/$APPLICATION.creds
|
||||
cat <<EOF >/opt/fluid-calendar/.env
|
||||
DATABASE_URL="postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}"
|
||||
|
||||
@@ -69,7 +69,6 @@ chmod +x /usr/local/bin/forgejo-runner
|
||||
echo "${RUNNER_VERSION}" >~/.forgejo-runner
|
||||
msg_ok "Installed Forgejo Runner"
|
||||
|
||||
msg_info "Registering Forgejo Runner"
|
||||
export DOCKER_HOST="unix:///run/podman/podman.sock"
|
||||
|
||||
msg_info "Generating Forgejo Runner Configuration"
|
||||
|
||||
@@ -26,7 +26,7 @@ NODE_VERSION="24" setup_nodejs
|
||||
|
||||
msg_info "Setting up Database"
|
||||
PG_DB_NAME="ghostfolio" PG_DB_USER="ghostfolio" PG_DB_SCHEMA_PERMS="true" setup_postgresql_db
|
||||
REDIS_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
REDIS_PASS=$(random_password 13)
|
||||
ACCESS_TOKEN_SALT=$(openssl rand -base64 32)
|
||||
JWT_SECRET_KEY=$(openssl rand -base64 32)
|
||||
cat <<EOF >~/ghostfolio.creds
|
||||
|
||||
@@ -16,7 +16,7 @@ update_os
|
||||
MONGO_VERSION="8.2" setup_mongodb
|
||||
|
||||
msg_info "Setup Graylog Data Node"
|
||||
PASSWORD_SECRET=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
|
||||
PASSWORD_SECRET=$(random_password 16)
|
||||
curl -fsSL "https://packages.graylog2.org/repo/packages/graylog-7.0-repository_latest.deb" -o "graylog-7.0-repository_latest.deb"
|
||||
$STD dpkg -i graylog-7.0-repository_latest.deb
|
||||
apt_update_safe
|
||||
@@ -27,7 +27,7 @@ msg_ok "Setup Graylog Data Node"
|
||||
|
||||
msg_info "Setup ${APPLICATION}"
|
||||
$STD apt install graylog-server
|
||||
ROOT_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
|
||||
ROOT_PASSWORD=$(random_password 16)
|
||||
cat <<EOF >~/graylog.creds
|
||||
${APPLICATION} Credentials
|
||||
Admin User: admin
|
||||
|
||||
@@ -31,10 +31,10 @@ EOF
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PG_VERSION=16 setup_postgresql
|
||||
PG_DB_NAME="healthchecks_db" PG_DB_USER="hc_user" PG_DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13) setup_postgresql_db
|
||||
PG_DB_NAME="healthchecks_db" PG_DB_USER="hc_user" PG_DB_PASS=$(random_password 13) setup_postgresql_db
|
||||
|
||||
msg_info "Setup Keys (Admin / Secret)"
|
||||
SECRET_KEY="$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)"
|
||||
SECRET_KEY="$(random_password 32)"
|
||||
ADMIN_EMAIL="admin@community-scripts.org"
|
||||
ADMIN_PASSWORD="$PG_DB_PASS"
|
||||
cat <<EOF >~/healthchecks.creds
|
||||
|
||||
@@ -57,7 +57,7 @@ git config --system --add safe.directory /home/hermes/.hermes/hermes-agent 2>/de
|
||||
msg_ok "Installed Hermes Agent"
|
||||
|
||||
msg_info "Configuring API Server"
|
||||
API_SERVER_KEY=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)
|
||||
API_SERVER_KEY=$(random_password 32)
|
||||
mkdir -p /home/hermes/.hermes
|
||||
cat <<EOF >/home/hermes/.hermes/.env
|
||||
API_SERVER_ENABLED=true
|
||||
|
||||
@@ -19,7 +19,7 @@ msg_info "Setup hev-socks5-server"
|
||||
mkdir -p /etc/hev-socks5-server
|
||||
download_file "https://raw.githubusercontent.com/heiher/hev-socks5-server/refs/heads/main/conf/main.yml" "/etc/hev-socks5-server/main.yml"
|
||||
sed -i 's/^#auth:/auth:/; s/^# file: conf\/auth.txt/ file: \/root\/hev.creds/' /etc/hev-socks5-server/main.yml
|
||||
PASSWORD=$(openssl rand -base64 16)
|
||||
PASSWORD=$(random_password 21)
|
||||
echo "admin $PASSWORD 0" >/root/hev.creds
|
||||
msg_ok "Setup hev-socks5-server"
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ fetch_and_deploy_gh_release "homebox" "sysadminsmedia/homebox" "prebuild" "lates
|
||||
|
||||
msg_info "Configuring Homebox"
|
||||
chmod +x /opt/homebox/homebox
|
||||
AUTH_KEY="$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)"
|
||||
AUTH_KEY="$(random_password 32)"
|
||||
cat <<EOF >/opt/homebox/.env
|
||||
# For possible environment variables check here: https://homebox.software/en/configure-homebox
|
||||
HBOX_MODE=production
|
||||
|
||||
@@ -17,7 +17,7 @@ fetch_and_deploy_gh_release "hoodik" "hudikhq/hoodik" "prebuild" "latest" "/opt/
|
||||
|
||||
msg_info "Configuring Hoodik"
|
||||
mkdir -p /opt/hoodik_data
|
||||
JWT_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)
|
||||
JWT_SECRET=$(random_password 32)
|
||||
cat <<EOF >/opt/hoodik/.env
|
||||
DATA_DIR=/opt/hoodik_data
|
||||
HTTP_PORT=5443
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user