mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-02-04 20:33:24 +01:00
Compare commits
103 Commits
2026-01-06
...
2026-01-12
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9256afda54 | ||
|
|
7d4b9316a2 | ||
|
|
36743247f0 | ||
|
|
863876c3a2 | ||
|
|
50954ff560 | ||
|
|
679c9cbb11 | ||
|
|
b4c16ef05d | ||
|
|
56e0783385 | ||
|
|
305a2ef449 | ||
|
|
7f6ebeb119 | ||
|
|
eb30288b1c | ||
|
|
5320b7dbad | ||
|
|
27b55a5de4 | ||
|
|
ff76d83fa7 | ||
|
|
d0e22f73c6 | ||
|
|
25594c30aa | ||
|
|
c8f6786783 | ||
|
|
a2a98cf26d | ||
|
|
a7a3514f92 | ||
|
|
7e464cfdb0 | ||
|
|
a1b381e920 | ||
|
|
9fca42fdea | ||
|
|
57c87169a9 | ||
|
|
0ec96f8287 | ||
|
|
c68f465fd1 | ||
|
|
235ed4f2ef | ||
|
|
bf829988cc | ||
|
|
176b41a576 | ||
|
|
1ccf90cb27 | ||
|
|
97c6c4558a | ||
|
|
cabf3a877e | ||
|
|
96bdd76beb | ||
|
|
7234ecc406 | ||
|
|
f0a291542d | ||
|
|
18e1149cad | ||
|
|
6d05319eb3 | ||
|
|
7fe3a47d24 | ||
|
|
fac82643a8 | ||
|
|
e33d4d76fe | ||
|
|
d505f3df08 | ||
|
|
fe471daff9 | ||
|
|
76e7755956 | ||
|
|
166350d2ba | ||
|
|
75d1f6bfe4 | ||
|
|
b8d67c08ad | ||
|
|
1c1a3abefc | ||
|
|
5289dd256f | ||
|
|
674ed2c73f | ||
|
|
e18a34ce63 | ||
|
|
0090cb8b4b | ||
|
|
b2602b83a0 | ||
|
|
750b0a042e | ||
|
|
932079a9f6 | ||
|
|
d43899d5ad | ||
|
|
b86a89e0fa | ||
|
|
bf9ceb9ce1 | ||
|
|
328d2c2de1 | ||
|
|
047dfb9c93 | ||
|
|
d7fa87f349 | ||
|
|
93827141fc | ||
|
|
3e0d0f34cc | ||
|
|
0a790bf544 | ||
|
|
570563539e | ||
|
|
b5ad996bb2 | ||
|
|
d047d1aeb7 | ||
|
|
c3b5dc7c6f | ||
|
|
2c1472bb58 | ||
|
|
5b5bc11f1e | ||
|
|
02bbfa5851 | ||
|
|
896e0c0257 | ||
|
|
9cf17ef7df | ||
|
|
f6f0a5553b | ||
|
|
580e86114a | ||
|
|
e9bfc49049 | ||
|
|
4c8394d456 | ||
|
|
87ba164188 | ||
|
|
d427e9d313 | ||
|
|
f474ea3d4a | ||
|
|
77f69321f8 | ||
|
|
1681033e39 | ||
|
|
741560b457 | ||
|
|
422a01b0a5 | ||
|
|
2de935c549 | ||
|
|
c6176b1706 | ||
|
|
098dcdb2dc | ||
|
|
5ecfc2f666 | ||
|
|
cddae63c63 | ||
|
|
64db3d3621 | ||
|
|
468b5fbc38 | ||
|
|
8d973aa20e | ||
|
|
74e4373e0f | ||
|
|
1530256970 | ||
|
|
69f4514205 | ||
|
|
0d53c728ce | ||
|
|
a3ec950796 | ||
|
|
f4ee9a2e25 | ||
|
|
0d56be1192 | ||
|
|
a68a2607ea | ||
|
|
8a40df3308 | ||
|
|
5ca27336e9 | ||
|
|
9dcdc4bf37 | ||
|
|
f4d136fcdd | ||
|
|
e4c382e42c |
128
CHANGELOG.md
128
CHANGELOG.md
@@ -10,8 +10,136 @@
|
||||
> [!CAUTION]
|
||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||
|
||||
## 2026-01-13
|
||||
|
||||
## 2026-01-12
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Jellystat ([#10628](https://github.com/community-scripts/ProxmoxVE/pull/10628))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- InfluxSB: fix If / fi [@chrnie](https://github.com/chrnie) ([#10753](https://github.com/community-scripts/ProxmoxVE/pull/10753))
|
||||
- Cockpit: Downgrade to Debian 12 Bookworm (45Drives Issue) [@MickLesk](https://github.com/MickLesk) ([#10717](https://github.com/community-scripts/ProxmoxVE/pull/10717))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- InfluxDB: add setup for influxdb v3 [@victorlap](https://github.com/victorlap) ([#10736](https://github.com/community-scripts/ProxmoxVE/pull/10736))
|
||||
- Apache Guacamole: add schema upgrades and extension updates [@MickLesk](https://github.com/MickLesk) ([#10746](https://github.com/community-scripts/ProxmoxVE/pull/10746))
|
||||
- Apache Tomcat: update support and refactor install script + debian 13 [@MickLesk](https://github.com/MickLesk) ([#10739](https://github.com/community-scripts/ProxmoxVE/pull/10739))
|
||||
- Apache Guacamole: Function Bump + update_script [@MickLesk](https://github.com/MickLesk) ([#10728](https://github.com/community-scripts/ProxmoxVE/pull/10728))
|
||||
- Apache CouchDB: bump to debian 13 and add update support [@MickLesk](https://github.com/MickLesk) ([#10721](https://github.com/community-scripts/ProxmoxVE/pull/10721))
|
||||
- Apache Cassandra: bump to debian 13 and add update support [@MickLesk](https://github.com/MickLesk) ([#10720](https://github.com/community-scripts/ProxmoxVE/pull/10720))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Booklore [@MickLesk](https://github.com/MickLesk) ([#10742](https://github.com/community-scripts/ProxmoxVE/pull/10742))
|
||||
- Bump Argus to Debian 13 [@MickLesk](https://github.com/MickLesk) ([#10718](https://github.com/community-scripts/ProxmoxVE/pull/10718))
|
||||
- Refactor Docker/Dockge & Bump to Debian 13 [@MickLesk](https://github.com/MickLesk) ([#10719](https://github.com/community-scripts/ProxmoxVE/pull/10719))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: remove duplicated pve_version in advanced installs [@MickLesk](https://github.com/MickLesk) ([#10743](https://github.com/community-scripts/ProxmoxVE/pull/10743))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: add storage validation & fix GB/MB display [@MickLesk](https://github.com/MickLesk) ([#10745](https://github.com/community-scripts/ProxmoxVE/pull/10745))
|
||||
- core: validate container ID before pct create to prevent failures [@MickLesk](https://github.com/MickLesk) ([#10729](https://github.com/community-scripts/ProxmoxVE/pull/10729))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Enforce non-interactive apt mode in DB setup scripts [@MickLesk](https://github.com/MickLesk) ([#10714](https://github.com/community-scripts/ProxmoxVE/pull/10714))
|
||||
|
||||
## 2026-01-11
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Fix Invoice Ninja Error 500 by restoring file ownership after artisan commands [@Copilot](https://github.com/Copilot) ([#10709](https://github.com/community-scripts/ProxmoxVE/pull/10709))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Infisical [@tremor021](https://github.com/tremor021) ([#10693](https://github.com/community-scripts/ProxmoxVE/pull/10693))
|
||||
- Refactor: HortusFox [@tremor021](https://github.com/tremor021) ([#10697](https://github.com/community-scripts/ProxmoxVE/pull/10697))
|
||||
- Refactor: Homer [@tremor021](https://github.com/tremor021) ([#10698](https://github.com/community-scripts/ProxmoxVE/pull/10698))
|
||||
|
||||
## 2026-01-10
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- [Endurain] Increase default RAM from 2048 to 4096 [@FutureCow](https://github.com/FutureCow) ([#10690](https://github.com/community-scripts/ProxmoxVE/pull/10690))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- tools.func: hwaccel - make beignet-opencl-icd optional for legacy Intel GPUs [@MickLesk](https://github.com/MickLesk) ([#10677](https://github.com/community-scripts/ProxmoxVE/pull/10677))
|
||||
|
||||
## 2026-01-09
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Jenkins: Fix application repository setup [@tremor021](https://github.com/tremor021) ([#10671](https://github.com/community-scripts/ProxmoxVE/pull/10671))
|
||||
- deCONZ: Fix sources check in update script [@tremor021](https://github.com/tremor021) ([#10664](https://github.com/community-scripts/ProxmoxVE/pull/10664))
|
||||
- Remove '--cpu' option from ExecStart command [@sethgregory](https://github.com/sethgregory) ([#10659](https://github.com/community-scripts/ProxmoxVE/pull/10659))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- fix: setup_mariadb hangs on [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10672](https://github.com/community-scripts/ProxmoxVE/pull/10672))
|
||||
|
||||
## 2026-01-08
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- GWN-Manager ([#10642](https://github.com/community-scripts/ProxmoxVE/pull/10642))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Fix line continuation for vlc-bin installation [@chinedu40](https://github.com/chinedu40) ([#10654](https://github.com/community-scripts/ProxmoxVE/pull/10654))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- outline: use corepack yarn module [@MickLesk](https://github.com/MickLesk) ([#10652](https://github.com/community-scripts/ProxmoxVE/pull/10652))
|
||||
- Remove unnecessary quotes from variable expansions in VM scripts [@MickLesk](https://github.com/MickLesk) ([#10649](https://github.com/community-scripts/ProxmoxVE/pull/10649))
|
||||
- Monica: Fix database variable names [@tremor021](https://github.com/tremor021) ([#10634](https://github.com/community-scripts/ProxmoxVE/pull/10634))
|
||||
- Tianji: Fix PostrgreSQL vars [@tremor021](https://github.com/tremor021) ([#10633](https://github.com/community-scripts/ProxmoxVE/pull/10633))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- deCONZ: Bump to Trixie base [@tremor021](https://github.com/tremor021) ([#10643](https://github.com/community-scripts/ProxmoxVE/pull/10643))
|
||||
|
||||
## 2026-01-07
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- pve-scripts-local: fix missing exit in update [@MickLesk](https://github.com/MickLesk) ([#10630](https://github.com/community-scripts/ProxmoxVE/pull/10630))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Upgrade ESPHome LXC to Debian 13 [@heinemannj](https://github.com/heinemannj) ([#10624](https://github.com/community-scripts/ProxmoxVE/pull/10624))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Explicitly state installation method [@tremor021](https://github.com/tremor021) ([#10608](https://github.com/community-scripts/ProxmoxVE/pull/10608))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- Modify Debian sources list for trixie updates (as 4.1.0-1 config) [@maiux](https://github.com/maiux) ([#10505](https://github.com/community-scripts/ProxmoxVE/pull/10505))
|
||||
|
||||
## 2026-01-06
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
@@ -44,7 +44,7 @@ function update_script() {
|
||||
PHP_VERSION="8.4" PHP_MODULE="common,ctype,fileinfo,mysql,cli,tokenizer,dom,redis,session,openssl" PHP_FPM="YES" setup_php
|
||||
sed -i 's/php8\.[0-9]/php8.4/g' /etc/nginx/conf.d/2fauth.conf
|
||||
fi
|
||||
fetch_and_deploy_gh_release "2fauth" "Bubka/2FAuth"
|
||||
fetch_and_deploy_gh_release "2fauth" "Bubka/2FAuth" "tarball"
|
||||
setup_composer
|
||||
mv "/opt/2fauth-backup/.env" "/opt/2fauth/.env"
|
||||
mv "/opt/2fauth-backup/storage" "/opt/2fauth/storage"
|
||||
|
||||
@@ -42,7 +42,7 @@ function update_script() {
|
||||
rm -rf /opt/adventurelog
|
||||
msg_ok "Backup done"
|
||||
|
||||
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
|
||||
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog" "tarball"
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
|
||||
msg_info "Ensuring PostgreSQL Extensions"
|
||||
|
||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -20,15 +20,19 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/systemd/system/cassandra.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/init.d/cassandra ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating Apache Cassandra"
|
||||
$STD apt update
|
||||
$STD apt install -y --only-upgrade cassandra cassandra-tools
|
||||
msg_ok "Updated Apache Cassandra"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
@@ -5,13 +5,13 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://couchdb.apache.org/
|
||||
|
||||
APP="Apache-CouchDB"
|
||||
APP="Apache CouchDB"
|
||||
var_tags="${var_tags:-database}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-10}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -20,15 +20,19 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/systemd/system/couchdb.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /usr/lib/systemd/system/couchdb.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating Apache CouchDB"
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y --only-upgrade couchdb
|
||||
msg_ok "Updated Apache CouchDB"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
@@ -27,8 +27,196 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
setup_mariadb
|
||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
||||
|
||||
# Fetch latest versions
|
||||
LATEST_TOMCAT=$(curl -fsSL https://dlcdn.apache.org/tomcat/tomcat-9/ | grep -oP '(?<=href=")v[^"/]+(?=/")' | sed 's/^v//' | sort -V | tail -n1)
|
||||
LATEST_SERVER=$(curl -fsSL https://api.github.com/repos/apache/guacamole-server/tags | jq -r '.[].name' | grep -v -- '-RC' | head -n 1)
|
||||
LATEST_CLIENT=$(curl -fsSL https://api.github.com/repos/apache/guacamole-client/tags | jq -r '.[].name' | grep -v -- '-RC' | head -n 1)
|
||||
LATEST_MYSQL_CONNECTOR=$(curl -fsSL "https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/maven-metadata.xml" | grep -oP '<latest>\K[^<]+')
|
||||
|
||||
# Read current versions from ~/.guacamole_*
|
||||
CURRENT_TOMCAT=$(cat ~/.guacamole_tomcat 2>/dev/null || echo "unknown")
|
||||
CURRENT_SERVER=$(cat ~/.guacamole_server 2>/dev/null || echo "unknown")
|
||||
CURRENT_CLIENT=$(cat ~/.guacamole_client 2>/dev/null || echo "unknown")
|
||||
CURRENT_MYSQL_CONNECTOR=$(cat ~/.guacamole_mysql_connector 2>/dev/null || echo "unknown")
|
||||
|
||||
UPDATE_NEEDED=false
|
||||
[[ "$CURRENT_TOMCAT" != "$LATEST_TOMCAT" ]] && UPDATE_NEEDED=true
|
||||
[[ "$CURRENT_SERVER" != "$LATEST_SERVER" ]] && UPDATE_NEEDED=true
|
||||
[[ "$CURRENT_CLIENT" != "$LATEST_CLIENT" ]] && UPDATE_NEEDED=true
|
||||
[[ "$CURRENT_MYSQL_CONNECTOR" != "$LATEST_MYSQL_CONNECTOR" ]] && UPDATE_NEEDED=true
|
||||
|
||||
if [[ "$UPDATE_NEEDED" == "false" ]]; then
|
||||
msg_ok "All components are up to date"
|
||||
exit
|
||||
fi
|
||||
|
||||
JAVA_VERSION="11" setup_java
|
||||
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop guacd tomcat
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
# Update Tomcat
|
||||
if [[ "$CURRENT_TOMCAT" != "$LATEST_TOMCAT" ]]; then
|
||||
msg_info "Updating Tomcat (${CURRENT_TOMCAT} → ${LATEST_TOMCAT})"
|
||||
cp -a /opt/apache-guacamole/tomcat9/conf /tmp/tomcat-conf-backup
|
||||
curl -fsSL "https://dlcdn.apache.org/tomcat/tomcat-9/v${LATEST_TOMCAT}/bin/apache-tomcat-${LATEST_TOMCAT}.tar.gz" | tar -xz -C /opt/apache-guacamole/tomcat9 --strip-components=1 --exclude='conf/*'
|
||||
cp -a /tmp/tomcat-conf-backup/* /opt/apache-guacamole/tomcat9/conf/
|
||||
rm -rf /tmp/tomcat-conf-backup
|
||||
chown -R tomcat: /opt/apache-guacamole/tomcat9
|
||||
echo "${LATEST_TOMCAT}" >~/.guacamole_tomcat
|
||||
msg_ok "Updated Tomcat"
|
||||
else
|
||||
msg_ok "Tomcat already up to date (${CURRENT_TOMCAT})"
|
||||
fi
|
||||
|
||||
# Update Guacamole Server
|
||||
if [[ "$CURRENT_SERVER" != "$LATEST_SERVER" ]]; then
|
||||
msg_info "Updating Guacamole Server (${CURRENT_SERVER} → ${LATEST_SERVER})"
|
||||
rm -rf /opt/apache-guacamole/server/*
|
||||
curl -fsSL "https://api.github.com/repos/apache/guacamole-server/tarball/refs/tags/${LATEST_SERVER}" | tar -xz --strip-components=1 -C /opt/apache-guacamole/server
|
||||
cd /opt/apache-guacamole/server
|
||||
export CPPFLAGS="-Wno-error=deprecated-declarations"
|
||||
$STD autoreconf -fi
|
||||
$STD ./configure --with-init-dir=/etc/init.d --enable-allow-freerdp-snapshots
|
||||
$STD make
|
||||
$STD make install
|
||||
$STD ldconfig
|
||||
echo "${LATEST_SERVER}" >~/.guacamole_server
|
||||
msg_ok "Updated Guacamole Server"
|
||||
|
||||
# Auth JDBC follows server version
|
||||
msg_info "Updating Guacamole Auth JDBC"
|
||||
rm -f /etc/guacamole/extensions/guacamole-auth-jdbc-mysql-*.jar
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-jdbc-${LATEST_SERVER}.tar.gz" -o "/tmp/guacamole-auth-jdbc.tar.gz"
|
||||
$STD tar -xf /tmp/guacamole-auth-jdbc.tar.gz -C /tmp
|
||||
mv /tmp/guacamole-auth-jdbc-"${LATEST_SERVER}"/mysql/guacamole-auth-jdbc-mysql-"${LATEST_SERVER}".jar /etc/guacamole/extensions/
|
||||
rm -rf /tmp/guacamole-auth-jdbc*
|
||||
echo "${LATEST_SERVER}" >~/.guacamole_auth_jdbc
|
||||
msg_ok "Updated Guacamole Auth JDBC"
|
||||
else
|
||||
msg_ok "Guacamole Server already up to date (${CURRENT_SERVER})"
|
||||
fi
|
||||
|
||||
# Update Guacamole Client
|
||||
if [[ "$CURRENT_CLIENT" != "$LATEST_CLIENT" ]]; then
|
||||
msg_info "Updating Guacamole Client (${CURRENT_CLIENT} → ${LATEST_CLIENT})"
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_CLIENT}/binary/guacamole-${LATEST_CLIENT}.war" -o "/opt/apache-guacamole/tomcat9/webapps/guacamole.war"
|
||||
echo "${LATEST_CLIENT}" >~/.guacamole_client
|
||||
msg_ok "Updated Guacamole Client"
|
||||
else
|
||||
msg_ok "Guacamole Client already up to date (${CURRENT_CLIENT})"
|
||||
fi
|
||||
|
||||
# Update MySQL Connector
|
||||
if [[ "$CURRENT_MYSQL_CONNECTOR" != "$LATEST_MYSQL_CONNECTOR" ]]; then
|
||||
msg_info "Updating MySQL Connector (${CURRENT_MYSQL_CONNECTOR} → ${LATEST_MYSQL_CONNECTOR})"
|
||||
curl -fsSL "https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/${LATEST_MYSQL_CONNECTOR}/mysql-connector-j-${LATEST_MYSQL_CONNECTOR}.jar" -o "/etc/guacamole/lib/mysql-connector-j.jar"
|
||||
echo "${LATEST_MYSQL_CONNECTOR}" >~/.guacamole_mysql_connector
|
||||
msg_ok "Updated MySQL Connector"
|
||||
else
|
||||
msg_ok "MySQL Connector already up to date (${CURRENT_MYSQL_CONNECTOR})"
|
||||
fi
|
||||
|
||||
# Apply SQL Schema Upgrades (CRITICAL!)
|
||||
if [[ "$CURRENT_SERVER" != "$LATEST_SERVER" ]]; then
|
||||
msg_info "Applying MySQL Schema Upgrades"
|
||||
cd /tmp/guacamole-auth-jdbc-"${LATEST_SERVER}"/mysql/schema/upgrade/
|
||||
UPGRADE_FILES=($(ls -1 upgrade-pre-*.sql 2>/dev/null | sort -V))
|
||||
|
||||
if [[ ${#UPGRADE_FILES[@]} -gt 0 ]]; then
|
||||
for SQL_FILE in "${UPGRADE_FILES[@]}"; do
|
||||
FILE_VERSION=$(echo ${SQL_FILE} | grep -oP 'upgrade-pre-\K[0-9\.]+(?=\.)')
|
||||
# Apply upgrade if file version is newer than current but older/equal to target
|
||||
if [[ $(echo -e "${FILE_VERSION}\n${CURRENT_SERVER}" | sort -V | head -n1) == "${CURRENT_SERVER}" && "${FILE_VERSION}" != "${CURRENT_SERVER}" ]]; then
|
||||
msg_info "Applying schema patch: ${SQL_FILE}"
|
||||
mysql -u root guacamole_db <"${SQL_FILE}" 2>/dev/null
|
||||
if [[ $? -eq 0 ]]; then
|
||||
msg_ok "Applied ${SQL_FILE}"
|
||||
else
|
||||
msg_warn "Failed to apply ${SQL_FILE} (may already be applied)"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
msg_ok "MySQL Schema updated"
|
||||
fi
|
||||
|
||||
# Check and upgrade optional extensions
|
||||
# TOTP Extension
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-totp-*.jar ]]; then
|
||||
msg_info "Updating TOTP Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-auth-totp-*.jar
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-totp-${LATEST_SERVER}.tar.gz" -o "/tmp/guacamole-auth-totp.tar.gz"
|
||||
$STD tar -xf /tmp/guacamole-auth-totp.tar.gz -C /tmp
|
||||
mv /tmp/guacamole-auth-totp-"${LATEST_SERVER}"/guacamole-auth-totp-"${LATEST_SERVER}".jar /etc/guacamole/extensions/
|
||||
chmod 664 /etc/guacamole/extensions/guacamole-auth-totp-"${LATEST_SERVER}".jar
|
||||
rm -rf /tmp/guacamole-auth-totp*
|
||||
msg_ok "Updated TOTP Extension"
|
||||
fi
|
||||
|
||||
# DUO Extension
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-duo-*.jar ]]; then
|
||||
msg_info "Updating DUO Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-auth-duo-*.jar
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-duo-${LATEST_SERVER}.tar.gz" -o "/tmp/guacamole-auth-duo.tar.gz"
|
||||
$STD tar -xf /tmp/guacamole-auth-duo.tar.gz -C /tmp
|
||||
mv /tmp/guacamole-auth-duo-"${LATEST_SERVER}"/guacamole-auth-duo-"${LATEST_SERVER}".jar /etc/guacamole/extensions/
|
||||
chmod 664 /etc/guacamole/extensions/guacamole-auth-duo-"${LATEST_SERVER}".jar
|
||||
rm -rf /tmp/guacamole-auth-duo*
|
||||
msg_ok "Updated DUO Extension"
|
||||
fi
|
||||
|
||||
# LDAP Extension
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-ldap-*.jar ]]; then
|
||||
msg_info "Updating LDAP Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-auth-ldap-*.jar
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-ldap-${LATEST_SERVER}.tar.gz" -o "/tmp/guacamole-auth-ldap.tar.gz"
|
||||
$STD tar -xf /tmp/guacamole-auth-ldap.tar.gz -C /tmp
|
||||
mv /tmp/guacamole-auth-ldap-"${LATEST_SERVER}"/guacamole-auth-ldap-"${LATEST_SERVER}".jar /etc/guacamole/extensions/
|
||||
chmod 664 /etc/guacamole/extensions/guacamole-auth-ldap-"${LATEST_SERVER}".jar
|
||||
rm -rf /tmp/guacamole-auth-ldap*
|
||||
msg_ok "Updated LDAP Extension"
|
||||
fi
|
||||
|
||||
# Quick Connect Extension
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-quickconnect-*.jar ]]; then
|
||||
msg_info "Updating Quick Connect Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-auth-quickconnect-*.jar
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-quickconnect-${LATEST_SERVER}.tar.gz" -o "/tmp/guacamole-auth-quickconnect.tar.gz"
|
||||
$STD tar -xf /tmp/guacamole-auth-quickconnect.tar.gz -C /tmp
|
||||
mv /tmp/guacamole-auth-quickconnect-"${LATEST_SERVER}"/guacamole-auth-quickconnect-"${LATEST_SERVER}".jar /etc/guacamole/extensions/
|
||||
chmod 664 /etc/guacamole/extensions/guacamole-auth-quickconnect-"${LATEST_SERVER}".jar
|
||||
rm -rf /tmp/guacamole-auth-quickconnect*
|
||||
msg_ok "Updated Quick Connect Extension"
|
||||
fi
|
||||
|
||||
# History Recording Storage Extension
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-history-recording-storage-*.jar ]]; then
|
||||
msg_info "Updating History Recording Storage Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-history-recording-storage-*.jar
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-history-recording-storage-${LATEST_SERVER}.tar.gz" -o "/tmp/guacamole-history-recording-storage.tar.gz"
|
||||
$STD tar -xf /tmp/guacamole-history-recording-storage.tar.gz -C /tmp
|
||||
mv /tmp/guacamole-history-recording-storage-"${LATEST_SERVER}"/guacamole-history-recording-storage-"${LATEST_SERVER}".jar /etc/guacamole/extensions/
|
||||
chmod 664 /etc/guacamole/extensions/guacamole-history-recording-storage-"${LATEST_SERVER}".jar
|
||||
rm -rf /tmp/guacamole-history-recording-storage*
|
||||
msg_ok "Updated History Recording Storage Extension"
|
||||
fi
|
||||
|
||||
# Reset permissions and prepare for service start
|
||||
msg_info "Resetting permissions"
|
||||
mkdir -p /var/guacamole
|
||||
chown daemon:daemon /var/guacamole
|
||||
mkdir -p /home/daemon/.config/freerdp
|
||||
chown daemon:daemon /home/daemon/.config/freerdp
|
||||
msg_ok "Permissions reset"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl daemon-reload
|
||||
systemctl start tomcat guacd
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ var_disk="${var_disk:-5}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -20,15 +20,79 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if ! ls -d /opt/tomcat-* >/dev/null 2>&1; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
TOMCAT_DIR=$(ls -d /opt/tomcat-* 2>/dev/null | head -n1)
|
||||
if [[ -z "$TOMCAT_DIR" || ! -d "$TOMCAT_DIR" ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Detect major version and current version from install path (e.g., /opt/tomcat-11 -> 11)
|
||||
TOMCAT_MAJOR=$(basename "$TOMCAT_DIR" | grep -oP 'tomcat-\K[0-9]+')
|
||||
if [[ -z "$TOMCAT_MAJOR" ]]; then
|
||||
msg_error "Cannot determine Tomcat major version from path: $TOMCAT_DIR"
|
||||
exit
|
||||
fi
|
||||
CURRENT_VERSION=$(grep -oP 'Apache Tomcat Version \K[0-9.]+' "$TOMCAT_DIR/RELEASE-NOTES" 2>/dev/null || echo "unknown")
|
||||
LATEST_VERSION=$(curl -fsSL "https://dlcdn.apache.org/tomcat/tomcat-${TOMCAT_MAJOR}/" | grep -oP 'v[0-9]+\.[0-9]+\.[0-9]+(-M[0-9]+)?/' | sort -V | tail -n1 | sed 's/\/$//; s/v//')
|
||||
|
||||
if [[ -z "$LATEST_VERSION" ]]; then
|
||||
msg_error "Failed to fetch latest version for Tomcat ${TOMCAT_MAJOR}"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [[ "$CURRENT_VERSION" == "$LATEST_VERSION" ]]; then
|
||||
msg_ok "${APP} ${CURRENT_VERSION} is already up to date"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Stopping Tomcat service"
|
||||
systemctl stop tomcat
|
||||
msg_ok "Stopped Tomcat service"
|
||||
|
||||
msg_info "Backing up configuration and applications"
|
||||
BACKUP_DIR="/tmp/tomcat-backup-$$"
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
cp -a "$TOMCAT_DIR/conf" "$BACKUP_DIR/conf"
|
||||
cp -a "$TOMCAT_DIR/webapps" "$BACKUP_DIR/webapps"
|
||||
[[ -d "$TOMCAT_DIR/lib" ]] && cp -a "$TOMCAT_DIR/lib" "$BACKUP_DIR/lib"
|
||||
msg_ok "Backed up configuration and applications"
|
||||
|
||||
msg_info "Downloading Tomcat ${LATEST_VERSION}"
|
||||
TOMCAT_URL="https://dlcdn.apache.org/tomcat/tomcat-${TOMCAT_MAJOR}/v${LATEST_VERSION}/bin/apache-tomcat-${LATEST_VERSION}.tar.gz"
|
||||
curl -fsSL "$TOMCAT_URL" -o /tmp/tomcat-update.tar.gz
|
||||
msg_ok "Downloaded Tomcat ${LATEST_VERSION}"
|
||||
|
||||
msg_info "Installing update"
|
||||
rm -rf "${TOMCAT_DIR:?}"/*
|
||||
tar --strip-components=1 -xzf /tmp/tomcat-update.tar.gz -C "$TOMCAT_DIR"
|
||||
rm -f /tmp/tomcat-update.tar.gz
|
||||
msg_ok "Installed update"
|
||||
|
||||
msg_info "Restoring configuration and applications"
|
||||
cp -a "$BACKUP_DIR/conf"/* "$TOMCAT_DIR/conf/"
|
||||
cp -a "$BACKUP_DIR/webapps"/* "$TOMCAT_DIR/webapps/" 2>/dev/null || true
|
||||
if [[ -d "$BACKUP_DIR/lib" ]]; then
|
||||
for jar in "$BACKUP_DIR/lib"/*.jar; do
|
||||
[[ -f "$jar" ]] || continue
|
||||
jar_name=$(basename "$jar")
|
||||
if [[ ! -f "$TOMCAT_DIR/lib/$jar_name" ]]; then
|
||||
cp "$jar" "$TOMCAT_DIR/lib/"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
rm -rf "$BACKUP_DIR"
|
||||
chown -R root:root "$TOMCAT_DIR"
|
||||
msg_ok "Restored configuration and applications"
|
||||
|
||||
msg_info "Starting Tomcat service"
|
||||
systemctl start tomcat
|
||||
msg_ok "Started Tomcat service"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-3}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
||||
@@ -41,7 +41,7 @@ function update_script() {
|
||||
find . -mindepth 1 -maxdepth 1 ! -name '.venv' -exec rm -rf {} +
|
||||
msg_ok "Cleaned old files"
|
||||
|
||||
fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy"
|
||||
fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy" "tarball"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
cd /opt/babybuddy
|
||||
|
||||
@@ -39,7 +39,7 @@ function update_script() {
|
||||
|
||||
PHP_APACHE="YES" PHP_MODULE="pgsql,curl" PHP_VERSION="8.3" setup_php
|
||||
setup_composer
|
||||
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal"
|
||||
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal" "tarball"
|
||||
|
||||
msg_info "Configuring Baikal"
|
||||
cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/
|
||||
|
||||
@@ -60,7 +60,7 @@ function update_script() {
|
||||
msg_ok "Data backed up"
|
||||
|
||||
rm -rf /opt/bitmagnet
|
||||
fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"
|
||||
fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet" "tarball"
|
||||
|
||||
msg_info "Updating Bitmagnet"
|
||||
cd /opt/bitmagnet
|
||||
|
||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-3}"
|
||||
var_ram="${var_ram:-3072}"
|
||||
var_disk="${var_disk:-7}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -28,17 +28,31 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
setup_mariadb
|
||||
|
||||
if check_for_gh_release "booklore" "booklore-app/BookLore"; then
|
||||
JAVA_VERSION="21" setup_java
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
setup_mariadb
|
||||
setup_yq
|
||||
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop booklore
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "backup old install"
|
||||
if grep -qE "^BOOKLORE_(DATA_PATH|BOOKDROP_PATH|BOOKS_PATH|PORT)=" /opt/booklore_storage/.env 2>/dev/null; then
|
||||
msg_info "Migrating old environment variables"
|
||||
sed -i 's/^BOOKLORE_DATA_PATH=/APP_PATH_CONFIG=/g' /opt/booklore_storage/.env
|
||||
sed -i 's/^BOOKLORE_BOOKDROP_PATH=/APP_BOOKDROP_FOLDER=/g' /opt/booklore_storage/.env
|
||||
sed -i '/^BOOKLORE_BOOKS_PATH=/d' /opt/booklore_storage/.env
|
||||
sed -i '/^BOOKLORE_PORT=/d' /opt/booklore_storage/.env
|
||||
msg_ok "Migrated old environment variables"
|
||||
fi
|
||||
|
||||
msg_info "Backing up old installation"
|
||||
mv /opt/booklore /opt/booklore_bak
|
||||
msg_ok "backup done"
|
||||
msg_ok "Backed up old installation"
|
||||
|
||||
fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore"
|
||||
fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore" "tarball"
|
||||
|
||||
msg_info "Building Frontend"
|
||||
cd /opt/booklore/booklore-ui
|
||||
@@ -46,12 +60,9 @@ function update_script() {
|
||||
$STD npm run build --configuration=production
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
JAVA_VERSION="21" setup_java
|
||||
setup_yq
|
||||
|
||||
msg_info "Building Backend"
|
||||
cd /opt/booklore/booklore-api
|
||||
APP_VERSION=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||
APP_VERSION=$(get_latest_github_release "booklore-app/BookLore")
|
||||
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
|
||||
$STD ./gradlew clean build --no-daemon
|
||||
mkdir -p /opt/booklore/dist
|
||||
|
||||
@@ -38,7 +38,7 @@ function update_script() {
|
||||
mv /opt/bookstack /opt/bookstack-backup
|
||||
msg_ok "Backup finished"
|
||||
|
||||
fetch_and_deploy_gh_release "bookstack" "BookStackApp/BookStack"
|
||||
fetch_and_deploy_gh_release "bookstack" "BookStackApp/BookStack" "tarball"
|
||||
PHP_MODULE="ldap,tidy,bz2,mysqli" PHP_FPM="YES" PHP_APACHE="YES" PHP_VERSION="8.3" setup_php
|
||||
setup_composer
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ function update_script() {
|
||||
msg_ok "Services Stopped"
|
||||
|
||||
rm -rf /opt/bytestash
|
||||
fetch_and_deploy_gh_release "bytestash" "jordan-dalby/ByteStash"
|
||||
fetch_and_deploy_gh_release "bytestash" "jordan-dalby/ByteStash" "tarball"
|
||||
|
||||
msg_info "Configuring ByteStash"
|
||||
cd /opt/bytestash/server
|
||||
|
||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
||||
@@ -53,7 +53,7 @@ function update_script() {
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
fetch_and_deploy_gh_release "cronicle" "jhuckaby/Cronicle"
|
||||
fetch_and_deploy_gh_release "cronicle" "jhuckaby/Cronicle" "tarball"
|
||||
|
||||
msg_info "Configuring Cronicle Worker"
|
||||
cd /opt/cronicle
|
||||
|
||||
@@ -37,7 +37,7 @@ function update_script() {
|
||||
[ -f /opt/cryptpad/config/config.js ] && mv /opt/cryptpad/config/config.js /opt/
|
||||
msg_ok "Backed up configuration"
|
||||
|
||||
fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad"
|
||||
fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad" "tarball"
|
||||
|
||||
msg_info "Updating CryptaPad"
|
||||
cd /opt/cryptpad
|
||||
|
||||
12
ct/deconz.sh
12
ct/deconz.sh
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-0}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -23,14 +23,14 @@ function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/apt/sources.list.d/deconz.list ]]; then
|
||||
if [[ ! -f /etc/apt/sources.list.d/deconz.list && ! -f /etc/apt/sources.list.d/deconz.sources ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating $APP LXC"
|
||||
$STD apt-get update
|
||||
$STD apt-get -y upgrade
|
||||
msg_ok "Updated $APP LXC"
|
||||
msg_info "Updating deCONZ"
|
||||
$STD apt update
|
||||
$STD apt upgrade -y
|
||||
msg_ok "Updated deCONZ"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ function update_script() {
|
||||
$STD tar -czf "$BACKUP_FILE" -C /opt dispatcharr /tmp/dispatcharr_db_*.sql
|
||||
msg_ok "Backup created: $BACKUP_FILE"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dispatcharr" "Dispatcharr/Dispatcharr"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dispatcharr" "Dispatcharr/Dispatcharr" "tarball"
|
||||
|
||||
msg_info "Updating Dispatcharr Backend"
|
||||
if [[ -f /tmp/dispatcharr.env.backup ]]; then
|
||||
|
||||
28
ct/docker.sh
28
ct/docker.sh
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -24,33 +24,20 @@ function update_script() {
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
get_latest_release() {
|
||||
curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||
}
|
||||
|
||||
msg_info "Updating base system"
|
||||
$STD apt-get update
|
||||
$STD apt-get -y upgrade
|
||||
$STD apt update
|
||||
$STD apt upgrade -y
|
||||
msg_ok "Base system updated"
|
||||
|
||||
msg_info "Updating Docker Engine"
|
||||
$STD apt-get install --only-upgrade -y docker-ce docker-ce-cli containerd.io
|
||||
$STD apt install --only-upgrade -y docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin
|
||||
msg_ok "Docker Engine updated"
|
||||
|
||||
if [[ -f /usr/local/lib/docker/cli-plugins/docker-compose ]]; then
|
||||
COMPOSE_BIN="/usr/local/lib/docker/cli-plugins/docker-compose"
|
||||
COMPOSE_NEW_VERSION=$(get_latest_release "docker/compose")
|
||||
msg_info "Updating Docker Compose to $COMPOSE_NEW_VERSION"
|
||||
curl -fsSL "https://github.com/docker/compose/releases/download/${COMPOSE_NEW_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
|
||||
-o "$COMPOSE_BIN"
|
||||
chmod +x "$COMPOSE_BIN"
|
||||
msg_ok "Docker Compose updated"
|
||||
fi
|
||||
|
||||
if docker ps -a --format '{{.Image}}' | grep -q '^portainer/portainer-ce:latest$'; then
|
||||
msg_info "Updating Portainer"
|
||||
$STD docker pull portainer/portainer-ce:latest
|
||||
$STD docker stop portainer && docker rm portainer
|
||||
$STD docker stop portainer
|
||||
$STD docker rm portainer
|
||||
$STD docker volume create portainer_data >/dev/null 2>&1
|
||||
$STD docker run -d \
|
||||
-p 8000:8000 \
|
||||
@@ -66,7 +53,8 @@ function update_script() {
|
||||
if docker ps -a --format '{{.Names}}' | grep -q '^portainer_agent$'; then
|
||||
msg_info "Updating Portainer Agent"
|
||||
$STD docker pull portainer/agent:latest
|
||||
$STD docker stop portainer_agent && docker rm portainer_agent
|
||||
$STD docker stop portainer_agent
|
||||
$STD docker rm portainer_agent
|
||||
$STD docker run -d \
|
||||
-p 9001:9001 \
|
||||
--name=portainer_agent \
|
||||
|
||||
12
ct/dockge.sh
12
ct/dockge.sh
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-18}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -27,11 +27,17 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ${APP}"
|
||||
|
||||
msg_info "Updating base system"
|
||||
$STD apt update
|
||||
$STD apt upgrade -y
|
||||
msg_ok "Base system updated"
|
||||
|
||||
msg_info "Updating Dockge"
|
||||
cd /opt/dockge
|
||||
$STD docker compose pull
|
||||
$STD docker compose up -d
|
||||
msg_ok "Updated ${APP}"
|
||||
msg_ok "Updated Dockge"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ function update_script() {
|
||||
rm -rf /opt/docmost
|
||||
msg_ok "Data backed up"
|
||||
|
||||
fetch_and_deploy_gh_release "docmost" "docmost/docmost"
|
||||
fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
cd /opt/docmost
|
||||
|
||||
@@ -35,7 +35,7 @@ function update_script() {
|
||||
|
||||
PG_VERSION="17" setup_postgresql
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "domain-locker" "Lissy93/domain-locker"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "domain-locker" "Lissy93/domain-locker" "tarball"
|
||||
|
||||
msg_info "Installing Modules (patience)"
|
||||
cd /opt/domain-locker
|
||||
|
||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
APP="Endurain"
|
||||
var_tags="${var_tags:-sport;social-media}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-5}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
|
||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-10}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
||||
@@ -34,7 +34,7 @@ function update_script() {
|
||||
msg_info "Stopped Service"
|
||||
|
||||
rm -rf /opt/excalidraw
|
||||
fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw"
|
||||
fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw" "tarball"
|
||||
|
||||
msg_info "Updating Excalidraw"
|
||||
cd /opt/excalidraw
|
||||
|
||||
@@ -35,7 +35,7 @@ function update_script() {
|
||||
|
||||
cp /opt/fluid-calendar/.env /opt/fluid.env
|
||||
rm -rf /opt/fluid-calendar
|
||||
fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"
|
||||
fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar" "tarball"
|
||||
|
||||
msg_info "Updating Fluid Calendar"
|
||||
mv /opt/fluid.env /opt/fluid-calendar/.env
|
||||
|
||||
@@ -40,7 +40,7 @@ function update_script() {
|
||||
|
||||
mv /opt/gatus/config/config.yaml /opt
|
||||
rm -rf /opt/gatus
|
||||
fetch_and_deploy_gh_release "gatus" "TwiN/gatus"
|
||||
fetch_and_deploy_gh_release "gatus" "TwiN/gatus" "tarball"
|
||||
|
||||
msg_info "Updating Gatus"
|
||||
cd /opt/gatus
|
||||
|
||||
@@ -97,7 +97,7 @@ EOF
|
||||
msg_ok "Installed Bun"
|
||||
|
||||
rm -rf /opt/gitea-mirror
|
||||
fetch_and_deploy_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror"
|
||||
fetch_and_deploy_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror" "tarball"
|
||||
|
||||
msg_info "Updating and rebuilding ${APP}"
|
||||
cd /opt/gitea-mirror
|
||||
|
||||
42
ct/gwn-manager.sh
Normal file
42
ct/gwn-manager.sh
Normal file
@@ -0,0 +1,42 @@
|
||||
#!/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: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.grandstream.com/products/networking-solutions/wi-fi-management/product/gwn-manager
|
||||
|
||||
APP="GWN-Manager"
|
||||
var_tags="${var_tags:-network;management}"
|
||||
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_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /gwn ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_custom "🚀" "${GN}" "The app offers a built-in updater. Please use it."
|
||||
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}:8443${CL}"
|
||||
@@ -1,6 +1,6 @@
|
||||
___ __ ______ __ ____ ____
|
||||
/ | ____ ____ ______/ /_ ___ / ____/___ __ _______/ /_ / __ \/ __ )
|
||||
/ /| | / __ \/ __ `/ ___/ __ \/ _ \______/ / / __ \/ / / / ___/ __ \/ / / / __ |
|
||||
/ ___ |/ /_/ / /_/ / /__/ / / / __/_____/ /___/ /_/ / /_/ / /__/ / / / /_/ / /_/ /
|
||||
/_/ |_/ .___/\__,_/\___/_/ /_/\___/ \____/\____/\__,_/\___/_/ /_/_____/_____/
|
||||
/_/
|
||||
___ __ ______ __ ____ ____
|
||||
/ | ____ ____ ______/ /_ ___ / ____/___ __ _______/ /_ / __ \/ __ )
|
||||
/ /| | / __ \/ __ `/ ___/ __ \/ _ \ / / / __ \/ / / / ___/ __ \/ / / / __ |
|
||||
/ ___ |/ /_/ / /_/ / /__/ / / / __/ / /___/ /_/ / /_/ / /__/ / / / /_/ / /_/ /
|
||||
/_/ |_/ .___/\__,_/\___/_/ /_/\___/ \____/\____/\__,_/\___/_/ /_/_____/_____/
|
||||
/_/
|
||||
|
||||
6
ct/headers/gwn-manager
Normal file
6
ct/headers/gwn-manager
Normal file
@@ -0,0 +1,6 @@
|
||||
_______ ___ __ __ ___
|
||||
/ ____/ | / / | / / / |/ /___ _____ ____ _____ ____ _____
|
||||
/ / __ | | /| / / |/ /_____/ /|_/ / __ `/ __ \/ __ `/ __ `/ _ \/ ___/
|
||||
/ /_/ / | |/ |/ / /| /_____/ / / / /_/ / / / / /_/ / /_/ / __/ /
|
||||
\____/ |__/|__/_/ |_/ /_/ /_/\__,_/_/ /_/\__,_/\__, /\___/_/
|
||||
/____/
|
||||
@@ -39,7 +39,7 @@ function update_script() {
|
||||
cp -a /opt/healthchecks "$BACKUP"
|
||||
msg_ok "Backup created at $BACKUP"
|
||||
|
||||
fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks"
|
||||
fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks" "tarball"
|
||||
|
||||
cd /opt/healthchecks
|
||||
if [[ -d venv ]]; then
|
||||
|
||||
49
ct/homer.sh
49
ct/homer.sh
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-2}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -27,36 +27,31 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop homer
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up assets directory"
|
||||
cd ~
|
||||
mkdir -p assets-backup
|
||||
cp -R /opt/homer/assets/. assets-backup
|
||||
msg_ok "Backed up assets directory"
|
||||
if check_for_gh_release "homer" "bastienwirtz/homer"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop homer
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
rm -rf /opt/homer/*
|
||||
cd /opt/homer
|
||||
curl -fsSL "https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip" -o $(basename "https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip")
|
||||
$STD unzip homer.zip
|
||||
msg_ok "Updated ${APP}"
|
||||
msg_info "Backing up assets directory"
|
||||
cd ~
|
||||
mkdir -p assets-backup
|
||||
cp -R /opt/homer/assets/. assets-backup
|
||||
msg_ok "Backed up assets directory"
|
||||
|
||||
msg_info "Restoring assets directory"
|
||||
cd ~
|
||||
cp -Rf assets-backup/. /opt/homer/assets/
|
||||
msg_ok "Restored assets directory"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homer" "bastienwirtz/homer" "prebuild" "latest" "/opt/homer" "homer.zip"
|
||||
|
||||
msg_info "Cleaning"
|
||||
rm -rf assets-backup /opt/homer/homer.zip
|
||||
msg_ok "Cleaned"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start homer
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
msg_info "Restoring assets directory"
|
||||
cd ~
|
||||
cp -Rf assets-backup/. /opt/homer/assets/
|
||||
rm -rf assets-backup
|
||||
msg_ok "Restored assets directory"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start homer
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ function update_script() {
|
||||
mv /opt/hortusfox/ /opt/hortusfox-backup
|
||||
msg_ok "Backed up current HortusFox installation"
|
||||
|
||||
fetch_and_deploy_gh_release "hortusfox" "danielbrendel/hortusfox-web"
|
||||
fetch_and_deploy_gh_release "hortusfox" "danielbrendel/hortusfox-web" "tarball"
|
||||
|
||||
msg_info "Updating HortusFox"
|
||||
cd /opt/hortusfox
|
||||
|
||||
@@ -36,7 +36,7 @@ function update_script() {
|
||||
systemctl stop huntarr
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
fetch_and_deploy_gh_release "huntarr" "plexguide/Huntarr.io"
|
||||
fetch_and_deploy_gh_release "huntarr" "plexguide/Huntarr.io" "tarball"
|
||||
|
||||
msg_info "Updating Huntarr"
|
||||
cd /opt/huntarr
|
||||
|
||||
@@ -33,6 +33,7 @@ function update_script() {
|
||||
msg_ok "Service stopped"
|
||||
|
||||
msg_info "Creating backup"
|
||||
[[ -f /opt/infisical_backup.sql ]] && rm -f /opt/infisical_backup.sql
|
||||
DB_PASS=$(grep -Po '(?<=^Database Password:\s).*' ~/infisical.creds | head -n1)
|
||||
PGPASSWORD=$DB_PASS pg_dump -U infisical -h localhost -d infisical_db > /opt/infisical_backup.sql
|
||||
msg_ok "Created backup"
|
||||
|
||||
@@ -43,4 +43,4 @@ 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} and Port 8888 for v1 or Port 8086 (v2)${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP} and Port 8888 for v1, Port 8086 for v2 or Port 8181 for v3${CL}"
|
||||
|
||||
@@ -32,7 +32,7 @@ function update_script() {
|
||||
|
||||
msg_info "Updating Jenkins"
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
$STD apt upgrade -y
|
||||
msg_ok "Updated Jenkins"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
|
||||
@@ -40,7 +40,7 @@ function update_script() {
|
||||
mv /opt/kapowarr/db /opt/
|
||||
msg_ok "Backup Created"
|
||||
|
||||
fetch_and_deploy_gh_release "kapowarr" "Casvt/Kapowarr"
|
||||
fetch_and_deploy_gh_release "kapowarr" "Casvt/Kapowarr" "tarball"
|
||||
|
||||
msg_info "Updating Kapowarr"
|
||||
mv /opt/db /opt/kapowarr
|
||||
|
||||
@@ -55,7 +55,7 @@ function update_script() {
|
||||
systemctl daemon-reload
|
||||
fi
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep" "tarball"
|
||||
if command -v corepack >/dev/null; then
|
||||
$STD corepack disable
|
||||
fi
|
||||
|
||||
@@ -49,7 +49,7 @@ function update_script() {
|
||||
[ -f /opt/kimai/config/packages/local.yaml ] && cp /opt/kimai/config/packages/local.yaml "$BACKUP_DIR/"
|
||||
msg_ok "Backup completed"
|
||||
|
||||
fetch_and_deploy_gh_release "kimai" "kimai/kimai"
|
||||
fetch_and_deploy_gh_release "kimai" "kimai/kimai" "tarball"
|
||||
|
||||
msg_info "Updating Kimai"
|
||||
[ -d "$BACKUP_DIR/var" ] && cp -r "$BACKUP_DIR/var" /opt/kimai/
|
||||
|
||||
@@ -36,7 +36,7 @@ function update_script() {
|
||||
mv /opt/koillection/ /opt/koillection-backup
|
||||
msg_ok "Backup created"
|
||||
|
||||
fetch_and_deploy_gh_release "koillection" "benjaminjonard/koillection"
|
||||
fetch_and_deploy_gh_release "koillection" "benjaminjonard/koillection" "tarball"
|
||||
|
||||
msg_info "Updating Koillection"
|
||||
cd /opt/koillection
|
||||
|
||||
@@ -38,7 +38,7 @@ function update_script() {
|
||||
msg_ok "Backup completed"
|
||||
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
fetch_and_deploy_gh_release "kometa" "Kometa-Team/Kometa"
|
||||
fetch_and_deploy_gh_release "kometa" "Kometa-Team/Kometa" "tarball"
|
||||
|
||||
msg_info "Updating Kometa"
|
||||
cd /opt/kometa
|
||||
|
||||
@@ -40,7 +40,7 @@ function update_script() {
|
||||
rm -rf /opt/linkwarden
|
||||
msg_ok "Backed up data"
|
||||
|
||||
fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden"
|
||||
fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden" "tarball"
|
||||
|
||||
msg_info "Updating Linkwarden"
|
||||
cd /opt/linkwarden
|
||||
|
||||
@@ -38,7 +38,7 @@ function update_script() {
|
||||
rm -rf /opt/mafl
|
||||
msg_ok "Backup complete"
|
||||
|
||||
fetch_and_deploy_gh_release "mafl" "hywax/mafl"
|
||||
fetch_and_deploy_gh_release "mafl" "hywax/mafl" "tarball"
|
||||
|
||||
msg_info "Updating Mafl"
|
||||
cd /opt/mafl
|
||||
|
||||
@@ -28,7 +28,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
|
||||
if check_for_gh_release "outline" "outline/outline"; then
|
||||
msg_info "Stopping Services"
|
||||
@@ -46,7 +46,8 @@ function update_script() {
|
||||
mv /opt/.env /opt/outline
|
||||
export NODE_ENV=development
|
||||
export NODE_OPTIONS="--max-old-space-size=3584"
|
||||
$STD yarn install --frozen-lockfile
|
||||
$STD corepack enable
|
||||
$STD yarn install --immutable
|
||||
export NODE_ENV=production
|
||||
$STD yarn build
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
@@ -37,7 +37,7 @@ function update_script() {
|
||||
cp -r /opt/paperless-ai/data /opt/paperless-ai-data-backup
|
||||
msg_ok "Backed up data"
|
||||
|
||||
fetch_and_deploy_gh_release "paperless-ai" "clusterzx/paperless-ai"
|
||||
fetch_and_deploy_gh_release "paperless-ai" "clusterzx/paperless-ai" "tarball"
|
||||
|
||||
msg_info "Restoring data"
|
||||
cp -r /opt/paperless-ai-data-backup/* /opt/paperless-ai/data/
|
||||
|
||||
@@ -27,9 +27,8 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_custom "🚀" "${GN}" "The app offers a built-in updater. Please use it."
|
||||
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
@@ -33,7 +33,7 @@ function update_script() {
|
||||
systemctl stop snowshare
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
fetch_and_deploy_gh_release "snowshare" "TuroYT/snowshare"
|
||||
fetch_and_deploy_gh_release "snowshare" "TuroYT/snowshare" "tarball"
|
||||
|
||||
msg_info "Updating Snowshare"
|
||||
cd /opt/snowshare
|
||||
|
||||
@@ -36,7 +36,7 @@ function update_script() {
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
setup_uv
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "streamlink-webui" "CrazyWolf13/streamlink-webui"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "streamlink-webui" "CrazyWolf13/streamlink-webui" "tarball"
|
||||
|
||||
msg_info "Updating streamlink-webui"
|
||||
$STD uv venv /opt/streamlink-webui/backend/src/.venv
|
||||
|
||||
@@ -40,7 +40,7 @@ function update_script() {
|
||||
mv /opt/tianji /opt/tianji_bak
|
||||
msg_ok "Backed up data"
|
||||
|
||||
fetch_and_deploy_gh_release "tianji" "msgbyte/tianji"
|
||||
fetch_and_deploy_gh_release "tianji" "msgbyte/tianji" "tarball"
|
||||
|
||||
msg_info "Updating Tianji"
|
||||
cd /opt/tianji
|
||||
|
||||
@@ -38,7 +38,7 @@ function update_script() {
|
||||
msg_ok "Created backup"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "web-check" "CrazyWolf13/web-check"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "web-check" "CrazyWolf13/web-check" "tarball"
|
||||
|
||||
msg_info "Restoring backup"
|
||||
mv /opt/.env /opt/web-check
|
||||
|
||||
@@ -42,7 +42,7 @@ function update_script() {
|
||||
rm -rf /opt/wizarr/migrations/versions/*
|
||||
msg_ok "Backup Created"
|
||||
|
||||
fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr"
|
||||
fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr" "tarball"
|
||||
|
||||
msg_info "Updating Wizarr"
|
||||
cd /opt/wizarr
|
||||
|
||||
@@ -53,7 +53,7 @@ msg_ok "Installed Dependencies"
|
||||
# setup_mongodb # Install MongoDB
|
||||
#
|
||||
# --- GitHub Release (PREFERRED METHOD) ---
|
||||
# fetch_and_deploy_gh_release "appname" "owner/repo" # Downloads, extracts, tracks version
|
||||
# fetch_and_deploy_gh_release "appname" "owner/repo" "tarball" # Downloads, extracts, tracks version
|
||||
# fetch_and_deploy_gh_release "appname" "owner/repo" "tarball" "latest" "/opt/appname"
|
||||
# fetch_and_deploy_gh_release "appname" "owner/repo" "prebuild" "latest" "/opt/appname" "app-*.tar.gz"
|
||||
#
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": "https://cassandra.apache.org/doc/latest/",
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
{
|
||||
"name": "Apache-CouchDB",
|
||||
"name": "Apache CouchDB",
|
||||
"slug": "apache-couchdb",
|
||||
"categories": [
|
||||
8
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 5984,
|
||||
"documentation": "https://docs.couchdb.org/en/stable/",
|
||||
"website": "https://couchdb.apache.org/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/couchdb.webp",
|
||||
"config_path": "etc/default.ini",
|
||||
"description": "Apache-CouchDB Seamless multi-master sync, that scales from Big Data to Mobile, with an Intuitive HTTP/JSON API and designed for Reliability.",
|
||||
"description": "Apache CouchDB Seamless multi-master sync, that scales from Big Data to Mobile, with an Intuitive HTTP/JSON API and designed for Reliability.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 4096,
|
||||
"hdd": 10,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -33,7 +33,7 @@
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Show Login Credentials: `cat CouchDB.creds`",
|
||||
"text": "Login Credentials: `cat ~/couchdb.creds`",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2024-12-19",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8080,
|
||||
"documentation": "https://guacamole.apache.org/doc/gug/",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2025-03-04",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8080,
|
||||
"documentation": "https://cwiki.apache.org/confluence/display/TOMCAT",
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 5,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -20,10 +20,10 @@
|
||||
"script": "ct/argus.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 256,
|
||||
"ram": 512,
|
||||
"hdd": 3,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 3072,
|
||||
"hdd": 7,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 18,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"script": "ct/endurain.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"ram": 4096,
|
||||
"hdd": 5,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 10,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
40
frontend/public/json/gwn-manager.json
Normal file
40
frontend/public/json/gwn-manager.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "GWN Manager",
|
||||
"slug": "gwn-manager",
|
||||
"categories": [
|
||||
9
|
||||
],
|
||||
"date_created": "2026-01-08",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8443,
|
||||
"documentation": "https://documentation.grandstream.com/article-categories/gwn-mgmt/",
|
||||
"website": "https://www.grandstream.com/products/networking-solutions/wi-fi-management/product/gwn-manager",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/gwn-manager.webp",
|
||||
"config_path": "/gwn/conf/gwn.conf",
|
||||
"description": "GWN Manager is a free on-premise enterprise-grade, management platform for Grandstream GWN series devices. Typically deployed on a customer’s private network, this flexible, scalable solution offers simplified configuration and management.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/gwn-manager.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 6144,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Installation package is pulled from GrandStream website. Installation may take a while.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
48
frontend/public/json/jellystat.json
Normal file
48
frontend/public/json/jellystat.json
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name": "Jellystat",
|
||||
"slug": "jellystat",
|
||||
"categories": [
|
||||
9
|
||||
],
|
||||
"date_created": "2026-01-12",
|
||||
"type": "addon",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://github.com/CyferShepard/Jellystat",
|
||||
"website": "https://github.com/CyferShepard/Jellystat",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/jellystat.webp",
|
||||
"config_path": "/opt/jellystat/.env",
|
||||
"description": "A free and open source statistics app for Jellyfin",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "tools/addon/jellystat.sh",
|
||||
"resources": {
|
||||
"cpu": null,
|
||||
"ram": null,
|
||||
"hdd": null,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Requires Node.js 20+ and PostgreSQL (auto-installed if missing)",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Default PostgreSQL credentials: jellystat / jellystat",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Update with: update_jellystat",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -23,7 +23,7 @@ setup_composer
|
||||
setup_mariadb
|
||||
MARIADB_DB_NAME="2fauth_db" MARIADB_DB_USER="2fauth" setup_mariadb_db
|
||||
import_local_ip
|
||||
fetch_and_deploy_gh_release "2fauth" "Bubka/2FAuth"
|
||||
fetch_and_deploy_gh_release "2fauth" "Bubka/2FAuth" "tarball"
|
||||
|
||||
msg_info "Setup 2FAuth"
|
||||
cd /opt/2fauth
|
||||
|
||||
@@ -26,7 +26,7 @@ PYTHON_VERSION="3.13" setup_uv
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
|
||||
PG_VERSION="17" PG_MODULES="postgis" setup_postgresql
|
||||
PG_DB_NAME="adventurelog_db" PG_DB_USER="adventurelog_user" PG_DB_EXTENSIONS="postgis" setup_postgresql_db
|
||||
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
|
||||
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog" "tarball"
|
||||
import_local_ip
|
||||
|
||||
msg_info "Installing AdventureLog (Patience)"
|
||||
|
||||
@@ -13,22 +13,16 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y apt-transport-https
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Eclipse Temurin (Patience)"
|
||||
curl -fsSL "https://packages.adoptium.net/artifactory/api/gpg/key/public" | gpg --dearmor >/etc/apt/trusted.gpg.d/adoptium.gpg
|
||||
echo 'deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/adoptium.gpg] https://packages.adoptium.net/artifactory/deb bookworm main' >/etc/apt/sources.list.d/adoptium.list
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y temurin-11-jdk
|
||||
msg_ok "Installed Eclipse Temurin"
|
||||
JAVA_VERSION="11" setup_java
|
||||
|
||||
msg_info "Installing Apache Cassandra"
|
||||
curl -fsSL "https://downloads.apache.org/cassandra/KEYS" | gpg --dearmor >/etc/apt/trusted.gpg.d/cassandra.gpg
|
||||
echo "deb https://debian.cassandra.apache.org 41x main" >/etc/apt/sources.list.d/cassandra.sources.list
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y cassandra cassandra-tools
|
||||
setup_deb822_repo \
|
||||
"cassandra" \
|
||||
"https://downloads.apache.org/cassandra/KEYS" \
|
||||
"https://debian.cassandra.apache.org" \
|
||||
"41x" \
|
||||
"main"
|
||||
$STD apt install -y cassandra cassandra-tools
|
||||
sed -i -e 's/^rpc_address: localhost/#rpc_address: localhost/g' -e 's/^# rpc_interface: eth1/rpc_interface: eth0/g' /etc/cassandra/cassandra.yaml
|
||||
msg_ok "Installed Apache Cassandra"
|
||||
|
||||
|
||||
@@ -13,10 +13,6 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y apt-transport-https
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Apache CouchDB"
|
||||
ERLANG_COOKIE=$(openssl rand -base64 32)
|
||||
ADMIN_PASS="$(openssl rand -base64 18 | cut -c1-13)"
|
||||
@@ -25,14 +21,19 @@ debconf-set-selections <<<"couchdb couchdb/mode select standalone"
|
||||
debconf-set-selections <<<"couchdb couchdb/bindaddress string 0.0.0.0"
|
||||
debconf-set-selections <<<"couchdb couchdb/adminpass password $ADMIN_PASS"
|
||||
debconf-set-selections <<<"couchdb couchdb/adminpass_again password $ADMIN_PASS"
|
||||
curl -fsSL https://couchdb.apache.org/repo/keys.asc | gpg --dearmor -o /usr/share/keyrings/couchdb-archive-keyring.gpg
|
||||
VERSION_CODENAME="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
||||
echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ ${VERSION_CODENAME} main" >/etc/apt/sources.list.d/couchdb.sources.list
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y couchdb
|
||||
echo -e "CouchDB Erlang Cookie: \e[32m$ERLANG_COOKIE\e[0m" >>~/CouchDB.creds
|
||||
echo -e "CouchDB Admin Password: \e[32m$ADMIN_PASS\e[0m" >>~/CouchDB.creds
|
||||
msg_ok "Installed Apache CouchDB."
|
||||
setup_deb822_repo \
|
||||
"couchdb" \
|
||||
"https://couchdb.apache.org/repo/keys.asc" \
|
||||
"https://apache.jfrog.io/artifactory/couchdb-deb" \
|
||||
"$(get_os_info codename)" \
|
||||
"main"
|
||||
$STD apt install -y couchdb
|
||||
{
|
||||
echo "CouchDB Credentials"
|
||||
echo "CouchDB Erlang Cookie: $ERLANG_COOKIE"
|
||||
echo "CouchDB Admin Password: $ADMIN_PASS"
|
||||
} >>~/couchdb.creds
|
||||
msg_ok "Installed Apache CouchDB"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
@@ -15,12 +15,11 @@ update_os
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
build-essential \
|
||||
jq \
|
||||
libcairo2-dev \
|
||||
libturbojpeg0 \
|
||||
libjpeg62-turbo-dev \
|
||||
libpng-dev \
|
||||
libtool-bin \
|
||||
libossp-uuid-dev \
|
||||
uuid-dev \
|
||||
libvncserver-dev \
|
||||
freerdp3-dev \
|
||||
libssh2-1-dev \
|
||||
@@ -34,71 +33,60 @@ $STD apt install -y \
|
||||
libswscale-dev \
|
||||
libavcodec-dev \
|
||||
libavutil-dev \
|
||||
libavformat-dev \
|
||||
default-jdk
|
||||
libavformat-dev
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
JAVA_VERSION="11" setup_java
|
||||
setup_mariadb
|
||||
MARIADB_DB_NAME="guacamole_db" MARIADB_DB_USER="guacamole_user" setup_mariadb_db
|
||||
|
||||
msg_info "Setup Apache Tomcat"
|
||||
RELEASE=$(curl -fsSL https://dlcdn.apache.org/tomcat/tomcat-9/ | grep -oP '(?<=href=")v[^"/]+(?=/")' | sed 's/^v//' | sort -V | tail -n1)
|
||||
mkdir -p /opt/apache-guacamole/tomcat9
|
||||
mkdir -p /opt/apache-guacamole/server
|
||||
curl -fsSL "https://dlcdn.apache.org/tomcat/tomcat-9/v${RELEASE}/bin/apache-tomcat-${RELEASE}.tar.gz" | tar -xz -C /opt/apache-guacamole/tomcat9 --strip-components=1
|
||||
TOMCAT_VERSION=$(curl -fsSL https://dlcdn.apache.org/tomcat/tomcat-9/ | grep -oP '(?<=href=")v[^"/]+(?=/")' | sed 's/^v//' | sort -V | tail -n1)
|
||||
mkdir -p /opt/apache-guacamole/{tomcat9,server}
|
||||
curl -fsSL "https://dlcdn.apache.org/tomcat/tomcat-9/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz" | tar -xz -C /opt/apache-guacamole/tomcat9 --strip-components=1
|
||||
useradd -r -d /opt/apache-guacamole/tomcat9 -s /bin/false tomcat
|
||||
chown -R tomcat: /opt/apache-guacamole/tomcat9
|
||||
chmod -R g+r /opt/apache-guacamole/tomcat9/conf
|
||||
chmod g+x /opt/apache-guacamole/tomcat9/conf
|
||||
msg_ok "Setup Apache Tomcat"
|
||||
echo "${TOMCAT_VERSION}" >~/.guacamole_tomcat
|
||||
msg_ok "Setup Apache Tomcat ${TOMCAT_VERSION}"
|
||||
|
||||
msg_info "Setup Apache Guacamole"
|
||||
mkdir -p /etc/guacamole/{extensions,lib}
|
||||
RELEASE_SERVER=$(curl -fsSL https://api.github.com/repos/apache/guacamole-server/tags | jq -r '.[].name' | grep -v -- '-RC' | head -n 1)
|
||||
curl -fsSL "https://api.github.com/repos/apache/guacamole-server/tarball/refs/tags/${RELEASE_SERVER}" | tar -xz --strip-components=1 -C /opt/apache-guacamole/server
|
||||
GUAC_SERVER_VERSION=$(curl -fsSL https://api.github.com/repos/apache/guacamole-server/tags | jq -r '.[].name' | grep -v -- '-RC' | head -n 1)
|
||||
GUAC_CLIENT_VERSION=$(curl -fsSL https://api.github.com/repos/apache/guacamole-client/tags | jq -r '.[].name' | grep -v -- '-RC' | head -n 1)
|
||||
MYSQL_CONNECTOR_VERSION=$(curl -fsSL "https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/maven-metadata.xml" | grep -oP '<latest>\K[^<]+')
|
||||
curl -fsSL "https://api.github.com/repos/apache/guacamole-server/tarball/refs/tags/${GUAC_SERVER_VERSION}" | tar -xz --strip-components=1 -C /opt/apache-guacamole/server
|
||||
cd /opt/apache-guacamole/server
|
||||
export CPPFLAGS="-Wno-error=deprecated-declarations"
|
||||
$STD autoreconf -fi
|
||||
$STD ./configure --with-init-dir=/etc/init.d --enable-allow-freerdp-snapshots --disable-guaclog
|
||||
$STD ./configure --with-init-dir=/etc/init.d --enable-allow-freerdp-snapshots
|
||||
$STD make
|
||||
$STD make install
|
||||
$STD ldconfig
|
||||
RELEASE_CLIENT=$(curl -fsSL https://api.github.com/repos/apache/guacamole-client/tags | jq -r '.[].name' | grep -v -- '-RC' | head -n 1)
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${RELEASE_CLIENT}/binary/guacamole-${RELEASE_CLIENT}.war" -o "/opt/apache-guacamole/tomcat9/webapps/guacamole.war"
|
||||
cd /root
|
||||
curl -fsSL "https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-9.3.0.tar.gz" -o "/root/mysql-connector-j-9.3.0.tar.gz"
|
||||
$STD tar -xf ~/mysql-connector-j-9.3.0.tar.gz
|
||||
mv ~/mysql-connector-j-9.3.0/mysql-connector-j-9.3.0.jar /etc/guacamole/lib/
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${RELEASE_SERVER}/binary/guacamole-auth-jdbc-${RELEASE_SERVER}.tar.gz" -o "/root/guacamole-auth-jdbc-${RELEASE_SERVER}.tar.gz"
|
||||
$STD tar -xf ~/guacamole-auth-jdbc-"$RELEASE_SERVER".tar.gz
|
||||
mv ~/guacamole-auth-jdbc-"$RELEASE_SERVER"/mysql/guacamole-auth-jdbc-mysql-"$RELEASE_SERVER".jar /etc/guacamole/extensions/
|
||||
rm -rf ~/mysql-connector-j-9.3.0{,.tar.gz}
|
||||
echo "${GUAC_SERVER_VERSION}" >~/.guacamole_server
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${GUAC_CLIENT_VERSION}/binary/guacamole-${GUAC_CLIENT_VERSION}.war" -o "/opt/apache-guacamole/tomcat9/webapps/guacamole.war"
|
||||
echo "${GUAC_CLIENT_VERSION}" >~/.guacamole_client
|
||||
curl -fsSL "https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/${MYSQL_CONNECTOR_VERSION}/mysql-connector-j-${MYSQL_CONNECTOR_VERSION}.jar" -o "/etc/guacamole/lib/mysql-connector-j.jar"
|
||||
echo "${MYSQL_CONNECTOR_VERSION}" >~/.guacamole_mysql_connector
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${GUAC_SERVER_VERSION}/binary/guacamole-auth-jdbc-${GUAC_SERVER_VERSION}.tar.gz" -o "/root/guacamole-auth-jdbc-${GUAC_SERVER_VERSION}.tar.gz"
|
||||
$STD tar -xf ~/guacamole-auth-jdbc-"$GUAC_SERVER_VERSION".tar.gz
|
||||
mv ~/guacamole-auth-jdbc-"$GUAC_SERVER_VERSION"/mysql/guacamole-auth-jdbc-mysql-"$GUAC_SERVER_VERSION".jar /etc/guacamole/extensions/
|
||||
echo "${GUAC_SERVER_VERSION}" >~/.guacamole_auth_jdbc
|
||||
msg_ok "Setup Apache Guacamole"
|
||||
|
||||
msg_info "Setup Database"
|
||||
DB_NAME=guacamole_db
|
||||
DB_USER=guacamole_user
|
||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
||||
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||
{
|
||||
echo "Guacamole-Credentials"
|
||||
echo "Database User: $DB_USER"
|
||||
echo "Database Password: $DB_PASS"
|
||||
echo "Database Name: $DB_NAME"
|
||||
} >>~/guacamole.creds
|
||||
cd guacamole-auth-jdbc-"${RELEASE_SERVER}"/mysql/schema
|
||||
cat *.sql | mariadb -u root ${DB_NAME}
|
||||
msg_info "Importing Database Schema"
|
||||
cd ~/guacamole-auth-jdbc-"${GUAC_SERVER_VERSION}"/mysql/schema
|
||||
cat *.sql | mariadb -u root ${MARIADB_DB_NAME}
|
||||
{
|
||||
echo "mysql-hostname: 127.0.0.1"
|
||||
echo "mysql-port: 3306"
|
||||
echo "mysql-database: $DB_NAME"
|
||||
echo "mysql-username: $DB_USER"
|
||||
echo "mysql-password: $DB_PASS"
|
||||
|
||||
echo "mysql-database: $MARIADB_DB_NAME"
|
||||
echo "mysql-username: $MARIADB_DB_USER"
|
||||
echo "mysql-password: $MARIADB_DB_PASS"
|
||||
} >>/etc/guacamole/guacamole.properties
|
||||
rm -rf ~/guacamole-auth-jdbc-"$RELEASE_SERVER"{,.tar.gz}
|
||||
msg_ok "Setup Database"
|
||||
rm -rf ~/guacamole-auth-jdbc-"$GUAC_SERVER_VERSION"{,.tar.gz}
|
||||
msg_ok "Imported Database Schema"
|
||||
|
||||
msg_info "Setup Service"
|
||||
cat <<EOF >/etc/guacamole/guacd.conf
|
||||
@@ -143,7 +131,7 @@ PIDFile=/var/run/guacd.pid
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl -q enable --now mysql tomcat guacd
|
||||
systemctl enable -q --now mysql tomcat guacd
|
||||
msg_ok "Setup Service"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -13,19 +13,6 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
lsb-release \
|
||||
apt-transport-https
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setting up Adoptium Repository"
|
||||
mkdir -p /etc/apt/keyrings
|
||||
curl -fsSL "https://packages.adoptium.net/artifactory/api/gpg/key/public" | gpg --dearmor >/etc/apt/trusted.gpg.d/adoptium.gpg
|
||||
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" >/etc/apt/sources.list.d/adoptium.list
|
||||
$STD apt-get update
|
||||
msg_ok "Set up Adoptium Repository"
|
||||
|
||||
read -r -p "${TAB3}Which Tomcat version would you like to install? (9, 10.1, 11): " version
|
||||
case $version in
|
||||
9)
|
||||
@@ -33,25 +20,8 @@ case $version in
|
||||
echo "Which LTS Java version would you like to use? (8, 11, 17, 21): "
|
||||
read -r jdk_version
|
||||
case $jdk_version in
|
||||
8)
|
||||
msg_info "Installing Temurin JDK 8 (LTS) for Tomcat $TOMCAT_VERSION"
|
||||
$STD apt-get install -y temurin-8-jdk
|
||||
msg_ok "Setup Temurin JDK 8 (LTS)"
|
||||
;;
|
||||
11)
|
||||
msg_info "Installing Temurin JDK 11 (LTS) for Tomcat $TOMCAT_VERSION"
|
||||
$STD apt-get install -y temurin-11-jdk
|
||||
msg_ok "Setup Temurin JDK 11 (LTS)"
|
||||
;;
|
||||
17)
|
||||
msg_info "Installing Temurin JDK 17 (LTS) for Tomcat $TOMCAT_VERSION"
|
||||
$STD apt-get install -qqy temurin-17-jdk
|
||||
msg_ok "Setup Temurin JDK 17 (LTS)"
|
||||
;;
|
||||
21)
|
||||
msg_info "Installing Temurin JDK 21 (LTS) for Tomcat $TOMCAT_VERSION"
|
||||
$STD apt-get install -y temurin-21-jdk
|
||||
msg_ok "Setup Temurin JDK 21 (LTS)"
|
||||
8 | 11 | 17 | 21)
|
||||
JAVA_VERSION="$jdk_version" setup_java
|
||||
;;
|
||||
*)
|
||||
msg_error "Invalid JDK version selected. Please enter 8, 11, 17 or 21."
|
||||
@@ -61,26 +31,14 @@ case $version in
|
||||
;;
|
||||
10 | 10.1)
|
||||
TOMCAT_VERSION="10"
|
||||
echo "Which LTS Java version would you like to use? (11, 17): "
|
||||
echo "Which LTS Java version would you like to use? (11, 17, 21): "
|
||||
read -r jdk_version
|
||||
case $jdk_version in
|
||||
11)
|
||||
msg_info "Installing Temurin JDK 11 (LTS) for Tomcat $TOMCAT_VERSION"
|
||||
$STD apt-get install -y temurin-11-jdk
|
||||
msg_ok "Setup Temurin JDK 11"
|
||||
;;
|
||||
17)
|
||||
msg_info "Installing Temurin JDK 17 (LTS) for Tomcat $TOMCAT_VERSION"
|
||||
$STD apt-get install -y temurin-17-jdk
|
||||
msg_ok "Setup Temurin JDK 17"
|
||||
;;
|
||||
21)
|
||||
msg_info "Installing Temurin JDK 21 (LTS) for Tomcat $TOMCAT_VERSION"
|
||||
$STD apt-get install -y temurin-21-jdk
|
||||
msg_ok "Setup Temurin JDK 21 (LTS)"
|
||||
11 | 17 | 21)
|
||||
JAVA_VERSION="$jdk_version" setup_java
|
||||
;;
|
||||
*)
|
||||
msg_error "Invalid JDK version selected. Please enter 11 or 17."
|
||||
msg_error "Invalid JDK version selected. Please enter 11, 17 or 21."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -90,15 +48,8 @@ case $version in
|
||||
echo "Which LTS Java version would you like to use? (17, 21): "
|
||||
read -r jdk_version
|
||||
case $jdk_version in
|
||||
17)
|
||||
msg_info "Installing Temurin JDK 17 (LTS) for Tomcat $TOMCAT_VERSION"
|
||||
$STD apt-get install -qqy temurin-17-jdk
|
||||
msg_ok "Setup Temurin JDK 17"
|
||||
;;
|
||||
21)
|
||||
msg_info "Installing Temurin JDK 21 (LTS) for Tomcat $TOMCAT_VERSION"
|
||||
$STD apt-get install -y temurin-21-jdk
|
||||
msg_ok "Setup Temurin JDK 21 (LTS)"
|
||||
17 | 21)
|
||||
JAVA_VERSION="$jdk_version" setup_java
|
||||
;;
|
||||
*)
|
||||
msg_error "Invalid JDK version selected. Please enter 17 or 21."
|
||||
|
||||
@@ -24,7 +24,7 @@ $STD apt-get install -y \
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_uv
|
||||
fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy"
|
||||
fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy" "tarball"
|
||||
|
||||
msg_info "Installing Babybuddy"
|
||||
mkdir -p /opt/data
|
||||
|
||||
@@ -20,7 +20,7 @@ msg_ok "Installed Dependencies"
|
||||
PG_VERSION="16" setup_postgresql
|
||||
PHP_APACHE="YES" PHP_MODULE="pgsql,curl" PHP_VERSION="8.3" setup_php
|
||||
setup_composer
|
||||
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal"
|
||||
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
|
||||
|
||||
msg_info "Configuring Baikal"
|
||||
|
||||
@@ -22,7 +22,7 @@ msg_ok "Installed Dependencies"
|
||||
|
||||
PG_VERSION="16" setup_postgresql
|
||||
setup_go
|
||||
fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"
|
||||
fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet" "tarball"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
|
||||
msg_info "Setting up database"
|
||||
|
||||
@@ -14,30 +14,15 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y nginx
|
||||
$STD apt install -y nginx
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore"
|
||||
JAVA_VERSION="21" setup_java
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
setup_mariadb
|
||||
setup_yq
|
||||
|
||||
msg_info "Setting up database"
|
||||
DB_NAME=booklore_db
|
||||
DB_USER=booklore_user
|
||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
||||
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||
$STD mariadb -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';"
|
||||
$STD mariadb -u root -e "GRANT SELECT ON \`mysql\`.\`time_zone_name\` TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||
{
|
||||
echo "BookLore Database Credentials"
|
||||
echo "Database: $DB_NAME"
|
||||
echo "Username: $DB_USER"
|
||||
echo "Password: $DB_PASS"
|
||||
} >>~/booklore.creds
|
||||
msg_ok "Set up database"
|
||||
MARIADB_DB_NAME="booklore_db" MARIADB_DB_USER="booklore_user" MARIADB_DB_EXTRA_GRANTS="GRANT SELECT ON \`mysql\`.\`time_zone_name\`" setup_mariadb_db
|
||||
fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore" "tarball"
|
||||
|
||||
msg_info "Building Frontend"
|
||||
cd /opt/booklore/booklore-ui
|
||||
@@ -46,22 +31,22 @@ $STD npm run build --configuration=production
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Creating Environment"
|
||||
mkdir -p /opt/booklore_storage{/data,/books,/bookdrop}
|
||||
mkdir -p /opt/booklore_storage/{data,books,bookdrop}
|
||||
cat <<EOF >/opt/booklore_storage/.env
|
||||
DATABASE_URL=jdbc:mariadb://localhost:3306/$DB_NAME
|
||||
DATABASE_USERNAME=$DB_USER
|
||||
DATABASE_PASSWORD=$DB_PASS
|
||||
BOOKLORE_PORT=6060
|
||||
# Database Configuration
|
||||
DATABASE_URL=jdbc:mariadb://localhost:3306/${MARIADB_DB_NAME}
|
||||
DATABASE_USERNAME=${MARIADB_DB_USER}
|
||||
DATABASE_PASSWORD=${MARIADB_DB_PASS}
|
||||
|
||||
BOOKLORE_DATA_PATH=/opt/booklore_storage/data
|
||||
BOOKLORE_BOOKS_PATH=/opt/booklore_storage/books
|
||||
BOOKLORE_BOOKDROP_PATH=/opt/booklore_storage/bookdrop
|
||||
# App Configuration (Spring Boot mapping from app.* properties)
|
||||
APP_PATH_CONFIG=/opt/booklore_storage/data
|
||||
APP_BOOKDROP_FOLDER=/opt/booklore_storage/bookdrop
|
||||
EOF
|
||||
msg_ok "Created Environment"
|
||||
|
||||
msg_info "Building Backend"
|
||||
cd /opt/booklore/booklore-api
|
||||
APP_VERSION=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||
APP_VERSION=$(get_latest_github_release "booklore-app/BookLore")
|
||||
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
|
||||
$STD ./gradlew clean build --no-daemon
|
||||
mkdir -p /opt/booklore/dist
|
||||
@@ -73,22 +58,24 @@ fi
|
||||
cp "$JAR_PATH" /opt/booklore/dist/app.jar
|
||||
msg_ok "Built Backend"
|
||||
|
||||
msg_info "Configure Nginx"
|
||||
msg_info "Configuring Nginx"
|
||||
rm -rf /usr/share/nginx/html
|
||||
ln -s /opt/booklore/booklore-ui/dist/booklore/browser /usr/share/nginx/html
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
cp /opt/booklore/nginx.conf /etc/nginx/nginx.conf
|
||||
sed -i 's/listen \${BOOKLORE_PORT};/listen 6060;/' /etc/nginx/nginx.conf
|
||||
sed -i 's/listen \[::\]:${BOOKLORE_PORT};/listen [::]:6060;/' /etc/nginx/nginx.conf
|
||||
systemctl restart nginx
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
msg_info "Creating Systemd Service"
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/booklore.service
|
||||
[Unit]
|
||||
Description=BookLore Java Service
|
||||
After=network.target
|
||||
After=network.target mariadb.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/booklore/dist
|
||||
ExecStart=/usr/bin/java -jar /opt/booklore/dist/app.jar
|
||||
@@ -102,7 +89,7 @@ RestartSec=5
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now booklore
|
||||
msg_ok "Created BookLore Service"
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
@@ -21,7 +21,7 @@ PHP_MODULE="ldap,tidy,bz2,mysqli" PHP_FPM="YES" PHP_APACHE="YES" PHP_VERSION="8.
|
||||
setup_composer
|
||||
setup_mariadb
|
||||
MARIADB_DB_NAME="bookstack_db" MARIADB_DB_USER="bookstack_user" setup_mariadb_db
|
||||
fetch_and_deploy_gh_release "bookstack" "BookStackApp/BookStack"
|
||||
fetch_and_deploy_gh_release "bookstack" "BookStackApp/BookStack" "tarball"
|
||||
import_local_ip
|
||||
|
||||
msg_info "Configuring Bookstack (Patience)"
|
||||
|
||||
@@ -14,7 +14,7 @@ network_check
|
||||
update_os
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
fetch_and_deploy_gh_release "bytestash" "jordan-dalby/ByteStash"
|
||||
fetch_and_deploy_gh_release "bytestash" "jordan-dalby/ByteStash" "tarball"
|
||||
|
||||
msg_info "Installing ByteStash"
|
||||
JWT_SECRET=$(openssl rand -base64 32 | tr -d '/+=')
|
||||
|
||||
@@ -72,7 +72,7 @@ After=network.target
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/ComfyUI
|
||||
ExecStart=/opt/ComfyUI/venv/bin/python /opt/ComfyUI/main.py --listen --port 8188 --cpu
|
||||
ExecStart=/opt/ComfyUI/venv/bin/python /opt/ComfyUI/main.py --listen --port 8188
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
|
||||
@@ -14,7 +14,7 @@ network_check
|
||||
update_os
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
fetch_and_deploy_gh_release "cronicle" "jhuckaby/Cronicle"
|
||||
fetch_and_deploy_gh_release "cronicle" "jhuckaby/Cronicle" "tarball"
|
||||
|
||||
msg_info "Configuring Cronicle Primary Server"
|
||||
IP=$(hostname -I | awk '{print $1}')
|
||||
|
||||
@@ -20,7 +20,7 @@ msg_ok "Installed Dependencies"
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
|
||||
read -rp "${TAB3}Install OnlyOffice components instead of CKEditor? (Y/N): " onlyoffice
|
||||
fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad"
|
||||
fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad" "tarball"
|
||||
|
||||
msg_info "Setup ${APPLICATION}"
|
||||
cd /opt/cryptpad
|
||||
|
||||
@@ -14,17 +14,18 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Setting Phoscon Repository"
|
||||
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
||||
curl -fsSL "http://phoscon.de/apt/deconz.pub.key" >/etc/apt/trusted.gpg.d/deconz.pub.asc
|
||||
echo "deb [arch=amd64] http://phoscon.de/apt/deconz $VERSION main" >/etc/apt/sources.list.d/deconz.list
|
||||
setup_deb822_repo \
|
||||
"deconz" \
|
||||
"http://phoscon.de/apt/deconz.pub.key" \
|
||||
"http://phoscon.de/apt/deconz" \
|
||||
"generic"
|
||||
msg_ok "Setup Phoscon Repository"
|
||||
|
||||
msg_info "Installing deConz"
|
||||
libssl=$(curl -fsSL "http://security.ubuntu.com/ubuntu/pool/main/o/openssl/" | grep -o 'libssl1\.1_1\.1\.1f-1ubuntu2\.2[^"]*amd64\.deb' | head -n1)
|
||||
curl -fsSL "http://security.ubuntu.com/ubuntu/pool/main/o/openssl/$libssl" -o "$libssl"
|
||||
$STD dpkg -i "$libssl"
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y deconz
|
||||
$STD apt install -y deconz
|
||||
rm -rf "$libssl"
|
||||
msg_ok "Installed deConz"
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ $STD apt install -y \
|
||||
redis-server \
|
||||
ffmpeg \
|
||||
procps \
|
||||
vlc-bin \
|
||||
vlc-bin \
|
||||
vlc-plugin-base \
|
||||
streamlink
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
@@ -13,32 +13,17 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
get_latest_release() {
|
||||
curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||
}
|
||||
DOCKER_LATEST_VERSION=$(get_latest_github_release "moby/moby")
|
||||
PORTAINER_LATEST_VERSION=$(get_latest_github_release "portainer/portainer")
|
||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_github_release "portainer/agent")
|
||||
|
||||
DOCKER_LATEST_VERSION=$(get_latest_release "moby/moby")
|
||||
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
|
||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
|
||||
DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_release "docker/compose")
|
||||
|
||||
msg_info "Installing Docker $DOCKER_LATEST_VERSION"
|
||||
msg_info "Installing Docker $DOCKER_LATEST_VERSION (with Compose, Buildx)"
|
||||
DOCKER_CONFIG_PATH='/etc/docker/daemon.json'
|
||||
mkdir -p $(dirname $DOCKER_CONFIG_PATH)
|
||||
echo -e '{\n "log-driver": "journald"\n}' >/etc/docker/daemon.json
|
||||
$STD sh <(curl -fsSL https://get.docker.com)
|
||||
msg_ok "Installed Docker $DOCKER_LATEST_VERSION"
|
||||
|
||||
read -r -p "${TAB3}Install Docker Compose v2 plugin? <y/N> " prompt_compose
|
||||
if [[ ${prompt_compose,,} =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||
mkdir -p /usr/local/lib/docker/cli-plugins
|
||||
curl -fsSL "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_LATEST_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
|
||||
-o /usr/local/lib/docker/cli-plugins/docker-compose
|
||||
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
|
||||
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||
fi
|
||||
|
||||
read -r -p "${TAB3}Would you like to add Portainer (UI)? <y/N> " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
|
||||
|
||||
@@ -13,27 +13,15 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
get_latest_release() {
|
||||
curl -fsSL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||
}
|
||||
DOCKER_LATEST_VERSION=$(get_latest_github_release "moby/moby")
|
||||
|
||||
DOCKER_LATEST_VERSION=$(get_latest_release "moby/moby")
|
||||
DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_release "docker/compose")
|
||||
|
||||
msg_info "Installing Docker $DOCKER_LATEST_VERSION"
|
||||
msg_info "Installing Docker $DOCKER_LATEST_VERSION (with Compose, Buildx)"
|
||||
DOCKER_CONFIG_PATH='/etc/docker/daemon.json'
|
||||
mkdir -p $(dirname $DOCKER_CONFIG_PATH)
|
||||
echo -e '{\n "log-driver": "journald"\n}' >/etc/docker/daemon.json
|
||||
$STD sh <(curl -fsSL https://get.docker.com)
|
||||
msg_ok "Installed Docker $DOCKER_LATEST_VERSION"
|
||||
|
||||
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
|
||||
mkdir -p $DOCKER_CONFIG/cli-plugins
|
||||
curl -fsSL https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_LATEST_VERSION/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
|
||||
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
|
||||
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||
|
||||
msg_info "Installing Dockge"
|
||||
mkdir -p /opt/{dockge,stacks}
|
||||
curl -fsSL "https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml" -o "/opt/dockge/compose.yaml"
|
||||
|
||||
@@ -23,7 +23,7 @@ NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/
|
||||
PG_VERSION="16" setup_postgresql
|
||||
PG_DB_NAME="docmost_db" PG_DB_USER="docmost_user" setup_postgresql_db
|
||||
import_local_ip
|
||||
fetch_and_deploy_gh_release "docmost" "docmost/docmost"
|
||||
fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
|
||||
|
||||
msg_info "Configuring Docmost (Patience)"
|
||||
cd /opt/docmost
|
||||
|
||||
@@ -17,7 +17,7 @@ PG_VERSION="17" setup_postgresql
|
||||
PG_DB_NAME="domainlocker_db" PG_DB_USER="domainlocker" setup_postgresql_db
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
|
||||
fetch_and_deploy_gh_release "domain-locker" "Lissy93/domain-locker"
|
||||
fetch_and_deploy_gh_release "domain-locker" "Lissy93/domain-locker" "tarball"
|
||||
|
||||
msg_info "Installing Modules (patience)"
|
||||
cd /opt/domain-locker
|
||||
|
||||
@@ -14,7 +14,7 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y git
|
||||
$STD apt install -y git
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
@@ -18,7 +18,7 @@ $STD apt-get install -y xdg-utils
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
||||
fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw"
|
||||
fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw" "tarball"
|
||||
|
||||
msg_info "Configuring Excalidraw"
|
||||
cd /opt/excalidraw
|
||||
|
||||
@@ -38,7 +38,7 @@ $STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
|
||||
} >>~/$APPLICATION.creds
|
||||
msg_ok "Set up Postgresql Database"
|
||||
|
||||
fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"
|
||||
fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar" "tarball"
|
||||
|
||||
msg_info "Configuring ${APPLICATION}"
|
||||
cat <<EOF >/opt/fluid-calendar/.env
|
||||
|
||||
@@ -30,7 +30,7 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMP
|
||||
} >>~/freshrss.creds
|
||||
msg_ok "Set up PostgreSQL"
|
||||
|
||||
fetch_and_deploy_gh_release "freshrss" "FreshRSS/FreshRSS"
|
||||
fetch_and_deploy_gh_release "freshrss" "FreshRSS/FreshRSS" "tarball"
|
||||
|
||||
msg_info "Configuring FreshRSS"
|
||||
cd /opt/freshrss
|
||||
|
||||
@@ -20,7 +20,7 @@ $STD apt-get install -y \
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_go
|
||||
fetch_and_deploy_gh_release "gatus" "TwiN/gatus"
|
||||
fetch_and_deploy_gh_release "gatus" "TwiN/gatus" "tarball"
|
||||
|
||||
msg_info "Configuring gatus"
|
||||
cd /opt/gatus
|
||||
|
||||
@@ -28,7 +28,7 @@ ln -sf /opt/bun/bin/bun /usr/local/bin/bun
|
||||
ln -sf /opt/bun/bin/bun /usr/local/bin/bunx
|
||||
msg_ok "Installed Bun"
|
||||
|
||||
fetch_and_deploy_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror"
|
||||
fetch_and_deploy_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror" "tarball"
|
||||
|
||||
msg_info "Installing gitea-mirror"
|
||||
cd /opt/gitea-mirror
|
||||
|
||||
53
install/gwn-manager-install.sh
Normal file
53
install/gwn-manager-install.sh
Normal file
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.grandstream.com/products/networking-solutions/wi-fi-management/product/gwn-manager
|
||||
|
||||
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 \
|
||||
xfonts-utils \
|
||||
fontconfig
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setting up GWN Manager (Patience)"
|
||||
RELEASE=$(curl -fsSL https://www.grandstream.com/support/tools#gwntools \
|
||||
| grep -oP 'https://firmware\.grandstream\.com/GWN_Manager-[^"]+-Ubuntu\.tar\.gz')
|
||||
download_file "$RELEASE" "/tmp/gwnmanager.tar.gz"
|
||||
cd /tmp
|
||||
tar -xzf gwnmanager.tar.gz --strip-components=1
|
||||
$STD ./install
|
||||
msg_ok "Setup GWN Manager"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/gwnmanager.service
|
||||
[Unit]
|
||||
Description=GWN Manager
|
||||
After=network.target
|
||||
Requires=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/gwn
|
||||
ExecStart=/gwn/gwn start
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q gwnmanager
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -43,7 +43,7 @@ ADMIN_PASSWORD="$PG_DB_PASS"
|
||||
} >>~/healthchecks.creds
|
||||
msg_ok "Set up Keys"
|
||||
|
||||
fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks"
|
||||
fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks" "tarball"
|
||||
|
||||
msg_info "Installing Healthchecks (venv)"
|
||||
cd /opt/healthchecks
|
||||
|
||||
@@ -13,32 +13,25 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y pip
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Homer"
|
||||
mkdir -p /opt/homer
|
||||
cd /opt/homer
|
||||
curl -fsSL "https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip" -o "homer.zip"
|
||||
$STD unzip homer.zip
|
||||
rm -rf homer.zip
|
||||
cp assets/config.yml.dist assets/config.yml
|
||||
msg_ok "Installed Homer"
|
||||
fetch_and_deploy_gh_release "homer" "bastienwirtz/homer" "prebuild" "latest" "/opt/homer" "homer.zip"
|
||||
cp /opt/homer/assets/config.yml.dist /opt/homer/assets/config.yml
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/homer.service
|
||||
[Unit]
|
||||
Description=Homer Dashboard
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/homer
|
||||
ExecStart=python3 -m http.server 8010
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
$STD systemctl enable --now homer
|
||||
systemctl enable -q --now homer
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user