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

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