• 홈
    • 최근
    • 연구개발
    • 음악
    • 등록
    • 로그인
    1. 홈
    2. ktw
    K
    오프라인
    • 프로필
    • 팔로잉 0
    • 팔로워 0
    • 토픽 4
    • 게시물 4
    • 그룹 2

    ktw

    @ktw

    administrators
    0
    평판
    1
    프로필 조회수
    4
    게시물
    0
    팔로워
    0
    팔로잉
    가입
    최종 접속

    ktw 팔로우 취소 팔로우
    User administrators

    ktw님이 작성한 최신 게시물

    • Ubuntu 22.04 + Docker + Nginx Proxy Manager + Let’s Encrypt + ThingsBoard 구축 가이드

      Ubuntu 22.04 + Docker + Nginx Proxy Manager + Let’s Encrypt + ThingsBoard 구축 가이드

      1. 개요

      본 문서는 다음 환경을 기준으로 ThingsBoard Community Edition(CE)을 구축하는 방법을 설명한다.

      구성도

      Internet
      │
      ▼
      Nginx Proxy Manager
      │
      ▼
      ThingsBoard (Docker)
      │
      ├─ PostgreSQL
      └─ Redis

      사용 환경

      • Ubuntu 22.04 LTS
      • Docker
      • Docker Compose
      • Nginx Proxy Manager(NPM)
      • Let’s Encrypt SSL
      • ThingsBoard CE
      • PostgreSQL
      • Redis

      예제 도메인

      iot.example.com

      본인의 도메인으로 변경하여 사용한다.

      ⸻

      1. DNS 설정

      도메인 관리 페이지에서 A 레코드를 추가한다.

      타입 호스트 값
      A iot 서버 공인IP

      예시

      iot.example.com
      → 123.123.123.123

      DNS 전파 확인

      nslookup iot.example.com

      또는

      dig iot.example.com

      ⸻

      1. Docker 설치

      패키지 업데이트

      sudo apt update
      sudo apt upgrade -y

      Docker 설치

      curl -fsSL https://get.docker.com | sudo sh

      Docker Compose 확인

      docker compose version

      현재 사용자 권한 추가

      sudo usermod -aG docker $USER

      재로그인 후 확인

      docker ps

      ⸻

      1. 작업 폴더 생성

      mkdir -p ~/thingsboard
      cd ~/thingsboard

      ⸻

      1. docker-compose.yml 작성

      services:
      postgres:
      image: postgres:16
      container_name: tb-postgres
      restart: unless-stopped
      environment:
      POSTGRES_DB: thingsboard
      POSTGRES_USER: thingsboard
      POSTGRES_PASSWORD: tb_password
      volumes:
      - ./postgres:/var/lib/postgresql/data
      networks:
      - tb-net
      redis:
      image: redis:7
      container_name: tb-redis
      restart: unless-stopped
      command: redis-server --appendonly yes
      volumes:
      - ./redis:/data
      networks:
      - tb-net
      thingsboard:
      image: thingsboard/tb-postgres:latest
      container_name: thingsboard
      restart: unless-stopped
      depends_on:
      - postgres
      - redis
      environment:
      TB_QUEUE_TYPE: in-memory
      SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/thingsboard
      SPRING_DATASOURCE_USERNAME: thingsboard
      SPRING_DATASOURCE_PASSWORD: tb_password
      REDIS_HOST: redis
      REDIS_PORT: 6379
      ports:
      - "1883:1883"
      - "5683:5683"
      - "8080:9090"
      volumes:
      - ./tb-data:/data
      - ./tb-logs:/var/log/thingsboard
      networks:
      - tb-net
      networks:
      tb-net:

      ⸻

      1. ThingsBoard 실행

      docker compose up -d

      상태 확인

      docker ps

      ⸻

      1. ThingsBoard DB 초기화

      최초 1회 실행

      docker exec -it thingsboard bash

      컨테이너 내부에서

      /usr/bin/install/install.sh

      설치 완료 후

      exit

      컨테이너 재시작

      docker restart thingsboard

      ⸻

      1. ThingsBoard 접속 확인

      브라우저 접속

      http://서버IP:8080

      초기 관리자 계정

      ID : sysadmin@thingsboard.org
      PW : sysadmin

      최초 로그인 후 반드시 비밀번호를 변경한다.

      ⸻

      1. Nginx Proxy Manager 설정

      NPM 관리자 페이지 접속

      http://서버IP:81

      기본 계정

      admin@example.com
      changeme

      ⸻

      1. Proxy Host 생성

      NPM 메뉴

      Hosts
      → Proxy Hosts
      → Add Proxy Host

      Domain Names

      iot.example.com

      Scheme

      http

      Forward Hostname

      thingsboard

      또는

      서버IP

      Forward Port

      8080

      옵션 체크

      Websockets Support
      Block Common Exploits

      저장

      ⸻

      1. Let’s Encrypt SSL 설정

      생성한 Proxy Host 편집

      SSL 탭 이동

      SSL Certificate

      Request a new SSL Certificate

      체크

      Force SSL
      HTTP/2 Support
      HSTS Enabled

      이메일 입력 후 저장

      예시

      admin@example.com

      정상 발급되면

      https://iot.example.com

      으로 접속 가능하다.

      ⸻

      1. MQTT 포트 개방

      방화벽 허용

      sudo ufw allow 1883/tcp

      MQTT TLS 사용 시

      sudo ufw allow 8883/tcp

      ⸻

      1. ThingsBoard MQTT 테스트

      Device 생성

      Devices
      → Add Device

      Access Token 확인

      Device Details
      → Copy Access Token

      예시

      abcd1234efgh5678

      ⸻

      MQTT Publish 테스트

      설치

      sudo apt install mosquitto-clients -y

      전송

      mosquitto_pub
      -h iot.example.com
      -p 1883
      -t v1/devices/me/telemetry
      -u abcd1234efgh5678
      -m '{"temperature":25}'

      ThingsBoard Dashboard에서 데이터 수신 확인 가능.

      ⸻

      1. 백업

      PostgreSQL 백업

      docker exec tb-postgres pg_dump
      -U thingsboard
      thingsboard \

      backup.sql

      복원

      cat backup.sql | docker exec -i tb-postgres
      psql -U thingsboard thingsboard

      ⸻

      1. 업데이트

      이미지 업데이트

      docker compose pull
      docker compose down
      docker compose up -d

      버전 확인

      docker logs thingsboard

      ⸻

      1. 추천 운영 설정

      자동 재시작

      이미 적용됨

      restart: unless-stopped

      로그 확인

      docker logs -f thingsboard

      리소스 확인

      docker stats

      데이터 백업 권장

      postgres/
      tb-data/
      tb-logs/

      정기적으로 백업한다.

      ⸻

      완료

      최종 접속 주소

      https://iot.example.com

      기본 관리자 계정

      sysadmin@thingsboard.org
      sysadmin

      이제 HTTPS가 적용된 ThingsBoard IoT 플랫폼을 운영할 수 있다.

      연구개발에 게시함
      K
      ktw
    • NextCloud구축해서 KiCAD 라이브러리 저장소로 활용하기

      Nextcloud로 KiCad 라이브러리 서버 구축하기 (Docker Compose + Nginx Proxy Manager + Let's Encrypt)

      KiCad를 사용하다 보면 심볼(Symbol), 풋프린트(Footprint), 3D 모델, 프로젝트 파일이 계속 늘어나게 됩니다.

      특히 여러 PC에서 작업하거나 회사와 집에서 동시에 개발하는 경우 라이브러리 관리가 매우 중요합니다.

      저는 KiCad 라이브러리와 프로젝트를 중앙에서 관리하기 위해 Nextcloud를 구축했습니다.

      이번 글에서는 Ubuntu 22.04 서버에 Docker Compose를 이용하여 다음 환경을 구축하는 방법을 소개합니다.

      구성 요소

      • Nextcloud
      • MariaDB
      • Redis
      • Nginx Proxy Manager
      • Let's Encrypt SSL
      • Docker
      • Docker Compose

      최종 구성도

      인터넷
          │
          ▼
      kicad.example.com
          │
          ▼
      Nginx Proxy Manager
          │
          ▼
      Nextcloud
          │
       ┌──┴─────┐
       ▼        ▼
      Redis   MariaDB
      

      왜 Nextcloud인가?

      KiCad 라이브러리를 Git으로 관리할 수도 있지만 다음과 같은 불편함이 있습니다.

      • 대용량 3D 모델 관리
      • Windows 사용자 접근성
      • 모바일 접근
      • 파일 버전 관리
      • 외부 협업

      Nextcloud를 사용하면

      • 웹 브라우저 접속
      • 윈도우 탐색기 동기화
      • 자동 백업
      • 파일 버전 관리
      • HTTPS 보안
      • 스마트폰 앱 지원

      이 가능합니다.


      구축 환경

      서버

      Ubuntu 22.04 LTS
      Docker
      Docker Compose
      

      도메인 예시

      kicad.example.com
      

      Docker 설치

      curl -fsSL https://get.docker.com | sudo sh
      

      확인

      docker --version
      docker compose version
      

      작업 디렉토리 생성

      mkdir -p ~/nextcloud
      cd ~/nextcloud
      

      docker-compose.yml 작성

      아래 파일 하나로 모든 서비스를 구축합니다.

      version: "3.9"
      
      services:
      
        npm:
          image: jc21/nginx-proxy-manager:latest
          container_name: npm
      
          restart: unless-stopped
      
          ports:
            - "80:80"
            - "81:81"
            - "443:443"
      
          volumes:
            - ./npm/data:/data
            - ./npm/letsencrypt:/etc/letsencrypt
      
        mariadb:
          image: mariadb:11
          container_name: nextcloud-db
      
          restart: unless-stopped
      
          command:
            --transaction-isolation=READ-COMMITTED
            --binlog-format=ROW
      
          environment:
            MYSQL_ROOT_PASSWORD: rootpassword
            MYSQL_DATABASE: nextcloud
            MYSQL_USER: nextcloud
            MYSQL_PASSWORD: nextcloudpassword
      
          volumes:
            - ./mariadb:/var/lib/mysql
      
        redis:
          image: redis:7-alpine
          container_name: nextcloud-redis
      
          restart: unless-stopped
      
          volumes:
            - ./redis:/data
      
        nextcloud:
          image: nextcloud:latest
          container_name: nextcloud
      
          restart: unless-stopped
      
          depends_on:
            - mariadb
            - redis
      
          environment:
            MYSQL_DATABASE: nextcloud
            MYSQL_USER: nextcloud
            MYSQL_PASSWORD: nextcloudpassword
            MYSQL_HOST: mariadb
      
            REDIS_HOST: redis
      
          ports:
            - "8080:80"
      
          volumes:
            - ./nextcloud:/var/www/html
      
      networks:
        default:
          name: nextcloud-network
      

      컨테이너 실행

      docker compose up -d
      

      확인

      docker ps
      

      정상 실행 시

      npm
      nextcloud
      nextcloud-db
      nextcloud-redis
      

      확인됩니다.


      DNS 설정

      도메인 등록

      kicad.example.com
      

      DNS 설정

      타입 이름 값
      A kicad 서버 공인IP

      예시

      kicad.example.com → 123.123.123.123
      

      확인

      nslookup kicad.example.com
      

      Nginx Proxy Manager 설정

      접속

      http://서버IP:81
      

      기본 계정

      admin@example.com
      changeme
      

      Proxy Host 생성

      메뉴

      Hosts
      → Proxy Hosts
      → Add Proxy Host
      

      설정

      Domain Names:
      kicad.example.com
      
      Scheme:
      http
      
      Forward Hostname:
      nextcloud
      
      Forward Port:
      80
      

      체크

      Block Common Exploits
      Websockets Support
      

      SSL 인증서 발급

      SSL 탭

      Request a new SSL Certificate
      

      선택

      Force SSL
      HTTP/2
      HSTS
      

      저장

      Let's Encrypt 인증서가 자동 발급됩니다.


      Nextcloud 최초 접속

      브라우저

      https://kicad.example.com
      

      관리자 생성

      관리자 계정
      비밀번호
      

      데이터베이스 설정

      MySQL/MariaDB
      
      Database User:
      nextcloud
      
      Database Password:
      nextcloudpassword
      
      Database Name:
      nextcloud
      
      Database Host:
      mariadb
      

      설치 완료


      Nextcloud 최적화 설정

      컨테이너 접속

      docker exec -it nextcloud bash
      

      설정

      apt update
      apt install nano -y
      

      config.php 수정

      nano /var/www/html/config/config.php
      

      추가

      'trusted_proxies' =>
      array (
        0 => 'npm',
      ),
      
      'overwriteprotocol' => 'https',
      
      'memcache.local' => '\\OC\\Memcache\\APCu',
      
      'memcache.locking' => '\\OC\\Memcache\\Redis',
      
      'redis' =>
      array (
        'host' => 'redis',
        'port' => 6379,
      ),
      

      KiCad 라이브러리 구조 만들기

      Nextcloud 폴더 생성

      KiCad
       ├─ Symbol
       ├─ Footprint
       ├─ 3D_Model
       ├─ Project
       ├─ Datasheet
       └─ Template
      

      예시

      KiCad
       ├─ Symbol
       │   ├─ MCU
       │   ├─ Power
       │   └─ Sensor
       │
       ├─ Footprint
       │   ├─ QFN
       │   ├─ LQFP
       │   └─ Connector
       │
       └─ 3D_Model
      

      Windows에서 동기화

      Nextcloud Desktop Client 설치

      공식 사이트

      https://nextcloud.com/install
      

      로그인 후

      C:\KiCadLibrary
      

      와 동기화


      KiCad 라이브러리 연결

      KiCad 실행

      Preferences
      → Manage Symbol Libraries
      

      추가

      C:\KiCadLibrary\Symbol
      

      풋프린트

      Preferences
      → Manage Footprint Libraries
      

      추가

      C:\KiCadLibrary\Footprint
      

      버전 관리 기능

      Nextcloud는 자동으로 변경 이력을 보관합니다.

      장점

      • 실수 복구
      • 라이브러리 롤백
      • 프로젝트 복원
      • 삭제 파일 복구

      백업

      전체 백업

      tar czvf nextcloud_backup.tar.gz \
      nextcloud \
      mariadb \
      redis \
      npm
      

      MariaDB 백업

      docker exec nextcloud-db \
      mysqldump \
      -u root \
      -prootpassword \
      nextcloud > nextcloud.sql
      

      업데이트

      docker compose pull
      docker compose up -d
      

      활용 예시

      개인 개발자

      집 PC
      회사 PC
      노트북
      

      동일 라이브러리 사용


      개발팀

      회로설계팀
      PCB설계팀
      펌웨어팀
      

      공동 라이브러리 관리


      마무리

      KiCad 프로젝트가 많아질수록 심볼, 풋프린트, 3D 모델 관리가 어려워집니다.

      Nextcloud를 구축하면 단순한 파일 저장소가 아니라 다음과 같은 중앙 라이브러리 서버를 만들 수 있습니다.

      • KiCad 라이브러리 공유
      • 프로젝트 동기화
      • 버전 관리
      • HTTPS 보안
      • 모바일 접근
      • 자동 백업

      Docker Compose와 Nginx Proxy Manager를 사용하면 설치도 간단하며 Let's Encrypt SSL 인증서도 무료로 적용할 수 있습니다.

      개인 연구실, 메이커 공간, 회사 개발팀 모두에게 추천할 만한 구축 방법입니다.

      연구개발에 게시함
      K
      ktw
    • PartDB로 재고관리 웹사이트 구축하기

      Part-DB로 전자부품 재고관리 웹사이트 구축하기 (Docker Compose + Nginx Proxy Manager + Let's Encrypt)

      전자부품이 많아질수록 어디에 어떤 부품이 있는지 찾기 어려워집니다.

      저는 저항, 커패시터, IC, 커넥터, 릴레이, MOSFET 등을 관리하기 위해 오픈소스 재고관리 시스템인 Part-DB를 구축했습니다.

      이번 글에서는 Ubuntu 서버에서 Docker Compose를 이용하여 다음 서비스를 한 번에 구성하는 방법을 소개합니다.

      구성 요소

      • Part-DB
      • MariaDB
      • Nginx Proxy Manager
      • Let's Encrypt SSL
      • Docker
      • Docker Compose

      최종 구성도

      인터넷
          │
          ▼
      parts.example.com
          │
          ▼
      Nginx Proxy Manager
          │
          ▼
      Part-DB
          │
          ▼
      MariaDB
      

      1. 서버 준비

      Ubuntu 업데이트

      sudo apt update
      sudo apt upgrade -y
      

      필수 패키지 설치

      sudo apt install -y curl wget git nano
      

      2. Docker 설치

      curl -fsSL https://get.docker.com | sudo sh
      

      확인

      docker --version
      

      3. Docker Compose 확인

      docker compose version
      

      4. 작업 폴더 생성

      mkdir -p ~/partdb
      cd ~/partdb
      

      5. docker-compose.yml 작성

      아래 파일 하나로 모든 서비스를 구성합니다.

      version: "3.9"
      
      services:
      
        npm:
          image: jc21/nginx-proxy-manager:latest
          container_name: npm
      
          restart: unless-stopped
      
          ports:
            - "80:80"
            - "81:81"
            - "443:443"
      
          volumes:
            - ./npm/data:/data
            - ./npm/letsencrypt:/etc/letsencrypt
      
        mariadb:
          image: mariadb:11
          container_name: partdb-db
      
          restart: unless-stopped
      
          environment:
            MYSQL_ROOT_PASSWORD: rootpassword
            MYSQL_DATABASE: partdb
            MYSQL_USER: partdb
            MYSQL_PASSWORD: partdbpassword
      
          command:
            --character-set-server=utf8mb4
            --collation-server=utf8mb4_unicode_ci
      
          volumes:
            - ./mariadb:/var/lib/mysql
      
        partdb:
          image: jbtronics/part-db1:latest
          container_name: partdb
      
          restart: unless-stopped
      
          depends_on:
            - mariadb
      
          environment:
            DATABASE_URL: mysql://partdb:partdbpassword@mariadb:3306/partdb
      
            APP_ENV: prod
            TRUSTED_PROXIES: 127.0.0.1,REMOTE_ADDR
      
          ports:
            - "8080:80"
      
          volumes:
            - ./partdb/uploads:/var/www/html/uploads
            - ./partdb/public_media:/var/www/html/public/media
      
      networks:
        default:
          name: partdb-network
      

      6. 컨테이너 실행

      docker compose up -d
      

      상태 확인

      docker ps
      

      정상 실행되면 다음 컨테이너가 보입니다.

      npm
      partdb
      partdb-db
      

      7. 도메인 설정

      예시

      parts.example.com
      

      DNS에서 A 레코드 생성

      타입 이름 값
      A parts 서버 공인IP

      예시

      parts.example.com → 123.123.123.123
      

      확인

      nslookup parts.example.com
      

      8. Nginx Proxy Manager 접속

      브라우저

      http://서버IP:81
      

      초기 계정

      Email:
      admin@example.com
      
      Password:
      changeme
      

      첫 로그인 후 비밀번호 변경


      9. Proxy Host 등록

      메뉴

      Hosts
      → Proxy Hosts
      → Add Proxy Host
      

      설정

      Domain Names:
      parts.example.com
      
      Scheme:
      http
      
      Forward Hostname:
      partdb
      
      Forward Port:
      80
      

      체크

      Block Common Exploits
      Websockets Support
      

      저장


      10. SSL 인증서 발급

      SSL 탭 이동

      Request a new SSL Certificate
      

      체크

      Force SSL
      HTTP/2 Support
      HSTS Enabled
      

      이메일 입력 후 저장

      몇 초 후 Let's Encrypt 인증서가 자동 발급됩니다.


      11. Part-DB 최초 접속

      브라우저 접속

      https://parts.example.com
      

      설치 마법사가 시작됩니다.


      12. 관리자 계정 생성

      최초 접속 시

      관리자 계정
      이메일
      비밀번호
      

      입력 후 완료


      13. 한국어 설정

      우측 상단

      Settings
      → Language
      → 한국어
      

      선택


      14. 저장 위치 구조 만들기

      Part-DB의 강력한 기능은 보관 위치 관리입니다.

      예시

      창고
       ├─ 서랍장1
       │   ├─ A1
       │   ├─ A2
       │   └─ A3
       │
       ├─ 서랍장2
       │   ├─ B1
       │   ├─ B2
       │   └─ B3
       │
       └─ 부품함
      

      부품 등록 시 위치를 지정하면 쉽게 찾을 수 있습니다.


      15. 부품 등록

      예시

      품명:
      STM32G431K8T6
      
      제조사:
      STMicroelectronics
      
      수량:
      100
      
      보관위치:
      서랍장1-A3
      

      16. 바코드 및 QR 코드 활용

      Part-DB는 바코드와 QR코드를 지원합니다.

      라벨 프린터를 이용하면

      부품명
      부품번호
      QR코드
      보관위치
      

      를 출력하여 관리할 수 있습니다.

      스마트폰으로 QR을 스캔하면 바로 해당 부품 페이지가 열립니다.


      17. 공급업체 연동

      지원되는 공급업체 예시

      Mouser
      DigiKey
      LCSC
      TME
      Farnell
      

      API를 등록하면 부품 정보를 자동으로 가져올 수 있습니다.


      18. 백업

      MariaDB 백업

      docker exec partdb-db mysqldump \
      -u root \
      -prootpassword \
      partdb > partdb.sql
      

      복원

      docker exec -i partdb-db mysql \
      -u root \
      -prootpassword \
      partdb < partdb.sql
      

      전체 데이터 백업

      tar czvf partdb_backup.tar.gz \
      mariadb \
      partdb \
      npm
      

      19. 업데이트

      이미지 최신화

      docker compose pull
      

      재시작

      docker compose up -d
      

      20. 운영 팁

      추천 카테고리

      저항
      커패시터
      인덕터
      다이오드
      트랜지스터
      MOSFET
      IC
      MCU
      센서
      릴레이
      커넥터
      케이블
      전원모듈
      PCB
      기구부품
      

      추천 저장 위치

      R-저항
      C-커패시터
      D-다이오드
      Q-트랜지스터
      U-IC
      J-커넥터
      

      마무리

      Part-DB는 단순한 재고관리 프로그램이 아니라 전자부품 데이터베이스에 가깝습니다.

      부품 검색, 재고 관리, 위치 관리, 바코드 관리, 공급업체 연동까지 가능하기 때문에 개인 연구실부터 기업 개발팀까지 활용할 수 있습니다.

      Docker Compose와 Nginx Proxy Manager를 이용하면 설치도 매우 간단하며, Let's Encrypt SSL 인증서까지 무료로 적용할 수 있습니다.

      부품이 늘어나기 시작했다면 엑셀 대신 Part-DB를 사용해보시기 바랍니다.

      연구개발에 게시함
      K
      ktw
    • NodeBB로 게시판 만들기

      Ubuntu 22.04 + Docker + Nginx Proxy Manager + Let's Encrypt + Redis + NodeBB 설치 가이드

      1. 개요

      본 문서는 Ubuntu 22.04 서버에서 다음 서비스를 Docker Compose로 한 번에 구축하는 방법을 설명합니다.

      구성 요소

      • NodeBB (게시판)
      • Redis (데이터 저장소)
      • Nginx Proxy Manager (역방향 프록시)
      • Let's Encrypt SSL 인증서 자동 발급
      • Docker
      • Docker Compose

      최종 구성도

      인터넷
          │
          ▼
      도메인(nodebb.example.com)
          │
          ▼
      Nginx Proxy Manager (80,443)
          │
          ▼
      NodeBB (4567)
          │
          ▼
      Redis (6379)
      

      2. 서버 준비

      Ubuntu 업데이트

      sudo apt update
      sudo apt upgrade -y
      

      필수 패키지 설치

      sudo apt install -y curl wget git nano
      

      3. Docker 설치

      curl -fsSL https://get.docker.com | sudo sh
      

      설치 확인

      docker --version
      

      예상 출력

      Docker version 28.x.x
      

      4. Docker Compose 설치 확인

      최근 Docker는 Compose Plugin이 포함되어 있습니다.

      docker compose version
      

      예상 출력

      Docker Compose version v2.x.x
      

      5. 프로젝트 폴더 생성

      mkdir -p ~/nodebb
      cd ~/nodebb
      

      6. docker-compose.yml 작성

      version: "3.9"
      
      services:
      
        npm:
          image: jc21/nginx-proxy-manager:latest
          container_name: npm
      
          restart: unless-stopped
      
          ports:
            - "80:80"
            - "81:81"
            - "443:443"
      
          volumes:
            - ./npm/data:/data
            - ./npm/letsencrypt:/etc/letsencrypt
      
        redis:
          image: redis:7-alpine
          container_name: redis
      
          restart: unless-stopped
      
          command: redis-server --appendonly yes
      
          volumes:
            - ./redis:/data
      
        nodebb:
          image: nodebb/docker:latest
          container_name: nodebb
      
          restart: unless-stopped
      
          depends_on:
            - redis
      
          ports:
            - "4567:4567"
      
          environment:
            - NODEBB_URL=https://nodebb.example.com
            - NODEBB_PORT=4567
      
          volumes:
            - ./nodebb:/usr/src/app
      
      networks:
        default:
          name: nodebb-network
      

      7. 컨테이너 실행

      docker compose up -d
      

      상태 확인

      docker ps
      

      정상 실행 예시

      npm
      redis
      nodebb
      

      8. 방화벽 설정

      UFW 사용 시

      sudo ufw allow 80/tcp
      sudo ufw allow 81/tcp
      sudo ufw allow 443/tcp
      sudo ufw reload
      

      확인

      sudo ufw status
      

      9. 도메인 설정

      예제

      nodebb.example.com
      

      DNS 설정

      타입 이름 값
      A @ 서버IP
      A nodebb 서버IP

      예시

      nodebb.example.com → 123.123.123.123
      

      DNS 전파 확인

      nslookup nodebb.example.com
      

      10. Nginx Proxy Manager 접속

      브라우저

      http://서버IP:81
      

      기본 로그인

      Email:
      admin@example.com
      
      Password:
      changeme
      

      첫 로그인 시 비밀번호 변경


      11. Proxy Host 생성

      NPM 메뉴

      Hosts
      → Proxy Hosts
      → Add Proxy Host
      

      설정

      Domain Names:
      nodebb.example.com
      
      Forward Hostname:
      nodebb
      
      Forward Port:
      4567
      

      체크

      Block Common Exploits
      Websocket Support
      

      저장


      12. SSL 인증서 발급

      SSL 탭 이동

      Request a new SSL Certificate
      

      체크

      Force SSL
      HTTP/2 Support
      HSTS Enabled
      

      이메일 입력 후 저장

      Nginx Proxy Manager가 Let's Encrypt 인증서를 자동 발급합니다.


      13. NodeBB 초기 설정

      브라우저 접속

      https://nodebb.example.com
      

      설치 화면이 나타납니다.


      Redis 설정

      Database Type : Redis
      Host IP       : redis
      Port          : 6379
      Password      :
      

      관리자 계정 생성

      Admin Username : admin
      Admin Email    : admin@example.com
      Password       : 원하는 비밀번호
      

      설치 완료


      14. 관리자 페이지 접속

      https://nodebb.example.com/admin
      

      관리자 계정으로 로그인


      15. 한글 게시판 설정

      관리자 메뉴

      Settings
      → General
      

      Language

      한국어 (ko)
      

      저장 후 재시작

      docker restart nodebb
      

      16. 이메일 설정 (선택)

      회원가입 인증메일 사용 시

      관리자 페이지

      Settings
      → Email
      

      SMTP 예제

      smtp.gmail.com
      Port 587
      TLS 사용
      

      17. 백업

      Redis 데이터

      ./redis
      

      NodeBB 데이터

      ./nodebb
      

      백업

      tar czvf nodebb_backup.tar.gz nodebb redis npm
      

      복원

      tar xzvf nodebb_backup.tar.gz
      

      18. 업데이트

      이미지 다운로드

      docker compose pull
      

      재시작

      docker compose up -d
      

      불필요 이미지 정리

      docker image prune -a
      

      19. 트러블슈팅

      SSL 발급 실패

      확인

      nslookup nodebb.example.com
      

      80번 포트 확인

      sudo ss -ntlp | grep :80
      

      NodeBB 접속 불가

      로그 확인

      docker logs nodebb
      

      Redis 연결 실패

      로그 확인

      docker logs redis
      

      컨테이너 확인

      docker ps
      

      20. 완료

      최종 접속 주소

      https://nodebb.example.com
      

      운영 서비스

      Nginx Proxy Manager
      Redis
      NodeBB
      Let's Encrypt SSL
      

      Docker Compose 한 파일만으로 관리가 가능하며, SSL 인증서 갱신도 자동으로 처리됩니다.

      연구개발에 게시함
      K
      ktw