Hej, Habr! Jeg præsenterer hermed oversættelsen af artiklen .
Det er svært at undervurdere fordelene ved online kontorpakker som Google Docs og cloud-lagring i livet for teknisk orienterede mennesker. Teknologierne har fået så bred udbredelse, at selv Microsoft, som længe har domineret markedet for kontorprogrammer, for nylig har fokuseret på at udvikle webapplikationen Office 365 og overbevise brugerne om at skifte til en abonnementsmodel for deres tjenester. Dem, der er interesseret i processen med at installere og konfigurere deres egen lagring, inviteres til at læse videre.
For nogle tid siden blev vi bekendt med løsninger til cloud-lagring og åbne kontor webapplikationer, som kunne implementeres forholdsvis nemt i små virksomheder. Den primære motivation for at opbevare al dokumentation online er at minimere mængden af papirarbejde og implementere positive forretningspraksis, på trods af det lille antal operationer. Den anden side af sagen er, at leje af en cloud-server til at tilbyde denne service er mindre sikkert end lagring direkte på virksomhedens område, da du ikke har nogen midler til at revidere fysisk adgang til din server eller trafikken. Derfor kræves der også end-to-end kryptering og software med åbent kildekode.
Når vi tager hensyn til al tilgængelig information om løsninger med åbent kildekode, fandt vi to aktive projekter (med commits i git-repositories de seneste 12 måneder), der er udviklet til cloud-lagring: NextCloud og OwnCloud, samt den eneste aktive pakke af kontorprogrammer, ONLYOFFICE. Begge cloud-lagringsløsninger har omtrent den samme funktionalitet, og beslutningen om at vælge NextCloud var baseret på, at der findes beviser for, at det kan integreres med ONLYOFFICE for en behagelig interaktion med softwaren. However, da vi begyndte at implementere tjenesterne, blev det tydeligt, at der var mangel på information om integrationen af de nævnte tjenester. Vi fandt 3 undervisningsvideoer om, hvordan man udfører integration:
Ingen af de tre videoer besvarede spørgsmålet om installation af ONLYOFFICE-dokumenttjenesten på den samme fysiske server som NextCloud med en fælles nginx. I stedet benyttede de teknologier til adskillelse, såsom brug af separate porte til dokumenttjeneste-API'en. En anden foreslået mulighed var at implementere en separat server til dokumenttjenesten med manuel konfiguration af nginx-forekomsten, der er indbygget i dokumenttjenesten, til installation af adgangsnøglen (en forudkendt adgangsnøgle, der bekræfter adgangen til dataskyen) og TLS-certifikater. De ovenfor beskrevne tilgange blev anset for usikre og utilstrækkeligt effektive, og derfor gennemførte vi integrationen af NextCloud, ONLYOFFICE og den fælles nginx, som deler forespørgsler efter domænenavne ved hjælp af docker-compose. Her følger trin-for-trin information om, hvordan man gør dette.
Trin 1: nginx-container
Dette er en meget enkel installation, men dette trin kræver mest arbejde til konfiguration af omvendt proxyserver. Først oprettede vi docker-compose-konfigurationen til nginx:stable-billedet.
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
Dette opretter en container med porte 80 og 443 åbne for offentlig adgang, giver kortlægningen af konfigurationen til nginx/nginx-vhost.conf og definerer opbevaringen til certifikater, der genereres som selvsignerede certifikater eller ved hjælp af Certbot fra Let’s Encrypt i /nginx/certificates. Her skal der være mapper til office.ditdomæne.com og cloud.ditdomæne.com med filerne fullchain1.pem og privkey1.pem i hver til kæden af certifikater og serverens private nøgle henholdsvis. Du kan læse mere om, hvordan man genererer et selvsigneret certifikat her. (omdøbning af .key og .crt til .pem fungerer uden konvertering af filstrukturen til nginx).
Herefter definerede vi vhost-filen. Først definerer vi opførslen af port 80 som en simpel omdirigering til https, da vi ikke ønsker at tillade nogen http-trafik.
server {
listen 80;
location / {
return 301
https://$host$request_uri;
}
}
Derefter oprettede vi to virtuelle servere på port 443 til vores tjenester:
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;
}
}
Trin 2: dokumenttjeneste
Nu skal vi tilføje containeren til dokumenttjenesten i vores docker-compose.yml. Der er ikke meget at konfigurere her.
services:
...
onlyoffice:
image: onlyoffice/documentserver
restart: always
Men glem ikke at forbinde nginx-containeren med dokumenttjenesten:
services:
...
nginx:
...
depends_on:
- onlyoffice
Trin 3: NextCloud
Først tilføjer vi nye tjenester:
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=#indsæt en adgangskode her
- MYSQL_PASSWORD=#indsæt en anden adgangskode her
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
depends_on:
- db
- onlyoffice
restart: always
og tilføjer et link til nginx:
services:
...
nginx:
...
depends_on:
- app
Nu er det tid til at starte containerne.
docker-compose up -d
Efter et stykke tid vil nginx begynde at omdirigere dig til NextCloud's offentlige grænseflade, som som standard er konfigurationssiden. Du skal indtaste brugernavnet og adgangskoden for din første administratorbruger og databaseoplysningerne, som du angav i docker-compose.yml. Når opsætningen er færdig, kan du logge ind. I vores tilfælde tog ventetiden næsten et minut og krævede en ekstra opdatering af login-siden, før vi kunne få adgang til cloud-tjenesten.
Indstillinger for NextCloud-tjenesten
Trin 4: forbindelse mellem NextCloud og ONLYOFFICE
På dette trin skal du installere appen til NextCloud, som forbinder ONLYOFFICE-funktionaliteten. Lad os starte fra applikationspanelet i øverste højre hjørne af menuen. Find ONLYOFFICE-appen (i sektionen "Office & text" eller ved at bruge søgefunktionen), installer og aktiver den.
Derefter skal du gå til Indstillinger gennem menuen i øverste højre hjørne, og du skal finde ONLYOFFICE-elementet i venstre menu. Klik ind på det. Du skal indtaste adresserne som angivet nedenfor.
Indstillinger for integrationsapplikationen
Den første adresse bruges til at linke til nogle js- og css-filer direkte fra den kørende applikation i browseren (det er derfor, vi skal åbne adgangen til ONLYOFFICE-tjenesten via nginx). Den hemmelige nøgle bruges ikke, da vi stoler mere på Docker-isoleringslaget end på den permanente autentificeringsnøgle. Den tredje adresse bruges af NextCloud-containeren til direkte at forbinde til ONLYOFFICE API'en, og den benytter det interne værtsnavn som standard fra Docker. Det sidste felt bruges til, at ONLYOFFICE kan lave forespørgsler tilbage til NextCloud API'en, ved at bruge den eksterne IP-adresse eller den interne Docker-adresse, hvis du bruger Docker-netværk, men i vores tilfælde anvendes dette ikke. Sørg for, at din firewall-konfiguration tillader denne type interaktion.
Når du har gemt, vil NextCloud teste forbindelsen, og hvis alt er korrekt, vil du se indstillingerne relateret til integrationen - for eksempel, hvilke filtyper der kan redigeres med denne integration. Tilpas dem som du finder passende.
Afsluttende trin: hvor finder man editoren
Hvis du går tilbage til mapperne i din cloud-lagring og klikker på “+” for at oprette en ny fil, vil du få adgang til en ny mulighed for at oprette et dokument, et regneark eller en præsentation. Med disse kan du oprette og straks redigere de nævnte filtyper ved hjælp af ONLYOFFICE.
Menu til filoprettelse
Bilag 1
Det fulde indhold af docker-compose.yml kan findes her:
Kilde: habr.com
