OnlyOffice mit docker-compose, systemd und nginx einrichten

English Deutsch

In diesem Setup zeigen wir, wie man OnlyOffice mit nginx als Reverse-Proxy, docker-compose zum Ausführen und Konfigurieren des OnlyOffice-Images und systemd zum automatischen Starten und Neustarten der OnlyOffice-Instanz einrichtet. Der Betrieb in einer Reverse-Proxy-Konfiguration ermöglicht es Ihnen, andere Domains auf derselben IP-Adresse zu betreiben und eine zentrale Verwaltung von Let’s Encrypt SSL-Zertifikaten zu haben.

Wir richten die Instanz in /opt/onlyoffice auf Port 2291 ein.

Speichern Sie diese Datei als /opt/onlyoffice/docker-compose.yml und vergessen Sie nicht, JWT_SECRET in ein zufälliges Passwort zu ändern!

docker-compose.yml
services:
  onlyoffice-documentserver:
    image: onlyoffice/documentserver:latest
    restart: always
    environment:
      - JWT_ENABLED=true
      - JWT_SECRET=Shei9AifuZ4ze7udahG2seb3aa6ool
    ports:
      - 2291:80
    volumes:
      - ./onlyoffice/data:/var/www/onlyoffice/Data
      - ./onlyoffice/lib:/var/lib/onlyoffice
      - ./onlyoffice/logs:/var/log/onlyoffice
      - ./onlyoffice/db:/var/lib/postgresql

Nun können wir den systemd-Dienst erstellen. Ich habe ihn mit TechOverflows docker-compose systemd .service generator erstellt. Speichern Sie ihn in /etc/systemd/system/OnlyOffice.service:

OnlyOffice.service
[Unit]
Description=OnlyOffice
Requires=docker.service
After=docker.service

[Service]
Restart=always
User=root
Group=docker
# Container herunterfahren (falls laufend), wenn Unit gestoppt wird
ExecStartPre=/usr/local/bin/docker-compose -f /opt/onlyoffice/docker-compose.yml down
# Container starten, wenn Unit gestartet wird
ExecStart=/usr/local/bin/docker-compose -f /opt/onlyoffice/docker-compose.yml up
# Container stoppen, wenn Unit gestoppt wird
ExecStop=/usr/local/bin/docker-compose -f /opt/onlyoffice/docker-compose.yml down

[Install]
WantedBy=multi-user.target

Nun können wir den Dienst aktivieren & starten mit

onlyoffice_systemd_enable.sh
sudo systemctl enable OnlyOffice.service
sudo systemctl start OnlyOffice.service

Nun erstellen wir die nginx-Konfiguration in /etc/nginx/sites-enabled/OnlyOffice.conf. Offensichtlich müssen Sie mindestens das

OnlyOffice.conf
server {
    server_name onlyoffice.mydomain.com;

    access_log /var/log/nginx/onlyoffice.access_log;
    error_log /var/log/nginx/onlyoffice.error_log info;

    location / {
        proxy_pass http://127.0.0.1:2291;
        proxy_http_version 1.1;
        proxy_read_timeout 3600s;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        add_header X-Frontend-Host $host;
    }

    listen 80;
}

Überprüfen Sie die Gültigkeit der nginx-Konfiguration mit

nginx_test_reload.sh
sudo nginx -t

und falls sie nicht fehlschlägt, laden Sie nginx neu mit

nginx_reload.sh
sudo service nginx reload

Nun empfehle ich, certbot zu verwenden, um die TLS-Verschlüsselung auf Ihrer Domain zu aktivieren. Sie sollten mit diesen Schritten bereits vertraut sein ; mein Ansatz ist sudo apt -y install python-certbot-nginx, dann certbot --nginx --staging, um zuerst ein Staging-Zertifikat zu erhalten, um eine Blockierung zu vermeiden, falls es Probleme gibt, und nach dem Erhalt des Staging-Zertifikats certbot --nginx und Renew & replace cert verwenden. Führen Sie danach sudo service nginx reload aus und prüfen Sie, ob Ihre Domain mit HTTPS funktioniert. Sie sollten immer die Weiterleitung zu HTTPS wählen, wenn certbot Sie fragt.


Check out similar posts by category: Docker, Nginx