chore: remove Focalboard from the catalogue

Retired last commit, deleted now at the maintainer's call. Mattermost
ended support in 2023, the community repo is asking for maintainers, and
the image had not been rebuilt in 1042 days — the staleness signal's
worst case after speedtest. Vikunja covers the same ground and is
actively developed.

Self-contained: every reference lived inside containers/focalboard/ plus
its generated manifest entries, so nothing else needed touching. Git
keeps the history.

Anyone with it already installed keeps a running container and their
data — removing the template only stops NEW installs. Their app will now
report as unknown in the App Center rather than offering an update,
which is the honest state for software with no upstream.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
librelad 2026-08-18 04:13:00 +01:00
parent 183ba00690
commit f596b36a73
12 changed files with 0 additions and 350 deletions

View File

@ -1,48 +0,0 @@
networks:
DOCKER_NETWORK_DATA: #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
external: true
services:
focalboard-service: #LIBREPORTAL|SERVICE_TAG_1|focalboard-service
image: mattermost/focalboard:latest #LIBREPORTAL|FOCALBOARD_VERSION_TAG|latest
container_name: focalboard-service
# GLUETUN_OFF_BEGIN
ports:
- "PORTS_DATA_1" #LIBREPORTAL|PORTS_TAG_1|PORTS_DATA_1
# GLUETUN_OFF_END
volumes:
- ./data:/opt/focalboard/data
environment:
- VIRTUAL_HOST:DOMAINSUBNAME_DATA #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA
- VIRTUAL_PORT:8000
- TZ:TIMEZONE_DATA #LIBREPORTAL|TIMEZONE_TAG|TIMEZONE_DATA
restart: unless-stopped
healthcheck:
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
labels:
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
libreportal.backup.db: "sqlite:::data/focalboard.db"
libreportal.backup.files: "focalboard-service:/opt/focalboard/data:data"
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA
# TRAEFIK_PORT_1_BEGIN
traefik.http.routers.focalboard-service.entrypoints: web,websecure
traefik.http.routers.focalboard-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1
traefik.http.routers.focalboard-service.tls: true
traefik.http.routers.focalboard-service.tls.certresolver: production
traefik.http.services.focalboard-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1
traefik.http.routers.focalboard-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1
# TRAEFIK_PORT_1_END
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
# GLUETUN_OFF_BEGIN
networks:
DOCKER_NETWORK_DATA: #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
ipv4_address: IP_DATA_1 #LIBREPORTAL|IP_TAG_1|IP_DATA_1
# GLUETUN_OFF_END
# GLUETUN_ON_BEGIN
# network_mode: "container:gluetun-service"
# GLUETUN_ON_END
logging:
driver: "json-file"
options:
max-size: "1m"

View File

@ -1,69 +0,0 @@
#
# =============================================================================
# GENERAL CONFIGURATION
# =============================================================================
# APP_NAME = name of application for use in scripts
# COMPOSE_FILE = default for no app_name in docker-compose file name, app if there is
# BACKUP = if true, include this application in backup operations
# UPDATE_TYPE = auto: new image builds are applied automatically (a recovery snapshot is taken first), manual: only when you press Update
# HEALTHCHECK = if true, default docker health checks for that container will be enabled
# AUTHELIA = if true, use Authelia authentication, if false turned off.
# HEADSCALE = options : false, local, remote (see general config). e.g false or local,remote
#
CFG_FOCALBOARD_APP_NAME=focalboard
CFG_FOCALBOARD_BACKUP=true
CFG_FOCALBOARD_BACKUP_STRATEGY=auto
CFG_FOCALBOARD_UPDATE_TYPE=manual
CFG_FOCALBOARD_COMPOSE_FILE=default
CFG_FOCALBOARD_HEALTHCHECK=true
CFG_FOCALBOARD_AUTHELIA=false
CFG_FOCALBOARD_HEADSCALE=false
# =============================================================================
# METADATA
# =============================================================================
# CATEGORY = application category for grouping
# TITLE = display name for the application
# DESCRIPTION = short description of the application
# LONG_DESCRIPTION = detailed description of the application
# URL = source repository or documentation URL
# ACTIONS = available actions for this application
#
CFG_FOCALBOARD_CATEGORY="productivity"
CFG_FOCALBOARD_TITLE="Focalboard"
CFG_FOCALBOARD_DESCRIPTION="Project Management (unmaintained)"
CFG_FOCALBOARD_LONG_DESCRIPTION="NO LONGER MAINTAINED. Mattermost ended support in 2023 and the community repository is asking for maintainers; the image has not been rebuilt since October 2023, so it receives no security updates. Existing installs keep working and your data is untouched, but for a new board use Vikunja instead. Kept in the catalogue only so current users are not stranded"
CFG_FOCALBOARD_URL="https://github.com/mattermost/focalboard"
CFG_FOCALBOARD_ACTIONS="configure|install|restart|shutdown|uninstall"
# =============================================================================
# NETWORK CONFIGURATION
# =============================================================================
# DOMAIN = number of domain from the general config, useful when using multiple domains
# WHITELIST = if true only allow whitelisted ips (see general config), if false allow all
#
CFG_FOCALBOARD_DOMAIN=1
CFG_FOCALBOARD_WHITELIST=false
CFG_FOCALBOARD_NETWORK=default
# =============================================================================
# PORT CONFIGURATION
# =============================================================================
# PORT_ = port configuration: app|name|external:internal|access|protocol|login|traefik|webui|description
# - app: application name
# - name: service identifier (webui, dns, ssh, etc.)
# - external:internal: port mapping (external can be 'random' for auto-allocation)
# - access: 'public' (internet accessible), 'private' (local network only), 'disabled' (not running)
# - protocol: 'tcp' or 'udp'
# - login: if true, this port requires basic-auth via Traefik (only meaningful when traefik=true)
# - traefik: if true, Traefik handles this port (reverse proxy)
# - webui: if true, this port serves the main web interface
# - description: human-readable description of the service
#
CFG_FOCALBOARD_PORT_1="focalboard-service|webui|random:8000|public|tcp|false|true|true|Web Interface||board"
# AUTH_PROFILE = capability tier for the WebUI auth tools (single_password | user_password | multi_user)
CFG_FOCALBOARD_AUTH_PROFILE=multi_user
CFG_FOCALBOARD_ADMIN_USER=
CFG_FOCALBOARD_ADMIN_EMAIL=
CFG_FOCALBOARD_ADMIN_PASSWORD=RANDOMIZEDPASSWORD1

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 512 512"><path d="m346 92-5.7-25.8L374.6 0l21 35.4 41.1-1.4-37.1 64.6-26.4 9.8-74 135.4c8.4 9.7 12.4 23.1 7.7 36.9-6.9 20.3-29.5 30.9-50.5 23.8s-32.5-29.3-25.7-49.6c4.6-13.6 16.3-22.9 29.9-25.4 3.4-.7 6.9-.8 10.3-.5zm37.9 41.6-3.7 39.1c37.2 39.3 53.9 95.9 34.7 152.5-27 79.8-116 121.7-198.9 93.7-82.8-28-128.1-115.4-101.1-195.2 23.9-70.6 96.4-110.2 166.6-101.4L310.4 97C208.7 69.2 93.1 123.5 56 233.1 18.6 343.6 77.8 463.4 188.3 500.8 298.7 538.2 418.6 479 456 368.5c30.5-90.2-3.8-182.3-72.1-234.9m-225.6 98.3c-10 29.4-6.6 60.2 6.8 86.2 13.4 25.8 36.7 46.9 66.9 57.1s61.5 7.7 87.8-4.7c26.5-12.5 47.8-34.9 57.8-64.3 6.3-18.7 7.2-37.2 3.9-54.5-4-20.8-14.1-39.8-28.2-55.2-1.4-1.6-2.9-3.1-4.4-4.6l-8.2 41c4.5 7.7 7.7 16 9.4 24.8 2.3 12.1 1.7 25.1-2.8 38.2-7.1 20.9-22.3 36.8-41.2 45.7-19.1 9-41.9 10.8-63.9 3.3s-39.1-22.8-48.8-41.5c-9.6-18.5-12-40.4-5-61.3 4.7-13.8 12.8-25.4 23.3-34.2 10.9-9.3 24.3-15.5 38.6-18.1h.2c2.4-.5 4.7-.8 7.1-1l28.8-30.2c-13.6-2.6-27.7-2.9-41.9-.1-19.9 3.6-38.4 12.3-53.5 25.1-14.5 12.4-26.1 28.8-32.7 48.3" style="fill:#1c58d9"/></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,67 +0,0 @@
#!/bin/bash
_focalboardSqlite() {
# The compose mount is ./data:/opt/focalboard/data — focalboard writes its
# sqlite db at /opt/focalboard/data/focalboard.db, so the auth tools must
# reach it there (the bare /data inside the container isn't mounted).
runFileOp docker exec -i focalboard-service sqlite3 /opt/focalboard/data/focalboard.db "$1" 2>&1
}
_focalboardBcrypt() {
if ! command -v htpasswd >/dev/null 2>&1; then
isError "htpasswd is required to bcrypt the password."; return 1
fi
htpasswd -bnBC 10 "" "$1" | tr -d ':\n'
}
authAdapter_focalboard_setPassword() {
local user="$1" password="$2"
[[ -z "$user" ]] && { isError "Username is required."; return 1; }
[[ -z "$password" ]] && password=$(generateRandomPassword)
local hash; hash=$(_focalboardBcrypt "$password") || return 1
local out; out=$(_focalboardSqlite "UPDATE users SET password = '${hash//\'/\'\'}' WHERE username = '${user//\'/\'\'}'; SELECT changes();")
if [[ "$out" != "1" ]]; then isError "Focalboard reset failed (no user '$user'): $out"; return 1; fi
if [[ "$user" == "${CFG_FOCALBOARD_ADMIN_USER:-}" ]]; then
authPersistCfg focalboard ADMIN_PASSWORD "$password"
fi
isSuccessful "Focalboard password set for $user — New password: $password"
}
authAdapter_focalboard_createUser() {
local user="$1" password="$2" email="$3" isAdmin="$4"
[[ -z "$user" || -z "$email" ]] && { isError "Username and email are required."; return 1; }
[[ -z "$password" ]] && password=$(generateRandomPassword)
local hash; hash=$(_focalboardBcrypt "$password") || return 1
local id="ez_$(date +%s)_${RANDOM}"
local now=$(date +%s%N | cut -c1-13)
local sql="INSERT INTO users (id, username, email, password, props, create_at, update_at, delete_at) VALUES ('$id','${user//\'/\'\'}','${email//\'/\'\'}','${hash//\'/\'\'}','{}',$now,$now,0);"
local out; out=$(_focalboardSqlite "$sql")
if [[ -n "$out" && "$out" != *"changes"* ]]; then isError "Focalboard create failed: $out"; return 1; fi
if [[ "$isAdmin" == "true" && -z "${CFG_FOCALBOARD_ADMIN_USER:-}" ]]; then
authPersistCfg focalboard ADMIN_USER "$user"
authPersistCfg focalboard ADMIN_PASSWORD "$password"
fi
isSuccessful "Focalboard user created — User: $user — Email: $email — Password: $password"
}
authAdapter_focalboard_listUsers() {
_focalboardSqlite ".mode tabs
SELECT 'EZ_USER', email, username, '' FROM users WHERE delete_at = 0 ORDER BY username;"
}
authAdapter_focalboard_deleteUser() {
local user="$1"
[[ -z "$user" ]] && { isError "Username is required."; return 1; }
local now=$(date +%s%N | cut -c1-13)
local out; out=$(_focalboardSqlite "UPDATE users SET delete_at = $now WHERE username = '${user//\'/\'\'}'; SELECT changes();")
[[ "$out" != "1" ]] && { isError "Focalboard delete failed (no user '$user')."; return 1; }
isSuccessful "Focalboard user '$user' deleted (soft-delete)."
}
authAdapter_focalboard_setAdmin() {
local user="$1" isAdmin="$2"
isNotice "Focalboard admin toggle is not exposed via SQL — set in the workspace UI."
return 1
}

View File

@ -1,6 +0,0 @@
#!/bin/bash
appFocalboardSetAdmin() {
local args="$1"
authAdapterCall focalboard setAdmin "$(authToolArg "$args" username)" "$(authToolArg "$args" admin)"
}

View File

@ -1,12 +0,0 @@
#!/bin/bash
# Post-install/update specifics for Focalboard — dispatched by appUpdateSpecifics.
appUpdateSpecifics_focalboard() {
local app_name="$1"
# Focalboard runs as nobody (65534) and writes its sqlite db + uploads under
# its mounted data dir; fixPermissionsBeforeStart hands the dir to the install
# user, so give it to 65534 here or the server can't open the database.
# Setting shouldrestart (not local) requests the restart in appUpdateSpecifics.
runOwnership app-data-nobody "$app_name"
shouldrestart="true"
}

View File

@ -1,83 +0,0 @@
{
"tools": [
{
"id": "reset_password",
"category": "users",
"label": "Reset User Password",
"description": "Set a new password for an existing user. Leave blank to generate one.",
"icon": "🔑",
"fields": [
{
"name": "username",
"label": "Username",
"type": "text",
"required": true
},
{
"name": "password",
"label": "New password",
"type": "password",
"placeholder": "Leave blank to generate"
}
]
},
{
"id": "create_account",
"category": "users",
"label": "Create User Account",
"description": "Add a new user. Tick \"Make admin\" for full rights.",
"icon": "👤",
"fields": [
{
"name": "username",
"label": "Username",
"type": "text",
"required": true
},
{
"name": "email",
"label": "Email",
"type": "text",
"required": true
},
{
"name": "password",
"label": "Password",
"type": "password",
"placeholder": "Leave blank to generate"
},
{
"name": "admin",
"label": "Make admin",
"type": "checkbox",
"default": false
}
]
},
{
"id": "list_users",
"category": "users",
"label": "List Users",
"description": "List every user.",
"icon": "📋",
"fields": []
},
{
"id": "delete_user",
"category": "users",
"label": "Delete User Account",
"description": "Permanently remove a user.",
"icon": "🗑",
"destructive": true,
"confirm": "This cannot be undone.",
"fields": [
{
"name": "username",
"label": "Username",
"type": "text",
"required": true
}
]
}
]
}

View File

@ -1,6 +0,0 @@
#!/bin/bash
appFocalboardCreateAccount() {
local args="$1"
authAdapterCall focalboard createUser "$(authToolArg "$args" username)" "$(authToolArg "$args" password)" "$(authToolArg "$args" email)" "$(authToolArg "$args" admin)"
}

View File

@ -1,6 +0,0 @@
#!/bin/bash
appFocalboardDeleteUser() {
local args="$1"
authAdapterCall focalboard deleteUser "$(authToolArg "$args" username)"
}

View File

@ -1,5 +0,0 @@
#!/bin/bash
appFocalboardListUsers() {
authAdapterCall focalboard listUsers
}

View File

@ -1,8 +0,0 @@
#!/bin/bash
appFocalboardResetPassword() {
local args="$1"
authAdapterCall focalboard setPassword \
"$(authToolArg "$args" username)" \
"$(authToolArg "$args" password)"
}

View File

@ -37,11 +37,6 @@ declare -gA LP_FN_MAP=(
[appCrowdSecVerifyFirewall]="crowdsec/scripts/crowdsec_verify_firewall.sh"
[appDashyManageShortcuts]="dashy/tools/dashy_manage_shortcuts.sh"
[appDashyUpdateConf]="dashy/scripts/dashy_update_conf.sh"
[appFocalboardCreateAccount]="focalboard/tools/focalboard_create_account.sh"
[appFocalboardDeleteUser]="focalboard/tools/focalboard_delete_user.sh"
[appFocalboardListUsers]="focalboard/tools/focalboard_list_users.sh"
[appFocalboardResetPassword]="focalboard/tools/focalboard_reset_password.sh"
[appFocalboardSetAdmin]="focalboard/scripts/focalboard_set_admin.sh"
[appGetKeyData]="app/app_get_key_data.sh"
[appGiteaCreateAccount]="gitea/tools/gitea_create_account.sh"
[appGiteaDeleteUser]="gitea/tools/gitea_delete_user.sh"
@ -97,7 +92,6 @@ declare -gA LP_FN_MAP=(
[appUpdateSpecifics]="app/app_update_specifics.sh"
[appUpdateSpecifics_adguard]="adguard/scripts/adguard_update_specifics.sh"
[appUpdateSpecifics_dashy]="dashy/scripts/dashy_update_specifics.sh"
[appUpdateSpecifics_focalboard]="focalboard/scripts/focalboard_update_specifics.sh"
[appUpdateSpecifics_libreportal]="libreportal/scripts/libreportal_update_specifics.sh"
[appUpdateSpecifics_nextcloud]="nextcloud/scripts/nextcloud_update_specifics.sh"
[appUpdateSpecifics_pihole]="pihole/scripts/pihole_update_specifics.sh"
@ -138,11 +132,6 @@ declare -gA LP_FN_MAP=(
[authAdapter_bookstack_setPassword]="bookstack/scripts/bookstack_auth.sh"
[authAdapterCall]="app/auth_adapter.sh"
[authAdapterCanDo]="app/auth_adapter.sh"
[authAdapter_focalboard_createUser]="focalboard/scripts/focalboard_auth.sh"
[authAdapter_focalboard_deleteUser]="focalboard/scripts/focalboard_auth.sh"
[authAdapter_focalboard_listUsers]="focalboard/scripts/focalboard_auth.sh"
[authAdapter_focalboard_setAdmin]="focalboard/scripts/focalboard_auth.sh"
[authAdapter_focalboard_setPassword]="focalboard/scripts/focalboard_auth.sh"
[authAdapter_gitea_createUser]="gitea/scripts/gitea_auth.sh"
[authAdapter_gitea_deleteUser]="gitea/scripts/gitea_auth.sh"
[authAdapter_gitea_listUsers]="gitea/scripts/gitea_auth.sh"
@ -473,8 +462,6 @@ declare -gA LP_FN_MAP=(
[fixConfigPermissions]="function/permission/config.sh"
[fixFolderPermissions]="function/permission/libreportal_folders.sh"
[fixPermissionsBeforeStart]="function/permission/before_start.sh"
[_focalboardBcrypt]="focalboard/scripts/focalboard_auth.sh"
[_focalboardSqlite]="focalboard/scripts/focalboard_auth.sh"
[generateHealthReport]="task/crontab_check_processor.sh"
[generateInstallName]="checks/generate_install_name.sh"
[generateRandomPassword]="config/password/password_generate.sh"
@ -1085,11 +1072,6 @@ declare -gA LP_FN_ROOT=(
[appCrowdSecVerifyFirewall]="containers"
[appDashyManageShortcuts]="containers"
[appDashyUpdateConf]="containers"
[appFocalboardCreateAccount]="containers"
[appFocalboardDeleteUser]="containers"
[appFocalboardListUsers]="containers"
[appFocalboardResetPassword]="containers"
[appFocalboardSetAdmin]="containers"
[appGetKeyData]="scripts"
[appGiteaCreateAccount]="containers"
[appGiteaDeleteUser]="containers"
@ -1145,7 +1127,6 @@ declare -gA LP_FN_ROOT=(
[appUpdateSpecifics]="scripts"
[appUpdateSpecifics_adguard]="containers"
[appUpdateSpecifics_dashy]="containers"
[appUpdateSpecifics_focalboard]="containers"
[appUpdateSpecifics_libreportal]="containers"
[appUpdateSpecifics_nextcloud]="containers"
[appUpdateSpecifics_pihole]="containers"
@ -1186,11 +1167,6 @@ declare -gA LP_FN_ROOT=(
[authAdapter_bookstack_setPassword]="containers"
[authAdapterCall]="scripts"
[authAdapterCanDo]="scripts"
[authAdapter_focalboard_createUser]="containers"
[authAdapter_focalboard_deleteUser]="containers"
[authAdapter_focalboard_listUsers]="containers"
[authAdapter_focalboard_setAdmin]="containers"
[authAdapter_focalboard_setPassword]="containers"
[authAdapter_gitea_createUser]="containers"
[authAdapter_gitea_deleteUser]="containers"
[authAdapter_gitea_listUsers]="containers"
@ -1521,8 +1497,6 @@ declare -gA LP_FN_ROOT=(
[fixConfigPermissions]="scripts"
[fixFolderPermissions]="scripts"
[fixPermissionsBeforeStart]="scripts"
[_focalboardBcrypt]="containers"
[_focalboardSqlite]="containers"
[generateHealthReport]="scripts"
[generateInstallName]="scripts"
[generateRandomPassword]="scripts"
@ -2167,11 +2141,6 @@ appCrowdSecUpdate() { unset -f appCrowdSecUpdate; __lpAutoload "${install_contai
appCrowdSecVerifyFirewall() { unset -f appCrowdSecVerifyFirewall; __lpAutoload "${install_containers_dir}crowdsec/scripts/crowdsec_verify_firewall.sh"; appCrowdSecVerifyFirewall "$@"; }
appDashyManageShortcuts() { unset -f appDashyManageShortcuts; __lpAutoload "${install_containers_dir}dashy/tools/dashy_manage_shortcuts.sh"; appDashyManageShortcuts "$@"; }
appDashyUpdateConf() { unset -f appDashyUpdateConf; __lpAutoload "${install_containers_dir}dashy/scripts/dashy_update_conf.sh"; appDashyUpdateConf "$@"; }
appFocalboardCreateAccount() { unset -f appFocalboardCreateAccount; __lpAutoload "${install_containers_dir}focalboard/tools/focalboard_create_account.sh"; appFocalboardCreateAccount "$@"; }
appFocalboardDeleteUser() { unset -f appFocalboardDeleteUser; __lpAutoload "${install_containers_dir}focalboard/tools/focalboard_delete_user.sh"; appFocalboardDeleteUser "$@"; }
appFocalboardListUsers() { unset -f appFocalboardListUsers; __lpAutoload "${install_containers_dir}focalboard/tools/focalboard_list_users.sh"; appFocalboardListUsers "$@"; }
appFocalboardResetPassword() { unset -f appFocalboardResetPassword; __lpAutoload "${install_containers_dir}focalboard/tools/focalboard_reset_password.sh"; appFocalboardResetPassword "$@"; }
appFocalboardSetAdmin() { unset -f appFocalboardSetAdmin; __lpAutoload "${install_containers_dir}focalboard/scripts/focalboard_set_admin.sh"; appFocalboardSetAdmin "$@"; }
appGetKeyData() { unset -f appGetKeyData; __lpAutoload "${install_scripts_dir}app/app_get_key_data.sh"; appGetKeyData "$@"; }
appGiteaCreateAccount() { unset -f appGiteaCreateAccount; __lpAutoload "${install_containers_dir}gitea/tools/gitea_create_account.sh"; appGiteaCreateAccount "$@"; }
appGiteaDeleteUser() { unset -f appGiteaDeleteUser; __lpAutoload "${install_containers_dir}gitea/tools/gitea_delete_user.sh"; appGiteaDeleteUser "$@"; }
@ -2227,7 +2196,6 @@ appUninstallMenu() { unset -f appUninstallMenu; __lpAutoload "${install_scripts_
appUpdateSpecifics() { unset -f appUpdateSpecifics; __lpAutoload "${install_scripts_dir}app/app_update_specifics.sh"; appUpdateSpecifics "$@"; }
appUpdateSpecifics_adguard() { unset -f appUpdateSpecifics_adguard; __lpAutoload "${install_containers_dir}adguard/scripts/adguard_update_specifics.sh"; appUpdateSpecifics_adguard "$@"; }
appUpdateSpecifics_dashy() { unset -f appUpdateSpecifics_dashy; __lpAutoload "${install_containers_dir}dashy/scripts/dashy_update_specifics.sh"; appUpdateSpecifics_dashy "$@"; }
appUpdateSpecifics_focalboard() { unset -f appUpdateSpecifics_focalboard; __lpAutoload "${install_containers_dir}focalboard/scripts/focalboard_update_specifics.sh"; appUpdateSpecifics_focalboard "$@"; }
appUpdateSpecifics_libreportal() { unset -f appUpdateSpecifics_libreportal; __lpAutoload "${install_containers_dir}libreportal/scripts/libreportal_update_specifics.sh"; appUpdateSpecifics_libreportal "$@"; }
appUpdateSpecifics_nextcloud() { unset -f appUpdateSpecifics_nextcloud; __lpAutoload "${install_containers_dir}nextcloud/scripts/nextcloud_update_specifics.sh"; appUpdateSpecifics_nextcloud "$@"; }
appUpdateSpecifics_pihole() { unset -f appUpdateSpecifics_pihole; __lpAutoload "${install_containers_dir}pihole/scripts/pihole_update_specifics.sh"; appUpdateSpecifics_pihole "$@"; }
@ -2268,11 +2236,6 @@ authAdapter_bookstack_setAdmin() { unset -f authAdapter_bookstack_setAdmin; __lp
authAdapter_bookstack_setPassword() { unset -f authAdapter_bookstack_setPassword; __lpAutoload "${install_containers_dir}bookstack/scripts/bookstack_auth.sh"; authAdapter_bookstack_setPassword "$@"; }
authAdapterCall() { unset -f authAdapterCall; __lpAutoload "${install_scripts_dir}app/auth_adapter.sh"; authAdapterCall "$@"; }
authAdapterCanDo() { unset -f authAdapterCanDo; __lpAutoload "${install_scripts_dir}app/auth_adapter.sh"; authAdapterCanDo "$@"; }
authAdapter_focalboard_createUser() { unset -f authAdapter_focalboard_createUser; __lpAutoload "${install_containers_dir}focalboard/scripts/focalboard_auth.sh"; authAdapter_focalboard_createUser "$@"; }
authAdapter_focalboard_deleteUser() { unset -f authAdapter_focalboard_deleteUser; __lpAutoload "${install_containers_dir}focalboard/scripts/focalboard_auth.sh"; authAdapter_focalboard_deleteUser "$@"; }
authAdapter_focalboard_listUsers() { unset -f authAdapter_focalboard_listUsers; __lpAutoload "${install_containers_dir}focalboard/scripts/focalboard_auth.sh"; authAdapter_focalboard_listUsers "$@"; }
authAdapter_focalboard_setAdmin() { unset -f authAdapter_focalboard_setAdmin; __lpAutoload "${install_containers_dir}focalboard/scripts/focalboard_auth.sh"; authAdapter_focalboard_setAdmin "$@"; }
authAdapter_focalboard_setPassword() { unset -f authAdapter_focalboard_setPassword; __lpAutoload "${install_containers_dir}focalboard/scripts/focalboard_auth.sh"; authAdapter_focalboard_setPassword "$@"; }
authAdapter_gitea_createUser() { unset -f authAdapter_gitea_createUser; __lpAutoload "${install_containers_dir}gitea/scripts/gitea_auth.sh"; authAdapter_gitea_createUser "$@"; }
authAdapter_gitea_deleteUser() { unset -f authAdapter_gitea_deleteUser; __lpAutoload "${install_containers_dir}gitea/scripts/gitea_auth.sh"; authAdapter_gitea_deleteUser "$@"; }
authAdapter_gitea_listUsers() { unset -f authAdapter_gitea_listUsers; __lpAutoload "${install_containers_dir}gitea/scripts/gitea_auth.sh"; authAdapter_gitea_listUsers "$@"; }
@ -2603,8 +2566,6 @@ fixAppFolderPermissions() { unset -f fixAppFolderPermissions; __lpAutoload "${in
fixConfigPermissions() { unset -f fixConfigPermissions; __lpAutoload "${install_scripts_dir}function/permission/config.sh"; fixConfigPermissions "$@"; }
fixFolderPermissions() { unset -f fixFolderPermissions; __lpAutoload "${install_scripts_dir}function/permission/libreportal_folders.sh"; fixFolderPermissions "$@"; }
fixPermissionsBeforeStart() { unset -f fixPermissionsBeforeStart; __lpAutoload "${install_scripts_dir}function/permission/before_start.sh"; fixPermissionsBeforeStart "$@"; }
_focalboardBcrypt() { unset -f _focalboardBcrypt; __lpAutoload "${install_containers_dir}focalboard/scripts/focalboard_auth.sh"; _focalboardBcrypt "$@"; }
_focalboardSqlite() { unset -f _focalboardSqlite; __lpAutoload "${install_containers_dir}focalboard/scripts/focalboard_auth.sh"; _focalboardSqlite "$@"; }
generateHealthReport() { unset -f generateHealthReport; __lpAutoload "${install_scripts_dir}task/crontab_check_processor.sh"; generateHealthReport "$@"; }
generateInstallName() { unset -f generateInstallName; __lpAutoload "${install_scripts_dir}checks/generate_install_name.sh"; generateInstallName "$@"; }
generateRandomPassword() { unset -f generateRandomPassword; __lpAutoload "${install_scripts_dir}config/password/password_generate.sh"; generateRandomPassword "$@"; }