NextCloud + ONLYOFFICE'ı Docker ile aynı sunucuya kurma

Hey Habr! Makalenin çevirisini dikkatlerinize sunuyorum "NextCloud ve ONLYOFFICE'ı Docker ile tek bir sunucuya kurma".

Teknoloji odaklı insanların hayatında Google Dokümanlar ve bulut depolama gibi çevrimiçi ofis paketlerinin değerini küçümsemek zordur. Teknoloji o kadar yaygınlaştı ki, uzun süredir ofis uygulamaları pazarını elinde bulunduran Microsoft bile son dönemde Office 365 web uygulamasını geliştirmeye ve kullanıcıları kendi hizmetlerinden yararlanmaları için abonelik modeline geçmeye ikna etmeye odaklandı. Cat altında kendi depolamalarını kurma ve yapılandırma süreciyle ilgilenenleri davet ediyoruz.

Bir süre önce, mikro işletmelerde kullanılmak üzere kolayca dağıtılabilecek bulut depolama çözümlerine ve açık kaynaklı web ofis paketlerine baktık. Tüm belgeleri çevrimiçi tutmanın ana motivasyonu, düşük işlem hacmine rağmen evrak işlerini minimumda tutmak ve iyi iş uygulamalarını hayata geçirmektir. Madalyonun diğer yüzü ise, bu hizmeti sağlamak için bir bulut sunucusu kiralamanın, onu doğrudan işletmenin tesislerinde depolamaktan daha az güvenli olmasıdır, çünkü sunucunuza veya trafiğinize fiziksel erişimi denetlemek için herhangi bir aracınız yoktur. Bu nedenle uçtan uca şifreleme ve açık kaynak yazılımlara da ihtiyaç duyulmaktadır.

Açık kaynak çözümlerle ilgili mevcut tüm bilgileri hesaba katarak, bulut depolama için geliştirilmiş iki aktif proje (son 12 ay boyunca git deposundaki taahhütlerle) bulduk: NextCloud ve OwnCloud ve tek aktif ONLYOFFICE ofis paketi. Her iki bulut depolama aracı da kabaca aynı işlevselliğe sahiptir ve NextCloud'u seçme kararı, yazılımla rahat bir kullanıcı etkileşimi için ONLYOFFICE ile entegre edilebileceğine dair kanıtların varlığına dayanıyordu. Ancak hizmetleri dağıtmaya başladığımızda yukarıdaki hizmetlerin entegrasyonuna ilişkin bilgi eksikliği ortaya çıktı. Nasıl entegre edileceğine dair 3 eğitim videosu bulduk:

Üç videodan hiçbiri ONLYOFFICE belge hizmetinin NextCloud ile aynı fiziksel sunucuya paylaşılan bir nginx ile kurulması sorusuna yanıt vermedi. Bunun yerine belge hizmeti API'si için ayrı bağlantı noktaları kullanmak gibi ayırma teknikleri kullandılar. Önerilen diğer bir seçenek de Belge Hizmeti için ayrı bir sunucu dağıtmak, bir erişim anahtarı (veri bulutuna erişim hakkını onaylayan önceden bilinen bir erişim anahtarı) ve TLS sertifikalarını yüklemek için Belge Hizmeti'nde yerleşik bir nginx örneğini manuel olarak yapılandırmaktı. Yukarıdaki yaklaşımların güvenli olmadığı ve yeterince etkili olmadığı düşünüldüğünden docker-compose kullanarak NextCloud, ONLYOFFICE ve istekleri alan adlarına göre ayıran ortak bir nginx'i entegre ettik. İşte bunun nasıl yapılacağına dair adım adım bilgiler.

Adım 1: nginx kapsayıcısı

Bu çok basit bir kurulumdur ancak bu adım, ters proxy sunucusunu yapılandırmak için en fazla çalışmayı gerektirir. İlk önce nginx:stable görüntüsü için docker-compose yapılandırmasını oluşturduk.

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

Bu, 80 ve 443 numaralı bağlantı noktalarının halka açık olduğu bir kapsayıcı oluşturur, yapılandırmayı nginx/nginx-vhost.conf ile eşler ve kendinden imzalı sertifikalar olarak veya /nginx/certificates içinde Let's encrypt'in certbot'unu kullanarak oluşturulan sertifikalar için bir depo tanımlar. Office.alanadiniz.com ve cloud.alanadiniz.com klasörleri bu konumda olmalıdır; sertifika zinciri ve sunucu özel anahtarı için her birinde sırasıyla fullchain1.pem ve privkey1.pem dosyaları bulunmalıdır. Kendinden imzalı bir sertifikanın nasıl oluşturulacağı hakkında daha fazla bilgiyi burada bulabilirsiniz. www.akadia.com/services/ssh_test_certificate.html (.key ve .crt'yi .pem olarak yeniden adlandırmak, dosya yapısını nginx'e dönüştürmeden çalışır).

Daha sonra vhost dosyasını tanımladık. Öncelikle 80 numaralı bağlantı noktasının davranışını https'ye basit bir yönlendirme olarak tanımlıyoruz, çünkü herhangi bir http trafiğine izin vermek istemiyoruz

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

Daha sonra hizmetlerimiz için 443 numaralı bağlantı noktasında iki sanal sunucu oluşturduk:

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

Adım 2: belge hizmeti

Şimdi belge servis kapsayıcısını docker-compose.yml dosyamıza eklememiz gerekiyor. Burada yapılandırılacak özel bir şey yok.

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

Ancak nginx kapsayıcısını belge hizmetine bağlamayı unutmayın:

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

Adım 3: Sonraki Bulut

İlk önce yeni hizmetler ekleyin:

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=#put some password here
      - MYSQL_PASSWORD=#put some other password here
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    depends_on:
      - db
      - onlyoffice
    restart: always

ve nginx'e bir bağlantı ekleyin:

services:
...
  nginx:
    ...
    depends_on:
      - app 

Şimdi konteynerleri yükleme zamanı.

docker-compose up -d  

Bir süre sonra nginx sizi varsayılan yapılandırma sayfası olan NextCloud ön ucuna yönlendirmeye başlayacaktır. İlk yönetici kullanıcınızın kullanıcı adını ve şifresini ve docker-compose.yml dosyasında sağladığınız veritabanı kimlik bilgilerini girmeniz gerekecektir. Kurulum tamamlandıktan sonra oturum açabileceksiniz. Bizim durumumuzda, bekleme neredeyse bir dakika sürdü ve bulut hizmetinde oturum açabilmemiz için oturum açma sayfasının ek olarak yenilenmesini gerektirdi.

NextCloud hizmeti ayarları penceresiNextCloud + ONLYOFFICE'ı Docker ile aynı sunucuya kurma

4. Adım: NextCloud ve ONLYOFFICE'ı bağlama

Bu adımda ONLYOFFICE işlevselliğini bağlayan NextCloud uygulamasını yüklemeniz gerekecektir. Menünün sağ üst köşesindeki uygulama kontrol paneliyle başlayalım. ONLYOFFICE uygulamasını bulun (Office ve metin altında veya aramayı kullanarak), yükleyin ve etkinleştirin.

Bundan sonra sağ üst köşedeki menüden Ayarlar'a gidin ve sol menüde ONLYOFFICE öğesini bulmalısınız. İçeri gir. Adresleri aşağıda belirtildiği gibi kaydetmeniz gerekecektir.

Entegrasyon uygulaması ayarlarıNextCloud + ONLYOFFICE'ı Docker ile aynı sunucuya kurma

İlk adres, bazı js ve css dosyalarına doğrudan tarayıcıda çalışan uygulamadan bağlanmak için kullanılır (ONLYOFFICE hizmetine nginx aracılığıyla erişimi açmak için ihtiyacımız olan şey budur). Docker izolasyon katmanına kalıcı kimlik doğrulama anahtarından daha fazla güvendiğimiz için gizli anahtar kullanılmıyor. Üçüncü adres, NextCloud kapsayıcısı tarafından doğrudan ONLYOFFICE API'ye bağlanmak için kullanılır ve Docker'ın varsayılan dahili ana bilgisayar adını kullanır. Son alan, eğer Docker ağları kullanıyorsanız ONLYOFFICE'ın harici bir IP adresi veya dahili bir Docker adresi kullanarak NextCloud API'sine geri istekte bulunabilmesi için kullanılır, ancak bu bizim durumumuzda kullanılmaz. Güvenlik duvarı ayarlarınızın bu tür etkileşimlere izin verdiğinden emin olun.

Kaydettikten sonra NextCloud bağlantıyı test edecek ve her şey doğruysa size entegrasyonla ilgili ayarları gösterecektir - örneğin, bu entegrasyon tarafından hangi tür dosyaların düzenlenebileceği. Uygun gördüğünüz şekilde özelleştirin.

Son adım: editörün nerede bulunacağı

Bulut depolama klasörlerinize geri dönüp yeni bir dosya oluşturmak için “+” işaretini tıklarsanız belge, e-tablo veya sunum oluşturmak için yeni bir seçeneğiniz olacaktır. Onların yardımıyla, ONLYOFFICE kullanarak bu tür dosyaları oluşturabilecek ve hemen düzenleyebileceksiniz.

Dosya oluşturma menüsüNextCloud + ONLYOFFICE'ı Docker ile aynı sunucuya kurma

Ek 1

Docker-compose.yml'nin tam içeriği burada bulunabilir: https://pastebin.com/z1Ti1fTZ

Kaynak: habr.com

Yorum ekle