자유롭게 토론해요

Ubuntu 22.04 + Docker + Nginx Proxy Manager + Let’s Encrypt + ThingsBoard 구축 가이드
K
Ubuntu 22.04 + Docker + Nginx Proxy Manager + Let’s Encrypt + ThingsBoard 구축 가이드 개요 본 문서는 다음 환경을 기준으로 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 본인의 도메인으로 변경하여 사용한다. ⸻ DNS 설정 도메인 관리 페이지에서 A 레코드를 추가한다. 타입 호스트 값 A iot 서버 공인IP 예시 iot.example.com → 123.123.123.123 DNS 전파 확인 nslookup iot.example.com 또는 dig iot.example.com ⸻ 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 ⸻ 작업 폴더 생성 mkdir -p ~/thingsboard cd ~/thingsboard ⸻ 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: ⸻ ThingsBoard 실행 docker compose up -d 상태 확인 docker ps ⸻ ThingsBoard DB 초기화 최초 1회 실행 docker exec -it thingsboard bash 컨테이너 내부에서 /usr/bin/install/install.sh 설치 완료 후 exit 컨테이너 재시작 docker restart thingsboard ⸻ ThingsBoard 접속 확인 브라우저 접속 http://서버IP:8080 초기 관리자 계정 ID : sysadmin@thingsboard.org PW : sysadmin 최초 로그인 후 반드시 비밀번호를 변경한다. ⸻ Nginx Proxy Manager 설정 NPM 관리자 페이지 접속 http://서버IP:81 기본 계정 admin@example.com changeme ⸻ 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 저장 ⸻ 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 으로 접속 가능하다. ⸻ MQTT 포트 개방 방화벽 허용 sudo ufw allow 1883/tcp MQTT TLS 사용 시 sudo ufw allow 8883/tcp ⸻ 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에서 데이터 수신 확인 가능. ⸻ 백업 PostgreSQL 백업 docker exec tb-postgres pg_dump -U thingsboard thingsboard \ backup.sql 복원 cat backup.sql | docker exec -i tb-postgres psql -U thingsboard thingsboard ⸻ 업데이트 이미지 업데이트 docker compose pull docker compose down docker compose up -d 버전 확인 docker logs thingsboard ⸻ 추천 운영 설정 자동 재시작 이미 적용됨 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 플랫폼을 운영할 수 있다.
더 보기