토. 7월 26th, 2025

🌟 소개

Mattermost는 오픈소스 기업용 메신저로, 슬랙(Slack)의 대안입니다. Docker Compose를 활용하면 MySQL/PostgreSQL DB, Nginx 프록시와 함께 5분 만에 프로덕션 환경을 구축할 수 있습니다! 이 가이드에선:

  • docker-compose.yml 작성법
  • 환경 변수 설정을 위한 .env 파일 활용법
  • HTTPS 적용 팁
    을 단계별로 설명합니다.

⚙️ 1. 사전 준비 사항

  • Docker & Docker Compose 설치
    # Ubuntu 예시
    sudo apt update && sudo apt install docker.io docker-compose
  • 도메인 준비 (선택): HTTPS 적용 시 필요
  • 포트 충돌 체크: 80, 443, 8065 포트 사용 확인

📂 2. 프로젝트 구조 생성

mkdir mattermost-docker && cd mattermost-docker  
mkdir -p ./volumes/{app,db,web/cert}  # 데이터 영구 저장 디렉토리
touch docker-compose.yml .env  # 핵심 파일 생성

🐋 3. docker-compose.yml 작성

version: '3.7'

services:
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      MYSQL_DATABASE: ${DB_NAME}
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PASSWORD}
    volumes:
      - ./volumes/db:/var/lib/mysql  # DB 데이터 보존
    networks:
      - mm-network

  app:
    image: mattermost/mattermost-team-edition
    depends_on:
      - db
    environment:
      MM_SQLSETTINGS_DRIVERNAME: mysql
      MM_SQLSETTINGS_DATASOURCE: "${DB_USER}:${DB_PASSWORD}@tcp(db:3306)/${DB_NAME}?charset=utf8mb4"
      MM_SERVICESETTINGS_SITEURL: ${SITE_URL}
    volumes:
      - ./volumes/app:/mattermost/data  # 업로드 파일 등 저장
    networks:
      - mm-network

  web:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"  # HTTPS 적용 시
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - ./volumes/web/cert:/etc/letsencrypt  # 인증서 저장
    depends_on:
      - app
    networks:
      - mm-network

networks:
  mm-network:
    driver: bridge

🔍 주요 설정 설명

  • 의존성 관리: depends_on으로 DB → App → Web 실행 순서 보장
  • 네트워크: 서비스 간 통신을 위한 mm-network 브릿지 생성
  • 볼륨 마운트: 컨테이너 재생성 시 데이터 유지

⚡ 4. .env 파일 설정

# DB 설정
DB_ROOT_PASSWORD=SuperSecretRootPass!123
DB_NAME=mattermost
DB_USER=mm_user
DB_PASSWORD=Strong!UserPass456

# Mattermost 설정
SITE_URL=https://chat.yourdomain.com  # HTTPS 필수!

🚨 주의사항

  1. 비밀번호는 영문 대소문자+숫자+특수문자 조합으로 생성
  2. SITE_URL은 반드시 HTTPS로 시작 (SSL 적용 시)
  3. 실제 운영 환경에선 .env 파일 권한을 600으로 설정

🔒 5. Nginx 설정 (HTTPS 적용)

nginx.conf 파일 생성:

events {}
http {
  server {
    listen 80;
    server_name chat.yourdomain.com;
    return 301 https://$host$request_uri;  # HTTP → HTTPS 강제 전환
  }

  server {
    listen 443 ssl;
    server_name chat.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/chat.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/chat.yourdomain.com/privkey.pem;

    location / {
      proxy_pass http://app:8065;
      proxy_set_header X-Forwarded-For $remote_addr;
    }
  }
}

📜 인증서 발급 (Let’s Encrypt)

docker run -it --rm --name certbot \
  -v "./volumes/web/cert:/etc/letsencrypt" \
  -p 80:80 \
  certbot/certbot certonly --standalone -d chat.yourdomain.com

🚀 6. 실행 및 확인

docker-compose up -d  # 백그라운드 실행
docker-compose logs -f app  # 실시간 로그 모니터링
  • 접속 테스트: https://chat.yourdomain.com
  • 초기 관리자 계정: sysadmin / 비밀번호는 콘솔 로그에서 확인

🛠 7. 추가 설정 팁

🔄 백업 구성

# DB 백업
docker exec -i mattermost-docker_db_1 mysqldump -u root -p${DB_ROOT_PASSWORD} ${DB_NAME} > backup.sql

# 파일 저장소 백업
tar czvf mattermost-data.tar.gz ./volumes/app

⚙️ 환경 변수 확장

.env에 추가 가능:

# 이메일 알림 설정
MM_EMAILSETTINGS_SMTPSERVER=smtp.gmail.com
MM_EMAILSETTINGS_SMTPPORT=587
MM_EMAILSETTINGS_CONNECTION_SECURITY=starttls
MM_EMAILSETTINGS_FEEDBACKNAME=MattermostBot

🎯 결론

Docker Compose로 Mattermost를 구성하면:
빠른 배포 (5분 내 완성)
업그레이드 용이 (docker-compose pull && docker-compose up -d)
확장성 (사용자 증가 시 DB/App 분리 배치 가능)
Slack 대비 데이터 자체 호스팅으로 보안성 ↑ + 연간 $200k+ 비용 절감 효과!

> 💬 문제 발생 시 공식 문서 참고:
> Mattermost Docker Guide

초기 설정 후 팀원 초대 → 채널 생성 → 슬래시 명령어 활용으로 생산성을 높여보세요! 🚀 D

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다