Konfiguracja NextCloud w Dockerze z NGINX i CloudFlare

Wstęp

Nextcloud to pakiet oprogramowania klient-serwer do tworzenia i korzystania z usług hostingu plików. Jako bezpłatne oprogramowanie o otwartym kodzie źródłowym, każdy może zainstalować i obsługiwać je na własnych prywatnych urządzeniach serwerowych.

Nextcloud jest funkcjonalnie podobny do Dropbox, Microsoft 365 lub Google Drive, gdy jest używany ze zintegrowanymi rozwiązaniami pakietu biurowego Collabora Online lub OnlyOffice. Może być hostowany w chmurze lub lokalnie. Jest skalowalny, od rozwiązań dla biur domowych opartych na tanim Raspberry Pi, aż po pełnowymiarowe rozwiązania dla centrów danych, które obsługują miliony użytkowników.

Wymagania wstępne

1. Zainstalowany Docker Engine i Docker Compose

2. Znajomość Nginx Proxy Manager i Cloudflare

Instalacja

Tworzymy nowy folder a w nim plik docker-compose.yml:

mkdir nextcloud
cd nextcloud
sudo nano docker-compose.yml

Wklejamy następującą konfigurację dla dokcer-compose:

version: '2'

volumes:
  nextcloud:
  db:

services:
  db:
    image: mariadb
    restart: always
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed

    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=U93tCfEmjAHJ5ys #zmień to
      - MYSQL_PASSWORD=BmPecm4wvE3eDrT #zmień to
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    restart: always
    ports:
      - 8888:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
    environment:
      - MYSQL_PASSWORD=BmPecm4wvE3eDrT  #zmień to tak aby pasowało z mysql_password wyżej
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db

Zmieniamy hasła i w razie potrzeby możesz zmienić port na np. 8080:80. Zamykamy plik jednocześnie go zapisując naciskając Ctrl+X -> Y -> Enter

Uruchamiamy docker-compose komendą:

sudo docker compose up -d

Po udanej instalacji wpisujemy w przeglądarkę twoj_publiczny_adres_IP:8888, pojawi się następujący ekran:

Konfiguracja Cloudflare i Nginx Proxy Manager

Otwieramy panel Cloudflare i dodajemy wpisy DNS takie jak poniżej:

Instalujemy Nginx Proxy Manager zgodnie z poradnikiem: Instalacja Nginx Proxy Manager

Tworzymy nowy Proxy Host:

Po utworzeniu Proxy Host z Certyfikatem SSL włączamy proxy w Cloudflare:

Teraz możemy korzystać z aplikacji:

Zwiększenie limitu wielkości przesyłanego pliku

Domyślnie NextCloud pozwala na przesłanie pliku o wielkości max 512 MB:

Aby zwiększyć limit przesyłanego pliku wykonaj następujące polecenia:
sudo docker exec -it nextcloud_app_1 bash
apt update
apt install nano
nano .htaccess

Dodajemy następujące parametry i zapisujemy plik:

Wychodzimy z kontenera poleceniem exit i restartujemy kontener:

exit
sudo docker restart nextcloud_app_1

Po odświeżeniu strony pojawią się nowe limity: