it:server:nextcloud

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

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 Nosekit: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ů, ale i zde je potřeba věnovat pozornost několika detailům. 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ů, ale i zde je potřeba věnovat pozornost několika detailům.
 +
 +
 +===== 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://docs.nextcloud.com/server/30/user_manual/en/files/access_webdav.html|návod, jak na WebDAV]].
 +
 +V mém případě stačí pracovat s URL:
 +
 +<code>
 +davs://example.com/remote.php/dav/files/USERNAME/
 +</code> 
  
 ===== 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 => 'OC\\Preview\\MP4',   14 => 'OC\\Preview\\MP4',
   15 => 'OC\\Preview\\AVI',   15 => 'OC\\Preview\\AVI',
 +  16 => 'OC\\Preview\\HEIC',
 +  17 => 'OC\\Preview\\HEIF',
 +  18 => 'OC\\Preview\\EMF',
 ), ),
 </code> </code>
Řá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 které fotografie EXIF data nemajíNextcloud je automaticky zatřídí podle data nahrání. Abych zajistil správné třídění i u těchto fotografiíbylo nutné změnit jejich EXIF data.+Při používání mobilní aplikace Nextcloud jsem se setkal s kolika problémy při synchronizaci. Proto jsem se rozhodl sepsat postupjak aplikaci nastavit od začátku. Tento postup je možné použít i v případě, že něco nefunguje správně.
  
-Pro tento účel jsem použil nástroj **ExifTool** společně s vlastním skriptemkterý umožňuje rychlou úpravu EXIF dat ímo z íkazové řádkySkript funguje tak, že nastaví datum čas do EXIF atributů fotografie+ 
 +1. **Vymazání dat aplikace**   
 + 
 +Pokud máte aplikaci Nextcloud již nainstalovanou v telefonu, postupujte takto: 
 +  Přejděte do **Nastavení** → **Aplikace** a vyhledejte aplikaci Nextcloud. 
 +  * 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. 
 + 
 +{{:it:server:pasted:20250101-230911.png?400}} 
 + 
 +{{:it:server:pasted:20250101-231015.png?400}} 
 + 
 + 
 +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 nastavením automatického nahrávání. Nastavte následující parametry: 
 + 
 +   * **Vzdálená položka** - Vyberte složku na serverukam 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 í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 i prvotním nahrávání. Po nahrání všech dat se již tato volba nepoužívá, protože následné synchronizace budou probíhat pouze pro nové soubory. 
 + 
 +   * **Co udělat, pokud soubor už existuje?** - Zvolte možnost **Přeskočit nahrávání**Tím se zabrání vzniku duplicitprotože pokud soubor již na serveru existuje, aplikace jej vynechá přejde k dalšímu souboru.
  
  
 +{{:it:server:pasted:20250101-231211.png?400}}
 ===== Úprava EXIF dat ===== ===== Úprava EXIF dat =====
  
Řádek 352: Řádek 394:
 <code bash> <code bash>
 docker exec -u 33 -it nextcloud php /var/www/html/occ face:setup -m 3 docker exec -u 33 -it nextcloud php /var/www/html/occ face:setup -m 3
 +</code>
 +
 +Více informací o jednotlivých modelech: https://github.com/matiasdelellis/facerecognition/wiki/Models#model-4
 +
 +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 /var/www/html/occ face:setup -m 3
 +docker exec -u 33 -it nextcloud php /var/www/html/occ face:migrate -m 4 -u admin
 +docker exec -u 33 -it nextcloud php /var/www/html/occ face:background_job -u admin
 +</code>
 +
 +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 /var/www/html/occ face:reset --model -u admin
 </code> </code>
  
Řádek 375: Řádek 436:
  
 {{:it:server:pasted:20250101-151436.png}} {{:it:server:pasted:20250101-151436.png}}
 +
 +
 +==== 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://github.com/matiasdelellis/facerecognition/wiki/Schedule-Background-Task|Schedule Background Task]].
 +
 +
 +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:
 +
 +<code>
 +*/30 *  *  *  * docker exec -u 33 -it nextcloud php /var/www/html/occ face:background_job -t 900
 +</code>
 +
 +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 /var/www/html/occ face:background_job**: Spouští úlohu rozpoznávání obličejů.
 +  * **-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í, můžete do něj přidat příslušné soubory:
 +
 +    .nomedia: Pro úplné vyloučení z rozpoznávání.
 +
 +Například pro ignorování všech souborů v cestě `path/to/your/folder/*` přidejte soubor `path/to/your/folder/.nomedia`
 +
 +Vycházím z [[https://github.com/matiasdelellis/facerecognition/issues/446|této diskuse]], protože v dokumentaci pluginu jsem tuto informaci bohužel nenašel.
 +
 +==== 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í, zatímco nově přidané fotografie lze průběžně zpracovávat přímo na slabším zařízení. Dokumentace k této funkcionalitě je dostupná zde: [[https://github.com/matiasdelellis/facerecognition-external-model|Face Recognition External Model]].
 +
 +=== 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
 +</code>
 +
 +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 /path/to/api.key:/app/api.key --name facerecognition matiasdelellis/facerecognition-external-model:v0.2.0
 +</code>
 +
 +Model je nyní dostupný na portu 8080.
 +
 +3. **Ověření funkčnosti modelu**:
 +<code bash>
 +curl localhost:8080/welcome
 +</code>
 +
 +Očekávaný výstup:
 +<code>
 +{"facerecognition-external-model":"welcome","model":3,"version":"0.2.0"}
 +</code>
 +
 +4. **Konfigurace Nextcloudu**:
 +Nastavte externí model a API klíč pomocí OCC příkazů:
 +
 +<code bash>
 +docker exec -u 33 -it nextcloud php /var/www/html/occ config:system:set facerecognition.external_model_url --value "192.168.1.123:8080"
 +docker exec -u 33 -it nextcloud php /var/www/html/occ config:system:set facerecognition.external_model_api_key --value "NZ9ciQuH0djnyyTcsDhNL7so6SVrR01znNnv0iXLrSk="
 +</code>
 +
 +5. **Nastavení externího modelu**:
 +<code bash>
 +docker exec -u 33 -it nextcloud php /var/www/html/occ face:setup -m 5
 +</code>
 +
 +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 /var/www/nextcloud/html/
 +sudo -u www-data php --define apc.enable_cli=1 ./occ face:stats
 +
 +echo -n "Select user for import & parallel processing:"
 +read user
 +echo ""
 +
 +echo "Enabling facerecognition for $user..."
 +sudo -u www-data php --define apc.enable_cli=1 ./occ user:setting $user facerecognition enabled true
 +echo "Done"
 +
 +echo "Synchronizing $user files..."
 +sudo -u www-data php --define apc.enable_cli=1 ./occ face:background_job -u $user --sync-mode
 +echo "Done"
 +
 +echo "Analyzing $user files..."
 +# 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:background_job -u $user --analyze-mode &
 +    pids[${i}]=$!
 +done
 +
 +for pid in ${pids[*]}; do
 +    wait $pid
 +done
 +echo "Done"
 +
 +echo "Calculating $user face clusters..."
 +sudo -u www-data php --define apc.enable_cli=1 ./occ face:background_job -u user --cluster-mode
 +echo "Done"
 +cd $dir
 +</code>
 +
 +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, jako je Raspberry Pi.
 +
 +
 +==== Další příkazy pro Face Recognition ====
 +
 +=== Face Analysis ===
 +
 +<code>
 +occ face:background_job [-u|--user_id USER_ID] [-t|--timeout TIMEOUT] [--defer-clustering] [-M|--max_image_area MAX_IMAGE_AREA]
 +</code>
 +
 +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), po kterou příkaz běží. Po uplynutí doby se příkaz zastaví a pokračuje při dalším spuštění.
 +    - **-M MAX_IMAGE_AREA**: Omezuje maximální plochu obrázku (v pixelech²) pro zpracování, čímž snižuje paměťové nároky.
 +    - **--defer-clustering**: Odkládá třídění obličejů na konec analýzy.
 +
 +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 ===
 +
 +<code>
 +occ face:sync-albums [-u|--user_id USER_ID]
 +</code>
 +
 +  * **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**: Jakékoliv úpravy alb provedené v aplikaci Photos budou při dalším spuštění tohoto příkazu přepsány.
 +
 +=== Resetování informací ===
 +
 +<code>
 +occ face:reset [--all] [--model] [--image-errors] [--clustering] [-u|--user_id USER_ID]
 +</code>
 +
 +  * **Funkce**: Umožňuje resetovat databázi obličejů a souvisejících informací.
 +  * **Parametry**:
 +    - **--all**: Smaže všechny informace o obrázcích, obličejích a skupinách osob.
 +    - **--model**: Resetuje aktuální model a nutí k nové analýze všech obrázků.
 +    - **--clustering**: Resetuje pouze seskupování obličejů (clustering).
 +    - **--image-errors**: Resetuje pouze obrázky, u kterých došlo k chybám při analýze.
 +    - **-u USER_ID**: Resetuje data pouze pro konkrétního uživatele.
 +
 +=== Migrace modelů ===
 +
 +<code>
 +occ face:migrate [-m|--model_id MODEL_ID] [-u|--user_id USER_ID]
 +</code>
 +
 +  * **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**: Jména osob nejsou přenesena a musí být znovu zadána uživatelem.
 +
 +=== Statistiky ===
 +
 +<code>
 +occ face:stats [-u|--user_id USER_ID] [-j|--json]
 +</code>
 +
 +  * **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 ===
 +
 +<code>
 +occ face:progress
 +</code>
 +
 +  * **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/data/uživatel/files** na serveru. Takový postup však vyžaduje další kroky, aby si server nahrané soubory oskenoval a zapsal je do databáze. Bez tohoto by mohlo dojít k problémům, kdy soubory nejsou viditelné přes webové rozhraní nebo synchronizační klienty.
 +
 +==== 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/data/uživatel/files**.
 +
 +2. **Nastavte správná oprávnění**  
 +Po nahrání souborů nastavte správného vlastníka a oprávnění, aby Nextcloud mohl s těmito soubory pracovat. Typicky by soubory měly patřit uživateli a skupině webového serveru, například **www-data** na Debian/Ubuntu.
 +
 +Příklad příkazu:
 +<code bash>
 +chown -R www-data:www-data /cesta/k/nextcloud/data/uživatel/files
 +</code>
 +
 +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 /var/www/html/occ files:scan uživatel
 +</code>
 +
 +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ů, aby se minimalizovalo zatížení serveru.
 +
  
  • it/server/nextcloud.1735740933.txt.gz
  • Poslední úprava: 2025/01/01 14:15
  • autor: Petr Nosek