eLoader
Společné prostředí pro aplikace: přihlášení, oprávnění, instalace aplikací a modulů, eUpdate autoupdate a CZ/EN mail templater.
Documentation and check-in manual
Releases
Older versions (27)
- 1.21.0 · 2026-09-16 · ZIP · JSON
- 1.20.1 · 2026-09-16 · ZIP · JSON
- 1.20.0 · 2026-09-16 · ZIP · JSON
- 1.19.1 · 2026-09-16 · ZIP · JSON
- 1.19.0 · 2026-09-16 · ZIP · JSON
- 1.18.2 · 2026-09-14 · ZIP · JSON
- 1.18.1 · 2026-09-14 · ZIP · JSON
- 1.18.0 · 2026-09-14 · ZIP · JSON
- 1.17.2 · 2026-09-14 · ZIP · JSON
- 1.17.0 · 2026-09-14 · ZIP · JSON
- 1.16.0 · 2026-09-13 · ZIP · JSON
- 1.15.0 · 2026-09-13 · ZIP · JSON
- 1.14.0 · 2026-09-13 · ZIP · JSON
- 1.13.0 · 2026-09-13 · ZIP · JSON
- 1.12.0 · 2026-09-13 · ZIP · JSON
- 1.11.0 · 2026-09-13 · ZIP · JSON
- 1.10.0 · 2026-09-13 · ZIP · JSON
- 1.9.0 · 2026-09-13 · ZIP · JSON
- 1.8.0 · 2026-09-12 · ZIP · JSON
- 1.7.0 · 2026-09-12 · ZIP · JSON
- 1.6.0 · 2026-09-12 · ZIP · JSON
- 1.5.0 · 2026-09-12 · ZIP · JSON
- 1.4.0 · 2026-09-12 · ZIP · JSON
- 1.3.0 · 2026-09-12 · ZIP · JSON
- 1.2.0 · 2026-09-12 · ZIP · JSON
- 1.1.0 · 2026-09-12 · ZIP · JSON
- 1.0.0 · 2026-09-12 · ZIP · JSON
README
# eLoader 1.0.0
Autor programu: **PB <pavel.bartos.pb@gmail.com>** — shodně s eUpdate. Vydání: 12. 9. 2026.
Společné prostředí pro instalaci a spouštění aplikací. Obsahuje CZ/EN rozhraní, výsuvnou levou nabídku, společné přihlášení, správu superadminů, SMTP/SMS, mail templater a instalaci/aktualizaci aplikací i modulů ze ZIPu nebo z eUpdate. Jádro má vlastní automatické aktualizace z eUpdate.
## Požadavky
- PHP **8.2–8.x**, Linux, PHP CLI a PHP-FPM pod stejným uživatelem hostingu.
- Rozšíření: `pdo_sqlite`, `sqlite3`, `zip`, `curl`, `mbstring`, `dom`, `openssl`, `sodium`, `tokenizer`, `ctype`.
- Povolené `proc_open` pro oddělenou kontrolu nového vydání. Knihovny jsou přibalené; na produkci není potřeba spouštět Composer.
- HTTPS. Zapisovatelná soukromá složka pro stav aplikace; veřejný kořen pouze `public/`.
- Pro upload nastavte `upload_max_filesize=64M`, `post_max_size=70M`, `memory_limit=256M` a odpovídající limit Nginxu. Instalátor omezuje ZIP na 64 MiB a rozbalený obsah na 128 MiB.
- Jádro používá vlastní SQLite. Databáze připojených aplikací jsou samostatné. Existující isEDU databáze se nemigrují ani nepřepisují.
## Nejrychlejší instalace do eWebu
Balíček nejprve rozbalte **mimo veřejnou webovou složku**, například do pracovního adresáře doménového uživatele. Následující příkazy spouštějte pod uživatelem konkrétního hostingu.
Máte-li doménový adresář s existujícími složkami `web/` a `private/`, použijte:
```bash
php bin/install-hosting.php /cesta/k/adresari-domeny https://vase-domena.cz
```
Veřejná složka `web/` musí být prázdná. Instalátor existující web nepřepíše. Kód uloží do `private/eloader/`, trvalá data do `private/eloader/var/` a do `web/index.php` vloží veřejný vstup. Příkaz vypíše jednorázový token a přesný příkaz pro cron.
Otevřete doménu, zadejte token a vytvořte prvního superadmina: jméno, e-mail, volitelný login, heslo nejméně 12 znaků a výchozí jazyk. Token platí 24 hodin; po dokončení jej nelze použít znovu. Neexistuje výchozí heslo.
Nastavte SMTP a v **Mail templateru** odešlete testovací zprávu. Heslo superadmina slouží také k přístupu při poruše doručování PINu.
### Jiný hosting nebo přímé nasazení původního ZIPu
Zachovejte **celý obsah ZIPu**, nastavte document root na jeho `public/` a spusťte:
```bash
php bin/console.php init https://vase-domena.cz
```
Tím vznikne `var/` vedle `public/`. Alternativní umístění určuje `ELOADER_DATA`; pak musí mít PHP-FPM i cron stejnou hodnotu. Samotné zkopírování obsahu `public/` nestačí, protože jádro a knihovny musí zůstat dostupné mimo webový kořen.
## Publikování v eUpdate 1.7.8+
Nahrajte distribuční ZIP jako hlavní program projektu **eLoader**, identifikátor **`eloader`**. Kořen archivu obsahuje připravený `install.json`:
| Nastavení | Hodnota |
| --- | --- |
| Autor | PB, pavel.bartos.pb@gmail.com |
| Verze | 1.0.0 |
| `package.type` | `release` |
| `package.target` | `hosting` |
| `installation.web_root` | `public` |
| `archive_metadata.working_directory` | `.` |
| OS | Zdrojový kód / nezávislé na OS |
| PHP | `>=8.2 <9.0` |
| Licence jádra | Vlastní; text v `LICENSE` |
Z projektu zkopírujte instalační odkaz. Pro tento identifikátor bude jeho tvar:
```text
https://update.estudium.eu/package.php?software_id=eloader
```
Jde o očekávaný odkaz **po publikování**, nikoli o potvrzení, že projekt už na serveru existuje. Balíček zde nebyl publikován na váš produkční eUpdate. Připravený klient používá skutečný kontrakt `eupdate-installation-v1` z eUpdate 1.7.8.
Prvotní automatické nasazení z rozhraní eWebu vyžaduje, aby jeho hostingový instalátor zachoval celý zdrojový strom a nastavil správný veřejný kořen. Pokud jeho export kopíruje jen `public/`, použijte výše uvedený `install-hosting.php`. Tento balíček nemění program eWeb.
## Automatické aktualizace eLoaderu
1. V **Aktualizace eLoaderu** nastavte odkaz na projekt `eloader` v eUpdate. U neveřejného projektu doplňte SecretID.
2. Zapněte autoupdate a nastavte čas kontroly; předvolba je **03:30 v Europe/Prague**.
3. Do cronu konkrétního hostingu vložte přesný příkaz z rozhraní, například:
```cron
*/5 * * * * /usr/bin/php /cesta/k/adresari-domeny/private/eloader/bin/console.php cron
```
Cron kontroluje plán každých pět minut; stažení a aktualizaci provede nejvýše jednou denně po zvoleném čase. Bez cronu automatické aktualizace neběží. Výchozí stav je vypnuto, dokud správce nenastaví publikovaný zdroj. Samostatná ruční kontrola je dostupná tlačítkem.
Ověřuje se instalační cíl, identita, vyšší verze, PHP, závislosti aplikací, velikost a SHA-256, bezpečný obsah ZIPu a kontrola PHP v odděleném procesu. Nový kód vznikne v soukromém adresáři; aktivuje se atomickou změnou ukazatele. Neprovádí se příkazový skript z `installation.commands`.
Zůstává předchozí kód, dva konzistentní snímky databáze jádra a veškerá trvalá data. Tlačítko návratu jádra současně vypne autoupdate. Aktualizace, která neprojde kontrolou, se neaktivuje. Verze 1.0.0 podporuje aktualizace se stejným datovým schématem 1 a launcher API 1. Destruktivní migrační háky odmítá.
Návrat přes CLI:
```bash
php bin/console.php rollback eloader
```
Vydání jádra běží pod stejným uživatelem hostingu. Výchozí veřejný vstup a `bootstrap.php` tvoří stabilní launcher; aktualizace jeho rozhraní nebo datového schématu vyžaduje samostatně připravené vydání. Starší adresáře vydání jsou uchovány; průběžně sledujte volné místo. Pro více uzlů/cluster tato verze nemá distribuovaný instalační zámek.
## Přihlašování a oprávnění
- V eLoaderu lze zadat **e-mail, login nebo ID** a zvolit zdroj účtu. Automatické hledání používá eLoader a pověřené nainstalované aplikace. Při více shodách vyžaduje konkrétní zdroj.
- Společné prostředí vede vlastní **superadminy**. Běžné účty a jejich role/práva zůstávají u příslušných aplikací.
- Aplikaci musí superadmin v **Aplikace a moduly → Přihlášení a pověření** výslovně pověřit přihlašováním. Instalace sama toto pověření neuděluje.
- Přihlášení lze zahájit přímo pro pověřenou aplikaci odkazem `/?page=login&app=identifikator`. Vlastní přihlašovací obrazovka aplikace může vést na stejný společný vstup; nemá nastavovat relaci sama.
- Běžný účet musí být aktivní, mít přidělenou roli a oprávnění `app.access` nebo `*`. Vstup do aplikace a její operace kontrolují aktuální práva na serveru.
- Sdílené přihlášení podle ověřeného e-mailu je samostatná volba superadmina pro každou aplikaci. Ve druhé aplikaci musí existovat aktivní účet s vlastními právy. Shodný login či číselné ID účty nespojují.
- Superadmin má přístup do celého prostředí a aplikací. Aplikační role se na superadmina eLoaderu nepovyšuje.
- PIN má výchozí délku **4 číslice**, je stejný do konce kalendářního dne podle nastaveného časového pásma. Lze změnit délku i časovou platnost. PINy jsou chráněné proti hádání; záznamy neobsahují jejich otevřené hodnoty.
- Relace platí výchozích **24 hodin od přihlášení**. Prodloužení nenastává při každém kliknutí. Změna délky se projeví u nových přihlášení.
## Aplikace a moduly
V **Aplikace a moduly** přetáhněte ZIP nebo vložte instalační odkaz z eUpdate. Nejprve se zobrazí kontrola balíčku; až poté potvrďte důvěru vydavateli a instalaci. Všechen instalovaný PHP kód běží s právy uživatele hostingu; aplikace nejsou bezpečnostně izolované kontejnery.
Aplikace potřebuje eLoader SDK vstup; obyčejná samostatná PHP aplikace se přejmenováním cíle nestane integrovanou aplikací. Přiložený `hosting-example-app-1.2.0.zip` posloužil jako vzor hostingového manifestu, nikoli jako nativní eLoader aplikace.
- `examples/demo-notes-1.0.0.zip`: ukázková aplikace, účty viewer/editor, oddělená data a práva.
- `examples/demo-summary-1.0.0.zip`: modul pro tuto aplikaci.
- Zdrojové podoby ukázek jsou také v `examples/`.
Postup: nainstalujte Demo Notes, jako superadmin je otevřete a vytvořte zkušební účet. Pověřte aplikaci přihlašováním. Nastavte SMTP a vyzkoušejte PIN e-mailem, loginem i ID. Pak přidejte Demo Summary. Žádné zkušební účty se automaticky nevytvářejí.
Pro placený modul lze použít SecretID nebo údaje už schválené licencované identity eUpdate: Server ID, hostname a check-in API klíč. Při požadavku se používají hlavičky `X-Project-Secret`, `X-Server-ID`, `X-Server-Hostname`, `X-Server-Checkin-Key`. eLoader v této verzi sám neprovádí registraci/licenční check-in; povolení musí již existovat v eUpdate.
## Mail templater CZ/EN
Obsahuje zvlášť český a anglický předmět, HTML a textovou variantu pro PIN, uvítání a oznámení. Uložené šablony mají náhled a test odeslání přes SMTP. Před náhledem upravenou šablonu uložte. HTML editor odstraní aktivní obsah a nepovolené atributy. PIN šablona musí mít `{pin}` v HTML i textu.
Proměnné: `{name}`, `{pin}`, `{expires}`, `{app_name}`, `{site_name}`, `{site_url}`, `{message}`, `{action_url}`.
Šablony UI i e-mailů používají původní **`tmpl_open(...)`** z `pavel852/php-templates` 2.6. Dynamické hodnoty pro HTML se escapují. Přibalená knihovna není upravená. Potvrzené nesrovnalosti jsou v `docs/php_templates-2.6-findings.md`.
SMTP podporuje STARTTLS a implicitní TLS. SMS brána používá HTTPS POST JSON `{"to":"+420...","message":"..."}` a Bearer token; očekává HTTP 2xx. Pro poskytovatele s jiným protokolem je potřeba adaptér.
## Provoz a další dokumentace
- `docs/SDK.md`: kontrakt aplikací, rolí a modulů.
- `docs/OPERATIONS.md`: soubory, zálohy, aktualizace a obnova přístupu.
- `VALIDATION.md`: provedené kontroly a hranice ověření.
- `README.en.md`: English quick start.
Před ostrým použitím ověřte doručování na vaší SMTP/SMS bráně a jeden instalační/aktualizační cyklus na testovací doméně s vaší verzí eWebu a eUpdate.