Ciao, Habr! Vi presento la traduzione dell'articolo .
È difficile sottovalutare l'utilità delle suite di applicazioni per ufficio online come Google Docs e dei servizi di archiviazione cloud nella vita delle persone con orientamento tecnico (tech-oriented people). Le tecnologie sono diventate così diffuse che anche Microsoft, che ha dominato a lungo il mercato delle applicazioni per ufficio, si è recentemente concentrata sullo sviluppo dell'app web Office 365 e sulla convinzione degli utenti a passare a un modello di abbonamento per utilizzare i propri servizi. Coloro che sono interessati al processo di installazione e configurazione del proprio spazio di archiviazione sono invitati a continuare a leggere.
Qualche tempo fa, abbiamo esaminato le soluzioni per l'archiviazione cloud e le suite di applicazioni web per ufficio open source, che potrebbero essere facilmente implementate per l'uso in microimprese. La motivazione principale per conservare tutta la documentazione online è ridurre al minimo il volume della carta e promuovere buone pratiche aziendali, nonostante il basso volume di operazioni. Il rovescio della medaglia è che l'affitto di un server cloud per fornire questo servizio è meno sicuro rispetto a conservare i dati direttamente presso l'azienda, poiché non si dispone di strumenti per auditare l'accesso fisico al proprio server o al traffico. Di conseguenza, è anche necessario implementare la crittografia end-to-end e utilizzare software open source.
Tenendo conto di tutte le informazioni disponibili sulle soluzioni open source, abbiamo trovato due progetti attivi (con commit nei repository git negli ultimi 12 mesi) sviluppati per lo storage cloud: NextCloud e OwnCloud, e l'unico pacchetto di applicazioni per ufficio attivo è ONLYOFFICE. Entrambi gli strumenti per lo storage cloud hanno funzionalità simili, e la decisione di scegliere NextCloud è stata basata sull'esistenza di prove che dimostrano che può essere integrato con ONLYOFFICE per un'interazione comoda dell'utente con il software. Tuttavia, quando abbiamo iniziato a distribuire i servizi, la mancanza di informazioni sull'integrazione dei servizi sopra citati è diventata evidente. Abbiamo trovato 3 video tutorial su come integrare:
Nessuno dei tre video ha risposto alla domanda su come installare il servizio di documenti ONLYOFFICE sullo stesso server fisico di NextCloud con nginx condiviso. Invece, hanno utilizzato tecnologie di separazione, come l'uso di porte separate per l'api del servizio documenti. Un'altra opzione proposta era il dispiegamento di un server separato per il servizio documenti con configurazione manuale dell'istanza nginx integrata nel servizio documenti per l'installazione della chiave di accesso (una chiave di accesso predefinita che conferma il diritto di accesso al cloud dei dati) e dei certificati TLS. Gli approcci descritti sopra sono stati considerati non sicuri e non sufficientemente efficienti, quindi abbiamo effettuato l'integrazione di NextCloud, ONLYOFFICE e nginx condiviso, il quale separa le richieste per nomi di dominio, utilizzando docker-compose. Di seguito sono riportate le informazioni passo passo su come farlo.
Passo 1: container nginx
Questa è un'installazione molto semplice, ma questo passaggio richiede il maggior lavoro per configurare il server proxy inverso. Prima abbiamo creato una 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 per l'accesso pubblico, mappa la configurazione su nginx/nginx-vhost.conf e definisce uno spazio di archiviazione per i certificati, generati come certificati autofirmati o utilizzando Certbot da Let's Encrypt in /nginx/certificates. In questo punto devono 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 (rinominare .key e .crt in .pem funziona senza conversione della struttura dei file per nginx).
Dopo di ciò abbiamo definito il file vhost. Inizialmente definiamo il comportamento della porta 80 come semplice reindirizzamento a 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;
}
}
Passaggio 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 dimenticare di collegare il contenitore nginx con il servizio documenti:
services:
...
nginx:
...
depends_on:
- onlyoffice
Passaggio 3: NextCloud
Iniziamo aggiungendo 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=#inserisci qui una password
- MYSQL_PASSWORD=#inserisci qui un'altra password
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
depends_on:
- db
- onlyoffice
restart: always
e aggiungiamo un collegamento a nginx:
servizi:
...
nginx:
...
depende_da:
- app
Ora è il momento di caricare i contenitori.
docker-compose up -d
Dopo qualche istante, 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 effettuare il login. Nel nostro caso, l'attesa è durata quasi un minuto ed è stato necessario un ulteriore aggiornamento della pagina di accesso prima di poter entrare nel servizio cloud.
Finestra delle impostazioni del servizio NextCloud
Passaggio 4: connessione tra NextCloud e ONLYOFFICE
In questo passaggio dovrai installare l'applicazione per NextCloud che collega le funzionalità di ONLYOFFICE. Iniziamo dal pannello di controllo delle applicazioni nell'angolo in alto a destra del menu. Cerca l'applicazione ONLYOFFICE (nella sezione "Ufficio e testo" o utilizzando la ricerca), installala e attivala.
Dopo di che, vai su Impostazioni attraverso il menu in alto a destra e dovresti trovare l'elemento ONLYOFFICE nel menu a sinistra. Accedi a esso. Dovrai inserire gli indirizzi, come indicato di seguito.
Impostazioni dell'applicazione di integrazione
Il primo indirizzo viene utilizzato per collegarsi direttamente ad alcuni file js e css dall'applicazione in esecuzione nel browser (è per questo che dobbiamo aprire l'accesso al servizio ONLYOFFICE tramite nginx). La chiave segreta non viene utilizzata perché ci fidiamo più dello strato di isolamento Docker rispetto a una chiave di autenticazione permanente. Il terzo indirizzo è utilizzato dal contenitore NextCloud per la connessione diretta all'API di ONLYOFFICE e utilizza il nome host interno predefinito di Docker. L'ultimo campo è utilizzato per consentire a ONLYOFFICE di effettuare richieste indietro all'API di NextCloud, utilizzando l'indirizzo IP esterno o l'indirizzo interno di Docker, se stai utilizzando reti Docker, ma nel nostro caso non viene utilizzato. Assicurati che le impostazioni del tuo firewall permettano 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 necessario.
Passo finale: dove cercare l'editor
Se torni nelle cartelle del tuo cloud e fai clic su “+” per creare un nuovo file, ti verrà offerta una nuova opzione per creare un documento, un foglio di calcolo o una presentazione. Con esse potrai creare ed editare immediatamente questi tipi di file, utilizzando ONLYOFFICE.
Menu di creazione file
Supplemento 1
Il contenuto completo di docker-compose.yml può essere trovato qui:
Fonte: habr.com
