{
    "schema": "eupdate-package-specification-v1",
    "author": "PB <pavel.bartos.pb@gmail.com>",
    "project_id": "016eff0ebb83789e",
    "software_id": "eweb-server",
    "software": "eWeb",
    "module": null,
    "release_id": "826d1f1b673794439f8a1659a7e725eb",
    "version": "0.8.38",
    "release_date": "2026-09-15",
    "published_at": "2026-09-15T10:36:53+00:00",
    "bytes": 3770244,
    "sha256": "0e913a33e6601fca82fc15e8007249c8fced8af36885f299bed54fc8a75b2e88",
    "file_count": 758,
    "languages": {
        "Python": {
            "bytes": 1556723,
            "files": 151
        },
        "JavaScript": {
            "bytes": 1242565,
            "files": 29
        },
        "PHP": {
            "bytes": 1111694,
            "files": 50
        },
        "Shell": {
            "bytes": 304803,
            "files": 66
        },
        "CSS": {
            "bytes": 93659,
            "files": 2
        },
        "Java": {
            "bytes": 1918,
            "files": 1
        },
        "Rust": {
            "bytes": 1036,
            "files": 1
        },
        "Go": {
            "bytes": 540,
            "files": 1
        },
        "C#": {
            "bytes": 365,
            "files": 1
        }
    },
    "installation_url": "https://update.estudium.eu/package.php?software_id=eweb-server&version=0.8.38",
    "update_url": "https://update.estudium.eu/package.php?software_id=eweb-server",
    "install_json": {
        "schema": "eweb-install-manifest-v1",
        "schema_version": 1,
        "software": "eWeb",
        "software_id": "eweb-server",
        "version": "0.8.38",
        "package_revision": 1,
        "package_type": "zip",
        "description": {
            "cs": "Cloudflare DNS-01: ověření tokenu a zón před vydáním certifikátu, oprava chyby 6003 a jednotné zpracování tokenů.",
            "en": "Cloudflare DNS-01: verify token and zone access before certificate requests, classify error 6003 and normalize token input consistently."
        },
        "compatibility": {
            "os_types": [
                "linux"
            ],
            "distribution_ids": [
                "debian",
                "ubuntu"
            ],
            "os_versions": [
                "12",
                "24.04",
                "26.04"
            ],
            "distributions": [
                {
                    "id": "debian",
                    "name": "Debian",
                    "versions": [
                        "12"
                    ]
                },
                {
                    "id": "ubuntu",
                    "name": "Ubuntu",
                    "versions": [
                        "24.04",
                        "26.04"
                    ]
                }
            ],
            "detection": {
                "file": "/etc/os-release",
                "distribution_field": "ID",
                "version_field": "VERSION_ID"
            },
            "matching": "Match distribution ID and version together using distributions; os_versions is only an aggregate list.",
            "compatibility_basis": "OS combinations allowed by install.sh; this declaration is not a certification of every hardware/deployment combination.",
            "init_system": "systemd",
            "package_manager": "apt",
            "native_windows_supported": false,
            "native_macos_supported": false,
            "any_linux_distribution": false
        },
        "installation": {
            "working_directory": ".",
            "package_directory": "eweb-server-0.8.38",
            "entrypoint": "./eweb-server-0.8.38/install.sh",
            "shell": "bash",
            "requires_root": true,
            "requires_internet": true,
            "interactive": true,
            "languages": [
                "cs",
                "en"
            ],
            "commands": {
                "linux": {
                    "supported": true,
                    "command": "sudo bash ./eweb-server-0.8.38/install.sh",
                    "command_as_root": "bash ./eweb-server-0.8.38/install.sh",
                    "command_from_package_directory": "sudo bash ./install.sh",
                    "mode": "automatic"
                },
                "windows": {
                    "supported": false,
                    "command": null,
                    "reason": {
                        "cs": "Nativní instalace ve Windows není podporována. Instalujte na server s uvedenou podporovanou distribucí Linuxu.",
                        "en": "Native Windows installation is not supported. Install on a server running a listed supported Linux distribution."
                    },
                    "mode": "unsupported"
                },
                "macos": {
                    "command": null,
                    "supported": false,
                    "mode": "unsupported"
                },
                "other": {
                    "command": null,
                    "supported": false,
                    "mode": "unsupported"
                },
                "source": {
                    "command": null,
                    "supported": false,
                    "mode": "unsupported"
                }
            },
            "extraction_required": true,
            "extract_entire_archive": true,
            "recommended_resources": {
                "cpu_cores": 2,
                "ram_mib": 2048,
                "free_disk_gib": 10,
                "note": "Installer preflight recommendations; hosted data and log retention need additional capacity."
            },
            "reboot": "No unconditional reboot is requested by install.sh; OS package updates may independently require one.",
            "web_root": "."
        },
        "upgrade": {
            "supported": true,
            "command": "sudo bash ./eweb-server-0.8.38/install.sh",
            "working_directory": ".",
            "documentation": "eweb-server-0.8.38/UPGRADE-0.8.38.md",
            "cluster_order": "one_node_at_a_time",
            "automatic": {
                "supported": true,
                "command": "sudo eweb-release apply",
                "check_command": "sudo eweb-release check",
                "interval_seconds": 3600,
                "protocol": 1
            },
            "gui": {
                "path": "/?page=updates",
                "module_installation": true,
                "individual_modules": true
            },
            "database_wait_seconds": 300
        },
        "installed_paths": {
            "application": "/opt/eweb",
            "version_file": "/opt/eweb/VERSION",
            "configuration": "/etc/eweb",
            "logs": "/var/log/eweb",
            "websites": "/var/www",
            "backups": "/var/www/backup",
            "release_date_file": "/opt/eweb/RELEASE_DATE",
            "installation_history": "/var/lib/eweb/installation.json"
        },
        "dependencies": {
            "required_packages_file": "eweb-server-0.8.38/packages.txt",
            "optional_packages_file": "eweb-server-0.8.38/packages-optional.txt",
            "hosting_packages_helper": "eweb-server-0.8.38/bin/eweb-hosting-packages.sh"
        },
        "documentation": {
            "readme": "eweb-server-0.8.38/README.md",
            "changelog": "eweb-server-0.8.38/CHANGELOG-0.8.38.md",
            "validation": "eweb-server-0.8.38/VALIDATION-0.8.38.md",
            "audit": "eweb-server-0.8.38/AUDIT-0.8.38.md",
            "manual_cs": "eweb-server-0.8.38/docs/MANUAL-CS.md",
            "manual_en": "eweb-server-0.8.38/docs/MANUAL-EN.md"
        },
        "integrity": {
            "algorithm": "sha256",
            "installer_sha256": "50977bf89224d1adbf102501680475e12e52b91bbeafcdbe971613765dce0651",
            "payload_checksums_file": "eweb-server-0.8.38/SHA256SUMS",
            "payload_checksums_base_directory": "eweb-server-0.8.38",
            "payload_checksums_sha256": "ea2a0cb70a9841d6bd969324fd8ca3b57565b232054159b3cbe3e1130a1f76ca",
            "note": "Payload checksums cover files inside the package directory. This root manifest is outside that inventory. Hashes verify consistency, not publisher authenticity."
        },
        "release_date": "2026-09-15",
        "homepage": "https://www.estudium.eu",
        "author": {
            "name": "PB",
            "email": "pavel.bartos.pb@gmail.com",
            "website": "https://www.estudium.eu"
        },
        "project": {
            "name": "eWeb",
            "website": "https://www.estudium.eu",
            "updates_url": "https://update.estudium.eu/project.php?software_id=eweb-server"
        },
        "archive_metadata": {
            "working_directory": ".",
            "publisher": "dcf6d41fbcdf0e16",
            "updated_at": "2026-09-15T10:36:53+00:00",
            "application_author": "PB <pavel.bartos.pb@gmail.com>"
        },
        "package": {
            "type": "release",
            "visibility": "public",
            "modules_included": false,
            "target": "software"
        },
        "modules": {
            "distribution": "separate",
            "automatic_requires_license": true,
            "module_ids": [
                "cluster",
                "ips",
                "loganalyzer",
                "serverdiag",
                "snapshots",
                "staging"
            ],
            "free_module_initial_installation": "manual",
            "free_installed_module_updates": true,
            "access_source": "current-eupdate-catalog-and-checkin",
            "package_os_types": [
                "source"
            ]
        },
        "requirements": [],
        "license": "MIT",
        "license_custom": ""
    },
    "readme": "# eWeb 0.8.38 — oprava Cloudflare DNS-01\n\nV dodaném logu selhaly Let’s Encrypt i ZeroSSL při přístupu ke Cloudflare: `6003 Invalid request headers`. Změna certifikační autority neopraví chybné DNS přihlašovací údaje. Samotné upozornění Python knihovny cloudflare 2.20.0 příčinu selhání nedokazuje.\n\n## Aktualizace\n\nRozbalte komplet a v jeho složce spusťte:\n\n```bash\nsudo bash aktualizovat.sh\n```\n\nV clusteru aktualizujte postupně všechny uzly. Pro eUpdate použijte vnitřní `eweb-server-0.8.38.zip`, který obsahuje manifest `install.json`. Komplet zahrnuje také šest dosavadních modulů, příklad hostingové aplikace a ověřovací podklady.\n\n## Co se opravuje\n\n- Stejné zpracování tokenu pro DNS editor, nastavení domény a Certbot. Jednoznačně rozpoznané uvozovky, prefix Bearer a okrajové mezery se odstraní. Víceřádkový token, řídicí znaky, celý curl příkaz a vadné base64 se odmítnou; řádky se nespojují.\n- Před SSL preview i před skutečnou objednávkou se přes Cloudflare API ověří dostupnost DNS zóny každého vybraného názvu a možnost číst DNS záznamy. Nastavené Zone ID musí odpovídat hlavní doméně. Starší nastavení bez Zone ID nadále umožňuje automatické dohledání zóny pro SSL.\n- Ověření používá přímo Bearer hlavičku, ne starou Python knihovnu cloudflare. Nepřebírá jiné tokeny z prostředí ani cloudflare.cfg. Chybné přihlášení zastaví objednávku ještě před kontaktováním CA.\n- Cloudflare kód 6003 se v DNS editoru správně zobrazí jako chyba přihlášení. SSL preview obsahuje české i anglické podrobnosti a doporučená oprávnění.\n- Kontrola je pouze čtecí: nevytváří testovací TXT záznam. Oprávnění pro zápis TXT následně prověří skutečná ACME výzva.\n- Fungující DNS přístup zachovává pořadí Let’s Encrypt → ZeroSSL, evidenci získání certifikátu, automatické obnovování a dosavadní nasazení do clusteru.\n\n## Nastavení eduradio.cz\n\nV Cloudflare vytvořte nebo opravte API token omezený na zónu eduradio.cz s oprávněními:\n\n- Zone → Zone → Read\n- Zone → DNS → Edit\n\nCelou hodnotu tokenu vložte v eWebu do nastavení domény. Account ID, Zone ID a Global API Key nejsou API token. Zkontrolujte také expiraci tokenu a případné omezení zdrojové IP. Token neposílejte do chatu ani jej nevypisujte do logu.\n\nPo aktualizaci a uložení tokenu spusťte v eWebu znovu kontrolu certifikátu. Případně použijte:\n\n```bash\nsudo eweb-ssl preflight-json eduradio.cz\nsudo eweb-ssl retry eduradio.cz\n```\n\nPokud přímá kontrola projde a Certbot přesto vrátí 6003, podrobnosti nově upozorní na další přihlašovací údaje CF/CLOUDFLARE v prostředí nebo souborech cloudflare.cfg, které může používat jeho starý plugin. Tyto sdílené konfigurace balíček automaticky nemaže. Bez diagnostiky neprovádějte pip upgrade cloudflare na hlavní verzi 3.x; starý plugin používá jiné rozhraní.\n\nŽivý Cloudflare token ani skutečné vydání certifikátu na vašem serveru nebyly z tohoto prostředí testovány. Balíček byl lokálně ověřen a nebyl automaticky nasazen.",
    "download_url": "https://update.estudium.eu/download.php?project=016eff0ebb83789e&release=826d1f1b673794439f8a1659a7e725eb",
    "package_target": "software",
    "requirements": [],
    "license": {
        "id": "MIT",
        "name": "MIT",
        "custom_text": ""
    },
    "deployment": {
        "archive_root": ".",
        "web_root": "."
    },
    "project_type": "application",
    "hosting": null
}