mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-08-28 11:05:42 +00:00
Compare commits
13 Commits
2026-08-26
...
fix-mastod
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7e077a0e10 | ||
|
|
d14ca63429 | ||
|
|
1b714dceda | ||
|
|
519f5630ce | ||
|
|
8734eba9a7 | ||
|
|
d80fbc9629 | ||
|
|
f114aa553c | ||
|
|
db80438531 | ||
|
|
07d1f0837d | ||
|
|
45a6102d48 | ||
|
|
6cc27497a0 | ||
|
|
beb5c3a573 | ||
|
|
e60b90f385 |
28
CHANGELOG.md
28
CHANGELOG.md
@@ -527,6 +527,34 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
</details>
|
||||
|
||||
## 2026-08-28
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- pve-ups: fix: add pip binary [@CrazyWolf13](https://github.com/CrazyWolf13) ([#16820](https://github.com/community-scripts/ProxmoxVE/pull/16820))
|
||||
|
||||
## 2026-08-27
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Seanime ([#16777](https://github.com/community-scripts/ProxmoxVE/pull/16777))
|
||||
- Yopass ([#16778](https://github.com/community-scripts/ProxmoxVE/pull/16778))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- excalidash: Add a sed to switch to the correct DB Provider [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#16814](https://github.com/community-scripts/ProxmoxVE/pull/16814))
|
||||
- fix(stirling-pdf): remove broken ExecStop using %n [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#16813](https://github.com/community-scripts/ProxmoxVE/pull/16813))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Fix: Incorporate the new update functions to prevent a empty grep on … [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#16809](https://github.com/community-scripts/ProxmoxVE/pull/16809))
|
||||
|
||||
## 2026-08-26
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
@@ -42,6 +42,7 @@ function update_script() {
|
||||
msg_info "Configuring Database Provider (${DATABASE_PROVIDER:-sqlite})"
|
||||
cd /opt/excalidash/backend
|
||||
sed -i '/datasource db {/,/}/ s/provider = env("[^"]*")/provider = "'"${DATABASE_PROVIDER:-sqlite}"'"/' prisma/schema.prisma
|
||||
sed -i '/datasource db {/,/}/ s/provider = "[^"]*"/provider = "'"${DATABASE_PROVIDER:-sqlite}"'"/' prisma/schema.prisma
|
||||
mv prisma/migrations/"${DATABASE_PROVIDER:-sqlite}"/* prisma/migrations/
|
||||
rm -rf prisma/migrations/postgresql prisma/migrations/sqlite
|
||||
msg_ok "Configured Database Provider"
|
||||
|
||||
6
ct/headers/seanime
Normal file
6
ct/headers/seanime
Normal file
@@ -0,0 +1,6 @@
|
||||
_____ _
|
||||
/ ___/___ ____ _____ (_)___ ___ ___
|
||||
\__ \/ _ \/ __ `/ __ \/ / __ `__ \/ _ \
|
||||
___/ / __/ /_/ / / / / / / / / / / __/
|
||||
/____/\___/\__,_/_/ /_/_/_/ /_/ /_/\___/
|
||||
|
||||
6
ct/headers/yopass
Normal file
6
ct/headers/yopass
Normal file
@@ -0,0 +1,6 @@
|
||||
__ __
|
||||
\ \/ /___ ____ ____ ___________
|
||||
\ / __ \/ __ \/ __ `/ ___/ ___/
|
||||
/ / /_/ / /_/ / /_/ (__ |__ )
|
||||
/_/\____/ .___/\__,_/____/____/
|
||||
/_/
|
||||
@@ -1,5 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
@@ -40,6 +42,7 @@ function update_script() {
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "mastodon" "mastodon/mastodon" "tarball"
|
||||
sed -i "s/config.force_ssl = true/config.force_ssl = ENV.fetch('LOCAL_HTTPS', 'false') == 'true'/" /opt/mastodon/config/environments/production.rb
|
||||
sed -i "s/https = Rails.env.production? || ENV\['LOCAL_HTTPS'\] == 'true'/https = ENV.fetch('LOCAL_HTTPS', 'false') == 'true'/" /opt/mastodon/config/initializers/1_hosts.rb
|
||||
RUBY_VERSION="$(cat /opt/mastodon/.ruby-version)" RUBY_INSTALL_RAILS="false" setup_ruby
|
||||
|
||||
msg_info "Installing Ruby Dependencies"
|
||||
cd /opt/mastodon
|
||||
|
||||
@@ -41,7 +41,7 @@ function update_script() {
|
||||
|
||||
msg_info "Updating Application"
|
||||
cd /opt/pve-usv
|
||||
$STD uv venv --clear venv
|
||||
$STD uv venv --clear --seed venv
|
||||
$STD uv pip install --python venv/bin/python .
|
||||
chown -R pveusv:pveusv /opt/pve-usv
|
||||
chmod 0755 deploy/pve-usv-agent.sh
|
||||
|
||||
63
ct/seanime.sh
Normal file
63
ct/seanime.sh
Normal file
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: hasan-ismail
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://seanime.app/
|
||||
|
||||
APP="Seanime"
|
||||
var_tags="${var_tags:-media;anime;manga}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-yes}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
var_gpu="${var_gpu:-yes}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/seanime ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "seanime" "5rahim/seanime"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop seanime
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/seanime-data/config.toml
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "seanime" "5rahim/seanime" "prebuild" "latest" "/opt/seanime" "seanime-[0-9]*_Linux_$(arch_resolve x86_64 arm64).tar.gz"
|
||||
chmod +x /opt/seanime/seanime
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start seanime
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:43211${CL}"
|
||||
65
ct/yopass.sh
Normal file
65
ct/yopass.sh
Normal file
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env bash
|
||||
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
|
||||
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
|
||||
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/jhaals/yopass
|
||||
|
||||
APP="Yopass"
|
||||
var_tags="${var_tags:-security;secrets}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/yopass ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "yopass" "jhaals/yopass"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop yopass
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "yopass" "jhaals/yopass" "tarball"
|
||||
|
||||
msg_info "Building Yopass"
|
||||
cd /opt/yopass
|
||||
$STD go build -ldflags "-X main.version=$(cat ~/.yopass)" ./cmd/yopass-server
|
||||
cd /opt/yopass/website
|
||||
$STD yarn install --network-timeout 600000
|
||||
$STD yarn build
|
||||
msg_ok "Built Yopass"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start yopass
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||
echo -e "${GATEWAY}${BGN}https://${IP}:1337${CL}"
|
||||
@@ -48,13 +48,13 @@ PG_VERSION="17" setup_postgresql
|
||||
PG_DB_NAME="mastodon_production" PG_DB_USER="mastodon" PG_DB_SKIP_ALTER_ROLE="true" setup_postgresql_db
|
||||
$STD sudo -u postgres psql -c "ALTER USER mastodon CREATEDB;"
|
||||
|
||||
RUBY_VERSION="4.0.5" RUBY_INSTALL_RAILS="false" setup_ruby
|
||||
export PATH="$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH"
|
||||
|
||||
fetch_and_deploy_gh_release "mastodon" "mastodon/mastodon" "tarball"
|
||||
sed -i "s/config.force_ssl = true/config.force_ssl = ENV.fetch('LOCAL_HTTPS', 'false') == 'true'/" /opt/mastodon/config/environments/production.rb
|
||||
sed -i "s/https = Rails.env.production? || ENV\['LOCAL_HTTPS'\] == 'true'/https = ENV.fetch('LOCAL_HTTPS', 'false') == 'true'/" /opt/mastodon/config/initializers/1_hosts.rb
|
||||
|
||||
RUBY_VERSION="$(cat /opt/mastodon/.ruby-version)" RUBY_INSTALL_RAILS="false" setup_ruby
|
||||
export PATH="$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH"
|
||||
|
||||
msg_info "Installing Ruby Dependencies"
|
||||
cd /opt/mastodon
|
||||
$STD bundle config set --local without 'development test'
|
||||
|
||||
@@ -27,7 +27,7 @@ install -d -o pveusv -g pveusv -m 0750 \
|
||||
/var/lib/pve-usv/updates
|
||||
chown -R pveusv:pveusv /opt/pve-usv
|
||||
cd /opt/pve-usv
|
||||
$STD uv venv --clear venv
|
||||
$STD uv venv --clear --seed venv
|
||||
$STD uv pip install --python venv/bin/python .
|
||||
chmod 0755 deploy/pve-usv-agent.sh
|
||||
msg_ok "Set up Application"
|
||||
|
||||
67
install/seanime-install.sh
Normal file
67
install/seanime-install.sh
Normal file
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: hasan-ismail
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://seanime.app/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
setup_hwaccel
|
||||
|
||||
msg_info "Installing FFmpeg"
|
||||
setup_deb822_repo \
|
||||
"jellyfin" \
|
||||
"https://repo.jellyfin.org/jellyfin_team.gpg.key" \
|
||||
"https://repo.jellyfin.org/debian" \
|
||||
"$(get_os_info codename)"
|
||||
$STD apt install -y jellyfin-ffmpeg7
|
||||
ln -sf /usr/lib/jellyfin-ffmpeg/ffmpeg /usr/bin/ffmpeg
|
||||
ln -sf /usr/lib/jellyfin-ffmpeg/ffprobe /usr/bin/ffprobe
|
||||
msg_ok "Installed FFmpeg"
|
||||
|
||||
fetch_and_deploy_gh_release "seanime" "5rahim/seanime" "prebuild" "latest" "/opt/seanime" "seanime-[0-9]*_Linux_$(arch_resolve x86_64 arm64).tar.gz"
|
||||
chmod +x /opt/seanime/seanime
|
||||
|
||||
msg_info "Configuring Seanime"
|
||||
SEANIME_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
||||
mkdir -p /opt/seanime-data
|
||||
cat <<EOF >/opt/seanime-data/config.toml
|
||||
[server]
|
||||
password = "${SEANIME_PASSWORD}"
|
||||
EOF
|
||||
cat <<EOF >/root/seanime.creds
|
||||
Seanime URL: http://${LOCAL_IP}:43211
|
||||
Password: ${SEANIME_PASSWORD}
|
||||
EOF
|
||||
msg_ok "Configured Seanime"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/seanime.service
|
||||
[Unit]
|
||||
Description=Seanime
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/seanime
|
||||
ExecStart=/opt/seanime/seanime --datadir /opt/seanime-data --host 0.0.0.0
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now seanime
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -147,7 +147,6 @@ Group=root
|
||||
EnvironmentFile=/opt/Stirling-PDF/.env
|
||||
WorkingDirectory=/opt/Stirling-PDF
|
||||
ExecStart=/usr/bin/java -jar Stirling-PDF.jar
|
||||
ExecStop=/bin/kill -15 %n
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
|
||||
|
||||
69
install/yopass-install.sh
Normal file
69
install/yopass-install.sh
Normal file
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/jhaals/yopass
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y redis-server
|
||||
systemctl enable -q --now redis-server
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_go
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
|
||||
fetch_and_deploy_gh_release "yopass" "jhaals/yopass" "tarball"
|
||||
|
||||
msg_info "Building Yopass"
|
||||
cd /opt/yopass
|
||||
$STD go build -ldflags "-X main.version=$(cat ~/.yopass)" ./cmd/yopass-server
|
||||
cd /opt/yopass/website
|
||||
$STD yarn install --network-timeout 600000
|
||||
$STD yarn build
|
||||
msg_ok "Built Yopass"
|
||||
|
||||
msg_info "Generating SSL Certificate"
|
||||
mkdir -p /opt/yopass/certificates
|
||||
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
|
||||
-keyout /opt/yopass/certificates/key.pem \
|
||||
-out /opt/yopass/certificates/cert.pem \
|
||||
-subj "/C=US/ST=State/L=City/O=Yopass/CN=${LOCAL_IP}" \
|
||||
-addext "subjectAltName=IP:${LOCAL_IP},DNS:localhost,IP:127.0.0.1" \
|
||||
2>/dev/null
|
||||
chmod 600 /opt/yopass/certificates/key.pem
|
||||
chmod 644 /opt/yopass/certificates/cert.pem
|
||||
msg_ok "Generated SSL Certificate"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/yopass.service
|
||||
[Unit]
|
||||
Description=Yopass
|
||||
Wants=network-online.target
|
||||
After=network-online.target redis-server.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/yopass
|
||||
ExecStart=/opt/yopass/yopass-server --address 0.0.0.0 --port 1337 --tls-cert /opt/yopass/certificates/cert.pem --tls-key /opt/yopass/certificates/key.pem --database redis --redis redis://127.0.0.1:6379/0 --asset-path /opt/yopass/website/dist
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now yopass
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -173,7 +173,11 @@ function detect_service() {
|
||||
rm -rf "$tmpdir"
|
||||
return 1
|
||||
fi
|
||||
service=$(grep -oE '/ct/[a-zA-Z0-9._-]+\.sh' "$update_file" 2>/dev/null | head -n1 | sed 's|.*/ct/||; s|\.sh$||')
|
||||
|
||||
service=$(sed -n -E 's/^[[:space:]]*export[[:space:]]+UPDATE_SCRIPT_NAME=["'"'"']?([a-zA-Z0-9._-]+).*/\1/p' "$update_file" | head -n1)
|
||||
[[ -z "$service" ]] && service=$(sed -n -E 's/^[[:space:]]*export[[:space:]]+SCRIPT_SLUG=["'"'"']?([a-zA-Z0-9._-]+).*/\1/p' "$update_file" | head -n1)
|
||||
[[ -z "$service" ]] && service=$(grep -oE '/ct/[a-zA-Z0-9._-]+\.sh' "$update_file" 2>/dev/null | head -n1 | sed 's|.*/ct/||; s|\.sh$||')
|
||||
|
||||
rm -rf "$tmpdir"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user