Skip to main content

BIM + PM (프로젝트 관리) 통합 플랫폼

🧩 목표 구조 요약

Speckle = BIM 모델 공유/시각화/데이터 추출
Plane.so = 이슈 관리 / 문서 / 스프린트 / 협업
이 둘을 연동해서 다음을 가능하게 해보자:


🎯 목표 기능


🛠 시스템 구성 예시 (전체 아키텍처)

scss
[사용자 브라우저] ↓ ┌─────────────────────────────┐ │ NGINX (Reverse Proxy + SSL) │ └─────────────────────────────┘ ↓ ┌──────────────┬───────────────┐ │ Plane.so │ Speckle Server │ │ (PM 기능) │ (BIM 모델 관리) │ └──────────────┴───────────────┘ ↓ ┌─────────────┐ ┌─────────────┐ │ Postgres DB │ │ Redis Cache │ └─────────────┘ └─────────────┘

💡 연동 방식 (간단하고 실용적으로)

▶ 방법 1: 모델 뷰어를 이슈/문서에 붙여넣기 (iframe)

  • Speckle 모델을 웹에서 열면 URL이 생김:

    arduino
    https://your-speckle-server/projects/1234
  • Plane.so의 Docs 또는 이슈에 다음처럼 삽입:

    markdown
    ### 설계 검토 모델 <iframe src="https://your-speckle-server/embed?stream=abcd" width="100%" height="600px"></iframe>
  • 혹은 링크로 붙이기:

    less
    🔗 관련 모델: [모델 보기](https://your-speckle-server/projects/1234)

✅ 장점: 간단, 효과적, 협업 쉬움
❗ 제한: 양방향 태그는 수동으로 연결해야 함


▶ 방법 2: Speckle 모델 속성에 이슈 ID 주기

Speckle 객체 속성에 issueId를 주면, Plane.so에서 연결된 태스크를 확인할 수 있어.

예:

json
{ "type": "wall", "issueId": "PL-1234" }

→ Plane에서 PL-1234는 해당 벽체 관련 문제!

나중에 자동으로 태스크 목록을 Speckle에서 조회하는 API도 붙일 수 있어!


⚙️ 구축 순서 요약

  1. ✅ Speckle Server 온프레미스 설치

  2. ✅ Plane.so 설치 (위에서 안내드린 방식으로)

  3. ✅ Nginx로 포트 정리 + HTTPS 설정

  4. ✅ Speckle 모델 embed 코드 정리

  5. ✅ Plane Docs에 iframe 붙이기

  6. 🔄 API로 연동 자동화 시도 가능 (선택)


📦 추가로 쓸 수 있는 도구 (확장)


🔥 통합 플랫폼 구조 예시

mathematica

🎯 목표 구성 (1차 버전)

서비스 설명 포트
✅ Plane.so 프로젝트 관리 3000
✅ Speckle Server BIM 모델 뷰어/공유 3001
🔄 Nginx (선택) 리버스 프록시, HTTPS 80, 443
🔄 Postgres 공용 데이터베이스 5432 (내부)
🔄 Redis 캐시 6379 (내부)

추후 확장:

  • 📚 Bookstack

  • ☁️ Nextcloud

  • 📊 Superset

  • 🔐 Keycloak (SSO)


🐳 Docker Compose 예시 (docker-compose.yml)

version: "3.9"

services:
  postgres:
    image: postgres:15
    container_name: shared-postgres
    restart: always
    environment:
      POSTGRES_USER: plane
      POSTGRES_PASSWORD: plane123
      POSTGRES_DB: plane
    volumes:
      - pgdata:/var/lib/postgresql/data

  redis:
    image: redis:7
    container_name: shared-redis
    restart: always

  plane:
    image: makeplane/plane:latest
    container_name: plane
    depends_on:
      - postgres
      - redis
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgres://plane:plane123@postgres:5432/plane
      REDIS_URL: redis://redis:6379
      PORT: 3000

  speckle:
    image: speckle/speckle-server:latest
    container_name: speckle
    ports:
      - "3001:3000"
    environment:
      SPECKLE_HOST_URL: http://localhost:3001
      POSTGRES_URL: postgres://plane:plane123@postgres:5432/speckle
      REDIS_URL: redis://redis:6379
    depends_on:
      - postgres
      - redis

volumes:
  pgdata:

📂 구조 설명

  • Postgres: Plane과 Speckle가 같이 사용 (DB 이름 다르게)

  • Redis: 공용 캐시 서버

  • Plane: PM 도구

  • Speckle: BIM 서버

  • 모든 서비스는 Docker로 1개 서버에 설치 가능

  • 원하면 나중에 Nginx 붙여서 도메인 + HTTPS도 추가 가능


🚀 사용법

# 디렉토리 만들기
mkdir bim-pm-platform && cd bim-pm-platform

# docker-compose.yml 생성
nano docker-compose.yml

# 위 내용 붙여넣기, 저장 후
docker compose up -d
 

🌐 접속 주소

서비스 주소
Plane http://서버IP:3000
Speckle http://서버IP:3001

📌 다음 단계?

  • .env 파일 분리 원해? → 만들어줄 수 있어!

  • ✅ Bookstack/Nextcloud도 붙일까? → 모듈별 추가 가능!

  • ✅ Nginx + HTTPS 설정도 알려줄 수 있어!

  • ✅ Plane Docs에 Speckle iframe 자동 삽입 스크립트? → 가능해!


👉 지금 바로 시작할 수 있어!

만약 이 구성에 맞춰서 .env 템플릿, init.sql, Nginx 설정, 또는 Bookstack 추가 구성까지 원하면
"다음은 뭐해?"라고만 말해줘! 내가 이어서 만들어줄게 😄