그누보드7 미디어 관리 모듈 - Glitter Media Manager
게시글의 첨부파일을 넘어, 사이트 전체에서 검색/분류/재사용할 수 있는 독립 미디어 자산 관리 모듈
게시글 첨부파일을 넘어, 사이트 전체에서 검색·분류·재사용할 수 있는 독립 미디어 자산 관리 모듈
Glitter Media Manager는 그누보드7(GnuBoard7)을 위한 중앙 집중형 미디어 관리 모듈입니다. 이미지와 문서를 게시글에 종속된 첨부파일이 아닌 독립적인 자산으로 관리하고, 다양한 모듈과 서비스에서 재사용할 수 있도록 설계되었습니다.
현재 버전: v1.10.3
개발사: Glitter.kr
개발 상태: Open Beta
라이선스: MIT License
소개
glitter-media_manager는 파일을 특정 게시글의 부속물이 아니라 사이트 전체에서 관리되는 독립적인 미디어 자산으로 다루기 위해 설계된 그누보드7 모듈입니다.
기존의 게시판 중심 첨부파일 관리와 달리, 파일 자체를 하나의 자산으로 관리하여 여러 게시판, 모듈 및 서비스에서 검색·분류·재사용할 수 있는 공통 기반을 제공합니다.
대표적인 특징은 다음과 같습니다.
- UUID 기반 미디어 자산 식별 및 관리
- 중앙 집중형 미디어 카탈로그
- 폴더 및 태그 기반 분류
- 파일 메타데이터 관리
- Repository 패턴 기반 데이터 접근 계층
- Storage 추상화
- REST API 제공
- 관리자 전용 미디어 관리 UI
- GnuBoard7 Module Lifecycle 지원
현재 Open Beta에서는 이미지 및 문서 업로드와 자산 관리 기능을 중심으로 제공하며, 향후 외부 스토리지, CDN, 썸네일 생성, 이미지 변환, OCR 및 AI 자동 태깅 등으로 확장할 수 있는 구조를 지향합니다.
주요 기능
1. 이미지 및 문서 관리
이미지와 문서를 업로드하고, 파일 정보를 독립적인 미디어 자산으로 등록하여 관리합니다.
- 이미지 및 문서 업로드
- MIME 유형 기반 파일 분류
- UUID 기반 자산 식별
- 파일 메타데이터 관리
- 파일 Checksum 관리
- Soft Delete 지원
2. 중앙 미디어 카탈로그
사이트 내 미디어 자산을 중앙에서 관리하여 개별 게시글이나 기능에 종속되지 않는 자산 관리 구조를 제공합니다.
- 중앙 집중형 자산 목록
- 자산 검색 및 필터링
- 자산 상세정보 조회
- 파일 유형에 따른 분류
- 기존 자산의 재사용을 위한 관리 기반
3. 폴더 및 태그 관리
미디어 자산을 폴더와 태그로 체계적으로 분류할 수 있습니다.
- 폴더 관리
- 태그 관리
- 자산 분류
- 검색 및 관리 편의성 향상
4. REST API
미디어 자산 관리 기능을 API로 제공하여 다른 모듈 및 서비스와 통합할 수 있도록 설계했습니다.
- 미디어 자산 관리 API
- 폴더 및 태그 관리 API
- 메타데이터 조회
- Laravel 기반 인증 및 권한 관리 구조
5. 관리자 UI
그누보드7 관리자 환경에서 미디어 자산을 관리할 수 있는 전용 인터페이스를 제공합니다.
- 미디어 자산 목록
- 검색 및 필터링
- 업로드 및 자산 관리
- 폴더 및 태그 관리
- 미디어 자산 상세 모달
관리자 페이지:
/admin/media-manager
관리자 인증 및 필요한 권한을 가진 사용자만 접근할 수 있습니다.
설계 특징
Glitter Media Manager는 단순히 파일 업로드 기능을 제공하는 것이 아니라, 독립적인 미디어 관리 플랫폼으로 활용할 수 있는 구조를 목표로 설계되었습니다.
파일과 메타데이터의 분리
실제 파일(Binary)과 자산 정보(Database)를 분리하여 관리합니다.
이 구조는 파일 저장 위치나 스토리지 방식이 변경되더라도 자산 정보를 독립적으로 유지하고 활용하기 위한 기반입니다.
서버 중심의 자산 식별
파일 처리 과정에서 MIME 유형, UUID, Checksum 등 주요 정보를 서버 측에서 결정하도록 설계했습니다.
이를 통해 클라이언트 입력에만 의존하지 않는 일관된 자산 관리 구조를 지향합니다.
Repository 및 Storage 추상화
Repository 계층과 Storage 계층을 분리하여 데이터베이스 접근 로직과 실제 파일 저장 로직을 독립적으로 관리합니다.
향후 저장소 교체나 외부 스토리지 연동 시 기존 기능과의 결합도를 낮추기 위한 설계입니다.
Transaction 및 Compensation
데이터베이스 작업과 파일 저장 작업은 하나의 원자적 트랜잭션으로 처리하기 어렵습니다.
이를 고려하여 DB Transaction과 Storage 작업 사이에서 실패가 발생할 경우 보상(Compensation) 방식으로 정합성을 유지하도록 설계했습니다.
그누보드7 확장 구조 준수
GnuBoard7 Module Lifecycle을 통해 설치, 업데이트 및 활성화할 수 있도록 구성했습니다.
모듈의 원본 소스와 설치된 운영 파일을 구분하며, 지원되는 확장 관리 절차를 통해 배포 및 갱신할 수 있습니다.
v1.10.3 주요 변경 사항
이번 v1.10.3은 관리자 레이아웃 검증 및 모듈 활성화 안정성을 개선한 유지보수 릴리스입니다.
관리자 레이아웃 partial 검증 오류 수정
이전 v1.10.2에서는 모듈 활성화 과정에서 관리자 레이아웃의 partial 처리가 실패하여 다음과 같은 오류가 발생할 수 있었습니다.
Module activation failed
Layout validation failed
Partial include path is outside the allowed directory
문제는 미디어 자산 상세 모달의 JSON partial이 존재했지만, 레이아웃 소스 탐색 과정에서 우선 사용하는 .g7.html partial 파일이 누락된 데 있었습니다.
v1.10.3에서는 다음 사항을 수정했습니다.
- 누락된
_modal_media_asset_detail.g7.html원본 소스 추가 - 대응하는 JSON partial을 공식 컴파일러 결과와 동기화
- 기존 모달 ID 및 구성 요소 유지
- 데이터 바인딩과 모달 닫기 동작 보존
- 관리자 레이아웃 검증 정상화
- 모듈 버전 1.10.2 → 1.10.3 갱신
코어의 경로 보안 검증은 변경하거나 완화하지 않았습니다.
검증 및 운영 반영
v1.10.3에 대해 다음 검증을 완료했습니다.
- 레이아웃 JSON 유효성 검사 통과
- Layout compile round-trip 검사 통과
- Layout decompile 검사 통과
- 전체 대상 레이아웃 검증 통과
- partial 경로 및 모달 참조 관계 확인
- 모듈 업데이트 성공
- 모듈 활성화 성공
- 관리자 레이아웃 등록 성공
- Laravel LayoutService를 통한 서버 내부 레이아웃 해석 성공
- 관리자 미디어 관리 페이지 HTTP 200 확인
인증된 관리자 브라우저에서 실제 미디어 항목을 클릭하여 상세 모달을 여는 E2E 검증은 수행하지 않았습니다. 따라서 브라우저 상호작용의 최종 검증은 남아 있습니다.
이번 업데이트는 신규 기능 추가보다는 기존 미디어 관리 기능의 설치 및 활성화 안정성 향상에 초점을 맞췄습니다.
앞으로의 확장
현재 아키텍처를 기반으로 다음 기능을 단계적으로 확장할 계획입니다.
- AWS S3 등 외부 오브젝트 스토리지 연동
- CDN 기반 미디어 제공
- 이미지 썸네일 자동 생성
- WebP / AVIF 이미지 변환
- OCR 기반 문서 및 이미지 텍스트 추출
- AI 자동 태깅 및 분류
- 동영상 및 오디오 자산 지원
- Asset Usage Tracking
- 파일 Checksum 기반 중복 탐지 및 Deduplication
위 항목은 향후 확장 계획이며, v1.10.3에서 모두 제공되는 기능은 아닙니다.
현재 상태
Open Beta — v1.10.3
현재는 핵심 이미지·문서 업로드, 미디어 자산 관리, 폴더 및 태그 관리, 검색과 필터링, REST API 및 관리자 기능을 중심으로 개발이 진행되고 있습니다.
v1.10.3에서는 관리자 레이아웃 문제로 발생하던 모듈 활성화 실패를 수정하고 실제 운영 환경에서 업데이트 및 활성화가 성공하는 것을 확인했습니다.
향후 운영 환경에서 수집되는 피드백을 바탕으로 기능 안정성과 확장성을 지속적으로 개선할 예정입니다.
프로젝트 목표
Glitter Media Manager의 목표는 단순한 파일 업로더(File Uploader) 를 만드는 것이 아닙니다.
그누보드7의 여러 모듈과 서비스가 함께 사용할 수 있는 공통 미디어 플랫폼(Media Asset Platform) 을 구축하는 것입니다.
게시판, 커뮤니티, 콘텐츠 관리, 예약 시스템 등 다양한 서비스에서 파일을 각각 중복 관리하는 대신, 공통 미디어 자산으로 활용할 수 있는 구조를 지향합니다.
기술 스택
| 구분 | 기술 |
|---|---|
| Backend | PHP 8.3+, Laravel 12.x |
| Database | MySQL 계열 |
| Authentication | Laravel Sanctum |
| Frontend | React 19, TypeScript |
| UI / Layout | JSON Layout, Tailwind CSS |
| Build | Vite |
| Platform | GnuBoard7 |
| License | MIT |
설치 방법
1. GitHub 저장소에서 설치 (권장)
그누보드7 관리자에서 다음 메뉴로 이동합니다.
관리자 → 모듈 관리 → 수동 설치 → GitHub
저장소 주소를 입력합니다.
https://github.com/glitter-node/glitter-media_manager
설치가 완료되면 모듈을 활성화합니다.
정상 활성화 후 관리자에서 미디어 관리 메뉴를 사용할 수 있습니다.
GitHub 저장소를 통한 설치 및 업데이트를 기본 권장 방식으로 제공합니다.
2. ZIP 패키지 설치
GitHub Releases에서 v1.10.3 배포 패키지를 다운로드하여 설치할 수도 있습니다.
관리자에서 다음 메뉴로 이동합니다.
관리자 → 모듈 관리 → 수동 설치 → 파일 업로드
파일 업로드 설치에는 그누보드7 관리자에서 지원하는 패키지 형식을 사용하십시오.
3. 기존 버전 업데이트
기존 v1.10.2 사용자는 v1.10.3으로 업데이트하는 것을 권장합니다.
그누보드7 관리자에서 지원되는 모듈 업데이트 절차를 이용하고, 업데이트 후 활성화 상태와 관리자 미디어 관리 페이지가 정상적으로 표시되는지 확인하십시오.
이번 버전에서는 관리자 레이아웃 partial 소스 누락 문제가 수정되었습니다.
4. 설치 후 페이지 로딩 오류 발생 시
먼저 모듈 활성화 상태와 레이아웃 등록 여부를 확인하십시오.
캐시 문제로 판단되는 경우 다음 메뉴를 이용할 수 있습니다.
관리자 → 환경설정 → 고급 → 캐시 모두 삭제
운영 환경에서는 전체 캐시 삭제의 영향 범위를 먼저 확인하고 필요한 경우에만 실행하는 것을 권장합니다.
저장소 및 다운로드
GitHub 저장소
https://github.com/glitter-node/glitter-media_manager
v1.10.3 Release
https://github.com/glitter-node/glitter-media_manager/releases/tag/v1.10.3
v1.10.3 ZIP 다운로드
v1.10.3 TAR.GZ 다운로드
권장 설치 방식
Glitter Media Manager는 GitHub 저장소 URL을 이용한 설치 및 업데이트를 우선 권장합니다.
이 방식은 그누보드7 관리자에서 저장소 주소를 직접 입력하여 모듈을 설치하거나 업데이트할 수 있는 방법입니다.
별도의 배포 파일이 필요한 환경을 위해 ZIP 및 TAR.GZ 패키지도 제공합니다.
라이선스
MIT License
Glitter Media Manager는 MIT 라이선스에 따라 제공됩니다.
Copyright © Glitter.kr
Glitter Media Manager v1.10.3 — 독립적인 미디어 자산 관리, 그누보드7을 위한 공통 미디어 플랫폼.
이 개발자의 다른 프로젝트