mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-03-23 18:33:00 +01:00
Compare commits
17 Commits
fix/advent
...
add-script
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9eaf703bb0 | ||
|
|
f1f7bd17b0 | ||
|
|
7e470080b6 | ||
|
|
e97053152a | ||
|
|
3b8550e314 | ||
|
|
9c3b6a1a94 | ||
|
|
7a2c754cea | ||
|
|
00faa7a937 | ||
|
|
d26095dff3 | ||
|
|
b0fa21efdf | ||
|
|
f26adc2208 | ||
|
|
624607ca48 | ||
|
|
4a8aed39da | ||
|
|
2922ecdcbb | ||
|
|
e7dcd37cf7 | ||
|
|
586d8dd8a7 | ||
|
|
8a17729812 |
16
.github/workflows/update-script-timestamp-on-sh-change.yml
generated
vendored
16
.github/workflows/update-script-timestamp-on-sh-change.yml
generated
vendored
@@ -155,13 +155,21 @@ jobs:
|
||||
console.log('Slug not in DB, skipping: ' + slug);
|
||||
continue;
|
||||
}
|
||||
const today = new Date().toISOString().split('T')[0];
|
||||
const patchBody = {
|
||||
script_updated: today,
|
||||
last_update_commit: process.env.PR_URL || process.env.COMMIT_URL || ''
|
||||
};
|
||||
// When a dev script is merged into main, promote it to production
|
||||
if (record.is_dev === true) {
|
||||
patchBody.is_dev = false;
|
||||
patchBody.script_created = today;
|
||||
console.log('Promoting dev script to production: ' + slug);
|
||||
}
|
||||
const patchRes = await request(recordsUrl + '/' + record.id, {
|
||||
method: 'PATCH',
|
||||
headers: { 'Authorization': token, 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
script_updated: new Date().toISOString().split('T')[0],
|
||||
last_update_commit: process.env.PR_URL || process.env.COMMIT_URL || ''
|
||||
})
|
||||
body: JSON.stringify(patchBody)
|
||||
});
|
||||
if (!patchRes.ok) {
|
||||
console.warn('PATCH failed for slug ' + slug + ': ' + patchRes.body);
|
||||
|
||||
30
CHANGELOG.md
30
CHANGELOG.md
@@ -426,12 +426,42 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
</details>
|
||||
|
||||
## 2026-03-23
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- NginxProxyManager: build OpenResty from source via GitHub releases [@MickLesk](https://github.com/MickLesk) ([#13134](https://github.com/community-scripts/ProxmoxVE/pull/13134))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Kometa: optimize config.yml sed patterns, add Quickstart integration [@MickLesk](https://github.com/MickLesk) ([#13198](https://github.com/community-scripts/ProxmoxVE/pull/13198))
|
||||
|
||||
## 2026-03-22
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- versitygw ([#13180](https://github.com/community-scripts/ProxmoxVE/pull/13180))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Adventurelog: pin DRF <3.15 to fix coreapi module removal [@MickLesk](https://github.com/MickLesk) ([#13194](https://github.com/community-scripts/ProxmoxVE/pull/13194))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- ConvertX: add libreoffice-writer for ODT/document conversions [@MickLesk](https://github.com/MickLesk) ([#13196](https://github.com/community-scripts/ProxmoxVE/pull/13196))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- iSponsorblockTV: add AVX CPU check before installation [@MickLesk](https://github.com/MickLesk) ([#13197](https://github.com/community-scripts/ProxmoxVE/pull/13197))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: guard against empty IPv6 address in static mode [@MickLesk](https://github.com/MickLesk) ([#13195](https://github.com/community-scripts/ProxmoxVE/pull/13195))
|
||||
|
||||
## 2026-03-21
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
@@ -56,6 +56,7 @@ function update_script() {
|
||||
fi
|
||||
$STD .venv/bin/python -m pip install --upgrade pip
|
||||
$STD .venv/bin/python -m pip install -r requirements.txt
|
||||
$STD .venv/bin/python -m pip install 'djangorestframework<3.15'
|
||||
$STD .venv/bin/python -m manage collectstatic --noinput
|
||||
$STD .venv/bin/python -m manage migrate
|
||||
|
||||
|
||||
107
ct/alpine-borgbackup-server.sh
Normal file
107
ct/alpine-borgbackup-server.sh
Normal file
@@ -0,0 +1,107 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: Sander Koenders (sanderkoenders)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.borgbackup.org/
|
||||
|
||||
APP="Alpine-BorgBackup-Server"
|
||||
var_tags="${var_tags:-alpine;backup}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-20}"
|
||||
var_os="${var_os:-alpine}"
|
||||
var_version="${var_version:-3.23}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
|
||||
if [[ ! -f /usr/bin/borg ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
CHOICE=$(msg_menu "BorgBackup Server Update Options" \
|
||||
"1" "Update BorgBackup Server" \
|
||||
"2" "Reset SSH Access" \
|
||||
"3" "Enable password authentication for backup user (not recommended, use SSH key instead)" \
|
||||
"4" "Disable password authentication for backup user (recommended for security, use SSH key)")
|
||||
|
||||
case $CHOICE in
|
||||
1)
|
||||
msg_info "Updating $APP LXC"
|
||||
$STD apk -U upgrade
|
||||
msg_ok "Updated $APP LXC successfully!"
|
||||
;;
|
||||
2)
|
||||
if [[ "${PHS_SILENT:-0}" == "1" ]]; then
|
||||
msg_warn "Reset SSH Public key requires interactive mode, skipping."
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Setting up SSH Public Key for backup user"
|
||||
|
||||
msg_info "Please paste your SSH public key (e.g., ssh-rsa AAAAB3... user@host): \n"
|
||||
read -p "Key: " SSH_PUBLIC_KEY
|
||||
echo
|
||||
|
||||
if [[ -z "$SSH_PUBLIC_KEY" ]]; then
|
||||
msg_error "No SSH public key provided!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! "$SSH_PUBLIC_KEY" =~ ^(ssh-rsa|ssh-dss|ssh-ed25519|ecdsa-sha2-) ]]; then
|
||||
msg_error "Invalid SSH public key format!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
msg_info "Setting up SSH access"
|
||||
mkdir -p /home/backup/.ssh
|
||||
echo "$SSH_PUBLIC_KEY" >/home/backup/.ssh/authorized_keys
|
||||
|
||||
chown -R backup:backup /home/backup/.ssh
|
||||
chmod 700 /home/backup/.ssh
|
||||
chmod 600 /home/backup/.ssh/authorized_keys
|
||||
|
||||
msg_ok "SSH access configured for backup user"
|
||||
;;
|
||||
3)
|
||||
if [[ "${PHS_SILENT:-0}" == "1" ]]; then
|
||||
msg_warn "Enabling password authentication requires interactive mode, skipping."
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Enabling password authentication for backup user"
|
||||
msg_warn "Password authentication is less secure than using SSH keys. Consider using SSH keys instead."
|
||||
passwd backup
|
||||
sed -i 's/^#*\s*PasswordAuthentication\s\+\(yes\|no\)/PasswordAuthentication yes/' /etc/ssh/sshd_config
|
||||
rc-service sshd restart
|
||||
msg_ok "Password authentication enabled for backup user"
|
||||
;;
|
||||
4)
|
||||
msg_info "Disabling password authentication for backup user"
|
||||
sed -i 's/^#*\s*PasswordAuthentication\s\+\(yes\|no\)/PasswordAuthentication no/' /etc/ssh/sshd_config
|
||||
rc-service sshd restart
|
||||
msg_ok "Password authentication disabled for backup user"
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW}Connection information:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}ssh backup@${IP}${CL}"
|
||||
echo -e "${TAB}${VERIFYPW}${YW}To set SSH key, run this script with the 'update' option and select option 2${CL}"
|
||||
@@ -24,7 +24,7 @@ function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /var ]]; then
|
||||
if [[ ! -d /opt/convertx ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
@@ -33,6 +33,8 @@ function update_script() {
|
||||
systemctl stop convertx
|
||||
msg_info "Stopped Service"
|
||||
|
||||
ensure_dependencies libreoffice-writer
|
||||
|
||||
msg_info "Move data-Folder"
|
||||
if [[ -d /opt/convertx/data ]]; then
|
||||
mv /opt/convertx/data /opt/data
|
||||
|
||||
@@ -61,5 +61,5 @@ description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access the LXC at following IP address:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}${CL}"
|
||||
echo -e "${INFO}${YW} Access Kometa Quickstart:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7171${CL}"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: tteck (tteckster) | Co-Author: CrazyWolf13
|
||||
# Author: tteck (tteckster) | Co-Author: CrazyWolf13, MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://nginxproxymanager.com/ | Github: https://github.com/NginxProxyManager/nginx-proxy-manager
|
||||
|
||||
@@ -38,8 +38,8 @@ function update_script() {
|
||||
CURRENT_NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
|
||||
if [[ "$CURRENT_NODE_VERSION" != "22" ]]; then
|
||||
systemctl stop openresty
|
||||
apt-get purge -y nodejs npm
|
||||
apt-get autoremove -y
|
||||
$STD apt purge -y nodejs npm
|
||||
$STD apt autoremove -y
|
||||
rm -rf /usr/local/bin/node /usr/local/bin/npm
|
||||
rm -rf /usr/local/lib/node_modules
|
||||
rm -rf ~/.npm
|
||||
@@ -49,12 +49,10 @@ function update_script() {
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
||||
grep "tag_name" |
|
||||
awk '{print substr($2, 3, length($2)-4) }')
|
||||
RELEASE=$(get_latest_github_release "NginxProxyManager/nginx-proxy-manager")
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v${RELEASE}" "/opt/nginxproxymanager"
|
||||
|
||||
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop openresty
|
||||
systemctl stop npm
|
||||
@@ -69,12 +67,62 @@ function update_script() {
|
||||
/var/cache/nginx
|
||||
msg_ok "Cleaned old files"
|
||||
|
||||
msg_info "Migrating to OpenResty from source"
|
||||
rm -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg /etc/apt/trusted.gpg.d/openresty.gpg
|
||||
rm -f /etc/apt/sources.list.d/openresty.list /etc/apt/sources.list.d/openresty.sources
|
||||
if dpkg -l openresty &>/dev/null; then
|
||||
$STD apt remove -y openresty
|
||||
$STD apt autoremove -y
|
||||
fi
|
||||
local pcre_pkg="libpcre3-dev"
|
||||
if grep -qE 'VERSION_ID="1[3-9]"' /etc/os-release 2>/dev/null; then
|
||||
pcre_pkg="libpcre2-dev"
|
||||
fi
|
||||
$STD apt install -y build-essential "$pcre_pkg" libssl-dev zlib1g-dev
|
||||
msg_ok "Migrated to OpenResty from source"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openresty" "openresty/openresty" "prebuild" "latest" "/opt/openresty" "openresty-*.tar.gz"
|
||||
|
||||
if [[ -d /opt/openresty ]]; then
|
||||
msg_info "Building OpenResty"
|
||||
cd /opt/openresty
|
||||
$STD ./configure \
|
||||
--with-http_v2_module \
|
||||
--with-http_realip_module \
|
||||
--with-http_stub_status_module \
|
||||
--with-http_ssl_module \
|
||||
--with-http_sub_module \
|
||||
--with-http_auth_request_module \
|
||||
--with-pcre-jit \
|
||||
--with-stream \
|
||||
--with-stream_ssl_module
|
||||
$STD make -j"$(nproc)"
|
||||
$STD make install
|
||||
rm -rf /opt/openresty
|
||||
cat <<'EOF' >/lib/systemd/system/openresty.service
|
||||
[Unit]
|
||||
Description=The OpenResty Application Platform
|
||||
After=syslog.target network-online.target remote-fs.target nss-lookup.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStartPre=/usr/local/openresty/nginx/sbin/nginx -t
|
||||
ExecStart=/usr/local/openresty/nginx/sbin/nginx -g 'daemon off;'
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl daemon-reload
|
||||
msg_ok "Built OpenResty"
|
||||
fi
|
||||
|
||||
msg_info "Setting up Environment"
|
||||
ln -sf /usr/bin/python3 /usr/bin/python
|
||||
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
||||
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
||||
sed -i "s|\"version\": \"2.0.0\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/backend/package.json
|
||||
sed -i "s|\"version\": \"2.0.0\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/frontend/package.json
|
||||
sed -i "0,/\"version\": \"[^\"]*\"/s|\"version\": \"[^\"]*\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/backend/package.json
|
||||
sed -i "0,/\"version\": \"[^\"]*\"/s|\"version\": \"[^\"]*\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/frontend/package.json
|
||||
sed -i 's+^daemon+#daemon+g' /opt/nginxproxymanager/docker/rootfs/etc/nginx/nginx.conf
|
||||
NGINX_CONFS=$(find /opt/nginxproxymanager -type f -name "*.conf")
|
||||
for NGINX_CONF in $NGINX_CONFS; do
|
||||
@@ -150,23 +198,11 @@ function update_script() {
|
||||
EOF
|
||||
fi
|
||||
sed -i 's/"client": "sqlite3"/"client": "better-sqlite3"/' /app/config/production.json
|
||||
cd /app
|
||||
cd /app
|
||||
$STD yarn install --network-timeout 600000
|
||||
msg_ok "Initialized Backend"
|
||||
|
||||
msg_info "Updating Certbot"
|
||||
[ -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg ] && rm -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg
|
||||
[ -f /etc/apt/sources.list.d/openresty.list ] && rm -f /etc/apt/sources.list.d/openresty.list
|
||||
[ ! -f /etc/apt/trusted.gpg.d/openresty.gpg ] && curl -fsSL https://openresty.org/package/pubkey.gpg | gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/openresty.gpg
|
||||
[ ! -f /etc/apt/sources.list.d/openresty.sources ] && cat <<'EOF' >/etc/apt/sources.list.d/openresty.sources
|
||||
Types: deb
|
||||
URIs: http://openresty.org/package/debian/
|
||||
Suites: bookworm
|
||||
Components: openresty
|
||||
Signed-By: /etc/apt/trusted.gpg.d/openresty.gpg
|
||||
EOF
|
||||
$STD apt update
|
||||
$STD apt -y install openresty
|
||||
if [ -d /opt/certbot ]; then
|
||||
$STD /opt/certbot/bin/pip install --upgrade pip setuptools wheel
|
||||
$STD /opt/certbot/bin/pip install --upgrade certbot certbot-dns-cloudflare
|
||||
@@ -176,9 +212,9 @@ EOF
|
||||
msg_info "Starting Services"
|
||||
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
||||
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
||||
systemctl daemon-reload
|
||||
systemctl enable -q --now openresty
|
||||
systemctl enable -q --now npm
|
||||
systemctl restart openresty
|
||||
msg_ok "Started Services"
|
||||
|
||||
msg_ok "Updated successfully!"
|
||||
|
||||
@@ -62,6 +62,7 @@ $STD uv venv --clear /opt/adventurelog/backend/server/.venv
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install -r requirements.txt
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install 'djangorestframework<3.15'
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m manage collectstatic --noinput
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m manage migrate
|
||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m manage download-countries
|
||||
|
||||
34
install/alpine-borgbackup-server-install.sh
Normal file
34
install/alpine-borgbackup-server-install.sh
Normal file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: Sander Koenders (sanderkoenders)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.borgbackup.org/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing BorgBackup"
|
||||
$STD apk add --no-cache borgbackup openssh
|
||||
$STD rc-update add sshd
|
||||
$STD rc-service sshd start
|
||||
msg_ok "Installed BorgBackup"
|
||||
|
||||
msg_info "Creating backup user"
|
||||
$STD adduser -D -s /bin/bash -h /home/backup backup
|
||||
$STD passwd -d backup
|
||||
msg_ok "Created backup user"
|
||||
|
||||
msg_info "Configure SSH, disabling password authentication and enabling public key authentication"
|
||||
$STD sed -i -e 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
|
||||
$STD rc-service sshd restart
|
||||
msg_ok "Configured SSH"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -24,6 +24,7 @@ $STD apt install -y \
|
||||
dvisvgm \
|
||||
ffmpeg \
|
||||
inkscape \
|
||||
libreoffice-writer \
|
||||
libva2 \
|
||||
libvips-tools \
|
||||
lmodern \
|
||||
|
||||
@@ -13,6 +13,11 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
if ! grep -q ' avx ' /proc/cpuinfo 2>/dev/null; then
|
||||
msg_error "CPU does not support AVX instructions (required by iSponsorBlockTV/PyApp)"
|
||||
exit 106
|
||||
fi
|
||||
|
||||
fetch_and_deploy_gh_release "isponsorblocktv" "dmunozv04/iSponsorBlockTV" "singlefile" "latest" "/opt/isponsorblocktv" "iSponsorBlockTV-x86_64-linux"
|
||||
|
||||
msg_info "Setting up iSponsorBlockTV"
|
||||
|
||||
@@ -23,12 +23,20 @@ mkdir -p config/assets
|
||||
cp config/config.yml.template config/config.yml
|
||||
msg_ok "Setup Kometa"
|
||||
|
||||
read -p "${TAB3}Enter your TMDb API key: " TMDBKEY
|
||||
read -p "${TAB3}Enter your Plex URL: " PLEXURL
|
||||
read -p "${TAB3}Enter your Plex token: " PLEXTOKEN
|
||||
sed -i -e "s#url: http://192.168.1.12:32400#url: $PLEXURL #g" /opt/kometa/config/config.yml
|
||||
sed -i -e "s/token: ####################/token: $PLEXTOKEN/g" /opt/kometa/config/config.yml
|
||||
sed -i -e "s/apikey: ################################/apikey: $TMDBKEY/g" /opt/kometa/config/config.yml
|
||||
read -r -p "${TAB3}Enter your TMDb API key: " TMDBKEY
|
||||
read -r -p "${TAB3}Enter your Plex URL: " PLEXURL
|
||||
read -r -p "${TAB3}Enter your Plex token: " PLEXTOKEN
|
||||
sed -i '/^plex:/,/^[^ ]/{s| url:.*| url: '"$PLEXURL"'|}' /opt/kometa/config/config.yml
|
||||
sed -i '/^plex:/,/^[^ ]/{s| token:.*| token: '"$PLEXTOKEN"'|}' /opt/kometa/config/config.yml
|
||||
sed -i '/^tmdb:/,/^[^ ]/{s| apikey:.*| apikey: '"$TMDBKEY"'|}' /opt/kometa/config/config.yml
|
||||
|
||||
fetch_and_deploy_gh_release "kometa-quickstart" "Kometa-Team/Quickstart" "tarball"
|
||||
|
||||
msg_info "Installing Kometa Quickstart"
|
||||
cd /opt/kometa-quickstart
|
||||
$STD uv venv /opt/kometa-quickstart/.venv
|
||||
$STD /opt/kometa-quickstart/.venv/bin/python -m pip install -r requirements.txt
|
||||
msg_ok "Installed Kometa Quickstart"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/kometa.service
|
||||
@@ -46,7 +54,22 @@ RestartSec=30
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now kometa
|
||||
cat <<EOF >/etc/systemd/system/kometa-quickstart.service
|
||||
[Unit]
|
||||
Description=Kometa Quickstart
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/kometa-quickstart
|
||||
ExecStart=/opt/kometa-quickstart/.venv/bin/python quickstart.py
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now kometa kometa-quickstart
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -14,23 +14,20 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt update
|
||||
$STD apt -y install \
|
||||
ca-certificates \
|
||||
$STD apt install -y \
|
||||
apache2-utils \
|
||||
logrotate \
|
||||
build-essential \
|
||||
git
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Python Dependencies"
|
||||
$STD apt install -y \
|
||||
libpcre3-dev \
|
||||
libssl-dev \
|
||||
zlib1g-dev \
|
||||
git \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-pip \
|
||||
python3-venv \
|
||||
python3-cffi
|
||||
msg_ok "Installed Python Dependencies"
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setting up Certbot"
|
||||
$STD python3 -m venv /opt/certbot
|
||||
@@ -39,33 +36,50 @@ $STD /opt/certbot/bin/pip install certbot certbot-dns-cloudflare
|
||||
ln -sf /opt/certbot/bin/certbot /usr/local/bin/certbot
|
||||
msg_ok "Set up Certbot"
|
||||
|
||||
msg_info "Installing Openresty"
|
||||
curl -fsSL "https://openresty.org/package/pubkey.gpg" | gpg --dearmor -o /etc/apt/trusted.gpg.d/openresty.gpg
|
||||
cat <<'EOF' >/etc/apt/sources.list.d/openresty.sources
|
||||
Types: deb
|
||||
URIs: http://openresty.org/package/debian/
|
||||
Suites: bookworm
|
||||
Components: openresty
|
||||
Signed-By: /etc/apt/trusted.gpg.d/openresty.gpg
|
||||
fetch_and_deploy_gh_release "openresty" "openresty/openresty" "prebuild" "latest" "/opt/openresty" "openresty-*.tar.gz"
|
||||
|
||||
msg_info "Building OpenResty"
|
||||
cd /opt/openresty
|
||||
$STD ./configure \
|
||||
--with-http_v2_module \
|
||||
--with-http_realip_module \
|
||||
--with-http_stub_status_module \
|
||||
--with-http_ssl_module \
|
||||
--with-http_sub_module \
|
||||
--with-http_auth_request_module \
|
||||
--with-pcre-jit \
|
||||
--with-stream \
|
||||
--with-stream_ssl_module
|
||||
$STD make -j"$(nproc)"
|
||||
$STD make install
|
||||
rm -rf /opt/openresty
|
||||
|
||||
cat <<'EOF' >/lib/systemd/system/openresty.service
|
||||
[Unit]
|
||||
Description=The OpenResty Application Platform
|
||||
After=syslog.target network-online.target remote-fs.target nss-lookup.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStartPre=/usr/local/openresty/nginx/sbin/nginx -t
|
||||
ExecStart=/usr/local/openresty/nginx/sbin/nginx -g 'daemon off;'
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
$STD apt update
|
||||
$STD apt -y install openresty
|
||||
msg_ok "Installed Openresty"
|
||||
msg_ok "Built OpenResty"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
||||
grep "tag_name" |
|
||||
awk '{print substr($2, 3, length($2)-4) }')
|
||||
|
||||
RELEASE=$(get_latest_github_release "NginxProxyManager/nginx-proxy-manager")
|
||||
fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v${RELEASE}"
|
||||
|
||||
msg_info "Setting up Environment"
|
||||
ln -sf /usr/bin/python3 /usr/bin/python
|
||||
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
||||
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
||||
sed -i "s|\"version\": \"2.0.0\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/backend/package.json
|
||||
sed -i "s|\"version\": \"2.0.0\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/frontend/package.json
|
||||
sed -i "0,/\"version\": \"[^\"]*\"/s|\"version\": \"[^\"]*\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/backend/package.json
|
||||
sed -i "0,/\"version\": \"[^\"]*\"/s|\"version\": \"[^\"]*\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/frontend/package.json
|
||||
sed -i 's+^daemon+#daemon+g' /opt/nginxproxymanager/docker/rootfs/etc/nginx/nginx.conf
|
||||
NGINX_CONFS=$(find /opt/nginxproxymanager -type f -name "*.conf")
|
||||
for NGINX_CONF in $NGINX_CONFS; do
|
||||
@@ -169,7 +183,6 @@ sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/n
|
||||
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
||||
systemctl enable -q --now openresty
|
||||
systemctl enable -q --now npm
|
||||
systemctl restart openresty
|
||||
msg_ok "Started Services"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -3544,8 +3544,10 @@ build_container() {
|
||||
auto) NET_STRING="$NET_STRING,ip6=auto" ;;
|
||||
dhcp) NET_STRING="$NET_STRING,ip6=dhcp" ;;
|
||||
static)
|
||||
NET_STRING="$NET_STRING,ip6=$IPV6_ADDR"
|
||||
[ -n "$IPV6_GATE" ] && NET_STRING="$NET_STRING,gw6=$IPV6_GATE"
|
||||
if [[ -n "$IPV6_ADDR" ]]; then
|
||||
NET_STRING="$NET_STRING,ip6=$IPV6_ADDR"
|
||||
[ -n "$IPV6_GATE" ] && NET_STRING="$NET_STRING,gw6=$IPV6_GATE"
|
||||
fi
|
||||
;;
|
||||
none) ;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user