CentOS 7에 TeamSpeak 서버 설치 가이드
개요
TeamSpeak는 VOIP(Voice Over Internet Protocol) 기반의 음성 통신 서버입니다. 온라인 게임, 교육, 원격 회의 등 다양한 환경에서 사용됩니다. 이 문서는 CentOS 7에 TeamSpeak 서버를 직접 설치하고 운영하는 실제 절차를 제공하며, 운영 중 발생할 수 있는 일반적 이슈와 보안·백업 권장사항도 다룹니다.
중요 용어: VOIP — 인터넷을 통해 음성 데이터를 전달하는 기술.
전제 조건
- 최소 설치된 CentOS 7 서버
- 루트 권한(루트 계정으로 작성됨). sudo 사용자라면 sudo -i로 루트 전환
- 방화벽(firewalld) 사용을 권장
시스템 업데이트
패키지와 저장소 정보를 최신으로 유지하세요.
yum -y update
업데이트가 끝나면 다음 단계로 넘어가 의존성을 설치합니다.
의존성 설치
TeamSpeak 실행에 필요한 기본 도구들을 설치합니다.
yum -y install nano wget perl tar net-tools bzip2
TeamSpeak 전용 사용자 생성
서버 프로세스를 분리된 사용자로 실행하면 보안성이 향상됩니다. 홈 디렉터리를 /opt/teamspeak로 지정해 사용자 추가:
adduser teamspeak -d /opt/teamspeak
위 명령은 teamspeak 유저를 추가하고 홈 디렉터리를 /opt/teamspeak로 설정합니다.
TeamSpeak 설치
공식 바이너리 아카이브를 다운로드하고 압축을 풉니다. 예시(원본 링크 유지):
wget http://dl.4players.de/ts/releases/3.0.13.8/teamspeak3-server_linux_amd64-3.0.13.8.tar.bz2
최신 버전 링크는 TeamSpeak 공식 다운로드 페이지에서 확인하세요. 아카이브를 풀고 파일을 전용 홈 디렉터리로 이동합니다.
tar xvf teamspeak3-server_linux_amd64*.tar.bz2
mv teamspeak3-server_linux_amd64/* /opt/teamspeak
rm -rf teamspeak3-server_linux_amd64*
chown -R teamspeak: /opt/teamspeak
이제 TeamSpeak가 /opt/teamspeak에 설치되었습니다.
서버 시작
TeamSpeak는 제공된 스크립트로 시작/중지를 관리합니다. teamspeak 사용자로 전환하여 서버를 시작하세요.
su - teamspeak
./ts3server_startscript.sh start inifile=ts3server.ini
서버가 정상 시작되면 예시와 유사한 출력이 나타납니다.
[teamspeak@centos ~]$ ./ts3server_startscript.sh start inifile=ts3server.ini
Starting the TeamSpeak 3 server
TeamSpeak 3 server started, for details please view the log file
[teamspeak@centos ~]$
------------------------------------------------------------------
I M P O R T A N T
------------------------------------------------------------------
Server Query Admin Account created
loginname= "serveradmin", password= "4CQJv1kq"
------------------------------------------------------------------
서버 중지 명령:
./ts3server_startscript.sh stop
예시 출력:
[teamspeak@centos ~]$ ./ts3server_startscript.sh stop
Stopping the TeamSpeak 3 server done
참고: 위 예시는 설치 시 생성된 서버쿼리 계정 정보 예시입니다. 실제 설치에서는 각자 출력되는 초기 비밀번호를 안전한 곳에 보관하세요.
systemd 서비스 구성
서버를 systemctl로 관리하려면 systemd 유닛을 생성합니다. 다음 명령으로 새 파일을 엽니다.
nano /lib/systemd/system/teamspeak.service
아래 내용을 파일에 붙여넣으세요.
[Unit]
Description=TeamSpeak Server Service
After=network.target
[Service]
Type=forking
WorkingDirectory=/opt/teamspeak/
ExecStart=/opt/teamspeak/ts3server_startscript.sh start inifile=ts3server.ini
ExecStop=/opt/teamspeak/ts3server_startscript.sh stop
User=teamspeak
Group=teamspeak
PIDFile=/opt/teamspeak/ts3server.pid
Restart=always
RestartSec=9
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=teamspeak
[Install]
WantedBy=multi-user.target
파일을 저장한 뒤 아래 명령으로 서비스를 활성화하고 시작합니다.
systemctl daemon-reload
systemctl start teamspeak
systemctl enable teamspeak
systemctl status teamspeak
방화벽 및 네트워크 포트
기본적으로 TeamSpeak는 아래 포트를 사용합니다. 방화벽에서 허용하세요.
- 음성: UDP 9987
- 파일 전송: TCP 30033
- ServerQuery: TCP 10011
firewalld를 사용하는 경우 예시:
firewall-cmd --add-port=9987/udp --permanent
firewall-cmd --add-port=30033/tcp --permanent
firewall-cmd --add-port=10011/tcp --permanent
firewall-cmd --reload
퍼블릭 네트워크에 노출하는 경우 포트와 접근 제어를 최소화하고 VPN 또는 접속 인증을 고려하세요.
SELinux와 권한 문제
CentOS 7에서 SELinux가 활성화된 경우 권한·접근 문제로 서비스가 차단될 수 있습니다. 간단한 검사 방법:
getenforce
문제가 의심되면 일시적으로 Permissive로 변경해 원인을 확인합니다(운영 환경에서는 권장하지 않음):
setenforce 0
영구적으로 비활성화하려면 /etc/selinux/config를 편집해야 합니다. 더 안전한 방법은 필요한 정책을 생성하거나 파일 컨텍스트를 적절히 조정하는 것입니다.
백업과 복구
운영 중인 서버는 정기적으로 다음 항목을 백업하세요.
- /opt/teamspeak/ 디렉터리 전체(설정, 로그, 파일전송 데이터)
- 데이터베이스 파일(예: ts3server.sqlitedb)
간단한 백업 예시:
tar czf teamspeak-backup-$(date +%F).tar.gz /opt/teamspeak
업그레이드 전에는 항상 전체 백업을 수행하고 서비스 중단 후 파일 소유권(chown)을 확인하세요.
업그레이드 SOP(간단한 플레이북)
- 서비스 중지: systemctl stop teamspeak
- 전체 백업: tar로 /opt/teamspeak 백업
- 새 아카이브 업로드 및 압축 해제
- 파일을 /opt/teamspeak로 이동, 소유권 설정: chown -R teamspeak: /opt/teamspeak
- 서비스 시작: systemctl start teamspeak
- 로그 확인 및 연결 테스트
문제해결(정형화된 체크리스트)
서버가 시작되지 않을 때
- 로그 확인: /opt/teamspeak/logs/ 또는 journalctl -u teamspeak
- 권한 확인: chown -R teamspeak: /opt/teamspeak
- 포트 충돌: ss -tulpn | grep 9987
- SELinux 차단 여부 확인
클라이언트가 연결되지 않을 때
- 방화벽 포트 개방 여부 확인
- NAT 환경이면 포트 포워딩 설정 확인
- 외부에서 접속 시 퍼블릭 IP가 올바른지 확인
운영·보안 권장사항
- 서버쿼리 계정 초기 비밀번호는 즉시 변경
- 운영 서버는 방화벽 뒤에 두고 필요 포트만 허용
- 정기적인 백업과 로그 모니터링
- 루트가 아닌 전용 사용자로 프로세스 실행
- 패치 및 보안 업데이트 정기 적용
수용 기준(테스트 케이스)
- systemctl status teamspeak 결과가 active (running) 이어야 함
- 로컬 네트워크에서 TeamSpeak 클라이언트로 접속 및 음성 통화 가능
- 파일 전송(30033) 기능 확인
- ServerQuery에 로그인 가능
운영자별 체크리스트
- 시스템 관리자
- systemctl 관리, 백업 계획, 보안 패치
- 서버 관리자
- 설정(ini), 로그 확인, 장애 복구
- 게임·커뮤니티 관리자
- 권한(서버admin) 관리, 채널·권한 설정, 사용자 지원
간단한 의사결정 도표
flowchart TD
A[설치 필요성 판단] --> B{이미 서비스 있음?}
B -- 예 --> C[기존 서비스 점검 및 업그레이드]
B -- 아니오 --> D[새 서버 설치]
D --> E[의존성 설치]
E --> F[바이너리 설치 및 권한 설정]
F --> G[systemd로 등록 및 시작]
G --> H[테스트 및 운영]
자주 묻는 질문
TeamSpeak는 어떤 포트들을 사용하나요?
음성: UDP 9987, 파일 전송: TCP 30033, ServerQuery: TCP 10011입니다.
백업은 어떻게 하나요?
/opt/teamspeak 전체와 데이터베이스 파일(ts3server.sqlitedb 등)을 정기적으로 tar.gz로 압축해 보관하세요.
systemd로 시작되지 않으면 어디를 확인하나요?
journalctl -u teamspeak 및 /opt/teamspeak/logs/ 하위 로그 파일을 확인하세요. 권한, SELinux, 포트 충돌을 점검합니다.
요약
- CentOS 7에서 TeamSpeak를 설치하려면 의존성 설치, 전용 사용자 생성, 바이너리 압축 해제, 소유권 설정을 수행합니다.
- systemd 서비스 유닛을 만들어 서비스로 관리하면 편리합니다.
- 방화벽·SELinux 설정, 정기 백업과 보안 패치를 통해 안정적으로 운영하세요.
중요: 운영 환경에서는 초기 비밀번호와 백업을 안전하게 관리하고, 공개 서비스일 경우 접근 제어와 모니터링을 강화하세요.