docker로 TURN서버 올려서 matrix 서버에서 음성, 화상 채팅 기능 활성화하기
matrix 클라이언트에서 보면 음성, 화상 채팅 기능이 있다. 그런데 서버를 올리고 보니 기능이 없어서 그게 안 되더라. 알아보니 VoIP를 통해 통신을 해야하고 그걸 해주는 TURN 서버를 붙여야한다고...
해서, 붙여봤습니다.
TURN 서버는 coturn으로 올렸습니다. 공식 가이드에 따르면 apt로 설치해서 돌리는 건데 저는 굳이 docker로 올렸어요. 다행히 coturn 공식에서 제공하는 docker compose 문서가 친절해서 금방 설치할 수 있었습니다.
위 docker-compose.yml 문서와 관련한 주의점.
- postgres로 되어있지만 DB는 필요 없었어요.
- 80, 443 포트는 삭제해주세요.
- 문서에 적혀있는 포트는 다 개방해줘야합니다.
마지막으로 turnserver.conf는 coturn에서 제공하는 공식 예시와 matrix에서 제공하는 안내 문서가 있습니다. 저는 cotrun에서 제공하는 공식 예시를 보고 작성했어요.
turnserver.conf
listening-port=3478
tls-listening-port=5349
여기까진 기본 설정입니다.
listening-ip=
external-ip=[서버 아이피]
listening-ip는 비워두면 모든 ip에서 수신합니다. external-ip는 서버 외부 ip예요. 이쪽으로 오면 된다고 알려주는 겁니다.
static-auth-secret=[비밀 키]
server-name=[TURN 서버명]
realm=[TURN 서버 도메인]
여기는 써있는대로.
cert=[cert.pem 경로]
pkey=[private key 경로]
이건 openssl로 만들었어요.
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
syslog
simple-log
로그 설정. 저는 file에다 지정했는데 바꾸려고요.
나머지는 matrix 문서에서 하라는 대로 하면 됩니다. 저는 coturn 문서 보고 하는 바람에 오히려 헷갈린 게 많긴 했어요. 워낙 옵션이 많아서...
homeserver.yaml
turn_uris: [ "turn:[TURN 서버 도메인]?transport=udp", "turn:[TURN 서버 도메인]?transport=tcp" ]
turn_shared_secret: "turnserver.conf에서 static-auth-secret에 넣은 비밀 키"
turn_user_lifetime: 86400000
turn_allow_guests: true
이건 사실 matrix 공식 가이드대로 하기만 하면 돼서 쓰기 뭐한데... 그렇습니다.
이거면 설정 끝! 자료도 많고 가이드도 잘 되어있어서 꽤 쉬웠어요. 오히려 자료가 너무 많아서 좀 헤맸습니다. turnserver.conf 설정은 matrix 가이드 따라하세요. 저처럼 coturn 설정 보고 다 챙기려다 실패하지 말고.