Impostazione di NextCloud + ONLYOFFICE su un unico server utilizzando Docker

Ciao, Habr! Vi presento la traduzione di un articolo «Setting up NextCloud and ONLYOFFICE on a single server with Docker».

È difficile sottovalutare l'utilità dei pacchetti di applicazioni per ufficio online come Google Docs e dei servizi di archiviazione cloud nella vita delle persone tecnicamente orientate. Le tecnologie sono diventate così diffuse che anche Microsoft, da tempo leader nel mercato delle applicazioni per ufficio, si è recentemente concentrata nello sviluppo del web app Office 365, cercando di convincere gli utenti a passare a un modello di abbonamento per l'utilizzo dei propri servizi. Invitiamo coloro che sono interessati al processo di installazione e configurazione del proprio spazio di archiviazione a proseguire.

Tempo fa, abbiamo esaminato le soluzioni per lo storage cloud e i pacchetti di applicazioni web open source che potrebbero essere facilmente implementati per l'uso in microimprese. La principale motivazione per mantenere tutta la documentazione online è ridurre al minimo il volume della documentazione cartacea e implementare pratiche aziendali positive, nonostante il piccolo volume delle operazioni. D'altra parte, l'affitto di un server cloud per fornire questo servizio è meno sicuro rispetto allo storage direttamente presso l'azienda, poiché non si ha alcun mezzo per audire l'accesso fisico al proprio server o al traffico. Pertanto, è necessaria anche la crittografia end-to-end e software open source.

Considerando tutte le informazioni disponibili sulle soluzioni open source, abbiamo trovato due progetti attivi (con commit nel repository git negli ultimi 12 mesi) sviluppati per l'archiviazione cloud: NextCloud e OwnCloud, e l'unico pacchetto attivo di applicazioni per ufficio ONLYOFFICE. Entrambi gli strumenti di archiviazione cloud offrono funzionalità simili, e la decisione di scegliere NextCloud si è basata sull'esistenza di prove che possa essere integrato con ONLYOFFICE per un'interazione utente comoda con il software. Tuttavia, quando abbiamo iniziato a implementare i servizi, la mancanza di informazioni sull'integrazione dei suddetti servizi è diventata evidente. Abbiamo trovato 3 video tutorial su come eseguire l'integrazione:

Nessuno dei tre video ha risposto alla domanda su come installare il servizio documenti ONLYOFFICE sullo stesso server fisico di NextCloud, utilizzando un nginx condiviso. Invece, hanno impiegato tecnologie di separazione come l'uso di porte diverse per l'API del servizio documenti. Un'altra opzione suggerita è stata quella di distribuire un server separato per il servizio documenti, configurando manualmente l'istanza nginx integrata nel servizio documenti per l'installazione della chiave di accesso (una chiave di accesso predefinita, che certifica il diritto di accesso al cloud dei dati) e i certificati TLS. Gli approcci sopra descritti sono stati giudicati non sicuri e poco efficaci, quindi abbiamo effettuato l'integrazione di NextCloud, ONLYOFFICE e il nginx condiviso, che divide le richieste per nome di dominio, utilizzando docker-compose. Qui ci sono informazioni passo-passo su come farlo.

Passo 1: contenitore nginx

È un'installazione molto semplice, ma questo passaggio richiede il maggior lavoro per configurare il server proxy inverso. Prima di tutto, 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, mappa la configurazione su nginx/nginx-vhost.conf e definisce uno spazio per i certificati generati come certificati autofirmati o utilizzando Certbot di Let’s Encrypt in /nginx/certificates. Qui dovrebbero trovarsi le cartelle per office.yourdomain.com e cloud.yourdomain.com con i file fullchain1.pem e privkey1.pem in ciascuna per la catena di certificati e la chiave privata del server, rispettivamente. Puoi leggere di più su come generare un certificato autofirmato qui. www.akadia.com/services/ssh_test_certificate.html (rinominare .key e .crt in .pem funziona senza conversione della struttura dei file per nginx).

Dopo di che abbiamo definito il file vhost. Prima definiamo il comportamento della porta 80 come semplice reindirizzamento su https, poiché non vogliamo consentire alcun traffico http.

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

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

Passo 2: servizio documenti

Ora dobbiamo aggiungere il contenitore del servizio documenti nel nostro docker-compose.yml. Non c'è molto da configurare qui.

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

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

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

Passo 3: NextCloud

Prima aggiungiamo i nuovi servizi:

servizi:
...
  db:
    immagine: mariadb
    comando: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    riavvio: sempre
    volumi:
      - /data/nextcloud_db:/var/lib/mysql
    ambiente:
      - MYSQL_ROOT_PASSWORD=#metti qui una password
      - MYSQL_PASSWORD=#metti qui un'altra password
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    immagine: nextcloud
    dipende_da:
      - db
      - onlyoffice
    riavvio: sempre

e aggiungiamo un link a nginx:

servizi:
...
  nginx:
    ...
    dipende_da:
      - app 

È ora di avviare i contenitori.

docker-compose up -d  

Dopo un po', nginx inizierà a reindirizzarti all'interfaccia esterna di NextCloud, che per impostazione predefinita è la pagina di configurazione. Dovrai inserire il nome utente e la password per il tuo primo utente amministratore e le credenziali del database che hai specificato in docker-compose.yml. Una volta completata la configurazione, potrai accedere. Nel nostro caso, l'attesa è durata quasi un minuto e ha richiesto un ulteriore aggiornamento della pagina di accesso, prima che potessimo entrare nel servizio cloud.

Finestra di impostazioni del servizio NextCloudImpostazione di NextCloud + ONLYOFFICE su un unico server utilizzando Docker

Passo 4: collegare NextCloud e ONLYOFFICE

In questa fase, sarà necessario installare l'applicazione per NextCloud che collega la funzionalità di ONLYOFFICE. Iniziamo dalla dashboard delle applicazioni nell'angolo in alto a destra del menu. Trova l'applicazione ONLYOFFICE (nella sezione "Office e testo" o utilizzando la ricerca), installala e attivala.

Dopo di che, vai su Impostazioni dal menu in alto a destra, e dovresti trovare l'elemento ONLYOFFICE nel menu a sinistra. Cliccaci sopra. Sarà necessario inserire gli indirizzi come indicato qui sotto.

Impostazioni dell'applicazione di integrazioneImpostazione di NextCloud + ONLYOFFICE su un unico server utilizzando Docker

Il primo indirizzo è utilizzato per fare riferimento a determinati file js e css direttamente dall'applicazione in esecuzione nel browser (è per questo che dobbiamo consentire l'accesso al servizio ONLYOFFICE tramite nginx). La chiave segreta non viene utilizzata, poiché abbiamo più fiducia nel livello di isolamento di Docker rispetto a una chiave di autenticazione permanente. Il terzo indirizzo è utilizzato dal container NextCloud per la connessione diretta all'API di ONLYOFFICE e utilizza il nome host interno predefinito di Docker. Infine, l'ultimo campo è utilizzato affinché ONLYOFFICE possa effettuare richieste all'API di NextCloud, utilizzando l'indirizzo IP esterno o l'indirizzo interno di Docker, se stai utilizzando le reti Docker, ma nel nostro caso non è utilizzato. Assicurati che le impostazioni del tuo firewall consentano questi tipi 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 tramite questa integrazione. Configura come ritieni opportuno.

Passaggio finale: dove cercare l'editor

Se torni alle cartelle del tuo cloud storage e fai clic su “+” per creare un nuovo file, avrai accesso a una nuova opzione per creare documenti, fogli di calcolo o presentazioni. Con essi potrai creare e modificare immediatamente questi tipi di file, utilizzando ONLYOFFICE.

Menu creazione fileImpostazione di NextCloud + ONLYOFFICE su un unico server utilizzando Docker

Supplemento 1

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

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster