mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-05-19 23:14:57 +02:00
Compare commits
13 Commits
2026-05-17
...
fix/wander
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
75bf2bc152 | ||
|
|
0eebf13148 | ||
|
|
0374da39f7 | ||
|
|
ade578edad | ||
|
|
c33dd2ae39 | ||
|
|
3a5f4454e6 | ||
|
|
c9d0196fee | ||
|
|
404463be21 | ||
|
|
5dc2b090d9 | ||
|
|
1c216fc582 | ||
|
|
1e795835fc | ||
|
|
e234f411c7 | ||
|
|
89025c9f28 |
18
CHANGELOG.md
18
CHANGELOG.md
@@ -464,6 +464,24 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
</details>
|
||||
|
||||
## 2026-05-18
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- ESPconnect ([#14444](https://github.com/community-scripts/ProxmoxVE/pull/14444))
|
||||
- degoog ([#14533](https://github.com/community-scripts/ProxmoxVE/pull/14533))
|
||||
- Webtrees ([#14532](https://github.com/community-scripts/ProxmoxVE/pull/14532))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Bichon: Support v1 migration [@tomfrenzel](https://github.com/tomfrenzel) ([#14524](https://github.com/community-scripts/ProxmoxVE/pull/14524))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Pangolin: bump to 1.18.4, fix missing statusHistory migration [@MickLesk](https://github.com/MickLesk) ([#14566](https://github.com/community-scripts/ProxmoxVE/pull/14566))
|
||||
|
||||
## 2026-05-17
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
80
ct/bichon.sh
80
ct/bichon.sh
@@ -28,15 +28,95 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
CURRENT_VERSION="unknown"
|
||||
if [[ -f /root/.bichon ]]; then
|
||||
CURRENT_VERSION=$(cat /root/.bichon)
|
||||
fi
|
||||
|
||||
MIGRATE_V1=0
|
||||
if [[ "$CURRENT_VERSION" == 0.* ]]; then
|
||||
MIGRATE_V1=1
|
||||
DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
|
||||
if [ "$DISK_USAGE" -gt 50 ]; then
|
||||
echo -e "\n${RD}Warning: Less than 50% free storage remaining on the root disk.${CL}"
|
||||
echo -e "${RD}Bichon v1 data migration temporarily duplicates data and requires free space for it.${CL}"
|
||||
read -r -p "Are you sure you want to proceed with the update? (y/N): " proceed
|
||||
if [[ ! "$proceed" =~ ^[Yy]$ ]]; then
|
||||
msg_error "Update cancelled by user."
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
RAM_TOTAL=$(free -m | awk '/^Mem:/{print $2}')
|
||||
if [ "$RAM_TOTAL" -lt 2000 ]; then
|
||||
echo -e "\n${RD}Warning: LXC has less than 2GB of RAM allocated (${RAM_TOTAL}MB).${CL}"
|
||||
echo -e "${RD}Bichon v1 data migration consumes significant memory and may crash if insufficient.${CL}"
|
||||
read -r -p "Are you sure you want to proceed with the update? (y/N): " proceed_ram
|
||||
if [[ ! "$proceed_ram" =~ ^[Yy]$ ]]; then
|
||||
msg_error "Update cancelled by user."
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if check_for_gh_release "bichon" "rustmailer/bichon"; then
|
||||
msg_info "Stopping service"
|
||||
systemctl stop bichon
|
||||
msg_ok "Stopped service"
|
||||
|
||||
cp /opt/bichon/bichon.env /tmp/bichon.env.backup
|
||||
|
||||
if [ "$MIGRATE_V1" -eq 1 ] && [ "$CURRENT_VERSION" != "0.3.7" ]; then
|
||||
msg_info "Updating to intermediate version v0.3.7"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "v0.3.7" "/opt/bichon" "bichon-*-x86_64-unknown-linux-gnu.tar.gz"
|
||||
cp /tmp/bichon.env.backup /opt/bichon/bichon.env
|
||||
systemctl start bichon
|
||||
sleep 30
|
||||
systemctl stop bichon
|
||||
msg_ok "Intermediate update completed"
|
||||
fi
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "latest" "/opt/bichon" "bichon-*-x86_64-unknown-linux-gnu.tar.gz"
|
||||
cp /tmp/bichon.env.backup /opt/bichon/bichon.env
|
||||
|
||||
if [ "$MIGRATE_V1" -eq 1 ]; then
|
||||
msg_info "Running Bichon v1 Data Migration (patience)"
|
||||
$STD apt install -y expect
|
||||
$STD expect <<'EOF'
|
||||
set timeout -1
|
||||
spawn /opt/bichon/bichon-admin
|
||||
expect "*Select an operation*"
|
||||
send "\033\[B\r"
|
||||
expect "*--bichon-root-dir*"
|
||||
send "/opt/bichon-data\r"
|
||||
expect "*--bichon-index-dir*"
|
||||
send "\r"
|
||||
expect "*--bichon-data-dir*"
|
||||
send "\r"
|
||||
expect "*Ready to migrate?*"
|
||||
send "y"
|
||||
expect "*Enter batch size*"
|
||||
send "1000\r"
|
||||
expect eof
|
||||
catch wait
|
||||
EOF
|
||||
$STD apt remove --purge expect -y
|
||||
$STD apt autoremove -y
|
||||
msg_ok "Migration completed"
|
||||
|
||||
msg_info "Cleaning up legacy Bichon v0.x storage files"
|
||||
rm -rf /opt/bichon-data/envelope
|
||||
rm -rf /opt/bichon-data/eml
|
||||
rm -f /opt/bichon-data/mailbox.db
|
||||
rm -f /opt/bichon-data/meta.db
|
||||
msg_ok "Cleanup completed"
|
||||
|
||||
msg_info "Updating Bichon service for v1"
|
||||
sed -i 's|ExecStart=/opt/bichon/bichon|ExecStart=/opt/bichon/bichon-server|g; s|RestartSec=5|RestartSec=5\n\nLimitNOFILE=65536|g' /etc/systemd/system/bichon.service
|
||||
systemctl daemon-reload
|
||||
msg_ok "Service updated"
|
||||
fi
|
||||
|
||||
msg_info "Starting service"
|
||||
systemctl start bichon
|
||||
msg_ok "Service started"
|
||||
|
||||
73
ct/degoog.sh
Normal file
73
ct/degoog.sh
Normal file
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/fccview/degoog
|
||||
|
||||
APP="degoog"
|
||||
var_tags="${var_tags:-search;privacy}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-6}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/degoog ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "degoog" "fccview/degoog"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop degoog
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration & Data"
|
||||
[[ -f /opt/degoog/.env ]] && cp /opt/degoog/.env /opt/degoog.env.bak
|
||||
[[ -d /opt/degoog/data ]] && mv /opt/degoog/data /opt/degoog_data_backup
|
||||
msg_ok "Backed up Configuration & Data"
|
||||
|
||||
if ! command -v bun >/dev/null 2>&1; then
|
||||
msg_info "Installing Bun"
|
||||
export BUN_INSTALL="/root/.bun"
|
||||
curl -fsSL https://bun.sh/install | $STD bash
|
||||
ln -sf /root/.bun/bin/bun /usr/local/bin/bun
|
||||
ln -sf /root/.bun/bin/bunx /usr/local/bin/bunx
|
||||
msg_ok "Installed Bun"
|
||||
fi
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "degoog" "fccview/degoog" "prebuild" "latest" "/opt/degoog" "degoog_*_prebuild.tar.gz"
|
||||
|
||||
msg_info "Restoring Configuration & Data"
|
||||
[[ -f /opt/degoog.env.bak ]] && mv /opt/degoog.env.bak /opt/degoog/.env
|
||||
[[ -d /opt/degoog_data_backup ]] && mv /opt/degoog_data_backup /opt/degoog/data
|
||||
msg_ok "Restored Configuration & Data"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start degoog
|
||||
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}:4444${CL}"
|
||||
54
ct/espconnect.sh
Normal file
54
ct/espconnect.sh
Normal file
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: John Lombardo (programbo)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/thelastoutpostworkshop/ESPConnect
|
||||
|
||||
APP="ESPConnect"
|
||||
var_tags="${var_tags:-iot;esp32;flash}"
|
||||
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_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/espconnect ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "espconnect" "thelastoutpostworkshop/ESPConnect"; then
|
||||
msg_info "Stopping Nginx"
|
||||
systemctl stop nginx
|
||||
msg_ok "Stopped Nginx"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "espconnect" "thelastoutpostworkshop/ESPConnect" "prebuild" "latest" "/opt/espconnect" "dist.zip"
|
||||
|
||||
msg_info "Starting Nginx"
|
||||
systemctl start nginx
|
||||
msg_ok "Started Nginx"
|
||||
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}https://${IP}${CL}"
|
||||
6
ct/headers/degoog
Normal file
6
ct/headers/degoog
Normal file
@@ -0,0 +1,6 @@
|
||||
__
|
||||
____/ /__ ____ _____ ____ ____ _
|
||||
/ __ / _ \/ __ `/ __ \/ __ \/ __ `/
|
||||
/ /_/ / __/ /_/ / /_/ / /_/ / /_/ /
|
||||
\__,_/\___/\__, /\____/\____/\__, /
|
||||
/____/ /____/
|
||||
6
ct/headers/espconnect
Normal file
6
ct/headers/espconnect
Normal file
@@ -0,0 +1,6 @@
|
||||
___________ ____ ______ __
|
||||
/ ____/ ___// __ \/ ____/___ ____ ____ ___ _____/ /_
|
||||
/ __/ \__ \/ /_/ / / / __ \/ __ \/ __ \/ _ \/ ___/ __/
|
||||
/ /___ ___/ / ____/ /___/ /_/ / / / / / / / __/ /__/ /_
|
||||
/_____//____/_/ \____/\____/_/ /_/_/ /_/\___/\___/\__/
|
||||
|
||||
6
ct/headers/webtrees
Normal file
6
ct/headers/webtrees
Normal file
@@ -0,0 +1,6 @@
|
||||
_ __ __ __
|
||||
| | / /__ / /_ / /_________ ___ _____
|
||||
| | /| / / _ \/ __ \/ __/ ___/ _ \/ _ \/ ___/
|
||||
| |/ |/ / __/ /_/ / /_/ / / __/ __(__ )
|
||||
|__/|__/\___/_.___/\__/_/ \___/\___/____/
|
||||
|
||||
@@ -6,7 +6,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
# Source: https://pangolin.net/ | Github: https://github.com/fosrl/pangolin
|
||||
|
||||
APP="Pangolin"
|
||||
PANGOLIN_VERSION="${PANGOLIN_VERSION:-1.18.3}"
|
||||
PANGOLIN_VERSION="${PANGOLIN_VERSION:-1.18.4}"
|
||||
var_tags="${var_tags:-proxy}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
@@ -81,6 +81,12 @@ function update_script() {
|
||||
|
||||
msg_info "Running database migrations"
|
||||
cd /opt/pangolin
|
||||
SQLITE_DB="/opt/pangolin/config/db/db.sqlite"
|
||||
if [[ -f "$SQLITE_DB" ]]; then
|
||||
if ! sqlite3 "$SQLITE_DB" ".tables" 2>/dev/null | tr ' ' '\n' | grep -qx "statusHistory"; then
|
||||
sqlite3 "$SQLITE_DB" "DELETE FROM versionMigrations;" 2>/dev/null || true
|
||||
fi
|
||||
fi
|
||||
ENVIRONMENT=prod $STD node dist/migrations.mjs
|
||||
msg_ok "Ran database migrations"
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ function update_script() {
|
||||
$STD go mod tidy
|
||||
$STD go build
|
||||
cd /opt/wanderer/source/web
|
||||
$STD npm ci --omit=dev
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
msg_ok "Updated wanderer"
|
||||
|
||||
|
||||
65
ct/webtrees.sh
Normal file
65
ct/webtrees.sh
Normal file
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: sudofly
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://webtrees.net/
|
||||
|
||||
APP="Webtrees"
|
||||
var_tags="${var_tags:-genealogy;cms}"
|
||||
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_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/webtrees ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "webtrees" "fisharebest/webtrees"; then
|
||||
msg_info "Stopping Service"
|
||||
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
||||
systemctl stop caddy php${PHP_VER}-fpm
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -r /opt/webtrees/data /opt/webtrees_data_backup
|
||||
msg_ok "Backed up Data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "webtrees" "fisharebest/webtrees" "prebuild" "latest" "/opt/webtrees" "webtrees-*.zip"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp -r /opt/webtrees_data_backup/. /opt/webtrees/data
|
||||
rm -rf /opt/webtrees_data_backup
|
||||
chown -R www-data:www-data /opt/webtrees
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start caddy php${PHP_VER}-fpm
|
||||
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}${CL}"
|
||||
@@ -50,10 +50,12 @@ Type=simple
|
||||
User=root
|
||||
EnvironmentFile=/opt/bichon/bichon.env
|
||||
WorkingDirectory=/opt/bichon
|
||||
ExecStart=/opt/bichon/bichon
|
||||
ExecStart=/opt/bichon/bichon-server
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
LimitNOFILE=65536
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
88
install/degoog-install.sh
Normal file
88
install/degoog-install.sh
Normal file
@@ -0,0 +1,88 @@
|
||||
#!/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/fccview/degoog
|
||||
|
||||
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 \
|
||||
git \
|
||||
unzip
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Bun"
|
||||
export BUN_INSTALL="/root/.bun"
|
||||
curl -fsSL https://bun.sh/install | $STD bash
|
||||
ln -sf /root/.bun/bin/bun /usr/local/bin/bun
|
||||
ln -sf /root/.bun/bin/bunx /usr/local/bin/bunx
|
||||
msg_ok "Installed Bun"
|
||||
|
||||
fetch_and_deploy_gh_release "degoog" "fccview/degoog" "prebuild" "latest" "/opt/degoog" "degoog_*_prebuild.tar.gz"
|
||||
|
||||
msg_info "Setting up degoog"
|
||||
mkdir -p /opt/degoog/data/{engines,plugins,themes,store}
|
||||
|
||||
cat <<EOF >/opt/degoog/.env
|
||||
DEGOOG_PORT=4444
|
||||
DEGOOG_ENGINES_DIR=/opt/degoog/data/engines
|
||||
DEGOOG_PLUGINS_DIR=/opt/degoog/data/plugins
|
||||
DEGOOG_THEMES_DIR=/opt/degoog/data/themes
|
||||
DEGOOG_ALIASES_FILE=/opt/degoog/data/aliases.json
|
||||
DEGOOG_PLUGIN_SETTINGS_FILE=/opt/degoog/data/plugin-settings.json
|
||||
# DEGOOG_SETTINGS_PASSWORDS=changeme
|
||||
# DEGOOG_PUBLIC_INSTANCE=false
|
||||
# LOGGER=debug
|
||||
EOF
|
||||
|
||||
if [[ ! -f /opt/degoog/data/aliases.json ]]; then
|
||||
cat <<EOF >/opt/degoog/data/aliases.json
|
||||
{}
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [[ ! -f /opt/degoog/data/plugin-settings.json ]]; then
|
||||
cat <<EOF >/opt/degoog/data/plugin-settings.json
|
||||
{}
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [[ ! -f /opt/degoog/data/repos.json ]]; then
|
||||
cat <<EOF >/opt/degoog/data/repos.json
|
||||
[]
|
||||
EOF
|
||||
fi
|
||||
msg_ok "Set up degoog"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/degoog.service
|
||||
[Unit]
|
||||
Description=degoog
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/degoog
|
||||
EnvironmentFile=/opt/degoog/.env
|
||||
ExecStart=/usr/local/bin/bun run src/server/index.ts
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now degoog
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
58
install/espconnect-install.sh
Normal file
58
install/espconnect-install.sh
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: John Lombardo (programbo)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/thelastoutpostworkshop/ESPConnect
|
||||
|
||||
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"
|
||||
|
||||
fetch_and_deploy_gh_release "espconnect" "thelastoutpostworkshop/ESPConnect" "prebuild" "latest" "/opt/espconnect" "dist.zip"
|
||||
create_self_signed_cert
|
||||
|
||||
msg_info "Configuring Nginx"
|
||||
mkdir -p /etc/ssl/private
|
||||
cat <<'EOF' >/etc/nginx/sites-available/espconnect
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl default_server;
|
||||
listen [::]:443 ssl default_server;
|
||||
|
||||
ssl_certificate /etc/ssl/certs/espconnect-selfsigned.crt;
|
||||
ssl_certificate_key /etc/ssl/private/espconnect-selfsigned.key;
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
|
||||
root /opt/espconnect;
|
||||
index index.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/espconnect /etc/nginx/sites-enabled/espconnect
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD nginx -t
|
||||
systemctl enable -q nginx
|
||||
systemctl restart nginx
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -22,7 +22,7 @@ $STD apt install -y \
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
PANGOLIN_VERSION="${PANGOLIN_VERSION:-1.18.3}"
|
||||
PANGOLIN_VERSION="${PANGOLIN_VERSION:-1.18.4}"
|
||||
fetch_and_deploy_gh_release "pangolin" "fosrl/pangolin" "tarball" "$PANGOLIN_VERSION"
|
||||
fetch_and_deploy_gh_release "gerbil" "fosrl/gerbil" "singlefile" "latest" "/usr/bin" "gerbil_linux_amd64"
|
||||
fetch_and_deploy_gh_release "traefik" "traefik/traefik" "prebuild" "latest" "/usr/bin" "traefik_v*_linux_amd64.tar.gz"
|
||||
|
||||
@@ -24,8 +24,7 @@ cd /opt/wanderer/source/db
|
||||
$STD go mod tidy
|
||||
$STD go build
|
||||
cd /opt/wanderer/source/web
|
||||
$STD npm ci -s vitest
|
||||
$STD npm ci --omit=dev
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
msg_ok "Installed wanderer"
|
||||
|
||||
|
||||
77
install/webtrees-install.sh
Normal file
77
install/webtrees-install.sh
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: sudofly
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://webtrees.net/
|
||||
|
||||
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 \
|
||||
caddy \
|
||||
unzip
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULES="bcmath,gd,intl,xml,zip,pdo_mysql,mbstring,curl" setup_php
|
||||
setup_mariadb
|
||||
MARIADB_DB_NAME="webtrees" MARIADB_DB_USER="webtrees" setup_mariadb_db
|
||||
$STD mariadb -u root -e "GRANT ALL ON \`webtrees\`.* TO 'webtrees'@'127.0.0.1' IDENTIFIED BY '${MARIADB_DB_PASS}'; FLUSH PRIVILEGES;"
|
||||
|
||||
fetch_and_deploy_gh_release "webtrees" "fisharebest/webtrees" "prebuild" "latest" "/opt/webtrees" "webtrees-*.zip"
|
||||
|
||||
msg_info "Setting up Webtrees"
|
||||
chown -R www-data:www-data /opt/webtrees
|
||||
msg_ok "Set up Webtrees"
|
||||
|
||||
msg_info "Configuring Caddy"
|
||||
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
||||
cat <<EOF >/etc/caddy/Caddyfile
|
||||
:80 {
|
||||
root * /opt/webtrees
|
||||
php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock
|
||||
file_server
|
||||
encode gzip
|
||||
}
|
||||
EOF
|
||||
usermod -aG www-data caddy
|
||||
msg_ok "Configured Caddy"
|
||||
|
||||
systemctl enable -q --now php${PHP_VER}-fpm
|
||||
systemctl restart caddy
|
||||
|
||||
msg_info "Automating Webtrees Setup"
|
||||
sleep 5
|
||||
WT_ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c15)
|
||||
curl -sS -X POST "http://127.0.0.1/" \
|
||||
-d "step=6" \
|
||||
--data-urlencode "baseurl=http://${LOCAL_IP}" \
|
||||
-d "lang=en-US" \
|
||||
-d "dbtype=mysql" \
|
||||
-d "dbhost=127.0.0.1" \
|
||||
-d "dbport=3306" \
|
||||
-d "dbuser=webtrees" \
|
||||
--data-urlencode "dbpass=${MARIADB_DB_PASS}" \
|
||||
-d "dbname=webtrees" \
|
||||
-d "tblpfx=wt_" \
|
||||
-d "wtname=Administrator" \
|
||||
-d "wtuser=Admin" \
|
||||
--data-urlencode "wtpass=${WT_ADMIN_PASS}" \
|
||||
-d "wtemail=admin@example.com" >/dev/null
|
||||
|
||||
cat <<EOF >>~/webtrees.creds
|
||||
|
||||
Webtrees Admin User: Admin
|
||||
Webtrees Admin Password: ${WT_ADMIN_PASS}
|
||||
EOF
|
||||
msg_ok "Webtrees Setup Automated"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
Reference in New Issue
Block a user