Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
| it:server:nextcloud [2025/01/01 14:15] – [Instalace Face Recognition v Nextcloudu] Petr Nosek | it:server:nextcloud [2025/01/15 14:10] (aktuální) – [Nextcloud] Petr Nosek | ||
|---|---|---|---|
| Řádek 2: | Řádek 2: | ||
| Při instalaci Nextcloudu v Dockeru jsem se rozhodl zdokumentovat postup a zároveň sdílet zkušenosti s problémy, na které jsem narazil. Použití Dockeru je často výhodné pro snadnou správu kontejnerů, | Při instalaci Nextcloudu v Dockeru jsem se rozhodl zdokumentovat postup a zároveň sdílet zkušenosti s problémy, na které jsem narazil. Použití Dockeru je často výhodné pro snadnou správu kontejnerů, | ||
| + | |||
| + | |||
| + | ===== Přístup přes WebDAV ===== | ||
| + | |||
| + | Přístup k datům přes WebDAV může být ideální jak přes KODI nebo i v Ubuntu se lze takto připojit k přichystanému serveru. Hledal jsem, jestli je potřeba něco udělat v nastavení nextcloudu, ale není potřeba. | ||
| + | |||
| + | Zde je [[https:// | ||
| + | |||
| + | V mém případě stačí pracovat s URL: | ||
| + | |||
| + | < | ||
| + | davs:// | ||
| + | </ | ||
| ===== Problémy s náhledy a přehráváním videí ===== | ===== Problémy s náhledy a přehráváním videí ===== | ||
| Řádek 48: | Řádek 61: | ||
| 14 => ' | 14 => ' | ||
| 15 => ' | 15 => ' | ||
| + | 16 => ' | ||
| + | 17 => ' | ||
| + | 18 => ' | ||
| ), | ), | ||
| </ | </ | ||
| Řádek 91: | Řádek 107: | ||
| - | ===== Úprava EXIF dat ===== | + | ===== Nastavení mobilní aplikace pro synchronizaci |
| - | Nextcloud třídí fotografie podle EXIF dat, což zajišťuje správné řazení dle času pořízení. Pokud však některé fotografie EXIF data nemají, Nextcloud | + | Při používání mobilní aplikace Nextcloud jsem se setkal s několika problémy při synchronizaci. Proto jsem se rozhodl sepsat postup, jak aplikaci nastavit od začátku. Tento postup |
| - | Pro tento účel jsem použil nástroj | + | |
| + | 1. **Vymazání dat aplikace** | ||
| + | |||
| + | Pokud máte aplikaci Nextcloud již nainstalovanou v telefonu, postupujte takto: | ||
| + | | ||
| + | * Klikněte na **Úložiště a mezipaměť**. | ||
| + | * Zvolte možnost **Vymazat mezipaměť** a následně **Vymazat úložiště**. | ||
| + | |||
| + | Tento krok vyresetuje všechna lokální nastavení aplikace. Data na serveru i multimediální data v telefonu zůstanou zachována. Tento postup pomáhá odstranit případné chyby v synchronizaci způsobené nesprávnými daty uloženými v systému. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | 2. **Nové přihlášení a nastavení synchronizace** | ||
| + | |||
| + | Spusťte aplikaci znovu, projděte přihlašovacím procesem a přejděte do menu s nastavením automatického nahrávání. Nastavte následující parametry: | ||
| + | |||
| + | * **Vzdálená položka** - Vyberte složku na serveru, kam chcete soubory nahrávat. | ||
| + | |||
| + | * **Nahrávat pouze přes neúčtované Wi-Fi připojení** - Pokud chcete synchronizovat pouze přes Wi-Fi, zaškrtněte tuto možnost. | ||
| + | |||
| + | * **Také nahrát už existující soubory** - Tuto volbu doporučuji vždy zaškrtnout. Pokud ji nevyberete, budou se nahrávat pouze nově vytvořené soubory (např. fotografie a videa). Spouštěčem nahrávání v tomto případě bude vytvoření nového souboru. Pokud zaškrtnete tuto možnost, nahrají se i všechny existující soubory. Tato volba je relevantní pouze při prvotním nahrávání. Po nahrání všech dat se již tato volba nepoužívá, | ||
| + | |||
| + | * **Co udělat, pokud soubor už existuje?** - Zvolte možnost **Přeskočit nahrávání**. Tím se zabrání vzniku duplicit, protože pokud soubor již na serveru existuje, aplikace jej vynechá | ||
| + | {{: | ||
| ===== Úprava EXIF dat ===== | ===== Úprava EXIF dat ===== | ||
| Řádek 352: | Řádek 394: | ||
| <code bash> | <code bash> | ||
| docker exec -u 33 -it nextcloud php / | docker exec -u 33 -it nextcloud php / | ||
| + | </ | ||
| + | |||
| + | Více informací o jednotlivých modelech: https:// | ||
| + | |||
| + | Mezi jednotlivými modely lze kdykoli přepínat. Pokud chci použít model 4, musím nejdříve nainstaslovat model 1, 3 a pak je možné nainstalovat model 4. | ||
| + | |||
| + | Když přepnu mezi jednotlivými modely, tak každý model má svoje uložená data. Takže například pokud si vytrénuju model 4 a chci provést migraci dat na model 3, tak nejprve přepnu na model 3, a pak mohu provést migraci: | ||
| + | |||
| + | <code bash> | ||
| + | docker exec -u 33 -it nextcloud php / | ||
| + | docker exec -u 33 -it nextcloud php / | ||
| + | docker exec -u 33 -it nextcloud php / | ||
| + | </ | ||
| + | |||
| + | Po migraci je potřeba znovu vytvořit clustery. Migrace říká, že chci do současného modelu přenést data z modelu 4. | ||
| + | |||
| + | Pokud chci vyresetovat data, musím být v konkrétním modelu a mohu data vyresetovat takto: | ||
| + | <code bash> | ||
| + | docker exec -u 33 -it nextcloud php / | ||
| </ | </ | ||
| Řádek 375: | Řádek 436: | ||
| {{: | {{: | ||
| + | |||
| + | |||
| + | ==== Nastavení cronu pro kontinuální skenování obličejů ==== | ||
| + | |||
| + | Pro kontinuální skenování obličejů je potřeba nastavit úlohu na pozadí jako pravidelný cron úkol. Plugin **Face Recognition** byl navržen tak, aby postupně analyzoval fotografie a výsledky zobrazoval uživatelům průběžně. Dokumentace k tomuto nastavení je dostupná zde: [[https:// | ||
| + | |||
| + | |||
| + | Před konfigurací cronu je důležité zajistit, že veškeré nastavení Face Recognition funguje správně a že máte jasně definované: | ||
| + | |||
| + | * **Interval spouštění úlohy**: Jak často se má úloha spustit. | ||
| + | * **Doba běhu úlohy**: Maximální doba, po kterou může úloha běžet, aby nedošlo k překrývání více instancí. | ||
| + | |||
| + | V následujícím příkladu je úloha nastavena na spuštění každých 30 minut s maximální dobou běhu 15 minut: | ||
| + | |||
| + | < | ||
| + | */30 * * * * docker exec -u 33 -it nextcloud php / | ||
| + | </ | ||
| + | |||
| + | Tento příkaz: | ||
| + | |||
| + | * ***/30**: Spouští úlohu každých 30 minut. | ||
| + | * **docker exec**: Spouští příkaz uvnitř Docker kontejneru, kde běží Nextcloud. | ||
| + | * **php / | ||
| + | * **-t 900**: Nastavuje maximální dobu běhu na 900 sekund (15 minut). | ||
| + | |||
| + | |||
| + | ==== Ignorování adresářů ==== | ||
| + | |||
| + | |||
| + | Pokud nechcete, aby byl určitý adresář procházen při rozpoznávání, | ||
| + | |||
| + | .nomedia: Pro úplné vyloučení z rozpoznávání. | ||
| + | |||
| + | Například pro ignorování všech souborů v cestě `path/ | ||
| + | |||
| + | Vycházím z [[https:// | ||
| + | |||
| + | ==== Použití Face Recognition na externím modelu ==== | ||
| + | |||
| + | Jednou z pokročilých možností při využívání pluginu **Face Recognition** v Nextcloudu je použití externího modelu pro rozpoznávání obličejů. Tato varianta umožňuje provádět náročné výpočty na výkonnějším stroji, což ulehčí serveru s Nextcloudem (například Raspberry Pi). Externí model lze použít například pro zpracování velké databáze fotografií, | ||
| + | |||
| + | === Výhody použití externího modelu === | ||
| + | |||
| + | Externí model umožňuje: | ||
| + | |||
| + | * Rozložit náročné úkoly na samostatný výkonnější server, čímž se sníží zátěž na server, kde běží Nextcloud. | ||
| + | * Paralelizovat zpracování velkých objemů fotografií. | ||
| + | * Flexibilitu při implementaci vlastních modelů pomocí oblíbených nástrojů strojového učení. | ||
| + | |||
| + | === Bezpečnostní úvahy === | ||
| + | |||
| + | Při použití externího modelu je nutné si uvědomit, že: | ||
| + | |||
| + | * Obrázky se přenášejí z Nextcloudu na externí server prostřednictvím POST požadavků. | ||
| + | * Obrázky jsou po analýze okamžitě smazány, ale během přenosu je nutné zajistit bezpečnost dat. | ||
| + | * Pokud je externí model provozován mimo lokální síť, doporučuje se použít HTTPS proxy pro ochranu dat. | ||
| + | |||
| + | === Konfigurace externího modelu === | ||
| + | |||
| + | 1. **Vytvoření API klíče**: | ||
| + | <code bash> | ||
| + | openssl rand -base64 32 > api.key | ||
| + | cat api.key | ||
| + | </ | ||
| + | |||
| + | Tento klíč bude použit pro ověřování komunikace mezi Nextcloudem a externím modelem. | ||
| + | |||
| + | 2. **Spuštění externího modelu v Dockeru**: | ||
| + | <code bash> | ||
| + | docker run --rm -i -p 8080:5000 -v / | ||
| + | </ | ||
| + | |||
| + | Model je nyní dostupný na portu 8080. | ||
| + | |||
| + | 3. **Ověření funkčnosti modelu**: | ||
| + | <code bash> | ||
| + | curl localhost: | ||
| + | </ | ||
| + | |||
| + | Očekávaný výstup: | ||
| + | < | ||
| + | {" | ||
| + | </ | ||
| + | |||
| + | 4. **Konfigurace Nextcloudu**: | ||
| + | Nastavte externí model a API klíč pomocí OCC příkazů: | ||
| + | |||
| + | <code bash> | ||
| + | docker exec -u 33 -it nextcloud php / | ||
| + | docker exec -u 33 -it nextcloud php / | ||
| + | </ | ||
| + | |||
| + | 5. **Nastavení externího modelu**: | ||
| + | <code bash> | ||
| + | docker exec -u 33 -it nextcloud php / | ||
| + | </ | ||
| + | |||
| + | Externí model je nyní připraven pro použití. | ||
| + | |||
| + | === Zpracování paralelních úloh === | ||
| + | |||
| + | Pro paralelní zpracování fotografií lze využít více vláken na externím serveru. Příklad skriptu pro import, analýzu a klastrování obličejů naleznete v dokumentaci nebo níže. Tento proces je vhodné spustit v nástroji jako tmux nebo screen, aby mohl běžet na pozadí. | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | |||
| + | set -o errexit | ||
| + | |||
| + | dir=$(pwd) | ||
| + | # your nextcloud path | ||
| + | cd / | ||
| + | sudo -u www-data php --define apc.enable_cli=1 ./occ face:stats | ||
| + | |||
| + | echo -n " | ||
| + | read user | ||
| + | echo "" | ||
| + | |||
| + | echo " | ||
| + | sudo -u www-data php --define apc.enable_cli=1 ./occ user: | ||
| + | echo " | ||
| + | |||
| + | echo " | ||
| + | sudo -u www-data php --define apc.enable_cli=1 ./occ face: | ||
| + | echo " | ||
| + | |||
| + | echo " | ||
| + | # the upper number has to be lower or equal to the number of GUNICORN_WORKERS | ||
| + | for i in {1..3}; do | ||
| + | sudo -u www-data php --define apc.enable_cli=1 ./occ face: | ||
| + | pids[${i}]=$! | ||
| + | done | ||
| + | |||
| + | for pid in ${pids[*]}; do | ||
| + | wait $pid | ||
| + | done | ||
| + | echo " | ||
| + | |||
| + | echo " | ||
| + | sudo -u www-data php --define apc.enable_cli=1 ./occ face: | ||
| + | echo " | ||
| + | cd $dir | ||
| + | </ | ||
| + | |||
| + | Použití externího modelu přináší výhody při zpracování velkých datasetů, zejména na méně výkonných zařízeních, | ||
| + | |||
| + | |||
| + | ==== Další příkazy pro Face Recognition ==== | ||
| + | |||
| + | === Face Analysis === | ||
| + | |||
| + | < | ||
| + | occ face: | ||
| + | </ | ||
| + | |||
| + | Tento příkaz je hlavním nástrojem pro analýzu fotografií: | ||
| + | |||
| + | * **Funkce**: Vyhledává obrázky, analyzuje je a třídí nalezené obličeje do skupin podobných osob (clustering). | ||
| + | * **Parametry**: | ||
| + | - **-u USER_ID**: Analyzuje pouze fotografie konkrétního uživatele. Uživatel musí analýzu povolit individuálně. | ||
| + | - **-t TIMEOUT**: Nastavuje maximální dobu (v sekundách), | ||
| + | - **-M MAX_IMAGE_AREA**: | ||
| + | - **--defer-clustering**: | ||
| + | |||
| + | Tento příkaz je doporučeno spustit manuálně před jeho zařazením do cron úlohy, aby se ověřila konfigurace a dostupné systémové prostředky. | ||
| + | |||
| + | |||
| + | === Vytváření alb v aplikaci Photos === | ||
| + | |||
| + | < | ||
| + | occ face: | ||
| + | </ | ||
| + | |||
| + | * **Funkce**: Vytváří alba v aplikaci Nextcloud Photos na základě rozpoznaných osob. | ||
| + | * **Parametry**: | ||
| + | - **-u USER_ID**: Synchronizuje alba pouze pro daného uživatele. | ||
| + | * **Poznámka**: | ||
| + | |||
| + | === Resetování informací === | ||
| + | |||
| + | < | ||
| + | occ face:reset [--all] [--model] [--image-errors] [--clustering] [-u|--user_id USER_ID] | ||
| + | </ | ||
| + | |||
| + | * **Funkce**: Umožňuje resetovat databázi obličejů a souvisejících informací. | ||
| + | * **Parametry**: | ||
| + | - **--all**: Smaže všechny informace o obrázcích, | ||
| + | - **--model**: | ||
| + | - **--clustering**: | ||
| + | - **--image-errors**: | ||
| + | - **-u USER_ID**: Resetuje data pouze pro konkrétního uživatele. | ||
| + | |||
| + | === Migrace modelů === | ||
| + | |||
| + | < | ||
| + | occ face: | ||
| + | </ | ||
| + | |||
| + | * **Funkce**: Migrace rozpoznaných obličejů mezi modely. | ||
| + | * **Parametry**: | ||
| + | - **-m MODEL_ID**: Určuje model, do kterého budou data migrována. | ||
| + | - **-u USER_ID**: Migruje data pouze pro daného uživatele. | ||
| + | * **Poznámka**: | ||
| + | |||
| + | === Statistiky === | ||
| + | |||
| + | < | ||
| + | occ face:stats [-u|--user_id USER_ID] [-j|--json] | ||
| + | </ | ||
| + | |||
| + | * **Funkce**: Poskytuje souhrn počtu obrázků, rozpoznaných obličejů a identifikovaných osob. | ||
| + | * **Parametry**: | ||
| + | - **-u USER_ID**: Vrací statistiky pouze pro konkrétního uživatele. | ||
| + | - **-j**: Výstup ve formátu JSON pro snadné zpracování jinými nástroji. | ||
| + | |||
| + | === Stav analýzy === | ||
| + | |||
| + | < | ||
| + | occ face: | ||
| + | </ | ||
| + | |||
| + | * **Funkce**: Zobrazuje průběh analýzy a odhadem dobu potřebnou k dokončení. | ||
| + | * **Parametry**: | ||
| + | - **-j**: Výstup ve formátu JSON pro snadné zpracování jinými nástroji. | ||
| + | |||
| + | Tyto příkazy pokrývají širokou škálu úloh a umožňují plně kontrolovat proces rozpoznávání obličejů v Nextcloudu. Pro optimální využití je důležité přizpůsobit parametry podle dostupných prostředků a potřeb konkrétního prostředí. | ||
| + | |||
| ===== Spouštění OCC příkazů v Nextcloudu ===== | ===== Spouštění OCC příkazů v Nextcloudu ===== | ||
| Řádek 678: | Řádek 965: | ||
| Tímto způsobem lze identifikovat potenciální problémy a optimalizovat přístup k databázi. | Tímto způsobem lze identifikovat potenciální problémy a optimalizovat přístup k databázi. | ||
| + | |||
| + | |||
| + | |||
| + | ===== Migrace dat na server Nextcloudu ===== | ||
| + | |||
| + | Při migraci dat na nový server Nextcloudu jsem původně postupoval velmi komplikovaně. Data jsem nejprve stáhl na svůj počítač a poté je přes webové rozhraní nahrával na nový server. Tento přístup byl ale pomalý a neefektivní. Nahrávání přes webové rozhraní jsem používal hlavně proto, aby se soubory správně zapsaly do databáze Nextcloudu. | ||
| + | |||
| + | Začal jsem zvažovat, zda by bylo možné nahrávat soubory přímo do adresáře **nextcloud/ | ||
| + | |||
| + | ==== Doporučený postup ==== | ||
| + | |||
| + | 1. **Nahrajte soubory na server** | ||
| + | Připojte se k serveru například pomocí **SCP**, **rsync** nebo jiného nástroje pro přenos souborů a nakopírujte je přímo do adresáře **nextcloud/ | ||
| + | |||
| + | 2. **Nastavte správná oprávnění** | ||
| + | Po nahrání souborů nastavte správného vlastníka a oprávnění, | ||
| + | |||
| + | Příklad příkazu: | ||
| + | <code bash> | ||
| + | chown -R www-data: | ||
| + | </ | ||
| + | |||
| + | 3. **Spusťte synchronizaci souborů** | ||
| + | Nextcloud poskytuje příkaz pro synchronizaci souborů a jejich zapsání do databáze: | ||
| + | |||
| + | <code bash> | ||
| + | docker exec -u 33 -it nextcloud php / | ||
| + | </ | ||
| + | |||
| + | Nahraďte **uživatel** jménem uživatele, kterému patří nahrané soubory. Tento příkaz prohledá adresář **files** daného uživatele, zkontroluje změny a aktualizuje databázi. | ||
| + | |||
| + | 4. **Zkontrolujte výsledek** | ||
| + | |||
| + | Po dokončení synchronizace: | ||
| + | - Otevřete webové rozhraní Nextcloudu. | ||
| + | - Přihlaste se jako daný uživatel a ověřte, že jsou soubory viditelné a správně zařazené. | ||
| + | |||
| + | ==== Poznámky ==== | ||
| + | |||
| + | * Přímý přenos souborů pomocí **rsync** je často rychlejší a efektivnější než stahování a nahrávání přes webové rozhraní. | ||
| + | * Tento postup doporučuji provádět mimo pracovní dobu, pokud server používá více uživatelů, | ||
| + | |||