저 역시 처음 FreeBSD에 Jenkins를 올릴 때, 단순하게 pkg install jenkins만 입력하면 모든 것이 끝날 줄 알았습니다. 하지만 정작 서비스를 실행하면 원인 모를 에러로 프로세스가 죽어버리거나, 웹 UI에 접속조차 되지 않아 로그 파일을 뒤져야 했던 기억이 납니다. 대부분의 문제는 아주 사소한 Java 버전의 불일치나 권한 설정, 혹은 rc.conf 설정 누락에서 시작됩니다. 이 글은 단순히 명령어를 나열하는 매뉴얼이 아닙니다. 제가 직접 수차례 재설치를 반복하며 겪었던 시행착오를 바탕으로, Java 선택부터 재부팅 후에도 흔들림 없이 Jenkins가 구동되는 ‘운영 가능한 서버’를 만드는 전체 과정을 정리했습니다.
1. 설치 전 확인사항과 먼저 봐야 할 부분
설치 직전에 가장 많이 놓치는 부분은 Jenkins보다 먼저 Java를 확인해야 한다는 점입니다. Jenkins는 Java 애플리케이션이라서, 패키지 설치가 끝나도 런타임 환경이 맞지 않으면 정상 실행이 어렵습니다.
우선 현재 시스템 버전과 패키지 상태를 확인합니다.
확인 명령어
freebsd-version
pkg update
pkg upgrade
운영 서버라면 여기서 바로 업그레이드를 진행하기보다 기존 서비스 영향도 먼저 확인하는 편이 안전합니다. Jenkins 설치보다 시스템 패키지 충돌이 더 큰 문제로 이어지는 경우가 실제로 많습니다.
메모리도 중요합니다. 작은 테스트 환경에서는 실행되더라도 플러그인 설치 단계에서 메모리 부족이 발생하기 쉽습니다. 특히 Git, Docker, Pipeline 플러그인을 함께 쓰면 체감 차이가 큽니다.
놓치기 쉬운 포인트는 Jenkins 설치 자체보다 “플러그인 설치 이후” 자원 사용량이 훨씬 커진다는 점입니다.
2. OpenJDK와 Jenkins 패키지 설치
조회까진 했는데 여기서 가장 많이 멈추는 부분이 바로 Java 버전 선택입니다. 최신 버전이 무조건 좋은 것이 아니라, 현재 Jenkins 패키지와 안정적으로 맞는 버전을 선택하는 것이 더 중요합니다.
보통 OpenJDK 17 계열이 안정적으로 많이 사용됩니다.
설치 예시
pkg install openjdk17
pkg install jenkins
설치 후에는 Java가 정상 인식되는지 확인합니다.
버전 확인
java -version
여기서 version 출력이 예상과 다르면 PATH 문제일 가능성이 있습니다. 설치는 됐는데 서비스 시작이 안 되는 경우 상당수가 이 단계에서 이미 신호를 보여줍니다.
겉으로는 간단해 보여도 실제로는 Jenkins 오류보다 Java 경로 문제를 더 자주 만나게 됩니다. 그래서 설치 직후 바로 서비스 실행보다 버전 확인이 먼저입니다.
헷갈리기 쉬운 부분은 최신 Java를 넣는 것보다 Jenkins가 요구하는 지원 버전을 맞추는 것이 더 중요하다는 점입니다.
3. 서비스 등록과 자동 시작 설정
설치가 끝났는데 재부팅 후 Jenkins가 사라졌다고 느끼는 경우가 있습니다. 대부분 서비스 자동 시작 설정을 하지 않은 상황입니다.
FreeBSD에서는 rc.conf에 서비스 활성화를 등록해야 합니다.
서비스 등록
sysrc jenkins_enable=YES
이후 서비스를 시작합니다.
서비스 시작
service jenkins start
service jenkins status
status에서 running 상태가 아니면 바로 브라우저부터 열지 말고 로그를 먼저 확인하는 편이 빠릅니다. 포트 문제인지, 권한 문제인지, Java 오류인지 방향이 달라지기 때문입니다.
대부분 조건 자체보다 서비스가 실제로 어떤 사용자 권한으로 실행되는지를 더 많이 놓칩니다. 빌드 경로 접근 권한 때문에 나중에 다시 수정하는 일이 흔합니다.
여기서 갈리는 핵심은 시작 여부보다 “재부팅 후 자동 복구되는 구조인지”입니다.
4. 웹 접속 및 초기 관리자 설정
서비스가 실행되면 브라우저에서 기본 포트로 접속합니다. 보통 8080 포트를 사용합니다.
접속은 되는데 화면에서 멈추는 경우가 있습니다. 대부분 초기 관리자 비밀번호를 찾지 못해서 다음 단계로 넘어가지 못합니다.
비밀번호는 초기 파일에서 확인합니다.
초기 관리자 비밀번호 확인
cat /var/jenkins_home/secrets/initialAdminPassword
환경에 따라 경로가 다를 수 있으므로 실제 설치 경로를 먼저 확인하는 것이 좋습니다. 여기서 무조건 같은 경로라고 생각하고 찾다가 시간을 많이 씁니다.
추천 플러그인 자동 설치를 선택할 수 있지만, 운영 서버라면 처음부터 필요한 플러그인만 선택하는 방식도 충분히 고려할 만합니다. 플러그인이 많을수록 관리 부담도 커집니다.
놓치기 쉬운 포인트는 초기 설치 속도보다 장기 운영 시 업데이트 관리가 더 중요하다는 점입니다.
5. 운영 단계에서 자주 발생하는 문제
설치는 끝났는데 실제로는 Git pull 실패, 에이전트 연결 문제, 플러그인 충돌처럼 운영 단계에서 더 많이 막힙니다.
특히 방화벽과 포트 접근은 자주 놓칩니다. 로컬에서는 열리는데 외부 접속이 안 된다면 PF 설정이나 클라우드 보안 그룹부터 확인해야 합니다.
로그 확인도 습관처럼 해야 합니다. “갑자기 느려졌다”는 느낌은 대부분 로그에 먼저 기록됩니다.
운영 시 확인 권장 항목
디스크 사용량 / 플러그인 업데이트 / 백업 정책 / SSL 적용 / 관리자 계정 분리
Jenkins는 설치보다 유지가 더 중요합니다. 특히 빌드 이력과 워크스페이스가 계속 쌓이기 때문에 디스크 관리가 늦어지면 예상보다 빨리 장애가 발생합니다.
실제로는 CPU보다 저장공간 관리에서 먼저 문제가 생기는 경우가 더 많습니다.
헷갈리기 쉬운 부분은 “지금 잘 된다”와 “계속 안정적으로 운영된다”가 전혀 다른 이야기라는 점입니다.
6. 자주 묻는 질문
Q1. OpenJDK 21을 바로 사용해도 되나요?
가능 여부는 Jenkins 패키지 버전과 플러그인 호환성에 따라 달라질 수 있습니다. 최신 버전보다 공식 지원 범위를 먼저 확인하는 편이 안정적입니다.
Q2. 설치는 됐는데 브라우저 접속이 안 됩니다
서비스 상태 확인 → 포트 확인 → 방화벽 확인 순서로 보는 것이 빠릅니다. 브라우저부터 반복 새로고침하는 것보다 서버 로그 확인이 훨씬 효율적입니다.
Q3. rc.conf 설정 없이 수동 실행만 하면 안 되나요?
테스트 환경에서는 가능하지만 운영 환경에서는 권장되지 않습니다. 재부팅 이후 자동 시작 여부가 실제 안정성에 큰 차이를 만듭니다.
Q4. 플러그인은 처음에 전부 설치하는 게 좋나요?
처음에는 필요한 것만 설치하는 편이 관리가 쉽습니다. 많을수록 업데이트 충돌과 보안 관리 부담도 함께 커집니다.
Q5. Jenkins 홈 디렉터리는 꼭 기본 경로를 써야 하나요?
아닙니다. 운영 정책에 따라 별도 디스크나 ZFS dataset으로 분리하는 경우도 많습니다. 백업 전략까지 함께 고려하는 것이 좋습니다.
마무리
FreeBSD에서 Jenkins를 설치하는 것은 명령어 몇 줄의 문제가 아니라, 전체 시스템과의 조화를 맞추는 작업입니다. Java 버전을 꼼꼼히 확인하고, 서비스 로그(jenkins.log)를 통해 구동 상태를 체크하는 습관이 뒷받침되어야 비로소 ‘신뢰할 수 있는 CI/CD 서버’가 완성됩니다. 특히 처음 구축하는 단계라면 설치 완료에만 기뻐하기보다, 인위적으로 서비스를 재시작하거나 서버를 리부팅하여 환경 설정이 휘발되지 않고 유지되는지 반드시 점검해 보시길 권장합니다. 한 번 설치할 때 제대로 된 구조를 만들어 두는 것이, 나중에 배포 중 서버가 멈췄을 때 원인을 찾아 헤매는 시간을 획기적으로 줄여줄 것입니다.
※ Jenkins 버전, FreeBSD 패키지 상태, OpenJDK 지원 범위는 시점에 따라 달라질 수 있습니다. 실제 운영 환경에서는 공식 문서와 현재 패키지 저장소 정보를 함께 확인한 뒤 적용하시기 바랍니다.