MistServer(3.8) 설치 실습 - Ubuntu에 직접 설치 vs Dokcer 컨테이너 실행
"본 글은 과거 티스토리에서 발행했던 콘텐츠를 기반으로, 최신 정보를 반영해 새롭게 정리한 업데이트 버전입니다."
📚 목차
1. MistServer란? - 용도 및 지원 프로토콜, 주요 특징 소개
2. MistServer 설치 실습 - Ubuntu
3. MistServer 설치 실습 - Docker 환경 구성
✔ 마무리

1. MistServer란? - 용도 및 지원 프로토콜, 주요 특징 소개
MistServer는 실시간 라이브 스트리밍과 주문형 비디오(VOD) 기능을 모두 지원하는 고성능 오픈소스 미디어 서버입니다.
다양한 인풋 및 아웃풋 프로토콜을 유연하게 처리할 수 있으며, 모듈형 아키텍처를 기반으로 설계되어 필요한 기능만 동적으로 로드함으로써 자원 낭비를 최소화할 수 있습니다.
기본적으로 RTMP, HLS, MPEG-DASH, WebRTC, SRT 등 현대 스트리밍 환경에서 요구되는 주요 프로토콜을 모두 지원하고 있으며, FFmpeg, GStreamer, OBS Studio 등 다양한 미디어 처리 도구와도 손쉽게 연동할 수 있습니다.
🔷MistServer의 주요 활용 사례
MistServer는 다음과 같은 다양한 환경에서 활용될 수 있습니다:
▸ CCTV 스트림 수집 및 장기 보관 시스템
▸ RTMP 인제스트 기반의 실시간 방송 플랫폼
→ 예: RTMP 입력 → HLS 또는 WebRTC 출력 구조
▸ 사내 교육용 IPTV 시스템
▸ SRT 기반 멀티 소스 게이트웨이 구축 환경
🔷 지원 프로토콜
MistServer는 단일 서버에서 다양한 프로토콜을 동시에 처리할 수 있어, 하드웨어 수를 최소화하면서도 다중 기기 대응이 가능합니다.
▸ 입력 (Ingest) : RTMP, SRT, HLS, MPEG-DASH, WebRTC, RTP, UDP 등
▸ 출력 (Delivery) : HLS, MPEG-DASH, RTMP, RTSP, WebRTC, SRT 등
이러한 구조 덕분에 MistServer는 방송국, 보안 관제, 온라인 교육 플랫폼 등 다양한 환경에서 프로토콜 변환 허브로서 널리 활용되고 있습니다.
🔷주요 특징 요약
MistServer는 단순한 미디어 서버를 넘어, 대규모 실시간 처리 환경에서도 유연하게 대응할 수 있는 아키텍처를 제공합니다.
| 항목 | 설명 |
| 모듈 기반 구조 | 기능별 독립 실행 파일로 구성되어, 필요한 기능만 로드 가능 |
| 고성능 처리 능력 | 수천 동시 접속 상황에서도 안정적 스트리밍 제공 |
| Web UI 지원 | /control 경로를 통해 관리자 패널 제공 |
| API 기반 자동화 | RESTful API(/api, /api2) 및 WebSocket API 지원 |
| 확장성 확보 | DVR, 녹화, 트랜스코딩, 실시간 통계 등 다양한 기능 확장 가능 |
✔️ 참고: Windows 설치 가능 여부
MistServer는 Windows용 설치 파일도 공식 지원하지만, 간단한 테스트나 기능 확인 목적이 아니라면, Ubuntu 24.04 LTS와 같은 안정적인 서버 환경에 설치하여 systemd 서비스로 운영하는 방식을 권장합니다.
2. MistServer 설치 실습 - Ubuntu
MistServer는 별도의 패키지 매니저를 사용하지 않고, 공식 설치 스크립트를 통해 직접 설치하는 방식으로 배포됩니다.
설치 방식이 단순한 만큼, 설치 경로 및 실행 구조를 정확히 이해하고 systemd 서비스로 구성하는 것이 실무 운영의 핵심입니다.
1. 설치 준비 - curl 설치
MistServer는 설치 과정에서 curl을 사용하므로 먼저 설치 여부를 확인합니다. 일반적으로 최신 Ubuntu에는 포함되어 있으나, 없다면 아래 명령어로 설치할 수 있습니다.
sudo apt update
sudo apt install curl -y
설치는 반드시 sudo 권한이 있는 사용자 계정으로 진행해야 하며, 운영환경에서는 root 계정 전환을 권장하지 않습니다.
2. MistServer 설치 실행
공식 설치 스크립트는 .tar.gz 압축 파일을 다운로드한 뒤 자동으로 해제하고 실행 파일을 배치합니다.
다음 명령어 한 줄로 설치를 시작할 수 있습니다
# 1. root 권한으로 전환
sudo su
# 2. 최신 MistServer 설치
curl -o - https://releases.mistserver.org/is/mistserver_64Vlatest.tar.gz 2>/dev/null | sh
# 설치결과
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2121 0 2121 0 0 1618 0 --:--:-- 0:00:01 --:--:-- 1619
Downloading and installing binaries
./MistAnalyserAV1
./MistAnalyserDTSC
./MistAnalyserEBML
- 중략 -
detected systemd
Created symlink /etc/systemd/system/multi-user.target.wants/mistserver.service → /etc/systemd/system/mistserver.service.
Successfully installed MistServer using systemd. Starting MistServer.
이 메시지는 다음의 세 가지 작업이 자동으로 완료되었음을 의미합니다:
▸ /usr/bin/에 실행 파일 배치
▸ systemd 서비스 유닛 파일 생성
▸ MistServer 서비스 자동 시작
설치가 완료되면 다음과 같은 실행 파일들이 /usr/bin 경로에 위치하게 됩니다
ls /usr/bin/Mist*
| 실행 파일 | 설명 |
| MistController | 서버 메인 제어 프로세스 |
| MistIn-* | 입력 처리 모듈 (RTMP, WebRTC, UDP 등) |
| MistOut-* | 출력 처리 모듈 (HLS, DASH, RTMP 등) |
| MistProc | 외부 트랜스코딩/비동기 처리 |
| MistAnalyser | 스트림 구조 분석 도구 |
| MistUtil | 진단/테스트용 유틸리티 |
설치 과정에서는 의존성 라이브러리 설치나 추가 컴파일 작업이 없으며, 대부분의 기능이 바로 사용 가능한 형태로 제공됩니다.
3. 설치 후 서비스 동작 및 포트 점검
MistServer는 설치와 동시에 systemd 서비스로 자동 등록 및 실행되므로, 아래 절차를 통해 정상적으로 구동되고 있는지 확인할 수 있습니다.
# 실행 중인 프로세스 확인
ps -ef | grep MistController
# 포트 열림 상태 확인 (기본 포트: 4242)
ss -tuln | grep 4242
or
netstat -tuln | grep 4242 # net-tools 패키지 설치 시 사용 가능

4. MistServer 제거 방법
MistServer는 공식 제거 스크립트를 통해 깨끗하게 제거할 수 있습니다. 설정 파일과 실행 파일이 모두 삭제됩니다:
# 1. root 권한으로 전환
sudo su
# 2. MistServer 제거
curl -o - https://releases.mistserver.org/uninstallscript.sh
# 제거 예시
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1845 100 1845 0 0 1338 0 0:00:01 0:00:01 --:--:-- 1339
Starting MistServer removal script.
Are you sure you want to remove MistServer? [y/N]
주의:
이 명령은 MistServer의 모든 구성 요소를 삭제합니다.
설정 파일이나 사용자 데이터를 백업하려면 먼저 /etc/mistserver.conf 및 관련 로그를 따로 보관해 두세요.
5. 서비스 상태 확인 및 제어
# 서비스 상태 확인 (현재 실행 중인지 확인)
sudo systemctl status mistserver
# 서비스 중지 (일시적으로 기능 비활성화 시)
sudo systemctl stop mistserver
# 서비스 시작 (중지된 상태에서 다시 시작)
sudo systemctl start mistserver
# 설정 반영 또는 문제 해결 시 재시작
sudo systemctl restart mistserver
3. MistServer 설치 실습 – Docker 환경 구성
MistServer는 공식적으로 Docker 이미지를 제공하고 있으며, 빠른 테스트 또는 클라우드 기반 스트리밍 환경을 구축할 때 매우 유용합니다.
특히 운영 서버와 별도로 개발 환경을 격리하거나, CI/CD 파이프라인 내에서 자동화된 스트리밍 노드를 구성할 때도 적합합니다.
🔷 MistServer Docker 이미지 설치
MistServer의 Docker 이미지는 Docker Hub에 등록되어 있으며, 다음 명령어로 다운로드할 수 있습니다
# 1. Docker 설치 확인
docker --version
- 결과 -
Docker version 28.3.3, build 980b856
# 2. Docker 이미지 최신 버전 설치
sudo docker pull ddvtech/mistserver
- 결과 -
Using default tag: latest
latest: Pulling from ddvtech/mistserver
5edf25043037: Pull complete
Digest: sha256:c0c91f3a3efd3ed4f9bc89ccbd5363531712568ddccdf5246ee69d768641851b
Status: Downloaded newer image for ddvtech/mistserver:latest
docker.io/ddvtech/mistserver:latest
# 3. 설치 이미지 목록 확인
sudo docker images
- 결과 -
REPOSITORY TAG IMAGE ID CREATED SIZE
ddvtech/mistserver latest 9a1c9c196cfb 37 hours ago 59.8MB
이미지를 다운로드하면 별도 설치 없이 컨테이너를 바로 실행할 수 있습니다.
🔷 기본 실행 예시 (볼륨 마운트 없이)
테스트 목적 또는 임시 스트리밍 서버로 사용할 경우, 다음과 같이 바로 실행할 수 있습니다
sudo docker run -d --name mistserver \
-p 4242:4242 -p 1935:1935 -p 8080:8080 \
ddvtech/mistserver
- 설명 -
4242 : Web UI 및 API 포트
1935 : RTMP 인제스트 수신용
8080 : HTTP 기반 스트림 출력 (HLS, DASH 등)
포트 충돌이 있을 경우, -p <다른포트>:<컨테이너포트> 형식으로 호스트 포트를 변경할 수 있습니다.
예: -p 8123:4242
🔷 운영 환경을 위한 볼륨 마운트 구성
Docker는 기본적으로 컨테이너가 삭제되면 설정과 데이터도 함께 사라집니다.
운영 환경에서는 설정 파일, 녹화 데이터, 로그를 외부 볼륨으로 분리 저장하는 것이 필수적입니다.
1. 호스트 경로 생성 및 권한 설정
# 디렉토리 생성 및 권한 설정
sudo mkdir -p /opt/mist/config
sudo chown -R root:root /opt/mist/config # 컨테이너가 root로 실행된다면
sudo chmod -R 755 /opt/mist/config
sudo mkdir -p /opt/mist/data
sudo chown -R root:root /opt/mist/data # 컨테이너가 root로 실행된다면
sudo chmod -R 755 /opt/mist/data
MistServer 컨테이너는 일반적으로 root 사용자로 동작하므로 위 권한 설정을 따라야 합니다.
2. 볼륨 마운트 기반 컨테이너 실행
sudo docker run -d --name mistserver \
--restart always \
--shm-size=4g \
-p 4242:4242 -p 1935:1935 -p 8080:8080 \
-v /opt/mist/config:/config \
-v /opt/mist/data:/data \
-v /opt/mist/logs:/logs \
ddvtech/mistserver \
/mistserver/mistserver -c /config/mistserver.conf
= 설명 =
sudo docker run -d \ # 컨테이너를 백그라운드(detached) 모드로 실행
--name mistserver \ # 컨테이너 이름을 'mistserver'로 지정
--restart always \ # 컨테이너가 종료되거나 시스템 재부팅 시 자동 재시작
--shm-size=4g \ # 공유 메모리 영역을 4GB로 설정(전체 RAM의 80~90% 수준)
-p 4242:4242 \ # MistServer Web UI 및 API용 포트 (기본 포트 4242)
-p 1935:1935 \ # RTMP 입력 포트 (예: OBS로 송출 시 사용)
-p 8080:8080 \ # HTTP 출력용 포트 (HLS, DASH 등의 재생을 위한 포트)
-v /opt/mist/config:/config \ # 설정 파일 저장용 볼륨 마운트 (호스트→컨테이너)
-v /opt/mist/data:/data \ # 녹화 파일 등 저장용 데이터 볼륨 마운트
-v /opt/mist/logs:/logs \ # 로그 파일 저장용 볼륨 마운트
ddvtech/mistserver \ # 사용할 MistServer Docker 이미지
/mistserver/mistserver -c /config/mistserver.conf # 설정 파일을 명시하여 MistServer 실행
본 예제에서는 -v 옵션을 사용해 마운트를 설정하고 있지만, 운영 환경이나 스크립트 자동화에서는 --mount 방식의 명시적 바인드 마운트를 사용하는 것이 더 안전하고 권장됩니다.
참고: 테스트 환경에서는 /opt/mist/logs에 로그 파일이 생성되지 않았고, 실행 파라미터나 MistServer 내부 설정과의 연관성을 추가로 분석할 필요가 있습니다
🔷 Docker 기본 명령어 요약
| 작업 | 명령어 |
| 실행 중인 컨테이너 확인 | sudo docker ps |
| 전체 컨테이너 확인 (종료 포함) | sudo docker ps -a |
| 로그 확인 | sudo docker logs -f mistserver |
| 컨테이너 정지 | sudo docker stop mistserver |
| 컨테이너 시작 | sudo docker start mistserver |
| 컨테이너 삭제 | sudo docker rm mistserver |
MistServer가 정상적으로 실행되었다면, 아래 주소로 웹 인터페이스에 접속할 수 있습니다.
http://<서버IP>:4242
처음 접속 시 관리자 계정 생성 페이지가 표시되며, 이후 스트림 입력 설정을 통해 사용을 시작할 수 있습니다.

✔ 마무리
MistServer는 RTMP, HLS, WebRTC 등을 유연하게 처리할 수 있는 경량 스트리밍 서버로, Ubuntu 설치와 Docker 배포 모두를 지원합니다.
Ubuntu 설치: systemd 기반 서비스로 자동 등록되어 장기 운영에 적합
Docker 실행: 테스트 및 클라우드 환경에 유리하며, --mount 바인드 마운트로 설정 유지 가능
공통 운영 팁:
▸ /config, /data, /logs 외부 마운트 권장
▸ 공유 메모리 설정(--shm-size=4g) 권장
▸ Web UI와 API를 통한 유연한 제어 가능
실제 운영에서는 Ubuntu 또는 Docker 중 목적에 맞는 방식을 선택하고, 구성과 로그 경로를 명확히 분리하는 것이 핵심입니다.
👉 관련 글 링크
1. [MistServer] 설치 실습 - Ubuntu에 직접 설치 vs Docker 컨테이너 실행
2. [MistServer] 설치 후 필수 기본 설정 가이드 (v3.8 기준)
3. [MistServer] Input 실습: 다양한 입력 방식 설정과 스트림 결과 확인
4. [MistServer] Push 기능을 이용한 스트림 녹화 설정
5. [MistServer] DVR(Time-Shift) 설정과 재생 실습
6. [MistServer] OBS Studio와 MistServer 3.8을 이용한 라이브 방송 실습(RTMP,WHIP)
7. [MistServer] API 인증 방식과 HTTP·WebSocket API 비교
8. [MistServer] 스트림 관리 API 실습 (Python)
※ 게시된 글 및 이미지 중 일부는 AI 도구의 도움을 받아 생성되거나 다듬어졌습니다.
'1.시스템&인프라 > 스트리밍' 카테고리의 다른 글
| [MistServer] Input 실습: 다양한 입력 방식 설정과 스트림 결과 확인 (0) | 2025.11.06 |
|---|---|
| [MistServer] 설치 후 필수 기본 설정 가이드 (v3.8 기준) (0) | 2025.11.06 |
| [FFmpeg] 인코딩 실습: CPU(libx264)와 CUDA(h264_nvenc) 비교 (0) | 2025.11.05 |
| [FFmpeg] RTSP 스트림을 fMP4로 변환해 초저지연 TCP 전송하기 (0) | 2025.11.05 |
| [FFmpeg] SHA-256 Digest 인증 대응 FFmpeg 7.1 정적 빌드 – MinGW64 + CUDA + 인증 로직 패치 (0) | 2025.11.05 |