mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-12-26 00:46:24 +01:00
Compare commits
2 Commits
main
...
tremor021-
| Author | SHA1 | Date | |
|---|---|---|---|
| 6f223d191e | |||
| db36d2f9e6 |
86
CHANGELOG.md
86
CHANGELOG.md
@ -10,94 +10,8 @@
|
|||||||
> [!CAUTION]
|
> [!CAUTION]
|
||||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||||
|
|
||||||
## 2025-12-25
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- InfluxDB: Fixes [@tremor021](https://github.com/tremor021) ([#10308](https://github.com/community-scripts/ProxmoxVE/pull/10308))
|
|
||||||
- Increase Zot Default Memory, Recategorize [@chrismuzyn](https://github.com/chrismuzyn) ([#10311](https://github.com/community-scripts/ProxmoxVE/pull/10311))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Refactor: OpenObserve [@tremor021](https://github.com/tremor021) ([#10279](https://github.com/community-scripts/ProxmoxVE/pull/10279))
|
|
||||||
- Refactor: NZBGet [@tremor021](https://github.com/tremor021) ([#10302](https://github.com/community-scripts/ProxmoxVE/pull/10302))
|
|
||||||
- Refactor: ntfy [@tremor021](https://github.com/tremor021) ([#10303](https://github.com/community-scripts/ProxmoxVE/pull/10303))
|
|
||||||
- Refactor: Notifiarr [@tremor021](https://github.com/tremor021) ([#10304](https://github.com/community-scripts/ProxmoxVE/pull/10304))
|
|
||||||
|
|
||||||
### 🌐 Website
|
|
||||||
|
|
||||||
- Fix horizontal scroll on website [@mateossh](https://github.com/mateossh) ([#10317](https://github.com/community-scripts/ProxmoxVE/pull/10317))
|
|
||||||
|
|
||||||
## 2025-12-24
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- recyclarr: increase cron path [@Uncloak2](https://github.com/Uncloak2) ([#10272](https://github.com/community-scripts/ProxmoxVE/pull/10272))
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- fix: technitium: service migration [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10300](https://github.com/community-scripts/ProxmoxVE/pull/10300))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Overseerr: Update dependencies [@tremor021](https://github.com/tremor021) ([#10275](https://github.com/community-scripts/ProxmoxVE/pull/10275))
|
|
||||||
- Refactor: Paperless-GPT [@tremor021](https://github.com/tremor021) ([#10274](https://github.com/community-scripts/ProxmoxVE/pull/10274))
|
|
||||||
- Refactor: Outline [@tremor021](https://github.com/tremor021) ([#10276](https://github.com/community-scripts/ProxmoxVE/pull/10276))
|
|
||||||
- Refactor: OTS [@tremor021](https://github.com/tremor021) ([#10277](https://github.com/community-scripts/ProxmoxVE/pull/10277))
|
|
||||||
- Refactor: OpenProject [@tremor021](https://github.com/tremor021) ([#10278](https://github.com/community-scripts/ProxmoxVE/pull/10278))
|
|
||||||
- Refactor: Open Archiver [@tremor021](https://github.com/tremor021) ([#10280](https://github.com/community-scripts/ProxmoxVE/pull/10280))
|
|
||||||
- Refactor: Tautulli [@tremor021](https://github.com/tremor021) ([#10241](https://github.com/community-scripts/ProxmoxVE/pull/10241))
|
|
||||||
- Refactor: PrivateBin [@tremor021](https://github.com/tremor021) ([#10256](https://github.com/community-scripts/ProxmoxVE/pull/10256))
|
|
||||||
- Refactor: Podman-Home Assistant [@tremor021](https://github.com/tremor021) ([#10258](https://github.com/community-scripts/ProxmoxVE/pull/10258))
|
|
||||||
- Refactor: Plant-it [@tremor021](https://github.com/tremor021) ([#10259](https://github.com/community-scripts/ProxmoxVE/pull/10259))
|
|
||||||
- Refactor: PatchMon [@tremor021](https://github.com/tremor021) ([#10260](https://github.com/community-scripts/ProxmoxVE/pull/10260))
|
|
||||||
- Refactor: Part-DB [@tremor021](https://github.com/tremor021) ([#10262](https://github.com/community-scripts/ProxmoxVE/pull/10262))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- core: correct local template discovery regex pattern [@MickLesk](https://github.com/MickLesk) ([#10282](https://github.com/community-scripts/ProxmoxVE/pull/10282))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- pihole-exporter fix: unbound var [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10307](https://github.com/community-scripts/ProxmoxVE/pull/10307))
|
|
||||||
|
|
||||||
### ❔ Uncategorized
|
|
||||||
|
|
||||||
- Pocketbase: Add note for superuser account creation [@tremor021](https://github.com/tremor021) ([#10245](https://github.com/community-scripts/ProxmoxVE/pull/10245))
|
|
||||||
|
|
||||||
## 2025-12-23
|
## 2025-12-23
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Technitium DNS: Migrate service [@tremor021](https://github.com/tremor021) ([#10240](https://github.com/community-scripts/ProxmoxVE/pull/10240))
|
|
||||||
- Update forgejo to debian13 and fix env var [@burgerga](https://github.com/burgerga) ([#10242](https://github.com/community-scripts/ProxmoxVE/pull/10242))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Passbolt: Small fixes [@tremor021](https://github.com/tremor021) ([#10261](https://github.com/community-scripts/ProxmoxVE/pull/10261))
|
|
||||||
- Refactor: ProjectSend [@tremor021](https://github.com/tremor021) ([#10255](https://github.com/community-scripts/ProxmoxVE/pull/10255))
|
|
||||||
- Prometheus Paperless NGX Exporter: Small fix [@tremor021](https://github.com/tremor021) ([#10254](https://github.com/community-scripts/ProxmoxVE/pull/10254))
|
|
||||||
- Podman: Fixes [@tremor021](https://github.com/tremor021) ([#10257](https://github.com/community-scripts/ProxmoxVE/pull/10257))
|
|
||||||
- Refactor: Beszel [@tremor021](https://github.com/tremor021) ([#10195](https://github.com/community-scripts/ProxmoxVE/pull/10195))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- fix: pihole-exporter: unknown function [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10249](https://github.com/community-scripts/ProxmoxVE/pull/10249))
|
|
||||||
|
|
||||||
### ❔ Uncategorized
|
|
||||||
|
|
||||||
- Fix Recyclarr page TypeError: schema mismatch in notes field [@Copilot](https://github.com/Copilot) ([#10253](https://github.com/community-scripts/ProxmoxVE/pull/10253))
|
|
||||||
|
|
||||||
## 2025-12-22
|
## 2025-12-22
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
25
ct/beszel.sh
25
ct/beszel.sh
@ -27,22 +27,19 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop beszel-hub
|
||||||
|
msg_info "Stopped Service"
|
||||||
|
|
||||||
if check_for_gh_release "beszel" "henrygd/beszel"; then
|
msg_info "Updating $APP"
|
||||||
msg_info "Stopping Service"
|
$STD /opt/beszel/beszel update
|
||||||
systemctl stop beszel-hub
|
sleep 2 && chmod +x /opt/beszel/beszel
|
||||||
msg_info "Stopped Service"
|
msg_ok "Updated $APP"
|
||||||
|
|
||||||
msg_info "Updating Beszel"
|
msg_info "Starting Service"
|
||||||
$STD /opt/beszel/beszel update
|
systemctl start beszel-hub
|
||||||
sleep 2 && chmod +x /opt/beszel/beszel
|
msg_ok "Successfully started $APP"
|
||||||
msg_ok "Updated Beszel"
|
msg_ok "Updated successfully!"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
|
||||||
systemctl start beszel-hub
|
|
||||||
msg_ok "Started Service"
|
|
||||||
msg_ok "Updated successfully!"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
|||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-10}"
|
var_disk="${var_disk:-10}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -44,14 +44,6 @@ function update_script() {
|
|||||||
rm -rf forgejo-$RELEASE-linux-amd64
|
rm -rf forgejo-$RELEASE-linux-amd64
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
# Fix env var from older version of community script
|
|
||||||
if grep -q "GITEA_WORK_DIR" /etc/systemd/system/forgejo.service; then
|
|
||||||
msg_info "Updating Service File"
|
|
||||||
sed -i "s/GITEA_WORK_DIR/FORGEJO_WORK_DIR/g" /etc/systemd/system/forgejo.service
|
|
||||||
systemctl daemon-reload
|
|
||||||
msg_ok "Updated Service File"
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start forgejo
|
systemctl start forgejo
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|||||||
@ -27,11 +27,9 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
msg_info "Updating InfluxDB"
|
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt upgrade -y
|
$STD apt -y upgrade
|
||||||
msg_ok "Updated InfluxDB"
|
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,10 +27,10 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating Notifiarr"
|
msg_info "Updating $APP"
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt upgrade -y
|
$STD apt -y upgrade
|
||||||
msg_ok "Updated Notifiarr"
|
msg_ok "Updated $APP"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
19
ct/ntfy.sh
19
ct/ntfy.sh
@ -34,18 +34,21 @@ function update_script() {
|
|||||||
rm -f /etc/apt/sources.list.d/archive.heckel.io.list
|
rm -f /etc/apt/sources.list.d/archive.heckel.io.list
|
||||||
rm -f /etc/apt/sources.list.d/archive.heckel.io.list.bak
|
rm -f /etc/apt/sources.list.d/archive.heckel.io.list.bak
|
||||||
rm -f /etc/apt/sources.list.d/archive.heckel.io.sources
|
rm -f /etc/apt/sources.list.d/archive.heckel.io.sources
|
||||||
setup_deb822_repo \
|
curl -fsSL -o /etc/apt/keyrings/ntfy.gpg https://archive.ntfy.sh/apt/keyring.gpg
|
||||||
"ntfy" \
|
cat <<'EOF' >/etc/apt/sources.list.d/ntfy.sources
|
||||||
"https://archive.ntfy.sh/apt/keyring.gpg" \
|
Types: deb
|
||||||
"https://archive.ntfy.sh/apt/" \
|
URIs: https://archive.ntfy.sh/apt/
|
||||||
"stable"
|
Suites: stable
|
||||||
|
Components: main
|
||||||
|
Signed-By: /etc/apt/keyrings/ntfy.gpg
|
||||||
|
EOF
|
||||||
msg_ok "Corrected old Ntfy Repository"
|
msg_ok "Corrected old Ntfy Repository"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Updating ntfy"
|
msg_info "Updating $APP LXC"
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt upgrade -y
|
$STD apt -y upgrade
|
||||||
msg_ok "Updated ntfy"
|
msg_ok "Updated $APP LXC"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,10 +27,10 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating NZBGet"
|
msg_info "Updating $APP LXC"
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt upgrade -y
|
$STD apt -y upgrade
|
||||||
msg_ok "Updated NZBGet"
|
msg_ok "Updated $APP LXC"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,7 +34,7 @@ function update_script() {
|
|||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
cp /opt/openarchiver/.env /opt/openarchiver.env
|
cp /opt/openarchiver/.env /opt/openarchiver.env
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball" "latest" "/opt/openarchiver"
|
||||||
mv /opt/openarchiver.env /opt/openarchiver/.env
|
mv /opt/openarchiver.env /opt/openarchiver/.env
|
||||||
|
|
||||||
msg_info "Updating Open Archiver"
|
msg_info "Updating Open Archiver"
|
||||||
|
|||||||
@ -27,16 +27,13 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
msg_info "Updating $APP"
|
||||||
if check_for_gh_release "openobserve" "openobserve/openobserve"; then
|
systemctl stop openobserve
|
||||||
msg_info "Updating OpenObserve"
|
LATEST=$(curl -fsSL https://api.github.com/repos/openobserve/openobserve/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
systemctl stop openobserve
|
$STD tar zxvf <(curl -fsSL https://downloads.openobserve.ai/releases/openobserve/$LATEST/openobserve-$LATEST-linux-amd64.tar.gz) -C /opt/openobserve
|
||||||
RELEASE=$(get_latest_github_release "openobserve/openobserve")
|
systemctl start openobserve
|
||||||
tar zxf <(curl -fsSL https://downloads.openobserve.ai/releases/openobserve/v$RELEASE/openobserve-v$RELEASE-linux-amd64.tar.gz) -C /opt/openobserve
|
msg_ok "Updated $APP"
|
||||||
systemctl start openobserve
|
msg_ok "Updated successfully!"
|
||||||
msg_ok "Updated OpenObserve"
|
|
||||||
msg_ok "Updated successfully!"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -27,19 +27,18 @@ function update_script() {
|
|||||||
msg_error "No Paperless-GPT installation found!"
|
msg_error "No Paperless-GPT installation found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/icereed/paperless-gpt/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if check_for_gh_release "paperless-gpt" "icereed/paperless-gpt"; then
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop paperless-gpt
|
systemctl stop paperless-gpt
|
||||||
msg_ok "Service Stopped"
|
msg_ok "Service Stopped"
|
||||||
|
|
||||||
if should_update_tool "node" "24"; then
|
msg_info "Updating Paperless-GPT to ${RELEASE}"
|
||||||
NODE_VERSION="24" setup_nodejs
|
temp_file=$(mktemp)
|
||||||
fi
|
curl -fsSL "https://github.com/icereed/paperless-gpt/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||||
|
tar zxf $temp_file
|
||||||
fetch_and_deploy_gh_release "paperless-gpt" "icereed/paperless-gpt" "tarball"
|
rm -rf /opt/paperless-gpt
|
||||||
|
mv paperless-gpt-${RELEASE} /opt/paperless-gpt
|
||||||
msg_info "Updating Paperless-GPT"
|
|
||||||
cd /opt/paperless-gpt/web-app
|
cd /opt/paperless-gpt/web-app
|
||||||
$STD npm install
|
$STD npm install
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
@ -48,12 +47,16 @@ function update_script() {
|
|||||||
export CC=musl-gcc
|
export CC=musl-gcc
|
||||||
CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3
|
CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3
|
||||||
CGO_ENABLED=1 go build -tags musl -o paperless-gpt .
|
CGO_ENABLED=1 go build -tags musl -o paperless-gpt .
|
||||||
msg_ok "Updated Paperless-GPT"
|
rm -f $temp_file
|
||||||
|
echo "${RELEASE}" >"/opt/paperless-gpt_version.txt"
|
||||||
|
msg_ok "Updated Paperless-GPT to ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start paperless-gpt
|
systemctl start paperless-gpt
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,9 +27,8 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Part-DB/Part-DB-server/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
RELEASE=$(get_latest_github_release "Part-DB/Part-DB-server")
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
if check_for_gh_release "partdb" "Part-DB/Part-DB-server"; then
|
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
@ -37,7 +36,7 @@ function update_script() {
|
|||||||
msg_info "Updating $APP to v${RELEASE}"
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
cd /opt
|
cd /opt
|
||||||
mv /opt/partdb/ /opt/partdb-backup
|
mv /opt/partdb/ /opt/partdb-backup
|
||||||
curl -fsSL "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" -o "/opt/v${RELEASE}.zip"
|
curl -fsSL "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip")
|
||||||
$STD unzip "v${RELEASE}.zip"
|
$STD unzip "v${RELEASE}.zip"
|
||||||
mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb
|
mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb
|
||||||
|
|
||||||
@ -55,13 +54,15 @@ function update_script() {
|
|||||||
chown -R www-data:www-data /opt/partdb
|
chown -R www-data:www-data /opt/partdb
|
||||||
rm -r "/opt/v${RELEASE}.zip"
|
rm -r "/opt/v${RELEASE}.zip"
|
||||||
rm -r /opt/partdb-backup
|
rm -r /opt/partdb-backup
|
||||||
echo "${RELEASE}" >~/.partdb
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,7 +37,7 @@ function update_script() {
|
|||||||
if [ "$UPD" == "1" ]; then
|
if [ "$UPD" == "1" ]; then
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt upgrade -y
|
$STD apt -y upgrade
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
|
|
||||||
msg_info "Updating All Containers\n"
|
msg_info "Updating All Containers\n"
|
||||||
@ -65,7 +65,7 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if [ "$UPD" == "3" ]; then
|
if [ "$UPD" == "3" ]; then
|
||||||
import_local_ip
|
IP=$(hostname -I | awk '{print $1}')
|
||||||
msg_info "Installing FileBrowser"
|
msg_info "Installing FileBrowser"
|
||||||
$STD curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
|
$STD curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
|
||||||
$STD filebrowser config init -a '0.0.0.0'
|
$STD filebrowser config init -a '0.0.0.0'
|
||||||
@ -74,25 +74,23 @@ function update_script() {
|
|||||||
msg_ok "Installed FileBrowser"
|
msg_ok "Installed FileBrowser"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/filebrowser.service
|
service_path="/etc/systemd/system/filebrowser.service"
|
||||||
[Unit]
|
echo "[Unit]
|
||||||
Description=Filebrowser
|
Description=Filebrowser
|
||||||
After=network-online.target
|
After=network-online.target
|
||||||
|
[Service]
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=/root/
|
||||||
|
ExecStart=/usr/local/bin/filebrowser -r /
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target" >$service_path
|
||||||
|
|
||||||
[Service]
|
$STD systemctl enable --now filebrowser
|
||||||
User=root
|
|
||||||
WorkingDirectory=/root/
|
|
||||||
ExecStart=/usr/local/bin/filebrowser -r /
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now filebrowser
|
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "FileBrowser should be reachable by going to the following URL.
|
echo -e "FileBrowser should be reachable by going to the following URL.
|
||||||
${BL}http://$LOCAL_IP:8080${CL} admin|helper-scripts.com\n"
|
${BL}http://$IP:8080${CL} admin|helper-scripts.com\n"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if [ "$UPD" == "4" ]; then
|
if [ "$UPD" == "4" ]; then
|
||||||
@ -101,6 +99,7 @@ EOF
|
|||||||
msg_ok "Removed ALL Unused Images"
|
msg_ok "Removed ALL Unused Images"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@ -29,7 +29,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt upgrade -y
|
$STD apt -y upgrade
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,6 +48,7 @@ function update_script() {
|
|||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
|
|||||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
|||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-1024}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@ -27,11 +27,7 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if [[ -f /etc/systemd/system/dns.service ]]; then
|
|
||||||
mv /etc/systemd/system/dns.service /etc/systemd/system/technitium.service
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable -q --now technitium
|
|
||||||
fi
|
|
||||||
if is_package_installed "aspnetcore-runtime-8.0"; then
|
if is_package_installed "aspnetcore-runtime-8.0"; then
|
||||||
$STD apt remove -y aspnetcore-runtime-8.0
|
$STD apt remove -y aspnetcore-runtime-8.0
|
||||||
[ -f /etc/apt/sources.list.d/microsoft-prod.list ] && rm -f /etc/apt/sources.list.d/microsoft-prod.list
|
[ -f /etc/apt/sources.list.d/microsoft-prod.list ] && rm -f /etc/apt/sources.list.d/microsoft-prod.list
|
||||||
@ -46,7 +42,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://technitium.com/dns/ | grep -oP 'Version \K[\d.]+')
|
RELEASE=$(curl -fsSL https://technitium.com/dns/ | grep -oP 'Version \K[\d.]+')
|
||||||
if [[ ! -f ~/.technitium || ${RELEASE} != "$(cat ~/.technitium)" ]]; then
|
if [[ ! -f ~/.technitium || "${RELEASE}" != "$(cat ~/.technitium)" ]]; then
|
||||||
msg_info "Updating Technitium DNS"
|
msg_info "Updating Technitium DNS"
|
||||||
curl -fsSL "https://download.technitium.com/dns/DnsServerPortable.tar.gz" -o /opt/DnsServerPortable.tar.gz
|
curl -fsSL "https://download.technitium.com/dns/DnsServerPortable.tar.gz" -o /opt/DnsServerPortable.tar.gz
|
||||||
$STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/
|
$STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/
|
||||||
|
|||||||
@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="Zot-Registry"
|
APP="Zot-Registry"
|
||||||
var_tags="${var_tags:-registry;oci}"
|
var_tags="${var_tags:-registry;oci}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-4096}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-5}"
|
var_disk="${var_disk:-5}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 10,
|
"hdd": 10,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "13"
|
"version": "12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -34,11 +34,11 @@
|
|||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"type": "warning",
|
"type": "warning",
|
||||||
"text": "Configure your Radarr/Sonarr instances in `/root/.config/recyclarr/recyclarr.yml` before the first sync."
|
"content": "Configure your Radarr/Sonarr instances in `/root/.config/recyclarr/recyclarr.yml` before the first sync."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "info",
|
"type": "info",
|
||||||
"text": "Automatic daily sync is configured via `/etc/cron.d/recyclarr`. Sync logs are saved to `/root/.config/recyclarr/sync.log`."
|
"content": "Automatic daily sync is configured via `/etc/cron.d/recyclarr`. Sync logs are saved to `/root/.config/recyclarr/sync.log`."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
"documentation": "https://github.com/Tautulli/Tautulli/wiki",
|
"documentation": "https://github.com/Tautulli/Tautulli/wiki",
|
||||||
"website": "https://tautulli.com/",
|
"website": "https://tautulli.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/tautulli.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/tautulli.webp",
|
||||||
"config_path": "/opt/Tautulli/config.ini",
|
"config_path": "",
|
||||||
"description": "Tautulli allows you to monitor and track your Plex Media Server usage, such as viewing statistics and analysis of your media library. It can be used to monitor user activity, get notifications about new media added to your library, and even generate reports on your media usage.",
|
"description": "Tautulli allows you to monitor and track your Plex Media Server usage, such as viewing statistics and analysis of your media library. It can be used to monitor user activity, get notifications about new media added to your library, and even generate reports on your media usage.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
@ -23,7 +23,7 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "13"
|
"version": "12"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@ -1,184 +1,4 @@
|
|||||||
[
|
[
|
||||||
{
|
|
||||||
"name": "PatchMon/PatchMon",
|
|
||||||
"version": "v1.3.7",
|
|
||||||
"date": "2025-12-25T11:08:14Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "openobserve/openobserve",
|
|
||||||
"version": "v0.40.0-rc2",
|
|
||||||
"date": "2025-12-25T09:23:24Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "seriousm4x/UpSnap",
|
|
||||||
"version": "5.2.5",
|
|
||||||
"date": "2025-12-25T09:23:10Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "morpheus65535/bazarr",
|
|
||||||
"version": "v1.5.3",
|
|
||||||
"date": "2025-09-20T12:12:33Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Jackett/Jackett",
|
|
||||||
"version": "v0.24.532",
|
|
||||||
"date": "2025-12-25T05:48:43Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "jeedom/core",
|
|
||||||
"version": "4.5.1",
|
|
||||||
"date": "2025-12-25T00:27:04Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "steveiliop56/tinyauth",
|
|
||||||
"version": "v4.1.0",
|
|
||||||
"date": "2025-11-23T12:13:34Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "fosrl/pangolin",
|
|
||||||
"version": "1.14.1",
|
|
||||||
"date": "2025-12-24T21:33:56Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "booklore-app/booklore",
|
|
||||||
"version": "v1.16.0",
|
|
||||||
"date": "2025-12-24T19:57:11Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "FreshRSS/FreshRSS",
|
|
||||||
"version": "1.28.0",
|
|
||||||
"date": "2025-12-24T19:27:21Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "NodeBB/NodeBB",
|
|
||||||
"version": "v4.7.2",
|
|
||||||
"date": "2025-12-24T18:38:32Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "rcourtman/Pulse",
|
|
||||||
"version": "v5.0.2",
|
|
||||||
"date": "2025-12-24T18:18:13Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "metabase/metabase",
|
|
||||||
"version": "v0.58.x",
|
|
||||||
"date": "2025-12-24T16:39:27Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "TuroYT/snowshare",
|
|
||||||
"version": "v1.2.6",
|
|
||||||
"date": "2025-12-24T14:05:56Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dolibarr/dolibarr",
|
|
||||||
"version": "22.0.4",
|
|
||||||
"date": "2025-12-24T12:26:24Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "BookStackApp/BookStack",
|
|
||||||
"version": "v25.12",
|
|
||||||
"date": "2025-12-24T12:19:42Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "fuma-nama/fumadocs",
|
|
||||||
"version": "fumadocs-ui@16.4.0",
|
|
||||||
"date": "2025-12-24T10:16:33Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "emqx/emqx",
|
|
||||||
"version": "6.1.0-rc.1",
|
|
||||||
"date": "2025-12-24T09:46:02Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "comfyanonymous/ComfyUI",
|
|
||||||
"version": "v0.6.0",
|
|
||||||
"date": "2025-12-24T03:32:16Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "hyperion-project/hyperion.ng",
|
|
||||||
"version": "2.1.1",
|
|
||||||
"date": "2025-06-14T17:45:06Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "advplyr/audiobookshelf",
|
|
||||||
"version": "v2.32.1",
|
|
||||||
"date": "2025-12-23T23:28:06Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "laurent22/joplin",
|
|
||||||
"version": "server-v3.5.2",
|
|
||||||
"date": "2025-12-19T21:28:55Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "n8n-io/n8n",
|
|
||||||
"version": "n8n@2.1.4",
|
|
||||||
"date": "2025-12-23T20:53:07Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "scanopy/scanopy",
|
|
||||||
"version": "v0.12.6",
|
|
||||||
"date": "2025-12-23T19:24:15Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "prometheus-pve/prometheus-pve-exporter",
|
|
||||||
"version": "v3.8.0",
|
|
||||||
"date": "2025-12-23T18:20:46Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "netbox-community/netbox",
|
|
||||||
"version": "v4.4.9",
|
|
||||||
"date": "2025-12-23T17:03:22Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "mongodb/mongo",
|
|
||||||
"version": "r6.0.27",
|
|
||||||
"date": "2025-12-23T16:21:51Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "esphome/esphome",
|
|
||||||
"version": "2025.12.2",
|
|
||||||
"date": "2025-12-23T16:17:04Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "SonarSource/sonarqube",
|
|
||||||
"version": "25.12.0.117093",
|
|
||||||
"date": "2025-12-23T15:00:10Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "danielbrendel/hortusfox-web",
|
|
||||||
"version": "v5.7",
|
|
||||||
"date": "2025-12-23T14:53:51Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "coollabsio/coolify",
|
|
||||||
"version": "v4.0.0-beta.459",
|
|
||||||
"date": "2025-12-23T14:40:52Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "prometheus/prometheus",
|
|
||||||
"version": "v3.8.1",
|
|
||||||
"date": "2025-12-16T09:59:22Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "keycloak/keycloak",
|
|
||||||
"version": "26.4.7",
|
|
||||||
"date": "2025-12-01T08:14:11Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "jenkinsci/jenkins",
|
|
||||||
"version": "jenkins-2.543",
|
|
||||||
"date": "2025-12-23T12:39:16Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "nzbgetcom/nzbget",
|
|
||||||
"version": "v25.4",
|
|
||||||
"date": "2025-10-09T10:27:01Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "endurain-project/endurain",
|
|
||||||
"version": "v0.16.4",
|
|
||||||
"date": "2025-12-23T12:08:24Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "itsmng/itsm-ng",
|
"name": "itsmng/itsm-ng",
|
||||||
"version": "v1.6.11",
|
"version": "v1.6.11",
|
||||||
@ -199,6 +19,21 @@
|
|||||||
"version": "v2.0.12",
|
"version": "v2.0.12",
|
||||||
"date": "2025-12-02T08:11:24Z"
|
"date": "2025-12-02T08:11:24Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "jenkinsci/jenkins",
|
||||||
|
"version": "jenkins-2.543",
|
||||||
|
"date": "2025-12-23T06:40:41Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jackett/Jackett",
|
||||||
|
"version": "v0.24.512",
|
||||||
|
"date": "2025-12-23T06:02:59Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fosrl/pangolin",
|
||||||
|
"version": "1.14.0",
|
||||||
|
"date": "2025-12-23T03:21:32Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "theonedev/onedev",
|
"name": "theonedev/onedev",
|
||||||
"version": "v13.1.6",
|
"version": "v13.1.6",
|
||||||
@ -209,6 +44,21 @@
|
|||||||
"version": "v2.13.3",
|
"version": "v2.13.3",
|
||||||
"date": "2025-12-23T01:18:58Z"
|
"date": "2025-12-23T01:18:58Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "hyperion-project/hyperion.ng",
|
||||||
|
"version": "2.1.1",
|
||||||
|
"date": "2025-06-14T17:45:06Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jeedom/core",
|
||||||
|
"version": "4.5.1",
|
||||||
|
"date": "2025-12-23T00:27:04Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "steveiliop56/tinyauth",
|
||||||
|
"version": "v4.1.0",
|
||||||
|
"date": "2025-11-23T12:13:34Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Dispatcharr/Dispatcharr",
|
"name": "Dispatcharr/Dispatcharr",
|
||||||
"version": "v0.15.1",
|
"version": "v0.15.1",
|
||||||
@ -229,11 +79,21 @@
|
|||||||
"version": "v1.1.0-stable",
|
"version": "v1.1.0-stable",
|
||||||
"date": "2025-12-22T20:30:40Z"
|
"date": "2025-12-22T20:30:40Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "mongodb/mongo",
|
||||||
|
"version": "r8.0.17",
|
||||||
|
"date": "2025-12-22T20:23:56Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "maxdorninger/MediaManager",
|
"name": "maxdorninger/MediaManager",
|
||||||
"version": "v1.11.1",
|
"version": "v1.11.1",
|
||||||
"date": "2025-12-22T18:15:40Z"
|
"date": "2025-12-22T18:15:40Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "metabase/metabase",
|
||||||
|
"version": "v0.58.x",
|
||||||
|
"date": "2025-12-22T17:38:26Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "BerriAI/litellm",
|
"name": "BerriAI/litellm",
|
||||||
"version": "v1.80.11.rc.1",
|
"version": "v1.80.11.rc.1",
|
||||||
@ -254,6 +114,11 @@
|
|||||||
"version": "v1.0.9",
|
"version": "v1.0.9",
|
||||||
"date": "2025-12-22T15:55:49Z"
|
"date": "2025-12-22T15:55:49Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "n8n-io/n8n",
|
||||||
|
"version": "n8n@2.1.2",
|
||||||
|
"date": "2025-12-22T14:58:39Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "openhab/openhab-core",
|
"name": "openhab/openhab-core",
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
@ -264,11 +129,21 @@
|
|||||||
"version": "v0.88.2",
|
"version": "v0.88.2",
|
||||||
"date": "2025-12-22T14:36:59Z"
|
"date": "2025-12-22T14:36:59Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "nzbgetcom/nzbget",
|
||||||
|
"version": "v25.4",
|
||||||
|
"date": "2025-10-09T10:27:01Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "passbolt/passbolt_api",
|
"name": "passbolt/passbolt_api",
|
||||||
"version": "v5.8.0",
|
"version": "v5.8.0",
|
||||||
"date": "2025-12-22T10:12:48Z"
|
"date": "2025-12-22T10:12:48Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "morpheus65535/bazarr",
|
||||||
|
"version": "v1.5.3",
|
||||||
|
"date": "2025-09-20T12:12:33Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "open-webui/open-webui",
|
"name": "open-webui/open-webui",
|
||||||
"version": "v0.6.43",
|
"version": "v0.6.43",
|
||||||
@ -279,6 +154,21 @@
|
|||||||
"version": "v6.4.14",
|
"version": "v6.4.14",
|
||||||
"date": "2025-12-16T05:42:34Z"
|
"date": "2025-12-16T05:42:34Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "advplyr/audiobookshelf",
|
||||||
|
"version": "v2.32.0",
|
||||||
|
"date": "2025-12-21T22:27:29Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "keycloak/keycloak",
|
||||||
|
"version": "26.4.7",
|
||||||
|
"date": "2025-12-01T08:14:11Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "scanopy/scanopy",
|
||||||
|
"version": "v0.12.5",
|
||||||
|
"date": "2025-12-21T19:24:42Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "benjaminjonard/koillection",
|
"name": "benjaminjonard/koillection",
|
||||||
"version": "1.7.1",
|
"version": "1.7.1",
|
||||||
@ -299,6 +189,11 @@
|
|||||||
"version": "v0.35.0",
|
"version": "v0.35.0",
|
||||||
"date": "2025-12-21T07:44:15Z"
|
"date": "2025-12-21T07:44:15Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "fuma-nama/fumadocs",
|
||||||
|
"version": "fumadocs-ui@16.3.2",
|
||||||
|
"date": "2025-12-21T05:23:55Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "dedicatedcode/reitti",
|
"name": "dedicatedcode/reitti",
|
||||||
"version": "v3.0.1",
|
"version": "v3.0.1",
|
||||||
@ -354,11 +249,26 @@
|
|||||||
"version": "v1.0.0-beta21",
|
"version": "v1.0.0-beta21",
|
||||||
"date": "2025-12-19T23:04:27Z"
|
"date": "2025-12-19T23:04:27Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "laurent22/joplin",
|
||||||
|
"version": "server-v3.5.2",
|
||||||
|
"date": "2025-12-19T21:28:55Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "emqx/emqx",
|
||||||
|
"version": "e5.10.3-alpha.1",
|
||||||
|
"date": "2025-12-19T21:08:48Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "homarr-labs/homarr",
|
"name": "homarr-labs/homarr",
|
||||||
"version": "v1.47.0",
|
"version": "v1.47.0",
|
||||||
"date": "2025-12-19T19:42:50Z"
|
"date": "2025-12-19T19:42:50Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "booklore-app/booklore",
|
||||||
|
"version": "v1.15.0",
|
||||||
|
"date": "2025-12-19T18:57:42Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "YunoHost/yunohost",
|
"name": "YunoHost/yunohost",
|
||||||
"version": "debian/12.1.37",
|
"version": "debian/12.1.37",
|
||||||
@ -374,11 +284,21 @@
|
|||||||
"version": "v1.16.3",
|
"version": "v1.16.3",
|
||||||
"date": "2025-12-19T17:45:42Z"
|
"date": "2025-12-19T17:45:42Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "esphome/esphome",
|
||||||
|
"version": "2025.12.1",
|
||||||
|
"date": "2025-12-19T15:53:08Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "immich-app/immich",
|
"name": "immich-app/immich",
|
||||||
"version": "v2.4.1",
|
"version": "v2.4.1",
|
||||||
"date": "2025-12-19T15:50:12Z"
|
"date": "2025-12-19T15:50:12Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "openobserve/openobserve",
|
||||||
|
"version": "v0.30.2",
|
||||||
|
"date": "2025-12-19T15:18:53Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "raydak-labs/configarr",
|
"name": "raydak-labs/configarr",
|
||||||
"version": "v1.19.0",
|
"version": "v1.19.0",
|
||||||
@ -386,8 +306,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "wazuh/wazuh",
|
"name": "wazuh/wazuh",
|
||||||
"version": "coverity-w52-4.14.2",
|
"version": "coverity-w51-4.14.2",
|
||||||
"date": "2025-12-19T13:31:21Z"
|
"date": "2025-12-15T12:34:36Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fccview/jotty",
|
"name": "fccview/jotty",
|
||||||
@ -409,6 +329,11 @@
|
|||||||
"version": "0.28.3",
|
"version": "0.28.3",
|
||||||
"date": "2025-12-19T11:05:10Z"
|
"date": "2025-12-19T11:05:10Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "TuroYT/snowshare",
|
||||||
|
"version": "v1.2.5",
|
||||||
|
"date": "2025-12-19T10:47:19Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "mattermost/mattermost",
|
"name": "mattermost/mattermost",
|
||||||
"version": "v11.1.2",
|
"version": "v11.1.2",
|
||||||
@ -439,6 +364,11 @@
|
|||||||
"version": "v2.1.5",
|
"version": "v2.1.5",
|
||||||
"date": "2025-12-18T20:48:01Z"
|
"date": "2025-12-18T20:48:01Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "rcourtman/Pulse",
|
||||||
|
"version": "v4.36.2",
|
||||||
|
"date": "2025-12-03T22:46:29Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "saltstack/salt",
|
"name": "saltstack/salt",
|
||||||
"version": "v3007.10",
|
"version": "v3007.10",
|
||||||
@ -474,6 +404,11 @@
|
|||||||
"version": "v5.0.1",
|
"version": "v5.0.1",
|
||||||
"date": "2025-12-18T14:22:38Z"
|
"date": "2025-12-18T14:22:38Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "coollabsio/coolify",
|
||||||
|
"version": "v4.0.0-beta.458",
|
||||||
|
"date": "2025-12-18T12:23:23Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "juanfont/headscale",
|
"name": "juanfont/headscale",
|
||||||
"version": "v0.27.1",
|
"version": "v0.27.1",
|
||||||
@ -494,6 +429,11 @@
|
|||||||
"version": "7.4.6",
|
"version": "7.4.6",
|
||||||
"date": "2025-12-18T07:00:26Z"
|
"date": "2025-12-18T07:00:26Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "comfyanonymous/ComfyUI",
|
||||||
|
"version": "v0.5.1",
|
||||||
|
"date": "2025-12-18T03:08:43Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "goauthentik/authentik",
|
"name": "goauthentik/authentik",
|
||||||
"version": "version/2025.10.3",
|
"version": "version/2025.10.3",
|
||||||
@ -519,6 +459,11 @@
|
|||||||
"version": "v2.16.47",
|
"version": "v2.16.47",
|
||||||
"date": "2025-12-17T15:36:28Z"
|
"date": "2025-12-17T15:36:28Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "NodeBB/NodeBB",
|
||||||
|
"version": "v4.7.1",
|
||||||
|
"date": "2025-12-17T15:18:55Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "bunkerity/bunkerweb",
|
"name": "bunkerity/bunkerweb",
|
||||||
"version": "testing",
|
"version": "testing",
|
||||||
@ -564,11 +509,26 @@
|
|||||||
"version": "1.1.7",
|
"version": "1.1.7",
|
||||||
"date": "2025-12-16T21:44:58Z"
|
"date": "2025-12-16T21:44:58Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "prometheus-pve/prometheus-pve-exporter",
|
||||||
|
"version": "v3.7.0",
|
||||||
|
"date": "2025-12-16T19:01:35Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "netbox-community/netbox",
|
||||||
|
"version": "v4.4.8",
|
||||||
|
"date": "2025-12-09T16:29:50Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "crafty-controller/crafty-4",
|
"name": "crafty-controller/crafty-4",
|
||||||
"version": "v4.6.2",
|
"version": "v4.6.2",
|
||||||
"date": "2025-12-16T17:54:19Z"
|
"date": "2025-12-16T17:54:19Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "prometheus/prometheus",
|
||||||
|
"version": "v3.8.1",
|
||||||
|
"date": "2025-12-16T09:59:22Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "azukaar/Cosmos-Server",
|
"name": "azukaar/Cosmos-Server",
|
||||||
"version": "v0.19.0",
|
"version": "v0.19.0",
|
||||||
@ -599,11 +559,21 @@
|
|||||||
"version": "v0.30.0",
|
"version": "v0.30.0",
|
||||||
"date": "2025-12-15T17:23:59Z"
|
"date": "2025-12-15T17:23:59Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "danielbrendel/hortusfox-web",
|
||||||
|
"version": "v5.6",
|
||||||
|
"date": "2025-12-15T14:40:53Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "librenms/librenms",
|
"name": "librenms/librenms",
|
||||||
"version": "25.12.0",
|
"version": "25.12.0",
|
||||||
"date": "2025-12-15T14:06:00Z"
|
"date": "2025-12-15T14:06:00Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "endurain-project/endurain",
|
||||||
|
"version": "v0.16.3",
|
||||||
|
"date": "2025-12-15T12:56:50Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "LimeSurvey/LimeSurvey",
|
"name": "LimeSurvey/LimeSurvey",
|
||||||
"version": "6.16.2+251209",
|
"version": "6.16.2+251209",
|
||||||
@ -769,6 +739,11 @@
|
|||||||
"version": "2.2.15",
|
"version": "2.2.15",
|
||||||
"date": "2025-12-10T01:52:14Z"
|
"date": "2025-12-10T01:52:14Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "BookStackApp/BookStack",
|
||||||
|
"version": "v25.11.6",
|
||||||
|
"date": "2025-12-09T21:08:17Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "valkey-io/valkey",
|
"name": "valkey-io/valkey",
|
||||||
"version": "9.0.1",
|
"version": "9.0.1",
|
||||||
@ -1054,6 +1029,11 @@
|
|||||||
"version": "release-1.24.2",
|
"version": "release-1.24.2",
|
||||||
"date": "2025-11-26T11:22:30Z"
|
"date": "2025-11-26T11:22:30Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "Dolibarr/dolibarr",
|
||||||
|
"version": "22.0.3",
|
||||||
|
"date": "2025-11-25T17:25:41Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "usememos/memos",
|
"name": "usememos/memos",
|
||||||
"version": "v0.25.3",
|
"version": "v0.25.3",
|
||||||
@ -1079,6 +1059,11 @@
|
|||||||
"version": "v5.6.1",
|
"version": "v5.6.1",
|
||||||
"date": "2025-11-21T16:51:21Z"
|
"date": "2025-11-21T16:51:21Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "seriousm4x/UpSnap",
|
||||||
|
"version": "5.2.4",
|
||||||
|
"date": "2025-11-21T10:25:05Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "MariaDB/server",
|
"name": "MariaDB/server",
|
||||||
"version": "mariadb-12.1.2",
|
"version": "mariadb-12.1.2",
|
||||||
@ -1114,6 +1099,11 @@
|
|||||||
"version": "2025.5",
|
"version": "2025.5",
|
||||||
"date": "2025-11-19T14:48:47Z"
|
"date": "2025-11-19T14:48:47Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "PatchMon/PatchMon",
|
||||||
|
"version": "v1.3.6",
|
||||||
|
"date": "2025-11-18T22:01:02Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "redis/redis",
|
"name": "redis/redis",
|
||||||
"version": "8.4.0",
|
"version": "8.4.0",
|
||||||
@ -1229,6 +1219,11 @@
|
|||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
"date": "2025-11-05T11:10:20Z"
|
"date": "2025-11-05T11:10:20Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "SonarSource/sonarqube",
|
||||||
|
"version": "25.11.0.114957",
|
||||||
|
"date": "2025-11-05T10:26:59Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "nicolargo/glances",
|
"name": "nicolargo/glances",
|
||||||
"version": "v4.4.1",
|
"version": "v4.4.1",
|
||||||
@ -1369,6 +1364,11 @@
|
|||||||
"version": "v0.10.1",
|
"version": "v0.10.1",
|
||||||
"date": "2025-09-28T08:55:44Z"
|
"date": "2025-09-28T08:55:44Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "FreshRSS/FreshRSS",
|
||||||
|
"version": "1.27.1",
|
||||||
|
"date": "2025-09-27T13:07:26Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Threadfin/Threadfin",
|
"name": "Threadfin/Threadfin",
|
||||||
"version": "1.2.39",
|
"version": "1.2.39",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Zot Registry",
|
"name": "Zot Registry",
|
||||||
"slug": "zot",
|
"slug": "zot",
|
||||||
"categories": [
|
"categories": [
|
||||||
3
|
13
|
||||||
],
|
],
|
||||||
"date_created": "2025-06-06",
|
"date_created": "2025-06-06",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
@ -20,7 +20,7 @@
|
|||||||
"script": "ct/zot-registry.sh",
|
"script": "ct/zot-registry.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 1,
|
"cpu": 1,
|
||||||
"ram": 4096,
|
"ram": 2048,
|
||||||
"hdd": 5,
|
"hdd": 5,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "13"
|
"version": "13"
|
||||||
|
|||||||
@ -39,7 +39,7 @@ function ScriptContent() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="mb-3">
|
<div className="mb-3">
|
||||||
<div className="mt-20 flex gap-4 sm:px-4 xl:px-0">
|
<div className="mt-20 flex sm:px-4 xl:px-0">
|
||||||
<div className="hidden sm:flex">
|
<div className="hidden sm:flex">
|
||||||
<Sidebar
|
<Sidebar
|
||||||
items={links}
|
items={links}
|
||||||
@ -49,15 +49,17 @@ function ScriptContent() {
|
|||||||
setSelectedCategory={setSelectedCategory}
|
setSelectedCategory={setSelectedCategory}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="px-4 w-full sm:max-w-[calc(100%-350px-16px)]">
|
<div className="mx-4 w-full sm:mx-0 sm:ml-4">
|
||||||
{selectedScript && item ? (
|
{selectedScript && item
|
||||||
<ScriptItem item={item} setSelectedScript={setSelectedScript} />
|
? (
|
||||||
) : (
|
<ScriptItem item={item} setSelectedScript={setSelectedScript} />
|
||||||
<div className="flex w-full flex-col gap-5">
|
)
|
||||||
<LatestScripts items={links} />
|
: (
|
||||||
<MostViewedScripts items={links} />
|
<div className="flex w-full flex-col gap-5">
|
||||||
</div>
|
<LatestScripts items={links} />
|
||||||
)}
|
<MostViewedScripts items={links} />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -13,7 +13,11 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "beszel" "henrygd/beszel" "prebuild" "latest" "/opt/beszel" "beszel_linux_amd64.tar.gz"
|
msg_info "Installing Beszel"
|
||||||
|
mkdir -p /opt/beszel
|
||||||
|
curl -fsSL "https://github.com/henrygd/beszel/releases/latest/download/beszel_$(uname -s)_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/armv6l/arm/' -e 's/armv7l/arm/' -e 's/aarch64/arm64/').tar.gz" | tar -xz -O beszel | tee /opt/beszel/beszel >/dev/null
|
||||||
|
chmod +x /opt/beszel/beszel
|
||||||
|
msg_ok "Installed Beszel"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/beszel-hub.service
|
cat <<EOF >/etc/systemd/system/beszel-hub.service
|
||||||
|
|||||||
@ -50,7 +50,7 @@ Group=git
|
|||||||
WorkingDirectory=/var/lib/forgejo/
|
WorkingDirectory=/var/lib/forgejo/
|
||||||
ExecStart=/usr/local/bin/forgejo web --config /etc/forgejo/app.ini
|
ExecStart=/usr/local/bin/forgejo web --config /etc/forgejo/app.ini
|
||||||
Restart=always
|
Restart=always
|
||||||
Environment=USER=git HOME=/home/git FORGEJO_WORK_DIR=/var/lib/forgejo
|
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/forgejo
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@ -17,7 +17,7 @@ msg_info "Setting up InfluxDB Repository"
|
|||||||
setup_deb822_repo \
|
setup_deb822_repo \
|
||||||
"influxdata" \
|
"influxdata" \
|
||||||
"https://repos.influxdata.com/influxdata-archive.key" \
|
"https://repos.influxdata.com/influxdata-archive.key" \
|
||||||
"https://repos.influxdata.com/debian" \
|
"https://repos.influxdata.com/$(get_os_info id)" \
|
||||||
"stable"
|
"stable"
|
||||||
msg_ok "Set up InfluxDB Repository"
|
msg_ok "Set up InfluxDB Repository"
|
||||||
|
|
||||||
@ -29,15 +29,17 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Installing InfluxDB"
|
msg_info "Installing InfluxDB"
|
||||||
|
$STD apt update
|
||||||
if [[ $INFLUX == "2" ]]; then
|
if [[ $INFLUX == "2" ]]; then
|
||||||
$STD apt install -y influxdb2
|
$STD apt install -y influxdb2
|
||||||
else
|
else
|
||||||
$STD apt install -y influxdb
|
$STD apt install -y influxdb
|
||||||
download_file "https://dl.influxdata.com/chronograf/releases/chronograf_1.10.8_amd64.deb" "${HOME}/chronograf_1.10.8_amd64.deb"
|
curl -fsSL "https://dl.influxdata.com/chronograf/releases/chronograf_1.10.8_amd64.deb" -o "/chronograf_1.10.8_amd64.deb"
|
||||||
$STD dpkg -i "${HOME}/chronograf_1.10.8_amd64.deb"
|
$STD dpkg -i chronograf_1.10.8_amd64.deb
|
||||||
rm -rf "${HOME}/chronograf_1.10.8_amd64.deb"
|
rm -rf /chronograf_1.10.8_amd64.deb
|
||||||
fi
|
fi
|
||||||
systemctl enable -q --now influxdb
|
rm /etc/apt/sources.list.d/influxdata.list
|
||||||
|
$STD systemctl enable --now influxdb
|
||||||
msg_ok "Installed InfluxDB"
|
msg_ok "Installed InfluxDB"
|
||||||
|
|
||||||
read -r -p "${TAB3}Would you like to add Telegraf? <y/N> " prompt
|
read -r -p "${TAB3}Would you like to add Telegraf? <y/N> " prompt
|
||||||
|
|||||||
@ -13,16 +13,20 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Setting up Notifiarr"
|
msg_info "Installing Notifiarr"
|
||||||
$STD groupadd notifiarr
|
$STD groupadd notifiarr
|
||||||
$STD useradd -g notifiarr notifiarr
|
$STD useradd -g notifiarr notifiarr
|
||||||
setup_deb822_repo \
|
curl -fsSL "https://packagecloud.io/golift/pkgs/gpgkey" | gpg --dearmor >/usr/share/keyrings/golift-archive-keyring.gpg
|
||||||
"notifiarr" \
|
cat <<EOF >/etc/apt/sources.list.d/golift.sources
|
||||||
"https://packagecloud.io/golift/pkgs/gpgkey" \
|
Types: deb
|
||||||
"https://packagecloud.io/golift/pkgs/ubuntu" \
|
URIs: https://packagecloud.io/golift/pkgs/ubuntu
|
||||||
"focal"
|
Suites: focal
|
||||||
|
Components: main
|
||||||
|
Signed-By: /usr/share/keyrings/golift-archive-keyring.gpg
|
||||||
|
EOF
|
||||||
|
$STD apt update
|
||||||
$STD apt install -y notifiarr
|
$STD apt install -y notifiarr
|
||||||
msg_ok "Setup Notifiarr"
|
msg_ok "Installed Notifiarr"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|||||||
@ -13,15 +13,21 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Setting up ntfy"
|
msg_info "Installing ntfy"
|
||||||
setup_deb822_repo \
|
mkdir -p /etc/apt/keyrings
|
||||||
"ntfy" \
|
curl -fsSL -o /etc/apt/keyrings/ntfy.gpg https://archive.ntfy.sh/apt/keyring.gpg
|
||||||
"https://archive.ntfy.sh/apt/keyring.gpg" \
|
cat <<EOF >/etc/apt/sources.list.d/ntfy.sources
|
||||||
"https://archive.ntfy.sh/apt/" \
|
Types: deb
|
||||||
"stable"
|
URIs: https://archive.ntfy.sh/apt/
|
||||||
|
Suites: stable
|
||||||
|
Components: main
|
||||||
|
Signed-By: /etc/apt/keyrings/ntfy.gpg
|
||||||
|
EOF
|
||||||
|
|
||||||
|
$STD apt update
|
||||||
$STD apt install -y ntfy
|
$STD apt install -y ntfy
|
||||||
systemctl enable -q --now ntfy
|
systemctl enable -q --now ntfy
|
||||||
msg_ok "Setup ntfy"
|
msg_ok "Installed ntfy"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|||||||
@ -16,20 +16,29 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y \
|
$STD apt install -y \
|
||||||
par2 \
|
par2
|
||||||
unrar-free
|
|
||||||
|
cat <<EOF >/etc/apt/sources.list.d/non-free.list
|
||||||
|
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
|
||||||
|
EOF
|
||||||
|
$STD apt update
|
||||||
|
$STD apt install -y unrar
|
||||||
|
rm /etc/apt/sources.list.d/non-free.list
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing NZBGet"
|
msg_info "Installing NZBGet"
|
||||||
setup_deb822_repo \
|
mkdir -p /usr/share/keyrings
|
||||||
"nzbgetcom" \
|
curl -fsSL https://nzbgetcom.github.io/nzbgetcom.asc | gpg --dearmor -o /usr/share/keyrings/nzbgetcom.gpg
|
||||||
"https://nzbgetcom.github.io/nzbgetcom.asc" \
|
cat <<EOF >/etc/apt/sources.list.d/nzbgetcom.sources
|
||||||
"https://nzbgetcom.github.io/deb" \
|
Types: deb
|
||||||
"stable"
|
URIs: https://nzbgetcom.github.io/deb
|
||||||
|
Suites: stable
|
||||||
|
Components: main
|
||||||
|
Architectures: all
|
||||||
|
Signed-By: /usr/share/keyrings/nzbgetcom.gpg
|
||||||
|
EOF
|
||||||
|
$STD apt update
|
||||||
$STD apt install -y nzbget
|
$STD apt install -y nzbget
|
||||||
sed -i "s|UnrarCmd=unrar|UnrarCmd=unrar-free|g" /var/lib/nzbget/nzbget.conf
|
|
||||||
sed -i "s|SevenZipCmd=7zz|SevenZipCmd=7z|g" /var/lib/nzbget/nzbget.conf
|
|
||||||
systemctl restart nzbget
|
|
||||||
msg_ok "Installed NZBGet"
|
msg_ok "Installed NZBGet"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@ -19,12 +19,28 @@ msg_ok "Installed dependendencies"
|
|||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
|
||||||
PG_VERSION="17" setup_postgresql
|
PG_VERSION="17" setup_postgresql
|
||||||
PG_DB_NAME="openarchiver_db" PG_DB_USER="openarchiver" setup_postgresql_db
|
|
||||||
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"
|
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"
|
||||||
fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball"
|
fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball"
|
||||||
JWT_KEY="$(openssl rand -hex 32)"
|
JWT_KEY="$(openssl rand -hex 32)"
|
||||||
SECRET_KEY="$(openssl rand -hex 32)"
|
SECRET_KEY="$(openssl rand -hex 32)"
|
||||||
import_local_ip
|
IP_ADDR=$(hostname -I | awk '{print $1}')
|
||||||
|
|
||||||
|
msg_info "Setting up PostgreSQL"
|
||||||
|
DB_NAME="openarchiver_db"
|
||||||
|
DB_USER="openarchiver"
|
||||||
|
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-18)"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
|
||||||
|
{
|
||||||
|
echo "Open Archiver DB Credentials"
|
||||||
|
echo "Database Name: $DB_NAME"
|
||||||
|
echo "Database User: $DB_USER"
|
||||||
|
echo "Database Password: $DB_PASS"
|
||||||
|
} >>~/openarchiver.creds
|
||||||
|
msg_ok "Set up PostgreSQL"
|
||||||
|
|
||||||
msg_info "Configuring MeiliSearch"
|
msg_info "Configuring MeiliSearch"
|
||||||
curl -fsSL https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -o /etc/meilisearch.toml
|
curl -fsSL https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -o /etc/meilisearch.toml
|
||||||
@ -60,10 +76,10 @@ mkdir -p /opt/openarchiver-data
|
|||||||
cd /opt/openarchiver
|
cd /opt/openarchiver
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
sed -i "s|^NODE_ENV=.*|NODE_ENV=production|g" /opt/openarchiver/.env
|
sed -i "s|^NODE_ENV=.*|NODE_ENV=production|g" /opt/openarchiver/.env
|
||||||
sed -i "s|^POSTGRES_DB=.*|POSTGRES_DB=$PG_DB_NAME|g" /opt/openarchiver/.env
|
sed -i "s|^POSTGRES_DB=.*|POSTGRES_DB=openarchiver_db|g" /opt/openarchiver/.env
|
||||||
sed -i "s|^POSTGRES_USER=.*|POSTGRES_USER=$PG_DB_USER|g" /opt/openarchiver/.env
|
sed -i "s|^POSTGRES_USER=.*|POSTGRES_USER=openarchiver|g" /opt/openarchiver/.env
|
||||||
sed -i "s|^POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$PG_DB_PASS|g" /opt/openarchiver/.env
|
sed -i "s|^POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$DB_PASS|g" /opt/openarchiver/.env
|
||||||
sed -i "s|^DATABASE_URL=.*|DATABASE_URL=\"postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME\"|g" /opt/openarchiver/.env
|
sed -i "s|^DATABASE_URL=.*|DATABASE_URL=\"postgresql://openarchiver:$DB_PASS@localhost:5432/openarchiver_db\"|g" /opt/openarchiver/.env
|
||||||
sed -i "s|^MEILI_HOST=.*|MEILI_HOST=http://localhost:7700|g" /opt/openarchiver/.env
|
sed -i "s|^MEILI_HOST=.*|MEILI_HOST=http://localhost:7700|g" /opt/openarchiver/.env
|
||||||
sed -i "s|^MEILI_MASTER_KEY=.*|MEILI_MASTER_KEY=$MASTER_KEY|g" /opt/openarchiver/.env
|
sed -i "s|^MEILI_MASTER_KEY=.*|MEILI_MASTER_KEY=$MASTER_KEY|g" /opt/openarchiver/.env
|
||||||
sed -i "s|^REDIS_HOST=.*|REDIS_HOST=localhost|g" /opt/openarchiver/.env
|
sed -i "s|^REDIS_HOST=.*|REDIS_HOST=localhost|g" /opt/openarchiver/.env
|
||||||
@ -72,7 +88,7 @@ sed -i "s|^STORAGE_LOCAL_ROOT_PATH=.*|STORAGE_LOCAL_ROOT_PATH=/opt/openarchiver-
|
|||||||
sed -i "s|^JWT_SECRET=.*|JWT_SECRET=$JWT_KEY|g" /opt/openarchiver/.env
|
sed -i "s|^JWT_SECRET=.*|JWT_SECRET=$JWT_KEY|g" /opt/openarchiver/.env
|
||||||
sed -i "s|^ENCRYPTION_KEY=.*|ENCRYPTION_KEY=$SECRET_KEY|g" /opt/openarchiver/.env
|
sed -i "s|^ENCRYPTION_KEY=.*|ENCRYPTION_KEY=$SECRET_KEY|g" /opt/openarchiver/.env
|
||||||
sed -i "s|^TIKA_URL=.*|TIKA_URL=|g" /opt/openarchiver/.env
|
sed -i "s|^TIKA_URL=.*|TIKA_URL=|g" /opt/openarchiver/.env
|
||||||
sed -i "s|^ORIGIN=.*|ORIGIN=http://$LOCAL_IP:3000|g" /opt/openarchiver/.env
|
sed -i "s|^ORIGIN=.*|ORIGIN=http://$IP_ADDR:3000|g" /opt/openarchiver/.env
|
||||||
$STD pnpm install --shamefully-hoist --frozen-lockfile --prod=false
|
$STD pnpm install --shamefully-hoist --frozen-lockfile --prod=false
|
||||||
$STD pnpm run build:oss
|
$STD pnpm run build:oss
|
||||||
$STD pnpm db:migrate
|
$STD pnpm db:migrate
|
||||||
|
|||||||
@ -15,17 +15,15 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing OpenObserve"
|
msg_info "Installing OpenObserve"
|
||||||
mkdir -p /opt/openobserve/data
|
mkdir -p /opt/openobserve/data
|
||||||
RELEASE=$(get_latest_github_release "openobserve/openobserve")
|
LATEST=$(curl -fsSL https://api.github.com/repos/openobserve/openobserve/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
tar zxf <(curl -fsSL https://downloads.openobserve.ai/releases/openobserve/v$RELEASE/openobserve-v$RELEASE-linux-amd64.tar.gz) -C /opt/openobserve
|
$STD tar zxvf <(curl -fsSL https://downloads.openobserve.ai/releases/openobserve/$LATEST/openobserve-$LATEST-linux-amd64.tar.gz) -C /opt/openobserve
|
||||||
ROOT_PASS=$(openssl rand -base64 18 | cut -c1-13)
|
|
||||||
|
|
||||||
cat <<EOF >/opt/openobserve/data/.env
|
cat <<EOF >/opt/openobserve/data/.env
|
||||||
ZO_ROOT_USER_EMAIL = "admin@example.com"
|
ZO_ROOT_USER_EMAIL = "admin@example.com"
|
||||||
ZO_ROOT_USER_PASSWORD = "${ROOT_PASS}"
|
ZO_ROOT_USER_PASSWORD = "$(openssl rand -base64 18 | cut -c1-13)"
|
||||||
ZO_DATA_DIR = "/opt/openobserve/data"
|
ZO_DATA_DIR = "/opt/openobserve/data"
|
||||||
ZO_HTTP_PORT = "5080"
|
ZO_HTTP_PORT = "5080"
|
||||||
EOF
|
EOF
|
||||||
echo "${RELEASE}" >>~/.openobserve
|
|
||||||
msg_ok "Installed OpenObserve"
|
msg_ok "Installed OpenObserve"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@ -14,14 +14,28 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y apt-transport-https
|
$STD apt install -y \
|
||||||
|
apt-transport-https \
|
||||||
|
ca-certificates
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
PG_VERSION="17" setup_postgresql
|
PG_VERSION="17" setup_postgresql
|
||||||
PG_DB_NAME="openproject" PG_DB_USER="openproject" setup_postgresql_db
|
|
||||||
|
msg_info "Setting up PostgreSQL"
|
||||||
|
DB_NAME=openproject
|
||||||
|
DB_USER=openproject
|
||||||
|
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
||||||
API_KEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
API_KEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
||||||
echo "OpenProject API Key: $API_KEY" >>~/openproject.creds
|
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
||||||
import_local_ip
|
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
|
||||||
|
{
|
||||||
|
echo "OpenProject-Credentials"
|
||||||
|
echo -e "OpenProject Database User: $DB_USER"
|
||||||
|
echo -e "OpenProject Database Password: $DB_PASS"
|
||||||
|
echo -e "OpenProject Database Name: $DB_NAME"
|
||||||
|
echo -e "OpenProject API Key: $API_KEY"
|
||||||
|
} >>~/openproject.creds
|
||||||
|
msg_ok "Set up PostgreSQL"
|
||||||
|
|
||||||
msg_info "Setting up OpenProject Repository"
|
msg_info "Setting up OpenProject Repository"
|
||||||
curl -fsSL "https://dl.packager.io/srv/opf/openproject/key" | gpg --dearmor >/etc/apt/trusted.gpg.d/packager-io.gpg
|
curl -fsSL "https://dl.packager.io/srv/opf/openproject/key" | gpg --dearmor >/etc/apt/trusted.gpg.d/packager-io.gpg
|
||||||
@ -34,6 +48,7 @@ $STD apt install -y openproject
|
|||||||
msg_ok "Installed OpenProject"
|
msg_ok "Installed OpenProject"
|
||||||
|
|
||||||
msg_info "Configuring OpenProject"
|
msg_info "Configuring OpenProject"
|
||||||
|
IP_ADDR=$(hostname -I | cut -d' ' -f1)
|
||||||
cat <<EOF >/etc/openproject/installer.dat
|
cat <<EOF >/etc/openproject/installer.dat
|
||||||
openproject/edition default
|
openproject/edition default
|
||||||
|
|
||||||
@ -41,13 +56,13 @@ postgres/retry retry
|
|||||||
postgres/autoinstall reuse
|
postgres/autoinstall reuse
|
||||||
postgres/db_host 127.0.0.1
|
postgres/db_host 127.0.0.1
|
||||||
postgres/db_port 5432
|
postgres/db_port 5432
|
||||||
postgres/db_username ${PG_DB_USER}
|
postgres/db_username ${DB_USER}
|
||||||
postgres/db_password ${PG_DB_PASS}
|
postgres/db_password ${DB_PASS}
|
||||||
postgres/db_name ${PG_DB_NAME}
|
postgres/db_name ${DB_NAME}
|
||||||
server/autoinstall install
|
server/autoinstall install
|
||||||
server/variant apache2
|
server/variant apache2
|
||||||
|
|
||||||
server/hostname ${LOCAL_IP}
|
server/hostname ${IP_ADDR}
|
||||||
server/server_path_prefix /openproject
|
server/server_path_prefix /openproject
|
||||||
server/ssl no
|
server/ssl no
|
||||||
server/variant apache2
|
server/variant apache2
|
||||||
@ -60,6 +75,7 @@ memcached/autoinstall install
|
|||||||
openproject/admin_email admin@example.net
|
openproject/admin_email admin@example.net
|
||||||
openproject/default_language en
|
openproject/default_language en
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
$STD sudo openproject configure
|
$STD sudo openproject configure
|
||||||
msg_ok "Configured OpenProject"
|
msg_ok "Configured OpenProject"
|
||||||
|
|
||||||
|
|||||||
@ -16,11 +16,11 @@ update_os
|
|||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y \
|
$STD apt install -y \
|
||||||
redis-server \
|
redis-server \
|
||||||
nginx
|
nginx \
|
||||||
|
openssl
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "ots" "Luzifer/ots" "prebuild" "latest" "/opt/ots" "ots_linux_amd64.tgz"
|
fetch_and_deploy_gh_release "ots" "Luzifer/ots" "prebuild" "latest" "/opt/ots" "ots_linux_amd64.tgz"
|
||||||
create_self_signed_cert
|
|
||||||
|
|
||||||
msg_info "Setup OTS"
|
msg_info "Setup OTS"
|
||||||
cat <<EOF >/opt/ots/.env
|
cat <<EOF >/opt/ots/.env
|
||||||
@ -31,6 +31,14 @@ STORAGE_TYPE=redis
|
|||||||
EOF
|
EOF
|
||||||
msg_ok "Setup OTS"
|
msg_ok "Setup OTS"
|
||||||
|
|
||||||
|
msg_info "Generating Universal SSL Certificate"
|
||||||
|
mkdir -p /etc/ssl/ots
|
||||||
|
$STD openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
|
||||||
|
-keyout /etc/ssl/ots/key.pem \
|
||||||
|
-out /etc/ssl/ots/cert.pem \
|
||||||
|
-subj "/CN=ots"
|
||||||
|
msg_ok "Certificate Generated"
|
||||||
|
|
||||||
msg_info "Setting up nginx"
|
msg_info "Setting up nginx"
|
||||||
cat <<EOF >/etc/nginx/sites-available/ots.conf
|
cat <<EOF >/etc/nginx/sites-available/ots.conf
|
||||||
server {
|
server {
|
||||||
@ -44,8 +52,8 @@ server {
|
|||||||
listen [::]:443 ssl;
|
listen [::]:443 ssl;
|
||||||
server_name ots;
|
server_name ots;
|
||||||
|
|
||||||
ssl_certificate /etc/ssl/ots/ots.crt;
|
ssl_certificate /etc/ssl/ots/cert.pem;
|
||||||
ssl_certificate_key /etc/ssl/ots/ots.key;
|
ssl_certificate_key /etc/ssl/ots/key.pem;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
add_header X-Robots-Tag noindex;
|
add_header X-Robots-Tag noindex;
|
||||||
|
|||||||
@ -22,12 +22,29 @@ msg_ok "Installed Dependencies"
|
|||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
||||||
PG_VERSION="16" setup_postgresql
|
PG_VERSION="16" setup_postgresql
|
||||||
PG_DB_NAME="outline" PG_DB_USER="outline" setup_postgresql_db
|
|
||||||
|
msg_info "Set up PostgreSQL Database"
|
||||||
|
DB_NAME="outline"
|
||||||
|
DB_USER="outline"
|
||||||
|
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
|
||||||
|
{
|
||||||
|
echo "Outline-Credentials"
|
||||||
|
echo "Outline Database User: $DB_USER"
|
||||||
|
echo "Outline Database Password: $DB_PASS"
|
||||||
|
echo "Outline Database Name: $DB_NAME"
|
||||||
|
} >>~/outline.creds
|
||||||
|
msg_ok "Set up PostgreSQL Database"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
|
fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
|
||||||
import_local_ip
|
|
||||||
|
|
||||||
msg_info "Configuring Outline (Patience)"
|
msg_info "Configuring Outline (Patience)"
|
||||||
SECRET_KEY="$(openssl rand -hex 32)"
|
SECRET_KEY="$(openssl rand -hex 32)"
|
||||||
|
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
||||||
cd /opt/outline
|
cd /opt/outline
|
||||||
cp .env.sample .env
|
cp .env.sample .env
|
||||||
export NODE_ENV=development
|
export NODE_ENV=development
|
||||||
|
|||||||
@ -13,6 +13,10 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt install -y ca-certificates
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
||||||
fetch_and_deploy_gh_release "overseerr" "sct/overseerr" "tarball"
|
fetch_and_deploy_gh_release "overseerr" "sct/overseerr" "tarball"
|
||||||
|
|
||||||
|
|||||||
@ -16,17 +16,22 @@ update_os
|
|||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y \
|
$STD apt install -y \
|
||||||
gcc \
|
gcc \
|
||||||
|
ca-certificates \
|
||||||
musl-dev \
|
musl-dev \
|
||||||
mupdf \
|
mupdf \
|
||||||
libc6-dev \
|
libc6-dev \
|
||||||
musl-tools
|
musl-tools
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="24" setup_nodejs
|
NODE_VERSION="22" setup_nodejs
|
||||||
setup_go
|
setup_go
|
||||||
fetch_and_deploy_gh_release "paperless-gpt" "icereed/paperless-gpt" "tarball"
|
|
||||||
|
|
||||||
msg_info "Setup Paperless-GPT"
|
msg_info "Setup Paperless-GPT"
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/icereed/paperless-gpt/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
curl -fsSL "https://github.com/icereed/paperless-gpt/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||||
|
tar zxf "$temp_file"
|
||||||
|
mv paperless-gpt-"${RELEASE}" /opt/paperless-gpt
|
||||||
cd /opt/paperless-gpt/web-app
|
cd /opt/paperless-gpt/web-app
|
||||||
$STD npm install
|
$STD npm install
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
@ -35,19 +40,21 @@ go mod download
|
|||||||
export CC=musl-gcc
|
export CC=musl-gcc
|
||||||
CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3
|
CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3
|
||||||
CGO_ENABLED=1 go build -tags musl -o paperless-gpt .
|
CGO_ENABLED=1 go build -tags musl -o paperless-gpt .
|
||||||
|
rm -f "$temp_file"
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
msg_ok "Setup Paperless-GPT"
|
msg_ok "Setup Paperless-GPT"
|
||||||
|
|
||||||
mkdir -p /opt/paperless-gpt-data
|
mkdir -p /opt/paperless-gpt-data
|
||||||
read -rp "${TAB3}Do you want to enter the Paperless local URL now? (y/n) " input_url
|
read -p "${TAB3}Do you want to enter the Paperless local URL now? (y/n) " input_url
|
||||||
if [[ $input_url =~ ^[Yy]$ ]]; then
|
if [[ "$input_url" =~ ^[Yy]$ ]]; then
|
||||||
read -rp "${TAB3}Enter your Paperless-NGX instance URL (e.g., http://192.168.1.100:8000): " PAPERLESS_BASE_URL
|
read -p "${TAB3}Enter your Paperless-NGX instance URL (e.g., http://192.168.1.100:8000): " PAPERLESS_BASE_URL
|
||||||
else
|
else
|
||||||
PAPERLESS_BASE_URL="http://your_paperless_ngx_url"
|
PAPERLESS_BASE_URL="http://your_paperless_ngx_url"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read -rp "${TAB3}Do you want to enter the Paperless API token now? (y/n) " input_token
|
read -p "${TAB3}Do you want to enter the Paperless API token now? (y/n) " input_token
|
||||||
if [[ $input_token =~ ^[Yy]$ ]]; then
|
if [[ "$input_token" =~ ^[Yy]$ ]]; then
|
||||||
read -rp "${TAB3}Enter your Paperless API token: " PAPERLESS_API_TOKEN
|
read -p "${TAB3}Enter your Paperless API token: " PAPERLESS_API_TOKEN
|
||||||
else
|
else
|
||||||
PAPERLESS_API_TOKEN="your_paperless_api_token"
|
PAPERLESS_API_TOKEN="your_paperless_api_token"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@ -15,20 +15,39 @@ update_os
|
|||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
||||||
PG_VERSION="16" setup_postgresql
|
PG_VERSION="16" setup_postgresql
|
||||||
PG_DB_NAME="partdb" PG_DB_USER="partdb" setup_postgresql_db
|
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="xsl,pgsql" setup_php
|
||||||
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="xsl,pgsql" PHP_POST_MAX_SIZE="100M" PHP_UPLOAD_MAX_FILESIZE="100M" setup_php
|
|
||||||
setup_composer
|
setup_composer
|
||||||
|
|
||||||
|
msg_info "Setting up PHP"
|
||||||
|
PHPVER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION . "\n";')
|
||||||
|
sed -i "s@post_max_size = 8M@post_max_size = 100M@g" /etc/php/${PHPVER}/apache2/php.ini
|
||||||
|
sed -i "s@upload_max_filesize = 2M@upload_max_filesize = 100M@g" /etc/php/${PHPVER}/apache2/php.ini
|
||||||
|
msg_ok "Setting up PHP"
|
||||||
|
|
||||||
|
msg_info "Setting up PostgreSQL"
|
||||||
|
DB_NAME=partdb
|
||||||
|
DB_USER=partdb
|
||||||
|
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
||||||
|
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
|
||||||
|
{
|
||||||
|
echo "Part-DB Credentials"
|
||||||
|
echo "Part-DB Database User: $DB_USER"
|
||||||
|
echo "Part-DB Database Password: $DB_PASS"
|
||||||
|
echo "Part-DB Database Name: $DB_NAME"
|
||||||
|
} >>~/partdb.creds
|
||||||
|
msg_ok "Set up PostgreSQL"
|
||||||
|
|
||||||
msg_info "Installing Part-DB (Patience)"
|
msg_info "Installing Part-DB (Patience)"
|
||||||
cd /opt
|
cd /opt
|
||||||
RELEASE=$(get_latest_github_release "Part-DB/Part-DB-server")
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Part-DB/Part-DB-server/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
curl -fsSL "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" -o "/opt/v${RELEASE}.zip"
|
curl -fsSL "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" -o "/opt/v${RELEASE}.zip"
|
||||||
$STD unzip "v${RELEASE}.zip"
|
$STD unzip "v${RELEASE}.zip"
|
||||||
mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb
|
mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb
|
||||||
|
|
||||||
cd /opt/partdb/
|
cd /opt/partdb/
|
||||||
cp .env .env.local
|
cp .env .env.local
|
||||||
sed -i "s|DATABASE_URL=\"sqlite:///%kernel.project_dir%/var/app.db\"|DATABASE_URL=\"postgresql://${PG_DB_USER}:${PG_DB_PASS}@127.0.0.1:5432/${PG_DB_NAME}?serverVersion=12.19&charset=utf8\"|" .env.local
|
sed -i "s|DATABASE_URL=\"sqlite:///%kernel.project_dir%/var/app.db\"|DATABASE_URL=\"postgresql://${DB_USER}:${DB_PASS}@127.0.0.1:5432/${DB_NAME}?serverVersion=12.19&charset=utf8\"|" .env.local
|
||||||
|
|
||||||
export COMPOSER_ALLOW_SUPERUSER=1
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
$STD composer install --no-dev -o --no-interaction
|
$STD composer install --no-dev -o --no-interaction
|
||||||
@ -45,7 +64,7 @@ ADMIN_PASS=$(grep -oP 'The initial password for the "admin" user is: \K\w+' ~/da
|
|||||||
} >>~/partdb.creds
|
} >>~/partdb.creds
|
||||||
rm -rf ~/database-migration-output
|
rm -rf ~/database-migration-output
|
||||||
rm -rf "/opt/v${RELEASE}.zip"
|
rm -rf "/opt/v${RELEASE}.zip"
|
||||||
echo "${RELEASE}" >~/.partdb
|
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||||
msg_ok "Installed Part-DB"
|
msg_ok "Installed Part-DB"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@ -21,18 +21,18 @@ $STD apt install -y \
|
|||||||
msg_ok "Installed dependencies"
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
setup_mariadb
|
setup_mariadb
|
||||||
MARIADB_DB_NAME="passboltdb" MARIADB_DB_USER="passbolt" setup_mariadb_db
|
MARIADB_DB_NAME="passboltdb" MARIADB_DB_USER="passbolt" MARIADB_DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)" setup_mariadb_db
|
||||||
create_self_signed_cert
|
|
||||||
import_local_ip
|
|
||||||
setup_deb822_repo \
|
setup_deb822_repo \
|
||||||
"passbolt" \
|
"passbolt" \
|
||||||
"https://keys.openpgp.org/pks/lookup?op=get&options=mr&search=0x3D1A0346C8E1802F774AEF21DE8B853FC155581D" \
|
"https://keys.openpgp.org/pks/lookup?op=get&options=mr&search=0x3D1A0346C8E1802F774AEF21DE8B853FC155581D" \
|
||||||
"https://download.passbolt.com/ce/debian" \
|
"https://download.passbolt.com/ce/debian" \
|
||||||
"buster" \
|
"buster" \
|
||||||
"stable"
|
"stable"
|
||||||
|
create_self_signed_cert "passbolt"
|
||||||
|
|
||||||
msg_info "Setting up Passbolt (Patience)"
|
msg_info "Setting up Passbolt (Patience)"
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
IP_ADDR=$(hostname -I | awk '{print $1}')
|
||||||
echo passbolt-ce-server passbolt/mysql-configuration boolean true | debconf-set-selections
|
echo passbolt-ce-server passbolt/mysql-configuration boolean true | debconf-set-selections
|
||||||
echo passbolt-ce-server passbolt/mysql-passbolt-username string $MARIADB_DB_USER | debconf-set-selections
|
echo passbolt-ce-server passbolt/mysql-passbolt-username string $MARIADB_DB_USER | debconf-set-selections
|
||||||
echo passbolt-ce-server passbolt/mysql-passbolt-password password $MARIADB_DB_PASS | debconf-set-selections
|
echo passbolt-ce-server passbolt/mysql-passbolt-password password $MARIADB_DB_PASS | debconf-set-selections
|
||||||
@ -40,7 +40,7 @@ echo passbolt-ce-server passbolt/mysql-passbolt-password-repeat password $MARIAD
|
|||||||
echo passbolt-ce-server passbolt/mysql-passbolt-dbname string $MARIADB_DB_NAME | debconf-set-selections
|
echo passbolt-ce-server passbolt/mysql-passbolt-dbname string $MARIADB_DB_NAME | debconf-set-selections
|
||||||
echo passbolt-ce-server passbolt/nginx-configuration boolean true | debconf-set-selections
|
echo passbolt-ce-server passbolt/nginx-configuration boolean true | debconf-set-selections
|
||||||
echo passbolt-ce-server passbolt/nginx-configuration-three-choices select manual | debconf-set-selections
|
echo passbolt-ce-server passbolt/nginx-configuration-three-choices select manual | debconf-set-selections
|
||||||
echo passbolt-ce-server passbolt/nginx-domain string $LOCAL_IP | debconf-set-selections
|
echo passbolt-ce-server passbolt/nginx-domain string $IP_ADDR | debconf-set-selections
|
||||||
echo passbolt-ce-server passbolt/nginx-certificate-file string /etc/ssl/passbolt/passbolt.crt | debconf-set-selections
|
echo passbolt-ce-server passbolt/nginx-certificate-file string /etc/ssl/passbolt/passbolt.crt | debconf-set-selections
|
||||||
echo passbolt-ce-server passbolt/nginx-certificate-key-file string /etc/ssl/passbolt/passbolt.key | debconf-set-selections
|
echo passbolt-ce-server passbolt/nginx-certificate-key-file string /etc/ssl/passbolt/passbolt.key | debconf-set-selections
|
||||||
$STD apt install -y --no-install-recommends passbolt-ce-server
|
$STD apt install -y --no-install-recommends passbolt-ce-server
|
||||||
|
|||||||
@ -22,9 +22,24 @@ msg_ok "Installed Dependencies"
|
|||||||
|
|
||||||
NODE_VERSION="24" setup_nodejs
|
NODE_VERSION="24" setup_nodejs
|
||||||
PG_VERSION="17" setup_postgresql
|
PG_VERSION="17" setup_postgresql
|
||||||
PG_DB_NAME="patchmon_db" PG_DB_USER="patchmon_usr" setup_postgresql_db
|
|
||||||
|
msg_info "Setup PostgreSQL Database"
|
||||||
|
DB_NAME=patchmon_db
|
||||||
|
DB_USER=patchmon_usr
|
||||||
|
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
||||||
|
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;"
|
||||||
|
{
|
||||||
|
echo "PatchMon Credentials"
|
||||||
|
echo "PatchMon Database Name: $DB_NAME"
|
||||||
|
echo "PatchMon Database User: $DB_USER"
|
||||||
|
echo "PatchMon Database Password: $DB_PASS"
|
||||||
|
} >>~/patchmon.creds
|
||||||
|
msg_ok "Setup PostgreSQL Database"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
|
fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
|
||||||
import_local_ip
|
|
||||||
|
|
||||||
msg_info "Configuring PatchMon"
|
msg_info "Configuring PatchMon"
|
||||||
cd /opt/patchmon
|
cd /opt/patchmon
|
||||||
@ -35,10 +50,12 @@ $STD npm install --no-audit --no-fund --no-save --ignore-scripts
|
|||||||
cd /opt/patchmon/frontend
|
cd /opt/patchmon/frontend
|
||||||
$STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts
|
$STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
|
|
||||||
JWT_SECRET="$(openssl rand -base64 64 | tr -d "=+/" | cut -c1-50)"
|
JWT_SECRET="$(openssl rand -base64 64 | tr -d "=+/" | cut -c1-50)"
|
||||||
|
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
||||||
cat <<EOF >/opt/patchmon/backend/.env
|
cat <<EOF >/opt/patchmon/backend/.env
|
||||||
# Database Configuration
|
# Database Configuration
|
||||||
DATABASE_URL="postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME"
|
DATABASE_URL="postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME"
|
||||||
PY_THRESHOLD=3M_DB_CONN_MAX_ATTEMPTS=30
|
PY_THRESHOLD=3M_DB_CONN_MAX_ATTEMPTS=30
|
||||||
PM_DB_CONN_WAIT_INTERVAL=2
|
PM_DB_CONN_WAIT_INTERVAL=2
|
||||||
|
|
||||||
@ -255,6 +272,7 @@ async function updateSettings() {
|
|||||||
|
|
||||||
updateSettings();
|
updateSettings();
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cd /opt/patchmon/backend
|
cd /opt/patchmon/backend
|
||||||
$STD node update-settings.js
|
$STD node update-settings.js
|
||||||
msg_ok "Settings updated successfully"
|
msg_ok "Settings updated successfully"
|
||||||
|
|||||||
@ -20,8 +20,24 @@ $STD apt install -y \
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
setup_mariadb
|
setup_mariadb
|
||||||
MARIADB_DB_NAME="plantit" MARIADB_DB_USER="plantit_usr" setup_mariadb_db
|
|
||||||
JAVA_VERSION="21" setup_java
|
JAVA_VERSION="21" setup_java
|
||||||
|
|
||||||
|
msg_info "Setting up MariaDB"
|
||||||
|
JWT_SECRET=$(openssl rand -base64 24 | tr -d '/+=')
|
||||||
|
DB_NAME=plantit
|
||||||
|
DB_USER=plantit_usr
|
||||||
|
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 "Plant-it Credentials"
|
||||||
|
echo "Plant-it Database User: $DB_USER"
|
||||||
|
echo "Plant-it Database Password: $DB_PASS"
|
||||||
|
echo "Plant-it Database Name: $DB_NAME"
|
||||||
|
} >>~/plant-it.creds
|
||||||
|
msg_ok "Set up MariaDB"
|
||||||
|
|
||||||
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "plant-it" "MDeLuise/plant-it" "singlefile" "0.10.0" "/opt/plant-it/backend" "server.jar"
|
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "plant-it" "MDeLuise/plant-it" "singlefile" "0.10.0" "/opt/plant-it/backend" "server.jar"
|
||||||
fetch_and_deploy_gh_release "plant-it-front" "MDeLuise/plant-it" "prebuild" "0.10.0" "/opt/plant-it/frontend" "client.tar.gz"
|
fetch_and_deploy_gh_release "plant-it-front" "MDeLuise/plant-it" "prebuild" "0.10.0" "/opt/plant-it/frontend" "client.tar.gz"
|
||||||
|
|
||||||
@ -30,10 +46,10 @@ mkdir -p /opt/plant-it-data
|
|||||||
cat <<EOF >/opt/plant-it/backend/server.env
|
cat <<EOF >/opt/plant-it/backend/server.env
|
||||||
MYSQL_HOST=localhost
|
MYSQL_HOST=localhost
|
||||||
MYSQL_PORT=3306
|
MYSQL_PORT=3306
|
||||||
MYSQL_USERNAME=$MARIADB_DB_USER
|
MYSQL_USERNAME=$DB_USER
|
||||||
MYSQL_PSW=$MARIADB_DB_PASS
|
MYSQL_PSW=$DB_PASS
|
||||||
MYSQL_DATABASE=$MARIADB_DB_NAME
|
MYSQL_DATABASE=$DB_NAME
|
||||||
MYSQL_ROOT_PASSWORD=$MARIADB_DB_PASS
|
MYSQL_ROOT_PASSWORD=$DB_PASS
|
||||||
|
|
||||||
JWT_SECRET=$JWT_SECRET
|
JWT_SECRET=$JWT_SECRET
|
||||||
JWT_EXP=1
|
JWT_EXP=1
|
||||||
@ -70,7 +86,7 @@ Restart=on-failure
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now plant-it
|
systemctl enable --now -q plant-it
|
||||||
|
|
||||||
cat <<EOF >/etc/nginx/nginx.conf
|
cat <<EOF >/etc/nginx/nginx.conf
|
||||||
events {
|
events {
|
||||||
|
|||||||
@ -13,8 +13,12 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
PORTAINER_LATEST_VERSION=$(get_latest_github_release "portainer/portainer")
|
get_latest_release() {
|
||||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_github_release "portainer/agent")
|
curl -fsSL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||||
|
}
|
||||||
|
|
||||||
|
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
|
||||||
|
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
|
||||||
|
|
||||||
if $STD mount | grep 'on / type zfs' >null && echo "ZFS"; then
|
if $STD mount | grep 'on / type zfs' >null && echo "ZFS"; then
|
||||||
msg_info "Enabling ZFS support."
|
msg_info "Enabling ZFS support."
|
||||||
@ -40,8 +44,8 @@ EOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Installing Podman"
|
msg_info "Installing Podman"
|
||||||
$STD apt install -y podman
|
$STD apt -y install podman
|
||||||
systemctl enable -q --now podman.socket
|
$STD systemctl enable --now podman.socket
|
||||||
echo -e 'unqualified-search-registries=["docker.io"]' >>/etc/containers/registries.conf
|
echo -e 'unqualified-search-registries=["docker.io"]' >>/etc/containers/registries.conf
|
||||||
msg_ok "Installed Podman"
|
msg_ok "Installed Podman"
|
||||||
|
|
||||||
@ -93,7 +97,7 @@ $STD podman run -d \
|
|||||||
podman generate systemd \
|
podman generate systemd \
|
||||||
--new --name homeassistant \
|
--new --name homeassistant \
|
||||||
>/etc/systemd/system/homeassistant.service
|
>/etc/systemd/system/homeassistant.service
|
||||||
systemctl enable -q --now homeassistant
|
$STD systemctl enable --now homeassistant
|
||||||
msg_ok "Installed Home Assistant"
|
msg_ok "Installed Home Assistant"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@ -13,8 +13,12 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
PORTAINER_LATEST_VERSION=$(get_latest_github_release "portainer/portainer")
|
get_latest_release() {
|
||||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_github_release "portainer/agent")
|
curl -fsSL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||||
|
}
|
||||||
|
|
||||||
|
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
|
||||||
|
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
|
||||||
|
|
||||||
if $STD mount | grep 'on / type zfs' >null && echo "ZFS"; then
|
if $STD mount | grep 'on / type zfs' >null && echo "ZFS"; then
|
||||||
msg_info "Enabling ZFS support."
|
msg_info "Enabling ZFS support."
|
||||||
@ -40,8 +44,8 @@ EOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Installing Podman"
|
msg_info "Installing Podman"
|
||||||
$STD apt install -y podman
|
$STD apt -y install podman
|
||||||
systemctl enable -q --now podman.socket
|
$STD systemctl enable --now podman.socket
|
||||||
echo -e 'unqualified-search-registries=["docker.io"]' >>/etc/containers/registries.conf
|
echo -e 'unqualified-search-registries=["docker.io"]' >>/etc/containers/registries.conf
|
||||||
msg_ok "Installed Podman"
|
msg_ok "Installed Podman"
|
||||||
|
|
||||||
|
|||||||
@ -20,9 +20,16 @@ $STD apt install -y \
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
PHP_VERSION="8.2" PHP_MODULE="common,fpm" setup_php
|
PHP_VERSION="8.2" PHP_MODULE="common,fpm" setup_php
|
||||||
create_self_signed_cert
|
|
||||||
fetch_and_deploy_gh_release "privatebin" "PrivateBin/PrivateBin" "tarball"
|
fetch_and_deploy_gh_release "privatebin" "PrivateBin/PrivateBin" "tarball"
|
||||||
|
|
||||||
|
msg_info "Generating Universal SSL Certificate"
|
||||||
|
mkdir -p /etc/ssl/privatebin
|
||||||
|
$STD openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
|
||||||
|
-keyout /etc/ssl/privatebin/key.pem \
|
||||||
|
-out /etc/ssl/privatebin/cert.pem \
|
||||||
|
-subj "/CN=PrivateBin"
|
||||||
|
msg_ok "Certificate Generated"
|
||||||
|
|
||||||
msg_info "Configuring Environment"
|
msg_info "Configuring Environment"
|
||||||
mkdir -p /opt/privatebin/data
|
mkdir -p /opt/privatebin/data
|
||||||
cp /opt/privatebin/cfg/conf.sample.php /opt/privatebin/cfg/conf.php
|
cp /opt/privatebin/cfg/conf.sample.php /opt/privatebin/cfg/conf.php
|
||||||
@ -48,8 +55,8 @@ server {
|
|||||||
listen 443 ssl default_server;
|
listen 443 ssl default_server;
|
||||||
listen [::]:443 ssl default_server;
|
listen [::]:443 ssl default_server;
|
||||||
|
|
||||||
ssl_certificate /etc/ssl/privatebin/privatebin.crt;
|
ssl_certificate /etc/ssl/privatebin/cert.pem;
|
||||||
ssl_certificate_key /etc/ssl/privatebin/privatebin.key;
|
ssl_certificate_key /etc/ssl/privatebin/key.pem;
|
||||||
|
|
||||||
root /opt/privatebin;
|
root /opt/privatebin;
|
||||||
index index.php;
|
index index.php;
|
||||||
|
|||||||
@ -15,17 +15,31 @@ update_os
|
|||||||
|
|
||||||
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="pdo,mysql,gettext,fileinfo" setup_php
|
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="pdo,mysql,gettext,fileinfo" setup_php
|
||||||
setup_mariadb
|
setup_mariadb
|
||||||
MARIADB_DB_NAME="projectsend" MARIADB_DB_USER="projectsend" setup_mariadb_db
|
|
||||||
fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-r*.zip"
|
fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-r*.zip"
|
||||||
|
|
||||||
|
msg_info "Setting up MariaDB"
|
||||||
|
DB_NAME=projectsend
|
||||||
|
DB_USER=projectsend
|
||||||
|
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 "projectsend-Credentials"
|
||||||
|
echo "projectsend Database User: $DB_USER"
|
||||||
|
echo "projectsend Database Password: $DB_PASS"
|
||||||
|
echo "projectsend Database Name: $DB_NAME"
|
||||||
|
} >>~/projectsend.creds
|
||||||
|
msg_ok "Set up MariaDB"
|
||||||
|
|
||||||
msg_info "Installing ProjectSend"
|
msg_info "Installing ProjectSend"
|
||||||
mv /opt/projectsend/includes/sys.config.sample.php /opt/projectsend/includes/sys.config.php
|
mv /opt/projectsend/includes/sys.config.sample.php /opt/projectsend/includes/sys.config.php
|
||||||
chown -R www-data:www-data /opt/projectsend
|
chown -R www-data:www-data /opt/projectsend
|
||||||
chmod -R 775 /opt/projectsend
|
chmod -R 775 /opt/projectsend
|
||||||
chmod 644 /opt/projectsend/includes/sys.config.php
|
chmod 644 /opt/projectsend/includes/sys.config.php
|
||||||
sed -i -e "s/\(define('DB_NAME', \).*/\1'$MARIADB_DB_NAME');/" \
|
sed -i -e "s/\(define('DB_NAME', \).*/\1'$DB_NAME');/" \
|
||||||
-e "s/\(define('DB_USER', \).*/\1'$MARIADB_DB_USER');/" \
|
-e "s/\(define('DB_USER', \).*/\1'$DB_USER');/" \
|
||||||
-e "s/\(define('DB_PASSWORD', \).*/\1'$MARIADB_DB_PASS');/" \
|
-e "s/\(define('DB_PASSWORD', \).*/\1'$DB_PASS');/" \
|
||||||
/opt/projectsend/includes/sys.config.php
|
/opt/projectsend/includes/sys.config.php
|
||||||
sed -i -e "s/^\(memory_limit = \).*/\1 256M/" \
|
sed -i -e "s/^\(memory_limit = \).*/\1 256M/" \
|
||||||
-e "s/^\(post_max_size = \).*/\1 256M/" \
|
-e "s/^\(post_max_size = \).*/\1 256M/" \
|
||||||
|
|||||||
@ -17,7 +17,9 @@ fetch_and_deploy_gh_release "prom-paperless-exp" "hansmi/prometheus-paperless-ex
|
|||||||
|
|
||||||
msg_info "Configuring Prometheus Paperless NGX Exporter"
|
msg_info "Configuring Prometheus Paperless NGX Exporter"
|
||||||
mkdir -p /etc/prometheus-paperless-ngx-exporter
|
mkdir -p /etc/prometheus-paperless-ngx-exporter
|
||||||
echo "SECRET_AUTH_TOKEN" >/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file
|
cat <<EOF >/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file
|
||||||
|
SECRET_AUTH_TOKEN
|
||||||
|
EOF
|
||||||
msg_ok "Configured Prometheus Paperless NGX Exporter"
|
msg_ok "Configured Prometheus Paperless NGX Exporter"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@ -27,7 +27,7 @@ msg_ok "Configured Recyclarr"
|
|||||||
msg_info "Setting up Daily Sync Cron"
|
msg_info "Setting up Daily Sync Cron"
|
||||||
cat <<EOF >/etc/cron.d/recyclarr
|
cat <<EOF >/etc/cron.d/recyclarr
|
||||||
# Run recyclarr sync daily
|
# Run recyclarr sync daily
|
||||||
@daily root /usr/local/bin/recyclarr sync >> /root/.config/recyclarr/sync.log 2>&1
|
@daily root recyclarr sync >> /root/.config/recyclarr/sync.log 2>&1
|
||||||
EOF
|
EOF
|
||||||
chmod 644 /etc/cron.d/recyclarr
|
chmod 644 /etc/cron.d/recyclarr
|
||||||
msg_ok "Setup Daily Sync Cron"
|
msg_ok "Setup Daily Sync Cron"
|
||||||
|
|||||||
@ -14,17 +14,20 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y git
|
$STD apt install -y \
|
||||||
|
git \
|
||||||
|
pip \
|
||||||
|
python3 \
|
||||||
|
python3-dev \
|
||||||
|
python3-pip
|
||||||
|
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
PYTHON_VERSION="3.13" setup_uv
|
|
||||||
fetch_and_deploy_gh_release "Tautulli" "Tautulli/Tautulli" "tarball"
|
|
||||||
|
|
||||||
msg_info "Installing Tautulli"
|
msg_info "Installing Tautulli"
|
||||||
cd /opt/Tautulli
|
cd /opt
|
||||||
uv venv -q
|
$STD git clone https://github.com/Tautulli/Tautulli.git
|
||||||
uv pip install -q -r requirements.txt
|
$STD pip install -q -r /opt/Tautulli/requirements.txt
|
||||||
uv pip install -q pyopenssl
|
$STD pip install pyopenssl
|
||||||
msg_ok "Installed Tautulli"
|
msg_ok "Installed Tautulli"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
@ -38,7 +41,7 @@ WorkingDirectory=/opt/Tautulli/
|
|||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
Type=simple
|
Type=simple
|
||||||
ExecStart=/opt/Tautulli/.venv/bin/python3 /opt/Tautulli/Tautulli.py
|
ExecStart=/usr/bin/python3 /opt/Tautulli/Tautulli.py
|
||||||
KillSignal=SIGINT
|
KillSignal=SIGINT
|
||||||
TimeoutStopSec=20
|
TimeoutStopSec=20
|
||||||
SyslogIdentifier=tautulli
|
SyslogIdentifier=tautulli
|
||||||
|
|||||||
@ -3743,9 +3743,12 @@ create_lxc_container() {
|
|||||||
|
|
||||||
msg_info "Searching for template '$TEMPLATE_SEARCH'"
|
msg_info "Searching for template '$TEMPLATE_SEARCH'"
|
||||||
|
|
||||||
|
# Build regex patterns outside awk/grep for clarity
|
||||||
|
SEARCH_PATTERN="^${TEMPLATE_SEARCH}"
|
||||||
|
|
||||||
mapfile -t LOCAL_TEMPLATES < <(
|
mapfile -t LOCAL_TEMPLATES < <(
|
||||||
pveam list "$TEMPLATE_STORAGE" 2>/dev/null |
|
pveam list "$TEMPLATE_STORAGE" 2>/dev/null |
|
||||||
awk -v search="${TEMPLATE_SEARCH}" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
|
awk -v search="${SEARCH_PATTERN}" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
|
||||||
sed 's|.*/||' | sort -t - -k 2 -V
|
sed 's|.*/||' | sort -t - -k 2 -V
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -3754,7 +3757,7 @@ create_lxc_container() {
|
|||||||
msg_ok "Template search completed"
|
msg_ok "Template search completed"
|
||||||
|
|
||||||
set +u
|
set +u
|
||||||
mapfile -t ONLINE_TEMPLATES < <(pveam available -section system 2>/dev/null | grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' | awk '{print $2}' | grep -E "^${TEMPLATE_SEARCH}.*${TEMPLATE_PATTERN}" | sort -t - -k 2 -V 2>/dev/null || true)
|
mapfile -t ONLINE_TEMPLATES < <(pveam available -section system 2>/dev/null | grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' | awk '{print $2}' | grep -E "${SEARCH_PATTERN}.*${TEMPLATE_PATTERN}" | sort -t - -k 2 -V 2>/dev/null || true)
|
||||||
set -u
|
set -u
|
||||||
|
|
||||||
ONLINE_TEMPLATE=""
|
ONLINE_TEMPLATE=""
|
||||||
@ -3803,12 +3806,13 @@ create_lxc_container() {
|
|||||||
if [[ "$choice" =~ ^[0-9]+$ ]] && [[ "$choice" -ge 1 ]] && [[ "$choice" -le ${#AVAILABLE_VERSIONS[@]} ]]; then
|
if [[ "$choice" =~ ^[0-9]+$ ]] && [[ "$choice" -ge 1 ]] && [[ "$choice" -le ${#AVAILABLE_VERSIONS[@]} ]]; then
|
||||||
PCT_OSVERSION="${AVAILABLE_VERSIONS[$((choice - 1))]}"
|
PCT_OSVERSION="${AVAILABLE_VERSIONS[$((choice - 1))]}"
|
||||||
TEMPLATE_SEARCH="${PCT_OSTYPE}-${PCT_OSVERSION}"
|
TEMPLATE_SEARCH="${PCT_OSTYPE}-${PCT_OSVERSION}"
|
||||||
|
SEARCH_PATTERN="^${TEMPLATE_SEARCH}-"
|
||||||
|
|
||||||
mapfile -t ONLINE_TEMPLATES < <(
|
mapfile -t ONLINE_TEMPLATES < <(
|
||||||
pveam available -section system 2>/dev/null |
|
pveam available -section system 2>/dev/null |
|
||||||
grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' |
|
grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' |
|
||||||
awk '{print $2}' |
|
awk -F'\t' '{print $1}' |
|
||||||
grep -E "^${TEMPLATE_SEARCH}-.*${TEMPLATE_PATTERN}" |
|
grep -E "${SEARCH_PATTERN}.*${TEMPLATE_PATTERN}" |
|
||||||
sort -t - -k 2 -V 2>/dev/null || true
|
sort -t - -k 2 -V 2>/dev/null || true
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -3869,17 +3873,18 @@ create_lxc_container() {
|
|||||||
|
|
||||||
# Retry template search with new version
|
# Retry template search with new version
|
||||||
TEMPLATE_SEARCH="${PCT_OSTYPE}-${PCT_OSVERSION:-}"
|
TEMPLATE_SEARCH="${PCT_OSTYPE}-${PCT_OSVERSION:-}"
|
||||||
|
SEARCH_PATTERN="^${TEMPLATE_SEARCH}-"
|
||||||
|
|
||||||
mapfile -t LOCAL_TEMPLATES < <(
|
mapfile -t LOCAL_TEMPLATES < <(
|
||||||
pveam list "$TEMPLATE_STORAGE" 2>/dev/null |
|
pveam list "$TEMPLATE_STORAGE" 2>/dev/null |
|
||||||
awk -v search="${TEMPLATE_SEARCH}-" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
|
awk -v search="${SEARCH_PATTERN}" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
|
||||||
sed 's|.*/||' | sort -t - -k 2 -V
|
sed 's|.*/||' | sort -t - -k 2 -V
|
||||||
)
|
)
|
||||||
mapfile -t ONLINE_TEMPLATES < <(
|
mapfile -t ONLINE_TEMPLATES < <(
|
||||||
pveam available -section system 2>/dev/null |
|
pveam available -section system 2>/dev/null |
|
||||||
grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' |
|
grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' |
|
||||||
awk '{print $2}' |
|
awk -F'\t' '{print $1}' |
|
||||||
grep -E "^${TEMPLATE_SEARCH}-.*${TEMPLATE_PATTERN}" |
|
grep -E "${SEARCH_PATTERN}.*${TEMPLATE_PATTERN}" |
|
||||||
sort -t - -k 2 -V 2>/dev/null || true
|
sort -t - -k 2 -V 2>/dev/null || true
|
||||||
)
|
)
|
||||||
ONLINE_TEMPLATE=""
|
ONLINE_TEMPLATE=""
|
||||||
|
|||||||
@ -12,8 +12,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
# Enable error handling
|
# Enable error handling
|
||||||
set -Eeuo pipefail
|
set -Eeuo pipefail
|
||||||
trap 'error_handler' ERR
|
trap 'error_handler' ERR
|
||||||
load_functions
|
|
||||||
|
|
||||||
|
load_functions
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# CONFIGURATION
|
# CONFIGURATION
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
@ -22,6 +22,9 @@ APP="pihole-exporter"
|
|||||||
APP_TYPE="tools"
|
APP_TYPE="tools"
|
||||||
INSTALL_PATH="/opt/pihole-exporter"
|
INSTALL_PATH="/opt/pihole-exporter"
|
||||||
CONFIG_PATH="/opt/pihole-exporter.env"
|
CONFIG_PATH="/opt/pihole-exporter.env"
|
||||||
|
header_info
|
||||||
|
ensure_usr_local_bin_persist
|
||||||
|
get_current_ip &>/dev/null
|
||||||
|
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# OS DETECTION
|
# OS DETECTION
|
||||||
@ -183,7 +186,7 @@ UPDATEEOF
|
|||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
msg_ok "Pihole-Exporter installed successfully"
|
msg_ok "Pihole-Exporter installed successfully"
|
||||||
msg_ok "Metrics: ${BL}http://${LOCAL_IP}:9617/metrics${CL}"
|
msg_ok "Metrics: ${BL}http://${CURRENT_IP}:9617/metrics${CL}"
|
||||||
msg_ok "Config: ${BL}${CONFIG_PATH}${CL}"
|
msg_ok "Config: ${BL}${CONFIG_PATH}${CL}"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,7 +195,7 @@ UPDATEEOF
|
|||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
header_info
|
header_info
|
||||||
ensure_usr_local_bin_persist
|
ensure_usr_local_bin_persist
|
||||||
import_local_ip
|
get_current_ip &>/dev/null
|
||||||
|
|
||||||
# Handle type=update (called from update script)
|
# Handle type=update (called from update script)
|
||||||
if [[ "${type:-}" == "update" ]]; then
|
if [[ "${type:-}" == "update" ]]; then
|
||||||
|
|||||||
@ -12,8 +12,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
# Enable error handling
|
# Enable error handling
|
||||||
set -Eeuo pipefail
|
set -Eeuo pipefail
|
||||||
trap 'error_handler' ERR
|
trap 'error_handler' ERR
|
||||||
load_functions
|
|
||||||
|
|
||||||
|
load_functions
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# CONFIGURATION
|
# CONFIGURATION
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
@ -22,6 +22,8 @@ APP="qbittorrent-exporter"
|
|||||||
APP_TYPE="tools"
|
APP_TYPE="tools"
|
||||||
INSTALL_PATH="/opt/qbittorrent-exporter"
|
INSTALL_PATH="/opt/qbittorrent-exporter"
|
||||||
CONFIG_PATH="/opt/qbittorrent-exporter.env"
|
CONFIG_PATH="/opt/qbittorrent-exporter.env"
|
||||||
|
header_info
|
||||||
|
ensure_usr_local_bin_persist
|
||||||
|
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# OS DETECTION
|
# OS DETECTION
|
||||||
|
|||||||
Reference in New Issue
Block a user