Skip to content Skip to footer

NextCloud na TrueNAS SCALE – Webhook i Wydajność

Ostrzeżenia bezpieczeństwa i konfiguracji

Poprawna konfiguracja jest ważna dla bezpieczeństwa i wydajności Twojej instancji. W celach pomocniczych przeprowadzane jest automatyczne sprawdzanie. Więcej informacji możesz znaleźć w dokumentacji.

Występują błędy dotyczące konfiguracji.
  • WebSocket server URL is not configured. Real-time collaboration requires a separate WebSocket server. Basic whiteboard functionality works without it. Więcej informacji można znaleźć w dokumentacji ↗.
  • Brak skonfigurowanego zaplecza o wysokiej wydajności – Uruchomienie Nextcloud Talk bez zaplecza o wysokiej wydajności jest skalowalne tylko dla bardzo małych połączeń (maks. 2–3 uczestników). Skonfiguruj zaplecze o wysokiej wydajności, aby zapewnić bezproblemową pracę połączeń z wieloma uczestnikami. Więcej informacji można znaleźć w dokumentacji ↗.

Rozumiem, że chcesz rozwiązać dwa problemy z ostrzeżeniami bezpieczeństwa i konfiguracji Nextcloud na systemie TrueNAS SCALE:

  1. WebSocket server URL is not configured – brak skonfigurowanego serwera WebSocket dla aplikacji Whiteboard.
  2. Brak zaplecza o wysokiej wydajności (HPB) – brak skonfigurowanego zaplecza dla Nextcloud Talk, co ogranicza połączenia do 2–3 uczestników.

Poniżej przedstawiam instrukcje rozwiązania tych problemów, dostosowane do TrueNAS SCALE (w wersji 24.04 lub nowszej, używającej Dockera). Każda komenda będzie wyraźnie oznaczona, wskazując, gdzie należy ją wykonać: w powłoce systemowej TrueNAS, w Dockerze lub w kontenerze Dockera. Zakładam, że Nextcloud jest już zainstalowany jako aplikacja w TrueNAS SCALE.


Przygotowanie środowiska

Wymagania wstępne:

  • TrueNAS SCALE: Wersja 24.04 (Dragonfish) lub nowsza.
  • Dostęp do powłoki systemowej: Włączony dostęp SSH (System > Advanced > Enable SSH) lub użyj interfejsu webowego TrueNAS (System > Shell).
  • Nextcloud: Zainstalowany jako aplikacja z TrueNAS Apps, z dostępem do datasetów (np. nextcloud/userdata, nextcloud/postgres, nextcloud/appdata).
  • Certyfikat SSL: Skonfigurowany dla domeny (np. za pomocą Let’s Encrypt w Nginx Proxy Manager lub Traefik).
  • Domena: Np. nextcloud.twojadomena.pl dla dostępu zewnętrznego.
  • Uprawnienia: Upewnij się, że dataset nextcloud ma uprawnienia dla użytkownika www-data (UID: 33) lub użytkownika aplikacji (np. UID: 568).

Dostęp do powłoki systemowej:

  1. W interfejsie TrueNAS przejdź do System > Shell lub włącz SSH i zaloguj się:
    bash
     
    ssh root@<IP_SERWERA>
     
     
  2. Sprawdź, czy Docker jest aktywny:
    bash
     
    docker –version
     
     
    (Wykonaj w powłoce systemowej TrueNAS).

Dostęp do kontenera Nextcloud:

  1. Znajdź nazwę kontenera Nextcloud:
    bash
     
    docker ps
     
     
    (W powłoce systemowej TrueNAS). Nazwa kontenera będzie podobna do ix-nextcloud-nextcloud-1.
  2. Wejdź do powłoki kontenera:
    bash
     
    docker exec -it ix-nextcloud-nextcloud-1 /bin/bash
     
     
    (Wykonaj w powłoce systemowej TrueNAS).

Problem 1: WebSocket server URL is not configured

Ten problem dotyczy aplikacji Whiteboard, która wymaga osobnego serwera WebSocket dla współpracy w czasie rzeczywistym. W TrueNAS SCALE uruchomimy serwer WebSocket w osobnym kontenerze Docker.

Kroki rozwiązania:

  1. Utwórz dataset dla serwera WebSocket:
    • W interfejsie TrueNAS przejdź do Datasets.
    • W puli (np. tank) utwórz nowy dataset: nextcloud/whiteboard.
    • Ustaw uprawnienia:
      • Owner: www-data (UID: 33) lub użytkownik aplikacji (np. UID: 568).
      • Permissions: Read/Write/Execute.
  2. Zainstaluj serwer WebSocket w osobnym kontenerze:
    • W powłoce systemowej TrueNAS utwórz plik docker-compose.yml dla serwera WebSocket:
      bash
       
      mkdir /mnt/tank/nextcloud/whiteboard
      nano /mnt/tank/nextcloud/whiteboard/docker-compose.yml
       
       
      (Wykonaj w powłoce systemowej TrueNAS).
    • Wklej następującą konfigurację:
      yaml
       
      version: '3′
      services:
      whiteboard:
      image: node:20
      container_name: nextcloud_whiteboard
      restart: always
      volumes:
      – /mnt/tank/nextcloud/whiteboard:/app
      working_dir: /app
      command: >
      /bin/bash -c „
      npm install @nextcloud/whiteboard &&
      npm start”
      ports:
      – 3002:3002
       
       
    • Zapisz i uruchom kontener:
      bash
       
      cd /mnt/tank/nextcloud/whiteboard
      docker-compose up -d
       
       
      (Wykonaj w powłoce systemowej TrueNAS).
  3. Skonfiguruj reverse proxy dla WebSocket:
    • Zakładam, że używasz Nginx Proxy Manager lub Traefik jako reverse proxy w TrueNAS SCALE.
    • W Nginx Proxy Manager:
      1. Przejdź do Apps > Installed Applications > Nginx Proxy Manager > Manage.
      2. Dodaj nowy Proxy Host:
        • Domain Names: whiteboard.twojadomena.pl lub nextcloud.twojadomena.pl.
        • Scheme: http.
        • Forward Hostname/IP: Adres IP TrueNAS (np. 192.168.0.47).
        • Forward Port: 3002.
        • Włącz WebSocket Support (przełącznik w interfejsie).
        • Dodaj certyfikat SSL (np. Let’s Encrypt).
      3. Zapisz zmiany.
    • Jeśli używasz Traefik, dodaj konfigurację w pliku docker-compose.yml dla Traefik:
      yaml
       
      labels:
      – „traefik.enable=true”
      – „traefik.http.routers.whiteboard.rule=Host(`whiteboard.twojadomena.pl`)”
      – „traefik.http.routers.whiteboard.entrypoints=websecure”
      – „traefik.http.services.whiteboard.loadbalancer.server.port=3002”
      – „traefik.http.routers.whiteboard.tls.certresolver=letsencrypt”
       
       
      • Zrestartuj Traefik:
        bash
         
        docker-compose -f /path/to/traefik/docker-compose.yml up -d
         
         
        (Wykonaj w powłoce systemowej TrueNAS).
  4. Ustaw adres WebSocket w Nextcloud:
    • Zaloguj się do Nextcloud jako administrator.
    • Przejdź do Ustawienia > Aplikacje > Whiteboard.
    • W polu WebSocket server URL wprowadź: wss://whiteboard.twojadomena.pl/whiteboard lub wss://nextcloud.twojadomena.pl:3002/whiteboard.
    • Zapisz zmiany.
  5. Testowanie:
    • W powłoce systemowej TrueNAS sprawdź dostępność serwera WebSocket:
      bash
       
      curl -v http://192.168.0.47:3002/whiteboard
       
       
      (Zastąp 192.168.0.47 adresem IP TrueNAS).
    • Oczekiwana odpowiedź to kod HTTP 200.
    • W Nextcloud przetestuj aplikację Whiteboard, tworząc nową tablicę i sprawdzając współpracę w czasie rzeczywistym.

Uwagi:

  • Jeśli serwer WebSocket nie działa, sprawdź logi kontenera:
    bash
     
    docker logs nextcloud_whiteboard
     
     
    (Wykonaj w powłoce systemowej TrueNAS).
  • Upewnij się, że port 3002 jest otwarty w firewallu TrueNAS:
    bash
     
    ufw allow 3002/tcp
     
     
    (Wykonaj w powłoce systemowej TrueNAS, jeśli masz włączony firewall).

Problem 2: Brak zaplecza o wysokiej wydajności (HPB)

Nextcloud Talk wymaga zaplecza o wysokiej wydajności (HPB) dla połączeń z więcej niż 2–3 uczestnikami. HPB składa się z serwera sygnalizacyjnego i bramki WebRTC (Janus). W TrueNAS SCALE uruchomimy je w kontenerach Docker.

Kroki rozwiązania:

  1. Utwórz dataset dla HPB:
    • W interfejsie TrueNAS przejdź do Datasets.
    • W puli (np. tank) utwórz nowy dataset: nextcloud/talk-hpb.
    • Ustaw uprawnienia:
      • Owner: www-data (UID: 33) lub użytkownik aplikacji (np. UID: 568).
      • Permissions: Read/Write/Execute.
  2. Zainstaluj serwer sygnalizacyjny:
    • W powłoce systemowej TrueNAS utwórz plik docker-compose.yml dla serwera sygnalizacyjnego:
      bash
       
      mkdir /mnt/tank/nextcloud/talk-hpb
      nano /mnt/tank/nextcloud/talk-hpb/docker-compose.yml
       
       
    • Wklej konfigurację:
      yaml
       
      version: '3′
      services:
      signaling:
      image: golang:1.21
      container_name: nextcloud_signaling
      restart: always
      volumes:
      – /mnt/tank/nextcloud/talk-hpb:/app
      working_dir: /app
      command: >
      /bin/bash -c „
      git clone https://github.com/strukturag/nextcloud-spreed-signaling.git &&
      cd nextcloud-spreed-signaling &&
      make build &&
      cp server.conf.in server.conf &&
      sed -i 's/listen = .*/listen = 0.0.0.0:8080/’ server.conf &&
      sed -i 's/hashkey = .*/hashkey = $(openssl rand -hex 32)/’ server.conf &&
      sed -i 's/blockkey = .*/blockkey = $(openssl rand -hex 32)/’ server.conf &&
      sed -i 's/backends = .*/backends = nextcloud-backend-0/’ server.conf &&
      echo '[nextcloud-backend-0]’ >> server.conf &&
      echo 'url = https://nextcloud.twojadomena.pl’ >> server.conf &&
      echo 'secret = $(openssl rand -hex 32)’ >> server.conf &&
      ./bin/signaling”
      ports:
      – 8080:8080
       
       
    • Uruchom kontener:
      bash
       
      cd /mnt/tank/nextcloud/talk-hpb
      docker-compose up -d
       
       
      (Wykonaj w powłoce systemowej TrueNAS).
  3. Zainstaluj Janus WebRTC Gateway:
    • W powłoce systemowej TrueNAS utwórz osobny plik docker-compose.yml dla Janus:
      bash
       
      mkdir /mnt/tank/nextcloud/janus
      nano /mnt/tank/nextcloud/janus/docker-compose.yml
       
       
    • Wklej konfigurację:
      yaml
       
      version: '3′
      services:
      janus:
      image: meetecho/janus-gateway
      container_name: nextcloud_janus
      restart: always
      volumes:
      – /mnt/tank/nextcloud/janus:/usr/local/etc/janus
      ports:
      – 8088:8088
      – 8089:8089
      – 8188:8188
      – 20000-40000:20000-40000/udp
      environment:
      – JANUS_WEBSOCKETS=yes
       
       
    • Uruchom kontener:
      bash
       
      cd /mnt/tank/nextcloud/janus
      docker-compose up -d
       
       
      (Wykonaj w powłoce systemowej TrueNAS).
    • Skonfiguruj Janus w pliku /mnt/tank/nextcloud/janus/janus.jcfg (możesz edytować w TrueNAS lub w kontenerze):
      bash
       
      docker exec -it nextcloud_janus /bin/bash
      nano /usr/local/etc/janus/janus.jcfg
       
       
      (Wykonaj w powłoce systemowej TrueNAS, a edytuj w kontenerze).
      • Włącz wtyczkę VideoRoom i transport WebSocket:
        ini
         
        general: {
        plugins: {
        janus.plugin.videoroom: true
        }
        transports: {
        janus.transport.websockets: true
        }
        }
         
         
  4. Skonfiguruj reverse proxy dla HPB:
    • W Nginx Proxy Manager:
      1. Dodaj nowy Proxy Host:
        • Domain Names: signaling.twojadomena.pl lub nextcloud.twojadomena.pl.
        • Scheme: http.
        • Forward Hostname/IP: Adres IP TrueNAS (np. 192.168.0.47).
        • Forward Port: 8080.
        • Włącz WebSocket Support.
        • Dodaj certyfikat SSL.
      2. Zapisz zmiany.
    • Dla Traefik, dodaj do docker-compose.yml serwera sygnalizacyjnego:
      yaml
       
      labels:
      – „traefik.enable=true”
      – „traefik.http.routers.signaling.rule=Host(`signaling.twojadomena.pl`)”
      – „traefik.http.routers.signaling.entrypoints=websecure”
      – „traefik.http.services.signaling.loadbalancer.server.port=8080”
      – „traefik.http.routers.signaling.tls.certresolver=letsencrypt”
       
       
      • Zrestartuj Traefik:
        bash
         
        docker-compose -f /path/to/traefik/docker-compose.yml up -d
         
         
        (Wykonaj w powłoce systemowej TrueNAS).
  5. Ustaw HPB w Nextcloud:
    • Zaloguj się do Nextcloud jako administrator.
    • Przejdź do Ustawienia > Talk.
    • W sekcji High Performance Backend:
      • Signaling server: wss://signaling.twojadomena.pl/standalone-signaling/.
      • Shared secret: Skopiuj klucz secret z pliku /mnt/tank/nextcloud/talk-hpb/server.conf (sprawdź w powłoce systemowej TrueNAS):
        bash
         
        cat /mnt/tank/nextcloud/talk-hpb/server.conf | grep secret
         
         
    • Zapisz zmiany.
  6. Opcjonalnie: Skonfiguruj serwer TURN/STUN:
    • Zainstaluj Coturn w osobnym kontenerze:
      bash
       
      mkdir /mnt/tank/nextcloud/coturn
      nano /mnt/tank/nextcloud/coturn/docker-compose.yml
       
       
      • Wklej konfigurację:
        yaml
         
        version: '3′
        services:
        coturn:
        image: coturn/coturn
        container_name: nextcloud_coturn
        restart: always
        ports:
        – 3478:3478
        – 3478:3478/udp
        environment:
        – TURN_PORT=3478
        – TURN_REALM=twojadomena.pl
        – TURN_SECRET=turnpassword
        – TURN_USER=turnuser
         
         
      • Uruchom kontener:
        bash
         
        cd /mnt/tank/nextcloud/coturn
        docker-compose up -d
         
         
        (Wykonaj w powłoce systemowej TrueNAS).
    • W Nextcloud (Ustawienia > Talk) dodaj:
      • STUN: signaling.twojadomena.pl:3478.
      • TURN: signaling.twojadomena.pl:3478 z użytkownikiem turnuser i hasłem turnpassword.
  7. Testowanie:
    • Sprawdź serwer sygnalizacyjny:
      bash
       
      curl -i http://192.168.0.47:8080/standalone-signaling/api/v1/welcome
       
       
      (Wykonaj w powłoce systemowej TrueNAS, zastąp 192.168.0.47 adresem IP TrueNAS).
      • Oczekiwana odpowiedź: HTTP 200 i JSON, np. {„nextcloud-spreed-signaling”:”Welcome”,”version”:”1.0.0″}.
    • Przetestuj Nextcloud Talk, organizując połączenie z więcej niż 3 uczestnikami.

Dodatkowe uwagi dotyczące TrueNAS SCALE

  • Uprawnienia datasetów:
    • Jeśli kontenery nie mają dostępu do datasetów, sprawdź uprawnienia:
      bash
       
      chown -R 33:33 /mnt/tank/nextcloud
      chmod -R 770 /mnt/tank/nextcloud
       
       
      (Wykonaj w powłoce systemowej TrueNAS).
    • Alternatywnie, użyj interfejsu TrueNAS do ustawienia ACL.
  • Firewall:
    • Otwórz porty w firewallu TrueNAS:
      bash
       
      ufw allow 3002/tcp
      ufw allow 8080/tcp
      ufw allow 8088/tcp
      ufw allow 8089/tcp
      ufw allow 8188/tcp
      ufw allow 3478/tcp
      ufw allow 3478/udp
      ufw allow 20000:40000/udp
       
       
      (Wykonaj w powłoce systemowej TrueNAS, jeśli firewall jest aktywny).
  • Logi i debugowanie:
    • Sprawdź logi kontenerów, jeśli coś nie działa:
      bash
       
      docker logs nextcloud_whiteboard
      docker logs nextcloud_signaling
      docker logs nextcloud_janus
      docker logs nextcloud_coturn
       
       
      (Wykonaj w powłoce systemowej TrueNAS).
    • Logi Nextcloud znajdziesz w kontenerze:
      bash
       
      docker exec -it ix-nextcloud-nextcloud-1 cat /var/www/html/data/nextcloud.log
       
       
      (Wykonaj w powłoce systemowej TrueNAS).
  • HTTPS:
    • Upewnij się, że wszystkie połączenia (Nextcloud, WebSocket, HPB) używają HTTPS. Skonfiguruj certyfikaty w Nginx Proxy Manager lub Traefik.
  • Cronjobs:
    • Dodaj cronjob dla Nextcloud w TrueNAS (System > Cron Jobs):
      bash
       
      docker exec -u www-data ix-nextcloud-nextcloud-1 php /var/www/html/cron.php
       
       
      (Ustaw co 15 minut).

Alternatywa: Nextcloud All-in-One (AIO)

Jeśli konfiguracja WebSocket i HPB jest zbyt skomplikowana, rozważ użycie Nextcloud All-in-One, które automatycznie konfiguruje wszystkie komponenty, w tym Talk i Whiteboard.

  1. Utwórz dataset: nextcloud/aio.
  2. W powłoce systemowej TrueNAS utwórz plik docker-compose.yml:
    bash
     
    mkdir /mnt/tank/nextcloud/aio
    nano /mnt/tank/nextcloud/aio/docker-compose.yml
     
     
    • Wklej:
      yaml
       
      version: '3′
      services:
      nextcloud:
      image: nextcloud/all-in-one:latest
      container_name: nextcloud_aio
      restart: always
      volumes:
      – /mnt/tank/nextcloud/aio:/mnt/docker-aio-config
      – /var/run/docker.sock:/var/run/docker.sock:ro
      ports:
      – 8080:8080
      environment:
      – APACHE_PORT=11000
      – NEXTCLOUD_DATADIR=/mnt/tank/nextcloud/aio/data
      – NEXTCLOUD_MOUNT=/mnt/tank/nextcloud/aio
       
       
  3. Uruchom:
    bash
     
    cd /mnt/tank/nextcloud/aio
    docker-compose up -d
     
     
    (Wykonaj w powłoce systemowej TrueNAS).
  4. Otwórz http://<IP_SERWERA>:8080 w przeglądarce i postępuj zgodnie z kreatorem AIO.

Podsumowanie

  • WebSocket:
    • Zainstaluj serwer WebSocket w kontenerze Docker (nextcloud_whiteboard).
    • Skonfiguruj reverse proxy (Nginx/Traefik) z obsługą WebSocket.
    • Ustaw adres w Nextcloud (wss://whiteboard.twojadomena.pl/whiteboard).
  • HPB:
    • Zainstaluj serwer sygnalizacyjny (nextcloud_signaling) i Janus (nextcloud_janus) w kontenerach Docker.
    • Skonfiguruj reverse proxy i opcjonalnie serwer TURN/STUN (nextcloud_coturn).
    • Ustaw parametry w Nextcloud Talk.
  • TrueNAS SCALE:
    • Używaj datasetów z poprawnymi uprawnieniami.
    • Sprawdzaj logi kontenerów w razie problemów.
    • Włącz HTTPS i otwórz niezbędne porty.

Jeśli napotkasz konkretny problem (np. błąd w logach, problem z dostępem), podaj szczegóły, a pomogę go rozwiązać!

Leave a comment

0.0/5