Docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ์„œ๋ฒ„์—์„œ NextCloud + ONLYOFFICE ์„ค์ •

ํ—ค์ด ํ•˜๋ธŒ๋ฅด! ๋‚˜๋Š” ๊ธฐ์‚ฌ์˜ ๋ฒˆ์—ญ์„ ๋‹น์‹ ์˜ ๊ด€์‹ฌ์— ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค "Docker๋กœ ๋‹จ์ผ ์„œ๋ฒ„์— NextCloud ๋ฐ ONLYOFFICE ์„ค์ •".

๊ธฐ์ˆ  ์ง€ํ–ฅ์ ์ธ ์‚ฌ๋žŒ๋“ค์˜ ์‚ถ์—์„œ Google ๋ฌธ์„œ๋„๊ตฌ ๋ฐ ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€์™€ ๊ฐ™์€ ์˜จ๋ผ์ธ ์˜คํ”ผ์Šค ์ œํ’ˆ๊ตฐ์˜ ๊ฐ€์น˜๋ฅผ ๊ณผ์†Œํ‰๊ฐ€ํ•˜๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์˜ค๋žซ๋™์•ˆ ์˜คํ”ผ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์žฅ์„ ์žฅ์•…ํ•ด ์˜จ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์กฐ์ฐจ ์ตœ๊ทผ ์˜คํ”ผ์Šค 365 ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•˜๊ณ  ์‚ฌ์šฉ์ž๋“ค์ด ์ž์‹ ์˜ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ๋… ๋ชจ๋ธ๋กœ ์ „ํ™˜ํ•˜๋„๋ก ์„ค๋“ํ•˜๋Š” ๋ฐ ์ฃผ๋ ฅํ•˜๊ณ  ์žˆ๋‹ค. cat์—์„œ ์ž์‹ ์˜ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๊ณผ์ •์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ๋ถ„๋“ค์„ ์ดˆ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์–ผ๋งˆ ์ „์— ์šฐ๋ฆฌ๋Š” ์†Œ๊ทœ๋ชจ ๊ธฐ์—…์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€ ์†”๋ฃจ์…˜๊ณผ ์˜คํ”ˆ ์†Œ์Šค ์›น ์˜คํ”ผ์Šค ์ œํ’ˆ๊ตฐ์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฌธ์„œ๋ฅผ ์˜จ๋ผ์ธ์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ์ฃผ์š” ๋™๊ธฐ๋Š” ๊ฑฐ๋ž˜๋Ÿ‰์ด ์ ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์„œ๋ฅ˜ ์ž‘์—…์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์ข‹์€ ๋น„์ฆˆ๋‹ˆ์Šค ๊ด€ํ–‰์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋™์ „์˜ ๋‹ค๋ฅธ ๋ฉด์€ ์ด ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ์ž„๋Œ€ํ•˜๋Š” ๊ฒƒ์ด ์„œ๋ฒ„๋‚˜ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ ๋ฌผ๋ฆฌ์  ์•ก์„ธ์Šค๋ฅผ ๊ฐ์‚ฌํ•  ์ˆ˜๋‹จ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์—… ๊ตฌ๋‚ด์— ์ง์ ‘ ์ €์žฅํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋œ ์•ˆ์ „ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ข…๋‹จ ๊ฐ„ ์•”ํ˜ธํ™” ๋ฐ ์˜คํ”ˆ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์˜คํ”ˆ ์†Œ์Šค ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€์šฉ์œผ๋กœ ๊ฐœ๋ฐœ๋œ ๋‘ ๊ฐœ์˜ ํ™œ์„ฑ ํ”„๋กœ์ ํŠธ(์ง€๋‚œ 12๊ฐœ์›” ๋™์•ˆ git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ปค๋ฐ‹ ํฌํ•จ)์ธ NextCloud ๋ฐ OwnCloud์™€ ์œ ์ผํ•œ ํ™œ์„ฑ ONLYOFFICE ์˜คํ”ผ์Šค ์ œํ’ˆ๊ตฐ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋‘ ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€ ๋„๊ตฌ๋Š” ๊ฑฐ์˜ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ NextCloud๋ฅผ ์„ ํƒํ•˜๊ธฐ๋กœ ํ•œ ๊ฒฐ์ •์€ ํŽธ์•ˆํ•œ ์‚ฌ์šฉ์ž ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ„ํ•ด ONLYOFFICE์™€ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ฆ๊ฑฐ์˜ ์กด์žฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ์œ„์˜ ์„œ๋น„์Šค ํ†ตํ•ฉ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ํ†ตํ•ฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ 3๊ฐœ์˜ ํŠœํ† ๋ฆฌ์–ผ ๋น„๋””์˜ค๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

๊ณต์œ  nginx๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ NextCloud์™€ ๋™์ผํ•œ ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„์— ONLYOFFICE ๋ฌธ์„œ ์„œ๋น„์Šค๋ฅผ ์„ค์น˜ํ•˜๋Š” ์งˆ๋ฌธ์— ์„ธ ๊ฐœ์˜ ๋น„๋””์˜ค ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ๋Œ€๋‹ตํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋ฌธ์„œ ์„œ๋น„์Šค API์— ๋ณ„๋„์˜ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ์˜ ๋ถ„๋ฆฌ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ์ œ์•ˆ์€ Document Service์— ๋ณ„๋„์˜ ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ•˜๊ณ  Document Service์— ๋‚ด์žฅ๋œ nginx ์ธ์Šคํ„ด์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์•ก์„ธ์Šค ํ‚ค(๋ฐ์ดํ„ฐ ํด๋ผ์šฐ๋“œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ํ™•์ธํ•˜๋Š” ๋ฏธ๋ฆฌ ์•Œ๋ ค์ง„ ์•ก์„ธ์Šค ํ‚ค) ๋ฐ TLS ์ธ์ฆ์„œ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์•ˆ์ „ํ•˜์ง€ ์•Š๊ณ  ์ถฉ๋ถ„ํžˆ ํšจ๊ณผ์ ์ด์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด NextCloud, ONLYOFFICE ๋ฐ docker-compose๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„๋ฉ”์ธ ์ด๋ฆ„๋ณ„๋กœ ์š”์ฒญ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ณตํ†ต nginx๋ฅผ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‹จ๊ณ„๋ณ„ ์ •๋ณด์ž…๋‹ˆ๋‹ค.

1๋‹จ๊ณ„: nginx ์ปจํ…Œ์ด๋„ˆ

์ด๊ฒƒ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•œ ์„ค์ •์ด์ง€๋งŒ ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•œ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ๋จผ์ € nginx:stable ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ docker-compose ๊ตฌ์„ฑ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

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 ์— ๋งคํ•‘ํ•˜๊ณ , ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋กœ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ /nginx/certificates์—์„œ Let's encrypt์˜ certbot์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ์ธ์ฆ์„œ์šฉ ์ €์žฅ์†Œ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์œ„์น˜์—๋Š” ๊ฐ๊ฐ ์ธ์ฆ์„œ ์ฒด์ธ ๋ฐ ์„œ๋ฒ„ ๊ฐœ์ธ ํ‚ค์— ๋Œ€ํ•œ fullchain1.pem ๋ฐ privkey1.pem ํŒŒ์ผ์ด ์žˆ๋Š” office.yourdomain.com ๋ฐ cloud.yourdomain.com์— ๋Œ€ํ•œ ํด๋”๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 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์—์„œ ์ œ๊ณตํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž๊ฒฉ ์ฆ๋ช…์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋Œ€๊ธฐํ•˜๋Š” ๋ฐ ๊ฑฐ์˜ XNUMX๋ถ„์ด ๊ฑธ๋ ธ๊ณ  ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์— ๋กœ๊ทธ์ธํ•˜๋ ค๋ฉด ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ์ถ”๊ฐ€๋กœ ์ƒˆ๋กœ ๊ณ ์ณ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Nextํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ์„ค์ • ์ฐฝDocker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ์„œ๋ฒ„์—์„œ NextCloud + ONLYOFFICE ์„ค์ •

4๋‹จ๊ณ„: NextCloud์™€ ONLYOFFICE ์—ฐ๊ฒฐ

์ด ๋‹จ๊ณ„์—์„œ ONLYOFFICE ๊ธฐ๋Šฅ์„ ์—ฐ๊ฒฐํ•˜๋Š” NextCloud์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋‰ด์˜ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ ๋ชจ์„œ๋ฆฌ์— ์žˆ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ œ์–ดํŒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ONLYOFFICE ์•ฑ(Office & text ๋˜๋Š” ๊ฒ€์ƒ‰ ์‚ฌ์šฉ)์„ ์ฐพ์•„ ์„ค์น˜ํ•˜๊ณ  ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ ๋ชจ์„œ๋ฆฌ์— ์žˆ๋Š” ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•ด ์„ค์ •์œผ๋กœ ์ด๋™ํ•˜๋ฉด ์™ผ์ชฝ ๋ฉ”๋‰ด์—์„œ ONLYOFFICE ํ•ญ๋ชฉ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋“ค์–ด๊ฐ€์‹ญ์‹œ์˜ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ฃผ์†Œ๋ฅผ ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ†ตํ•ฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •Docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ์„œ๋ฒ„์—์„œ NextCloud + ONLYOFFICE ์„ค์ •

์ฒซ ๋ฒˆ์งธ ์ฃผ์†Œ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ง์ ‘ ์ผ๋ถ€ js ๋ฐ css ํŒŒ์ผ์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(nginx๋ฅผ ํ†ตํ•ด ONLYOFFICE ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์—ด๋ ค๋ฉด ์ด ์ฃผ์†Œ๊ฐ€ ํ•„์š”ํ•จ). ์˜๊ตฌ ์ธ์ฆ ํ‚ค๋ณด๋‹ค Docker ๊ฒฉ๋ฆฌ ๊ณ„์ธต์„ ๋” ์‹ ๋ขฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๋ฐ€ ํ‚ค๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ์ฃผ์†Œ๋Š” NextCloud ์ปจํ…Œ์ด๋„ˆ์—์„œ ONLYOFFICE API์— ์ง์ ‘ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ Docker์˜ ๊ธฐ๋ณธ ๋‚ด๋ถ€ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Œ, ๋งˆ์ง€๋ง‰ ํ•„๋“œ๋Š” ONLYOFFICE๊ฐ€ ์™ธ๋ถ€ IP ์ฃผ์†Œ ๋˜๋Š” Docker ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‚ด๋ถ€ Docker ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ NextCloud API์— ๋‹ค์‹œ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์šฉ๋˜์ง€๋งŒ ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฉํ™”๋ฒฝ ์„ค์ •์ด ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ํ—ˆ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ €์žฅ ํ›„ NextCloud๋Š” ์—ฐ๊ฒฐ์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ๊ฒฝ์šฐ ํ†ตํ•ฉ๊ณผ ๊ด€๋ จ๋œ ์„ค์ •(์˜ˆ: ์ด ํ†ตํ•ฉ์œผ๋กœ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ ์œ ํ˜•)์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๋Œ€๋กœ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜์‹ญ์‹œ์˜ค.

๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„: ํŽธ์ง‘๊ธฐ๋ฅผ ์ฐพ์„ ์œ„์น˜

ํด๋ผ์šฐ๋“œ ์ €์žฅ์†Œ ํด๋”๋กœ ๋Œ์•„๊ฐ€์„œ "+"๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“ค๋ฉด ๋ฌธ์„œ, ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ๋˜๋Š” ํ”„๋ ˆ์  ํ…Œ์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ์˜ต์…˜์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ๋„์›€์œผ๋กœ ONLYOFFICE๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์ฆ‰์‹œ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ ์ƒ์„ฑ ๋ฉ”๋‰ดDocker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ์„œ๋ฒ„์—์„œ NextCloud + ONLYOFFICE ์„ค์ •

๋ณด์ถฉ 1

docker-compose.yml์˜ ์ „์ฒด ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://pastebin.com/z1Ti1fTZ

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€