Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions ct/alpine-miniflux.sh
Original file line number Diff line number Diff line change
@@ -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}"


44 changes: 44 additions & 0 deletions frontend/public/json/miniflux.json
Original file line number Diff line number Diff line change
@@ -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"
}
]
}
92 changes: 92 additions & 0 deletions install/alpine-miniflux-install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#!/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=$(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"
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
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"