การตั้งค่า NextCloud + ONLYOFFICE บนเซิร์ฟเวอร์เดียวกันกับ Docker

เฮ้ ฮาเบอร์! ฉันขอเสนอให้คุณทราบถึงการแปลบทความ "การตั้งค่า NextCloud และ ONLYOFFICE บนเซิร์ฟเวอร์เดียวด้วย Docker".

เป็นการยากที่จะประเมินคุณค่าของชุดโปรแกรมสำนักงานออนไลน์ เช่น Google Docs และพื้นที่เก็บข้อมูลบนคลาวด์ต่ำไปในชีวิตของผู้คนที่มุ่งเน้นด้านเทคโนโลยี เทคโนโลยีแพร่หลายมากจนแม้แต่ Microsoft ซึ่งครองตลาดแอพพลิเคชั่นสำนักงานมายาวนานก็ยังมุ่งเน้นไปที่การพัฒนาเว็บแอพพลิเคชั่น Office 365 และชักชวนผู้ใช้ให้เปลี่ยนไปใช้รูปแบบการสมัครสมาชิกเพื่อใช้บริการของตนเอง ขอเชิญผู้ที่สนใจกระบวนการติดตั้งและกำหนดค่าพื้นที่เก็บข้อมูลของตนเองภายใต้ cat

เมื่อไม่นานมานี้ เราได้ดูโซลูชันพื้นที่เก็บข้อมูลบนคลาวด์และชุดโปรแกรมสำนักงานบนเว็บแบบโอเพ่นซอร์สที่สามารถนำมาใช้งานในองค์กรขนาดเล็กได้อย่างง่ายดาย แรงจูงใจหลักในการเก็บรักษาเอกสารทั้งหมดไว้ทางออนไลน์คือ การเก็บเอกสารให้เหลือน้อยที่สุด และใช้หลักปฏิบัติทางธุรกิจที่ดี แม้ว่าจะมีธุรกรรมปริมาณน้อยก็ตาม ด้านพลิกของเหรียญคือการเช่าเซิร์ฟเวอร์คลาวด์เพื่อให้บริการนี้มีความปลอดภัยน้อยกว่าการจัดเก็บโดยตรงในสถานที่ขององค์กร เนื่องจากคุณไม่มีวิธีการตรวจสอบการเข้าถึงเซิร์ฟเวอร์หรือการรับส่งข้อมูลทางกายภาพของคุณ ดังนั้นจึงจำเป็นต้องมีการเข้ารหัสจากต้นทางถึงปลายทางและซอฟต์แวร์โอเพ่นซอร์สด้วย

เมื่อพิจารณาถึงข้อมูลที่มีอยู่ทั้งหมดเกี่ยวกับโซลูชันโอเพ่นซอร์ส เราพบโปรเจ็กต์ที่ใช้งานอยู่สองโปรเจ็กต์ (โดยมีการคอมมิตในพื้นที่เก็บข้อมูล git ในช่วง 12 เดือนที่ผ่านมา) ที่พัฒนาขึ้นสำหรับการจัดเก็บข้อมูลบนคลาวด์: NextCloud และ OwnCloud และชุดโปรแกรมสำนักงาน ONLYOFFICE ที่ใช้งานอยู่เพียงรายการเดียว เครื่องมือจัดเก็บข้อมูลบนคลาวด์ทั้งสองมีฟังก์ชันการทำงานที่เหมือนกันโดยประมาณ และการตัดสินใจเลือก NextCloud นั้นขึ้นอยู่กับหลักฐานที่มีอยู่ว่าสามารถรวมเข้ากับ ONLYOFFICE เพื่อการโต้ตอบของผู้ใช้กับซอฟต์แวร์ที่สะดวกสบาย อย่างไรก็ตาม เมื่อเราเริ่มใช้บริการ กลับไม่มีข้อมูลเกี่ยวกับการรวมบริการข้างต้นอย่างชัดเจน เราพบวิดีโอแนะนำ 3 รายการเกี่ยวกับวิธีการผสานรวม:

ไม่มีวิดีโอใดในสามวิดีโอที่ตอบคำถามเกี่ยวกับการติดตั้งบริการเอกสาร ONLYOFFICE บนเซิร์ฟเวอร์จริงเดียวกันกับ NextCloud ด้วย nginx ที่แชร์ แต่พวกเขาใช้เทคนิคการแยก เช่น การใช้พอร์ตแยกสำหรับ API บริการเอกสาร ข้อเสนอแนะอีกประการหนึ่งคือการปรับใช้เซิร์ฟเวอร์แยกต่างหากสำหรับ Document Service โดยกำหนดค่าอินสแตนซ์ nginx ที่สร้างไว้ใน Document Service ด้วยตนเองเพื่อติดตั้งคีย์การเข้าถึง (คีย์การเข้าถึงที่รู้จักล่วงหน้าซึ่งยืนยันสิทธิ์ในการเข้าถึงดาต้าคลาวด์) และใบรับรอง TLS วิธีการข้างต้นถือว่าไม่ปลอดภัยและไม่มีประสิทธิผลเพียงพอ ดังนั้นเราจึงรวม NextCloud, ONLYOFFICE และ nginx ทั่วไปที่แยกคำขอตามชื่อโดเมนโดยใช้ docker-compose นี่คือข้อมูลทีละขั้นตอนเกี่ยวกับวิธีการทำ

ขั้นตอนที่ 1: คอนเทนเนอร์ nginx

นี่เป็นการตั้งค่าที่ง่ายมาก แต่ขั้นตอนนี้ต้องใช้ความพยายามมากที่สุดในการกำหนดค่าพร็อกซีเซิร์ฟเวอร์ย้อนกลับ ขั้นแรกเราสร้างการกำหนดค่านักเทียบท่าสำหรับอิมเมจ 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

ซึ่งจะสร้างคอนเทนเนอร์ที่มีพอร์ต 80 และ 443 เปิดให้สาธารณะ แมปการกำหนดค่ากับ nginx/nginx-vhost.conf และกำหนดที่จัดเก็บสำหรับใบรับรองที่สร้างเป็นใบรับรองที่ลงนามด้วยตนเอง หรือใช้ Let's encrypt's certbot ใน /nginx/certificates ตำแหน่งนี้ควรมีโฟลเดอร์สำหรับ office.yourdomain.com และ cloud.yourdomain.com โดยมีไฟล์ fullchain1.pem และ privkey1.pem ในแต่ละไฟล์สำหรับสายใบรับรองและคีย์ส่วนตัวของเซิร์ฟเวอร์ ตามลำดับ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับวิธีสร้างใบรับรองที่ลงนามด้วยตนเองได้ที่นี่ www.akadia.com/services/ssh_test_certificate.html (การเปลี่ยนชื่อ .key และ .crt เป็น .pem ใช้งานได้โดยไม่ต้องแปลงโครงสร้างไฟล์สำหรับ nginx)

หลังจากนั้นเราก็กำหนดไฟล์ vhost ก่อนอื่นเรากำหนดลักษณะการทำงานของพอร์ต 80 เป็นการเปลี่ยนเส้นทางไปยัง https อย่างง่าย เนื่องจาก เราไม่ต้องการอนุญาตการรับส่งข้อมูล http

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

จากนั้นเราจึงสร้างเซิร์ฟเวอร์เสมือนสองตัวบนพอร์ต 443 สำหรับบริการของเรา:

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

ขั้นตอนที่ 2: บริการเอกสาร

ตอนนี้เราต้องเพิ่มคอนเทนเนอร์บริการเอกสารลงใน docker-compose.yml ของเรา ไม่มีอะไรพิเศษในการกำหนดค่าที่นี่

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

แต่อย่าลืมเชื่อมโยงคอนเทนเนอร์ nginx กับบริการเอกสาร:

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

ขั้นตอนที่ 3: ถัดไปคลาวด์

ขั้นแรก เพิ่มบริการใหม่:

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

และเพิ่มลิงค์ไปยัง nginx:

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

ถึงเวลาโหลดคอนเทนเนอร์แล้ว

docker-compose up -d  

หลังจากนั้นไม่นาน nginx จะเริ่มเปลี่ยนเส้นทางคุณไปยังส่วนหน้า NextCloud ซึ่งเป็นหน้าการกำหนดค่าเริ่มต้น คุณจะต้องป้อนชื่อผู้ใช้และรหัสผ่านสำหรับผู้ใช้ผู้ดูแลระบบคนแรกของคุณและข้อมูลรับรองฐานข้อมูลที่คุณระบุไว้ใน docker-compose.yml เมื่อการตั้งค่าเสร็จสมบูรณ์ คุณจะสามารถเข้าสู่ระบบได้ ในกรณีของเรา การรอใช้เวลาเกือบหนึ่งนาทีและจำเป็นต้องรีเฟรชหน้าเข้าสู่ระบบเพิ่มเติมก่อนจึงจะสามารถเข้าสู่ระบบบริการคลาวด์ได้

หน้าต่างการตั้งค่าบริการ NextCloudการตั้งค่า NextCloud + ONLYOFFICE บนเซิร์ฟเวอร์เดียวกันกับ Docker

ขั้นตอนที่ 4: เชื่อมต่อ NextCloud และ ONLYOFFICE

ในขั้นตอนนี้ คุณจะต้องติดตั้งแอปพลิเคชันสำหรับ NextCloud ซึ่งเชื่อมต่อฟังก์ชัน ONLYOFFICE เริ่มจากแผงควบคุมแอปพลิเคชันที่มุมขวาบนของเมนู ค้นหาแอป ONLYOFFICE (ใต้ Office & ข้อความหรือใช้การค้นหา) ติดตั้งและเปิดใช้งาน

หลังจากนั้นให้ไปที่การตั้งค่าผ่านเมนูที่มุมขวาบนและคุณจะพบรายการ ONLYOFFICE ในเมนูด้านซ้าย เข้าไปในนั้น. คุณจะต้องลงทะเบียนที่อยู่ตามที่ระบุไว้ด้านล่าง

การตั้งค่าแอปพลิเคชันการรวมการตั้งค่า NextCloud + ONLYOFFICE บนเซิร์ฟเวอร์เดียวกันกับ Docker

ที่อยู่แรกใช้เพื่อเชื่อมโยงไปยังไฟล์ js และ css บางไฟล์โดยตรงจากแอปพลิเคชันที่ทำงานในเบราว์เซอร์ (นี่คือสิ่งที่เราจำเป็นต้องเปิดการเข้าถึงบริการ ONLYOFFICE ผ่าน nginx) ไม่ได้ใช้คีย์ลับเนื่องจากเราเชื่อถือเลเยอร์แยกนักเทียบท่ามากกว่าคีย์การรับรองความถูกต้องถาวร ที่อยู่ที่สามถูกใช้โดยคอนเทนเนอร์ NextCloud เพื่อเชื่อมต่อโดยตรงกับ ONLYOFFICE API และใช้ชื่อโฮสต์ภายในเริ่มต้นจาก Docker ฟิลด์สุดท้ายถูกใช้เพื่อให้ ONLYOFFICE สามารถส่งคำขอกลับไปยัง NextCloud API โดยใช้ที่อยู่ IP ภายนอกหรือที่อยู่ Docker ภายใน หากคุณใช้เครือข่าย Docker แต่ไม่ได้ใช้ในกรณีของเรา ตรวจสอบให้แน่ใจว่าการตั้งค่าไฟร์วอลล์ของคุณอนุญาตการโต้ตอบประเภทนี้

หลังจากบันทึก NextCloud จะทดสอบการเชื่อมต่อ และหากทุกอย่างถูกต้อง จะแสดงการตั้งค่าที่เกี่ยวข้องกับการรวมระบบ - ตัวอย่างเช่น ไฟล์ประเภทใดที่สามารถแก้ไขได้โดยการรวมระบบนี้ ปรับแต่งตามที่คุณเห็นสมควร

ขั้นตอนสุดท้าย: จะหาบรรณาธิการได้ที่ไหน

หากคุณกลับไปที่โฟลเดอร์ที่เก็บข้อมูลบนคลาวด์และคลิกที่ “+” เพื่อสร้างไฟล์ใหม่ คุณจะมีตัวเลือกใหม่ในการสร้างเอกสาร สเปรดชีต หรืองานนำเสนอ ด้วยความช่วยเหลือของพวกเขา คุณจะสร้างและสามารถแก้ไขไฟล์ประเภทนี้ได้ทันทีโดยใช้ ONLYOFFICE

เมนูการสร้างไฟล์การตั้งค่า NextCloud + ONLYOFFICE บนเซิร์ฟเวอร์เดียวกันกับ Docker

อาหารเสริม 1

เนื้อหาทั้งหมดของ docker-compose.yml สามารถพบได้ที่นี่: https://pastebin.com/z1Ti1fTZ

ที่มา: will.com

เพิ่มความคิดเห็น