mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-12-25 00:16:24 +01:00
Compare commits
67 Commits
docs/updat
...
CrazyWolf1
| Author | SHA1 | Date | |
|---|---|---|---|
| 80b7901ff0 | |||
| 978f2a36a5 | |||
| a6d05ae5e6 | |||
| e6ca8a646d | |||
| 4e417dbdda | |||
| 5a230837d3 | |||
| 23e3be00f0 | |||
| c074d3f567 | |||
| 12037c8468 | |||
| 1a5c7680ee | |||
| 2934b10415 | |||
| 133e1484ad | |||
| b22265047c | |||
| 9b728ee2e0 | |||
| bf51483235 | |||
| f1fc6b0298 | |||
| 4a878169be | |||
| f1c6f573aa | |||
| 920a170c1e | |||
| 63e883f9ea | |||
| 733821bfce | |||
| 7a44080eda | |||
| 5730506c03 | |||
| ba06d13598 | |||
| c0f4ac5750 | |||
| 36391bfc1e | |||
| 509ea946a6 | |||
| 489b78aaf3 | |||
| 261f746ff1 | |||
| 1a7da4bc91 | |||
| 69f81cec04 | |||
| cca6521b62 | |||
| 0cd82a058c | |||
| 0d3e872c7c | |||
| 97f74fd9dd | |||
| 42f32804ba | |||
| b6026af8f7 | |||
| 5dc05ce79f | |||
| 85d5693e1a | |||
| 8e8ae9d992 | |||
| 4da54f1593 | |||
| d6ef21c077 | |||
| 92ff5f60ff | |||
| 3953fa1e25 | |||
| 2acac97417 | |||
| 6e640f8eb6 | |||
| 2478aa84e8 | |||
| f02e25182b | |||
| 94d12ff1aa | |||
| f6f4c3411c | |||
| e819bf69f2 | |||
| d76150d9a3 | |||
| 931dbd8c9f | |||
| eb0486a698 | |||
| ae28705178 | |||
| 8d713edce2 | |||
| 9c27a28e1f | |||
| 0f75e9d31d | |||
| 889116c82d | |||
| b5f98ce189 | |||
| b11101a5c2 | |||
| 33ef33c833 | |||
| 08cbeea4a9 | |||
| 65606eec1c | |||
| ebb8b098dd | |||
| 73b2dbb3b7 | |||
| e3ff6bfbbf |
80
CHANGELOG.md
80
CHANGELOG.md
@ -10,17 +10,95 @@
|
||||
> [!CAUTION]
|
||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||
|
||||
## 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))
|
||||
|
||||
### ❔ 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
|
||||
|
||||
### 🚀 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
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- InvoiceNinja: add chromium dependencies for PDF generation [@MickLesk](https://github.com/MickLesk) ([#10230](https://github.com/community-scripts/ProxmoxVE/pull/10230))
|
||||
- MediaManager) use npm install [@MickLesk](https://github.com/MickLesk) ([#10228](https://github.com/community-scripts/ProxmoxVE/pull/10228))
|
||||
- Kometa: Fix update procedure [@tremor021](https://github.com/tremor021) ([#10217](https://github.com/community-scripts/ProxmoxVE/pull/10217))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- refactor: reitti: v3.0.0 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10196](https://github.com/community-scripts/ProxmoxVE/pull/10196))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func - hwaccel: skip setup without GPU passthrough and fix Ubuntu AMD firmware [@MickLesk](https://github.com/MickLesk) ([#10225](https://github.com/community-scripts/ProxmoxVE/pull/10225))
|
||||
|
||||
### 📚 Documentation
|
||||
|
||||
- contribution docs: update templates with modern patterns [@MickLesk](https://github.com/MickLesk) ([#10227](https://github.com/community-scripts/ProxmoxVE/pull/10227))
|
||||
|
||||
### ❔ Uncategorized
|
||||
|
||||
- Invoice ninja [@DragoQC](https://github.com/DragoQC) ([#10223](https://github.com/community-scripts/ProxmoxVE/pull/10223))
|
||||
- InvoiceNinja: switch category [@DragoQC](https://github.com/DragoQC) ([#10223](https://github.com/community-scripts/ProxmoxVE/pull/10223))
|
||||
|
||||
## 2025-12-21
|
||||
|
||||
|
||||
25
ct/beszel.sh
25
ct/beszel.sh
@ -27,19 +27,22 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop beszel-hub
|
||||
msg_info "Stopped Service"
|
||||
|
||||
msg_info "Updating $APP"
|
||||
$STD /opt/beszel/beszel update
|
||||
sleep 2 && chmod +x /opt/beszel/beszel
|
||||
msg_ok "Updated $APP"
|
||||
if check_for_gh_release "beszel" "henrygd/beszel"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop beszel-hub
|
||||
msg_info "Stopped Service"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start beszel-hub
|
||||
msg_ok "Successfully started $APP"
|
||||
msg_ok "Updated successfully!"
|
||||
msg_info "Updating Beszel"
|
||||
$STD /opt/beszel/beszel update
|
||||
sleep 2 && chmod +x /opt/beszel/beszel
|
||||
msg_ok "Updated Beszel"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start beszel-hub
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-10}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@ -44,6 +44,14 @@ function update_script() {
|
||||
rm -rf forgejo-$RELEASE-linux-amd64
|
||||
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"
|
||||
systemctl start forgejo
|
||||
msg_ok "Started Service"
|
||||
|
||||
@ -44,7 +44,7 @@ function update_script() {
|
||||
export PUBLIC_API_URL=""
|
||||
export BASE_PATH="/web"
|
||||
cd /opt/mediamanager/web
|
||||
$STD npm ci --no-fund --no-audit
|
||||
$STD npm install --no-fund --no-audit
|
||||
$STD npm run build
|
||||
rm -rf "$FRONTEND_FILES_DIR"/build
|
||||
cp -r build "$FRONTEND_FILES_DIR"
|
||||
|
||||
@ -34,7 +34,7 @@ function update_script() {
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
cp /opt/openarchiver/.env /opt/openarchiver.env
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball" "latest" "/opt/openarchiver"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball"
|
||||
mv /opt/openarchiver.env /opt/openarchiver/.env
|
||||
|
||||
msg_info "Updating Open Archiver"
|
||||
|
||||
@ -27,18 +27,19 @@ function update_script() {
|
||||
msg_error "No Paperless-GPT installation found!"
|
||||
exit
|
||||
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 [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
|
||||
if check_for_gh_release "paperless-gpt" "icereed/paperless-gpt"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop paperless-gpt
|
||||
msg_ok "Service Stopped"
|
||||
|
||||
msg_info "Updating Paperless-GPT to ${RELEASE}"
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://github.com/icereed/paperless-gpt/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||
tar zxf $temp_file
|
||||
rm -rf /opt/paperless-gpt
|
||||
mv paperless-gpt-${RELEASE} /opt/paperless-gpt
|
||||
if should_update_tool "node" "24"; then
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
fi
|
||||
|
||||
fetch_and_deploy_gh_release "paperless-gpt" "icereed/paperless-gpt" "tarball"
|
||||
|
||||
msg_info "Updating Paperless-GPT"
|
||||
cd /opt/paperless-gpt/web-app
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
@ -47,16 +48,12 @@ function update_script() {
|
||||
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 paperless-gpt .
|
||||
rm -f $temp_file
|
||||
echo "${RELEASE}" >"/opt/paperless-gpt_version.txt"
|
||||
msg_ok "Updated Paperless-GPT to ${RELEASE}"
|
||||
msg_ok "Updated Paperless-GPT"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start paperless-gpt
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
@ -27,8 +27,9 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
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) }')
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
|
||||
RELEASE=$(get_latest_github_release "Part-DB/Part-DB-server")
|
||||
if check_for_gh_release "partdb" "Part-DB/Part-DB-server"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop apache2
|
||||
msg_ok "Stopped Service"
|
||||
@ -36,7 +37,7 @@ function update_script() {
|
||||
msg_info "Updating $APP to v${RELEASE}"
|
||||
cd /opt
|
||||
mv /opt/partdb/ /opt/partdb-backup
|
||||
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")
|
||||
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"
|
||||
mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb
|
||||
|
||||
@ -54,15 +55,13 @@ function update_script() {
|
||||
chown -R www-data:www-data /opt/partdb
|
||||
rm -r "/opt/v${RELEASE}.zip"
|
||||
rm -r /opt/partdb-backup
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
echo "${RELEASE}" >~/.partdb
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start apache2
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
@ -37,7 +37,7 @@ function update_script() {
|
||||
if [ "$UPD" == "1" ]; then
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
$STD apt upgrade -y
|
||||
msg_ok "Updated successfully!"
|
||||
|
||||
msg_info "Updating All Containers\n"
|
||||
@ -65,7 +65,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
if [ "$UPD" == "3" ]; then
|
||||
IP=$(hostname -I | awk '{print $1}')
|
||||
import_local_ip
|
||||
msg_info "Installing FileBrowser"
|
||||
$STD curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
|
||||
$STD filebrowser config init -a '0.0.0.0'
|
||||
@ -74,23 +74,25 @@ function update_script() {
|
||||
msg_ok "Installed FileBrowser"
|
||||
|
||||
msg_info "Creating Service"
|
||||
service_path="/etc/systemd/system/filebrowser.service"
|
||||
echo "[Unit]
|
||||
Description=Filebrowser
|
||||
After=network-online.target
|
||||
[Service]
|
||||
User=root
|
||||
WorkingDirectory=/root/
|
||||
ExecStart=/usr/local/bin/filebrowser -r /
|
||||
[Install]
|
||||
WantedBy=default.target" >$service_path
|
||||
cat <<EOF >/etc/systemd/system/filebrowser.service
|
||||
[Unit]
|
||||
Description=Filebrowser
|
||||
After=network-online.target
|
||||
|
||||
$STD systemctl enable --now filebrowser
|
||||
[Service]
|
||||
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 "Completed Successfully!\n"
|
||||
echo -e "FileBrowser should be reachable by going to the following URL.
|
||||
${BL}http://$IP:8080${CL} admin|helper-scripts.com\n"
|
||||
${BL}http://$LOCAL_IP:8080${CL} admin|helper-scripts.com\n"
|
||||
exit
|
||||
fi
|
||||
if [ "$UPD" == "4" ]; then
|
||||
@ -99,7 +101,6 @@ function update_script() {
|
||||
msg_ok "Removed ALL Unused Images"
|
||||
exit
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
@ -29,7 +29,7 @@ function update_script() {
|
||||
fi
|
||||
msg_info "Updating ${APP} LXC"
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
$STD apt upgrade -y
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
@ -48,7 +48,6 @@ function update_script() {
|
||||
msg_info "Starting Service"
|
||||
systemctl start apache2
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
33
ct/reitti.sh
33
ct/reitti.sh
@ -27,6 +27,37 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ ! -d /var/cache/nginx/tiles ]; then
|
||||
msg_info "Installing Nginx Tile Cache"
|
||||
mkdir -p /var/cache/nginx/tiles
|
||||
$STD apt install -y nginx
|
||||
cat <<EOF >/etc/nginx/nginx.conf
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
http {
|
||||
proxy_cache_path /var/cache/nginx/tiles levels=1:2 keys_zone=tiles:10m max_size=1g inactive=30d use_temp_path=off;
|
||||
server {
|
||||
listen 80;
|
||||
location / {
|
||||
proxy_pass https://tile.openstreetmap.org/;
|
||||
proxy_set_header Host tile.openstreetmap.org;
|
||||
proxy_set_header User-Agent "Reitti/1.0";
|
||||
proxy_cache tiles;
|
||||
proxy_cache_valid 200 30d;
|
||||
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
chown -R www-data:www-data /var/cache/nginx/tiles
|
||||
systemctl restart nginx
|
||||
echo "reitti.ui.tiles.cache.url=http://127.0.0.1" >> /opt/reitti/application.properties
|
||||
systemctl restart reitti
|
||||
msg_info "Installed Nginx Tile Cache"
|
||||
fi
|
||||
|
||||
if check_for_gh_release "reitti" "dedicatedcode/reitti"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop reitti
|
||||
@ -67,4 +98,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||
|
||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
|
||||
@ -27,7 +27,11 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
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
|
||||
$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
|
||||
@ -42,7 +46,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
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"
|
||||
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/
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
"ram": 2048,
|
||||
"hdd": 10,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@ -31,5 +31,10 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
"notes": [
|
||||
{
|
||||
"text": "Type `/opt/pocketbase/pocketbase superuser create YOUREMAIL PASSWORD` to create your superuser account.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -34,11 +34,11 @@
|
||||
"notes": [
|
||||
{
|
||||
"type": "warning",
|
||||
"content": "Configure your Radarr/Sonarr instances in `/root/.config/recyclarr/recyclarr.yml` before the first sync."
|
||||
"text": "Configure your Radarr/Sonarr instances in `/root/.config/recyclarr/recyclarr.yml` before the first sync."
|
||||
},
|
||||
{
|
||||
"type": "info",
|
||||
"content": "Automatic daily sync is configured via `/etc/cron.d/recyclarr`. Sync logs are saved to `/root/.config/recyclarr/sync.log`."
|
||||
"text": "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",
|
||||
"website": "https://tautulli.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/tautulli.webp",
|
||||
"config_path": "",
|
||||
"config_path": "/opt/Tautulli/config.ini",
|
||||
"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": [
|
||||
{
|
||||
@ -23,7 +23,7 @@
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@ -1,13 +1,228 @@
|
||||
[
|
||||
{
|
||||
"name": "passbolt/passbolt_api",
|
||||
"version": "v5.8.0",
|
||||
"date": "2025-12-22T10:12:48Z"
|
||||
"name": "fuma-nama/fumadocs",
|
||||
"version": "fumadocs-ui@16.4.0",
|
||||
"date": "2025-12-24T10:16:33Z"
|
||||
},
|
||||
{
|
||||
"name": "rcourtman/Pulse",
|
||||
"version": "v5.0.0",
|
||||
"date": "2025-12-23T21:47:01Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.24.521",
|
||||
"date": "2025-12-24T05:52:23Z"
|
||||
},
|
||||
{
|
||||
"name": "openobserve/openobserve",
|
||||
"version": "v0.40.0-rc1",
|
||||
"date": "2025-12-24T03:37:37Z"
|
||||
},
|
||||
{
|
||||
"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": "jeedom/core",
|
||||
"version": "4.5.1",
|
||||
"date": "2025-12-24T00:27:08Z"
|
||||
},
|
||||
{
|
||||
"name": "steveiliop56/tinyauth",
|
||||
"version": "v4.1.0",
|
||||
"date": "2025-11-23T12:13:34Z"
|
||||
},
|
||||
{
|
||||
"name": "Dolibarr/dolibarr",
|
||||
"version": "22.0.4",
|
||||
"date": "2025-12-23T23:58:16Z"
|
||||
},
|
||||
{
|
||||
"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": "fosrl/pangolin",
|
||||
"version": "1.14.0-s.2",
|
||||
"date": "2025-12-23T20:24:26Z"
|
||||
},
|
||||
{
|
||||
"name": "scanopy/scanopy",
|
||||
"version": "v0.12.6",
|
||||
"date": "2025-12-23T19:24:15Z"
|
||||
},
|
||||
{
|
||||
"name": "metabase/metabase",
|
||||
"version": "v0.58.x",
|
||||
"date": "2025-12-23T19:01:23Z"
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"version": "v1.6.11",
|
||||
"date": "2025-12-22T09:14:20Z"
|
||||
"date": "2025-12-23T10:40:42Z"
|
||||
},
|
||||
{
|
||||
"name": "project-zot/zot",
|
||||
"version": "v2.1.13",
|
||||
"date": "2025-12-23T10:14:48Z"
|
||||
},
|
||||
{
|
||||
"name": "pommee/goaway",
|
||||
"version": "v0.63.2",
|
||||
"date": "2025-12-23T09:32:55Z"
|
||||
},
|
||||
{
|
||||
"name": "syncthing/syncthing",
|
||||
"version": "v2.0.12",
|
||||
"date": "2025-12-02T08:11:24Z"
|
||||
},
|
||||
{
|
||||
"name": "theonedev/onedev",
|
||||
"version": "v13.1.6",
|
||||
"date": "2025-12-23T03:13:32Z"
|
||||
},
|
||||
{
|
||||
"name": "linkwarden/linkwarden",
|
||||
"version": "v2.13.3",
|
||||
"date": "2025-12-23T01:18:58Z"
|
||||
},
|
||||
{
|
||||
"name": "Dispatcharr/Dispatcharr",
|
||||
"version": "v0.15.1",
|
||||
"date": "2025-12-22T23:01:26Z"
|
||||
},
|
||||
{
|
||||
"name": "sabnzbd/sabnzbd",
|
||||
"version": "4.5.5",
|
||||
"date": "2025-10-24T11:12:22Z"
|
||||
},
|
||||
{
|
||||
"name": "Sonarr/Sonarr",
|
||||
"version": "v4.0.16.2944",
|
||||
"date": "2025-11-05T01:56:48Z"
|
||||
},
|
||||
{
|
||||
"name": "gtsteffaniak/filebrowser",
|
||||
"version": "v1.1.0-stable",
|
||||
"date": "2025-12-22T20:30:40Z"
|
||||
},
|
||||
{
|
||||
"name": "maxdorninger/MediaManager",
|
||||
"version": "v1.11.1",
|
||||
"date": "2025-12-22T18:15:40Z"
|
||||
},
|
||||
{
|
||||
"name": "BerriAI/litellm",
|
||||
"version": "v1.80.11.rc.1",
|
||||
"date": "2025-12-22T16:29:28Z"
|
||||
},
|
||||
{
|
||||
"name": "meilisearch/meilisearch",
|
||||
"version": "latest",
|
||||
"date": "2025-12-22T16:21:19Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.30.25",
|
||||
"date": "2025-12-22T16:03:19Z"
|
||||
},
|
||||
{
|
||||
"name": "chrisbenincasa/tunarr",
|
||||
"version": "v1.0.9",
|
||||
"date": "2025-12-22T15:55:49Z"
|
||||
},
|
||||
{
|
||||
"name": "openhab/openhab-core",
|
||||
"version": "5.1.0",
|
||||
"date": "2025-12-22T14:59:23Z"
|
||||
},
|
||||
{
|
||||
"name": "chrisvel/tududi",
|
||||
"version": "v0.88.2",
|
||||
"date": "2025-12-22T14:36:59Z"
|
||||
},
|
||||
{
|
||||
"name": "passbolt/passbolt_api",
|
||||
"version": "v5.8.0",
|
||||
"date": "2025-12-22T10:12:48Z"
|
||||
},
|
||||
{
|
||||
"name": "morpheus65535/bazarr",
|
||||
@ -19,66 +234,11 @@
|
||||
"version": "v0.6.43",
|
||||
"date": "2025-12-22T06:03:45Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.24.504",
|
||||
"date": "2025-12-22T05:55:56Z"
|
||||
},
|
||||
{
|
||||
"name": "firefly-iii/firefly-iii",
|
||||
"version": "v6.4.14",
|
||||
"date": "2025-12-16T05:42:34Z"
|
||||
},
|
||||
{
|
||||
"name": "fosrl/pangolin",
|
||||
"version": "1.14.0-rc.0",
|
||||
"date": "2025-12-22T02:49:19Z"
|
||||
},
|
||||
{
|
||||
"name": "pommee/goaway",
|
||||
"version": "v0.63.0",
|
||||
"date": "2025-12-22T02:24:44Z"
|
||||
},
|
||||
{
|
||||
"name": "jeedom/core",
|
||||
"version": "4.5.1",
|
||||
"date": "2025-12-22T00:27:05Z"
|
||||
},
|
||||
{
|
||||
"name": "steveiliop56/tinyauth",
|
||||
"version": "v4.1.0",
|
||||
"date": "2025-11-23T12:13: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": "project-zot/zot",
|
||||
"version": "v2.1.12",
|
||||
"date": "2025-12-21T20:45:14Z"
|
||||
},
|
||||
{
|
||||
"name": "openhab/openhab-core",
|
||||
"version": "5.1.0.RC3",
|
||||
"date": "2025-12-21T20:04:16Z"
|
||||
},
|
||||
{
|
||||
"name": "maxdorninger/MediaManager",
|
||||
"version": "v1.11.0",
|
||||
"date": "2025-12-21T19:58:49Z"
|
||||
},
|
||||
{
|
||||
"name": "scanopy/scanopy",
|
||||
"version": "v0.12.5",
|
||||
"date": "2025-12-21T19:24:42Z"
|
||||
},
|
||||
{
|
||||
"name": "benjaminjonard/koillection",
|
||||
"version": "1.7.1",
|
||||
@ -94,26 +254,11 @@
|
||||
"version": "v5.1.1",
|
||||
"date": "2025-12-21T12:59:32Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.30.24",
|
||||
"date": "2025-12-21T10:26:35Z"
|
||||
},
|
||||
{
|
||||
"name": "hyperion-project/hyperion.ng",
|
||||
"version": "2.1.1",
|
||||
"date": "2025-06-14T17:45:06Z"
|
||||
},
|
||||
{
|
||||
"name": "pocketbase/pocketbase",
|
||||
"version": "v0.35.0",
|
||||
"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",
|
||||
"version": "v3.0.1",
|
||||
@ -129,11 +274,6 @@
|
||||
"version": "3.4.4",
|
||||
"date": "2025-12-20T22:12:02Z"
|
||||
},
|
||||
{
|
||||
"name": "gtsteffaniak/filebrowser",
|
||||
"version": "v1.2.0-experimental-sql-indexing-v3",
|
||||
"date": "2025-12-20T21:57:53Z"
|
||||
},
|
||||
{
|
||||
"name": "CyferShepard/Jellystat",
|
||||
"version": "1.1.7",
|
||||
@ -164,11 +304,6 @@
|
||||
"version": "2.0.2",
|
||||
"date": "2025-10-22T17:03:54Z"
|
||||
},
|
||||
{
|
||||
"name": "Dispatcharr/Dispatcharr",
|
||||
"version": "v0.15.0",
|
||||
"date": "2025-12-20T00:12:04Z"
|
||||
},
|
||||
{
|
||||
"name": "pelican-dev/panel",
|
||||
"version": "v1.0.0-beta30",
|
||||
@ -179,31 +314,16 @@
|
||||
"version": "v1.0.0-beta21",
|
||||
"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": "metabase/metabase",
|
||||
"version": "v0.58.x",
|
||||
"date": "2025-12-19T20:05:58Z"
|
||||
},
|
||||
{
|
||||
"name": "homarr-labs/homarr",
|
||||
"version": "v1.47.0",
|
||||
"date": "2025-12-19T19:42:50Z"
|
||||
},
|
||||
{
|
||||
"name": "BerriAI/litellm",
|
||||
"version": "v1.80.10.dev.1",
|
||||
"date": "2025-12-19T19:16:21Z"
|
||||
},
|
||||
{
|
||||
"name": "booklore-app/booklore",
|
||||
"version": "v1.15.0",
|
||||
@ -224,26 +344,11 @@
|
||||
"version": "v1.16.3",
|
||||
"date": "2025-12-19T17:45:42Z"
|
||||
},
|
||||
{
|
||||
"name": "esphome/esphome",
|
||||
"version": "2025.12.1",
|
||||
"date": "2025-12-19T15:53:08Z"
|
||||
},
|
||||
{
|
||||
"name": "immich-app/immich",
|
||||
"version": "v2.4.1",
|
||||
"date": "2025-12-19T15:50:12Z"
|
||||
},
|
||||
{
|
||||
"name": "openobserve/openobserve",
|
||||
"version": "v0.30.2",
|
||||
"date": "2025-12-19T15:18:53Z"
|
||||
},
|
||||
{
|
||||
"name": "nzbgetcom/nzbget",
|
||||
"version": "v25.4",
|
||||
"date": "2025-10-09T10:27:01Z"
|
||||
},
|
||||
{
|
||||
"name": "raydak-labs/configarr",
|
||||
"version": "v1.19.0",
|
||||
@ -251,8 +356,8 @@
|
||||
},
|
||||
{
|
||||
"name": "wazuh/wazuh",
|
||||
"version": "coverity-w51-4.14.2",
|
||||
"date": "2025-12-15T12:34:36Z"
|
||||
"version": "coverity-w52-4.14.2",
|
||||
"date": "2025-12-19T13:31:21Z"
|
||||
},
|
||||
{
|
||||
"name": "fccview/jotty",
|
||||
@ -269,11 +374,6 @@
|
||||
"version": "v15.0.0-dev",
|
||||
"date": "2025-12-19T11:43:47Z"
|
||||
},
|
||||
{
|
||||
"name": "meilisearch/meilisearch",
|
||||
"version": "prototype-v1.30.1-rebuild-hannoy-graph.1",
|
||||
"date": "2025-12-19T11:14:05Z"
|
||||
},
|
||||
{
|
||||
"name": "release-argus/Argus",
|
||||
"version": "0.28.3",
|
||||
@ -296,8 +396,8 @@
|
||||
},
|
||||
{
|
||||
"name": "javedh-dev/tracktor",
|
||||
"version": "1.0.1",
|
||||
"date": "2025-12-17T23:14:39Z"
|
||||
"version": "1.0.2",
|
||||
"date": "2025-12-19T02:43:42Z"
|
||||
},
|
||||
{
|
||||
"name": "mealie-recipes/mealie",
|
||||
@ -309,21 +409,11 @@
|
||||
"version": "v1.19.5",
|
||||
"date": "2025-09-27T20:59:46Z"
|
||||
},
|
||||
{
|
||||
"name": "chrisbenincasa/tunarr",
|
||||
"version": "v1.0.7",
|
||||
"date": "2025-12-18T21:27:26Z"
|
||||
},
|
||||
{
|
||||
"name": "Stirling-Tools/Stirling-PDF",
|
||||
"version": "v2.1.5",
|
||||
"date": "2025-12-18T20:48:01Z"
|
||||
},
|
||||
{
|
||||
"name": "rcourtman/Pulse",
|
||||
"version": "v4.36.2",
|
||||
"date": "2025-12-03T22:46:29Z"
|
||||
},
|
||||
{
|
||||
"name": "saltstack/salt",
|
||||
"version": "v3007.10",
|
||||
@ -354,21 +444,11 @@
|
||||
"version": "v2.20.3",
|
||||
"date": "2025-12-18T16:10:13Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@1.123.7",
|
||||
"date": "2025-12-17T14:01:25Z"
|
||||
},
|
||||
{
|
||||
"name": "docker/compose",
|
||||
"version": "v5.0.1",
|
||||
"date": "2025-12-18T14:22:38Z"
|
||||
},
|
||||
{
|
||||
"name": "coollabsio/coolify",
|
||||
"version": "v4.0.0-beta.458",
|
||||
"date": "2025-12-18T12:23:23Z"
|
||||
},
|
||||
{
|
||||
"name": "juanfont/headscale",
|
||||
"version": "v0.27.1",
|
||||
@ -389,16 +469,6 @@
|
||||
"version": "7.4.6",
|
||||
"date": "2025-12-18T07:00:26Z"
|
||||
},
|
||||
{
|
||||
"name": "chrisvel/tududi",
|
||||
"version": "v0.88.1",
|
||||
"date": "2025-12-18T05:01:07Z"
|
||||
},
|
||||
{
|
||||
"name": "comfyanonymous/ComfyUI",
|
||||
"version": "v0.5.1",
|
||||
"date": "2025-12-18T03:08:43Z"
|
||||
},
|
||||
{
|
||||
"name": "goauthentik/authentik",
|
||||
"version": "version/2025.10.3",
|
||||
@ -431,8 +501,8 @@
|
||||
},
|
||||
{
|
||||
"name": "bunkerity/bunkerweb",
|
||||
"version": "v1.6.6",
|
||||
"date": "2025-11-24T15:30:21Z"
|
||||
"version": "testing",
|
||||
"date": "2025-12-16T11:13:20Z"
|
||||
},
|
||||
{
|
||||
"name": "traefik/traefik",
|
||||
@ -474,36 +544,11 @@
|
||||
"version": "1.1.7",
|
||||
"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",
|
||||
"version": "v4.6.2",
|
||||
"date": "2025-12-16T17:54:19Z"
|
||||
},
|
||||
{
|
||||
"name": "jenkinsci/jenkins",
|
||||
"version": "jenkins-2.542",
|
||||
"date": "2025-12-16T13:49:44Z"
|
||||
},
|
||||
{
|
||||
"name": "prometheus/prometheus",
|
||||
"version": "v3.8.1",
|
||||
"date": "2025-12-16T09:59:22Z"
|
||||
},
|
||||
{
|
||||
"name": "sabnzbd/sabnzbd",
|
||||
"version": "4.5.5",
|
||||
"date": "2025-10-24T11:12:22Z"
|
||||
},
|
||||
{
|
||||
"name": "azukaar/Cosmos-Server",
|
||||
"version": "v0.19.0",
|
||||
@ -534,21 +579,11 @@
|
||||
"version": "v0.30.0",
|
||||
"date": "2025-12-15T17:23:59Z"
|
||||
},
|
||||
{
|
||||
"name": "danielbrendel/hortusfox-web",
|
||||
"version": "v5.6",
|
||||
"date": "2025-12-15T14:40:53Z"
|
||||
},
|
||||
{
|
||||
"name": "librenms/librenms",
|
||||
"version": "25.12.0",
|
||||
"date": "2025-12-15T14:06:00Z"
|
||||
},
|
||||
{
|
||||
"name": "endurain-project/endurain",
|
||||
"version": "v0.16.3",
|
||||
"date": "2025-12-15T12:56:50Z"
|
||||
},
|
||||
{
|
||||
"name": "LimeSurvey/LimeSurvey",
|
||||
"version": "6.16.2+251209",
|
||||
@ -659,11 +694,6 @@
|
||||
"version": "v0.26.2",
|
||||
"date": "2025-12-13T07:48:09Z"
|
||||
},
|
||||
{
|
||||
"name": "mongodb/mongo",
|
||||
"version": "r7.0.27",
|
||||
"date": "2025-12-12T20:54:32Z"
|
||||
},
|
||||
{
|
||||
"name": "node-red/node-red",
|
||||
"version": "4.1.2",
|
||||
@ -679,11 +709,6 @@
|
||||
"version": "v8.3.7",
|
||||
"date": "2025-12-12T09:13:40Z"
|
||||
},
|
||||
{
|
||||
"name": "theonedev/onedev",
|
||||
"version": "v13.1.5",
|
||||
"date": "2025-12-12T03:30:50Z"
|
||||
},
|
||||
{
|
||||
"name": "umami-software/umami",
|
||||
"version": "v3.0.3",
|
||||
@ -694,11 +719,6 @@
|
||||
"version": "0.43.1",
|
||||
"date": "2025-12-11T22:45:52Z"
|
||||
},
|
||||
{
|
||||
"name": "linkwarden/linkwarden",
|
||||
"version": "v2.13.2",
|
||||
"date": "2025-12-11T06:31:24Z"
|
||||
},
|
||||
{
|
||||
"name": "TwiN/gatus",
|
||||
"version": "v5.33.1",
|
||||
@ -914,11 +934,6 @@
|
||||
"version": "v6.2.4",
|
||||
"date": "2025-12-02T17:47:52Z"
|
||||
},
|
||||
{
|
||||
"name": "syncthing/syncthing",
|
||||
"version": "v2.0.12",
|
||||
"date": "2025-12-02T08:11:24Z"
|
||||
},
|
||||
{
|
||||
"name": "OliveTin/OliveTin",
|
||||
"version": "3000.7.0",
|
||||
@ -1024,11 +1039,6 @@
|
||||
"version": "release-1.24.2",
|
||||
"date": "2025-11-26T11:22:30Z"
|
||||
},
|
||||
{
|
||||
"name": "Dolibarr/dolibarr",
|
||||
"version": "22.0.3",
|
||||
"date": "2025-11-25T17:25:41Z"
|
||||
},
|
||||
{
|
||||
"name": "usememos/memos",
|
||||
"version": "v0.25.3",
|
||||
@ -1214,21 +1224,11 @@
|
||||
"version": "1.5.0",
|
||||
"date": "2025-11-05T11:10:20Z"
|
||||
},
|
||||
{
|
||||
"name": "SonarSource/sonarqube",
|
||||
"version": "25.11.0.114957",
|
||||
"date": "2025-11-05T10:26:59Z"
|
||||
},
|
||||
{
|
||||
"name": "nicolargo/glances",
|
||||
"version": "v4.4.1",
|
||||
"date": "2025-11-05T09:08:23Z"
|
||||
},
|
||||
{
|
||||
"name": "Sonarr/Sonarr",
|
||||
"version": "v4.0.16.2944",
|
||||
"date": "2025-11-05T01:56:48Z"
|
||||
},
|
||||
{
|
||||
"name": "cross-seed/cross-seed",
|
||||
"version": "v6.13.6",
|
||||
|
||||
@ -13,11 +13,7 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
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"
|
||||
fetch_and_deploy_gh_release "beszel" "henrygd/beszel" "prebuild" "latest" "/opt/beszel" "beszel_linux_amd64.tar.gz"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/beszel-hub.service
|
||||
|
||||
@ -50,7 +50,7 @@ Group=git
|
||||
WorkingDirectory=/var/lib/forgejo/
|
||||
ExecStart=/usr/local/bin/forgejo web --config /etc/forgejo/app.ini
|
||||
Restart=always
|
||||
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/forgejo
|
||||
Environment=USER=git HOME=/home/git FORGEJO_WORK_DIR=/var/lib/forgejo
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
@ -15,8 +15,22 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
nginx \
|
||||
supervisor
|
||||
nginx \
|
||||
supervisor \
|
||||
libnss3 \
|
||||
libatk1.0-0 \
|
||||
libatk-bridge2.0-0 \
|
||||
libcups2 \
|
||||
libdrm2 \
|
||||
libxkbcommon0 \
|
||||
libxcomposite1 \
|
||||
libxdamage1 \
|
||||
libxfixes3 \
|
||||
libxrandr2 \
|
||||
libgbm1 \
|
||||
libasound2 \
|
||||
libpango-1.0-0 \
|
||||
libcairo2
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_mariadb
|
||||
@ -75,6 +89,12 @@ chown -R www-data:www-data /opt/invoiceninja
|
||||
chmod -R 775 /opt/invoiceninja/storage /opt/invoiceninja/bootstrap/cache
|
||||
msg_ok "Configured InvoiceNinja"
|
||||
|
||||
msg_info "Downloading Chromium for PDF Generation"
|
||||
cd /opt/invoiceninja
|
||||
$STD ./vendor/bin/snappdf download
|
||||
chown -R www-data:www-data /opt/invoiceninja/vendor/beganovich/snappdf/versions
|
||||
msg_ok "Downloaded Chromium for PDF Generation"
|
||||
|
||||
msg_info "Setting up Database"
|
||||
cd /opt/invoiceninja
|
||||
$STD php artisan config:clear
|
||||
@ -83,6 +103,7 @@ $STD php artisan route:clear
|
||||
$STD php artisan view:clear
|
||||
$STD php artisan migrate --force
|
||||
$STD php artisan db:seed --force
|
||||
$STD php artisan ninja:post-update
|
||||
$STD php artisan optimize
|
||||
msg_ok "Set up Database"
|
||||
|
||||
|
||||
@ -49,7 +49,7 @@ export PUBLIC_VERSION=""
|
||||
export PUBLIC_API_URL=""
|
||||
export BASE_PATH="/web"
|
||||
cd /opt/mediamanager/web
|
||||
$STD npm ci --no-fund --no-audit
|
||||
$STD npm install --no-fund --no-audit
|
||||
$STD npm run build
|
||||
mkdir -p {"$MM_DIR"/web,"$MEDIA_DIR","$CONFIG_DIR"}
|
||||
cp -r build "$FRONTEND_FILES_DIR"
|
||||
|
||||
@ -19,28 +19,12 @@ msg_ok "Installed dependendencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
|
||||
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 "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball"
|
||||
JWT_KEY="$(openssl rand -hex 32)"
|
||||
SECRET_KEY="$(openssl rand -hex 32)"
|
||||
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"
|
||||
import_local_ip
|
||||
|
||||
msg_info "Configuring MeiliSearch"
|
||||
curl -fsSL https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -o /etc/meilisearch.toml
|
||||
@ -76,10 +60,10 @@ mkdir -p /opt/openarchiver-data
|
||||
cd /opt/openarchiver
|
||||
cp .env.example .env
|
||||
sed -i "s|^NODE_ENV=.*|NODE_ENV=production|g" /opt/openarchiver/.env
|
||||
sed -i "s|^POSTGRES_DB=.*|POSTGRES_DB=openarchiver_db|g" /opt/openarchiver/.env
|
||||
sed -i "s|^POSTGRES_USER=.*|POSTGRES_USER=openarchiver|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://openarchiver:$DB_PASS@localhost:5432/openarchiver_db\"|g" /opt/openarchiver/.env
|
||||
sed -i "s|^POSTGRES_DB=.*|POSTGRES_DB=$PG_DB_NAME|g" /opt/openarchiver/.env
|
||||
sed -i "s|^POSTGRES_USER=.*|POSTGRES_USER=$PG_DB_USER|g" /opt/openarchiver/.env
|
||||
sed -i "s|^POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$PG_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|^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|^REDIS_HOST=.*|REDIS_HOST=localhost|g" /opt/openarchiver/.env
|
||||
@ -88,7 +72,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|^ENCRYPTION_KEY=.*|ENCRYPTION_KEY=$SECRET_KEY|g" /opt/openarchiver/.env
|
||||
sed -i "s|^TIKA_URL=.*|TIKA_URL=|g" /opt/openarchiver/.env
|
||||
sed -i "s|^ORIGIN=.*|ORIGIN=http://$IP_ADDR:3000|g" /opt/openarchiver/.env
|
||||
sed -i "s|^ORIGIN=.*|ORIGIN=http://$LOCAL_IP:3000|g" /opt/openarchiver/.env
|
||||
$STD pnpm install --shamefully-hoist --frozen-lockfile --prod=false
|
||||
$STD pnpm run build:oss
|
||||
$STD pnpm db:migrate
|
||||
|
||||
@ -14,28 +14,14 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
apt-transport-https \
|
||||
ca-certificates
|
||||
$STD apt install -y apt-transport-https
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PG_VERSION="17" setup_postgresql
|
||||
|
||||
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)
|
||||
PG_DB_NAME="openproject" PG_DB_USER="openproject" setup_postgresql_db
|
||||
API_KEY=$(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 "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"
|
||||
echo "OpenProject API Key: $API_KEY" >>~/openproject.creds
|
||||
import_local_ip
|
||||
|
||||
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
|
||||
@ -48,7 +34,6 @@ $STD apt install -y openproject
|
||||
msg_ok "Installed OpenProject"
|
||||
|
||||
msg_info "Configuring OpenProject"
|
||||
IP_ADDR=$(hostname -I | cut -d' ' -f1)
|
||||
cat <<EOF >/etc/openproject/installer.dat
|
||||
openproject/edition default
|
||||
|
||||
@ -56,13 +41,13 @@ postgres/retry retry
|
||||
postgres/autoinstall reuse
|
||||
postgres/db_host 127.0.0.1
|
||||
postgres/db_port 5432
|
||||
postgres/db_username ${DB_USER}
|
||||
postgres/db_password ${DB_PASS}
|
||||
postgres/db_name ${DB_NAME}
|
||||
postgres/db_username ${PG_DB_USER}
|
||||
postgres/db_password ${PG_DB_PASS}
|
||||
postgres/db_name ${PG_DB_NAME}
|
||||
server/autoinstall install
|
||||
server/variant apache2
|
||||
|
||||
server/hostname ${IP_ADDR}
|
||||
server/hostname ${LOCAL_IP}
|
||||
server/server_path_prefix /openproject
|
||||
server/ssl no
|
||||
server/variant apache2
|
||||
@ -75,7 +60,6 @@ memcached/autoinstall install
|
||||
openproject/admin_email admin@example.net
|
||||
openproject/default_language en
|
||||
EOF
|
||||
|
||||
$STD sudo openproject configure
|
||||
msg_ok "Configured OpenProject"
|
||||
|
||||
|
||||
@ -16,11 +16,11 @@ update_os
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
redis-server \
|
||||
nginx \
|
||||
openssl
|
||||
nginx
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
fetch_and_deploy_gh_release "ots" "Luzifer/ots" "prebuild" "latest" "/opt/ots" "ots_linux_amd64.tgz"
|
||||
create_self_signed_cert
|
||||
|
||||
msg_info "Setup OTS"
|
||||
cat <<EOF >/opt/ots/.env
|
||||
@ -31,14 +31,6 @@ STORAGE_TYPE=redis
|
||||
EOF
|
||||
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"
|
||||
cat <<EOF >/etc/nginx/sites-available/ots.conf
|
||||
server {
|
||||
@ -52,8 +44,8 @@ server {
|
||||
listen [::]:443 ssl;
|
||||
server_name ots;
|
||||
|
||||
ssl_certificate /etc/ssl/ots/cert.pem;
|
||||
ssl_certificate_key /etc/ssl/ots/key.pem;
|
||||
ssl_certificate /etc/ssl/ots/ots.crt;
|
||||
ssl_certificate_key /etc/ssl/ots/ots.key;
|
||||
|
||||
location / {
|
||||
add_header X-Robots-Tag noindex;
|
||||
|
||||
@ -22,29 +22,12 @@ msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
||||
PG_VERSION="16" setup_postgresql
|
||||
|
||||
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"
|
||||
|
||||
PG_DB_NAME="outline" PG_DB_USER="outline" setup_postgresql_db
|
||||
fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
|
||||
import_local_ip
|
||||
|
||||
msg_info "Configuring Outline (Patience)"
|
||||
SECRET_KEY="$(openssl rand -hex 32)"
|
||||
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
||||
cd /opt/outline
|
||||
cp .env.sample .env
|
||||
export NODE_ENV=development
|
||||
|
||||
@ -13,10 +13,6 @@ setting_up_container
|
||||
network_check
|
||||
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
|
||||
fetch_and_deploy_gh_release "overseerr" "sct/overseerr" "tarball"
|
||||
|
||||
|
||||
@ -16,22 +16,17 @@ update_os
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
gcc \
|
||||
ca-certificates \
|
||||
musl-dev \
|
||||
mupdf \
|
||||
libc6-dev \
|
||||
musl-tools
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
setup_go
|
||||
fetch_and_deploy_gh_release "paperless-gpt" "icereed/paperless-gpt" "tarball"
|
||||
|
||||
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
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
@ -40,21 +35,19 @@ go mod download
|
||||
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 paperless-gpt .
|
||||
rm -f "$temp_file"
|
||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||
msg_ok "Setup Paperless-GPT"
|
||||
|
||||
mkdir -p /opt/paperless-gpt-data
|
||||
read -p "${TAB3}Do you want to enter the Paperless local URL now? (y/n) " input_url
|
||||
if [[ "$input_url" =~ ^[Yy]$ ]]; then
|
||||
read -p "${TAB3}Enter your Paperless-NGX instance URL (e.g., http://192.168.1.100:8000): " PAPERLESS_BASE_URL
|
||||
read -rp "${TAB3}Do you want to enter the Paperless local URL now? (y/n) " input_url
|
||||
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
|
||||
else
|
||||
PAPERLESS_BASE_URL="http://your_paperless_ngx_url"
|
||||
fi
|
||||
|
||||
read -p "${TAB3}Do you want to enter the Paperless API token now? (y/n) " input_token
|
||||
if [[ "$input_token" =~ ^[Yy]$ ]]; then
|
||||
read -p "${TAB3}Enter your Paperless API token: " PAPERLESS_API_TOKEN
|
||||
read -rp "${TAB3}Do you want to enter the Paperless API token now? (y/n) " input_token
|
||||
if [[ $input_token =~ ^[Yy]$ ]]; then
|
||||
read -rp "${TAB3}Enter your Paperless API token: " PAPERLESS_API_TOKEN
|
||||
else
|
||||
PAPERLESS_API_TOKEN="your_paperless_api_token"
|
||||
fi
|
||||
|
||||
@ -15,39 +15,20 @@ update_os
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
||||
PG_VERSION="16" setup_postgresql
|
||||
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="xsl,pgsql" setup_php
|
||||
PG_DB_NAME="partdb" PG_DB_USER="partdb" setup_postgresql_db
|
||||
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
|
||||
|
||||
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)"
|
||||
cd /opt
|
||||
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")
|
||||
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"
|
||||
mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb
|
||||
|
||||
cd /opt/partdb/
|
||||
cp .env .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
|
||||
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
|
||||
|
||||
export COMPOSER_ALLOW_SUPERUSER=1
|
||||
$STD composer install --no-dev -o --no-interaction
|
||||
@ -64,7 +45,7 @@ ADMIN_PASS=$(grep -oP 'The initial password for the "admin" user is: \K\w+' ~/da
|
||||
} >>~/partdb.creds
|
||||
rm -rf ~/database-migration-output
|
||||
rm -rf "/opt/v${RELEASE}.zip"
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
echo "${RELEASE}" >~/.partdb
|
||||
msg_ok "Installed Part-DB"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@ -21,18 +21,18 @@ $STD apt install -y \
|
||||
msg_ok "Installed dependencies"
|
||||
|
||||
setup_mariadb
|
||||
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
|
||||
MARIADB_DB_NAME="passboltdb" MARIADB_DB_USER="passbolt" setup_mariadb_db
|
||||
create_self_signed_cert
|
||||
import_local_ip
|
||||
setup_deb822_repo \
|
||||
"passbolt" \
|
||||
"https://keys.openpgp.org/pks/lookup?op=get&options=mr&search=0x3D1A0346C8E1802F774AEF21DE8B853FC155581D" \
|
||||
"https://download.passbolt.com/ce/debian" \
|
||||
"buster" \
|
||||
"stable"
|
||||
create_self_signed_cert "passbolt"
|
||||
|
||||
msg_info "Setting up Passbolt (Patience)"
|
||||
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-passbolt-username string $MARIADB_DB_USER | 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/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-domain string $IP_ADDR | debconf-set-selections
|
||||
echo passbolt-ce-server passbolt/nginx-domain string $LOCAL_IP | 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
|
||||
$STD apt install -y --no-install-recommends passbolt-ce-server
|
||||
|
||||
@ -22,24 +22,9 @@ msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
PG_VERSION="17" setup_postgresql
|
||||
|
||||
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"
|
||||
|
||||
PG_DB_NAME="patchmon_db" PG_DB_USER="patchmon_usr" setup_postgresql_db
|
||||
fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
|
||||
import_local_ip
|
||||
|
||||
msg_info "Configuring PatchMon"
|
||||
cd /opt/patchmon
|
||||
@ -50,12 +35,10 @@ $STD npm install --no-audit --no-fund --no-save --ignore-scripts
|
||||
cd /opt/patchmon/frontend
|
||||
$STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts
|
||||
$STD npm run build
|
||||
|
||||
JWT_SECRET="$(openssl rand -base64 64 | tr -d "=+/" | cut -c1-50)"
|
||||
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
||||
cat <<EOF >/opt/patchmon/backend/.env
|
||||
# Database Configuration
|
||||
DATABASE_URL="postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME"
|
||||
DATABASE_URL="postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME"
|
||||
PY_THRESHOLD=3M_DB_CONN_MAX_ATTEMPTS=30
|
||||
PM_DB_CONN_WAIT_INTERVAL=2
|
||||
|
||||
@ -272,7 +255,6 @@ async function updateSettings() {
|
||||
|
||||
updateSettings();
|
||||
EOF
|
||||
|
||||
cd /opt/patchmon/backend
|
||||
$STD node update-settings.js
|
||||
msg_ok "Settings updated successfully"
|
||||
|
||||
@ -20,24 +20,8 @@ $STD apt install -y \
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_mariadb
|
||||
MARIADB_DB_NAME="plantit" MARIADB_DB_USER="plantit_usr" setup_mariadb_db
|
||||
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"
|
||||
fetch_and_deploy_gh_release "plant-it-front" "MDeLuise/plant-it" "prebuild" "0.10.0" "/opt/plant-it/frontend" "client.tar.gz"
|
||||
|
||||
@ -46,10 +30,10 @@ mkdir -p /opt/plant-it-data
|
||||
cat <<EOF >/opt/plant-it/backend/server.env
|
||||
MYSQL_HOST=localhost
|
||||
MYSQL_PORT=3306
|
||||
MYSQL_USERNAME=$DB_USER
|
||||
MYSQL_PSW=$DB_PASS
|
||||
MYSQL_DATABASE=$DB_NAME
|
||||
MYSQL_ROOT_PASSWORD=$DB_PASS
|
||||
MYSQL_USERNAME=$MARIADB_DB_USER
|
||||
MYSQL_PSW=$MARIADB_DB_PASS
|
||||
MYSQL_DATABASE=$MARIADB_DB_NAME
|
||||
MYSQL_ROOT_PASSWORD=$MARIADB_DB_PASS
|
||||
|
||||
JWT_SECRET=$JWT_SECRET
|
||||
JWT_EXP=1
|
||||
@ -86,7 +70,7 @@ Restart=on-failure
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable --now -q plant-it
|
||||
systemctl enable -q --now plant-it
|
||||
|
||||
cat <<EOF >/etc/nginx/nginx.conf
|
||||
events {
|
||||
|
||||
@ -13,12 +13,8 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
get_latest_release() {
|
||||
curl -fsSL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||
}
|
||||
|
||||
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
|
||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
|
||||
PORTAINER_LATEST_VERSION=$(get_latest_github_release "portainer/portainer")
|
||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_github_release "portainer/agent")
|
||||
|
||||
if $STD mount | grep 'on / type zfs' >null && echo "ZFS"; then
|
||||
msg_info "Enabling ZFS support."
|
||||
@ -44,8 +40,8 @@ EOF
|
||||
fi
|
||||
|
||||
msg_info "Installing Podman"
|
||||
$STD apt -y install podman
|
||||
$STD systemctl enable --now podman.socket
|
||||
$STD apt install -y podman
|
||||
systemctl enable -q --now podman.socket
|
||||
echo -e 'unqualified-search-registries=["docker.io"]' >>/etc/containers/registries.conf
|
||||
msg_ok "Installed Podman"
|
||||
|
||||
@ -97,7 +93,7 @@ $STD podman run -d \
|
||||
podman generate systemd \
|
||||
--new --name homeassistant \
|
||||
>/etc/systemd/system/homeassistant.service
|
||||
$STD systemctl enable --now homeassistant
|
||||
systemctl enable -q --now homeassistant
|
||||
msg_ok "Installed Home Assistant"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@ -13,12 +13,8 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
get_latest_release() {
|
||||
curl -fsSL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||
}
|
||||
|
||||
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
|
||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
|
||||
PORTAINER_LATEST_VERSION=$(get_latest_github_release "portainer/portainer")
|
||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_github_release "portainer/agent")
|
||||
|
||||
if $STD mount | grep 'on / type zfs' >null && echo "ZFS"; then
|
||||
msg_info "Enabling ZFS support."
|
||||
@ -44,8 +40,8 @@ EOF
|
||||
fi
|
||||
|
||||
msg_info "Installing Podman"
|
||||
$STD apt -y install podman
|
||||
$STD systemctl enable --now podman.socket
|
||||
$STD apt install -y podman
|
||||
systemctl enable -q --now podman.socket
|
||||
echo -e 'unqualified-search-registries=["docker.io"]' >>/etc/containers/registries.conf
|
||||
msg_ok "Installed Podman"
|
||||
|
||||
|
||||
@ -20,16 +20,9 @@ $STD apt install -y \
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PHP_VERSION="8.2" PHP_MODULE="common,fpm" setup_php
|
||||
create_self_signed_cert
|
||||
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"
|
||||
mkdir -p /opt/privatebin/data
|
||||
cp /opt/privatebin/cfg/conf.sample.php /opt/privatebin/cfg/conf.php
|
||||
@ -55,8 +48,8 @@ server {
|
||||
listen 443 ssl default_server;
|
||||
listen [::]:443 ssl default_server;
|
||||
|
||||
ssl_certificate /etc/ssl/privatebin/cert.pem;
|
||||
ssl_certificate_key /etc/ssl/privatebin/key.pem;
|
||||
ssl_certificate /etc/ssl/privatebin/privatebin.crt;
|
||||
ssl_certificate_key /etc/ssl/privatebin/privatebin.key;
|
||||
|
||||
root /opt/privatebin;
|
||||
index index.php;
|
||||
|
||||
@ -15,31 +15,17 @@ update_os
|
||||
|
||||
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="pdo,mysql,gettext,fileinfo" setup_php
|
||||
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"
|
||||
|
||||
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"
|
||||
mv /opt/projectsend/includes/sys.config.sample.php /opt/projectsend/includes/sys.config.php
|
||||
chown -R www-data:www-data /opt/projectsend
|
||||
chmod -R 775 /opt/projectsend
|
||||
chmod 644 /opt/projectsend/includes/sys.config.php
|
||||
sed -i -e "s/\(define('DB_NAME', \).*/\1'$DB_NAME');/" \
|
||||
-e "s/\(define('DB_USER', \).*/\1'$DB_USER');/" \
|
||||
-e "s/\(define('DB_PASSWORD', \).*/\1'$DB_PASS');/" \
|
||||
sed -i -e "s/\(define('DB_NAME', \).*/\1'$MARIADB_DB_NAME');/" \
|
||||
-e "s/\(define('DB_USER', \).*/\1'$MARIADB_DB_USER');/" \
|
||||
-e "s/\(define('DB_PASSWORD', \).*/\1'$MARIADB_DB_PASS');/" \
|
||||
/opt/projectsend/includes/sys.config.php
|
||||
sed -i -e "s/^\(memory_limit = \).*/\1 256M/" \
|
||||
-e "s/^\(post_max_size = \).*/\1 256M/" \
|
||||
|
||||
@ -17,9 +17,7 @@ fetch_and_deploy_gh_release "prom-paperless-exp" "hansmi/prometheus-paperless-ex
|
||||
|
||||
msg_info "Configuring Prometheus Paperless NGX Exporter"
|
||||
mkdir -p /etc/prometheus-paperless-ngx-exporter
|
||||
cat <<EOF >/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file
|
||||
SECRET_AUTH_TOKEN
|
||||
EOF
|
||||
echo "SECRET_AUTH_TOKEN" >/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file
|
||||
msg_ok "Configured Prometheus Paperless NGX Exporter"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@ -27,7 +27,7 @@ msg_ok "Configured Recyclarr"
|
||||
msg_info "Setting up Daily Sync Cron"
|
||||
cat <<EOF >/etc/cron.d/recyclarr
|
||||
# Run recyclarr sync daily
|
||||
@daily root recyclarr sync >> /root/.config/recyclarr/sync.log 2>&1
|
||||
@daily root /usr/local/bin/recyclarr sync >> /root/.config/recyclarr/sync.log 2>&1
|
||||
EOF
|
||||
chmod 644 /etc/cron.d/recyclarr
|
||||
msg_ok "Setup Daily Sync Cron"
|
||||
|
||||
@ -18,7 +18,8 @@ $STD apt install -y \
|
||||
redis-server \
|
||||
rabbitmq-server \
|
||||
libpq-dev \
|
||||
zstd
|
||||
zstd \
|
||||
nginx
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
JAVA_VERSION="25" setup_java
|
||||
@ -46,6 +47,31 @@ mv /opt/reitti/reitti-*.jar /opt/reitti/reitti.jar
|
||||
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "photon" "komoot/photon" "singlefile" "latest" "/opt/photon" "photon-0*.jar"
|
||||
mv /opt/photon/photon-*.jar /opt/photon/photon.jar
|
||||
|
||||
msg_info "Installing Nginx Tile Cache"
|
||||
mkdir -p /var/cache/nginx/tiles
|
||||
cat <<EOF >/etc/nginx/nginx.conf
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
http {
|
||||
proxy_cache_path /var/cache/nginx/tiles levels=1:2 keys_zone=tiles:10m max_size=1g inactive=30d use_temp_path=off;
|
||||
server {
|
||||
listen 80;
|
||||
location / {
|
||||
proxy_pass https://tile.openstreetmap.org/;
|
||||
proxy_set_header Host tile.openstreetmap.org;
|
||||
proxy_set_header User-Agent "Reitti/1.0";
|
||||
proxy_cache tiles;
|
||||
proxy_cache_valid 200 30d;
|
||||
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
chown -R www-data:www-data /var/cache/nginx/tiles
|
||||
systemctl restart nginx
|
||||
msg_info "Installed Nginx Tile Cache"
|
||||
|
||||
msg_info "Creating Reitti Configuration-File"
|
||||
mkdir -p /opt/reitti/data
|
||||
cat <<EOF >/opt/reitti/application.properties
|
||||
@ -92,6 +118,9 @@ PROCESSING_WORKERS_PER_QUEUE=4-16
|
||||
|
||||
# Disable potentially dangerous features unless needed
|
||||
DANGEROUS_LIFE=false
|
||||
|
||||
# Tiles Cache
|
||||
reitti.ui.tiles.cache.url=http://127.0.0.1
|
||||
EOF
|
||||
msg_ok "Created Configuration-File for Reitti"
|
||||
|
||||
|
||||
@ -14,20 +14,17 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
git \
|
||||
pip \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-pip
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
$STD apt install -y git
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
fetch_and_deploy_gh_release "Tautulli" "Tautulli/Tautulli" "tarball"
|
||||
|
||||
msg_info "Installing Tautulli"
|
||||
cd /opt
|
||||
$STD git clone https://github.com/Tautulli/Tautulli.git
|
||||
$STD pip install -q -r /opt/Tautulli/requirements.txt
|
||||
$STD pip install pyopenssl
|
||||
cd /opt/Tautulli
|
||||
uv venv -q
|
||||
uv pip install -q -r requirements.txt
|
||||
uv pip install -q pyopenssl
|
||||
msg_ok "Installed Tautulli"
|
||||
|
||||
msg_info "Creating Service"
|
||||
@ -41,7 +38,7 @@ WorkingDirectory=/opt/Tautulli/
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/python3 /opt/Tautulli/Tautulli.py
|
||||
ExecStart=/opt/Tautulli/.venv/bin/python3 /opt/Tautulli/Tautulli.py
|
||||
KillSignal=SIGINT
|
||||
TimeoutStopSec=20
|
||||
SyslogIdentifier=tautulli
|
||||
|
||||
@ -3743,12 +3743,9 @@ create_lxc_container() {
|
||||
|
||||
msg_info "Searching for template '$TEMPLATE_SEARCH'"
|
||||
|
||||
# Build regex patterns outside awk/grep for clarity
|
||||
SEARCH_PATTERN="^${TEMPLATE_SEARCH}"
|
||||
|
||||
mapfile -t LOCAL_TEMPLATES < <(
|
||||
pveam list "$TEMPLATE_STORAGE" 2>/dev/null |
|
||||
awk -v search="${SEARCH_PATTERN}" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
|
||||
awk -v search="${TEMPLATE_SEARCH}" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
|
||||
sed 's|.*/||' | sort -t - -k 2 -V
|
||||
)
|
||||
|
||||
@ -3757,7 +3754,7 @@ create_lxc_container() {
|
||||
msg_ok "Template search completed"
|
||||
|
||||
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 "${SEARCH_PATTERN}.*${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 "^${TEMPLATE_SEARCH}.*${TEMPLATE_PATTERN}" | sort -t - -k 2 -V 2>/dev/null || true)
|
||||
set -u
|
||||
|
||||
ONLINE_TEMPLATE=""
|
||||
@ -3806,13 +3803,12 @@ create_lxc_container() {
|
||||
if [[ "$choice" =~ ^[0-9]+$ ]] && [[ "$choice" -ge 1 ]] && [[ "$choice" -le ${#AVAILABLE_VERSIONS[@]} ]]; then
|
||||
PCT_OSVERSION="${AVAILABLE_VERSIONS[$((choice - 1))]}"
|
||||
TEMPLATE_SEARCH="${PCT_OSTYPE}-${PCT_OSVERSION}"
|
||||
SEARCH_PATTERN="^${TEMPLATE_SEARCH}-"
|
||||
|
||||
mapfile -t ONLINE_TEMPLATES < <(
|
||||
pveam available -section system 2>/dev/null |
|
||||
grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' |
|
||||
awk -F'\t' '{print $1}' |
|
||||
grep -E "${SEARCH_PATTERN}.*${TEMPLATE_PATTERN}" |
|
||||
awk '{print $2}' |
|
||||
grep -E "^${TEMPLATE_SEARCH}-.*${TEMPLATE_PATTERN}" |
|
||||
sort -t - -k 2 -V 2>/dev/null || true
|
||||
)
|
||||
|
||||
@ -3873,18 +3869,17 @@ create_lxc_container() {
|
||||
|
||||
# Retry template search with new version
|
||||
TEMPLATE_SEARCH="${PCT_OSTYPE}-${PCT_OSVERSION:-}"
|
||||
SEARCH_PATTERN="^${TEMPLATE_SEARCH}-"
|
||||
|
||||
mapfile -t LOCAL_TEMPLATES < <(
|
||||
pveam list "$TEMPLATE_STORAGE" 2>/dev/null |
|
||||
awk -v search="${SEARCH_PATTERN}" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
|
||||
awk -v search="${TEMPLATE_SEARCH}-" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
|
||||
sed 's|.*/||' | sort -t - -k 2 -V
|
||||
)
|
||||
mapfile -t ONLINE_TEMPLATES < <(
|
||||
pveam available -section system 2>/dev/null |
|
||||
grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' |
|
||||
awk -F'\t' '{print $1}' |
|
||||
grep -E "${SEARCH_PATTERN}.*${TEMPLATE_PATTERN}" |
|
||||
awk '{print $2}' |
|
||||
grep -E "^${TEMPLATE_SEARCH}-.*${TEMPLATE_PATTERN}" |
|
||||
sort -t - -k 2 -V 2>/dev/null || true
|
||||
)
|
||||
ONLINE_TEMPLATE=""
|
||||
|
||||
@ -2571,6 +2571,15 @@ function setup_gs() {
|
||||
# - Some things are fetched from intel repositories due to not being in debian repositories.
|
||||
# ------------------------------------------------------------------------------
|
||||
function setup_hwaccel() {
|
||||
# Check if GPU passthrough is enabled (device nodes must exist)
|
||||
# /dev/dri = Intel iGPU, AMD GPU (open-source drivers)
|
||||
# /dev/nvidia* = NVIDIA proprietary drivers
|
||||
# /dev/kfd = AMD ROCm compute
|
||||
if [[ ! -d /dev/dri && ! -e /dev/nvidia0 && ! -e /dev/kfd ]]; then
|
||||
msg_warn "No GPU passthrough detected (/dev/dri, /dev/nvidia*, /dev/kfd not found) - skipping hardware acceleration setup"
|
||||
return 0
|
||||
fi
|
||||
|
||||
msg_info "Setup Hardware Acceleration"
|
||||
|
||||
if ! command -v lspci &>/dev/null; then
|
||||
@ -2771,15 +2780,11 @@ EOF
|
||||
msg_warn "Failed to install AMD firmware - may need manual installation"
|
||||
}
|
||||
elif [[ "$os_id" == "ubuntu" ]]; then
|
||||
# For Ubuntu, ensure multiverse is enabled (firmware-amd-graphics is in multiverse)
|
||||
if ! grep -qE '^deb.*multiverse' /etc/apt/sources.list /etc/apt/sources.list.d/*.list 2>/dev/null; then
|
||||
$STD add-apt-repository -y multiverse
|
||||
$STD apt update
|
||||
fi
|
||||
|
||||
# Install AMD firmware and libdrm
|
||||
$STD apt -y install libdrm-amdgpu1 firmware-amd-graphics 2>/dev/null || {
|
||||
msg_warn "Failed to install AMD firmware - may need manual installation"
|
||||
# For Ubuntu, firmware-amd-graphics does not exist (it's Debian-specific from non-free-firmware)
|
||||
# Ubuntu includes AMD firmware in linux-firmware package which is installed by default
|
||||
# Only install libdrm-amdgpu1 for userspace driver support
|
||||
$STD apt -y install libdrm-amdgpu1 2>/dev/null || {
|
||||
msg_warn "Failed to install libdrm-amdgpu1 - may need manual installation"
|
||||
}
|
||||
else
|
||||
# For other distributions, try without adding repositories
|
||||
|
||||
@ -22,9 +22,6 @@ APP="pihole-exporter"
|
||||
APP_TYPE="tools"
|
||||
INSTALL_PATH="/opt/pihole-exporter"
|
||||
CONFIG_PATH="/opt/pihole-exporter.env"
|
||||
header_info
|
||||
ensure_usr_local_bin_persist
|
||||
get_current_ip &>/dev/null
|
||||
|
||||
# ==============================================================================
|
||||
# OS DETECTION
|
||||
@ -186,7 +183,7 @@ UPDATEEOF
|
||||
|
||||
echo ""
|
||||
msg_ok "Pihole-Exporter installed successfully"
|
||||
msg_ok "Metrics: ${BL}http://${CURRENT_IP}:9617/metrics${CL}"
|
||||
msg_ok "Metrics: ${BL}http://${LOCAL_IP}:9617/metrics${CL}"
|
||||
msg_ok "Config: ${BL}${CONFIG_PATH}${CL}"
|
||||
}
|
||||
|
||||
@ -195,7 +192,7 @@ UPDATEEOF
|
||||
# ==============================================================================
|
||||
header_info
|
||||
ensure_usr_local_bin_persist
|
||||
get_current_ip &>/dev/null
|
||||
import_local_ip
|
||||
|
||||
# Handle type=update (called from update script)
|
||||
if [[ "${type:-}" == "update" ]]; then
|
||||
|
||||
Reference in New Issue
Block a user