mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-07-11 00:17:39 +00:00
Compare commits
21 Commits
ref_stirli
...
docker_ref
Author | SHA1 | Date | |
---|---|---|---|
23d5cd197e | |||
8e55a9b0b0 | |||
cbb91adf09 | |||
d596ced793 | |||
4f08b4609b | |||
2e4c185ee1 | |||
64fac95a03 | |||
786c9178f9 | |||
7b380253ee | |||
3914c0f7b9 | |||
1a53b749da | |||
f01046133e | |||
e8aa450d06 | |||
6acf854f3e | |||
b565048985 | |||
24eff9dbbd | |||
24be3b43b1 | |||
54d534a5d2 | |||
5bad80e148 | |||
89498f4205 | |||
661a58ae29 |
15
CHANGELOG.md
15
CHANGELOG.md
@ -16,16 +16,27 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
- BabyBuddy: fix path issues for update [@MickLesk](https://github.com/MickLesk) ([#5856](https://github.com/community-scripts/ProxmoxVE/pull/5856))
|
- FreshRSS: fix needed php modules [@MickLesk](https://github.com/MickLesk) ([#5886](https://github.com/community-scripts/ProxmoxVE/pull/5886))
|
||||||
|
- core: Fix VAAPI passthrough for unprivileged LXC containers via devX [@MickLesk](https://github.com/MickLesk) ([#5875](https://github.com/community-scripts/ProxmoxVE/pull/5875))
|
||||||
- tools.func: fix an bug while php libapache2-mod breaks [@MickLesk](https://github.com/MickLesk) ([#5857](https://github.com/community-scripts/ProxmoxVE/pull/5857))
|
- tools.func: fix an bug while php libapache2-mod breaks [@MickLesk](https://github.com/MickLesk) ([#5857](https://github.com/community-scripts/ProxmoxVE/pull/5857))
|
||||||
|
- BabyBuddy: fix path issues for update [@MickLesk](https://github.com/MickLesk) ([#5856](https://github.com/community-scripts/ProxmoxVE/pull/5856))
|
||||||
|
|
||||||
- #### ✨ New Features
|
- #### ✨ New Features
|
||||||
|
|
||||||
- Refactor: Commafeed [@tremor021](https://github.com/tremor021) ([#5802](https://github.com/community-scripts/ProxmoxVE/pull/5802))
|
|
||||||
- tools.func: strip leading folders for prebuild assets [@MickLesk](https://github.com/MickLesk) ([#5865](https://github.com/community-scripts/ProxmoxVE/pull/5865))
|
- tools.func: strip leading folders for prebuild assets [@MickLesk](https://github.com/MickLesk) ([#5865](https://github.com/community-scripts/ProxmoxVE/pull/5865))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Refactor: Stirling-PDF [@MickLesk](https://github.com/MickLesk) ([#5872](https://github.com/community-scripts/ProxmoxVE/pull/5872))
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Firefly [@tremor021](https://github.com/tremor021) ([#5844](https://github.com/community-scripts/ProxmoxVE/pull/5844))
|
||||||
|
- Refactor: Ghost (use now MySQL) [@MickLesk](https://github.com/MickLesk) ([#5871](https://github.com/community-scripts/ProxmoxVE/pull/5871))
|
||||||
|
- Refactor: Glance [@tremor021](https://github.com/tremor021) ([#5874](https://github.com/community-scripts/ProxmoxVE/pull/5874))
|
||||||
|
- Refactor: Commafeed [@tremor021](https://github.com/tremor021) ([#5802](https://github.com/community-scripts/ProxmoxVE/pull/5802))
|
||||||
|
- Refactor: FlareSolverr [@tremor021](https://github.com/tremor021) ([#5845](https://github.com/community-scripts/ProxmoxVE/pull/5845))
|
||||||
|
- Refactor: Gitea [@tremor021](https://github.com/tremor021) ([#5876](https://github.com/community-scripts/ProxmoxVE/pull/5876))
|
||||||
- Refactor: FreshRSS [@tremor021](https://github.com/tremor021) ([#5847](https://github.com/community-scripts/ProxmoxVE/pull/5847))
|
- Refactor: FreshRSS [@tremor021](https://github.com/tremor021) ([#5847](https://github.com/community-scripts/ProxmoxVE/pull/5847))
|
||||||
- Refactor: Fluid-Calendar [@tremor021](https://github.com/tremor021) ([#5846](https://github.com/community-scripts/ProxmoxVE/pull/5846))
|
- Refactor: Fluid-Calendar [@tremor021](https://github.com/tremor021) ([#5846](https://github.com/community-scripts/ProxmoxVE/pull/5846))
|
||||||
- Refactor: EMQX [@tremor021](https://github.com/tremor021) ([#5840](https://github.com/community-scripts/ProxmoxVE/pull/5840))
|
- Refactor: EMQX [@tremor021](https://github.com/tremor021) ([#5840](https://github.com/community-scripts/ProxmoxVE/pull/5840))
|
||||||
|
76
ct/docker.sh
76
ct/docker.sh
@ -20,18 +20,68 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /var ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
get_latest_release() {
|
||||||
exit
|
curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||||
fi
|
}
|
||||||
msg_info "Updating ${APP} LXC"
|
|
||||||
$STD apt-get update
|
msg_info "Updating base system"
|
||||||
$STD apt-get -y upgrade
|
$STD apt-get update
|
||||||
msg_ok "Updated ${APP} LXC"
|
$STD apt-get -y upgrade
|
||||||
exit
|
msg_ok "Base system updated"
|
||||||
|
|
||||||
|
msg_info "Updating Docker Engine"
|
||||||
|
$STD apt-get install --only-upgrade -y docker-ce docker-ce-cli containerd.io
|
||||||
|
msg_ok "Docker Engine updated"
|
||||||
|
|
||||||
|
if [[ -f /usr/local/lib/docker/cli-plugins/docker-compose ]]; then
|
||||||
|
COMPOSE_BIN="/usr/local/lib/docker/cli-plugins/docker-compose"
|
||||||
|
COMPOSE_NEW_VERSION=$(get_latest_release "docker/compose")
|
||||||
|
msg_info "Updating Docker Compose to $COMPOSE_NEW_VERSION"
|
||||||
|
curl -fsSL "https://github.com/docker/compose/releases/download/${COMPOSE_NEW_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
|
||||||
|
-o "$COMPOSE_BIN"
|
||||||
|
chmod +x "$COMPOSE_BIN"
|
||||||
|
msg_ok "Docker Compose updated"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if docker ps -a --format '{{.Names}}' | grep -q '^portainer$'; then
|
||||||
|
msg_info "Updating Portainer"
|
||||||
|
docker pull portainer/portainer-ce:latest
|
||||||
|
docker stop portainer && docker rm portainer
|
||||||
|
docker volume create portainer_data >/dev/null 2>&1
|
||||||
|
$STD docker run -d \
|
||||||
|
-p 8000:8000 \
|
||||||
|
-p 9443:9443 \
|
||||||
|
--name=portainer \
|
||||||
|
--restart=always \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
-v portainer_data:/data \
|
||||||
|
portainer/portainer-ce:latest
|
||||||
|
msg_ok "Updated Portainer"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if docker ps -a --format '{{.Names}}' | grep -q '^portainer_agent$'; then
|
||||||
|
msg_info "Updating Portainer Agent"
|
||||||
|
docker pull portainer/agent:latest
|
||||||
|
docker stop portainer_agent && docker rm portainer_agent
|
||||||
|
$STD docker run -d \
|
||||||
|
-p 9001:9001 \
|
||||||
|
--name=portainer_agent \
|
||||||
|
--restart=always \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
|
||||||
|
portainer/agent
|
||||||
|
msg_ok "Updated Portainer Agent"
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleanup complete"
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@ -39,4 +89,4 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
@ -29,17 +29,20 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/firefly-iii/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/firefly-iii/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 [[ "${RELEASE}" != "$(cat ~/.firefly 2>/dev/null)" ]] || [[ ! -f ~/.firefly ]]; then
|
||||||
msg_info "Stopping Apache2"
|
msg_info "Stopping Apache2"
|
||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
msg_ok "Stopped Apache2"
|
msg_ok "Stopped Apache2"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Backing up data"
|
||||||
cp /opt/firefly/.env /opt/.env
|
cp /opt/firefly/.env /opt/.env
|
||||||
cp -r /opt/firefly/storage /opt/storage
|
cp -r /opt/firefly/storage /opt/storage
|
||||||
cd /opt
|
msg_ok "Backed up data"
|
||||||
curl -fsSL "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz" -o $(basename "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz")
|
|
||||||
tar -xzf FireflyIII-v${RELEASE}.tar.gz -C /opt/firefly --exclude='storage'
|
fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
rm -rf /opt/firefly/storage
|
||||||
cp /opt/.env /opt/firefly/.env
|
cp /opt/.env /opt/firefly/.env
|
||||||
cp -r /opt/storage /opt/firefly/storage
|
cp -r /opt/storage /opt/firefly/storage
|
||||||
cd /opt/firefly
|
cd /opt/firefly
|
||||||
@ -50,16 +53,12 @@ function update_script() {
|
|||||||
$STD php artisan view:clear
|
$STD php artisan view:clear
|
||||||
$STD php artisan firefly-iii:upgrade-database
|
$STD php artisan firefly-iii:upgrade-database
|
||||||
$STD php artisan firefly-iii:laravel-passport-keys
|
$STD php artisan firefly-iii:laravel-passport-keys
|
||||||
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting Apache2"
|
msg_info "Starting Apache2"
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
msg_ok "Started Apache2"
|
msg_ok "Started Apache2"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/FireflyIII-v${RELEASE}.tar.gz
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
@ -23,20 +23,23 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -f /etc/systemd/system/flaresolverr.service ]]; then
|
if [[ ! -f /etc/systemd/system/flaresolverr.service ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://github.com/FlareSolverr/FlareSolverr/releases/latest | grep "title>Release" | cut -d " " -f 4)
|
RELEASE=$(curl -fsSL https://api.github.com/repos/FlareSolverr/FlareSolverr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.flaresolverr 2>/dev/null)" ]] || [[ ! -f ~/.flaresolverr ]]; then
|
||||||
msg_info "Updating $APP LXC"
|
msg_info "Stopping service"
|
||||||
systemctl stop flaresolverr
|
systemctl stop flaresolverr
|
||||||
curl -fsSL "https://github.com/FlareSolverr/FlareSolverr/releases/download/$RELEASE/flaresolverr_linux_x64.tar.gz" -o $(basename "https://github.com/FlareSolverr/FlareSolverr/releases/download/$RELEASE/flaresolverr_linux_x64.tar.gz")
|
msg_ok "Stopped service"
|
||||||
tar -xzf flaresolverr_linux_x64.tar.gz -C /opt
|
|
||||||
rm flaresolverr_linux_x64.tar.gz
|
rm -rf /opt/flaresolverr
|
||||||
|
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
|
||||||
|
|
||||||
|
msg_info "Starting service"
|
||||||
systemctl start flaresolverr
|
systemctl start flaresolverr
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
msg_ok "Started service"
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
|
39
ct/ghost.sh
39
ct/ghost.sh
@ -20,26 +20,31 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
msg_info "Updating ${APP} LXC"
|
|
||||||
|
|
||||||
if command -v ghost &>/dev/null; then
|
if ! dpkg-query -W -f='${Status}' mariadb-server 2>/dev/null | grep -q "install ok installed"; then
|
||||||
current_version=$(ghost version | grep 'Ghost-CLI version' | awk '{print $3}')
|
setup_mysql
|
||||||
latest_version=$(npm show ghost-cli version)
|
fi
|
||||||
if [ "$current_version" != "$latest_version" ]; then
|
NODE_VERSION="22" setup_nodejs
|
||||||
msg_info "Updating ${APP} from version v${current_version} to v${latest_version}"
|
|
||||||
$STD npm install -g ghost-cli@latest
|
msg_info "Updating ${APP} LXC"
|
||||||
msg_ok "Updated Successfully"
|
if command -v ghost &>/dev/null; then
|
||||||
else
|
current_version=$(ghost version | grep 'Ghost-CLI version' | awk '{print $3}')
|
||||||
msg_ok "${APP} is already at v${current_version}"
|
latest_version=$(npm show ghost-cli version)
|
||||||
fi
|
if [ "$current_version" != "$latest_version" ]; then
|
||||||
|
msg_info "Updating ${APP} from version v${current_version} to v${latest_version}"
|
||||||
|
$STD npm install -g ghost-cli@latest
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_ok "${APP} is already at v${current_version}"
|
||||||
exit
|
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@ -49,4 +54,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:2368${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:2368${CL}"
|
||||||
|
45
ct/gitea.sh
45
ct/gitea.sh
@ -20,24 +20,33 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /usr/local/bin/gitea ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
if [[ ! -f /usr/local/bin/gitea ]]; then
|
||||||
exit
|
msg_error "No ${APP} Installation Found!"
|
||||||
fi
|
exit
|
||||||
RELEASE=$(curl -fsSL https://github.com/go-gitea/gitea/releases/latest | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
|
fi
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
RELEASE=$(curl -fsSL https://github.com/go-gitea/gitea/releases/latest | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
|
||||||
FILENAME="gitea-$RELEASE-linux-amd64"
|
if [[ "${RELEASE}" != "$(cat ~/.gitea 2>/dev/null)" ]] || [[ ! -f ~/.gitea ]]; then
|
||||||
curl -fsSL "https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64" -o $FILENAME
|
msg_info "Stopping service"
|
||||||
systemctl stop gitea
|
systemctl stop gitea
|
||||||
rm -rf /usr/local/bin/gitea
|
msg_ok "Service stopped"
|
||||||
mv $FILENAME /usr/local/bin/gitea
|
|
||||||
chmod +x /usr/local/bin/gitea
|
rm -rf /usr/local/bin/gitea
|
||||||
systemctl start gitea
|
fetch_and_deploy_gh_release "gitea" "go-gitea/gitea" "singlefile" "latest" "/usr/local/bin" "gitea-*-linux-amd64"
|
||||||
msg_ok "Updated $APP Successfully"
|
chmod +x /usr/local/bin/gitea
|
||||||
exit
|
|
||||||
|
msg_info "Starting service"
|
||||||
|
systemctl start gitea
|
||||||
|
msg_ok "Started service"
|
||||||
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
15
ct/glance.sh
15
ct/glance.sh
@ -28,28 +28,19 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/glanceapp/glance/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 [[ "${RELEASE}" != "$(cat ~/.glance 2>/dev/null)" ]] || [[ ! -f ~/.glance ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop glance
|
systemctl stop glance
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
rm -f /opt/glance/glance
|
||||||
cd /opt
|
fetch_and_deploy_gh_release "glance" "glanceapp/glance" "prebuild" "latest" "/opt/glance" "glance-linux-amd64.tar.gz"
|
||||||
curl -fsSL "https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-amd64.tar.gz" -o $(basename "https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-amd64.tar.gz")
|
|
||||||
rm -rf /opt/glance/glance
|
|
||||||
tar -xzf glance-linux-amd64.tar.gz -C /opt/glance
|
|
||||||
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start glance
|
systemctl start glance
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/glance-linux-amd64.tar.gz
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
@ -27,31 +27,41 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating ${APP}"
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
systemctl stop stirlingpdf
|
if [[ "${RELEASE}" != "$(cat ~/.stirling-pdf 2>/dev/null)" ]] || [[ ! -f ~/.stirling-pdf ]]; then
|
||||||
if [[ -n $(dpkg -l | grep -w ocrmypdf) ]] && [[ -z $(dpkg -l | grep -w qpdf) ]]; then
|
if [[ ! -f /etc/systemd/system/unoserver.service ]]; then
|
||||||
$STD apt-get remove -y ocrmypdf
|
msg_custom "⚠️ " "\e[33m" "Legacy installation detected – please recreate the container using the latest install script."
|
||||||
$STD apt-get install -y qpdf
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
|
JAVA_VERSION="21" setup_java
|
||||||
|
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop stirlingpdf libreoffice-listener unoserver
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
|
if [[ -f ~/.Stirling-PDF-login ]]; then
|
||||||
|
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "stirling-pdf" "Stirling-Tools/Stirling-PDF" "singlefile" "latest" "/opt/Stirling-PDF" "Stirling-PDF-with-login.jar"
|
||||||
|
mv /opt/Stirling-PDF/Stirling-PDF-with-login.jar /opt/Stirling-PDF/Stirling-PDF.jar
|
||||||
|
else
|
||||||
|
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "stirling-pdf" "Stirling-Tools/Stirling-PDF" "singlefile" "latest" "/opt/Stirling-PDF" "Stirling-PDF.jar"
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Refreshing Font Cache"
|
||||||
|
$STD fc-cache -fv
|
||||||
|
msg_ok "Font Cache Updated"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start stirlingpdf libreoffice-listener unoserver
|
||||||
|
msg_ok "Started Services"
|
||||||
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v$RELEASE.tar.gz" -o $(basename "https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v$RELEASE.tar.gz")
|
|
||||||
tar -xzf v$RELEASE.tar.gz
|
|
||||||
cd Stirling-PDF-$RELEASE
|
|
||||||
chmod +x ./gradlew
|
|
||||||
$STD ./gradlew build -x spotlessApply -x spotlessCheck -x test -x sonarqube
|
|
||||||
rm -rf /opt/Stirling-PDF/Stirling-PDF-*.jar
|
|
||||||
cp -r ./stirling-pdf/build/libs/*.jar /opt/Stirling-PDF/Stirling-PDF-$RELEASE.jar
|
|
||||||
cp -r scripts /opt/Stirling-PDF/
|
|
||||||
cp -r pipeline /opt/Stirling-PDF/
|
|
||||||
cp -r stirling-pdf/src/main/resources/static/fonts/*.ttf /usr/share/fonts/opentype/noto/
|
|
||||||
cd ~
|
|
||||||
rm -rf Stirling-PDF-$RELEASE v$RELEASE.tar.gz
|
|
||||||
ln -sf /opt/Stirling-PDF/Stirling-PDF-$RELEASE.jar /opt/Stirling-PDF/Stirling-PDF.jar
|
|
||||||
systemctl start stirlingpdf
|
|
||||||
msg_ok "Updated ${APP} to v$RELEASE"
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
66
frontend/public/json/stirling-pdf.json
generated
66
frontend/public/json/stirling-pdf.json
generated
@ -1,35 +1,35 @@
|
|||||||
{
|
{
|
||||||
"name": "Stirling-PDF",
|
"name": "Stirling-PDF",
|
||||||
"slug": "stirling-pdf",
|
"slug": "stirling-pdf",
|
||||||
"categories": [
|
"categories": [
|
||||||
12
|
12
|
||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8080,
|
"interface_port": 8080,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://github.com/Stirling-Tools/Stirling-PDF",
|
"website": "https://github.com/Stirling-Tools/Stirling-PDF",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/stirling-pdf.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/stirling-pdf.webp",
|
||||||
"config_path": "/opt/Stirling-PDF/.env",
|
"config_path": "/opt/Stirling-PDF/.env",
|
||||||
"description": "Stirling-PDF is a powerful locally hosted web based PDF manipulation tool that allows you to perform various operations on PDF files, such as splitting merging, converting, reorganizing, adding images, rotating, compressing, and more.",
|
"description": "Stirling-PDF is a powerful locally hosted web based PDF manipulation tool that allows you to perform various operations on PDF files, such as splitting merging, converting, reorganizing, adding images, rotating, compressing, and more.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/stirling-pdf.sh",
|
"script": "ct/stirling-pdf.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 2,
|
||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"default_credentials": {
|
"default_credentials": {
|
||||||
"username": null,
|
"username": "admin",
|
||||||
"password": null
|
"password": "stirling"
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": []
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,17 @@ echo -e '{\n "log-driver": "journald"\n}' >/etc/docker/daemon.json
|
|||||||
$STD sh <(curl -fsSL https://get.docker.com)
|
$STD sh <(curl -fsSL https://get.docker.com)
|
||||||
msg_ok "Installed Docker $DOCKER_LATEST_VERSION"
|
msg_ok "Installed Docker $DOCKER_LATEST_VERSION"
|
||||||
|
|
||||||
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt
|
read -r -p "${TAB3}Install Docker Compose v2 plugin? <y/N> " prompt_compose
|
||||||
|
if [[ ${prompt_compose,,} =~ ^(y|yes)$ ]]; then
|
||||||
|
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||||
|
mkdir -p /usr/local/lib/docker/cli-plugins
|
||||||
|
curl -fsSL "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_LATEST_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
|
||||||
|
-o /usr/local/lib/docker/cli-plugins/docker-compose
|
||||||
|
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
|
||||||
|
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -r -p "${TAB3}Would you like to add Portainer (UI)? <y/N> " prompt
|
||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
|
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
|
||||||
docker volume create portainer_data >/dev/null
|
docker volume create portainer_data >/dev/null
|
||||||
@ -43,9 +53,9 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
|||||||
portainer/portainer-ce:latest
|
portainer/portainer-ce:latest
|
||||||
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
|
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
|
||||||
else
|
else
|
||||||
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
|
read -r -p "${TAB3}Would you like to install the Portainer Agent (for remote management)? <y/N> " prompt_agent
|
||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ${prompt_agent,,} =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
|
msg_info "Installing Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
|
||||||
$STD docker run -d \
|
$STD docker run -d \
|
||||||
-p 9001:9001 \
|
-p 9001:9001 \
|
||||||
--name portainer_agent \
|
--name portainer_agent \
|
||||||
@ -57,13 +67,42 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read -r -p "${TAB3}Would you like to expose the Docker TCP socket? <y/N> " prompt
|
read -r -p "${TAB3}Expose Docker TCP socket (insecure) ? [n = No, l = Local only (127.0.0.1), a = All interfaces (0.0.0.0)] <n/l/a>: " socket_choice
|
||||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
case "${socket_choice,,}" in
|
||||||
msg_info "Exposing Docker TCP socket"
|
l)
|
||||||
$STD mkdir -p /etc/docker
|
socket="tcp://127.0.0.1:2375"
|
||||||
$STD echo '{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }' > /etc/docker/daemon.json
|
;;
|
||||||
$STD rc-service docker restart
|
a)
|
||||||
msg_ok "Exposed Docker TCP socket at tcp://+:2375"
|
socket="tcp://0.0.0.0:2375"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
socket=""
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ -n "$socket" ]]; then
|
||||||
|
msg_info "Enabling Docker TCP socket on $socket"
|
||||||
|
$STD apt-get install -y jq
|
||||||
|
|
||||||
|
tmpfile=$(mktemp)
|
||||||
|
jq --arg sock "$socket" '. + { "hosts": ["unix:///var/run/docker.sock", $sock] }' /etc/docker/daemon.json > "$tmpfile" && mv "$tmpfile" /etc/docker/daemon.json
|
||||||
|
|
||||||
|
mkdir -p /etc/systemd/system/docker.service.d
|
||||||
|
cat <<EOF > /etc/systemd/system/docker.service.d/override.conf
|
||||||
|
[Service]
|
||||||
|
ExecStart=
|
||||||
|
ExecStart=/usr/bin/dockerd
|
||||||
|
EOF
|
||||||
|
|
||||||
|
$STD systemctl daemon-reexec
|
||||||
|
$STD systemctl daemon-reload
|
||||||
|
|
||||||
|
if systemctl restart docker; then
|
||||||
|
msg_ok "Docker TCP socket available on $socket"
|
||||||
|
else
|
||||||
|
msg_error "Docker failed to restart. Check journalctl -xeu docker.service"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
@ -14,17 +14,14 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
|
$STD apt-get install -y apache2
|
||||||
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ bookworm main" >/etc/apt/sources.list.d/php.list
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y \
|
|
||||||
apache2 \
|
|
||||||
libapache2-mod-php8.4 \
|
|
||||||
php8.4-{bcmath,cli,intl,curl,zip,gd,xml,mbstring,mysql} \
|
|
||||||
composer
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="mysql" setup_php
|
||||||
|
setup_composer
|
||||||
setup_mariadb
|
setup_mariadb
|
||||||
|
fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii"
|
||||||
|
LOCAL_IP=$(hostname -I | awk '{print $1}')
|
||||||
|
|
||||||
msg_info "Setting up database"
|
msg_info "Setting up database"
|
||||||
DB_NAME=firefly
|
DB_NAME=firefly
|
||||||
@ -41,13 +38,7 @@ mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRI
|
|||||||
} >>~/firefly.creds
|
} >>~/firefly.creds
|
||||||
msg_ok "Set up database"
|
msg_ok "Set up database"
|
||||||
|
|
||||||
msg_info "Installing Firefly III (Patience)"
|
msg_info "Configuring Firefly III (Patience)"
|
||||||
LOCAL_IP=$(hostname -I | awk '{print $1}')
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/firefly-iii/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
|
||||||
cd /opt
|
|
||||||
curl -fsSL "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz" -o "FireflyIII-v${RELEASE}.tar.gz"
|
|
||||||
mkdir -p /opt/firefly
|
|
||||||
tar -xzf FireflyIII-v${RELEASE}.tar.gz -C /opt/firefly
|
|
||||||
chown -R www-data:www-data /opt/firefly
|
chown -R www-data:www-data /opt/firefly
|
||||||
chmod -R 775 /opt/firefly/storage
|
chmod -R 775 /opt/firefly/storage
|
||||||
cd /opt/firefly
|
cd /opt/firefly
|
||||||
@ -69,8 +60,7 @@ tar -xzf "DataImporter-v${IMPORTER_RELEASE}.tar.gz" -C /opt/firefly/dataimporter
|
|||||||
cp /opt/firefly/dataimporter/.env.example /opt/firefly/dataimporter/.env
|
cp /opt/firefly/dataimporter/.env.example /opt/firefly/dataimporter/.env
|
||||||
sed -i "s#FIREFLY_III_URL=#FIREFLY_III_URL=http://${LOCAL_IP}#g" /opt/firefly/dataimporter/.env
|
sed -i "s#FIREFLY_III_URL=#FIREFLY_III_URL=http://${LOCAL_IP}#g" /opt/firefly/dataimporter/.env
|
||||||
chown -R www-data:www-data /opt/firefly
|
chown -R www-data:www-data /opt/firefly
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
msg_ok "Configured Firefly III"
|
||||||
msg_ok "Installed Firefly III"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/apache2/sites-available/firefly.conf
|
cat <<EOF >/etc/apache2/sites-available/firefly.conf
|
||||||
@ -112,7 +102,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf "/opt/FireflyIII-v${RELEASE}.tar.gz"
|
|
||||||
rm -rf "/opt/DataImporter-v${IMPORTER_RELEASE}.tar.gz"
|
rm -rf "/opt/DataImporter-v${IMPORTER_RELEASE}.tar.gz"
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
|
@ -15,8 +15,9 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y apt-transport-https
|
$STD apt-get install -y \
|
||||||
$STD apt-get install -y xvfb
|
apt-transport-https \
|
||||||
|
xvfb
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Chrome"
|
msg_info "Installing Chrome"
|
||||||
@ -26,13 +27,7 @@ $STD apt update
|
|||||||
$STD apt install -y google-chrome-stable
|
$STD apt install -y google-chrome-stable
|
||||||
msg_ok "Installed Chrome"
|
msg_ok "Installed Chrome"
|
||||||
|
|
||||||
msg_info "Installing FlareSolverr"
|
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
|
||||||
RELEASE=$(curl -fsSL https://github.com/FlareSolverr/FlareSolverr/releases/latest | grep "title>Release" | cut -d " " -f 4)
|
|
||||||
$STD curl -fsSL "https://github.com/FlareSolverr/FlareSolverr/releases/download/$RELEASE/flaresolverr_linux_x64.tar.gz" -o "flaresolverr_linux_x64.tar.gz"
|
|
||||||
$STD tar -xzf flaresolverr_linux_x64.tar.gz -C /opt
|
|
||||||
$STD rm flaresolverr_linux_x64.tar.gz
|
|
||||||
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
|
|
||||||
msg_ok "Installed FlareSolverr"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/flaresolverr.service
|
cat <<EOF >/etc/systemd/system/flaresolverr.service
|
||||||
|
@ -13,7 +13,7 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
PHP_VERSION="8.2" PHP_MODULE="dom,json,ctype,pgsql,gmp,iconv" PHP_APACHE="YES" setup_php
|
PHP_VERSION="8.2" PHP_MODULE="curl,xml,mbstring,intl,zip,pgsql,gmp" PHP_APACHE="YES" setup_php
|
||||||
PG_VERSION="16" setup_postgresql
|
PG_VERSION="16" setup_postgresql
|
||||||
|
|
||||||
msg_info "Setting up PostgreSQL"
|
msg_info "Setting up PostgreSQL"
|
||||||
|
@ -16,19 +16,19 @@ update_os
|
|||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
nginx \
|
nginx \
|
||||||
ca-certificates
|
ca-certificates \
|
||||||
|
libjemalloc2
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
setup_mariadb
|
setup_mysql
|
||||||
|
|
||||||
msg_info "Configuring Database"
|
msg_info "Configuring Database"
|
||||||
DB_NAME=ghost
|
DB_NAME=ghost
|
||||||
DB_USER=ghostuser
|
DB_USER=ghostuser
|
||||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
$STD mysql -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
$STD mysql -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;"
|
$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
|
|
||||||
{
|
{
|
||||||
echo "Ghost-Credentials"
|
echo "Ghost-Credentials"
|
||||||
echo "Ghost Database User: $DB_USER"
|
echo "Ghost Database User: $DB_USER"
|
||||||
@ -37,7 +37,7 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
|
|||||||
} >>~/ghost.creds
|
} >>~/ghost.creds
|
||||||
msg_ok "Configured MySQL"
|
msg_ok "Configured MySQL"
|
||||||
|
|
||||||
NODE_VERSION="20" setup_nodejs
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
|
||||||
msg_info "Installing Ghost CLI"
|
msg_info "Installing Ghost CLI"
|
||||||
$STD npm install ghost-cli@latest -g
|
$STD npm install ghost-cli@latest -g
|
||||||
|
@ -19,10 +19,9 @@ $STD apt-get install -y git
|
|||||||
$STD apt-get install -y sqlite3
|
$STD apt-get install -y sqlite3
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Gitea"
|
fetch_and_deploy_gh_release "gitea" "go-gitea/gitea" "singlefile" "latest" "/usr/local/bin" "gitea-*-linux-amd64"
|
||||||
RELEASE=$(curl -fsSL https://github.com/go-gitea/gitea/releases/latest | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
|
|
||||||
curl -fsSL "https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64" -o "gitea-$RELEASE-linux-amd64"
|
msg_info "Configuring Gitea"
|
||||||
mv gitea* /usr/local/bin/gitea
|
|
||||||
chmod +x /usr/local/bin/gitea
|
chmod +x /usr/local/bin/gitea
|
||||||
adduser --system --group --disabled-password --shell /bin/bash --home /etc/gitea gitea >/dev/null
|
adduser --system --group --disabled-password --shell /bin/bash --home /etc/gitea gitea >/dev/null
|
||||||
mkdir -p /var/lib/gitea/{custom,data,log}
|
mkdir -p /var/lib/gitea/{custom,data,log}
|
||||||
@ -31,7 +30,7 @@ chmod -R 750 /var/lib/gitea/
|
|||||||
chown root:gitea /etc/gitea
|
chown root:gitea /etc/gitea
|
||||||
chmod 770 /etc/gitea
|
chmod 770 /etc/gitea
|
||||||
sudo -u gitea ln -s /var/lib/gitea/data/.ssh/ /etc/gitea/.ssh
|
sudo -u gitea ln -s /var/lib/gitea/data/.ssh/ /etc/gitea/.ssh
|
||||||
msg_ok "Installed Gitea"
|
msg_ok "Configured Gitea"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/gitea.service
|
cat <<EOF >/etc/systemd/system/gitea.service
|
||||||
|
@ -13,12 +13,9 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Glance"
|
fetch_and_deploy_gh_release "glance" "glanceapp/glance" "prebuild" "latest" "/opt/glance" "glance-linux-amd64.tar.gz"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
cd /opt
|
msg_info "Configuring Glance"
|
||||||
curl -fsSL "https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-amd64.tar.gz" -o "glance-linux-amd64.tar.gz"
|
|
||||||
mkdir -p /opt/glance
|
|
||||||
tar -xzf glance-linux-amd64.tar.gz -C /opt/glance
|
|
||||||
cat <<EOF >/opt/glance/glance.yml
|
cat <<EOF >/opt/glance/glance.yml
|
||||||
pages:
|
pages:
|
||||||
- name: Startpage
|
- name: Startpage
|
||||||
@ -39,9 +36,7 @@ pages:
|
|||||||
- title: Helper Scripts
|
- title: Helper Scripts
|
||||||
url: https://github.com/community-scripts/ProxmoxVE
|
url: https://github.com/community-scripts/ProxmoxVE
|
||||||
EOF
|
EOF
|
||||||
|
msg_ok "Configured Glance"
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
msg_ok "Installed Glance"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
service_path="/etc/systemd/system/glance.service"
|
service_path="/etc/systemd/system/glance.service"
|
||||||
@ -67,7 +62,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf /opt/glance-linux-amd64.tar.gz
|
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
@ -15,7 +15,6 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing Dependencies (Patience)"
|
msg_info "Installing Dependencies (Patience)"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
git \
|
|
||||||
automake \
|
automake \
|
||||||
autoconf \
|
autoconf \
|
||||||
libtool \
|
libtool \
|
||||||
@ -25,10 +24,26 @@ $STD apt-get install -y \
|
|||||||
make \
|
make \
|
||||||
g++ \
|
g++ \
|
||||||
unpaper \
|
unpaper \
|
||||||
|
fonts-urw-base35 \
|
||||||
qpdf \
|
qpdf \
|
||||||
poppler-utils
|
poppler-utils
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
|
JAVA_VERSION="21" setup_java
|
||||||
|
|
||||||
|
read -r -p "${TAB3}Do you want to Stirling-PDF with Login? (no/n = without Login) [Y/n] " response
|
||||||
|
response=${response,,} # Convert to lowercase
|
||||||
|
login_mode="false"
|
||||||
|
if [[ "$response" == "y" || "$response" == "yes" || -z "$response" ]]; then
|
||||||
|
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "stirling-pdf" "Stirling-Tools/Stirling-PDF" "singlefile" "latest" "/opt/Stirling-PDF" "Stirling-PDF-with-login.jar"
|
||||||
|
mv /opt/Stirling-PDF/Stirling-PDF-with-login.jar /opt/Stirling-PDF/Stirling-PDF.jar
|
||||||
|
touch ~/.Stirling-PDF-login
|
||||||
|
login_mode="true"
|
||||||
|
else
|
||||||
|
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "stirling-pdf" "Stirling-Tools/Stirling-PDF" "singlefile" "latest" "/opt/Stirling-PDF" "Stirling-PDF.jar"
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Installing LibreOffice Components"
|
msg_info "Installing LibreOffice Components"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
libreoffice-writer \
|
libreoffice-writer \
|
||||||
@ -37,32 +52,35 @@ $STD apt-get install -y \
|
|||||||
libreoffice-core \
|
libreoffice-core \
|
||||||
libreoffice-common \
|
libreoffice-common \
|
||||||
libreoffice-base-core \
|
libreoffice-base-core \
|
||||||
python3-uno
|
libreoffice-script-provider-python \
|
||||||
|
libreoffice-java-common \
|
||||||
|
unoconv \
|
||||||
|
pngquant \
|
||||||
|
weasyprint
|
||||||
msg_ok "Installed LibreOffice Components"
|
msg_ok "Installed LibreOffice Components"
|
||||||
|
|
||||||
msg_info "Installing Python Dependencies"
|
msg_info "Installing Python Dependencies"
|
||||||
$STD apt-get install -y \
|
mkdir -p /tmp/stirling-pdf
|
||||||
python3 \
|
$STD uv venv /opt/.venv
|
||||||
python3-pip
|
export PATH="/opt/.venv/bin:$PATH"
|
||||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
source /opt/.venv/bin/activate
|
||||||
$STD pip3 install \
|
$STD uv pip install --upgrade pip
|
||||||
uno \
|
$STD uv pip install \
|
||||||
opencv-python-headless \
|
opencv-python-headless \
|
||||||
unoconv \
|
ocrmypdf \
|
||||||
pngquant \
|
pillow \
|
||||||
WeasyPrint
|
pdf2image
|
||||||
|
|
||||||
|
$STD apt-get install -y python3-uno python3-pip
|
||||||
|
$STD pip3 install --break-system-packages unoserver
|
||||||
|
ln -sf /opt/.venv/bin/python3 /usr/local/bin/python3
|
||||||
|
ln -sf /opt/.venv/bin/pip /usr/local/bin/pip
|
||||||
msg_ok "Installed Python Dependencies"
|
msg_ok "Installed Python Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Azul Zulu"
|
|
||||||
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xB1998361219BD9C9" -o "/etc/apt/trusted.gpg.d/zulu-repo.asc"
|
|
||||||
curl -fsSL "https://cdn.azul.com/zulu/bin/zulu-repo_1.0.0-3_all.deb" -o "/zulu-repo_1.0.0-3_all.deb"
|
|
||||||
$STD dpkg -i zulu-repo_1.0.0-3_all.deb
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y install zulu17-jdk
|
|
||||||
msg_ok "Installed Azul Zulu"
|
|
||||||
|
|
||||||
msg_info "Installing JBIG2"
|
msg_info "Installing JBIG2"
|
||||||
$STD git clone https://github.com/agl/jbig2enc /opt/jbig2enc
|
$STD curl -fsSL -o /tmp/jbig2enc.tar.gz https://github.com/agl/jbig2enc/archive/refs/tags/0.30.tar.gz
|
||||||
|
mkdir -p /opt/jbig2enc
|
||||||
|
tar -xzf /tmp/jbig2enc.tar.gz -C /opt/jbig2enc --strip-components=1
|
||||||
cd /opt/jbig2enc
|
cd /opt/jbig2enc
|
||||||
$STD bash ./autogen.sh
|
$STD bash ./autogen.sh
|
||||||
$STD bash ./configure
|
$STD bash ./configure
|
||||||
@ -74,25 +92,46 @@ msg_info "Installing Language Packs (Patience)"
|
|||||||
$STD apt-get install -y 'tesseract-ocr-*'
|
$STD apt-get install -y 'tesseract-ocr-*'
|
||||||
msg_ok "Installed Language Packs"
|
msg_ok "Installed Language Packs"
|
||||||
|
|
||||||
msg_info "Installing Stirling-PDF (Additional Patience)"
|
msg_info "Creating Environment Variables"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
cat <<EOF >/opt/Stirling-PDF/.env
|
||||||
curl -fsSL "https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v${RELEASE}.tar.gz" -o "v${RELEASE}.tar.gz"
|
# Java tuning
|
||||||
tar -xzf v${RELEASE}.tar.gz
|
JAVA_BASE_OPTS="-XX:+UnlockExperimentalVMOptions -XX:MaxRAMPercentage=75 -XX:InitiatingHeapOccupancyPercent=20 -XX:+G1PeriodicGCInvokesConcurrent -XX:G1PeriodicGCInterval=10000 -XX:+UseStringDeduplication -XX:G1PeriodicGCSystemLoadThreshold=70"
|
||||||
cd Stirling-PDF-$RELEASE
|
JAVA_CUSTOM_OPTS=""
|
||||||
chmod +x ./gradlew
|
|
||||||
$STD ./gradlew build -x spotlessApply -x spotlessCheck -x test -x sonarqube
|
# LibreOffice
|
||||||
mkdir -p /opt/Stirling-PDF
|
PATH=/opt/.venv/bin:/usr/lib/libreoffice/program:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||||
touch /opt/Stirling-PDF/.env
|
UNO_PATH=/usr/lib/libreoffice/program
|
||||||
mv ./stirling-pdf/build/libs/*.jar /opt/Stirling-PDF/Stirling-PDF-$RELEASE.jar
|
URE_BOOTSTRAP=file:///usr/lib/libreoffice/program/fundamentalrc
|
||||||
mv scripts /opt/Stirling-PDF/
|
PYTHONPATH=/usr/lib/libreoffice/program:/opt/.venv/lib/python3.12/site-packages
|
||||||
mv pipeline /opt/Stirling-PDF/
|
LD_LIBRARY_PATH=/usr/lib/libreoffice/program
|
||||||
mv stirling-pdf/src/main/resources/static/fonts/*.ttf /usr/share/fonts/opentype/noto/
|
|
||||||
ln -s /opt/Stirling-PDF/Stirling-PDF-$RELEASE.jar /opt/Stirling-PDF/Stirling-PDF.jar
|
STIRLING_TEMPFILES_DIRECTORY=/tmp/stirling-pdf
|
||||||
ln -s /usr/share/tesseract-ocr/5/tessdata/ /usr/share/tessdata
|
TMPDIR=/tmp/stirling-pdf
|
||||||
msg_ok "Installed Stirling-PDF"
|
TEMP=/tmp/stirling-pdf
|
||||||
|
TMP=/tmp/stirling-pdf
|
||||||
|
|
||||||
|
# Paths
|
||||||
|
PATH=/opt/.venv/bin:/usr/lib/libreoffice/program:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [[ "$login_mode" == "true" ]]; then
|
||||||
|
cat <<EOF >>/opt/Stirling-PDF/.env
|
||||||
|
# activate Login
|
||||||
|
DISABLE_ADDITIONAL_FEATURES=false
|
||||||
|
SECURITY_ENABLELOGIN=true
|
||||||
|
|
||||||
|
# login credentials
|
||||||
|
SECURITY_INITIALLOGIN_USERNAME=admin
|
||||||
|
SECURITY_INITIALLOGIN_PASSWORD=stirling
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
msg_ok "Created Environment Variables"
|
||||||
|
|
||||||
|
msg_info "Refreshing Font Cache"
|
||||||
|
$STD fc-cache -fv
|
||||||
|
msg_ok "Font Cache Updated"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
# Create LibreOffice listener service
|
|
||||||
cat <<EOF >/etc/systemd/system/libreoffice-listener.service
|
cat <<EOF >/etc/systemd/system/libreoffice-listener.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=LibreOffice Headless Listener Service
|
Description=LibreOffice Headless Listener Service
|
||||||
@ -109,14 +148,6 @@ Restart=always
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Set up environment variables
|
|
||||||
cat <<EOF >/opt/Stirling-PDF/.env
|
|
||||||
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/libreoffice/program
|
|
||||||
UNO_PATH=/usr/lib/libreoffice/program
|
|
||||||
PYTHONPATH=/usr/lib/python3/dist-packages:/usr/lib/libreoffice/program
|
|
||||||
LD_LIBRARY_PATH=/usr/lib/libreoffice/program
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF >/etc/systemd/system/stirlingpdf.service
|
cat <<EOF >/etc/systemd/system/stirlingpdf.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Stirling-PDF service
|
Description=Stirling-PDF service
|
||||||
@ -139,16 +170,32 @@ RestartSec=10
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Enable and start services
|
cat <<EOF >/etc/systemd/system/unoserver.service
|
||||||
|
[Unit]
|
||||||
|
Description=UnoServer RPC Interface
|
||||||
|
After=libreoffice-listener.service
|
||||||
|
Requires=libreoffice-listener.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/local/bin/unoserver --port 2003 --interface 127.0.0.1
|
||||||
|
Restart=always
|
||||||
|
EnvironmentFile=/opt/Stirling-PDF/.env
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
systemctl enable -q --now libreoffice-listener
|
systemctl enable -q --now libreoffice-listener
|
||||||
systemctl enable -q --now stirlingpdf
|
systemctl enable -q --now stirlingpdf
|
||||||
|
systemctl enable -q --now unoserver
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf v${RELEASE}.tar.gz /zulu-repo_1.0.0-3_all.deb
|
rm -f /tmp/jbig2enc.tar.gz
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
@ -1142,64 +1142,48 @@ EOF
|
|||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
msg_custom "⚙️ " "\e[96m" "Configuring VAAPI passthrough for LXC container"
|
msg_custom "⚙️ " "\e[96m" "Configuring VAAPI passthrough for LXC container"
|
||||||
|
|
||||||
if [ "$CT_TYPE" != "0" ]; then
|
if [ "$CT_TYPE" != "0" ]; then
|
||||||
msg_custom "⚠️ " "\e[33m" "Container is unprivileged – VAAPI passthrough may not work without additional host configuration (e.g., idmap)."
|
msg_custom "⚠️ " "\e[33m" "Container is unprivileged – VAAPI passthrough may not work without additional host configuration (e.g., idmap)."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_custom "ℹ️ " "\e[96m" "VAAPI enables GPU hardware acceleration (e.g., for video transcoding in Jellyfin or Plex)."
|
msg_custom "ℹ️ " "\e[96m" "VAAPI enables GPU hardware acceleration (e.g., for video transcoding in Jellyfin or Plex)."
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
read -rp "➤ Automatically mount all available VAAPI devices? [Y/n]: " VAAPI_ALL
|
read -rp "➤ Automatically mount all available VAAPI devices? [Y/n]: " VAAPI_ALL
|
||||||
|
|
||||||
if [[ "$VAAPI_ALL" =~ ^[Yy]$|^$ ]]; then
|
if [[ "$VAAPI_ALL" =~ ^[Yy]$|^$ ]]; then
|
||||||
# Mount all devices automatically
|
if [ "$CT_TYPE" == "0" ]; then
|
||||||
if [[ -e /dev/dri/renderD128 ]]; then
|
# PRV Container → alles zulässig
|
||||||
echo "lxc.cgroup2.devices.allow: c 226:128 rwm" >>"$LXC_CONFIG"
|
[[ -e /dev/dri/renderD128 ]] && {
|
||||||
echo "lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file" >>"$LXC_CONFIG"
|
|
||||||
fi
|
|
||||||
if [[ -e /dev/dri/card0 ]]; then
|
|
||||||
echo "lxc.cgroup2.devices.allow: c 226:0 rwm" >>"$LXC_CONFIG"
|
|
||||||
|
|
||||||
echo "lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file" >>"$LXC_CONFIG"
|
|
||||||
fi
|
|
||||||
if [[ -e /dev/fb0 ]]; then
|
|
||||||
echo "lxc.cgroup2.devices.allow: c 29:0 rwm" >>"$LXC_CONFIG"
|
|
||||||
echo "lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file" >>"$LXC_CONFIG"
|
|
||||||
fi
|
|
||||||
if [[ -d /dev/dri ]]; then
|
|
||||||
echo "lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir" >>"$LXC_CONFIG"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# Manual selection per device
|
|
||||||
if [[ -e /dev/dri/renderD128 ]]; then
|
|
||||||
read -rp "➤ Mount /dev/dri/renderD128 (GPU rendering)? [y/N]: " MOUNT_D128
|
|
||||||
if [[ "$MOUNT_D128" =~ ^[Yy]$ ]]; then
|
|
||||||
echo "lxc.cgroup2.devices.allow: c 226:128 rwm" >>"$LXC_CONFIG"
|
echo "lxc.cgroup2.devices.allow: c 226:128 rwm" >>"$LXC_CONFIG"
|
||||||
echo "lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file" >>"$LXC_CONFIG"
|
echo "lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file" >>"$LXC_CONFIG"
|
||||||
fi
|
}
|
||||||
fi
|
[[ -e /dev/dri/card0 ]] && {
|
||||||
|
|
||||||
if [[ -e /dev/dri/card0 ]]; then
|
|
||||||
read -rp "➤ Mount /dev/dri/card0 (GPU hardware interface)? [y/N]: " MOUNT_CARD0
|
|
||||||
if [[ "$MOUNT_CARD0" =~ ^[Yy]$ ]]; then
|
|
||||||
echo "lxc.cgroup2.devices.allow: c 226:0 rwm" >>"$LXC_CONFIG"
|
echo "lxc.cgroup2.devices.allow: c 226:0 rwm" >>"$LXC_CONFIG"
|
||||||
echo "lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file" >>"$LXC_CONFIG"
|
echo "lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file" >>"$LXC_CONFIG"
|
||||||
|
}
|
||||||
fi
|
[[ -e /dev/fb0 ]] && {
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -e /dev/fb0 ]]; then
|
|
||||||
read -rp "➤ Mount /dev/fb0 (Framebuffer, GUI)? [y/N]: " MOUNT_FB0
|
|
||||||
if [[ "$MOUNT_FB0" =~ ^[Yy]$ ]]; then
|
|
||||||
echo "lxc.cgroup2.devices.allow: c 29:0 rwm" >>"$LXC_CONFIG"
|
echo "lxc.cgroup2.devices.allow: c 29:0 rwm" >>"$LXC_CONFIG"
|
||||||
echo "lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file" >>"$LXC_CONFIG"
|
echo "lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file" >>"$LXC_CONFIG"
|
||||||
fi
|
}
|
||||||
|
[[ -d /dev/dri ]] && {
|
||||||
|
echo "lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir" >>"$LXC_CONFIG"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
# UNPRV Container → nur devX für UI
|
||||||
|
[[ -e /dev/dri/card0 ]] && echo "dev0: /dev/dri/card0,gid=44" >>"$LXC_CONFIG"
|
||||||
|
[[ -e /dev/dri/card1 ]] && echo "dev0: /dev/dri/card1,gid=44" >>"$LXC_CONFIG"
|
||||||
|
[[ -e /dev/dri/renderD128 ]] && echo "dev1: /dev/dri/renderD128,gid=104" >>"$LXC_CONFIG"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -d /dev/dri ]]; then
|
fi
|
||||||
echo "lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir" >>"$LXC_CONFIG"
|
if [ "$CT_TYPE" == "1" ] && [ "$is_vaapi_app" == "true" ]; then
|
||||||
fi
|
if [[ -e /dev/dri/card0 ]]; then
|
||||||
|
echo "dev0: /dev/dri/card0,gid=44" >>"$LXC_CONFIG"
|
||||||
|
elif [[ -e /dev/dri/card1 ]]; then
|
||||||
|
echo "dev0: /dev/dri/card1,gid=44" >>"$LXC_CONFIG"
|
||||||
|
fi
|
||||||
|
if [[ -e /dev/dri/renderD128 ]]; then
|
||||||
|
echo "dev1: /dev/dri/renderD128,gid=104" >>"$LXC_CONFIG"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -355,7 +355,6 @@ msg_custom() {
|
|||||||
[[ -z "$msg" ]] && return
|
[[ -z "$msg" ]] && return
|
||||||
stop_spinner
|
stop_spinner
|
||||||
echo -e "${BFR:-} ${symbol} ${color}${msg}${CL:-\e[0m}"
|
echo -e "${BFR:-} ${symbol} ${color}${msg}${CL:-\e[0m}"
|
||||||
printf "\r\033[K\e[?25h\n"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
run_container_safe() {
|
run_container_safe() {
|
||||||
|
Reference in New Issue
Block a user