Configurazione di NextCloud + ONLYOFFICE sullo stesso server con Docker

Ehi Habr! Presento alla vostra attenzione la traduzione dell'articolo "Configurare NextCloud e ONLYOFFICE su un singolo server con Docker".

È difficile sottovalutare il valore delle suite per ufficio online come Google Docs e l'archiviazione cloud nella vita delle persone orientate alla tecnologia. La tecnologia è diventata così diffusa che persino Microsoft, che ha dominato a lungo il mercato delle applicazioni per ufficio, si è recentemente concentrata sullo sviluppo dell'applicazione Web Office 365 e sul convincere gli utenti a passare a un modello di abbonamento per utilizzare i propri servizi. Invitiamo coloro che sono interessati al processo di installazione e configurazione del proprio storage sotto cat.

Qualche tempo fa abbiamo esaminato soluzioni di archiviazione cloud e suite per ufficio Web open source che potrebbero essere facilmente implementate per l'uso in una microimpresa. La motivazione principale per mantenere tutta la documentazione online è ridurre al minimo le pratiche burocratiche e attuare buone pratiche commerciali nonostante il basso volume di transazioni. L'altro lato della medaglia è che affittare un server cloud per fornire questo servizio è meno sicuro che archiviarlo direttamente nei locali dell'azienda, poiché non si dispone di alcun mezzo per controllare l'accesso fisico al server o al traffico. Pertanto, sono richiesti anche la crittografia end-to-end e il software open source.

Prendendo in considerazione tutte le informazioni disponibili sulle soluzioni open source, abbiamo trovato due progetti attivi (con commit nel repository git negli ultimi 12 mesi) sviluppati per il cloud storage: NextCloud e OwnCloud, e l'unica suite per ufficio ONLYOFFICE attiva. Entrambi gli strumenti di archiviazione cloud hanno all'incirca le stesse funzionalità e la decisione di scegliere NextCloud si è basata sull'esistenza di prove che può essere integrato con ONLYOFFICE per una comoda interazione dell'utente con il software. Tuttavia, quando abbiamo iniziato a implementare i servizi, è diventata evidente la mancanza di informazioni sull'integrazione dei servizi di cui sopra. Abbiamo trovato 3 video tutorial su come integrare:

Nessuno dei tre video ha risposto alla domanda sull'installazione del servizio documenti ONLYOFFICE sullo stesso server fisico di NextCloud con un nginx condiviso. Invece, hanno utilizzato tecniche di separazione come l'utilizzo di porte separate per l'API del servizio documenti. Un altro suggerimento è stato quello di distribuire un server separato per Document Service, configurando manualmente l'istanza nginx incorporata in Document Service per installare una chiave di accesso (una chiave di accesso pre-nota che conferma il diritto di accedere al cloud di dati) e certificati TLS. Gli approcci di cui sopra sono stati considerati non sicuri e non abbastanza efficaci, quindi abbiamo integrato NextCloud, ONLYOFFICE e un comune nginx che separa le richieste in base ai nomi di dominio utilizzando docker-compose. Ecco le informazioni passo passo su come farlo.

Passaggio 1: contenitore nginx

Questa è una configurazione molto semplice, ma questo passaggio richiede la maggior parte del lavoro per configurare il server proxy inverso. Per prima cosa abbiamo creato la configurazione docker-compose per l'immagine 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

Questo crea un contenitore con le porte 80 e 443 aperte al pubblico, esegue il mapping della configurazione a nginx/nginx-vhost.conf e definisce un archivio per i certificati generati come certificati autofirmati o utilizzando Let's encrypt's certbot in /nginx/certificates. Questa posizione dovrebbe contenere le cartelle per office.yourdomain.com e cloud.yourdomain.com, con i file fullchain1.pem e privkey1.pem rispettivamente per la catena di certificati e la chiave privata del server. Puoi leggere ulteriori informazioni su come generare un certificato autofirmato qui. www.akadia.com/services/ssh_test_certificate.html (rinominare .key e .crt in .pem funziona senza convertire la struttura del file per nginx).

Successivamente, abbiamo definito il file vhost. Per prima cosa definiamo il comportamento della porta 80 come un semplice reindirizzamento a https, perché non vogliamo consentire alcun traffico http

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

Abbiamo quindi creato due server virtuali sulla porta 443 per i nostri servizi:

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;
    }
}

Fase 2: servizio documenti

Ora dobbiamo aggiungere il contenitore del servizio documenti al nostro docker-compose.yml. Non c'è niente di speciale da configurare qui.

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

Ma non dimenticare di collegare il contenitore nginx al servizio documenti:

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

Passaggio 3: NextCloud

Innanzitutto, aggiungi nuovi servizi:

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

e aggiungi un collegamento a nginx:

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

Ora è il momento di caricare i contenitori.

docker-compose up -d  

Dopo un po', nginx inizierà a reindirizzarti al front-end di NextCloud, che è la pagina di configurazione predefinita. Dovrai inserire il nome utente e la password per il tuo primo utente amministratore e le credenziali del database che hai fornito in docker-compose.yml Una volta completata la configurazione, sarai in grado di accedere. Nel nostro caso, l'attesa è durata quasi un minuto e ha richiesto un ulteriore aggiornamento della pagina di accesso prima di poter accedere al servizio cloud.

Finestra delle impostazioni del servizio NextCloudConfigurazione di NextCloud + ONLYOFFICE sullo stesso server con Docker

Passaggio 4: connessione di NextCloud e ONLYOFFICE

A questo punto, dovrai installare l'applicazione per NextCloud, che collega la funzionalità ONLYOFFICE. Iniziamo con il pannello di controllo dell'applicazione nell'angolo in alto a destra del menu. Trova l'app ONLYOFFICE (sotto Ufficio e testo o usando la ricerca), installala e attivala.

Successivamente vai su Impostazioni tramite il menu nell'angolo in alto a destra e dovresti trovare la voce ONLYOFFICE nel menu a sinistra. Entraci dentro. Sarà necessario registrare gli indirizzi come indicato di seguito.

Impostazioni dell'applicazione di integrazioneConfigurazione di NextCloud + ONLYOFFICE sullo stesso server con Docker

Il primo indirizzo viene utilizzato per collegarsi ad alcuni file js e css direttamente dall'applicazione in esecuzione nel browser (questo è ciò di cui abbiamo bisogno per aprire l'accesso al servizio ONLYOFFICE tramite nginx). La chiave segreta non viene utilizzata perché ci fidiamo del livello di isolamento Docker più della chiave di autenticazione persistente. Il terzo indirizzo viene utilizzato dal contenitore NextCloud per connettersi direttamente all'API ONLYOFFICE e utilizza il nome host interno predefinito da Docker. Bene, l'ultimo campo viene utilizzato in modo che ONLYOFFICE possa inviare richieste all'API NextCloud utilizzando un indirizzo IP esterno o un indirizzo Docker interno se stai utilizzando reti Docker, ma questo non viene utilizzato nel nostro caso. Assicurati che le impostazioni del firewall consentano questo tipo di interazioni.

Dopo il salvataggio, NextCloud testerà la connessione e, se tutto è corretto, ti mostrerà le impostazioni relative all'integrazione, ad esempio quali tipi di file possono essere modificati da questa integrazione. Personalizza come meglio credi.

Il passaggio finale: dove trovare l'editor

Se torni alle tue cartelle di archiviazione cloud e fai clic su "+" per creare un nuovo file, avrai una nuova opzione per creare un documento, un foglio di calcolo o una presentazione. Con il loro aiuto, creerai e sarai immediatamente in grado di modificare questi tipi di file utilizzando ONLYOFFICE.

Menu di creazione fileConfigurazione di NextCloud + ONLYOFFICE sullo stesso server con Docker

Aggiornamento 1

Il contenuto completo di docker-compose.yml può essere trovato qui: https://pastebin.com/z1Ti1fTZ

Fonte: habr.com

Aggiungi un commento