Compare commits

..

3 Commits

Author SHA1 Message Date
CanbiZ (MickLesk)
36ba6581ed move git
Removed comment about Ruby version in install script.
2026-10-30 22:12:17 +01:00
CanbiZ (MickLesk)
2f70cb0e2f move ruby into msg block 2026-10-30 22:11:23 +01:00
MickLesk
d795d2f709 fix(discourse): track the Ruby version Discourse requires
Discourse main now pins `ruby "~> 4.0.0"` in its Gemfile, so `bundle install`
aborts with exit 18 on containers built against the hardcoded Ruby 3.4.4. The
update path never touched Ruby at all, so every existing install breaks.

Discourse ships no .ruby-version, so read the pinned version from
Gemfile.lock's RUBY VERSION stanza and hand it to setup_ruby — on install
(repo is now cloned before the runtime setup) and on update (after the git
pull, so a bumped requirement is picked up). Also silence bundler's root
warning, split the update into separate progress steps, and skip the
unused global Rails gem.
2026-10-30 22:07:27 +01:00
9 changed files with 24 additions and 406 deletions

View File

@@ -568,14 +568,6 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 2026-10-30
### 🆕 New Scripts
- Reconya ([#18325](https://github.com/community-scripts/ProxmoxVE/pull/18325))
- Blinko ([#18324](https://github.com/community-scripts/ProxmoxVE/pull/18324))
- ChartDB ([#18323](https://github.com/community-scripts/ProxmoxVE/pull/18323))
## 2026-10-29
### 🚀 Updated Scripts

View File

@@ -1,68 +0,0 @@
#!/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/blinkospace/blinko
APP="Blinko"
var_tags="${var_tags:-notes;ai;knowledge}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-6144}"
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/blinko ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "blinko" "blinkospace/blinko"; then
msg_info "Stopping Blinko"
systemctl stop blinko
msg_ok "Stopped Blinko"
NODE_VERSION="24" NODE_MODULE="bun" setup_nodejs
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "blinko" "blinkospace/blinko" "tarball"
msg_info "Building Blinko"
cd /opt/blinko
$STD bun install
$STD bunx prisma generate
$STD bun run build:web
$STD bun run build:seed
mv dist/public server/public
cp -r server/lute.min.js server/vditor dist/
ln -s /opt/blinko_data/storage /opt/blinko/.blinko
msg_ok "Built Blinko"
msg_info "Starting Blinko"
systemctl start blinko
msg_ok "Started Blinko"
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}:1111${CL}"

View File

@@ -1,64 +0,0 @@
#!/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/chartdb/chartdb
APP="ChartDB"
var_tags="${var_tags:-database;diagram;dev-tools}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-6144}"
var_disk="${var_disk:-4}"
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/chartdb ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "chartdb" "chartdb/chartdb"; then
msg_info "Stopping ChartDB"
systemctl stop nginx
msg_ok "Stopped ChartDB"
NODE_VERSION="24" setup_nodejs
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "chartdb" "chartdb/chartdb" "tarball"
msg_info "Building ChartDB"
cd /opt/chartdb
$STD npm ci
NODE_OPTIONS="--max-old-space-size=4096" $STD npm run build
rm -rf /opt/chartdb/node_modules
msg_ok "Built ChartDB"
msg_info "Starting ChartDB"
systemctl start nginx
msg_ok "Started ChartDB"
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}https://${IP}${CL}"

View File

@@ -51,16 +51,31 @@ function update_script() {
cd /opt/discourse
export PATH="$HOME/.rbenv/bin:$HOME/.rbenv/shims:$PATH"
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
export BUNDLE_SILENCE_ROOT_WARNING=1
set -a
source /opt/discourse/.env
set +a
$STD git pull origin main
$STD bundle install
msg_ok "Updated Discourse"
msg_info "Updating Dependencies"
RUBY_TARGET=$(grep -A1 '^RUBY VERSION' /opt/discourse/Gemfile.lock | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1)
RUBY_VERSION="${RUBY_TARGET:-4.0.7}" RUBY_INSTALL_RAILS="false" setup_ruby
export PATH="$HOME/.rbenv/bin:$HOME/.rbenv/shims:$PATH"
hash -r
cd /opt/discourse
$STD bundle install -j"$(nproc)"
$STD pnpm install
msg_ok "Updated Dependencies"
msg_info "Running Database Migrations"
$STD runuser -u postgres -- psql -d discourse -c "CREATE EXTENSION IF NOT EXISTS vector;"
$STD bundle exec rails db:migrate
msg_ok "Ran Database Migrations"
msg_info "Precompiling Assets"
$STD bundle exec rails assets:precompile
msg_ok "Updated Discourse"
msg_ok "Precompiled Assets"
msg_info "Starting Services"
systemctl start discourse discourse-sidekiq

View File

@@ -1,56 +0,0 @@
#!/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/Dyneteq/reconya
APP="Reconya"
var_tags="${var_tags:-network;discovery;security}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}"
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/reconya ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "reconya" "Dyneteq/reconya"; then
msg_info "Stopping Reconya"
systemctl stop reconya
msg_ok "Stopped Reconya"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "reconya" "Dyneteq/reconya" "prebuild" "latest" "/opt/reconya" "reconya-linux-$(arch_resolve "amd64" "arm64").tar.gz"
msg_info "Starting Reconya"
systemctl start reconya
msg_ok "Started Reconya"
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}:3008${CL}"

View File

@@ -1,71 +0,0 @@
#!/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/blinkospace/blinko
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
NODE_VERSION="24" NODE_MODULE="bun" setup_nodejs
PG_VERSION="17" setup_postgresql
PG_DB_NAME="blinko" PG_DB_USER="blinko" setup_postgresql_db
fetch_and_deploy_gh_release "blinko" "blinkospace/blinko" "tarball"
msg_info "Building Blinko"
cd /opt/blinko
$STD bun install
$STD bunx prisma generate
$STD bun run build:web
$STD bun run build:seed
# The server resolves its web root as ../server/public and lute/vditor next to its own bundle
mv dist/public server/public
cp -r server/lute.min.js server/vditor dist/
msg_ok "Built Blinko"
msg_info "Configuring Blinko"
mkdir -p /opt/blinko_data/storage
# Blinko keeps uploads, the vector index and backups in .blinko under its working directory
ln -s /opt/blinko_data/storage /opt/blinko/.blinko
cat <<EOF >/opt/blinko_data/.env
NODE_ENV=production
DATABASE_URL=postgresql://blinko:${PG_DB_PASS}@localhost:5432/blinko
TRUST_PROXY=1
EOF
chmod 600 /opt/blinko_data/.env
msg_ok "Configured Blinko"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/blinko.service
[Unit]
Description=Blinko
After=network.target postgresql.service
Requires=postgresql.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/blinko
EnvironmentFile=/opt/blinko_data/.env
ExecStartPre=/opt/blinko/node_modules/.bin/prisma migrate deploy
ExecStartPre=/usr/bin/node /opt/blinko/dist/seed.js
ExecStart=/usr/bin/node /opt/blinko/dist/index.js
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now blinko
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc

View File

@@ -1,75 +0,0 @@
#!/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/chartdb/chartdb
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 nginx
msg_ok "Installed Dependencies"
NODE_VERSION="24" setup_nodejs
fetch_and_deploy_gh_release "chartdb" "chartdb/chartdb" "tarball"
msg_info "Building ChartDB"
cd /opt/chartdb
$STD npm ci
NODE_OPTIONS="--max-old-space-size=4096" $STD npm run build
rm -rf /opt/chartdb/node_modules
msg_ok "Built ChartDB"
msg_info "Configuring ChartDB"
mkdir -p /opt/chartdb_data
cat <<'EOF' >/opt/chartdb_data/config.js
window.env = {
DISABLE_ANALYTICS: "true",
// OPENAI_API_KEY: "",
// OPENAI_API_ENDPOINT: "https://ollama.example.com/v1",
// LLM_MODEL_NAME: "qwen2.5-coder:7b",
};
EOF
create_self_signed_cert "chartdb"
# HTTPS because the AI export (crypto.subtle) and the copy buttons need a secure context
cat <<'EOF' >/etc/nginx/sites-available/chartdb
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl default_server;
http2 on;
server_name _;
ssl_certificate /etc/ssl/chartdb/chartdb.crt;
ssl_certificate_key /etc/ssl/chartdb/chartdb.key;
root /opt/chartdb/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location = /config.js {
alias /opt/chartdb_data/config.js;
add_header Cache-Control "no-cache";
}
}
EOF
nginx_enable_site "chartdb"
msg_ok "Configured ChartDB"
motd_ssh
customize
cleanup_lxc

View File

@@ -28,9 +28,14 @@ $STD apt install -y \
redis-server
msg_ok "Installed Dependencies"
msg_info "Cloning Discourse"
$STD git clone --depth 1 https://github.com/discourse/discourse.git /opt/discourse
msg_ok "Cloned Discourse"
PG_VERSION="17" PG_MODULES="pgvector" setup_postgresql
NODE_VERSION="24" setup_nodejs
RUBY_VERSION="3.4.4" setup_ruby
RUBY_TARGET=$(grep -A1 '^RUBY VERSION' /opt/discourse/Gemfile.lock | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1)
RUBY_VERSION="${RUBY_TARGET:-4.0.7}" RUBY_INSTALL_RAILS="false" setup_ruby
msg_info "Configuring PostgreSQL for Discourse"
DISCOURSE_DB_PASS=$(random_password 13)
@@ -42,7 +47,6 @@ msg_ok "Configured PostgreSQL for Discourse"
msg_info "Configuring Discourse"
DISCOURSE_SECRET_KEY=$(openssl rand -hex 64)
$STD git clone --depth 1 https://github.com/discourse/discourse.git /opt/discourse
cd /opt/discourse
cat <<EOF >/opt/discourse/.env
RAILS_ENV=production
@@ -77,6 +81,7 @@ export PATH="$HOME/.rbenv/bin:$HOME/.rbenv/shims:$PATH"
eval "$(rbenv init - bash)" 2>/dev/null || true
export RAILS_ENV=production
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
export BUNDLE_SILENCE_ROOT_WARNING=1
$STD corepack enable
$STD bundle config set --local deployment true
$STD bundle config set --local without 'test development'

View File

@@ -1,60 +0,0 @@
#!/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/Dyneteq/reconya
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
fetch_and_deploy_gh_release "reconya" "Dyneteq/reconya" "prebuild" "latest" "/opt/reconya" "reconya-linux-$(arch_resolve "amd64" "arm64").tar.gz"
msg_info "Configuring Reconya"
mkdir -p /opt/reconya_data
cat <<EOF >/opt/reconya_data/.env
PORT=3008
LOGIN_USERNAME=admin
LOGIN_PASSWORD=$(random_password)
DATABASE_NAME=reconya
SQLITE_PATH=/opt/reconya_data/reconya.db
PUBLIC_IP_LOOKUP_ENABLED=false
GEOLOCATION_ENABLED=false
VENDOR_LOOKUP_ONLINE_ENABLED=false
OUI_DOWNLOAD_ENABLED=false
EOF
chmod 600 /opt/reconya_data/.env
msg_ok "Configured Reconya"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/reconya.service
[Unit]
Description=Reconya
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/reconya_data
EnvironmentFile=/opt/reconya_data/.env
ExecStart=/opt/reconya/reconya-linux-$(arch_resolve "amd64" "arm64")
# Reconya ignores SIGTERM and only shuts down on SIGINT
KillSignal=SIGINT
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now reconya
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc