기술 가이드

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
저자
편집

유사한 자료

Debian 11에 Podman 설치 및 사용하기
컨테이너

Debian 11에 Podman 설치 및 사용하기

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정
시스템 관리

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드
그래픽 가이드

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드

Debian Etch에 Dansguardian+Squid(NTLM) 구성
네트워크

Debian Etch에 Dansguardian+Squid(NTLM) 구성

안드로이드 SD카드 설치 오류(Error -18) 완전 해결
안드로이드 오류

안드로이드 SD카드 설치 오류(Error -18) 완전 해결

KNetAttach로 원격 네트워크 폴더 연결하기
네트워킹

KNetAttach로 원격 네트워크 폴더 연결하기