post_install() { # create user and set ownership useradd -d /opt/anki-sync-server -r -s /sbin/nologin anki-sync-server chown -R anki-sync-server /opt/anki-sync-server chgrp -R anki-sync-server /opt/anki-sync-server # fix protobuf needs older version (pending upstream change) sudo -u anki-sync-server sed -i "s/\\(protobuf\\)==.*$/\\1<=3.20.1/" /opt/anki-sync-server/requirements.txt # install prerequisites as stated on the website echo "installing python packages as anki-sync-server user..." sudo -u anki-sync-server pip install -r /opt/anki-sync-server/requirements.txt --user --no-warn-script-location append_nginx_config systemctl enable anki-sync-server systemctl start anki-sync-server # post installation instructions echo "===============================================" echo "Check the manpage for post-install instructions" echo "===============================================" # ankisyncctl.py can't find ankisyncd module unless it's in the root directory (pending upstream change) sudo -u anki-sync-server mv /opt/anki-sync-server/ankisyncd_cli/ankisyncctl.py /opt/anki-sync-server/. } post_remove(){ # stop service (and remove systemd files) systemctl stop anki-sync-server systemctl disable anki-sync-server echo "Executing systemctl daemon-reload" systemctl daemon-reload # remove user (& group) getent passwd anki-sync-server &>/dev/null && userdel anki-sync-server || true getent group anki-sync-server &>/dev/null && groupdel anki-sync-server || true # remove servers from sites-enabled sudo find /etc/nginx/sites-enabled \( -name "anki-sync-server-http" -or -name "anki-sync-server-https" \) -delete sudo find /etc/nginx/sites-enabled -type d -empty -delete echo "===================================================================" echo "rm -rf /opt/anki-sync-server to remove the database and cache files" echo "===================================================================" } pre_upgrade(){ echo "stopping anki-sync-server.service..." sudo systemctl stop anki-sync-server.service } post_upgrade(){ # install prerequisites as stated on the website echo "installing python packages as anki-sync-server user..." sudo -u anki-sync-server pip install -r /opt/anki-sync-server/requirements.txt --user append_nginx_config sudo chown -R anki-sync-server /opt/anki-sync-server sudo chgrp -R anki-sync-server /opt/anki-sync-server echo "reloading systemd daemon..." sudo systemctl daemon-reload echo "starting anki-sync-server.service..." sudo systemctl start anki-sync-server } function append_nginx_config() { local _config_dir_="/etc/nginx" local _pacsave_="${_config_dir_}/nginx.conf.pacsave" local _config_="${_config_dir_}/nginx.conf" local _sites_available_dir_="${_config_dir_}/sites-available" local _sites_enabled_dir_="${_config_dir_}/sites-enabled" local _nginx_plugins_dir_="/opt/anki-sync-server/plugins/nginx" if (grep "include[[:space:]]\+/etc/nginx/sites-enabled" "${_config_}" --quiet); then echo "nginx config aleady uses sites-enabled" echo "not modifying nginx.conf!" echo "= you may need to manually enable the anki server =" else sudo cp "${_config_}" "${_pacsave_}" sudo awk -f "${_nginx_plugins_dir_}/append.awk" \ "${_pacsave_}" > "${_config_}" # defaulting to use http ! [ -f "${_sites_enabled_dir_}/anki-sync-server-http" ] && \ sudo \ ln -s "${_sites_available_dir_}/anki-sync-server-http" \ "${_sites_enabled_dir_}/anki-sync-server-http" fi }