diff --git a/lang/sk.json b/lang/sk.json index 333b8e36..080cf8a4 100644 --- a/lang/sk.json +++ b/lang/sk.json @@ -616,6 +616,9 @@ "Authorize this key on the server": "Autorizovať tento kľúč na serveri", "Authorize via 'pct exec' (Borg server is an LXC on a PVE host I can SSH into)": "Autorizovať cez 'pct exec' (Borg server je LXC na PVE hostovi, kam sa viem pripojiť cez SSH)", "Authorized": "Autorizované", + "Authelia administrator": "Správca Authelia", + "Authelia session cookie domain for this portal (for example example.com)": "Doména súboru cookie relácie Authelia pre tento portál (napríklad example.com)", + "Authelia Web UI": "Webové rozhranie Authelia", "Auto-detected firewall backend (nftables/iptables)": "Automaticky zistený firewall backend (nftables/iptables)", "Auto-discover servers on network": "Automaticky nájsť servery v sieti", "Auto-importing ZFS data pools from backup...": "Automaticky importujem ZFS dátové pooly zo zálohy...", @@ -5404,6 +5407,7 @@ "Public UDP port peers connect to": "Verejný port UDP na pripojenie účastníkov", "Public URL of phpMyAdmin when it is served behind a reverse proxy": "Verejné URL phpMyAdmin, keď sa podáva za reverzným proxy", "Public URL used to access Baserow (for example https://baserow.example.com)": "Verejná adresa URL na prístup k Baserow (napríklad https://baserow.example.com)", + "Public HTTPS URL used to open this Authelia portal (for example https://auth.example.com)": "Verejná adresa HTTPS na otvorenie tohto portálu Authelia (napríklad https://auth.example.com)", "Public address clients connect to (vpn.example.com or a public IP)": "Verejná adresa na pripojenie klientov (vpn.example.com alebo verejná IP adresa)", "Public address peers connect to, or auto to detect it (vpn.example.com)": "Verejná adresa, ku ktorej sa pripájajú účastníci, alebo auto na jej zistenie (vpn.example.com)", "Publish each directory from Resources: open it, switch on SMB, NFS or both, and save.": "Zverejnite každý adresár zo zdrojov: otvorte ho, zapnite SMB, NFS alebo oboje a uložte.", @@ -6461,6 +6465,7 @@ "Single-node log storage and query UI.": "Úložisko logov a vyhľadávacie rozhranie pre jeden uzol.", "Single-node observability database for metrics, logs and traces.": "Databáza na jednom uzle na ukladanie metrík, logov a záznamov o priebehu požiadaviek.", "Single-server website CMS and visual editor with SQLite-backed content, media uploads, forms, and publishing.": "Webový CMS a vizuálny editor pre jeden server s obsahom uloženým v SQLite, nahrávaním médií, formulármi a publikovaním.", + "Single sign-on and multi-factor authentication": "Jednotné prihlásenie a viacfaktorové overovanie", "Size": "Veľkosť", "Size in GB of": "Veľkosť v GB pre", "Size of each consume/export volume in GB": "Veľkosť každého dátového zväzku pre consume a export v GB", diff --git a/oci/catalog/apps/authelia.json b/oci/catalog/apps/authelia.json new file mode 100644 index 00000000..adcb37c6 --- /dev/null +++ b/oci/catalog/apps/authelia.json @@ -0,0 +1,453 @@ +{ + "schema_version": "0.4.0", + "kind": "proxmenux.oci-template", + "id": "image-authelia", + "status": "generated-unvalidated", + "catalog_ui": { + "title": { + "en_US": "Authelia", + "es_ES": "Authelia" + }, + "tagline": { + "en_US": "Single sign-on and multi-factor authentication", + "es_ES": "Inicio de sesión único y autenticación multifactor" + }, + "description": { + "en_US": "An open-source authentication and authorization server for protecting web applications. This single-image profile provides a local SQLite database and file notifications; configure your domain, reverse proxy and access rules before protecting other services.", + "es_ES": "Servidor de autenticación y autorización de código abierto para proteger aplicaciones web. Este perfil de una sola imagen incluye una base de datos SQLite local y notificaciones en archivo; configura el dominio, el proxy inverso y las reglas de acceso antes de proteger otros servicios." + }, + "category": "security", + "category_label": "Authentication & Security", + "author": "Authelia", + "developer": "Authelia", + "icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/authelia.webp", + "thumbnail": null, + "screenshots": [], + "architectures": [ + "amd64", + "arm64" + ], + "launch": { + "scheme": "http", + "port": 9091, + "path": "/" + }, + "website": "https://www.authelia.com/", + "documentation": "https://www.authelia.com/integration/deployment/docker/", + "repository": "https://github.com/authelia/authelia", + "tips": [ + "The installer creates a unique admin password and stores only its Argon2id hash in /config/users_database.yml. The password is shown in the installation result.", + "Authelia requires an HTTPS portal URL and a cookie domain matching that hostname. If you use Nginx Proxy Manager, follow the official integration guide and configure trusted proxies and forward-auth separately.", + "The default notifier writes messages to /config/notification.txt. Configure SMTP in /config/configuration.yml if you want email delivery.", + "The initial access-control policy is one_factor. Add explicit access-control rules before attaching Authelia to protected proxy hosts." + ], + "mini_changelog": [], + "display_version": "4.39.28", + "updated_at": "2026-09-17" + }, + "source": { + "provider": "authelia", + "repository": "https://github.com/authelia/authelia", + "default_branch": "master", + "revision": "8da42b2348b0351c6284a2940a9c5eec3d4cd3fd", + "readme_raw_url": "https://raw.githubusercontent.com/authelia/authelia/v4.39.28/examples/compose/lite/compose.yml", + "readme_pushed_at": "2026-09-17T12:13:30Z", + "compose_sha256": "848ce0f70e502981a050ac200d9d1882978a6c3b0f9f0dfcc6d52ce66ca37fb5", + "generated_at": "2026-11-03T09:10:57+00:00", + "image_repository_url": "https://hub.docker.com/r/authelia/authelia" + }, + "container_contract": { + "service_name": "authelia", + "container_name": "authelia", + "image": { + "reference": "docker.io/authelia/authelia:4.39.28", + "registry": "docker.io", + "repository": "docker.io/authelia/authelia", + "tag": "4.39.28", + "digest": null, + "pull_policy": "resolve-selected-tag-to-architecture-digest-at-install" + }, + "environment": [ + { + "name": "PROXMENUX_ADMIN_PASSWORD", + "example": "", + "required": true, + "sensitive": true, + "source": "proxmenux-first-start" + }, + { + "name": "AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET", + "example": "", + "required": true, + "sensitive": true, + "source": "proxmenux-generated" + }, + { + "name": "AUTHELIA_SESSION_SECRET", + "example": "", + "required": true, + "sensitive": true, + "source": "proxmenux-generated" + }, + { + "name": "AUTHELIA_STORAGE_ENCRYPTION_KEY", + "example": "", + "required": true, + "sensitive": true, + "source": "proxmenux-generated" + }, + { + "name": "X_AUTHELIA_CONFIG_FILTERS", + "example": "template", + "required": true, + "sensitive": false, + "source": "authelia-container" + }, + { + "name": "PROXMENUX_AUTHELIA_COOKIE_DOMAIN", + "example": "", + "prompt": "Authelia session cookie domain for this portal (for example example.com)", + "required": true, + "sensitive": false, + "source": "administrator" + }, + { + "name": "PROXMENUX_AUTHELIA_URL", + "example": "", + "prompt": "Public HTTPS URL used to open this Authelia portal (for example https://auth.example.com)", + "required": true, + "sensitive": false, + "source": "administrator" + } + ], + "volumes": [ + { + "id": "config", + "container_path": "/config", + "compose_source_example": "./authelia", + "read_only": false, + "required": true, + "installation_choice": [ + "managed-volume" + ], + "default": "managed-volume", + "managed_volume": { + "backup": true, + "default_size_gb": 4 + } + } + ], + "ports": [ + { + "container_port": 9091, + "published_example": 9091, + "protocol": "tcp", + "required": true, + "proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat" + } + ], + "related_services": [], + "restart": "unless-stopped", + "stop_grace_period": null, + "original_compose": "services:\n authelia:\n entrypoint:\n - /bin/sh\n - /usr/local/bin/proxmenux-authelia-bootstrap\n environment:\n AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET: ${GENERATED_RESET_PASSWORD_JWT_SECRET}\n AUTHELIA_SESSION_SECRET: ${GENERATED_SESSION_SECRET}\n AUTHELIA_STORAGE_ENCRYPTION_KEY: ${GENERATED_STORAGE_ENCRYPTION_KEY}\n PROXMENUX_ADMIN_PASSWORD: ${GENERATED_ADMIN_PASSWORD}\n PROXMENUX_AUTHELIA_COOKIE_DOMAIN: ${AUTHELIA_COOKIE_DOMAIN}\n PROXMENUX_AUTHELIA_URL: ${AUTHELIA_URL}\n X_AUTHELIA_CONFIG_FILTERS: template\n image: docker.io/authelia/authelia:4.39.28\n ports:\n - 9091:9091\n restart: unless-stopped\n volumes:\n - ./authelia:/config\n" + }, + "first_run": { + "endpoints": [ + { + "label": "Authelia Web UI", + "scheme": "http", + "port": 9091, + "path": "/", + "source": "official-image" + } + ], + "credentials": [ + { + "label": "Authelia administrator", + "type": "configured-or-installer-generated", + "username": "admin", + "password": null, + "password_environment": "PROXMENUX_ADMIN_PASSWORD", + "change_required": false, + "source": "Generated on first start and stored as an Argon2id hash in the persistent users file." + } + ] + }, + "proxmox": { + "runtime": "native-oci-lxc", + "technology_status": "proxmox-technology-preview", + "defaults": { + "unprivileged": true, + "ostype": "auto-from-image", + "cores": 2, + "memory_mb": 512, + "swap_mb": 512, + "rootfs_size_gb": 8, + "rootfs_storage": "local-lvm", + "volume_storage": "local-lvm", + "template_storage": "local", + "bridge": "vmbr0", + "ipv4": "dhcp", + "firewall": true, + "host_managed_network": true, + "onboot": false, + "features": [ + "nesting=1" + ], + "shutdown_timeout_seconds": 60 + }, + "image_metadata_policy": { + "entrypoint": "import-from-oci-image", + "cmd": "import-from-oci-image", + "environment": "import-image-env-then-apply-compose-overrides", + "user": "import-from-oci-image", + "working_dir": "import-from-oci-image", + "stop_signal": "import-from-oci-image" + }, + "installer_profile": { + "runtime": { + "compose_entrypoint": [ + "/bin/sh", + "/usr/local/bin/proxmenux-authelia-bootstrap" + ] + }, + "generated_sensitive_environment": { + "PROXMENUX_ADMIN_PASSWORD": { + "strategy": "token-hex", + "bytes": 24, + "prompt": false + }, + "AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET": { + "strategy": "token-hex", + "bytes": 32, + "prompt": false + }, + "AUTHELIA_SESSION_SECRET": { + "strategy": "token-hex", + "bytes": 32, + "prompt": false + }, + "AUTHELIA_STORAGE_ENCRYPTION_KEY": { + "strategy": "token-hex", + "bytes": 32, + "prompt": false + } + }, + "minimum_secret_length": { + "PROXMENUX_ADMIN_PASSWORD": 24, + "AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET": 32, + "AUTHELIA_SESSION_SECRET": 32, + "AUTHELIA_STORAGE_ENCRYPTION_KEY": 32 + }, + "generated_files": [ + { + "container_path": "/config/configuration.yml", + "mode": "0600", + "owner": "mapped-root", + "only_if_missing": true, + "content": "---\nserver:\n address: 'tcp://:9091'\n\nlog:\n level: 'info'\n\ntotp:\n issuer: 'Authelia'\n\nidentity_validation:\n reset_password:\n jwt_secret: 'configured-by-environment'\n\nauthentication_backend:\n file:\n path: '/config/users_database.yml'\n watch: true\n\naccess_control:\n default_policy: 'one_factor'\n\nsession:\n secret: 'configured-by-environment'\n cookies:\n - name: 'authelia_session'\n domain: '{{ env \"PROXMENUX_AUTHELIA_COOKIE_DOMAIN\" }}'\n authelia_url: '{{ env \"PROXMENUX_AUTHELIA_URL\" }}'\n expiration: '1 hour'\n inactivity: '5 minutes'\n\nstorage:\n encryption_key: 'configured-by-environment'\n local:\n path: '/config/db.sqlite3'\n\nnotifier:\n filesystem:\n filename: '/config/notification.txt'\n" + }, + { + "container_path": "/usr/local/bin/proxmenux-authelia-bootstrap", + "mode": "0700", + "owner": "mapped-root", + "only_if_missing": false, + "content": "#!/bin/sh\nset -eu\numask 077\n\nusers_file=/config/users_database.yml\nif [ ! -s \"$users_file\" ]; then\n : \"${PROXMENUX_ADMIN_PASSWORD:?ProxMenux did not provide an initial administrator password}\"\n mkdir -p /config\n hash_output=$(authelia crypto hash generate argon2 --password \"$PROXMENUX_ADMIN_PASSWORD\" --no-confirm)\n password_hash=$(printf '%s\\n' \"$hash_output\" | sed -n 's/^Digest: //p')\n case \"$password_hash\" in\n '$argon2id$'*) ;;\n *) printf '%s\\n' 'Authelia did not return an Argon2id password hash' >&2; exit 1 ;;\n esac\n temporary_file=\"${users_file}.tmp.$$\"\n cat >\"$temporary_file\" <&2; exit 1 ;;\n esac\n temporary_file=\"${users_file}.tmp.$$\"\n cat >\"$temporary_file\" <