mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-10-13 01:30:20 +00:00
* Radicale: install the bcrypt and argon2 extras The update replaces pyproject.toml and the venv, so a bcrypt or argon2 module added by hand was gone afterwards and Radicale refused to start with htpasswd_encryption = bcrypt, argon2 or autodetect. The service now runs uv with --extra bcrypt --extra argon2, which upstream already defines. The update patches existing units and restarts the service. * Radicale: enable the extras only once the code defines them argon2 is an extra since v3.5.4 and uv refuses unknown extras, so patching before the release update broke older installs. Patch after it instead, and only when pyproject.toml defines the extra.
92 lines
2.9 KiB
Bash
92 lines
2.9 KiB
Bash
#!/usr/bin/env bash
|
|
_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: tremor021
|
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
# Source: https://radicale.org/ | Github: https://github.com/Kozea/Radicale
|
|
|
|
APP="Radicale"
|
|
var_tags="${var_tags:-calendar}"
|
|
var_cpu="${var_cpu:-1}"
|
|
var_ram="${var_ram:-512}"
|
|
var_disk="${var_disk:-2}"
|
|
var_os="${var_os:-debian}"
|
|
var_version="${var_version:-13}"
|
|
var_arm64="${var_arm64:-yes}"
|
|
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/radicale ]]; then
|
|
msg_error "No ${APP} Installation Found!"
|
|
exit
|
|
fi
|
|
|
|
if check_for_gh_release "Radicale" "Kozea/Radicale"; then
|
|
msg_info "Stopping service"
|
|
systemctl stop radicale
|
|
msg_ok "Stopped service"
|
|
|
|
PYTHON_VERSION="3.13" setup_uv
|
|
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="users" fetch_and_deploy_gh_release "Radicale" "Kozea/Radicale" "tarball" "latest" "/opt/radicale"
|
|
|
|
if grep -q 'start.sh' /etc/systemd/system/radicale.service; then
|
|
sed -i -e '/^Description/i[Unit]' \
|
|
-e '\|^ExecStart|iWorkingDirectory=/opt/radicale' \
|
|
-e 's|^ExecStart=.*|ExecStart=/usr/local/bin/uv run --extra bcrypt --extra argon2 -m radicale --config /etc/radicale/config|' /etc/systemd/system/radicale.service
|
|
systemctl daemon-reload
|
|
fi
|
|
if [[ ! -f /etc/radicale/config ]]; then
|
|
msg_info "Migrating to config file (/etc/radicale/config)"
|
|
mkdir -p /etc/radicale
|
|
cat <<EOF >/etc/radicale/config
|
|
[server]
|
|
hosts = 0.0.0.0:5232
|
|
|
|
[auth]
|
|
type = htpasswd
|
|
htpasswd_filename = /opt/radicale/users
|
|
htpasswd_encryption = sha512
|
|
|
|
[storage]
|
|
type = multifilesystem
|
|
filesystem_folder = /var/lib/radicale/collections
|
|
|
|
[web]
|
|
type = internal
|
|
EOF
|
|
msg_ok "Migrated to config (/etc/radicale/config)"
|
|
fi
|
|
msg_info "Starting service"
|
|
systemctl start radicale
|
|
msg_ok "Started service"
|
|
msg_ok "Updated Successfully!"
|
|
fi
|
|
|
|
if grep -q 'uv run -m radicale' /etc/systemd/system/radicale.service && grep -q '^argon2 *=' /opt/radicale/pyproject.toml; then
|
|
msg_info "Enabling bcrypt/argon2 support"
|
|
sed -i 's|uv run -m radicale|uv run --extra bcrypt --extra argon2 -m radicale|' /etc/systemd/system/radicale.service
|
|
systemctl daemon-reload
|
|
systemctl restart radicale
|
|
msg_ok "Enabled bcrypt/argon2 support"
|
|
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}http://${IP}:5232${CL}"
|