Hallo, Habr! Ik presenteer je de vertaling van het artikel .
Het is moeilijk om de voordelen van online kantoorapplicatiepakketten zoals Google Docs en cloudopslag te onderschatten in het leven van technisch georiënteerde mensen. Technologieën zijn zo wijdverspreid dat zelfs Microsoft, dat lange tijd de markt voor kantoorapplicaties domineerde, zich recentelijk heeft gericht op de ontwikkeling van de webapplicatie Office 365 en gebruikers probeert te overtuigen over te stappen op een abonnementsmodel voor hun eigen diensten. Wij nodigen degenen die geïnteresseerd zijn in het proces van het opzetten en configureren van hun eigen opslag uit om verder te lezen.
Een tijdje geleden hebben we gekeken naar oplossingen voor cloudopslag en open source kantoorwebapplicatiepakketten die relatief gemakkelijk kunnen worden geïmplementeerd voor gebruik in een microbedrijf. De belangrijkste motivatie voor het online opslaan van alle documentatie is het verminderen van papierwerk tot een minimum en het implementeren van positieve zakelijke praktischheden, ondanks het kleine aantal transacties. De keerzijde is dat het huren van een cloudserver voor het leveren van deze dienst minder veilig is dan opslag op het terrein van het bedrijf, omdat je geen middelen hebt om de fysieke toegang tot je server of het verkeer te auditen. Daarom is ook end-to-end encryptie en software met open source vereist.
Gezien alle beschikbare informatie over open source oplossingen hebben we twee actieve projecten gevonden (met commits in git-repositories in de afgelopen 12 maanden), ontworpen voor cloudopslag: NextCloud en OwnCloud, en het enige actieve kantoorapplicatiepakket ONLYOFFICE. Beide cloudoplossingen hebben ongeveer dezelfde functionaliteit, en de beslissing om NextCloud te kiezen was gebaseerd op het bewijs dat het kan worden geïntegreerd met ONLYOFFICE voor een comfortabele gebruikerservaring. Echter, toen we begonnen met het implementeren van de diensten, werd het tekort aan informatie over de integratie van deze diensten duidelijk. We vonden 3 instructievideo's over hoe je de integratie kunt uitvoeren:
Geen van de drie video's beantwoordde de vraag over de installatie van de ONLYOFFICE documentenservice op dezelfde fysieke server als NextCloud met een gedeelde nginx. In plaats daarvan gebruikten ze technologieën voor segmentatie, zoals het gebruik van aparte poorten voor de documentenservice API. Een andere voorgestelde optie was het uitrollen van een aparte server voor de documentenservice met handmatige configuratie van de ingebouwde nginx-instantie voor het installeren van de toegangs sleutel (een vooraf bekende toegangssleutel die het recht op toegang tot de datacloud bevestigt) en TLS-certificaten. De bovengenoemde benaderingen werden als onveilig en onvoldoende effectief beschouwd, daarom hebben we de integratie van NextCloud, ONLYOFFICE en de gedeelde nginx uitgevoerd, die verzoeken op basis van domeinnamen segmenten, met behulp van docker-compose. Hier is stapsgewijze informatie over hoe dit te doen.
Stap 1: nginx-container
Dit is een erg eenvoudige installatie, maar deze stap vereist de meeste werk om de configuratie van de omgekeerde proxyserver te voltooien. Eerst hebben we een docker-compose-configuratie voor de afbeelding nginx:stable gemaakt.
version: '2'
services:
nginx:
image : nginx:stable
restart: altijd
volumes:
- ./nginx/nginx-vhost.conf:/etc/nginx/conf.d/default.conf:ro
- ./nginx/certificates:/mycerts
ports:
- 443:443
- 80:80
Dit creëert een container met poorten 80 en 443, geopend voor publiek toegankelijke toegang, maakt een mapping van de configuratie naar nginx/nginx-vhost.conf en definieert de opslag voor certificaten, gegenereerd als zelfondertekende certificaten of met behulp van Certbot van Let’s Encrypt in /nginx/certificates. Op deze locatie moeten de mappen voor office.yourdomain.com en cloud.yourdomain.com met de bestanden fullchain1.pem en privkey1.pem in elk voor de certificaatketen en privésleutel van de server respectievelijk worden geplaatst. Je kunt meer lezen over hoe je een zelfondertekend certificaat kunt genereren hier. (het hernoemen van .key en .crt naar .pem werkt zonder conversie van de bestandstructuur voor nginx).
Daarna hebben we het vhost-bestand gedefinieerd. Eerst definiëren we het gedrag van poort 80 als een eenvoudige omleiding naar https, aangezien we geen http-verkeer willen toestaan.
server {
listen 80;
location / {
return 301
https://$host$request_uri;
}
}
Vervolgens hebben we twee virtuele servers op poort 443 voor onze diensten gecreëerd:
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;
}
}
Stap 2: documentservice
Nu moeten we de container van de documentservice toevoegen aan onze docker-compose.yml. Hier is er niet veel te configureren.
services:
...
onlyoffice:
image: onlyoffice/documentserver
restart: always
Vergeet niet de nginx-container met de documentservice te verbinden:
services:
...
nginx:
...
depends_on:
- onlyoffice
Stap 3: NextCloud
Laten we eerst de nieuwe services toevoegen:
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=#zet hier een wachtwoord
- MYSQL_PASSWORD=#zet hier een ander wachtwoord
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
depends_on:
- db
- onlyoffice
restart: always
en we voegen een link naar nginx toe:
services:
...
nginx:
...
depends_on:
- app
Het is tijd om de containers op te starten.
docker-compose up -d
Na een tijdje zal nginx je doorverwijzen naar de externe interface van NextCloud, die standaard de configuratiepagina is. Je moet de gebruikersnaam en het wachtwoord voor je eerste beheerdersaccount invoeren, evenals de database-inloggegevens die je in docker-compose.yml hebt opgegeven. Zodra de setup is voltooid, kun je inloggen. In ons geval duurde het bijna een minuut en had het een extra pagina-refresh nodig voordat we toegang kregen tot de cloudservice.
Instellingenvenster van de NextCloud-service
Stap 4: verbinding maken tussen NextCloud en ONLYOFFICE
In deze stap moet u de NextCloud-app installeren die de functionaliteit van ONLYOFFICE verbindt. Laten we beginnen met het applicatiepaneel in de rechterbovenhoek van het menu. Zoek de ONLYOFFICE-app (in de sectie 'Office en tekst' of via de zoekfunctie), installeer deze en activeer hem.
Daarna gaat u naar Instellingen via het menu in de rechterbovenhoek, en u zou het element ONLYOFFICE in het linkermenu moeten vinden. Klik daarop. U moet adressen invoeren zoals hieronder aangegeven.
Instellingen van de integratie-app
Het eerste adres wordt gebruikt om te linken naar enkele js- en css-bestanden rechtstreeks vanuit de in de browser gehoste toepassing (dit is waarom we toegang tot de ONLYOFFICE-dienst via nginx moeten openen). De geheime sleutel wordt niet gebruikt, omdat we meer vertrouwen hebben in de isolatielaag van Docker dan in een permanente authenticatiesleutel. Het derde adres wordt door de NextCloud-container gebruikt voor directe verbinding met de ONLYOFFICE API, en het maakt gebruik van de standaard interne hostnaam van Docker. Het laatste veld is bedoeld zodat ONLYOFFICE terug kan verzoeken naar de NextCloud API, met behulp van het externe IP-adres of het interne Docker-adres, als u Docker-netwerken gebruikt, maar in ons geval wordt dit niet gebruikt. Zorg ervoor dat uw firewall-instellingen deze soorten interacties toestaan.
Na het opslaan test NextCloud de verbinding en als alles correct is, toont het u de instellingen met betrekking tot de integratie - bijvoorbeeld welke bestandstypen met deze integratie kunnen worden bewerkt. Stel ze in zoals u nodig acht.
Laatste stap: waar de editor te vinden
Als u terugkeert naar de mappen van uw cloudopslag en op '+' klikt om een nieuw bestand aan te maken, is er een nieuwe optie om een document, spreadsheet of presentatie te maken. Hiermee kunt u deze bestandstypen maken en onmiddellijk bewerken met ONLYOFFICE.
Bestand aanmaken menu
Aanvulling 1
De volledige inhoud van docker-compose.yml kunt u hier vinden:
Bron: habr.com
