기술 가이드

Mattermost를 Ubuntu 16.04에 PostgreSQL 및 Nginx로 설치하기

5 min read 서버 설치 업데이트됨 20 Oct 2025
Mattermost 설치: Ubuntu 16.04 + PostgreSQL + Nginx
Mattermost 설치: Ubuntu 16.04 + PostgreSQL + Nginx

TL;DR

Mattermost를 자체 호스팅하려면 Ubuntu 16.04에 PostgreSQL을 데이터베이스로, Nginx를 리버스 프록시로 구성합니다. 이 가이드는 Mattermost 3.4.0을 예로 하여 사용자 계정 생성, systemd 서비스 등록, Nginx SSL 설정까지 단계별로 설명합니다. 설치 후에는 서비스 상태, 방화벽, SSL 및 백업 정책을 확인하세요.

핵심 의도 및 관련 검색어

주요 의도: Mattermost 설치 가이드 관련 변형: 자체 호스팅 Mattermost 설치, Ubuntu 16.04 Mattermost, PostgreSQL로 Mattermost 구성, Nginx 리버스 프록시 Mattermost, Mattermost systemd 서비스

사전 준비

  • 운영체제: Ubuntu 16.04 64비트
  • 루트 권한 또는 sudo 권한
  • 고정 도메인 (예: mattermost.mydomain.com)
  • 포트 80/443(HTTP/HTTPS) 열려 있어야 함

중요: 이 튜토리얼에서는 예제 파일명과 버전(mattermost-3.4.0)을 사용합니다. 최신 릴리스나 보안 패치가 있을 수 있으므로 실제 배포 시 최신 문서를 확인하세요.


1. PostgreSQL 설치 및 구성

Mattermost는 MySQL과 PostgreSQL을 지원하지만 이 가이드에서는 PostgreSQL을 사용합니다. 서버에 SSH로 접속한 후 리포지토리를 업데이트합니다.

ssh [email protected]
sudo apt-get update

루트(또는 sudo)로 PostgreSQL을 설치합니다.

sudo apt-get install postgresql postgresql-contrib

설치 후 postgres 계정으로 전환하여 psql 셸에 접속합니다.

su - postgres
psql

postgres 계정의 비밀번호를 변경합니다.

\password postgres
Enter new password:

새 데이터베이스와 사용자를 생성합니다. 이 예제에서는 데이터베이스명은 “mattermostdb”, 사용자명은 “matteruser”, 비밀번호는 “matterpassword”를 사용합니다. 실제 배포 시에는 강력한 비밀번호를 사용하세요.

CREATE DATABASE mattermostdb;
CREATE USER matteruser WITH PASSWORD 'matterpassword';
GRANT ALL PRIVILEGES ON DATABASE mattermostdb TO matteruser;
\q

Mattermost용 PostgreSQL 데이터베이스 구성 화면

참고: PostgreSQL 설정(인증, pg_hba.conf 등)을 내부 보안 정책에 맞게 추가로 조정하세요.


2. Mattermost 설치 및 기본 설정

Mattermost는 일반 사용자 권한으로 실행할 것을 권장합니다. 여기서는 “matter”라는 시스템 사용자를 만들어 Mattermost를 실행합니다.

useradd -m -s /bin/bash matter
passwd matter

‘matter’ 사용자로 전환하여 최신 릴리스(예제: 3.4.0)를 다운로드합니다.

su - matter
wget https://releases.mattermost.com/3.4.0/mattermost-3.4.0-linux-amd64.tar.gz

압축을 풀고 디렉터리로 이동합니다.

tar -xzvf mattermost-3.4.0-linux-amd64.tar.gz
cd mattermost/

사용자 파일을 저장할 데이터 디렉터리를 만들고 설정 파일을 편집합니다.

mkdir data/
vim config/config.json

Nginx 리버스 프록시 뒤에서 동작시키므로 Mattermost가 로컬에서만 바인딩되도록 ServiceSettings에 로컬 IP를 넣습니다.

"ListenAddress": "127.0.0.1:8065",

SqlSettings에서 PostgreSQL 드라이버와 데이터베이스 연결 문자열을 설정합니다.

"DriverName": "postgres",
"DataSource": "postgres://matteruser:[email protected]:5432/mattermostdb?sslmode=disable&connect_timeout=10",

노트:

  • matteruser = PostgreSQL 사용자
  • matterpassword = 사용자가 설정한 비밀번호
  • mattermostdb = 생성한 데이터베이스

파일 저장 후 bin 디렉터리로 가서 플랫폼을 실행해 동작을 확인합니다.

cd bin/
./platform

서버가 127.0.0.1:8065에서 실행되는 것을 확인할 수 있습니다. 예제를 중단하려면 Ctrl+C를 누릅니다.

Ubuntu 16.04에서의 Mattermost 실행 화면

중요: 이 가이드의 예시는 Mattermost 포트 8065를 사용합니다. 일부 문서에서 8056 등 다른 포트가 언급될 수 있으니 설정 파일과 Nginx 설정의 포트가 일치하는지 반드시 확인하세요.


3. systemd 서비스로 등록

서버 재부팅 시 Mattermost가 자동으로 시작되도록 systemd 서비스 파일을 생성합니다.

cd /etc/systemd/system/
vim mattermost.service

파일 내용(복사 후 저장):

[Unit]
Description=Mattermost is an open source, self-hosted Slack-alternative
After=syslog.target network.target

[Service]
Type=simple
User=matter
Group=matter
ExecStart=/home/matter/mattermost/bin/platform
PrivateTmp=yes
WorkingDirectory=/home/matter/mattermost
Restart=always
RestartSec=30
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

파일 저장 후 systemd 데몬을 리로드하고 서비스를 시작합니다.

systemctl daemon-reload
systemctl start mattermost

서비스 상태와 포트 리스닝을 확인합니다.

netstat -plntu
systemctl status mattermost

Mattermost 서비스 실행 상태 화면

수정 사항 적용 후 자동 시작을 설정하려면:

systemctl enable mattermost

4. Nginx 설치 및 리버스 프록시 구성

Nginx를 설치하고 SSL(자체 서명)을 생성하여 리버스 프록시로 설정합니다.

sudo apt-get install nginx

SSL 폴더 생성 후 자체 서명 인증서를 생성합니다.

cd /etc/nginx/
mkdir ssl/; cd ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/mattermost.crt -keyout /etc/nginx/ssl/mattermost.key
chmod 400 mattermost.key

가상 호스트 파일을 생성합니다.

cd /etc/nginx/sites-available/
vim mattermost

가상 호스트 예시(도메인명을 실제 도메인으로 교체하세요):

server {
   listen         80;
   server_name    mattermost.mydomain.com;
   return         301 https://$server_name$request_uri;
}

server {
   listen 443 ssl;
   server_name mattermost.mydomain.com;

   ssl on;
   ssl_certificate /etc/nginx/ssl/mattermost.crt;
   ssl_certificate_key /etc/nginx/ssl/mattermost.key;
   ssl_session_timeout 5m;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:10m;

   location / {
      gzip off;
      proxy_set_header X-Forwarded-Ssl on;
      client_max_body_size 50M;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Frame-Options SAMEORIGIN;
      proxy_pass http://127.0.0.1:8065;
   }
}

사이트를 활성화하고 구성을 테스트한 뒤 Nginx를 재시작합니다.

ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

보안 권장 사항: 실제 운영환경에서는 Let’s Encrypt 또는 공인 인증서를 사용하세요. 자체 서명 인증서는 테스트 목적에만 적합합니다.


5. 웹에서 테스트 및 초기 설정

브라우저에서 https://mattermost.mydomain.com 으로 접속하면 HTTPS로 리다이렉트됩니다. 처음 로그인 시 계정을 생성하고, 팀 및 시스템 콘솔에 접근하여 환경을 설정하세요.

Mattermost 계정 생성 화면

팀 생성 또는 관리자 콘솔 접근 화면

시스템 콘솔 대시보드 화면

팀 생성 화면

팀 대시보드 화면

Mattermost 채팅 인터페이스

설치가 완료되면 다음 항목을 점검하세요:

  • 시스템 콘솔에서 SMTP, 인증(SSO), 파일 업로드 크기 등 환경 설정
  • SSL 인증서 유효성 및 체인
  • 방화벽(ufw/iptables)에서 80/443 허용
  • Mattermost 로그(/var/log 또는 /home/matter/mattermost/log) 확인

문제 해결(트러블슈팅) 체크리스트

  • Nginx가 443에서 정상 리스닝하지 않음: nginx -t 로 구문 검사, systemctl status nginx 확인
  • Mattermost가 127.0.0.1:8065에서 응답하지 않음: systemctl status mattermost, 로그 파일 확인
  • DB 연결 실패: config.json의 DataSource 문자열(사용자/비밀번호/DB명/포트) 확인, pg_hba.conf의 인증 방식 확인
  • 업로드 파일 제한: Nginx의 client_max_body_size와 Mattermost 설정에서 허용 크기 일치 여부 확인

보안 강화 제안

  • 공개 서비스라면 자체 서명 대신 Let’s Encrypt(무료) 사용 권장
  • 방화벽으로 SSH는 특정 IP만 허용, 2단계 인증(가능 시) 사용
  • Mattermost 및 OS 정기 업데이트 및 보안 패치 적용
  • DB 접근은 내부 네트워크나 소켓으로 제한하고 외부 접속 차단

백업 및 복원

  • 데이터베이스 백업: pg_dump 사용
pg_dump -U matteruser -h localhost mattermostdb > mattermostdb-backup.sql
  • 파일(업로드) 백업: mattermost/data 디렉터리 동기화
sudo rsync -avz /home/matter/mattermost/data/ /backup/mattermost/data/

정기 백업 스케줄(예: cron)과 백업 유지 정책을 수립하세요.


마이그레이션 및 업그레이드 팁

  • Mattermost 버전 업그레이드 시 릴리스 노트를 확인하여 DB 마이그레이션 요구사항을 확인합니다.
  • 업그레이드 전 전체 백업(데이터베이스 + 파일)을 반드시 수행합니다.
  • 테스트 환경에서 업그레이드를 먼저 실행하여 예상치 못한 문제를 검증하세요.

의사결정 흐름: DB 선택 (간단한 머천트리)

flowchart TD
  A[새 Mattermost 인스턴스 구축?] --> B{이미 사용 중인 DB가 있나}
  B -- 예 --> C[같은 종류'DB' 사용]
  B -- 아니오 --> D{성능/관리 면에서 우수한 DB 선택}
  D --> E[PostgreSQL 권장: 복잡한 쿼리와 확장성 유리]
  D --> F[MySQL 대체 가능: 기존 스택과 호환될 경우]
  C --> G[설치 계속]
  E --> G
  F --> G

역할 기반 체크리스트

  • 운영팀:
    • 서버 보안(SSH, 방화벽) 구성
    • 자동 백업 및 모니터링 도구 연동
  • DBA:
    • PostgreSQL 성능 튜닝과 정기 백업
    • pg_hba.conf 및 권한 관리
  • 애플리케이션 관리자:
    • Mattermost 설정 및 플러그인 관리
    • 사용자/팀/정책 관리

수락 기준(예시)

  • Mattermost 웹 UI가 https://<도메인>으로 접속되고 로그인/팀 생성이 가능할 것
  • 게시물 전송 및 파일 업로드(최대 50MB 기준)가 정상 동작할 것
  • 서버 재부팅 후 mattermost.service가 자동으로 기동될 것
  • PostgreSQL에 사용자/데이터가 정상 저장될 것

간단 용어집

  • Mattermost: 오픈 소스 자체 호스팅 팀 메시징 플랫폼
  • Nginx: 리버스 프록시 및 웹서버
  • PostgreSQL: 오픈 소스 관계형 데이터베이스

FAQ

Q: Mattermost 최신 버전을 설치하려면 어떻게 하나요?

A: releases.mattermost.com 또는 공식 문서의 최신 릴리스 페이지에서 tarball 링크를 확인해 wget으로 다운로드하세요. 버전 업그레이드 시 항상 릴리스 노트를 먼저 확인하고 백업을 수행하세요.

Q: 운영 환경에서 자체 서명 인증서를 써도 되나요?

A: 테스트 용도로만 권장합니다. 운영 환경에서는 공인 인증서(예: Let’s Encrypt)를 사용하세요.

Q: 데이터베이스를 외부에서 호스팅하면 보안상 문제가 없나요?

A: 외부 DB를 사용할 경우 네트워크 경로 암호화, 접근 제어, IP 화이트리스트를 반드시 설정하세요.

Q: Mattermost를 다른 포트로 변경하려면?

A: config/config.json의 ListenAddress 값을 변경하고, Nginx proxy_pass 설정의 포트도 동일하게 맞추세요.


참고 자료


요약: 이 가이드는 Ubuntu 16.04에서 PostgreSQL과 Nginx를 사용해 Mattermost를 설치하고 운영하는 전체 흐름을 다룹니다. 설치 전후의 보안, 백업, 업그레이드 절차를 반드시 수립하세요.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

스마트폰으로 비즈니스 운영: 완전 가이드
비즈니스

스마트폰으로 비즈니스 운영: 완전 가이드

Grub 부팅 스플래시 화면 변경 가이드
Linux

Grub 부팅 스플래시 화면 변경 가이드

Yocto로 최소 Linux 배포판 만들기
임베디드 리눅스

Yocto로 최소 Linux 배포판 만들기

iPhone Charging On Hold 알림: 원인과 해결 가이드
모바일

iPhone Charging On Hold 알림: 원인과 해결 가이드

Apple Siri 소송 합의 — 청구 자격과 신청 방법
법률

Apple Siri 소송 합의 — 청구 자격과 신청 방법

페이스북 프로필 사진을 GIF로 만드는 방법
소셜미디어

페이스북 프로필 사진을 GIF로 만드는 방법