MyÚčto.cz Manuál
Stáhnout PDF Příručky Zpět na hlavní stránku

4. Instalace - Nativní (PHP + MariaDB + web server)

Návod na instalaci MyÚčta na tradiční hosting bez Dockeru (cca 5 minut). Pro správce, který má PHP, MariaDB a web server IIS nebo Apache.

4.1 Kdy to potřebujete

Kapitolu otevřete, když:

SituaceKam jít
Mám PHP CLI, Composer, Node a pnpm a chci build ze zdrojů§ 4.3
Nechci buildit, stačí mi PHP, MariaDB a web server§ 4.4
Aktualizuji existující instalaci§ 4.5
Tip

Nechcete buildit? Stáhněte hotový production bundle z GitHub Releases. Má už hotové api/vendor/, web/dist/ i manual/generated/, takže odpadá Composer, Node, pnpm i build. Postup je v § 4.4.

4.2 Než začnete

Pro build ze zdrojových kódů potřebujete:

Pro instalaci z hotového balíčku stačí PHP, MariaDB a web server.

Před konfigurací si připravte:

4.3 Krok za krokem: instalace ze zdrojových kódů

4.3.1 Klon a konfigurace

  1. Naklonujte repozitář a zkopírujte vzorovou konfiguraci.
   git clone https://github.com/radekhulan/myucto.git myucto
   cd myucto
   cp cfg.sample.php cfg.php
  1. Otevřete cfg.php a vyplňte:
Upozornění

Pro passkeys musí app.url používat stabilní hostname a důvěryhodné HTTPS, například https://faktury.example.cz. Výjimkou pro lokální vývoj je http://localhost. Prosté HTTP přes LAN IP ani střídání aliasů hostname není podporované. Klíče WebAuthn jsou s hostname kryptograficky svázané, takže změna domény vyžaduje TOTP nebo administrátorskou obnovu přístupu.

4.3.2 Vytvoření databáze

mysql -u root -p -e "CREATE DATABASE myucto CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

4.3.3 Backend a migrace

  1. Nainstalujte závislosti PHP.
   cd api && composer install && cd ..
  1. Spusťte migrace.
   php api/bin/migrate.php
  1. Vyrenderujte manuál (zpřístupní adresu /manual).
   php tools/generateManualHtml.php

generateManualHtml.php je samostatný skript (nepotřebuje Composer ani vendor) a generuje HTML kapitoly a vyhledávací index. exportManualToPdf.php vyžaduje api/vendor/ (mPDF). Obojí spouštějte znovu po každém stažení repozitáře, aby /manual ukazoval aktuální obsah. V Docker variantě se to volá při buildu uvnitř Dockerfile (viz Instalace - Docker).

4.3.4 Build frontendu

cd web
pnpm install
pnpm build       # produkční build do web/dist/

4.3.5 Web server

Nasměrujte web server na kořen repozitáře a ověřte, že se aplikace otevře na adrese z app.url.

Jak poznáte, že je hotovo: na adrese z app.url se zobrazí průvodce prvním spuštěním (viz 7. První spuštění). Pokračujte kapitolou 5. Po instalaci.

4.4 Krok za krokem: instalace z hotového balíčku

Pro sdílený hosting bez Composeru a Node. Production bundle z release stránky se publikuje automaticky ke každému release tagu. Obsahuje hotové api/vendor/, web/dist/ i manual/generated/, takže žádný build není potřeba (přeskočíte § 4.3.3 kromě migrací a § 4.3.4).

  1. Stáhněte balíček, ověřte jeho kontrolní součet a rozbalte ho.
   TAG=X.Y.Z
   curl -LO https://github.com/radekhulan/myucto/releases/download/v$TAG/myucto-$TAG.tar.gz
   sha256sum -c myucto-$TAG.tar.gz.sha256   # ověření integrity
   tar -xzf myucto-$TAG.tar.gz --strip-components=1 \
     --exclude='cfg.php' --exclude='cfg.local.php' \
     --exclude='storage' --exclude='private' --exclude='log'
  1. Vyplňte cfg.php podle § 4.3.1.
  2. Vytvořte databázi podle § 4.3.2.
  3. Spusťte migrace.
   php api/bin/migrate.php
  1. Nastavte web server podle § 4.3.5.

Jak poznáte, že je hotovo: php api/bin/migrate.php doběhne bez chyby a na adrese z app.url se zobrazí průvodce prvním spuštěním.

Tip

Upgrade jde spustit i z aplikace: v Systém → Aktualizace je tlačítko Aktualizovat na {verze}, které příkazy pro stažení bundlu zobrazí jako box ke zkopírování. Patička aplikace ukazuje aktuální verzi a štítek, pokud je dostupná novější (denně ji obnovuje cron-version-check.php). Podrobnosti v kapitole Aktualizace.

4.5 Krok za krokem: aktualizace

Nativní instalaci aktualizujete jedním ze dvou postupů podle toho, co máte na hostu k dispozici. Konfiguraci (cfg.php) ani data (storage, private, log) upgrade nemaže.

4.5.1 Build ze zdrojů (host má PHP CLI, Composer, Node a pnpm)

  1. Přepněte se na novou verzi.
   git fetch --tags
   git checkout vX.Y.Z
  1. Přeinstalujte závislosti a sestavte frontend.
   cd api && composer install --no-dev && cd ..
   cd web && pnpm install && pnpm build && cd ..
  1. Přegenerujte manuál a spusťte migrace.
   php tools/generateManualHtml.php
   php tools/exportManualToPdf.php
   php api/bin/migrate.php

4.5.2 Bez Composeru a Node (sdílený hosting)

Rozbalte hotový production bundle (viz § 4.4) a spusťte migraci.

TAG=X.Y.Z
curl -LO https://github.com/radekhulan/myucto/releases/download/v$TAG/myucto-$TAG.tar.gz
sha256sum -c myucto-$TAG.tar.gz.sha256
tar -xzf myucto-$TAG.tar.gz --strip-components=1 \
  --exclude='cfg.php' --exclude='cfg.local.php' \
  --exclude='storage' --exclude='private' --exclude='log'
php api/bin/migrate.php

Jak poznáte, že je hotovo: migrate.php doběhne bez chyby a v Systém → Aktualizace ukazuje Aktuální verze novou verzi.

Migrace jsou idempotentní, takže migrate.php spouštějte po každém upgradu vždy.

4.6 Když něco nejde

Co vidítePročCo udělat
composer nebo pnpm na hostu neníSdílený hosting bez nástrojů pro buildPoužijte hotový balíček (§ 4.4)
Adresa /manual nezobrazí aktuální obsahManuál nebyl po stažení repozitáře znovu vygenerovánSpusťte php tools/generateManualHtml.php
Adresy aplikace vrací 404Web server nemá zapnuté přepisování adresApache: zapněte mod_rewrite a mod_headers. IIS: ověřte, že web.config z kořene repozitáře je načtený
Po změně domény nefungují passkeysKlíče WebAuthn jsou svázané s hostname z app.urlPřihlaste se přes TOTP nebo administrátorskou obnovou a passkey zaregistrujte znovu
Upgrade selhalRůzné příčinyPostup obnovy a návrat na předchozí verzi v 102.7 Co když upgrade selže

4.7 Podrobnosti a pravidla

4.8 Související kapitoly