์ž์œ ๊ฒŒ์‹œํŒ

  • Synology NAS์— Overleaf ์„ค์น˜ํ•˜๊ธฐ

    ํŽ˜์ด์ง€ ์ •๋ณด

    profile_image
    ์ž‘์„ฑ์ž์ฒœ์‚ฌ ์กฐํšŒ 3,370ํšŒ ์ž‘์„ฑ์ผ 2025-01-11 19:18:49 ๋Œ“๊ธ€ 0

    ๋ณธ๋ฌธ

    [Synology NAS์— Overleaf ์„ค์น˜ํ•˜๊ธฐ]

    Overleaf ์ปค๋ฎค๋‹ˆํ‹ฐ ์—๋””์…˜ v3.5.7 ์„ค์น˜ ๊ฐ€์ด๋“œ
    Docker์™€ Portainer๋ฅผ ์‚ฌ์šฉํ•œ ์„ค์น˜ ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.

    โ–ถ ์‚ฌ์ „ ์ค€๋น„์‚ฌํ•ญ

    1. Docker๊ฐ€ ์„ค์น˜๋œ Synology NAS
    2. Portainer ์„ค์น˜๋จ
    3. synology.me ์™€์ผ๋“œ์นด๋“œ ์ธ์ฆ์„œ
    4. SMTP ์„ค์ •์ด ์™„๋ฃŒ๋œ Gmail ๊ณ„์ • (๋˜๋Š” ๋‹ค๋ฅธ SMTP ์„œ๋ฒ„ ์ •๋ณด)

    โ–ถ ์„ค์น˜ ๊ณผ์ •

    [1๋‹จ๊ณ„] ํ™˜๊ฒฝ ์ค€๋น„
    File Station์—์„œ ์•„๋ž˜ ํด๋”๋“ค์„ ์ƒ์„ฑํ•˜์„ธ์š”. (๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ์ž‘์„ฑ)

    /docker/overleaf/
    /docker/overleaf/configdb/
    /docker/overleaf/db/
    /docker/overleaf/redis/

    [2๋‹จ๊ณ„] ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„ค์ •

    1. ์ œ์–ดํŒ โ†’ ๋กœ๊ทธ์ธ ํฌํ„ธ โ†’ ๊ณ ๊ธ‰ โ†’ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋กœ ์ด๋™
    2. ์ƒˆ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์ƒ์„ฑ:
    - ์ด๋ฆ„: Overleaf
    - ์†Œ์Šค:
    ย  * ํ”„๋กœํ† ์ฝœ: HTTPS
    ย  * ํ˜ธ์ŠคํŠธ ์ด๋ฆ„: overleaf.yourname.synology.me
    ย  * ํฌํŠธ: 443
    ย  * HSTS ํ™œ์„ฑํ™” ์ฒดํฌ
    - ๋Œ€์ƒ:
    ย  * ํ”„๋กœํ† ์ฝœ: HTTP
    ย  * ํ˜ธ์ŠคํŠธ ์ด๋ฆ„: localhost
    ย  * ํฌํŠธ: 7643
    3. ์‚ฌ์šฉ์ž ์ง€์ • ํ—ค๋” ํƒญ์—์„œ WebSocket ์ถ”๊ฐ€ํ•˜๊ธฐ

    [3๋‹จ๊ณ„] ์‹œ์Šคํ…œ ์„ค์ •

    1. HTTP/2 ํ™œ์„ฑํ™”
    - ์ œ์–ดํŒ โ†’ ๋„คํŠธ์›Œํฌ โ†’ ์—ฐ๊ฒฐ
    - "HTTP/2 ํ™œ์„ฑํ™”" ์ฒดํฌ ํ›„ ์ ์šฉ

    2. HTTP ์••์ถ• ํ™œ์„ฑํ™”
    - ์ œ์–ดํŒ โ†’ ๋ณด์•ˆ โ†’ ๊ณ ๊ธ‰
    - "HTTP ์••์ถ• ํ™œ์„ฑํ™”" ์ฒดํฌ ํ›„ ์ ์šฉ

    [4๋‹จ๊ณ„] Overleaf ์Šคํƒ ๋ฐฐํฌ

    1. Portainer์— ๋กœ๊ทธ์ธ
    2. ์ƒˆ ์Šคํƒ ์ƒ์„ฑ (์ด๋ฆ„: overleaf)
    3. ์•„๋ž˜ ์„ค์ •์„ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ๋„ฃ๊ธฐ (โ€ป ๊ด„ํ˜ธ ์•ˆ์˜ ๋‚ด์šฉ์€ ๋ณธ์ธ ์ •๋ณด๋กœ ์ˆ˜์ •)

    ------------------- ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ๋ณต์‚ฌ -------------------
    version: '3.9'
    services:
    ย  ย  overleaf:
    ย  ย  ย restart: on-failure:5
    ย  ย  ย image: sharelatex/sharelatex:3.5.7
    ย  ย  ย healthcheck:
    ย  ย  ย  test: curl -f http://localhost:80/ || exit 1
    ย  ย  ย container_name: Overleaf
    ย  ย  ย depends_on:
    ย  ย  ย  ย mongo:
    ย  ย  ย  ย  ย condition: service_healthy
    ย  ย  ย  ย redis:
    ย  ย  ย  ย  ย condition: service_healthy
    ย  ย  ย ports:
    ย  ย  ย  ย  ย - 7643:80
    ย  ย  ย stop_grace_period: 60s
    ย  ย  ย volumes:
    ย  ย  ย  ย  ย - /volume1/docker/overleaf:/var/lib/sharelatex
    ย  ย  ย environment:
    ย  ย  ย  SHARELATEX_APP_NAME: Overleaf Community Edition
    ย  ย  ย  SHARELATEX_MONGO_URL: mongodb://mongo/sharelatex
    ย  ย  ย  SHARELATEX_REDIS_HOST: redis
    ย  ย  ย  REDIS_HOST: redis
    ย  ย  ย  ENABLED_LINKED_FILE_TYPES: project_file,project_output_file
    ย  ย  ย  ENABLE_CONVERSIONS: true
    ย  ย  ย  EMAIL_CONFIRMATION_DISABLED: false
    ย  ย  ย  SHARELATEX_ADMIN_EMAIL: [Gmail ์ฃผ์†Œ ์ž…๋ ฅ]
    ย  ย  ย  TEXMFVAR: /var/lib/sharelatex/tmp/texmf-var
    ย  ย  ย  SHARELATEX_SITE_URL: https://overleaf.yourname.synology.me
    ย  ย  ย  SHARELATEX_NAV_TITLE: [์›ํ•˜๋Š” ์ œ๋ชฉ ์ž…๋ ฅ]
    ย  ย  ย  SHARELATEX_EMAIL_SMTP_HOST: smtp.gmail.com
    ย  ย  ย  SHARELATEX_EMAIL_SMTP_PORT: 587
    ย  ย  ย  SHARELATEX_EMAIL_SMTP_USER: [Gmail ์ฃผ์†Œ ์ž…๋ ฅ]
    ย  ย  ย  SHARELATEX_EMAIL_SMTP_PASS: [Gmail ์•ฑ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ]
    ย  ย  ย  SHARELATEX_EMAIL_SMTP_TLS_REJECT_UNAUTH: true
    ย  ย  ย  SHARELATEX_EMAIL_SMTP_IGNORE_TLS: false
    ย  ย  ย  SHARELATEX_EMAIL_FROM_ADDRESS: [Gmail ์ฃผ์†Œ ์ž…๋ ฅ]
    ย  ย  ย  SHARELATEX_EMAIL_SMTP_LOGGER: true

    ย  ย  mongo:
    ย  ย  ย restart: on-failure:5
    ย  ย  ย image: mongo:4.4
    ย  ย  ย container_name: Overleaf-DB
    ย  ย  ย expose:
    ย  ย  ย  ย  ย  ย  - 27017
    ย  ย  ย volumes:
    ย  ย  ย  ย  - /volume1/docker/overleaf/db:/data/db
    ย  ย  ย  ย  - /volume1/docker/overleaf/configdb:/data/configdb
    ย  ย  ย healthcheck:
    ย  ย  ย  ย test: echo 'db.stats().ok' | mongo localhost:27017/test --quiet
    ย  ย  ย  ย interval: 10s
    ย  ย  ย  ย timeout: 10s
    ย  ย  ย  ย retries: 5

    ย  ย  redis:
    ย  ย  ย  restart: on-failure:5
    ย  ย  ย  image: redis
    ย  ย  ย  mem_limit: 256m
    ย  ย  ย  mem_reservation: 50m
    ย  ย  ย  cpu_shares: 768
    ย  ย  ย  security_opt:
    ย  ย  ย  ย - no-new-privileges:true
    ย  ย  ย  healthcheck:
    ย  ย  ย  ย test: ["CMD-SHELL", "redis-cli ping || exit 1"]
    ย  ย  ย  container_name: Overleaf-REDIS
    ย  ย  ย  expose:
    ย  ย  ย  ย - 6379
    ย  ย  ย  volumes:
    ย  ย  ย  ย - /volume1/docker/overleaf/redis:/data
    ย  ย  ย  environment:
    ย  ย  ย  ย TZ: [์‹œ๊ฐ„๋Œ€ ์ž…๋ ฅ (์˜ˆ: Asia/Seoul)]
    ------------------- ์—ฌ๊ธฐ๊นŒ์ง€ ๋ณต์‚ฌ -------------------

    [5๋‹จ๊ณ„] ๊ด€๋ฆฌ์ž ๊ณ„์ • ์ƒ์„ฑ

    1. Portainer์—์„œ Overleaf ์ปจํ…Œ์ด๋„ˆ์˜ ํ„ฐ๋ฏธ๋„ ์ ‘์†
    2. ์•„๋ž˜ ๋ช…๋ น์–ด ์‹คํ–‰ (์ด๋ฉ”์ผ ์ฃผ์†Œ ๋ณ€๊ฒฝ ํ•„์ˆ˜)
    cd /var/www/sharelatex; grunt user:create-admin --email=๋ณธ์ธ์ด๋ฉ”์ผ์ฃผ์†Œ

    3. ์ƒ์„ฑ๋œ ํ™œ์„ฑํ™” ๋งํฌ ๋ณต์‚ฌ

    [6๋‹จ๊ณ„] ์„ค์น˜ ์™„๋ฃŒ ๋ฐ ์ดˆ๊ธฐ ์„ค์ •

    1. ๋ณต์‚ฌํ•œ ํ™œ์„ฑํ™” ๋งํฌ๋กœ ์ ‘์†
    2. ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •
    3. ์ฒซ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
    4. ์ด๋ฉ”์ผ ์ฃผ์†Œ ์ธ์ฆ

    โ˜… ์ฃผ์˜์‚ฌํ•ญ

    1. ๋Œ€๊ด„ํ˜ธ([]) ์•ˆ์˜ ๋‚ด์šฉ์€ ๋ฐ˜๋“œ์‹œ ๋ณธ์ธ์˜ ์ •๋ณด๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    2. Overleaf ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ ์•ฝ 3GB์ด๋ฏ€๋กœ ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„ ์—ฌ์œ ๋ฅผ ๊ฐ€์ง€๊ณ  ์„ค์น˜ํ•˜์„ธ์š”.
    3. ๋ชจ๋“  ํด๋”๋ช…์€ ๋ฐ˜๋“œ์‹œ ์†Œ๋ฌธ์ž๋กœ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    4. ์ด๋ฉ”์ผ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด SMTP ์„ค์ •์ด ์ •ํ™•ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    โ–  ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

    ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•„๋ž˜ ์‚ฌํ•ญ๋“ค์„ ์ฐจ๋ก€๋กœ ํ™•์ธํ•˜์„ธ์š”:

    1. Portainer์—์„œ ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ ํ™•์ธ
    2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •๊ฐ’ ํ™•์ธ
    3. ํฌํŠธ ์ ‘๊ทผ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ™•์ธ
    4. SMTP ์„ค์ • ์ •ํ™•์„ฑ ํ™•์ธ

    ๋Œ“๊ธ€๋ชฉ๋ก

    ๋“ฑ๋ก๋œ ๋Œ“๊ธ€์ด ์—†์Šต๋‹ˆ๋‹ค.