CAR / CORE / PIVO · Organizace, odborné časopisy a API

Každá osoba získá CAR a každá organizace CORE automaticky při vytvoření účtu. Organizace přidělují PIVO článkům a dalším výstupům ve Správě PIVO nebo přes autentifikované API.

Otevřít návod identifikátorů a API pro časopisy · OpenAPI JSON · Projekty, adresy, mazání a export pro eWeb

Zobrazit fungování CAR, CORE, PIVO a napojení časopisu

<!-- Autor programu: PB <pavel.bartos.pb@gmail.com> -->

Osoby, organizace a identifikátory

Vizitky, krátké adresy a přihlášení

Veřejnou vizitku osoby otevřete přímo na adrese

https://update.estudium.eu/CAR-0000-0002, organizaci například na

https://update.estudium.eu/CORE-00001. Uvedená ID jsou příklady; použijte

identifikátor přidělený konkrétnímu účtu. Změna zobrazovaného jména ID ani adresu

vizitky nemění. Vizitka je dostupná jen u aktivního účtu se souhlasem se zveřejněním.

Článek nebo kniha s PIVO má adresu https://update.estudium.eu/PIVO-0-0000-0001.

Publikace bez PIVO používá přímo své stávající 32znakové ID za doménou. Její adresu

zkopírujete z odkazu Otevřít v katalogu nebo vizitce. Krátká adresa sama

nepřiděluje PIVO: to nadále vydává pouze organizace. Staré odkazy

/profile.php?id=…, /pivo.php?id=… a /article.php?id=… přesměrují HTTP 301.

Canonical, sitemap.xml i publikační feed.xml používají nové adresy. Software

zůstává na adrese /login/projekt, například /admin/eweb-server.

Při přihlášení zadejte login, CAR nebo CORE a běžné heslo daného účtu.

U CAR/CORE nezáleží na velikosti písmen. Identifikátor je veřejný a heslo nenahrazuje;

zablokovaný účet se nepřihlásí. Minimální délka nového hesla je 10 znaků.

V Můj účet → Moje vizitka přetáhněte fotografii nebo logo do vyznačeného pole,

nebo vyberte soubor tlačítkem. Podporován je jeden PNG, JPEG nebo WebP do 512 KiB,

rozměry nejvýše 4000 × 4000 px. Náhled se zobrazí hned, změnu dokončíte tlačítkem

Uložit vizitku. Stejně se potvrzuje odstranění fotky. Chyba souboru se zobrazí

přímo u pole; platnost obrázku ověřuje i server.

Vizitka obsahuje kompaktní hlavičku, kontakty a identifikátory, vzdělání nebo

kategorii činnosti, organizace a vyplněné CV. E-mail, telefon a další volitelné

kontakty se zobrazí pouze podle zaškrtnutých voleb zveřejnění. Logo organizace se

zobrazuje celé. Prázdné CV se nevypisuje.

V Projekty autora / Projekty organizace je společný přehled veřejného softwaru,

knih, článků a dalších publikací účtu. Tlačítka filtrují typ; pro hledání a

indexování jsou všechny karty obsažené už ve stránce bez JavaScriptu. Typ publikace

zvolíte při jejím vložení do účtu nebo do PIVO. Katalog slučuje rozpoznané duplicity.

Samotné uvedení stejného jména mezi autory nepřidá cizí publikaci do vašeho účtu:

přidejte ji do vlastních publikací, případně odkazem na existující PIVO.

Neveřejné a archivované softwarové projekty do veřejného přehledu nevstupují.

Rychlý postup pro odborné časopisy (research journals)

CAR označuje osobu, CORE vydavatele/organizaci a PIVO konkrétní publikovaný výstup.

CAR a CORE se přidělují automaticky při vytvoření účtu, při veřejné registraci

stejně jako při založení administrátorem. Osoba dostane CAR, organizace CORE,

bez ohledu na její roli admin/registrovaný nebo zveřejnění vizitky. Starším účtům

se chybějící ID doplní při prvním požadavku. Uživatel ID nezadává ani nemění.

  • Vytvořte účet typu Firma / škola / organizace pro časopis nebo jeho

vydavatele. Do názvu napište veřejný název vydavatele, vyplňte logo,

registrační číslo, kategorii činnosti a případně existující ROR. Organizace

ihned získá CORE; pokud administrátor nastavil dočasné heslo, nejprve je změňte.

  • Autoři si vytvoří osobní účty s CAR a mohou doplnit ORCID. V Moje organizace

mohou požádat o členství. Vydavatel žádost schválí v Členové organizace.

Členství ani přístup spolupracovníka k projektům nedává právo vydávat PIVO:

PIVO vytváří přihlášený organizační účet nebo jeho serverový API klíč.

  • Po redakčním schválení článku se přihlaste pod organizací a otevřete

Správa PIVO → Registrovat PIVO. Zadejte titul, autory oddělené středníkem,

měsíc/rok vydání, anotaci, klíčová slova a veřejnou URL článku nebo vlastní PDF.

Doplňte název časopisu, ISSN, ročník, číslo, strany a licenci. Jeden vydavatel

může obsluhovat více časopisů; rozliší je metadata journal a issn.

  • Potvrzení vydání přidělí další globální pořadové PIVO. CORE určuje vydavatele

v issuer_core; žádný prefix si časopis nerezervuje a číselná řada se pro každou

organizaci nerestartuje. V databázi se uloží vydavatel, ID, metadata a revize.

  • Vraťte získané PIVO a jeho stabilní URL do redakčního systému. Uveďte je na

stránce článku a v PDF. Autor může existující PIVO přidat do své publikace;

tím znovu nevydává nové ID. Katalog propojí duplicitní záznamy stejného díla.

  • Při stěhování PDF upravte URL v témže PIVO. Při opravě metadat odešlete aktuální

revizi a úplná metadata. Opravdu stažený článek označte akcí withdraw a důvodem;

zůstane veřejná stránka se stavem, nikoli znovu použitelné číslo.

Napojení redakčního systému přes API

V organizaci otevřete Správa PIVO → API klíče → Vytvořit API klíč. Hodnotu

uložte jen na serveru redakčního systému. Není určena do JavaScriptu návštěvníka.

Příklad níže předpokládá proměnnou prostředí PIVO_TOKEN s tímto klíčem.

curl --request POST 'https://update.estudium.eu/pivo-api.php' \
  --header "Authorization: Bearer $PIVO_TOKEN" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: journal-2026-article-0042' \
  --data '{"action":"create","metadata":{"title":"Example journal article","authors":"Novak, Jan; Smith, Eva","publication_date":"2026-09","abstract":"A complete public abstract of the article.","keywords":"education; research; learning analytics","type":"article","journal":"Example Research Journal","issn":"0378-5955","volume":"4","issue":"2","pages":"10-21","publisher":"Example Publisher","url":"https://journal.example.org/articles/42","language":"en","license":"CC BY 4.0"}}'

Příklad úspěšné odpovědi (zkrácený; skutečné ID určí registr):

{"ok":true,"created":true,"record":{"id":"PIVO-0-0000-0001","sequence":1,"issuer_core":"CORE-00001","revision":1,"status":"published","url":"https://update.estudium.eu/pivo.php?id=PIVO-0-0000-0001"}}

Do redakční databáze uložte record.id, record.url a record.revision.

Při timeoutu opakujte stejný požadavek se stejným Idempotency-Key a metadaty:

registr vrátí již přidělené ID. Nový článek musí mít jiný klíč. Detail bez hesla:

GET /pivo-api.php?id=PIVO-0-0000-0001. Změny se posílají POST na stejný endpoint

s action: update nebo action: withdraw; úplné příklady a chybové kódy jsou níže.

eUpdate automaticky nevkládá ID do cizího redakčního systému ani nemění jeho PDF.

Pro OJS nebo jiný research journal je potřeba serverová integrace, která zavolá

API po zveřejnění článku a uloží odpověď. PIVO není DOI Crossref/DataCite a samotné

vydání neznamená recenzní řízení ani zařazení časopisu do externího indexu.

Klíčová slova zadávejte jako výzkum; vzdělávání; umělá inteligence. V editoru

středník nebo Enter vytvoří samostatný štítek; vložený seznam se rozdělí ihned.

Křížek odebere štítek. Víceslovné fráze zůstávají pohromadě. API přijímá tentýž

řetězec se středníky nebo pole řetězců. Čárka uvnitř fráze se nerozděluje.

Limit je 30 klíčových slov po nejvýše 100 znacích; prázdné položky a přesné

opakované hodnoty se vynechají.

Registrace nabízí Osoba nebo Firma / škola / organizace. Organizace zadává

název, druh, kategorii činnosti, IČO nebo jiné registrační číslo, stát, právní formu

a sídlo. V profilu nahraje logo a popis. Má vlastní projekty, verze, moduly,

spolupracovníky a publikace stejně jako osobní účet. Typ účtu se po registraci

nemění; pro organizaci založte samostatný účet. Login slouží k přihlášení, název

organizace může obsahovat mezery a diakritiku. Kontaktní e-mail zůstává neveřejný,

dokud jeho zveřejnění výslovně nepovolíte. Ostatní vyplněná profilová data jsou

veřejná při souhlasu s veřejnou vizitkou.

CAR, CORE a ORCID/ROR

  • CAR – Czech Academic Researcher: interní identifikátor osobního účtu,

například CAR-0000-0001.

  • CORE – Czech Organization for Research Entities: identifikátor organizace,

například CORE-00001.

  • PIVO – Persistent Index of Verified Outputs: identifikátor výstupu,

například PIVO-0-0000-0001.

Každá řada začíná pořadovým číslem 1 a přidává 2, 3, 4… Číslo se kóduje v base36

(0–9, A–Z) a doplní nulami: 9 → 00009, 10 → 0000A. CAR má 8 znaků, CORE 5 a PIVO

9 znaků; pomlčky pouze člení zápis. První znak za PIVO je součástí čísla, nikoli

číslo vydavatele. Kapacity včetně nulového kódu jsou 36^8 = 2 821 109 907 456,

36^5 = 60 466 176 a 36^9 = 101 559 956 668 416. Nulový identifikátor se nepřiděluje.

Číselné řady jsou globální v této instalaci, přidělování probíhá pod databázovým

zámkem v transakci. Identifikátory jsou neměnné a po smazání účtu se nepoužijí znovu.

Stávající účty obdrží CAR automaticky při prvním spuštění nové verze.

CAR a CORE lze vyhledat v komunitě. Resolver /identity.php?id=CAR-0000-0001

odkáže na veřejnou vizitku; neveřejná vizitka se neodhalí. Zaniklý účet vrátí 410.

ORCID se zadává pro osobu; u organizace jde o ORCID kontaktní osoby.

ROR označuje organizaci; osoba ho může uvést jako související instituci.

Příklady: https://orcid.org/0000-0002-1825-0097, https://ror.org/02mhbdp94.

eUpdate kontroluje formát a kontrolní součet, nové ORCID/ROR nevydává a neověřuje

vlastnictví účtu u externího registru. Zdroj specifikací:

ORCID,

ROR.

Členství osob v organizacích

Osoba v Moje organizace zadá login nebo e-mail organizace. Žádost čeká na

schválení. Jedna osoba může patřit do více organizací. Organizace v **Členové

organizace** vidí žádosti i přijaté členy; může člena potvrdit, odstranit nebo

samostatně povolit spolupráci. Přístup ke všem projektům organizace vznikne až

po povolení spolupráce. Odstranění člena nebo odchod osoby jej okamžitě odebere.

Samotné zadání ROR ani žádost o členství žádná projektová práva nevytváří.

Schválené členství se zobrazí na veřejné vizitce osoby, pokud je veřejná i organizace.

Publikace a PDF

Osoba i organizace mohou přidávat publikace s názvem, autory, rokem, typem,

vydavatelem, ISBN, ISSN, DOI, jazykem, licencí, abstraktem, URL, odkazem na Google

Scholar a existujícím PIVO ID. ISBN a ISSN se kontrolují včetně kontrolní číslice.

DOI se zde pouze eviduje, neregistruje. Nahrávat lze pouze PDF do 20 MiB, celkem

500 MiB na účet. Upload probíhá po částech; nedokončené a nepřipojené soubory jsou

neveřejné. Veřejně lze PDF stáhnout po uložení do aktivní veřejné vizitky nebo

publikovaného PIVO záznamu. PDF se stahuje jako příloha, nespouští se na serveru.

Kontrola formátu nenahrazuje antivirovou kontrolu.

V PDF úložiště lze uklidit nedokončené uploady a nepoužité soubory. PDF připojené

k vizitce nejprve odpojte a vizitku uložte. PDF, které je součástí PIVO, se chrání

před smazáním. Do souboru nepatří neveřejné osobní údaje; zveřejňujte pouze obsah,

ke kterému máte potřebné oprávnění.

PIVO: veřejný katalog a API

Katalog /pivo.php je veřejný, má hledání a stránkování. Každý záznam má stabilní

stránku /pivo.php?id=PIVO-0-0000-0001, JSON a položku v sitemap. Profilové stránky

používají Person/Organization a záznamy CreativeWork/ScholarlyArticle ve strukturovaných

datech. Výsledky hledání se neindexují; veřejně připojené PDF lze indexovat.

PIVO vydávají přihlášené organizace v Správa PIVO nebo přes API. Povinná jsou

metadata: název, autoři, měsíc/rok, anotace, keywords a cílová HTTP/HTTPS URL nebo vlastní nahrané PDF.

Vydavatel potvrzuje předané údaje; název registru **neznamená recenzní posudek ani

ověření vědecké kvality**. PIVO je vlastní registr eUpdate, není DOI, Crossref ani

DataCite. Dostupnost resolveru závisí na provozu update.estudium.eu.

Vydavatel může měnit metadata a cílovou adresu, ID zůstane stejné. Uchová se historie

revizí. Stažení záznamu vyžaduje důvod a je nevratné: stránka a ID zůstanou veřejné

jako záznam o stažení. PIVO nesmaže ani zánik účtu vydavatele. Po registraci proto

neuvádějte do metadat údaje, které nemají být trvale veřejné.

Čtení bez přihlášení

curl 'https://update.estudium.eu/pivo-api.php?q=research&offset=0'
curl 'https://update.estudium.eu/pivo-api.php?id=PIVO-0-0000-0001'

Seznam vrací records, total, offset, limit (50); další strana má offset=50.

Detail vrací record a seznam revizí. Pole sequence je pořadové číslo v desítkové

soustavě, issuer_core identifikátor vydavatele, revision aktuální revize.

API klíč a vytvoření záznamu

Organizace vytvoří klíč v Správa PIVO → API klíče. Tajná hodnota se ukáže jen

jednou. V databázi se uchová pouze hash. Klíč platí 90 dní; lze jej ihned zneplatnit.

Organizace může mít 10 aktivních klíčů, každý s limitem 120 úspěšných změn za hodinu.

Klíč dovoluje pouze PIVO operace jménem svého vydavatele, ne správu účtů či projektů.

Blokovaný nebo odstraněný účet jej nemůže používat. Posílejte jej v Authorization,

nikdy jako parametr URL. API používá HTTPS a Content-Type: application/json.

curl -X POST 'https://update.estudium.eu/pivo-api.php' \
  -H "Authorization: Bearer $PIVO_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: journal-2026-article-001' \
  --data '{"action":"create","metadata":{"title":"Example research output","authors":"Jane Doe; John Smith","publication_date":"2026-09","keywords":["education"],"type":"article","publisher":"Example School","url":"https://example.org/article","language":"en","license":"CC BY 4.0","abstract":"An example record."}}'

Úspěch: HTTP 201 a {"ok":true,"created":true,"record":{...}}.

Stejný Idempotency-Key se stejnými metadaty vrátí původní ID (HTTP 200), jiný obsah

pod stejným klíčem vrátí 409. Klíč má 1–100 znaků a–z, A–Z, 0–9, tečka, dvojtečka,

pomlčka nebo podtržítko. Lze jej předat i v JSON jako idempotency_key.

Aktualizace a stažení

POST na stejnou URL; klíč zůstává v Authorization. Před aktualizací načtěte detail.

Pro update pošlete úplná metadata, nikoli pouze změněné pole.

{"action":"update","id":"PIVO-0-0000-0001","revision":1,"metadata":{"title":"Updated title","authors":"Jane Doe","abstract":"Updated complete abstract.","publication_date":"2026-09","keywords":["education"],"url":"https://example.org/new-location"}}
{"action":"withdraw","id":"PIVO-0-0000-0001","revision":2,"reason":"Duplicate publication"}

Nesprávná revize vrátí 409; tím se chrání souběžné úpravy. Cizí záznam nelze měnit.

Historie je dostupná ve stránce záznamu, JSON vrací čísla a data předchozích revizí.

PDF a API

Veřejné API PIVO přijímá odkaz nebo metadata.file_id vlastního hotového uploadu.

PDF nahrajte v přihlášeném webovém formuláři; Bearer klíč nepovoluje upload souborů.

Tím je oddělena velikostní kvóta a právo publikovat soubor od registrace metadat.

Pro čistě serverovou integraci použijte veřejnou URL publikace na vlastním serveru.

Chyby a provoz

Odpovědi mají JSON ok a při chybě error. Stavy: 401 neplatný/expirující klíč,

403 cizí záznam nebo chybný typ účtu, 404 nenalezeno, 409 konflikt klíče/revize,

422 neplatná metadata, 429 limit, 503 nedostupné úložiště. Čtení je GET, změny POST.

Neznámá HTTP metoda vrací 405. JSON specifikace API:

OpenAPI.

Registr, členství, metadata PDF a hashe klíčů jsou v MySQL. PDF jsou mimo veřejný

web v private/update-data/publications. Úplná interní záloha obsahuje SQL logický

stav včetně řad a všechny PDF. Obnovujte nejnovější zálohu; starý snímek registru

nesmí nahradit novější přidělené identifikátory. Při stěhování zachovejte adresu

resolveru nebo nastavte trvalá přesměrování. Před nasazením si uložte aktuální zálohu.

Proč PIVO používat a jak začít

PIVO dává výstupu stálou adresu oddělenou od umístění PDF. Když soubor přesunete,

upravíte cílovou URL a citace se starým PIVO odkazem mohou dál vést na správný

záznam. Registr propojí článek s vydavatelem CORE, nabídne metadata, citace a

historii. Hodí se například pro školní studie, výzkumné zprávy a institucionální

publikace. PIVO samo nevytváří prestiž, recenzní řízení ani indexaci v databázích.

Postup: založte účet organizace, vyplňte vizitku, otevřete Správa PIVO a registrujte

výstup. Autor článku musí zadat **nadpis, autora/autory, měsíc a rok vydání,

anotaci a klíčová slova**; PIVO navíc potřebuje URL nebo PDF. Každý autor má být

uveden samostatně středníkem, ideálně Novák, Jan; Svobodová, Eva. Institucionálního

autora zapište například {Example School}. Neuvádějte akademické tituly mezi jména.

Datum formulář zadává po měsících; API přijímá 2026-09 i 09/2026, ukládá 2026-09.

keywords může být pole řetězců nebo text oddělený středníky; maximum je 30 položek.

Starší záznamy zůstávají zachované, při jejich editaci je nutné chybějící údaje doplnit.

Vyhledávač, citace a duplicity

Na /articles.php jsou veřejné publikace osob a organizací i PIVO. Hledat lze podle

názvu, anotace, klíčových slov, autora/CAR/ORCID a organizace/CORE/ROR. Samostatná

stránka článku nabízí citace APA 7, IEEE a ISO 690, BibTeX a RIS. Odkaz a citace

lze kopírovat nebo stáhnout. Pro přesnější citaci doplňte časopis, ročník, číslo a

strany. Generované citace vycházejí ze zadaných jmen a údajů; zkontrolujte je podle

požadavků cílového časopisu. BibTeX/RIS lze importovat do citačních manažerů.

Stejný DOI, PIVO, kontrolní součet PDF nebo přesná shoda názvu, autorů a měsíce bez

DOI sloučí výsledky do jedné položky. Přednost má záznam PIVO. Původní publikace se

fyzicky nemažou a duplicitní URL odkáže na zvolený záznam. Různé DOI se samy podle

podobného názvu neslučují. Registrace dalšího PIVO pro rozpoznaný stejný výstup vrátí

409 s existujícím identifikátorem. Idempotency-Key řeší opakování téhož API požadavku.

Devět nejnavštěvovanějších článků se počítá za vybraný kalendářní měsíc, výchozí

je aktuální měsíc v pásmu Europe/Prague. Přepínačem lze zobrazit minulá období.

Celkové návštěvy jsou oddělené. Opakované otevření stejným návštěvníkem během hodiny

v daném měsíci se počítá jednou, rozpoznatelní roboti se nezapočítají. Jde o měřenou

návštěvnost detailu, nikoli citační ohlas nebo ověření kvality. Bez návštěv je

žebříček prázdný; při menším počtu navštívených článků zobrazí méně než devět položek.

Google Scholar a další platformy

Stránky článků mají čitelnou anotaci bez přihlášení a Highwire citation_* metadata

pro název, jednotlivé autory, rok, časopis a dostupné PDF. To připravuje web pro

procházení Scholarem; přijetí článku do indexu nelze slíbit. Pro Scholar je vhodné

plnotextové PDF s vyhledatelným textem, názvem, autory a literaturou; jeho doporučený

limit je 5 MB, přestože eUpdate dovoluje nahrát 20 MiB. Podmínky popisuje

Google Scholar.

Odkaz „Google Scholar“ na článku hledá jeho název, neodesílá žádost o registraci.

Zotero může načíst vložená metadata; další citační manažery mohou použít BibTeX nebo

RIS. Podrobnosti pro Zotero.

PIVO URL lze sdílet na webu organizace, v profilu autora nebo na jiných platformách.

eUpdate se bez zvláštní integrace nepřihlašuje k ORCID ani neodesílá metadata do

Crossref, DataCite, Scopus či Web of Science.

Rozšířený příklad API

{
  "action": "create",
  "idempotency_key": "study-2026-09-001",
  "metadata": {
    "title": "Example educational research",
    "authors": "Doe, Jane; Smith, John",
    "publication_date": "2026-09",
    "abstract": "A complete author-written abstract of this study.",
    "keywords": ["education", "learning analytics"],
    "type": "article",
    "journal": "Example Journal",
    "volume": "2",
    "issue": "1",
    "pages": "10-19",
    "url": "https://example.org/research",
    "language": "en"
  }
}

Čtení sjednoceného katalogu a citací:

curl 'https://update.estudium.eu/article-api.php?q=education&month=2026-09'
curl 'https://update.estudium.eu/article-api.php?author=CAR-0000-0001'
curl 'https://update.estudium.eu/article-api.php?organization=CORE-00001'
curl 'https://update.estudium.eu/article-api.php?id=PIVO-0-0000-0001'
curl 'https://update.estudium.eu/citation.php?id=PIVO-0-0000-0001&format=bibtex'

Katalog vrací records, total, offset, limit, month, timezone a top.

Položka má views za celou dobu, month_views pro vybraný měsíc a monthly_views

po měsících. Detail obsahuje article a citations. Formáty citací: apa, ieee,

iso690, bibtex, ris. Odkazy na neveřejné články a PDF bez veřejné vazby vrací 404.

Veřejné PDF může vyhledávač indexovat; soukromé PDF zůstává za kontrolou oprávnění.

RSS publikací a projektů v češtině i angličtině

Veřejné kanály RSS CZ a RSS EN obsahují každý

nejvýše 130 položek: 100 naposledy aktualizovaných veřejných publikací, článků

a PIVO a 30 nejnovějších veřejných nearchivovaných projektů. Každý projekt je

zastoupen jednou, s verzí vybranou podle nejnovějšího data vydání. Chybí-li datum

vydání, použije se čas nahrání verze; u projektu bez verzí datum vytvoření.

Moduly se samostatně nevkládají. Celý kanál je seřazen od nejnovější položky.

  • Český kanál: https://update.estudium.eu/feed.xml
  • Anglický kanál: https://update.estudium.eu/feed.en.xml

Jazykové varianty mají přeložený název, popis a kategorie kanálu i odpovídající

značku language. Obsahují stejné záznamy; vložené názvy, anotace a autorské texty

se automaticky nepřekládají. V administraci má každý kanál datum aktualizace,

náhled a odkaz; Přegenerovat RSS obnoví obě varianty.

Oba kanály se přegenerují při změně publikace, PIVO, veřejného profilu, projektu,

vydání, viditelnosti či archivace a při změně loginu vlastníka. Po aktualizaci

aplikace se nové RSS vytvoří automaticky při prvním požadavku. Nezměněné

požadavky soubory opakovaně nepřepisují.

Duplicity publikací se slučují stejně jako v katalogu. Neveřejné publikace,

stažené PIVO a soukromé či archivované projekty se vynechávají. Položka obsahuje

název, popis, autora, kategorii, trvalý odkaz a u publikací dostupné veřejné PDF

jako enclosure. pubDate určuje datum řazení; dc:date uchovává zadané datum

vydání. GUID je kanonická URL záznamu. Čtení RSS nezvyšuje návštěvnost článků.

Čtečka může uchovat již stažené položky i po jejich odebrání z kanálu.

RSS samo nezajišťuje zařazení do Google Scholar.

<!-- Autor programu: PB <pavel.bartos.pb@gmail.com> -->

Vizitky, krátké adresy a přihlášení

Login, osobní jméno a firemní logo

Při registraci osoby vyplňte zvlášť Login / přezdívku pro přihlášení

(například pavel852) a Jméno a příjmení (zobrazované jméno) pro vizitku.

Zobrazované jméno upravíte v Můj účet → Moje vizitka, admin také v

Uživatelé → Upravit. Je povinné a může mít nejvýše 100 Unicode znaků.

U organizace se stejné pole nazývá Název organizace.

Jméno se zobrazuje ve vizitce, vCard, výsledcích hledání a SEO; publikování

vizitky se dál řídí souhlasem uživatele. Změna jména nemění login, heslo ani

CAR/CORE. Existující účty zachovávají dosavadní jména: pokud bylo dosud místo

jména uloženo jen přihlašovací jméno, uživatel ho může ručně doplnit.

Jména se automaticky neodhadují z CV ani e-mailu.

Firemní logo se zobrazuje v rámečku se zaoblenými rohy, celé bez ořezu.

Čtvercové logo má čtverec; širší logo dostane širší obdélník podle svého poměru

stran, s maximální šířkou podle dostupného místa.

Tento styl používá veřejná vizitka, komunita i náhled v Můj účet.

Veřejnou vizitku osoby otevřete přímo na adrese

https://update.estudium.eu/CAR-0000-0002, organizaci například na

https://update.estudium.eu/CORE-00001. Uvedená ID jsou příklady; použijte

identifikátor přidělený konkrétnímu účtu. Změna zobrazovaného jména ID ani adresu

vizitky nemění. Vizitka je dostupná jen u aktivního účtu se souhlasem se zveřejněním.

Článek nebo kniha s PIVO má adresu https://update.estudium.eu/PIVO-0-0000-0001.

Publikace bez PIVO používá přímo své stávající 32znakové ID za doménou. Její adresu

zkopírujete z odkazu Otevřít v katalogu nebo vizitce. Krátká adresa sama

nepřiděluje PIVO: to nadále vydává pouze organizace. Staré odkazy

/profile.php?id=…, /pivo.php?id=… a /article.php?id=… přesměrují HTTP 301.

Canonical, sitemap.xml i publikační feed.xml používají nové adresy. Software

zůstává na adrese /login/projekt, například /admin/eweb-server.

Při přihlášení zadejte login, CAR nebo CORE a běžné heslo daného účtu.

U CAR/CORE nezáleží na velikosti písmen. Identifikátor je veřejný a heslo nenahrazuje;

zablokovaný účet se nepřihlásí. Minimální délka nového hesla je 10 znaků.

V Můj účet → Moje vizitka přetáhněte fotografii nebo logo do vyznačeného pole,

nebo vyberte soubor tlačítkem. Podporován je jeden PNG, JPEG nebo WebP do 512 KiB,

rozměry nejvýše 4000 × 4000 px. Náhled se zobrazí hned, změnu dokončíte tlačítkem

Uložit vizitku. Stejně se potvrzuje odstranění fotky. Chyba souboru se zobrazí

přímo u pole; platnost obrázku ověřuje i server.

Vizitka obsahuje kompaktní hlavičku, kontakty a identifikátory, vzdělání nebo

kategorii činnosti, organizace a vyplněné CV. E-mail, telefon a další volitelné

kontakty se zobrazí pouze podle zaškrtnutých voleb zveřejnění. Logo organizace se

zobrazuje celé. Prázdné CV se nevypisuje.

V Projekty autora / Projekty organizace je společný přehled veřejného softwaru,

knih, článků a dalších publikací účtu. Tlačítka filtrují typ; pro hledání a

indexování jsou všechny karty obsažené už ve stránce bez JavaScriptu. Typ publikace

zvolíte při jejím vložení do účtu nebo do PIVO. Katalog slučuje rozpoznané duplicity.

Samotné uvedení stejného jména mezi autory nepřidá cizí publikaci do vašeho účtu:

přidejte ji do vlastních publikací, případně odkazem na existující PIVO.

Neveřejné a archivované softwarové projekty do veřejného přehledu nevstupují.

<!-- Autor programu: PB <pavel.bartos.pb@gmail.com> -->

Smazání check-inů administrátorem

Přehled Check-in / servery začíná tabulkou s hostname, programem a verzí,

datem check-inu, ID instalace a stavem schválení. Kliknutím na řádek rozbalíte údaje a akce

serveru; dalším kliknutím je sbalíte. Tlačítko u hostname funguje i klávesnicí.

V Check-in / servery → Smazat check-in admin odstraní všechna uchovaná hlášení

vybraného serveru (nejvýše tři). V záložce Check-in projektu stejné tlačítko

odstraní pouze hlášení vztahující se k tomuto projektu. Hlášení ostatních

serverů a projektů zůstanou zachovaná.

V potvrzovacím okně opište ID serveru v check uvedené nad polem. Pokud mezitím

dorazí nové hlášení, operace se zastaví; obnovte přehled a potvrďte ji znovu.

Chyby se zobrazují přímo v okně. Registrovaný uživatel nemůže mazat ani vlastní

serverové záznamy; oprávnění kontroluje i serverové API.

Odstraňuje se historie přijatých hlášení, nikoli schválení serveru, jeho

přístupový klíč nebo licence. Po dalším check-inu se server znovu objeví.

Pokud chcete zakázat licencovaný přístup, upravte schválení či licence.

Interní komunikační log se nemaže. Úspěšné smazání je dohledatelné v

Historii změn jako checkin.delete s účtem admina, časem a ID serveru.

Přehled a kompletní detail (1.7.1)

Check-in / servery řadí servery od nejnovějšího přijatého hlášení. Po rozbalení

řádku otevřete Detail serveru. eWeb zobrazí hostingové údaje, moduly, služby,

monitoring a zabezpečení; eCast kanály, klienty, nahrávání, disky a balíčky.

V oddílech jsou dostupná všechna přijatá pole, včetně dosud neznámých.

Chybějící údaje se nevymýšlejí a citlivé přístupové údaje se maskují.

Přihlášené rozhraní používá GET /api.php?action=server.report&server=ID.

Volitelné project=PROJECT_ID omezí detail na hlášení daného projektu.

Vyžaduje přihlášení, oprávnění k serveru a v projektovém režimu také k projektu.

Pro strojové hlášení klient nadále používá /check/; jeho adresa se nemění.

<!-- Autor programu: PB <pavel.bartos.pb@gmail.com> -->

Nahrávání více ZIPů

V Nahrát balíček přetáhněte více ZIPů do pole nebo je společně vyberte.

Stejně funguje přetažení do prázdného katalogu. Jeden ZIP zachovává dosavadní

postup: celý formulář, kontrola údajů a ruční tlačítko pro zveřejnění.

Existující verzi navíc potvrdíte v samostatném dialogu.

Dva a více ZIPů spustí frontu, nejvýše 20 najednou. Každý soubor se zvlášť

nahraje po částech, rozbalí a načte se jeho install.json a README. Přenosy i

publikování probíhají postupně. Platí dosavadní limit 20 uploadů za hodinu,

512 MiB na ZIP a rozbalení do 2 GiB na balíček; fronta limity neobchází.

package.parent_software_id a package.module_id. Je-li to úplná nová verze,

automaticky se přidá. Novější znamená porovnání verze, nikoli pořadí souborů.

Známý název, popis či README může doplnit existující projekt. Verze, datum vydání,

podporované systémy a instalační příkazy se neodhadují z předchozí verze.

nebo režim nového modulu, vyberte je ručně. Oprávnění, soukromí ani Open/placený

režim již existujícího projektu/modulu upload další verze nepřepíná.

uvidíte jeden souhrn všech přepisovaných programů/modulů a jednou je potvrdíte.

Poté se přepisy provedou postupně bez dalších potvrzení. Zrušení, Escape nebo

zastavení fronty existující vydání nepřepíše. Již přidané nové verze zůstanou.

se odstraní. ID a odkaz vydání zůstávají a nevznikne duplicitní verze.

Licence a statistiky vydání se zachovají. Datum vydání je z nových metadat.

Pokud se původní vydání od potvrzení změnilo, soubor skončí chybou a potřebuje

nové posouzení. Více ZIPů pro tentýž cíl a verzi v jedné frontě není povoleno.

balíčky. Právě probíhající požadavek může doběhnout; již publikované verze zůstávají.

Odchod na jinou stránku rovněž zastaví další zpracování. Fronta není serverová úloha

na pozadí a po zavření prohlížeče automaticky nepokračuje.

můžete následně nahrát samostatně. Dočasné nezveřejněné ZIPy se uklidí při dalším

uploadu po uplynutí 24 hodin. Souhrn odkazuje na úspěšně uložené projekty.

Instalační příkazy z manifestu se při nahrání nikdy nespouštějí na serveru eUpdate.

eUpdate 1.7.6 — RSS, úvod a přehled projektu

Autor programu: PB <pavel.bartos.pb@gmail.com>

Datum vydání: 2026-09-11

celkem 130 položek seřazených podle data od nejnovější. Jedna položka na

projekt, s verzí podle nejnovějšího data vydání. Chybí-li datum, použije se

čas nahrání; bez verzí datum vytvoření projektu.

Názvy, anotace a autorské texty zůstávají v původním jazyce; názvy kanálů,

popisky a kategorie jsou lokalizované. Odkazy a záznamy jsou v CZ/EN stejné.

a sitemap. Přegenerovat RSS aktualizuje obě varianty. Zahrnuje je diagnostika

a stránky je nabízejí také v metadatech pro RSS čtečky.

obnovují RSS. Při prvním požadavku po aktualizaci se nové kanály vytvoří i

bez změny obsahu. Distribuční balík již obsahuje obě XML z původního snímku.

šířku. Na menších obrazovkách se přizpůsobuje do dvou a jednoho sloupce.

Text lze běžně označit, kopírovat a přečíst i bez JavaScriptu.

Open Graph, Twitter a strukturovaná data WebSite s třemi tematickými oblastmi.

v zavřené sekci Starší verze. Stažení, soubory, metadata a správcovské akce

zůstávají dostupné i u starších verzí. Stejné členění platí v HTML bez JS.

verze a samostatný graf prohlížení. Výchozí období je posledních 12 měsíců,

přepnout lze na 30 dní. Poslední verze je označena konkrétním číslem.

jednotlivých verzí za období i od začátku evidence. Zůstávají čitelné i při

nedostupném grafu. Moduly nejsou zahrnuté do součtu verzí projektu.

požadavky; otevření projektu se započítá nejvýše jednou za 30 minut v relaci

a vlastní návštěvy správců projektu se nezapočítávají. Jde o evidované

události, nikoli počet unikátních osob. Aktuální den a měsíc nejsou uzavřené.

Podrobnosti RSS: /docs/registry.cs.md. Cron se nemění. SQL schéma se nemění;

zůstává oprava importního zámku z 1.7.5 i všechny opravy 1.7.4. Balík vychází

z původní dodané zálohy 1.7.3 a neobsahuje pozdější data ze živého serveru.

eUpdate 1.7.5 — oprava souběhu při obnově SQL

Autor programu: PB <pavel.bartos.pb@gmail.com>

Datum vydání: 2026-09-11

Příčina chyby 1050

Původní dump správně obsahuje DROP TABLE IF EXISTS před CREATE TABLE. Starší

eUpdate však v mysql_prepare při každém požadavku a běhu cronu prováděl CREATE

TABLE IF NOT EXISTS pro všechny své tabulky. Když požadavek přišel mezi DROP

a CREATE během obnovy, tabulku vytvořil a import skončil hláškou Table already

exists. Následné zstd Broken pipe je důsledek ukončeného SQL importu.

Oprava

zámek jako mysql_db: eupdate: a název právě zvolené databáze. Zámek znají také

předchozí verze eUpdate, proto jejich požadavky během importu čekají.

import skončí výslovnou chybou ještě před prvním DROP TABLE. Při dokončení

se uvolní; při pádu importního spojení jej uvolní databázový server.

pouze ochranný blok zámku. Název databáze se neuvádí napevno, takže funguje

i přepis cíle obnovy v eWebu.

databázi. Vrátí stav 503 s pokynem dokončit obnovu SQL.

private/update-tools/bin/migrate-mysql.php. Existující neúplné tabulky se

tímto nástrojem automaticky nepřepisují.

Obnova po přerušeném importu

V eWebu zopakujte obnovu z této zálohy se součástmi Soubory a Databáze.

Předchozí import mohl zanechat databázi neúplnou. Záloha obsahuje původní data

z dodané verze 1.7.3 a všechny aplikační opravy 1.7.4 i 1.7.5. Pozdější změny

na živém serveru její součástí nejsou.

Monitoring nadále používá private/update-tools/collect-monitor.php každou

minutu (* * * * *). Pro tuto opravu není potřeba přidávat další cron úlohu.

Ověřeno 15 cílenými kontrolami na izolované MariaDB, včetně přesné reprodukce

chyby, souběhu staré i nové aplikace s obnovou, opakovaného importu, zachování

dat, odmítnutí importu bez zámku a uvolnění zámku při chybě. Nasazení na živém

clusteru se neprovádělo. Budoucí externí dump musí pro stejnou koordinaci

obsahovat zámek; pro jeho přidání slouží private/update-tools/bin/wrap-restore-sql.py.

eUpdate 1.7.4 — úložiště, XML výstupy, monitoring a diagnostika

Autor programu: PB <pavel.bartos.pb@gmail.com>

Datum vydání: 2026-09-11

verzí čekajících na převod. Převod se nabízí jen tehdy, když je potřeba;

hotová struktura má vysvětlení. Úspěch zobrazí odkaz, chybu lze opravit a opakovat.

a stažení. Nadále platí dvě poslední úspěšné zálohy na účet.

počet položek, náhled prvních 50 položek a escapovaný náhled XML. Oba výstupy

lze samostatně přegenerovat. RSS vysvětluje svůj rozsah a prázdný obsah.

všech souborů. Odlišný obsah nebo soubor navíc převod zastaví.

Úklid původních složek proběhne až po potvrzení transakce.

vzorky cronu, administrace použije pevně určený pomocný Python proces pod

stejným OS uživatelem. Čte jen systémové čítače; nezvyšuje oprávnění, nemění

PHP/FPM ani cron koordinátor. Potřebuje /usr/bin/python3 a povolené proc_open.

na další minutový cron. Čerstvé vzorky se krátce sdílejí přes stávající MySQL

settings, vždy podle hostname. Údaje jiného uzlu se nepodsouvají.

úložiště, veřejných XML, počty řádků tabulek, posledními 200 auditními a

komunikačními událostmi a dostupnými konci doménových logů. Obsahuje také

dostupnou definici cronu a výslovný seznam nedostupných podkladů.

a CSRF. Odkaz platí 30 minut; mezi exporty zůstává nejvýše 5 ZIPů. Obsahuje

nejvýše 20 logových souborů, 128 KiB z každého a 2 MiB logů celkem. Komprimované

rotace a symlinky se vynechávají. Rozpoznané přístupové údaje se redigují.

check-iny a konfigurace hostingu se v distribuční záloze zachovávají.

Distribuce: úplná záloha eweb-backup-v3 pro obnovu v eWebu. Obsahuje data

z původní přílohy 1.7.3, nikoliv změny provedené později na živém serveru.

Podrobný návod: /docs/maintenance-174.cs.md (EN: maintenance-174.en.md).

Obsluha

jde o různé údaje. Po Přegenerovat se přehled automaticky obnoví.

Stáhnout diagnostiku; nedostupný podklad je uveden v collection.json.

a vlastní texty chyb mohou zůstat. Diagnostika není záloha pro obnovu.

Omezení procesu Python nebo práv uživatele se neobchází ani automaticky nemění.

Pokud přímé měření, cron i pomocný proces selžou, chybějící metriky jsou označené

jako nedostupné a diagnostika zaznamená důvod. Starší rady čekat vždy pouze na

cron se pro verzi 1.7.4 nahrazují tímto postupem.

Cron v eWebu

Pro doménu update.estudium.eu zapněte úlohu eUpdate monitoring se skriptem

private/update-tools/collect-monitor.php a výrazem * * * * * (každou minutu).

Dodaná záloha již tuto úlohu obsahuje v cron/cron.json; pokud je v eWebu vidět,

nevytvářejte druhou. Cron zajišťuje sběr na pozadí, administrace umí měřit také

při otevření Nastavení eUpdate.

<!-- Autor programu: PB <pavel.bartos.pb@gmail.com> -->

Oprava měření na eWebu od 1.7.3

eWeb omezuje PHP-FPM na web/, private/ a dočasné složky. Předchozí verze

chybně začínala procházením jejich nadřazené složky; její nedostupnost vyhodnotila

jako prázdnou složku. Oprava prochází private/ a web/ přímo. Kategorie

Data projektů · private/ obsahuje soubory v private/ mimo oddělené logy

či zálohy, včetně starších adresářových struktur a podpůrných soukromých dat.

Součet Celkem private/ zahrnuje celou změřenou private/ včetně jejích logů

a záloh; jde o doplňkový údaj, který se nepřičítá do grafu znovu.

Diskové karty ukazují celý svazek, tabulka a graf změřená data této aplikace.

Velikosti se obnovují každou minutu nebo na tlačítko. Zakázaná nebo nečitelná

složka znamená neúplné měření s vysvětlením, nikoli platnou nulovou velikost.

Symbolické odkazy se nesledují. Časový limit a označení neúplného skenu zůstávají.

Stejné omezení PHP blokuje /proc pro CPU, RAM a síť. Záloha proto obsahuje

private/update-tools/collect-monitor.php a nativní eWeb úlohu **eUpdate

monitoring** v cron/cron.json s výrazem * * * * *. eWeb při obnově souborů

provádí eweb-cron sync-domain a úlohu zaregistruje. Běží jako účet domény,

nikoli root. Nemění se PHP-FPM pool, open_basedir ani systémové přístupové údaje.

Po prvním běhu cronu jsou dostupné hodnoty RAM/CPU/sítě. Sběrač během každé

minuty pořídí šest vzorků v desetisekundových rozestupech, celkem běží asi

50 sekund. Historie v MySQL settings je omezená na poslední minutu, nejvýše

8 vzorků pro každé z nejvýše 16 hostname. Nepřidává se JSON databáze ani SQL

tabulka. PHP přečte pouze vzorky svého hostname; neplatné a staré vzorky

(starší 90 sekund) nepoužije. Dostupná přímá měření mají přednost. Fyzické

rozhraní nedostupné hostingu se nenahrazuje vymyšleným rozhraním.

Sběrač také změří běžné logové soubory domény, které PHP-FPM číst nesmí;

jejich velikost může přehled použít nejvýše 150 sekund. Logový SQL obsah

se stále nezapočítává do DB i logů dvakrát.

Pokud údaje nedorazí do minuty, ověřte v eWebu zapnutí úlohy a její cron log.

Krátké jednorázové ověření pod účtem domény lze spustit takto:

php /var/www/update.estudium.eu/private/update-tools/collect-monitor.php --once

V clusteru platí pravidla eWeb cronu: doménové úlohy běží na řídícím serveru.

Pokud obsluhuje web jiný člen, musí jeho správce zajistit samostatné místní

měření pod účtem domény; údaje jiného člena se nezobrazí jako jeho vlastní.

Rozhraní uvádí hostname, zdroj měření a případné čekání na sběrač.

<!-- Autor programu: PB <pavel.bartos.pb@gmail.com> -->

Oprava měření eUpdate 1.7.3 na hostingu eWeb je v oddílu [Měření hostingu](#monitoring-173).

<!-- Autor programu: PB <pavel.bartos.pb@gmail.com> -->

Vydání, moduly, logy a přihlášení od 1.7.2

Přehled modulů a licence

V projektu na záložce Moduly je nad kartami malá tabulka seřazená abecedně

podle názvu. Obsahuje název s odkazem, nejnovější verzi a datum jejího vydání.

Verze se porovnávají podle čísla, nikoli podle času uploadu; datum patří témuž

vydání. Neuvedené datum zůstává prázdné (pomlčka). Přehled respektuje oprávnění

projektu a viditelnost modulů.

Při přidělování licence je také vidět nejnovější dostupná verze. Nejde o výběr

jediné licencované verze: oprávnění platí pro modul a jeho další aktualizace až

do konce platnosti licence. Nabídka dál obsahuje pouze moduly příslušného programu.

Přepsání a mazání

Jeden ZIP nejprve zkontrolujete ve formuláři. Je-li stejné číslo verze již u

cílového programu/modulu uložené, eUpdate si vyžádá souhlas s jeho přepsáním.

U více ZIPů schválíte všechny přepisy společně v jediném souhrnu. Nahradí se

archiv i celý rozbalený obsah. ID a odkaz vydání zůstanou a verze se nezdvojí.

Změna původního vydání jiným vydavatelem staré potvrzení zneplatní.

Mazání verze, modulu nebo projektu odstraní také jeho souborové verze a Git

cache. Před mazáním se nadále vytvoří záloha podle dosavadních oprávnění.

Ta zůstává v neveřejných zálohách s retencí dvou posledních záloh na účet;

nejde o aktivní vydání dostupné v projektu. Pokud oprávnění disku nedovolí

úklid po potvrzené SQL změně, API vrátí cleanup_warning a PHP log obsahuje

chybu. Správce zkontroluje soukromé staging/retired-*.

Git clone

Cesta /git/software-id.git nyní funguje také přes výchozí směrování Nginx do

index.php, které je v dodané záloze. Na hostingu musí být dostupný Git a PHP

proc_open. Pro veřejný projekt použijte příkaz z jeho stránky:

git clone https://update.estudium.eu/git/software-id.git

Neveřejný projekt nadále vyžaduje X-Project-Secret. Přepsání vydání mění obsah

jeho Git tagu a může přestavět navazující historii. Existující klon aktualizujte

pomocí git fetch --force --tags origin a změny si prohlédněte; běžný pull

může odmítnout rozdílnou historii. Čistý nový klon poskytne aktuální stav.

Místní změny se automaticky nemažou. Git push zůstává zakázán.

Odesílání logů do eWebu

používá), například https://eweb.example.org:8443, a hostname odesílatele.

a otisku, které ukazuje nastavení eUpdate. Znovu otestuje doručení.

Spouští se pod účtem domény s přístupem ke stejné konfiguraci MySQL jako PHP.

Integrace používá přijímač /api/log-ingest.php a jeho operace offer, status

a events, ověřené proti eWebu 0.8.9. Přijímač musí mít zapnutý analyzátor logů.

HTTPS certifikát a hostname se ověřují; přesměrování se nesledují. Odesílatel má

vlastní náhodné ID a tajný token v neveřejném nastavení MySQL. Token se ve

formuláři ani v logu nezobrazuje. Nejde o heslo administrátora eWebu.

Posílají se nové události auditu (včetně přihlášení), výsledky checkeru a základní

diagnostika neošetřených chyb aplikace. Hesla, klíče a celé syrové check-iny se

neposílají. Systémové a Nginx logy se tímto nastavením nenačítají a starý audit

se zpětně neexportuje. Výchozí stav je vypnuto.

Soukromá fronta v MySQL uchová nejvýše 2 000 událostí. Při přeplnění zahazuje

nejstarší a ukazuje jejich počet. Dávka má nejvýše 100 událostí a méně než

240 kB; běžné opakování probíhá nejdříve za minutu. Události se odeberou až po

potvrzení celé dávky. Při výpadku, čekání na schválení nebo pozastavení příjmu

zůstávají ve frontě. Stálá ID událostí umožňují přijímači odstranit duplicity při

opakování. Změna cílové adresy/hostname vyprázdní čekající frontu; existující

schválenou identitu na přijímači nepřejmenuje. Vypnutí pozastaví další odesílání.

Blokace opakovaného chybného přihlášení

Páté neúspěšné přihlášení v klouzavém okně 60 sekund uloží ban na 24 hodin

od pátého pokusu. Jde o účet, nikoli pouze IP adresu: login, CAR a CORE stejného

účtu sdílí omezení, bez možnosti obejít je změnou velikosti písmen nebo IP.

Během banu neprojde ani správné heslo a další pokus dobu neprodlužuje.

Po 24 hodinách blokace automaticky vyprší. Úspěšné přihlášení před dosažením

limitu čítač resetuje. Existující přihlášené relace se tím neodhlašují.

API vrací HTTP 429 a počet zbývajících sekund v Retry-After a retry_after.

Dosavadní dodatečný limit pokusů podle IP zůstává v platnosti.

Tabulky MySQL se v 1.7.2 nemění. Nastavení logů a blokace využívají existující

úložiště settings a rate; příchozí check-iny dál zůstávají v JSON.

Stav serveru, disk, CPU, RAM a síť

V Nastavení eUpdate vidí administrátor celkovou kapacitu svazku, obsazené

místo a volné místo v procentech i MiB/GiB. CPU ukazuje průměr skutečně

využitého procesorového času mezi vzorky; vedle je systémová zátěž (load average)

za 1, 5 a 15 minut. RAM ukazuje obsazenou/dostupnou paměť a průměrné využití.

Síť / LAN používá rozhraní výchozí trasy; podrobnosti vypíší i ostatní rozhraní.

RX/TX jsou příjem/odesílání, rychlosti se zobrazují v B/s, KiB/s, MiB/s apod.

Celkové čítače platí od spuštění rozhraní; virtuální a fyzické rozhraní se nesčítají.

Vzorkování běží po 10 sekundách pouze na otevřené stránce. CPU a přenosové

rychlosti potřebují alespoň dva vzorky, průměr zahrnuje nejvýše poslední minutu.

Po odchodu ze stránky se měření zastaví. Přímé vzorky jsou v prohlížeči; krátkou historii CLI sběrače ukládá MySQL.

Údaje platí pro hosting viditelný procesu PHP: na sdíleném hostingu mohou

popisovat celý host a dostupnost závisí na oprávnění k /proc. Chybějící údaje

se označí jako nedostupné, nenahrazují se nulou.

Koláčový graf s tabulkou rozděluje změřená data eUpdate, nikoli celý disk:

databáze, data projektů (ZIP i zdroje včetně modulů), logy, zálohy a ostatní

soubory. Každá kategorie uvádí velikost a procentní podíl. Velikost DB je odhad

alokovaných tabulek/indexů; obsah auditních logů, checkeru a odesílací fronty se

z DB odečte a přičte k logům, takže se nepočítá dvakrát. Soubory se měří podle

délky obsahu, ne fyzicky přidělených bloků. DB může být na jiném serveru.

Svazek může navíc obsahovat data jiných aplikací, proto součet grafu nemusí

odpovídat celému obsazenému disku.

Velikosti se skenují při otevření nastavení nebo po tlačítku **Obnovit včetně

velikostí dat**; běžné desetisekundové vzorky adresáře neprocházejí. Sken

nesleduje symbolické odkazy a má časový limit čtyři sekundy / 300 000 souborů.

Neúplné výsledky jsou výslovně označené.

Vymazání všech logů

Admin použije Vymazat všechny logy a potvrdí opsáním CLEAR LOGS.

Vyprázdní se audit, komunikační log checkeru, čekající fronta odesílání a

běžné soubory v logs/, private/update-data/logs/ a staré soubory

checker-log*.json přímo v datové složce. Otevřené soubory se zkrátí na

nulovou délku, aby do nich služby mohly dál zapisovat. Symbolické odkazy

se neprocházejí; zamčené nebo nezapisovatelné soubory jsou v souhrnu neúspěšných.

Check-in hlášení instalací, licence, nahrané balíčky (včetně jejich souborů

pojmenovaných .log), přístupová identita eWebu a blokace přihlášení se nemění.

Již odeslané logy se na přijímajícím eWebu tímto tlačítkem nemažou. Uchované

zálohy se nepřepisují. MySQL může po odstranění řádků ponechat alokované místo

k dalšímu použití; tlačítko neprovádí OPTIMIZE TABLE. Nový provoz tvoří nové

logy. Čas a účet posledního vymazání zůstávají ve správním nastavení.

Přidělování licencí v eUpdate 1.7.2

Autor programu: PB, pavel.bartos.pb@gmail.com

V Check-in / servery rozbalte server a zvolte Udělit / změnit licenci.

Tabulka zobrazuje dostupné placené moduly, jejich projekt, přidělení, datum

Platnost do a stav. Server musí být nejprve schválený administrátorem.

Admin spravuje všechny licence; registrovaný účet potřebuje oprávnění k projektu

(a modulům) i přiřazený server. Open moduly se v této tabulce nepřidělují.

Při částečném výběru ukazuje mezistav. Data platnosti se tím nemění.

platnost bez omezení. Zadaný den je zahrnut celý v UTC. Prošlé datum zůstává

viditelné a licence je označena jako prošlá.

hromadný výběr ani zavření okna žádnou změnu na server neukládá.

přímo v okně. Pokud licenci mezitím změnil jiný správce, zavřete okno,

obnovte přehled a otevřete licence znovu, aby se načetly aktuální hodnoty.

Přidělení licence nemění klíč, hostname, povolené IP ani schválení serveru.

Klient dál používá stávající autentizaci přes /check/ a licencované stahování.

Struktura tabulek MySQL se oproti 1.6.8 nemění.

Vazba licence na program

Nabídka i uložení licence používají program z posledního přijatého check-inu.

software_id se musí shodovat s ID publikovaného programu: například

eweb-server nebo ecast-pipe-server. Bez software_id se u starších hlášení

porovnává přesný název programu. Nerozpoznaný program nedostane nabídku cizích

modulů. Stejná kontrola platí pro license.save i licenses.save.

Řádky jsou kompaktní, dlouhá tabulka se posouvá samostatně a záhlaví zůstává

viditelné. Hromadný výběr nemění data platnosti.

Verze modulu

Sloupec Nejnovější verze ukazuje nejvyšší dostupnou verzi daného modulu.

Licence platí pro modul včetně jeho dalších aktualizací do konce platnosti.

Nejde o omezení licence jen na zobrazenou verzi.

eStudium.eu

Dokumentace balíčků a aktualizací

Veřejná dokumentace bez přihlášení. Autor programu: PB, pavel.bartos.pb@gmail.com.

eUpdate 1.7.9

Webové aplikace a balíčky eLoaderu mají požadavky na prostředí a licence. Zkopírujte instalační odkaz nebo vyhledejte nejnovější kompatibilní verzi.

Instalační API a formát balíčků

1. Struktura ZIPu

Každá verze programu a každý modul mají vlastní ZIP. Doporučené soubory umístěte přímo do kořene archivu:

Cesta v ZIPuObsah
install.jsonMetadata níže. Použijte UTF-8 a platný JSON bez komentářů.
readme.mdPopis programu, požadavky, instalace a postup aktualizace.
install.shInstalace na Linuxu, pokud uvádíte automatický příkaz.
install.ps1Instalace na Windows, pokud ji skutečně podporujete.
src/…Zdrojové a datové soubory programu; strukturu určuje vydavatel.

Povolený je i obalový adresář, například example-app/install.json. Server hledá manifest nejblíže kořeni. Relativní cesta README se vyhodnotí nejprve vůči adresáři manifestu. Bez explicitní pracovní složky se použije adresář manifestu; údaj archive_metadata.working_directory je vždy vůči kořeni rozbaleného ZIPu.

Limity: ZIP 512 MiB, rozbalený obsah 2 GiB, soubor 512 MiB, 30 000 položek. Nepovolují se šifrované archivy, symlinky, absolutní cesty, ../, duplicitní cesty ani speciální soubory. Běžný prefix ./ je podporovaný. ZIP se nahrává po částech; během přenosu ponechte stránku otevřenou.

Chybějící nebo neplatný manifest nebrání importu: povinná pole doplníte ve formuláři. Před zveřejněním je vždy potřeba obsah potvrdit. Původní ZIP ani jeho SHA-256 se ručním doplněním metadat nemění.

V detailu vydání otevřete Soubory. U každé položky uvidíte typ podle přípony (php/html/js/…). Vybraný soubor stáhnete samostatně přes Stáhnout soubor, i když je binární nebo přesahuje limit náhledu 512 KiB. PHP/HTML se stahuje jako příloha a na aktualizačním serveru se nespouští. Placené soubory může takto získat pouze přihlášený vlastník/admin; licencovaný klient stahuje celý ZIP.

2. Soubor install.json

Následující příklad ukazuje formát, nikoli ověřenou kompatibilitu skutečného programu. Uvádějte pouze systémy a příkazy, které jste otestovali.

Stáhnout příklad JSON

{
  "software": "Example App",
  "software_id": "example-app",
  "version": "1.2.0",
  "release_date": "2026-09-07",
  "author": { "name": "PB", "email": "pavel.bartos.pb@gmail.com" },
  "description": { "cs": "Ukázkový program pro dokumentaci.", "en": "Example program for documentation." },
  "package": { "type": "release" },
  "compatibility": {
    "os_types": ["linux", "windows"],
    "distributions": [{ "id": "ubuntu", "name": "Ubuntu", "versions": ["24.04"] }],
    "os_versions": ["Windows 11"]
  },
  "installation": {
    "commands": {
      "linux": { "supported": true, "command": "bash ./install.sh" },
      "windows": { "supported": true, "command": "& ./install.ps1" }
    }
  },
  "documentation": { "readme": "readme.md" },
  "archive_metadata": { "working_directory": "." }
}
PoleVýznam a pravidla
softwareNázev programu nebo modulu, nejvýše 100 znaků.
software_idStálý identifikátor programu, 2–80 znaků a–z, 0–9 a pomlčka. Klient ho používá pro nalezení aktualizace.
versionVerze, nejvýše 64 znaků. Doporučeno 1.2.3. Povolená jsou písmena, číslice, tečka, pomlčka, podtržítko a plus. Nová verze nesmí přepsat již publikovanou.
release_datePovinné datum vydání ve formátu RRRR-MM-DD. Import rozpozná i released_at, release.date a release.released_at, včetně data na začátku ISO timestampu. Chybějící datum doplňte ručně. Čas nahrání se eviduje samostatně.
description.cs / enStručný popis. Formulář načte češtinu, případně angličtinu. Uživatelský obsah se automaticky nepřekládá.
authorNepovinný autor a kontakt; zachová se v metadatech. Nevkládejte hesla ani klíče.
compatibility.os_typesPovinný seznam: linux, windows, macos, other, source.
compatibility.distributionsPro Linux ID, název a verze každé podporované distribuce. Alternativou je výslovná volba any_linux_distribution: true.
installation.commands.OSPro každý podporovaný OS uveďte buď supported: true a neprázdný command, nebo supported: false, mode: "manual" s postupem v README. Automatické pomocné skripty se generují pro Linux a Windows.
documentation.readmeCesta k README. Pokud chybí, server hledá readme.md; text je před publikací povinný. Importovaný README a manifest mají limit 256 KiB.
archive_metadata.working_directoryPracovní složka instalačního příkazu, například . nebo example-app; musí v ZIPu existovat. Pro obalový adresář upravte příklad s tečkou.

Neznámá pole lze uchovat a upravit v pokročilých metadatech. Název, verze, popis, OS, příkazy, pracovní složka, README a datum potvrzené ve formuláři mají přednost. U starších verzí bez data se zobrazuje „Neuvedeno“; vlastník může datum doplnit.

3. Samostatné moduly: Open a placené

Nejprve vytvořte rodičovský program. Modul nahrajte jako samostatný ZIP a vyberte typ „Modul programu“. Každý modul má vlastní stálé ID, popis, verze a datum vydání. V manifestu lze přidat:

{
    "type": "module",
    "parent_software_id": "example-app",
    "module_id": "monitoring",
    "access": "open",
    "description": "Monitoring module example."
}

Stáhnout příklad modulu

parent_software_id určuje program; module_id je unikátní v rámci tohoto programu. Ponechte je stejné v dalších vydáních. Manifest předvyplní typ, rodičovský projekt dostupný vašemu účtu, ID a režim. U existujícího modulu platí uložené nastavení přístupu, nikoli hodnota z dalšího ZIPu.

RežimVeřejně dostupnéStažení a aktualizace
openPopis, verze, metadata, ZIP, zdroje.Zdarma bez přihlášení a licence. „Open“ je režim dostupnosti; nenahrazuje licenci ke zdrojovému kódu. Konkrétní podmínky uveďte v README/LICENSE.
paidVeřejný popis, číslo verze, datum vydání a základní technické údaje.Vlastník/admin přes přihlášení; klientský server přes schválené ID, klíč, hostname, IP a aktivní modulovou licenci.

Platby a fakturace nejsou automatizované. Licenci uděluje oprávněný správce po sjednání podmínek. Původní soukromé moduly zůstávají ve výchozím placeném režimu. Změna režimu ovlivní všechna vydání; již stažené kopie nelze odvolat.

4. Veřejný přehled aktualizací

/updates.json je veřejný JSON soubor, který se obnoví při publikaci nebo změně projektu, modulu či data vydání. Obsahuje aktivní programy a nejvyšší dostupnou verzi každého programu/modulu. Archivované projekty nejsou nabízené k aktualizaci.

/updates.php vrací přehled přímo z aktuálního datového skladu. Umí také porovnat jednu verzi: /updates.php?software_id=example-app&version=1.1.0. Pole update_available je pravdivé pouze pro vyšší dostupnou verzi.

Klient hledá program podle software_id, modul podle dvojice ID programu a modules[].software_id. Čísla verzí porovnává pomocí PHP version_compare, nikoli řazením textových řetězců: 1.10.0 je novější než 1.9.0. Datum vydání neslouží k porovnání verzí.

curl --fail --silent --show-error -H 'Cache-Control: no-cache' \
  'https://update.estudium.eu/updates.php?software_id=example-app&version=1.1.0'

V latest jsou version, release_date (datum autora, u starších dat může být null), published_at (čas publikace v eUpdate), release_id, sha256, bytes, compatibility, requires_license a download_url. Program bez veřejného vydání má latest: null.

Open modul má requires_license: false a veřejný odkaz. Placený má requires_license: true a download_url: null. Konkrétní oprávněný server získá licencované odkazy z autentizovaného POST /check/; veřejný feed žádné licence ani klíče nevydává.

Pro placený download klient posílá X-Server-ID, X-Server-Hostname a připnutý 64hex klíč v X-Eweb-Api-Key nebo Authorization: Bearer …. Před spuštěním staženého balíčku ověřte SHA-256, podporovaný OS a instalační postup vydavatele. Tajný klíč nikdy nevkládejte do URL.

Tato dokumentace popisuje rozhraní serveru. Instalovaný eWeb musí mít klientskou implementaci načtení feedu, porovnání verze a nabídnutí aktualizace; samotné zveřejnění JSONu jeho klientský kód nezmění.

5. Manuál check-inu programu eclone-server

Identifikátor projektu: eclone-server. Každá instalace pravidelně posílá HTTPS POST na https://update.estudium.eu/check/. Pro strojový POST se nepoužívá přihlášení admin/admin ani browserový CSRF token. Čtení administračního /check/ je nadále jen pro admina.

První registrace

  1. Pro instalaci jednou vytvořte náhodné stabilní ID (např. UUID) a tajný API klíč: 32 kryptograficky náhodných bajtů zapsaných jako 64 hex znaků.
  2. ID a klíč uchovejte v soukromé konfiguraci. Další hlášení používají stejnou dvojici; jednotlivé běhy mají pokaždé jiné checkin_id. Kopie instalace na jiném serveru musí mít vlastní identitu.
  3. Klíč odešlete v hlavičce X-Checkin-Api-Key. Podporované jsou také X-Eweb-Api-Key, X-Ecast-Api-Key, X-Server-Checkin-Key a Authorization: Bearer. Klíč nevkládejte do URL ani JSON payloadu.
  4. První platný klíč se připne k ID (TOFU). První registrace nezaručuje schválení serveru ani placenou licenci. Při ztrátě klíče musí admin po ověření identity resetovat jeho připnutí; nezkoušejte pro stejné ID náhodné nové klíče.

JSON hlášení

{
    "schema": "eupdate-checkin-v1",
    "server_id": "00000000-0000-4000-8000-000000000001",
    "checkin_id": "0123456789abcdef0123456789abcdef",
    "software": "eclone-server",
    "software_id": "eclone-server",
    "version": "1.3.0",
    "installation": {
        "id": "00000000-0000-4000-8000-000000000001",
        "installed_at": "2026-09-01"
    },
    "system": {
        "hostname": "node.example.org"
    }
}
PolePravidlo
software_idPřesný stabilní identifikátor vloženého programu; propojí hlášení se záložkou Check-in tohoto projektu.
server_id / installation.idStálá identita dané instalace. U eWeb je podporované také eweb_id a u eCast ecast_id; neposílejte navzájem rozdílná ID.
checkin_idNových 32 hex znaků pro každé nové hlášení. Při opakování stejného požadavku po výpadku použijte stejné ID. Schéma eweb-checkin-v2 ho vyžaduje.
software, versionNázev programu a skutečně nainstalovaná verze. Číslo verze neodvozujte z nejnovějšího nabízeného balíčku.
installation.installed_atNepovinné skutečné datum instalace, datum nebo ISO 8601 čas. Pokud není známé, pole vynechte. Není to datum prvního odeslání hlášení ani datum vydání programu.
system.hostnameSkutečný hostname serveru. Pro placené moduly se porovnává se schváleným hostname a IP.

Hostingový program může přidat webhosting.domains_count a webhosting.domains jako pole objektů s domain, enabled, php_version a ssl.status. Pro detail lze posílat také OS, hardware, software_stack a services. Neposílejte hesla, privátní klíče, databázové přístupy ani jiné přihlašovací údaje.

Příklad odesílacího klienta

Stáhnout příklad klienta pro Python 3

Příklad funguje na Linuxu a Windows s Pythonem 3, bez dalších knihoven. Vytvoří a uchová identitu v privátní složce. Na Linuxu má složka práva 700 a identity.json 600; na Windows omezte přístup ACL na účet služby. Výchozí cesta je ~/.local/state/eupdate-checkin/eclone-server/identity.json. Identitu nikdy nepřibalujte do veřejného ZIPu.

python3 send-checkin.py --software-id eclone-server --version 1.3.0 --hostname node.example.org --installed-at 2026-09-01

Na Windows použijte py -3 místo python3. Verzi, hostname a datum nahraďte skutečnými hodnotami; neznámé datum vynechte. Jedna složka uchovává identitu jedné instalace. Pro více instalací téhož programu na jednom stroji použijte rozdílné --state-dir. Opakované spuštění pod stejným účtem zachová ID a klíč. Skript neposílá falešné potvrzení instalace ani automaticky neinstaluje aktualizace.

Odpověď, opakování a licence

HTTP 200 a ok: true znamenají zpracování hlášení, nikoli instalaci aktualizace. Odpověď obsahuje request_id, server_id, authentication, duplicate, license_status, updates a modules. updates[].update_available porovnává instalovanou verzi programu. Moduly vybírejte podle parent_software_id a vlastního software_id a porovnejte jejich verze; Open může být nabídnut i před schválením serveru.

Pro placené moduly musí admin schválit skutečný hostname, zdrojovou IP (za NATem veřejnou odchozí IP) a vlastníka serveru. Vlastník projektu/admin pak udělí modulovou licenci. Samotná znalost hostname ani úspěšný první check-in k licenci nestačí.

HTTPReakce klienta
400 / 422Opravte JSON nebo povinné údaje, neopakujte beze změny.
401 / 403Ověřte formát klíče, jeho připnutí a oprávnění; neměňte automaticky identitu.
413Hlášení zmenšete. Aplikační limit je 1 MiB; proxy může mít menší limit.
429Zpomalte odesílání. Limit je 120 hlášení za minutu na zdrojovou IP.
5xx / výpadek sítěOpakujte s prodlevou a náhodným rozptylem, stejným payloadem a checkin_id; nevytvářejte těsnou smyčku.

Pro malý provoz postačí denní hlášení a hlášení po změně verze; rozložte časy více serverů. Uchovává se posledních 20 hlášení na server, nejde o trvalý audit instalací. Vlastník/admin uvidí projektová hlášení v záložce Check-in, registrovaný vlastník pouze u přiřazených serverů.

Chce-li klient potvrdit přijetí nebo instalaci, může v dalším hlášení přidat checker_feedback s response_id z předchozího request_id a stavem received, downloaded, installed, failed nebo ignored. Stav installed odešlete jen po skutečně úspěšné instalaci. Volitelný error_code má nejvýše 80 znaků a nesmí obsahovat tajné údaje.

6. Jak zjistit verzi a specifikaci balíčku přes JSON

U každého veřejného vydání programu je tlačítko JSON specifikace. Otevře samostatný veřejný soubor /specifications/ID_VYDANI.json, dostupný bez hesla. Soubor obsahuje konkrétní verzi, nikoli vždy nejnovější vydání.

  1. Otevřete updates.json a v projects vyhledejte software_id = eclone-server.
  2. latest.version udává nejvyšší dostupnou verzi; latest.release_date její datum vydání. Pokud je latest null, program ještě nemá veřejné vydání.
  3. Otevřete URL z latest.specification_url. U programu vede přímo na jeho .json soubor s úplnou specifikací.
  4. Pro konkrétní starší verzi použijte živé rozhraní níže nebo otevřete její JSON tlačítko v historii vydání.

Nejnovější specifikace programu:

https://update.estudium.eu/specification.php?software_id=eclone-server

Konkrétní verze, pokud ji program skutečně zveřejnil:

https://update.estudium.eu/specification.php?software_id=eclone-server&version=1.3.0

Rozhraní specification.php vrací Content-Type: application/json stejně jako .json soubor. Nepoužívá přihlášení. Neexistující program nebo verze vrátí HTTP 404. Programové specifikace zůstávají dostupné i po archivaci, protože archivace nemaže vydání. Skutečně smazaná verze už specifikaci nemá.

Pole specifikaceCo z něj zjistíte
schemaeupdate-package-specification-v1
software_id, version, release_idStálý program, číslo verze a interní ID konkrétního balíčku.
release_date / published_atDatum vydání autorem / čas publikace v eUpdate. Chybějící staré datum je null.
install_jsonÚplná potvrzená metadata: popis, autor, kompatibilita, závislosti a instalační příkazy. Obsahuje i ruční opravy vydavatele; nemusí být totožný s původním install.json uvnitř neměněného ZIPu.
bytes, sha256, file_count, languagesVelikost originálního ZIPu, ověřovací hash, počet souborů a rozložení typů zdrojového kódu.
readme, download_urlPotvrzený návod a URL ke stažení originálního ZIPu.

Příklad z příkazové řádky

curl --fail --silent --show-error   'https://update.estudium.eu/specification.php?software_id=eclone-server&version=1.3.0'

Na Windows lze použít curl.exe. Pro načtení jako objekt v PowerShellu:

$spec = Invoke-RestMethod 'https://update.estudium.eu/specification.php?software_id=eclone-server'
$spec.version
$spec.release_date
$spec.install_json.compatibility
$spec.install_json.installation.commands

Open modul má také veřejnou specifikaci, ale přes živé rozhraní: /specification.php?software_id=eclone-server&module=ID_MODULU&version=1.0.0. ID může být interní ID nebo stálé module_id. Placený modul nemá veřejnou plnou specifikaci, protože může obsahovat soukromé instalační údaje; veřejný updates.json u něj ukáže jen omezený přehled. Změna Open na placený okamžitě zakáže další veřejné čtení specifikace. Dříve stažené kopie nelze odvolat.

Účty, náhledy souborů a veřejné adresy projektů

U přihlášení najdete registraci. Nový účet může ihned spravovat vlastní projekty. Pouze admin mění role v Uživatelé → Upravit → Role. Po změně role se uživatel znovu přihlásí.

Soubory balíčku nabízejí Vzhled a kód pro Markdown a HTML a barevné zvýraznění PHP, C/C++, JS, Python, CSS, JSON a dalších rozpoznaných formátů. HTML má oddělený statický náhled bez skriptů, formulářů a externích zdrojů. CSS a rastrové obrázky mohou pocházet z téhož ZIPu (nejvýše 16 zdrojů / 8 MiB, CSS do 512 KiB a obrázek do 2 MiB). CSS importy a obrázky odkazované přes CSS URL se nenačítají.

Každý projekt má veřejnou adresu /LOGIN/SLUG, obsah dostupný bez JavaScriptu, popis, canonical a metadata pro sdílení. sitemap.xml se automaticky aktualizuje při každé změně projektu, verze či modulu včetně archivace, smazání a obnovy zálohy. Vytváří se pouze sitemap.xml. Archivované projekty v něm nejsou a mají noindex; smazané vracejí 404.

Ukázkový balíček v angličtině

Stáhnout kompletní ukázkový ZIP

Obsahuje install.json, README, složku programu, vstupní skripty pro Linux a Windows a ukázky HTML, CSS a C. Nahráním vyzkoušíte import metadat. Ukázkové skripty pouze vypíší zprávu.

Údaje vydavatele a komunita

Upload předvyplní author.name, author.email, author.website a project.website (náhradně homepage). Vydavatel je může upravit před publikací. Autor v manifestu je oddělen od vizitky účtu; veřejné ZIPy a specifikace obsahují e-mail autora uvedený přímo v balíčku. E-mail účtu se tam automaticky nekopíruje.

{
  "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"}
}

Registrace vyžaduje neveřejný e-mail a souhlas se zveřejněním vizitky. Přezdívku, popis, CV, fotku a web upravíte v Můj účet. Souhlas lze zrušit a vizitku skrýt. Veřejné hledání nikdy nehledá ani nezobrazuje e-maily. Spolupracovníka přidáte přesným loginem či e-mailem; může upravovat všechny současné i budoucí projekty zvoucího účtu. Další spolupracovníky spravuje pouze vlastník. Zprávy vidí jen odesílatel a příjemce; nepřečtené se ukazují po přihlášení.

Admin může ostatní účty blokovat, odblokovat a mazat. Smazání nejprve vytvoří úplnou zálohu a převede projekty a servery na aktivní účet. Score popularity je 5 × stažení ZIP + prohlížení projektu; návštěvy správců projektu se nezapočítají a opakování v téže relaci nejvýše jednou za 30 minut. Jde o ukazatel aktivity, nikoli počet unikátních lidí.

Viditelnost a odkazy ke stažení přes SecretID

Veřejný/neveřejný nastavíte při vytváření projektu nebo modulu a později změníte v Nastavení projektu či editoru modulu. Neveřejné projekty včetně modulů nejsou ve veřejném katalogu, vizitkách, sitemap ani aktualizačních JSONech. Skrýt lze i jednotlivý modul veřejného projektu. Admin, vlastník a jeho spolupracovníci mají přístup dál.

Každý projekt a modul má vlastní náhodné SecretID. V Nastavení zkopírujete odkaz na ZIP nejnovější verze. Kdokoli s odkazem může stáhnout ZIP bez přihlášení a licence, včetně placeného modulu. Klíč projektu platí jen pro program; klíč modulu jen pro příslušný modul. Obnovení klíče zneplatní staré odkazy. SecretID umožňuje pouze stažení ZIPu, nikoli správu, náhled souborů nebo přístup k JSON specifikaci.

GET /download.php?project=PROJECT_ID&secret_id=PROJECT_SECRET
GET /download.php?project=PROJECT_ID&module=MODULE_ID&secret_id=MODULE_SECRET

Pro konkrétní verzi přidejte &release=RELEASE_ID; jinak se vrátí nejvyšší verze. Místo parametru v URL lze poslat hlavičku X-Project-Secret. Již stažené kopie nelze odvolat. Odkaz uchovávejte jako heslo; běžný přístupový log webserveru může URL zaznamenávat. Běžný přístup serverů k placeným modulům dál vyžaduje schválenou identitu a aktivní licenci modulu.

Import z GitHubu

Po přihlášení vyberte Import z GitHubu a vložte https://github.com/AUTOR/REPOZITAR. Volitelně zadejte větev, tag nebo commit; prázdné pole použije výchozí větev. Funguje také odkaz /tree/VETEV. eUpdate zjistí commit a stáhne ZIP se snímkem zdrojů. Nepřenáší historii Git, issues ani samostatné přílohy vydání. Před publikací ověřte submoduly, obsah Git LFS a licenci zdrojového projektu.

eUpdate načte install.json a README, předvyplní autora a web projektu. Kde údaje nejsou v manifestu, použije název, popis a web repozitáře. Chybějící verzi, datum vydání, podporované OS a postup instalace doplníte ve formuláři. Zkontrolujte pracovní složku: GitHub přidává obalový adresář. Do potvrzení formuláře se nic nepublikuje. V metadatech zůstane adresa repozitáře, větev/tag a commit.

Podporovány jsou veřejné repozitáře github.com bez tokenu. Soukromý repozitář nahrajte jako exportovaný ZIP. Hosting eUpdate potřebuje odchozí HTTPS k api.github.com a codeload.github.com, důvěryhodné CA certifikáty a PHP HTTPS streamy. Limit je 6 importů z jedné IP za hodinu, ZIP 512 MiB a rozbalení 2 GiB. GitHub má také vlastní limity. Velký import může překročit timeout proxy hostingu; v takovém případě použijte upload ZIPu.

Dokumentace archivů zdrojů GitHub

Veřejné vizitky autorů a vCard

Každý aktivní autor se souhlasem s vizitkou má veřejnou stránku /profile.php?id=USER_ID, odkazovanou z projektu a zařazenou do sitemap.xml. Jméno, popis, CV a veřejné projekty jsou čitelné bez JavaScriptu. Vizitka má canonical, metadata pro sdílení a strukturovaná data ProfilePage/Person. Odvolání souhlasu, blokace nebo smazání účtu odstraní vizitku ze sitemap a znepřístupní stránku, fotku i vCard.

V Můj účet vyplňte telefon, osobní web, LinkedIn, e-mail a Wikipedii a samostatně zaškrtněte zveřejňované kontakty. Výchozí volby jsou vypnuté, i u stávajících účtů. Volby platí pro HTML, API, strukturovaná data a vCard. Popis a CV jsou se souhlasem veřejné: nevkládejte do nich kontakt, který chcete skrýt. E-mail účtu bude veřejný pouze se zaškrtnutou vlastní volbou.

/vcard.php?id=USER_ID stáhne vCard 4.0 s přezdívkou, popisem, vybranými kontakty a vloženou fotografií. Podpora vložených obrázků se mezi kontaktními aplikacemi liší. Zachová se UTF-8, CRLF a standardní zalamování řádků. Již stažené vizitky ani cache cizích vyhledávačů nelze odvoláním zveřejnění stáhnout zpět.

Nastavení měření Google

Admin → Nastavení eUpdate nabízí Vypnuto, GA4 (G-…) nebo Google Tag Manager (GTM-…). Ukládá se pouze ID, nikoli vložený skript. Měření je ve výchozím stavu vypnuté. Místní ovládání souhlasu načte Google až po Povolit; Odmítnout nenačte vzdálenou značku. Nastavení měření umožní souhlas odvolat a načte stránku znovu bez měření. Přihlášení uživatelé, neveřejné projekty, API, ZIPy a administrace měřicí skript nedostávají.

Ve webovém streamu GA4 vypněte Rozšířené měření, zejména změny historie, formuláře a odchozí kliknutí. eUpdate odesílá ruční page_view pro veřejně načtené stránky a otevřené projekty/vizitky; používá očištěnou page_location, obecný page_title a prázdný page_referrer. Neodesílá hledané texty, kontakty ani SecretID. Samotné přepnutí každé záložky s hashem se jako pageview nepočítá. GTM nastavte na vlastní událost eupdate_page_view a datové proměnné page_location, page_title, page_referrer. V kontejneru nepovolujte sběr formulářů/kontaktů, další trackery ani history triggers. Obsah kontejneru se spravuje v Google; CSP webu záměrně nepovoluje libovolné cizí hosty ani unsafe-eval.

Backup obsahuje nastavení a ovládání souhlasu; nezakládá účet, property ani kontejner Google. Po nasazení ověřte ID v Google Realtime s uděleným souhlasem. Strukturovaná data a sitemap pomáhají čitelnosti webu pro vyhledávače, nezaručují indexaci ani pozici.

Zdrojový kód nezávislý na OS

Pro zdrojový balíček, například HTML nebo přenositelnou PHP aplikaci, použijte compatibility.os_types: ["source"]. Ve formuláři vyberte Zdrojový kód / nezávislé na OS. Není nutný konkrétní systém, distribuce Linuxu ani automatický instalační příkaz. Název, software_id, verze, datum vydání, popis a README zůstávají povinné.

V README popište potřebnou verzi PHP/runtime, rozšíření, prohlížeč, databázi, konfiguraci a postup nasazení. Volitelná pole requirements se zachovají v manifestu. Source je kategorie distribuce, nikoli záruka nativního běhu na každém systému. Lze ji kombinovat s konkrétními OS; pro ty se dál vyžadují jejich běžné instalační údaje.

Pro source eUpdate uloží installation.commands.source = {"supported":false,"mode":"manual","command":null}. Z této kategorie se nevytváří instalátor Linux/Windows. Stahování ZIP, verze, moduly, GitHub import a aktualizační/specifikační JSON fungují dál. Klient má rozpoznat source jako přenositelný balíček a nabídnout README místo pokusu o nativní instalaci.

Stáhnout zdrojový install.json · Stáhnout kompletní zdrojový ZIP (EN)

{"compatibility":{"os_types":["source"]},"documentation":{"readme":"README.md"}}

Lokální zálohy a retence

Každá úspěšná záloha se uloží neveřejně na serveru a lze ji opakovaně stáhnout v Zálohy. Uchovávají se dvě nejnovější úspěšné zálohy každého vytvářejícího účtu, dohromady pro projekty, celý archiv i automatické zálohy před změnami. Třetí dokončená záloha odstraní nejstarší ZIP a metadata. Při chybě vytváření se existující zálohy nemažou. Limit se uplatní při další záloze daného účtu; neodstraňuje kopie stažené do počítače. Admin vidí zachované zálohy všech účtů.

Adresářová struktura zálohy

Interní zálohy používají schema estudium-update-backup-v2 a zachovávají packages/login/projekt/verze a packages/login/projekt/_modules/modul/verze. Pole storage_path odpovídá cestám v ZIPu, i při exportu starých ID adresářů. Restore 1.4.0 načte úplné zálohy v1 i v2. Pro nové v2 použijte aktuální nástroj obnovy. Formát doménové zálohy eWeb zůstává eweb-backup-v3.

Autor programu: PB, pavel.bartos.pb@gmail.com

Git clone

Projekt lze přímo klonovat standardním Gitem pro Linux i Windows:

git clone https://update.estudium.eu/git/eclone-server.git
git clone --branch v1.0.0 --single-branch --depth 1 https://update.estudium.eu/git/eclone-server.git

Konkrétní příkaz je v projektu a u každého vydání s tlačítkem Kopírovat.

Větev main obsahuje všechna vydání projektu ve složkách podle verze,

například ecast-pipe-server/0.9.8/README.md. Další verze leží vedle sebe,

takže po git pull zůstanou i předchozí vydání. Pokud všechny soubory ZIPu

sdílejí jediný obalový adresář, tento obal se odstraní. Stejně se odstraní

obal pojmenovaný podle projektu nebo projektu a verze, pokud vedle něj leží

jen install.json: metadata i obsah obalu budou přímo ve složce verze.

Například eweb-server/0.8.10/README.md, bez dalšího eweb-server-0.8.10/.

U více hlavních složek, dalších kořenových souborů nebo kolize názvů se

vzájemná struktura zachová, aby se žádný soubor nepřepsal.

Originální ZIPy ani jejich obsah se nemění. Samostatné moduly se nepřidávají.

Příkaz u jednotlivého vydání stáhne pouze toto vydání. Tag vVERZE obsahuje

jen složku VERZE se soubory vybraného vydání, bez historie ostatních verzí.

Volby --single-branch --depth 1 omezují také přenos Git objektů. Samotné

--branch vybírá obsah pracovní složky, ale neomezuje stažení ostatních referencí.

Například u 0.9.8 vznikne pouze ecast-pipe-server/0.9.8/ s jejími soubory.

Verze neplatná

pro název Git tagu dostane tag release-ID; příkaz je uvedený u vydání.

Veřejné aktualizační API nadále vybírá nejvyšší verzi podle version_compare.

Historie vzniká z publikovaných ZIPů, nepřebírá původní GitHub commity.

Cesty obsahující .git se z Git výstupu vynechávají.

Po importu opravené zálohy 1.7.7 použijte nový klon do prázdné cílové složky.

Odstranění nadbytečných obalů mění stromy a commity dotčených vydání i větev

main. Další nová vydání pak v main přibývají přes git pull.

Klon jednotlivé verze zůstává u této verze;

pro jiné vydání použijte jeho vlastní příkaz a volnou cílovou složku.

Git rozhraní podporuje clone, fetch a pull, nikoli push. Po smazání vydání

správcem se historie zbývajících vydání sestaví znovu; použijte nový clone.

Kopii již staženou uživatelem smazání na serveru neodstraní.

Neveřejný projekt vyžaduje jeho SecretID v hlavičce:

git -c http.extraHeader="X-Project-Secret: SECRET_ID" clone https://update.estudium.eu/git/eclone-server.git
git -c http.extraHeader="X-Project-Secret: SECRET_ID" -C ADRESAR fetch --tags

Příkaz lze použít v shellu Linuxu i PowerShellu. SecretID získáte ve správě

svého projektu; neuvádějte jej do veřejného README. Klíč není součástí remote

URL v .git/config, při dalším fetch/pull jej zadejte znovu. Rotace klíče

okamžitě odmítá další požadavky se starým klíčem. Veřejné projekty klíč

nepotřebují. Klíč programu neodemyká placené ani neveřejné samostatné moduly.

Ukládání dat od eUpdate 1.4

Účty, profily, projekty, verze, moduly, licence, zprávy, nastavení,

dokumentace, audit, statistiky a evidence záloh jsou v MySQL/MariaDB.

Hlášení check-inů zůstávají JSON: nejvýše tři poslední na server ID,

nikoli pouze tři servery. Opakování již uchovaného checkin_id netvoří kopii.

Interní log checkeru uchovává samostatně v MySQL 2 000 diagnostických událostí.

Veřejné updates.json a specifikace jsou automaticky přegenerované exporty.

Hostované domény v check-inu eWebu

Pro zobrazení názvů musí klient odeslat seznam webhosting.domains společně

s webhosting.domains_count. Samotný počet neobsahuje názvy a eUpdate je

nedohledává ani nedomýšlí. Přehled a detail serveru ukazují domény přímo,

SSL/PHP a odkaz pro otevření; historie ukazuje seznam z konkrétního hlášení.

Starší eWeb klient zasílající pouze počet potřebuje doplnit seznam ve svém

odesílači check-inu. Admin může názvy také doplnit ručně ve správě serveru.

Neodesílejte hesla, přístupové tokeny, databázové údaje ani neveřejné cesty.

{"webhosting":{"domains_count":2,"domains":[
  {"domain":"example.org","enabled":true,"ssl":{"status":"active"},"php_version":"8.5"},
  {"domain":"static.example.org","enabled":true,"ssl":{"status":"active"}}
]}}

Projekt typu Hostovaný web

V Nastavení projektu vyberte Typ projektu → Hostovaný web. Zadejte URL

a technologie PHP, JavaScript, HTML, CSS, Node.js, Python, Ruby nebo Jiné.

Volby můžete později změnit. Web má nadále své ZIP verze, moduly a Git clone.

Nastavení eviduje typ a adresu již hostovaného webu; nasazení proveďte na

svém hostingu podle README. Pro balíčky nezávislé na OS použijte v

install.json compatibility.os_types: ["source"].

Veřejný feed a JSON specifikace obsahují project_type: "hosted_web" a

hosting: {"url":"https://example.org","technologies":["php","javascript"]}.

U neveřejného projektu zůstávají tyto údaje chráněné stejně jako projekt.

Vzdělání a publikace autora

V Můj účet → Moje vizitka lze vyplnit nejvyšší dosaženou úroveň EQF,

tituly a kvalifikace (například CSc., Ph.D. nebo DBA), akademickou hodnost

(docent/profesor) a školu s oborem. EQF se neodvozuje automaticky z titulu.

Orientační české úrovně: EQF 2 ZŠ, EQF 3 učební obor s výučním listem,

EQF 4 maturita, EQF 5 profesní kvalifikace úrovně 5, EQF 6 VOŠ/DiS. nebo

bakalářské vzdělání, EQF 7 magisterské, EQF 8 doktorské vzdělání.

Podrobnosti: Europass – EQF.

Publikace přidávejte samostatně: název (povinný), rok, vydavatel/časopis a

HTTP/HTTPS odkaz, případně DOI ve tvaru https://doi.org/.... Záznamy lze

upravovat a odstraňovat; maximum je 100. Změny se potvrdí uložením vizitky.

Vyplněné vzdělání a publikace jsou automaticky veřejné v aktivní veřejné

vizitce, jejím JSON a vCard. Nepotřebují další přepínač zveřejnění. Souhlas

s veřejnou vizitkou lze odvolat; nastavení neveřejných kontaktů zůstává platné.

Jde o údaje vyplněné autorem, nikoli o ověření diplomů službou eUpdate.

Export webového projektu jako eWeb backup

jeho spolupracovníci a administrátor. SecretID toto oprávnění neposkytuje.

. zahrne celý balíček; web, public nebo dist zahrne jen danou složku.

Její obsah bude přímo v /var/www/cilova-domena/web/. Návrh složky podle

index.php/index.html před exportem zkontrolujte. Pro framework s neveřejnými

soubory mimo tuto složku připravte kompletní nasazovací strukturu zvlášť.

ZIP používá eweb-backup-v3: backup.json, data-www.tar.zst, readme.md

a SHA256SUMS. Webový TAR obsahuje jen povolené kořeny web/, private/,

config/, logs/, cron/; žádný vrchní tmp/. Obsahuje vybrané soubory

vydání, základní konfiguraci domény a nově vygenerované přihlašovací údaje.

Součástí nejsou živá databáze, jiné moduly, TLS klíče ani data služby eUpdate.

Zabalený SQL soubor je běžný soubor projektu; export ho neimportuje do MySQL.

Pro novou doménu obnovte identitu a soubory. Číselné UID/GID se přidělí

na cílovém serveru, proto eWeb může upozornit na zálohu bez historické identity.

Pro existující doménu obnovte pouze soubory, chcete-li zachovat její účet,

heslo a nastavení. Obnova identity změní konfiguraci a heslo účtu. Obnova souborů

nahrazuje stávající strom webu; před ní vytvořte zálohu živého webu.

Export obsahuje heslo v credentials.password_b64; base64 není šifrování.

Stažení je přístupné pouze tvůrci zálohy a adminovi, ZIP uchovávejte neveřejně.

PHP se zapne, obsahuje-li zvolená složka PHP/PHTML; konkrétní runtime dodá

cílový eWeb. HTML a klientský JavaScript fungují jako statické soubory.

Export nespouští sestavení JavaScriptu ani nekonfiguruje službu Node.js.

Pro tvorbu exportu musí být na serveru eUpdate dostupné Python 3, zstd a PHP

proc_open. Platí limit 30 000 souborů / 2 GiB rozbalených dat. Lokálně se

uchovávají dvě nejnovější zálohy na účet, společně s ostatními zálohami.

Přepsaná vydání od 1.7.2

Přepsání vydání zachová jeho ID, ale změní obsah tagu a případně navazující

historii. Použijte git fetch --force --tags origin a změny si prohlédněte,

nebo vytvořte nový klon. Podrobnosti: Provozní návod.

Git po obnově eWeb od 1.7.7

Git používá původní ZIP vydání a kontroluje jeho SHA-256. Funguje i tehdy,

když obnova eWeb vynechá některé rozbalené soubory ve složce source/config

(nebo v config uvnitř obalové složky). Při prvním klonování se obnoví cache;

cron ani další nastavení pro tuto opravu nejsou potřeba.

Pokud chybí samotný ZIP nebo nesouhlasí jeho kontrolní součet, Git vrátí 503.

Stáhněte balík v Nastavení eUpdate → Diagnostika. PHP log obsahuje záznam

eUpdate git release s vydáním a důvodem selhání. Archiv opravte obnovením

správné zálohy nebo přepsáním konkrétního vydání ověřeným ZIPem.