128 lines
4.9 KiB
Makefile
128 lines
4.9 KiB
Makefile
set fallback := true
|
|
|
|
export MINIFLUX_NAMESPACE := env("MINIFLUX_NAMESPACE", "miniflux")
|
|
export MINIFLUX_CHART_VERSION := env("MINIFLUX_CHART_VERSION", "0.9.2")
|
|
export MINIFLUX_DB_USERNAME := env("MINIFLUX_DB_USERNAME", "miniflux")
|
|
export MINIFLUX_DB_PASSWORD := env("MINIFLUX_DB_PASSWORD", "")
|
|
export MINIFLUX_DB_NAME := env("MINIFLUX_DB_NAME", "miniflux")
|
|
export MINIFLUX_ADMIN_USERNAME := env("MINIFLUX_ADMIN_USERNAME", "admin")
|
|
export MINIFLUX_ADMIN_PASSWORD := env("MINIFLUX_ADMIN_PASSWORD", "")
|
|
|
|
[private]
|
|
default:
|
|
@just --list --unsorted --list-submodules
|
|
|
|
# Add Helm repository
|
|
add-helm-repo:
|
|
helm repo add gabe565 https://charts.gabe565.com
|
|
helm repo update
|
|
|
|
# Remove Helm repository
|
|
remove-helm-repo:
|
|
helm repo remove gabe565
|
|
|
|
# Install Miniflux
|
|
install:
|
|
#!/bin/bash
|
|
set -euo pipefail
|
|
export MINIFLUX_HOST=${MINIFLUX_HOST:-}
|
|
while [ -z "${MINIFLUX_HOST}" ]; do
|
|
MINIFLUX_HOST=$(
|
|
gum input --prompt="Miniflux host (FQDN): " --width=100 \
|
|
--placeholder="e.g., miniflux.example.com"
|
|
)
|
|
done
|
|
|
|
# Check if PostgreSQL user already exists
|
|
if just postgres::user-exists ${MINIFLUX_DB_USERNAME} &>/dev/null; then
|
|
echo "PostgreSQL user '${MINIFLUX_DB_USERNAME}' already exists."
|
|
# Use existing password from Vault
|
|
if existing_db_pw=$(just vault::get miniflux/db password 2>/dev/null); then
|
|
echo "Using existing database password from Vault."
|
|
export MINIFLUX_DB_PASSWORD="${existing_db_pw}"
|
|
else
|
|
echo "Error: User exists but password not found in Vault." >&2
|
|
echo "Please delete the user first: just postgres::delete-user ${MINIFLUX_DB_USERNAME}" >&2
|
|
exit 1
|
|
fi
|
|
else
|
|
if [ -z "${MINIFLUX_DB_PASSWORD}" ]; then
|
|
MINIFLUX_DB_PASSWORD=$(
|
|
gum input --prompt="Database password (empty to auto-generate): " \
|
|
--width=100 --password
|
|
)
|
|
if [ -z "${MINIFLUX_DB_PASSWORD}" ]; then
|
|
MINIFLUX_DB_PASSWORD=$(just utils::random-password)
|
|
echo "Generated random password for database."
|
|
fi
|
|
fi
|
|
export MINIFLUX_DB_PASSWORD
|
|
just postgres::create-user-and-db \
|
|
${MINIFLUX_DB_USERNAME} ${MINIFLUX_DB_NAME} ${MINIFLUX_DB_PASSWORD}
|
|
just vault::put miniflux/db username=${MINIFLUX_DB_USERNAME} \
|
|
password=${MINIFLUX_DB_PASSWORD} database=${MINIFLUX_DB_NAME}
|
|
fi
|
|
|
|
# Check if admin password exists in Vault
|
|
if existing_admin_pw=$(just vault::get miniflux/admin password 2>/dev/null); then
|
|
echo "Using existing admin password from Vault."
|
|
export MINIFLUX_ADMIN_PASSWORD="${existing_admin_pw}"
|
|
else
|
|
if [ -z "${MINIFLUX_ADMIN_PASSWORD}" ]; then
|
|
MINIFLUX_ADMIN_PASSWORD=$(
|
|
gum input --prompt="Admin password (empty to auto-generate): " \
|
|
--width=100 --password
|
|
)
|
|
if [ -z "${MINIFLUX_ADMIN_PASSWORD}" ]; then
|
|
MINIFLUX_ADMIN_PASSWORD=$(just utils::random-password)
|
|
echo "Generated random password for admin."
|
|
fi
|
|
fi
|
|
export MINIFLUX_ADMIN_PASSWORD
|
|
just vault::put miniflux/admin username=${MINIFLUX_ADMIN_USERNAME} \
|
|
password=${MINIFLUX_ADMIN_PASSWORD}
|
|
fi
|
|
|
|
# https://github.com/gabe565/charts/tree/main/charts/miniflux
|
|
MINIFLUX_NAMESPACE=${MINIFLUX_NAMESPACE} \
|
|
gomplate -f miniflux-values.gomplate.yaml -o miniflux-values.yaml
|
|
helm upgrade --install miniflux gabe565/miniflux \
|
|
--version ${MINIFLUX_CHART_VERSION} -n ${MINIFLUX_NAMESPACE} --create-namespace --wait \
|
|
-f miniflux-values.yaml
|
|
|
|
# Uninstall Miniflux
|
|
uninstall:
|
|
helm uninstall miniflux -n ${MINIFLUX_NAMESPACE} --wait --ignore-not-found
|
|
kubectl delete namespace ${MINIFLUX_NAMESPACE} --ignore-not-found
|
|
|
|
# Print admin username
|
|
admin-username:
|
|
@just vault::get miniflux/admin username
|
|
|
|
# Print admin password
|
|
admin-password:
|
|
@just vault::get miniflux/admin password
|
|
|
|
# Reset admin password (deletes admin user from DB so it gets recreated on pod restart)
|
|
reset-admin-password:
|
|
#!/bin/bash
|
|
set -euo pipefail
|
|
echo "This will reset the admin password to the value stored in Vault."
|
|
if ! gum confirm "Continue?"; then
|
|
echo "Cancelled."
|
|
exit 0
|
|
fi
|
|
|
|
echo "Deleting admin user from database..."
|
|
kubectl exec -n postgres postgres-cluster-1 -c postgres -- \
|
|
psql -U postgres -d ${MINIFLUX_DB_NAME} -c "DELETE FROM users WHERE username = '${MINIFLUX_ADMIN_USERNAME}';"
|
|
|
|
echo "Restarting Miniflux pod..."
|
|
kubectl rollout restart deployment/miniflux -n ${MINIFLUX_NAMESPACE}
|
|
kubectl rollout status deployment/miniflux -n ${MINIFLUX_NAMESPACE} --timeout=60s
|
|
|
|
echo ""
|
|
echo "Admin password has been reset."
|
|
echo "Username: $(just vault::get miniflux/admin username)"
|
|
echo "Password: $(just vault::get miniflux/admin password)"
|