diff --git a/ct/radicale.sh b/ct/radicale.sh index 296ae66ce..4f61f489e 100644 --- a/ct/radicale.sh +++ b/ct/radicale.sh @@ -28,16 +28,55 @@ function update_script() { exit fi - msg_info "Updating ${APP}" - $STD python3 -m venv /opt/radicale - source /opt/radicale/bin/activate - $STD python3 -m pip install --upgrade https://github.com/Kozea/Radicale/archive/master.tar.gz - msg_ok "Updated ${APP}" + if check_for_gh_release "Radicale" "Kozea/Radicale"; then + msg_info "Stopping service" + systemctl stop radicale + msg_ok "Stopped service" - msg_info "Starting Service" - systemctl enable -q --now radicale - msg_ok "Started Service" - msg_ok "Updated successfully!" + msg_info "Backing up users file" + cp /opt/radicale/users /opt/radicale_users_backup + msg_ok "Backed up users file" + + PYTHON_VERSION="3.13" setup_uv + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Radicale" "Kozea/Radicale" "tarball" "latest" "/opt/radicale" + + msg_info "Restoring users file" + rm -f /opt/radicale/users + mv /opt/radicale_users_backup /opt/radicale/users + msg_ok "Restored users file" + + 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 -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 </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 exit } diff --git a/frontend/public/json/radicale.json b/frontend/public/json/radicale.json index 627d3293e..385cc1746 100644 --- a/frontend/public/json/radicale.json +++ b/frontend/public/json/radicale.json @@ -12,7 +12,7 @@ "documentation": "https://radicale.org/master.html#documentation-1", "website": "https://radicale.org/", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/radicale.webp", - "config_path": "/etc/radicale/config or ~/.config/radicale/config", + "config_path": "/etc/radicale/config", "description": "Radicale is a small but powerful CalDAV (calendars, to-do lists) and CardDAV (contacts)", "install_methods": [ { diff --git a/install/radicale-install.sh b/install/radicale-install.sh index e302938e6..ec3ef4853 100644 --- a/install/radicale-install.sh +++ b/install/radicale-install.sh @@ -14,42 +14,51 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt install -y \ - apache2-utils \ - python3-pip \ - python3-venv +$STD apt install -y apache2-utils msg_ok "Installed Dependencies" +PYTHON_VERSION="3.13" setup_uv +fetch_and_deploy_gh_release "Radicale" "Kozea/Radicale" "tarball" "latest" "/opt/radicale" + msg_info "Setting up Radicale" -python3 -m venv /opt/radicale -source /opt/radicale/bin/activate -$STD python3 -m pip install --upgrade https://github.com/Kozea/Radicale/archive/master.tar.gz +cd /opt/radicale RNDPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) -$STD htpasswd -c -b -5 /opt/radicale/users admin $RNDPASS +$STD htpasswd -c -b -5 /opt/radicale/users admin "$RNDPASS" { echo "Radicale Credentials" echo "Admin User: admin" echo "Admin Password: $RNDPASS" } >>~/radicale.creds -msg_ok "Done setting up Radicale" -msg_info "Setup Service" +mkdir -p /etc/radicale +cat </etc/radicale/config +[server] +hosts = 0.0.0.0:5232 -cat </opt/radicale/start.sh -#!/usr/bin/env bash -source /opt/radicale/bin/activate -python3 -m radicale --storage-filesystem-folder=/var/lib/radicale/collections --hosts 0.0.0.0:5232 --auth-type htpasswd --auth-htpasswd-filename /opt/radicale/users --auth-htpasswd-encryption sha512 +[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 "Set up Radicale" -chmod +x /opt/radicale/start.sh - +msg_info "Creating Service" cat </etc/systemd/system/radicale.service +[Unit] Description=A simple CalDAV (calendar) and CardDAV (contact) server After=network.target Requires=network.target [Service] -ExecStart=/opt/radicale/start.sh +WorkingDirectory=/opt/radicale +ExecStart=/usr/local/bin/uv run -m radicale --config /etc/radicale/config Restart=on-failure # User=radicale # Deny other users access to the calendar data