로컬과 플릿의 Compose 운영을 단일 대시보드로 통합하는 대시보드
로컬 호스트와 다수 노드를 단일 컨테이너로 관리하면서 Compose 파일을 호스트 상의 소스 오브스로 유지하는 웹 기반 Docker Compose 관리 플랫폼이다.
TL;DR
Sencho는 호스트의 Compose 파일을 소스 오브프로 유지하면서 단일 컨테이너로 로컬과 다중 노드를 웹 UI에서 관리하는 플랫폼이다. 각 노드에서 /var/run/docker.sock을 마운트하여 로컬 Docker API로 작업을 수행하고 프라이머리 인스턴스가 장기 API 토큰을 통해 HTTP 및 WebSocket 프록시 역할을 하여 원격 노드를 제어한다. 헬스 기반 롤아웃, Git 소스 스택 동기화, 로그 집계와 스택 사전검사 기능을 통해 운영 안정성과 배포 안전성을 높이며 NAT 환경에서는 Pilot Agent의 아웃바운드 터널로 인바운드 포트를 열지 않고 연결을 유지한다. 다만 호스트 Docker 소켓 마운트는 높은 권한을 부여하므로 프로덕션 배포 시 리버스 프록시와 비루트 컨테이너 실행 등 보안 강화가 필요하다.
주요 기능
- 스택 생성과 배포를 수행하고 재시작, 중지, 이미지 풀 같은 전체 Compose 라이프사이클 작업을 UI에서 직접 실행할 수 있다. 에디터는 Monaco 편집기를 사용하며 저장 전 diff 미리보기와 단일 클릭 롤백 기능을 제공한다. Compose 파일을 파일 시스템에 그대로 두고 편집하는 워크플로를 보존하면서 GUI로 운영성을 높인다.
- 헬스 게이티드 업데이트를 지원하여 헬스체크가 통과될 때까지 롤아웃을 보류하고 지연된 업데이트를 감지하여 인앱 복구와 롤백을 유도한다. Git 소스 스택을 통해 저장소의 다중 파일 Compose 구성을 순서대로 동기화하고 자동 풀 기능을 제공한다. Compose 사전검사 기능인 Compose Doctor가 배포 전 문제를 포착한다.
- 로그 집계와 스트리밍, 라이브 컨테이너 통계, 이미지 업데이트 알림을 제공하여 운영 중인 서비스 상태를 중앙에서 관찰할 수 있다. 임계값 기반 알림과 노드별 호스트 메트릭을 표시하여 자원 사용과 상태를 추적할 수 있다. 스택 도시에세 서류와 실행 중 상태의 편차를 감지하는 드리프트 플래그를 지원한다.
- 멀티 노드 플릿 관리를 지원하며 인증된 HTTP 및 WebSocket 프록시를 통해 원격 노드를 중앙에서 제어할 수 있다. NAT 혹은 엄격한 방화벽 뒤에 있는 노드는 Pilot Agent가 단일 아웃바운드 WebSocket 터널을 생성하여 인바운드 포트를 열지 않고 연결된다. Fleet 스냅샷과 노드 호환성 검사를 통해 배포 전 검증을 수행한다.
어떻게 동작하는가
각 노드에서 Sencho는 단일 컨테이너로 실행되어 호스트의 /var/run/docker.sock을 마운트하고 로컬 Docker API를 직접 호출하여 Compose 명령과 컨테이너 관리를 수행한다. 다중 노드를 관리할 때는 프라이머리 인스턴스가 장기 API 토큰을 이용해 인증된 HTTP 및 WebSocket 프록시 역할을 하며 원격 요청을 프록시하여 중앙 대시보드에서 제어하도록 만든다. 방화벽이 있는 원격 호스트는 Pilot Agent가 생성하는 아웃바운드 WebSocket 터널을 사용하여 인바운드 포트 개방 없이 연결되며 이 과정에서 원격 Docker 소켓은 네트워크상에 노출되지 않는다.
해결 문제
로컬 파일 기반 Compose 워크플로를 유지하면서 GUI로 배포·편집·로그 조회·볼륨 탐색 등을 수행하는 운영 부담을 줄인다. 여러 머신에 분산된 Compose 스택을 SSH나 VPN 없이 중앙 대시보드에서 관리하고 WebSocket 기반 프록시로 NAT 환경에서도 연결을 유지하게 한다. 헬스 기반 롤아웃 제어와 자동 복구 규칙을 통해 수동 개입을 줄이며 운영 안정성을 높인다.
지금 주목받는 이유
홈랩과 소규모 팀에서 로컬 Compose 기반 워크플로를 유지하면서 다중 호스트 운영을 단순화하는 요구가 늘어나며 Sencho는 UI 기반 관리와 프록시 기반 멀티노드 연결을 결합하여 관심을 받고 있다.
차별점
- Compose 파일을 호스트 파일 시스템의 소스 오브스로 그대로 유지하여 기존 파일 기반 워크플로와 충돌하지 않고 UI를 통해 운영 편의를 추가한다. 이는 Git 동기화와 에디터 기반 diff/롤백 기능과 함께 작동하여 코드 기반 배포와 수동 편집을 동시에 허용한다.
- 멀티 노드 통신에 별도의 인바운드 Docker 소켓 노출이나 SSH 의존성이 없도록 설계되어 NAT 및 방화벽 환경에서도 Pilot Agent의 아웃바운드 WebSocket 터널을 통해 안전하게 연결된다. 이 방식은 원격 노드가 공용 네트워크에 Docker API를 노출하지 않으면서 중앙에서 제어 가능하게 만든다.
- 헬스 게이티드 업데이트와 Compose Doctor 같은 배포 전 검사 기능을 내장하여 자동 이미지 롤아웃 중 실패 지점을 감지하고 인앱 복구 절차를 제공한다. 이는 단순한 UI 제어를 넘어 헬스 기반 롤백과 stalled-update 감지로 운영 리스크를 낮춘다.
사용 사례
- 단일 물리 서버나 가상 머신에서 여러 Compose 스택을 운영하는 홈랩 환경에서 파일 기반 Compose 워크플로를 유지하면서 GUI로 배포와 로그 조회를 수행할 때 유용하다. 사용자는 기존의 파일 경로와 구조를 그대로 두고 대시보드에서 스택을 배포하거나 편집할 수 있다. 헬스 게이트와 롤백 기능으로 홈랩 서비스의 가용성을 높일 수 있다.
- 사내 소규모 DevOps 팀이 여러 홈서버나 사무실 서버를 중앙에서 관리할 때 프라이머리 인스턴스를 통해 인증된 HTTP 및 WebSocket 프록시로 원격 노드를 제어하는 시나리오에 적합하다. NAT 또는 방화벽으로 인해 인바운드 포트 개방이 불가능한 노드는 Pilot Agent의 아웃바운드 터널을 통해 안전하게 연결된다. Git 소스 스택과 연계하면 코드 변경을 중앙에서 동기화하고 배포할 수 있다.
- 자동화된 이미지 롤아웃과 장애 복구 정책을 운영 파이프라인에 결합하려는 경우 Sencho의 Auto-update와 Auto-heal 정책을 사용하여 이미지 업데이트를 헬스 체크로 통제하고 실패 시 복구 작업을 트리거할 수 있다. Webhook과 스케줄링 기능을 연계하면 CI에서의 배포를 손쉽게 연결할 수 있다. Fleet 스냅샷과 문서-실행 상태 드리프트 감지 기능으로 규정 준수와 복구 시점을 관리할 수 있다.
시작하기
README의 Quick start에 따라 단일 컨테이너로 실행하면 되며 docker compose 예시에서는 saelix/sencho:latest 이미지를 사용하고 호스트의 /var/run/docker.sock과 Compose 루트 경로를 컨테이너에 마운트하도록 구성한다. 기본 포트 매핑은 호스트 포트 1852와 컨테이너 포트 1852를 사용하며 컨테이너를 띄운 뒤 http://your-server:1852로 접속하여 관리자 계정을 생성하면 UI에 접근할 수 있다. 운영 환경에서는 TLS 종단을 담당하는 리버스 프록시 앞에 놓고 노드 간 연결에는 장기 API 토큰을 발급하여 프라이머리와 원격 인스턴스 간 인증된 프록시 통신을 설정해야 한다.
요구사항
- 호스트에 Docker가 설치되어 있어야 하고 Sencho 컨테이너에 /var/run/docker.sock을 마운트하여 호스트 Docker API에 접근할 수 있어야 한다. 이 소켓 마운트는 컨테이너가 호스트에서 컨테이너 생성과 이미지 풀, 로그 조회 같은 Docker 작업을 수행하게 하는 핵심 권한을 제공한다. 보안 요구가 있다면 비루트 컨테이너 사용자 실행과 앞단의 리버스 프록시로 인증을 강제하는 방법을 검토해야 한다.
- 다중 노드 연결을 위해서는 각 노드에서 Sencho를 동일하게 설치하고 프라이머리 대시보드에 URL과 장기 API 토큰을 등록할 수 있어야 한다. 방화벽으로 인한 인바운드 제약이 있을 경우 Pilot Agent를 사용하여 아웃바운드 WebSocket 터널을 생성하는 네트워크 아키텍처를 준비해야 한다. 상용 Admiral 기능을 사용할 경우 유료 라이선스와 관련된 외부 라이선스 검증 호출이 발생할 수 있으므로 라이선스 활성화 절차를 확인해야 한다.
이미지 분석




221
Stars
7
Forks
+204
Trending
0
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.