해당 방법이 굳이 블로그로 쓸 일은 아닌것 같지만 오랫만에 삽질을 했으므로 기록하는 시리즈입니다

Mattermost는 채팅, 워크플로 자동화, 음성 통화, 화면 공유 및 AI 통합 기능을 제공하는 오픈 코어 셀프 호스팅 협업 플랫폼입니다. 이 저장소는 Mattermost 플랫폼의 핵심 개발을 위한 주요 소스입니다. Go와 React로 작성되었으며, 단일 Linux 바이너리로 실행되고 PostgreSQL을 사용합니다. 매달 16일에 MIT 라이선스에 따라 새로운 컴파일 버전이 출시됩니다.
요약하자면 MIT 라이선스의 슬렉같은 협업 플랫폼이다.
망분리 상황에서 정산 데이터 생성 이슈나 거래관련 이슈를 확인하기 위해서는 해당 거래건에 대한 식별자의 공유과 실제 관리자 시스템을 사용하는 실제로 사용한 실무자 분들이 문의를 주신다, 작년까지는 신규제품이라 ISMS 심사를 받지 않았지만 올해부터는 심사를 받기 때문에 접근권한도 내부망에서만 접근으로 정책이 바뀌었다
그렇기 때문에 현재는 웃기게도 실무자분들이 화면을 일일히 찍어서 외부망 사내 메신저에 공유하는 일이 빈번하게 일어난다
그렇게 되면 또 개발자들도 그 사진을 보고 일일히 해당 거래아이디를 눈으로 보고 검색하여 로그나 거래 건에 대한 정보를 찾아 원인을 분석한다
그런 비효율적인 상황을 막기 위해 사내 폐쇄망에서 사용할 메신저의 필요성이 대두되어 설치하게 되었다
기존에는 외부망에서 신경쓰지 않았던 의존성들도 전부 싸가지고 내부망 망연계로 올려서 설치해야되기 때문에 최소 한번의 망연계 이동으로 모든 패키지들을 전부 설치해야된다, 그리고 해당 의존성들도 버전을 타기 때문에 엎어서 설치해줘야된다
postgresql을 설치하기 위한 추가 기본패키지 및 의존성이 필요하다.. make 도 필요하고 gcc도 필요하고 추가 라이브러리도 필요하다...!
일일히 받아서는 안되니까 관련 의존성을 설치해서 한다
Virtaul 머신을 쓰던 WSL을 쓰던 위 리눅스 버전을 설치해준다.
sudo dnf download --resolve --alldeps postgresql-server postgresql postgresql-contrib
Mattermost 그러나 버전을 맞춰야한다, rocky 리눅스의 버전이 낮아 postgresql 의 10버전이 설치되어버린다.
내가 원하는건 13버전 이상이다, 그래서 일단 17버전을 설치해야하므로 공식 리포지터리를 추가하고 의존성을 받아야한다.
# PostgreSQL 공식 리포지토리 설치
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 리포지토리 업데이트
sudo dnf makecache
# 이제 PostgreSQL 17 확인
dnf list available postgresql17*

그리고 기존의 설치된 postgresql의 10버전을 깨끗히 삭제해야하고, 최근버전에는 경로나,서비스명에 버전 숫자가 붙는다
[postgresql 관련 의존성 설치]
sudo rpm -ivh *.rpm
[postgresql 설치]
sudo yum install -y postgres*.rpm
[postgresql 상태확인]
systemctl status postgresql-17.service

[postgresql DB 초기화]
sudo postgresql-17-setup --initdb
[초기화 후 pg_hba.conf 파일 세팅]
sudo vi /var/lib/pgsql/17/data/pg_hba.conf
ip접근 및 인증 메서드방식 변경
local의 경우 비밀번호 변경이후 scram-sha-256로 변경해야한다 기존에는 trust로 설정한다
초기화할 때 로컬에서 접근해서 비밀번호 설정후 바꿔줘야되기 때문이다

만약에 postgresql 의 기본포트를 변경하고 싶다면 다음 설정파일을 변경해야 한다
sudo vi /var/lib/pgsql/17/data/postgresql.conf
listen_address 를 주석해제 후 '*' 로 변경
port의 경우 주석해제 후 '변경할기본포트' 로 변경

# 활성화
sudo systemctl enable postgresql-17.service
# 실행
sudo systemctl start postgresql-17.service
# 상태확인
sudo systemctl status postgresql-17.service
sudo passwd postgres
#postgres 계정으로 전환 후 psql로 접속
su - postgres
psql
postgresql 종료하려면 \q 를 입력하면된다
서비스 다시 시작
sudo systemctl restart postgresql-17.service
#psql 접속
psql -U postgres
## 데이터베이스 생성
CREATE DATABASE mattermost WITH ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE=template0;
## MatterMost 사용자 생성 (mmuser-passowrd는 사용할 패스워드로 변경)
CREATE USER mmuser WITH PASSWORD 'mmuser-password';
## 사용자에게 데이터베이스 액세스 권한 부여:
GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
## PostgresSQL v15.x 이상인 경우 추가 권한 필요
ALTER DATABASE mattermost OWNER TO mmuser;
ALTER SCHEMA public OWNER TO mmuser;
GRANT USAGE, CREATE ON SCHEMA public TO mmuser;
# MatterMost 설치
tar -xvzf mattermost*.gz
## 전체 폴더를 /opt 디렉토리로 이동
sudo mv mattermost /opt
## 기본 저장폴더 생성
sudo mkdir /opt/mattermost/data
## 사용자 및 그룹설정
sudo useradd --system --user-group mattermost
## 설치파일에 대한 파일 및 폴더 권한
sudo chown -R mattermost:mattermost /opt/mattermost
## mattermost 그룹에 애플리케이션 폴더 쓰기권한 부여
sudo chmod -R g+w /opt/mattermost
## systemd 단위 파일 생성
sudo touch /lib/systemd/system/mattermost.service
## system.conf 수정
sudo vi /lib/systemd/system/mattermost.service
[Unit]
Description=Mattermost
After=network.target
After=postgresql-17.service
BindsTo=postgresql-17.service
[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost # mattermost 실행 스크립트 경로
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost # mattermost 경로
User=mattermost
Group=mattermost
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target
수정 후 deamon 리로드
sudo systemctl daemon-reload
mattermost/config/config.json

sudo systemctl start mattermost
curl http://localhost:8065
sudo systemctl enable mattermost.service
온갖설정을 정확히 다했는데 안된다?? 이것 때문에 몇시간 버린듯 하다

https://forum.mattermost.com/t/systemctl-start-mattermost-service-is-failing/14142
서비스에 등록시키는 경우 mattermost 자동 실행되게 하는 경우는 SELinux가 막기 때문에 불가능한데.(mattermost 이슈) SELinux 추가설정이 필요하다
3가지 선택지가 있다
1. 내 계정에 놓고 내가 서버 재기동때 마다 킨다. stat.sh (그러나 끌수 있는 명령어가 없음, service를 통해서만 끌수 있음)
2. SELinux 끈다
3. SELinux 설정 추가
이제 브라우저에서 Mattermost 서버로 접속해서 가입하면 된다.
초기설정에서 언어를 바꿔줄 수 있다.

그리고 Mattermost는 자동적으로 처음 가입한 사용자가 관리자 권한을 가지게 된다
그리고 영어로만 아이디가 보이므로 별명을 한국어로 설정하고 다음과 같이 설정하면 누가 누군지 더 잘 알 수 있다

오랫만에 외부망에서 의존성 받아오지 못하는 환경에서 설치하다 보니 삽질이 많았던 것 같다 중간에 의존성 빠져서 설치 안되는 일은 귀찮으므로 한번 정리하였다 잊어버리고 나중에 또 무언가 설치할 일이 있으면 참고 할 것이다.
설정할게 많네요..