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 10:55] – [Požadavky a instalace] 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 **ExifTool** společně s vlastním skriptem, který umožňuje rychlou úpravu EXIF dat přímo z příkazové řádky. Skript funguje tak, že nastaví datum a č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. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | 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á a přejde k dalšímu souboru. | ||
| + | |||
| + | |||
| + | {{: | ||
| ===== Úprava EXIF dat ===== | ===== Úprava EXIF dat ===== | ||
| Řádek 181: | Řádek 223: | ||
| ===== Instalace Face Recognition v Nextcloudu ===== | ===== Instalace Face Recognition v Nextcloudu ===== | ||
| - | Při hledání řešení pro rozpoznávání obličejů v Nextcloudu | + | Plugin **Face Recognition** slouží k rozpoznávání obličejů |
| - | Na stránce [[https:// | + | ==== Úprava Dockerfile ==== |
| - | Plánuji | + | Pro instalaci Face Recognition jsem vytvořil vlastní **Dockerfile** s čerpáním z oficiální dokumentace: |
| + | |||
| + | <code bash> | ||
| + | # | ||
| + | # Use a temporary image to compile and test the libraries | ||
| + | # | ||
| + | FROM nextcloud: | ||
| + | |||
| + | # Build and install dlib on builder | ||
| + | RUN apt-get update ; \ | ||
| + | apt-get install -y build-essential wget cmake libx11-dev libopenblas-dev | ||
| + | |||
| + | ARG DLIB_BRANCH=v19.19 | ||
| + | RUN wget -c -q https:// | ||
| + | && tar xf $DLIB_BRANCH.tar.gz \ | ||
| + | && mv dlib-* dlib \ | ||
| + | && cd dlib/dlib \ | ||
| + | && mkdir build \ | ||
| + | && cd build \ | ||
| + | && cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release .. \ | ||
| + | && make \ | ||
| + | && make install | ||
| + | |||
| + | # Build and install PDLib on builder | ||
| + | ARG PDLIB_BRANCH=master | ||
| + | RUN apt-get install unzip | ||
| + | RUN wget -c -q https:// | ||
| + | && unzip $PDLIB_BRANCH \ | ||
| + | && mv pdlib-* pdlib \ | ||
| + | && cd pdlib \ | ||
| + | && phpize \ | ||
| + | && ./configure \ | ||
| + | && make \ | ||
| + | && make install | ||
| + | |||
| + | # Enable PDlib on builder | ||
| + | |||
| + | # If necesary take the php settings folder uncommenting the next line | ||
| + | # RUN php -i | grep "Scan this dir for additional .ini files" | ||
| + | RUN echo " | ||
| + | |||
| + | # Install bzip2 needed to extract models | ||
| + | |||
| + | RUN apt-get install -y libbz2-dev | ||
| + | RUN docker-php-ext-install bz2 | ||
| + | |||
| + | # Test PDlib instalation on builder | ||
| + | |||
| + | RUN apt-get install -y git | ||
| + | RUN git clone https:// | ||
| + | && cd pdlib-min-test-suite \ | ||
| + | && make | ||
| + | |||
| + | |||
| + | ARG EXT_DIR | ||
| + | RUN EXT_DIR=$(php -i | grep -oP " | ||
| + | echo $EXT_DIR > / | ||
| + | cp $EXT_DIR/ | ||
| + | # | ||
| + | # If pass the tests, we are able to create the final image. | ||
| + | # | ||
| + | |||
| + | |||
| + | |||
| + | # Vyjdeme z oficiálního obrazu Nextcloud | ||
| + | FROM nextcloud: | ||
| + | |||
| + | # Přepneme na uživatele root pro instalaci balíčků | ||
| + | #USER root | ||
| + | |||
| + | # Nainstalujeme ffmpeg | ||
| + | RUN apt-get update && apt-get install --no-install-recommends -y ffmpeg libimage-exiftool-perl && \ | ||
| + | apt-get clean && rm -rf / | ||
| + | |||
| + | # Install dependencies to image | ||
| + | |||
| + | RUN apt-get update ; \ | ||
| + | apt-get install -y libopenblas-dev libopenblas0 libbz2-dev | ||
| + | RUN docker-php-ext-install bz2 | ||
| + | |||
| + | |||
| + | # Install dlib and PDlib to image | ||
| + | |||
| + | COPY --from=builder / | ||
| + | |||
| + | # If is necesary take the php extention folder (/ | ||
| + | # RUN php -i | grep extension_dir | ||
| + | #COPY --from=builder / | ||
| + | COPY --from=builder / | ||
| + | |||
| + | COPY --from=builder / | ||
| + | COPY --from=builder / | ||
| + | |||
| + | # Extract the correct path and copy the extension | ||
| + | RUN EXT_DIR=$(cat / | ||
| + | cp / | ||
| + | |||
| + | |||
| + | # Enable PDlib on final image | ||
| + | RUN echo " | ||
| + | |||
| + | # Pdlib is already installed now on final image without all build dependencies. | ||
| + | # You could test again if everything is correct, uncommenting the next lines. | ||
| + | # | ||
| + | # RUN apt-get install -y git wget | ||
| + | # RUN git clone https:// | ||
| + | # && cd pdlib-min-test-suite \ | ||
| + | # && make | ||
| + | |||
| + | # | ||
| + | # At this point you meet all the dependencies to install the application | ||
| + | # You can skip this step and install the application from the application store | ||
| + | # | ||
| + | #ARG FR_BRANCH=master | ||
| + | #RUN apt-get install -y wget unzip nodejs npm | ||
| + | #RUN wget -c -q -O facerecognition https:// | ||
| + | # && unzip facerecognition \ | ||
| + | # && mv facerecognition-* | ||
| + | # && cd / | ||
| + | # && make | ||
| + | |||
| + | |||
| + | # Node.js for Recognize | ||
| + | # https:// | ||
| + | |||
| + | RUN apt-get update && apt-get install -y \ | ||
| + | ca-certificates \ | ||
| + | curl \ | ||
| + | gnupg && \ | ||
| + | curl -fsSL https:// | ||
| + | echo "deb [signed-by=/ | ||
| + | apt-get update && \ | ||
| + | apt-get install -y nodejs && \ | ||
| + | apt-get clean && rm -rf / | ||
| + | </ | ||
| + | |||
| + | Kromě toho jsem do Docker Compose souboru přidal environment proměnnou: | ||
| + | |||
| + | <code yaml> | ||
| + | environment: | ||
| + | - PHP_MEMORY_LIMIT=1024M | ||
| + | </ | ||
| + | |||
| + | ==== Nastavení a spuštění ==== | ||
| + | |||
| + | Po sestavení a spuštění Nextcloudu: | ||
| + | |||
| + | <code bash> | ||
| + | docker-compose build nextcloud | ||
| + | docker-compose up -d nextcloud | ||
| + | </ | ||
| + | |||
| + | Jsem provedl následující kroky: | ||
| + | |||
| + | 1. **Výpis dostupných modelů pro rozpoznávání**: | ||
| + | <code bash> | ||
| + | docker exec -u 33 -it nextcloud php / | ||
| + | </ | ||
| + | |||
| + | 2. **Nastavení přidělené RAM paměti**: | ||
| + | <code bash> | ||
| + | docker exec -u 33 -it nextcloud php / | ||
| + | </ | ||
| + | |||
| + | 3. **Výběr konkrétního modelu**: | ||
| + | <code bash> | ||
| + | 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 / | ||
| + | </ | ||
| + | |||
| + | ==== Řešení problémů ==== | ||
| + | |||
| + | Při pokusu o skenování obličejů jednoho uživatele: | ||
| + | |||
| + | <code bash> | ||
| + | docker exec -u 33 -it nextcloud php / | ||
| + | </ | ||
| + | |||
| + | jsem narazil na problém s dočasnými soubory. Problém jsem vyřešil takto: | ||
| + | |||
| + | 1. V administrátorském menu Nextcloudu jsem šel do sekce **Rozpoznávání obličejů**. | ||
| + | 2. Nastavil jsem posuvník pro velikost dočasných souborů. | ||
| + | 3. Uložil změnu kliknutím na tlačítko vedle posuvníku. | ||
| + | |||
| + | Tento krok je poměrně neintuitivní, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | A ještě je potřeba pro uživatele povolit rozpoznávání obličejů. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | ==== 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 | ||
| + | |||
| + | |||
| + | 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 | ||
| + | |||
| + | === 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> | ||
| + | # | ||
| + | |||
| + | set -o errexit | ||
| + | |||
| + | dir=$(pwd) | ||
| + | # your nextcloud path | ||
| + | cd / | ||
| + | sudo -u www-data php --define apc.enable_cli=1 ./occ face: | ||
| + | |||
| + | 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ů | ||
| Řádek 339: | Řádek 814: | ||
| Plugin je dostupný na GitHubu: [[https:// | Plugin je dostupný na GitHubu: [[https:// | ||
| + | Velikosti modelů: | ||
| + | |||
| + | * Object recognition: | ||
| + | * Landmark recognition: | ||
| + | * Video action recognition: | ||
| + | * Music genre recognition: | ||
| ==== Požadavky a instalace ==== | ==== Požadavky a instalace ==== | ||
| Řádek 380: | Řádek 861: | ||
| Například pro ignorování všech souborů v cestě `path/ | Například pro ignorování všech souborů v cestě `path/ | ||
| + | |||
| + | |||
| + | ==== Nastavení tmpfs v docker-compose.yml ==== | ||
| + | |||
| + | **tmpfs** je speciální typ souborového systému, který uchovává data přímo v paměti (RAM) místo na disku. To znamená, že přístup k těmto datům je výrazně rychlejší, | ||
| + | |||
| + | === Proč použít tmpfs v Nextcloudu === | ||
| + | |||
| + | Plugin **Recognize** dočasně ukládá soubory k rozpoznání do adresáře `/tmp`. Při použití Dockeru může být výhodné mapovat tento adresář do paměti pomocí tmpfs. Tím se zvyšuje rychlost zpracování souborů a zároveň se snižuje zatížení pevného disku. | ||
| + | |||
| + | ⚠️ **Pozor**: Pro použití tmpfs je důležité zajistit, že váš systém má dostatek volné RAM. V opačném případě mohou selhat veřejné nahrávky nebo práce s velkými soubory. | ||
| + | |||
| + | === Nastavení tmpfs v docker-compose.yml === | ||
| + | |||
| + | Pro přidání tmpfs do Docker Compose souboru jsem použil následující konfiguraci: | ||
| + | |||
| + | <code yaml> | ||
| + | services: | ||
| + | app: | ||
| + | image: nextcloud-apache | ||
| + | ... | ||
| + | volumes: | ||
| + | - type: tmpfs | ||
| + | target: /tmp | ||
| + | tmpfs: | ||
| + | mode: " | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | Tato konfigurace: | ||
| + | |||
| + | * Vytváří tmpfs svazek namapovaný na `/tmp`. | ||
| + | * Ukládá dočasná data přímo do paměti, což zrychluje zpracování. | ||
| + | * Nastavuje oprávnění pomocí volitelného parametru **mode**, kde `1777` zajišťuje, | ||
| + | |||
| + | === Výhody a omezení === | ||
| + | |||
| + | * **Výhody**: | ||
| + | - Výrazně vyšší rychlost při práci s dočasnými soubory. | ||
| + | - Snížení opotřebení disku. | ||
| + | * **Omezení**: | ||
| + | - Velikost tmpfs je omezena velikostí dostupné RAM. | ||
| + | - Velké soubory nebo velké množství dočasných souborů mohou vést k vyčerpání paměti a selhání aplikace. | ||
| + | |||
| + | Použití tmpfs je tedy skvělým řešením pro zvýšení výkonu, pokud máte dostatečné množství paměti a chcete minimalizovat zátěž pevného disku. | ||
| + | |||
| + | |||
| + | |||
| + | ==== Nastavení grafického rozhraní po instalaci ==== | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Pro jistotu jsem ještě snížil prioritu procesu. | ||
| + | {{: | ||
| + | |||
| + | |||
| + | ===== Řešení problému s připojením k databázi v Nextcloudu ===== | ||
| + | |||
| + | Při provozu Nextcloudu jsem narazil na chyby v logu související s připojením k databázovému serveru PostgreSQL. Záznamy v logu naznačovaly, | ||
| + | |||
| + | < | ||
| + | OC\DB\Exceptions\DbalException: | ||
| + | </ | ||
| + | |||
| + | ==== Interpretace chyby ==== | ||
| + | |||
| + | * **Nedostatek dostupných připojení**: | ||
| + | * **Doctrine\DBAL\Exception**: | ||
| + | * **SQLSTATE[08006]**: | ||
| + | |||
| + | ==== Příčina ==== | ||
| + | |||
| + | Hlavní příčinou problému bylo nízké nastavení maximálního počtu připojení v PostgreSQL. Výchozí hodnota parametru `max_connections` byla příliš nízká pro požadavky aplikace. | ||
| + | |||
| + | ==== Řešení ==== | ||
| + | |||
| + | Pro vyřešení problému jsem zvýšil hodnotu parametru `max_connections` v konfiguračním souboru PostgreSQL: | ||
| + | |||
| + | 1. Otevřete konfigurační soubor PostgreSQL (obvykle se nachází v `/ | ||
| + | 2. Najděte a upravte následující řádek: | ||
| + | |||
| + | < | ||
| + | max_connections = 300 | ||
| + | </ | ||
| + | |||
| + | Tato hodnota určuje maximální počet současně aktivních připojení. Zvýšení z výchozí hodnoty (obvykle 100) na 300 by mělo být dostatečné pro většinu menších a středně velkých instalací. | ||
| + | |||
| + | 3. Restartujte PostgreSQL server, aby se změny projevily: | ||
| + | |||
| + | <code bash> | ||
| + | sudo systemctl restart postgresql | ||
| + | </ | ||
| + | |||
| + | ==== Doporučení ==== | ||
| + | |||
| + | Po úpravě konfiguračního souboru jsem problém znovu monitoroval. Dále je vhodné pravidelně kontrolovat přehled vytížení připojení a zajistit, že žádné procesy zbytečně nespotřebovávají připojení. To lze provést pomocí příkazů v PostgreSQL, například: | ||
| + | |||
| + | <code sql> | ||
| + | SELECT * FROM pg_stat_activity; | ||
| + | </ | ||
| + | |||
| + | 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ů, | ||
| + | |||