diff --git a/ct/listmonk.sh b/ct/listmonk.sh index 473844318..a800f9a00 100644 --- a/ct/listmonk.sh +++ b/ct/listmonk.sh @@ -27,31 +27,33 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi + if ! command -v jq &>/dev/null; then + $STD apt-get install -y jq + fi - RELEASE=$(curl -fsSL https://api.github.com/repos/knadh/listmonk/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 + RELEASE=$(curl -fsSL https://api.github.com/repos/knadh/listmonk/releases/latest | jq -r '.tag_name' | sed 's/^v//') + if [[ "${RELEASE}" != "$(cat ~/.listmonk)" ]] || [[ ! -f ~/.listmonk ]]; then msg_info "Stopping ${APP}" systemctl stop listmonk msg_ok "Stopped ${APP}" - msg_info "Updating ${APP} to v${RELEASE}" - cd /opt + msg_info "Backing up data" mv /opt/listmonk/ /opt/listmonk-backup - mkdir /opt/listmonk/ - curl -fsSL "https://github.com/knadh/listmonk/releases/download/v${RELEASE}/listmonk_${RELEASE}_linux_amd64.tar.gz" -o $(basename "https://github.com/knadh/listmonk/releases/download/v${RELEASE}/listmonk_${RELEASE}_linux_amd64.tar.gz") - tar -xzf "listmonk_${RELEASE}_linux_amd64.tar.gz" -C /opt/listmonk + msg_ok "Backed up data" + + fetch_and_deploy_gh_release "listmonk" "knadh/listmonk" "prebuild" "latest" "/opt/listmonk" "listmonk*linux_amd64.tar.gz" + + msg_info "Configuring listmonk" mv /opt/listmonk-backup/config.toml /opt/listmonk/config.toml mv /opt/listmonk-backup/uploads /opt/listmonk/uploads $STD /opt/listmonk/listmonk --upgrade --yes --config /opt/listmonk/config.toml - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated $APP to v${RELEASE}" + msg_ok "Configured listmonk" msg_info "Starting ${APP}" systemctl start listmonk msg_ok "Started ${APP}" msg_info "Cleaning up" - rm -rf "/opt/listmonk_${RELEASE}_linux_amd64.tar.gz" rm -rf /opt/listmonk-backup/ msg_ok "Cleaned" diff --git a/frontend/public/json/listmonk.json b/frontend/public/json/listmonk.json index c216c6461..ba47075ff 100644 --- a/frontend/public/json/listmonk.json +++ b/frontend/public/json/listmonk.json @@ -1,35 +1,35 @@ { - "name": "listmonk", - "slug": "listmonk", - "categories": [ - 0 - ], - "date_created": "2024-11-22", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 9000, - "documentation": "https://listmonk.app/docs/", - "website": "https://listmonk.app/", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/listmonk.webp", - "config_path": "/opt/listmonk/config.toml", - "description": "High performance, self-hosted, newsletter and mailing list manager with a modern dashboard.", - "install_methods": [ - { - "type": "default", - "script": "ct/listmonk.sh", - "resources": { - "cpu": 1, - "ram": 512, - "hdd": 4, - "os": "debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [] + "name": "listmonk", + "slug": "listmonk", + "categories": [ + 0 + ], + "date_created": "2024-11-22", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 9000, + "documentation": "https://listmonk.app/docs/", + "website": "https://listmonk.app/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/listmonk.webp", + "config_path": "/opt/listmonk/config.toml", + "description": "High performance, self-hosted, newsletter and mailing list manager with a modern dashboard.", + "install_methods": [ + { + "type": "default", + "script": "ct/listmonk.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 4, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] } diff --git a/install/listmonk-install.sh b/install/listmonk-install.sh index 84f2cb669..49b97c1bd 100644 --- a/install/listmonk-install.sh +++ b/install/listmonk-install.sh @@ -13,11 +13,9 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get install -y postgresql -msg_ok "Installed Dependencies" +PG_VERSION="17" setup_postgresql -msg_info "Setting up PostgreSQL" +msg_info "Configuring PostgreSQL" DB_NAME=listmonk DB_USER=listmonk DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13) @@ -29,22 +27,16 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMP echo -e "listmonk Database Password: \e[32m$DB_PASS\e[0m" echo -e "listmonk Database Name: \e[32m$DB_NAME\e[0m" } >>~/listmonk.creds -msg_ok "Set up PostgreSQL" +msg_ok "Configured PostgreSQL" -msg_info "Installing listmonk" -cd /opt -mkdir /opt/listmonk -mkdir /opt/listmonk/uploads -RELEASE=$(curl -fsSL https://api.github.com/repos/knadh/listmonk/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -curl -fsSL "https://github.com/knadh/listmonk/releases/download/v${RELEASE}/listmonk_${RELEASE}_linux_amd64.tar.gz" -o "listmonk_${RELEASE}_linux_amd64.tar.gz" -tar -xzf "listmonk_${RELEASE}_linux_amd64.tar.gz" -C /opt/listmonk +fetch_and_deploy_gh_release "listmonk" "knadh/listmonk" "prebuild" "latest" "/opt/listmonk" "listmonk*linux_amd64.tar.gz" +msg_info "Configuring listmonk" +mkdir -p /opt/listmonk/uploads $STD /opt/listmonk/listmonk --new-config --config /opt/listmonk/config.toml sed -i -e 's/address = "localhost:9000"/address = "0.0.0.0:9000"/' -e 's/^password = ".*"/password = "'"$DB_PASS"'"/' /opt/listmonk/config.toml $STD /opt/listmonk/listmonk --install --yes --config /opt/listmonk/config.toml - -echo "${RELEASE}" >/opt/${APPLICATION}_version.txt -msg_ok "Installed listmonk" +msg_ok "Configured listmonk" msg_info "Creating Service" cat </etc/systemd/system/listmonk.service @@ -70,7 +62,6 @@ motd_ssh customize msg_info "Cleaning up" -rm -rf "/opt/listmonk_${RELEASE}_linux_amd64.tar.gz" $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned"