administrators

비공개

게시물

  • 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 플랫폼을 운영할 수 있다.

  • 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 인증서도 무료로 적용할 수 있습니다.

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

  • 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를 사용해보시기 바랍니다.

  • 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