Konfigurowanie NextCloud + ONLYOFFICE na tym samym serwerze z Dockerem

Hej Habra! Zwracam uwagę na tłumaczenie artykułu „Konfigurowanie NextCloud i ONLYOFFICE na jednym serwerze z Dockerem”.

Trudno nie docenić wartości internetowych pakietów biurowych, takich jak Dokumenty Google i pamięć masowa w chmurze, w życiu osób zorientowanych na technologię. Technologia stała się tak powszechna, że ​​nawet Microsoft, który od dawna dominuje na rynku aplikacji biurowych, w ostatnim czasie skupił się na rozwoju aplikacji internetowej Office 365 i przekonywaniu użytkowników do przejścia na model subskrypcyjny w celu korzystania z własnych usług. Zapraszamy zainteresowanych procesem instalacji i konfiguracji własnej pamięci masowej w kat.

Jakiś czas temu przyglądaliśmy się rozwiązaniom do przechowywania danych w chmurze i pakietom biurowym o otwartym kodzie źródłowym, które można łatwo wdrożyć w mikroprzedsiębiorstwach. Główną motywacją do przechowywania całej dokumentacji online jest ograniczenie formalności do minimum i wdrożenie dobrych praktyk biznesowych pomimo niskiego wolumenu transakcji. Drugą stroną medalu jest to, że wynajęcie serwera w chmurze w celu świadczenia tej usługi jest mniej bezpieczne niż przechowywanie go bezpośrednio w siedzibie przedsiębiorstwa, ponieważ nie masz żadnych możliwości kontrolowania fizycznego dostępu do swojego serwera lub ruchu. Dlatego wymagane jest również kompleksowe szyfrowanie i oprogramowanie typu open source.

Biorąc pod uwagę wszystkie dostępne informacje o rozwiązaniach open source, znaleźliśmy dwa aktywne projekty (z zatwierdzeniami w repozytorium git z ostatnich 12 miesięcy) opracowane z myślą o przechowywaniu w chmurze: NextCloud i OwnCloud oraz jedyny aktywny pakiet biurowy ONLYOFFICE. Obydwa narzędzia do przechowywania w chmurze mają mniej więcej tę samą funkcjonalność, a decyzję o wyborze NextCloud podjęto w oparciu o istnienie dowodów na to, że można je zintegrować z ONLYOFFICE, aby zapewnić wygodną interakcję użytkownika z oprogramowaniem. Kiedy jednak rozpoczęliśmy wdrażanie usług, uwidocznił się brak informacji na temat integracji powyższych usług. Znaleźliśmy 3 filmy instruktażowe dotyczące integracji:

Żaden z trzech filmów nie odpowiadał na pytanie o instalację usługi dokumentów ONLYOFFICE na tym samym serwerze fizycznym co NextCloud ze współdzielonym nginxem. Zamiast tego zastosowali techniki separacji, takie jak użycie oddzielnych portów dla interfejsu API usługi dokumentów. Inną sugestią było wdrożenie osobnego serwera dla Document Service, ręczne skonfigurowanie instancji nginx wbudowanej w Document Service w celu zainstalowania klucza dostępu (znanego wcześniej klucza dostępu potwierdzającego prawo dostępu do chmury danych) i certyfikatów TLS. Powyższe podejścia uznano za niewystarczająco bezpieczne i niewystarczająco skuteczne, dlatego zintegrowaliśmy NextCloud, ONLYOFFICE i wspólny nginx, który oddziela żądania według nazw domen za pomocą funkcji docker-compose. Tutaj znajdziesz informacje krok po kroku jak to zrobić.

Krok 1: kontener Nginx

Jest to bardzo prosta konfiguracja, ale ten krok wymaga najwięcej pracy w celu skonfigurowania serwera odwrotnego proxy. Najpierw utworzyliśmy konfigurację docker-compose dla obrazu nginx:stable.

version: '2'
services:
  nginx:
    image : nginx:stable
    restart: always
    volumes:
      - ./nginx/nginx-vhost.conf:/etc/nginx/conf.d/default.conf:ro
      - ./nginx/certificates:/mycerts 
    ports:
      - 443:443
      - 80:80

Tworzy to kontener z portami 80 i 443 otwartymi publicznie, mapuje konfigurację na nginx/nginx-vhost.conf i definiuje magazyn certyfikatów wygenerowanych jako certyfikaty z podpisem własnym lub przy użyciu certbota Let's Encrypt w /nginx/certificates. Ta lokalizacja powinna zawierać foldery office.yourdomain.com i cloud.yourdomain.com, z plikami fullchain1.pem i privkey1.pem odpowiednio dla łańcucha certyfikatów i klucza prywatnego serwera. Więcej o tym, jak wygenerować certyfikat z podpisem własnym, możesz przeczytać tutaj. www.akadia.com/services/ssh_test_certificate.html (zmiana nazw .key i .crt na .pem działa bez konwersji struktury plików dla nginx).

Następnie zdefiniowaliśmy plik vhost. Najpierw definiujemy zachowanie portu 80 jako proste przekierowanie na https, ponieważ nie chcemy zezwalać na żaden ruch http

server {
    listen 80;
    location / {
        return 301
            https://$host$request_uri;
    }
}

Następnie utworzyliśmy dwa wirtualne serwery na porcie 443 dla naszych usług:

server {
    listen 443 ssl;
    server_name cloud.yourdomain.com ;
    root /var/www/html;

    ssl_certificate     /mycerts/cloud.yourdomain.com/fullchain1.pem;
    ssl_certificate_key /mycerts/cloud.yourdomain.com/privkey1.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app:80;
    }
}
server {
    listen 443 ssl;
    server_name office.yourdomain.com;
    root /var/www/html;

    ssl_certificate     /mycerts/office.yourdomain.com/fullchain1.pem;
    ssl_certificate_key /mycerts/office.yourdomain.com/privkey1.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://onlyoffice:80;
    }
}

Krok 2: obsługa dokumentów

Teraz musimy dodać kontener usług dokumentów do naszego pliku docker-compose.yml. Nie ma tu nic specjalnego do skonfigurowania.

services:
...
  onlyoffice:
    image: onlyoffice/documentserver
    restart: always

Ale nie zapomnij połączyć kontenera Nginx z usługą dokumentów:

services:
...
  nginx:
    ...
    depends_on:
      - onlyoffice

Krok 3: Następna Chmura

Najpierw dodaj nowe usługi:

services:
...
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - /data/nextcloud_db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=#put some password here
      - MYSQL_PASSWORD=#put some other password here
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    depends_on:
      - db
      - onlyoffice
    restart: always

i dodaj link do nginx:

services:
...
  nginx:
    ...
    depends_on:
      - app 

Teraz czas załadować kontenery.

docker-compose up -d  

Po chwili nginx zacznie przekierowywać Cię do interfejsu NextCloud, który jest domyślną stroną konfiguracyjną. Będziesz musiał wprowadzić nazwę użytkownika i hasło pierwszego administratora oraz dane uwierzytelniające bazy danych podane w pliku docker-compose.yml. Po zakończeniu konfiguracji będziesz mógł się zalogować. W naszym przypadku oczekiwanie trwało prawie minutę i wymagało dodatkowego odświeżenia strony logowania, zanim mogliśmy zalogować się do usługi chmurowej.

DalejOkno ustawień usługi CloudKonfigurowanie NextCloud + ONLYOFFICE na tym samym serwerze z Dockerem

Krok 4: Łączenie NextCloud i ONLYOFFICE

Na tym etapie będziesz musiał zainstalować aplikację dla NextCloud, która łączy funkcjonalność ONLYOFFICE. Zacznijmy od panelu sterowania aplikacji znajdującego się w prawym górnym rogu menu. Znajdź aplikację ONLYOFFICE (w obszarze Office i tekst lub korzystając z wyszukiwania), zainstaluj ją i aktywuj.

Następnie przejdź do Ustawień za pomocą menu w prawym górnym rogu, a w lewym menu powinieneś znaleźć pozycję TYLKO BIURO. Wejdź w to. Będziesz musiał zarejestrować adresy, jak wskazano poniżej.

Ustawienia aplikacji integracyjnejKonfigurowanie NextCloud + ONLYOFFICE na tym samym serwerze z Dockerem

Pierwszy adres służy do linkowania do niektórych plików js i css bezpośrednio z aplikacji działającej w przeglądarce (tego potrzebujemy, aby otworzyć dostęp do usługi ONLYOFFICE poprzez nginx). Tajny klucz nie jest używany, ponieważ bardziej ufamy warstwie izolacyjnej Dockera niż trwałemu kluczowi uwierzytelniającemu. Trzeci adres jest używany przez kontener NextCloud do bezpośredniego połączenia z API ONLYOFFICE i wykorzystuje domyślną wewnętrzną nazwę hosta z Dockera. Cóż, ostatnie pole jest używane, aby ONLYOFFICE mogło wysyłać żądania z powrotem do API NextCloud przy użyciu zewnętrznego adresu IP lub wewnętrznego adresu Dockera, jeśli korzystasz z sieci Docker, ale w naszym przypadku nie jest to używane. Upewnij się, że ustawienia zapory sieciowej zezwalają na tego rodzaju interakcje.

Po zapisaniu NextCloud przetestuje połączenie i jeśli wszystko będzie się zgadzać, pokaże Ci ustawienia związane z integracją – np. jakie typy plików może edytować ta integracja. Dostosuj według własnego uznania.

Ostatni krok: gdzie znaleźć redaktora

Jeśli wrócisz do folderów przechowywania w chmurze i klikniesz „+”, aby utworzyć nowy plik, będziesz mieć nową opcję utworzenia dokumentu, arkusza kalkulacyjnego lub prezentacji. Z ich pomocą utworzysz i od razu będziesz mógł edytować tego typu pliki za pomocą ONLYOFFICE.

Menu tworzenia plikuKonfigurowanie NextCloud + ONLYOFFICE na tym samym serwerze z Dockerem

Dodatek 1

Pełną zawartość pliku docker-compose.yml można znaleźć tutaj: https://pastebin.com/z1Ti1fTZ

Źródło: www.habr.com

Dodaj komentarz