From c3afa278c5b5406dc9ba3d61857c5cc106a094f5 Mon Sep 17 00:00:00 2001 From: A <37412+phof@users.noreply.github.com> Date: Thu, 23 Oct 2025 16:19:20 +0200 Subject: [PATCH 1/3] new: miniflux --- ct/alpine-miniflux.sh | 43 ++++++++++++++ frontend/public/json/miniflux.json | 44 ++++++++++++++ install/alpine-miniflux-install.sh | 93 ++++++++++++++++++++++++++++++ 3 files changed, 180 insertions(+) create mode 100644 ct/alpine-miniflux.sh create mode 100644 frontend/public/json/miniflux.json create mode 100644 install/alpine-miniflux-install.sh diff --git a/ct/alpine-miniflux.sh b/ct/alpine-miniflux.sh new file mode 100644 index 000000000..28bd6e663 --- /dev/null +++ b/ct/alpine-miniflux.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: phof +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +APP="Alpine-Miniflux" +var_tags="${var_tags:-alpine;rss;miniflux}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-2}" +var_os="${var_os:-alpine}" +var_version="${var_version:-3.22}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + msg_info "Updating Alpine Packages" + $STD apk -U upgrade + msg_ok "Updated Alpine Packages" + + msg_info "Restarting Miniflux" + $STD rc-service miniflux restart || true + msg_ok "Restarted Miniflux" + + exit 0 +} + +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 "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" + + diff --git a/frontend/public/json/miniflux.json b/frontend/public/json/miniflux.json new file mode 100644 index 000000000..23cda71ef --- /dev/null +++ b/frontend/public/json/miniflux.json @@ -0,0 +1,44 @@ +{ + "name": "Miniflux (Alpine)", + "slug": "alpine-miniflux", + "categories": [ + 12 + ], + "date_created": "2025-10-23", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8080, + "documentation": "https://miniflux.app/docs/alpine.html", + "website": "https://miniflux.app/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/miniflux.webp", + "config_path": "cat /etc/miniflux.conf", + "description": "Miniflux is a minimalist and opinionated RSS reader. This Alpine-based LXC installs Miniflux and PostgreSQL with OpenRC.", + "install_methods": [ + { + "type": "default", + "script": "ct/alpine-miniflux.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 2, + "os": "alpine", + "version": "3.22" + } + } + ], + "default_credentials": { + "username": "admin", + "password": null + }, + "notes": [ + { + "text": "Database credentials: `cat ~/miniflux-db.creds`", + "type": "info" + }, + { + "text": "Admin credentials: `cat ~/miniflux-admin.creds`", + "type": "info" + } + ] +} diff --git a/install/alpine-miniflux-install.sh b/install/alpine-miniflux-install.sh new file mode 100644 index 000000000..b178b6de2 --- /dev/null +++ b/install/alpine-miniflux-install.sh @@ -0,0 +1,93 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: phof +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies (PostgreSQL, curl, logrotate, openssl)" +$STD apk add --no-cache postgresql postgresql-contrib curl logrotate openssl +msg_ok "Installed Dependencies" + +msg_info "Initializing PostgreSQL Database" +if [ ! -d /var/lib/postgresql ]; then + $STD mkdir -p /var/lib/postgresql +fi +$STD su - postgres -c 'initdb -D /var/lib/postgresql/data' +msg_ok "Initialized PostgreSQL" + +msg_info "Creating Miniflux Database and User" +DB_USER="miniflux" +DB_PASS=$(openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c20) +DB_NAME="miniflux" + +rc-service postgresql start || service postgresql start +sleep 2 +$STD su - postgres -c "createuser ${DB_USER}" +$STD su - postgres -c "createdb -O ${DB_USER} ${DB_NAME}" +$STD su - postgres -c "psql -c \"ALTER USER ${DB_USER} WITH PASSWORD '${DB_PASS}'\"" +$STD su - postgres -c "psql -d ${DB_NAME} -c 'CREATE EXTENSION IF NOT EXISTS hstore'" +{ + echo "Miniflux Database Credentials" + echo "DB User: ${DB_USER}" + echo "DB Password: ${DB_PASS}" + echo "DB Name: ${DB_NAME}" +} >~/miniflux-db.creds +msg_ok "Created Database and User" + +msg_info "Installing Miniflux (apk packages)" +# Ensure community repo is enabled (edge community as per docs, if needed) +if ! grep -q "/edge/community" /etc/apk/repositories; then + echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >>/etc/apk/repositories + $STD apk update +fi +$STD apk add --no-cache miniflux miniflux-openrc miniflux-doc || true +msg_ok "Installed Miniflux" + +msg_info "Configuring Miniflux" +mkdir -p /etc/miniflux +IPADDRESS=$(hostname -i) +ADMIN_USER="admin" +ADMIN_PASS="miniflux" +{ + echo "LOG_DATE_TIME=yes" + echo "LISTEN_ADDR=0.0.0.0:8080" + echo "DATABASE_URL=user=${DB_USER} password=${DB_PASS} dbname=${DB_NAME} sslmode=disable" + echo "RUN_MIGRATIONS=1" + echo "CREATE_ADMIN=1" + echo "ADMIN_USERNAME=${ADMIN_USER}" + echo "ADMIN_PASSWORD=${ADMIN_PASS}" +} >/etc/miniflux.conf +{ + echo "Miniflux Admin Credentials" + echo "Username: ${ADMIN_USER}" + echo "Password: ${ADMIN_PASS}" + echo "URL: http://${IPADDRESS}:8080" +} >~/miniflux-admin.creds +msg_ok "Configured Miniflux" + +# msg_info "Applying Database Migrations and Creating Admin" +miniflux -c /etc/miniflux.conf -migrate +# miniflux -c /etc/miniflux.conf -create-admin +# msg_ok "Applied Migrations and Created Admin" + +msg_info "Enabling and Starting Miniflux" +$STD rc-update add miniflux default +$STD rc-service miniflux start +msg_ok "Miniflux Started" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apk cache clean || true +msg_ok "Cleaned" + + From 8e1797757909b2225da752069fa11d130a47009a Mon Sep 17 00:00:00 2001 From: A <37412+phof@users.noreply.github.com> Date: Thu, 23 Oct 2025 16:38:17 +0200 Subject: [PATCH 2/3] comments for migration --- install/alpine-miniflux-install.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/install/alpine-miniflux-install.sh b/install/alpine-miniflux-install.sh index b178b6de2..3a610a462 100644 --- a/install/alpine-miniflux-install.sh +++ b/install/alpine-miniflux-install.sh @@ -73,10 +73,9 @@ ADMIN_PASS="miniflux" } >~/miniflux-admin.creds msg_ok "Configured Miniflux" -# msg_info "Applying Database Migrations and Creating Admin" +msg_info "Applying Database Migrations and Creating Admin" miniflux -c /etc/miniflux.conf -migrate -# miniflux -c /etc/miniflux.conf -create-admin -# msg_ok "Applied Migrations and Created Admin" +msg_ok "Applied Migrations and Created Admin" msg_info "Enabling and Starting Miniflux" $STD rc-update add miniflux default From 49eef08144fe7efda1eb6f4820c11a2915a0e0a7 Mon Sep 17 00:00:00 2001 From: A <37412+phof@users.noreply.github.com> Date: Thu, 23 Oct 2025 16:39:07 +0200 Subject: [PATCH 3/3] dynamic password --- install/alpine-miniflux-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/alpine-miniflux-install.sh b/install/alpine-miniflux-install.sh index 3a610a462..583f7f7c5 100644 --- a/install/alpine-miniflux-install.sh +++ b/install/alpine-miniflux-install.sh @@ -55,7 +55,7 @@ msg_info "Configuring Miniflux" mkdir -p /etc/miniflux IPADDRESS=$(hostname -i) ADMIN_USER="admin" -ADMIN_PASS="miniflux" +ADMIN_PASS=$(openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c20) { echo "LOG_DATE_TIME=yes" echo "LISTEN_ADDR=0.0.0.0:8080"