containers/marketplace — nginx:alpine app (standard drop-in contract: config + tagged compose + icon + install hook) whose docroot serves BOTH halves of the marketplace: the signed catalog channel tree (index.json / payloads, published into data/<channel>/ by the release tools) and a self-contained client-rendered browse site over the same file (search, category chips, trust badges, copyable 'libreportal app add <slug>' — no third-party assets, no backend, no build step). The official marketplace is an instance of this app; self-hosting one = installing it and pointing CFG_RELEASE_BASE_URL at it. Boxes only ever trust the minisign signature on the catalog, never the website. New generic gating convention: CFG_<APP>_DEV_ONLY=true keeps an app out of the App Center grid unless Developer Mode is on (CFG_DEV_MODE, the same flag the **DEV** config-field filter uses); an installed dev-only app always stays visible. The marketplace app is the first user. Cache policy: catalog/channel manifests no-cache; payloads short revalidating cache (same-id re-publish); version-pinned release artifacts immutable. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: librelad <librelad@digitalangels.vip>
64 lines
3.4 KiB
Plaintext
64 lines
3.4 KiB
Plaintext
#
|
|
# =============================================================================
|
|
# 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
|
|
# 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
|
|
# DEV_ONLY = if true, hidden from the App Center unless Developer Mode is on
|
|
#
|
|
CFG_MARKETPLACE_APP_NAME=marketplace
|
|
CFG_MARKETPLACE_BACKUP=true
|
|
CFG_MARKETPLACE_BACKUP_STRATEGY=auto
|
|
CFG_MARKETPLACE_COMPOSE_FILE=default
|
|
CFG_MARKETPLACE_HEALTHCHECK=false
|
|
CFG_MARKETPLACE_AUTHELIA=false
|
|
CFG_MARKETPLACE_HEADSCALE=false
|
|
CFG_MARKETPLACE_DEV_ONLY=true
|
|
#
|
|
# =============================================================================
|
|
# 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_MARKETPLACE_CATEGORY="system"
|
|
CFG_MARKETPLACE_TITLE="LibrePortal Marketplace"
|
|
CFG_MARKETPLACE_DESCRIPTION="Host your own app catalog and registry"
|
|
CFG_MARKETPLACE_LONG_DESCRIPTION="Serves a signed LibrePortal artifact channel (apps, hotfixes, releases) plus a browsable marketplace website over it. The official marketplace runs this exact app; point any box's CFG_RELEASE_BASE_URL at your instance to use it"
|
|
CFG_MARKETPLACE_URL="https://github.com/Webstar/LibrePortal"
|
|
CFG_MARKETPLACE_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 on traefik, if false allow all
|
|
#
|
|
CFG_MARKETPLACE_DOMAIN=1
|
|
CFG_MARKETPLACE_WHITELIST=false
|
|
CFG_MARKETPLACE_NETWORK=default
|
|
#
|
|
# =============================================================================
|
|
# PORT CONFIGURATION
|
|
# =============================================================================
|
|
# PORT_ = port configuration: app|name|external:internal|access|protocol|login|traefik|webui|description
|
|
# - app: application name
|
|
# - name: service identifier (webui, api, 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_MARKETPLACE_PORT_1="marketplace-service|webui|random:80|public|tcp|false|true|true|Marketplace|/|marketplace"
|