안녕하세요! 지난 번에 Synology NAS에 Docker를 활용해 GitLab을 설치하는 방법에 대해 알아보았는데요. 이번에는 설치된 GitLab에 SSL 인증서를 적용하여 보안을 강화하는 방법에 대해 소개하려고 합니다. HTTPS 접속을 의무화하는 GitLab의 정책 때문에 SSL 설정이 필수가 되었죠. 😅
GitLab은 강력한 버전 관리 및 CI/CD 기능을 제공하는 오픈소스 프로젝트입니다. 자체 호스팅이 가능하여 많은 기업과 개발자들이 사용하고 있죠. 그런데 GitLab에서는 안전한 데이터 전송을 위해 HTTPS 사용을 강제하고 있습니다. SSL 인증서를 적용하지 않으면 GitLab 사용에 제한이 있을 수 있어요. 😓
SSL(Secure Sockets Layer)은 웹 통신 프로토콜인 HTTP에 보안 기능을 추가한 HTTPS(HTTP over SSL/TLS)를 구현하는 데 사용됩니다. SSL 인증서를 통해 서버와 클라이언트 간 데이터 암호화, 무결성 검증, 신뢰할 수 있는 신원 확인 등을 수행할 수 있죠. 이를 통해 중요한 정보를 안전하게 전송할 수 있습니다. 🛡️
지금부터 Synology NAS에서 실행 중인 GitLab에 SSL을 적용하는 과정을 차근차근 살펴볼까요?
목차
🚀 GitLab에 SSL 설정을 위한 사전 준비
- GitLab 포트 설정 확인

- 기본적으로 443 포트 대신 19433 포트를 사용하도록 설정되어 있어야 합니다.
- 포트 설정 방법은 이전 포스팅 “Synology NAS에서 Docker로 GitLab 설치하는 방법 🐳🦊“을 참고해 주세요.
- SSL 인증서 파일 준비
- Synology NAS에 이미 적용되어 있는 SSL 인증서 파일(
fullchain.pem
,privkey.pem
)을 사용할 예정입니다. - 인증서 파일 경로는
/usr/syno/etc/certificate/_archive/<인증서폴더>/
입니다.
📝 gitlab.rb 설정 파일 수정
/volume1/docker/gitlab/config
폴더에 있는gitlab.rb
파일을 에디터로 열어주세요.- 다음 내용을 파일에 추가해 줍니다.
external_url 'https://gitlab.example.com:19443'
nginx['redirect_http_to_https'] = true
letsencrypt['enable'] = false
nginx['listen_port'] = 19443
nginx['listen_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/privkey.pem"
nginx['ssl_protocols'] = "TLSv1.2 TLSv1.3"
nginx['ssl_prefer_server_ciphers'] = "on"
external_url
은 GitLab 접속 URL을 설정하는 부분입니다. 도메인과 포트 번호를 알맞게 변경해 주세요.- SSL 관련 설정을 통해 HTTPS 접속을 활성화하고, 인증서 파일 경로를 지정합니다.
- 수정한 내용을 저장한 뒤 GitLab 컨테이너를 재시작합니다.
🔧 SSL 인증서 파일 복사
GitLab 컨테이너 내부에서 인식할 수 있도록 Synology NAS의 인증서 파일을 복사해 줍니다.
sudo cp /usr/syno/etc/certificate/_archive/<인증서폴더>/fullchain.pem /volume1/docker/gitlab/config/ssl/fullchain.pem
sudo cp /usr/syno/etc/certificate/_archive/<인증서폴더>/privkey.pem /volume1/docker/gitlab/config/ssl/privkey.pem
✅ 접속 테스트
- 웹 브라우저에서
https://gitlab.example.com:19433
으로 GitLab에 접속해 봅니다. - SSL 인증서가 적용되어 HTTPS로 정상 접속되는지 확인합니다.


❗ 오류 발생 시 확인 사항
- GitLab 재시작 실패
- 오류 메시지:
==> /var/log/gitlab/nginx/error.log <== 2023/04/01 00:16:09 [emerg] 568#0: cannot load certificate "/volume1/docker/gitlab/config/ssl/fullchain.pem": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/volume1/docker/gitlab/config/ssl/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file) ==> /var/log/gitlab/nginx/current <== 2023-04-01_00:16:09.41708 nginx: [emerg] cannot load certificate "/volume1/docker/gitlab/config/ssl/fullchain.pem": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/volume1/docker/gitlab/config/ssl/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
- 원인: Docker 컨테이너 내부의 인증서 파일 경로가 잘못되었거나 파일이 없는 경우입니다.
- 해결 방법: GitLab 컨테이너 내부에서 인증서 파일 경로를 확인하고 필요 시 파일을 복사해 줍니다.
docker exec -it <GitLab_컨테이너_이름> bash
ls -l /etc/gitlab/ssl/fullchain.pem
ls -l /etc/gitlab/ssl/privkey.pem
- PostgreSQL 관련 오류
- 오류 메시지:
root 350 0.0 0.0 2652 1452 ? Ss 00:20 0:00 runsv postgresql root 360 0.0 0.0 2652 1108 ? Ss 00:20 0:00 runsv postgres-exporter root 361 0.0 0.0 2800 1104 ? Ss 00:20 0:00 svlogd -tt /var/log/gitlab/postgres-exporter root 365 0.0 0.0 2800 1084 ? Ss 00:20 0:00 svlogd -tt /var/log/gitlab/postgresql gitlab-+ 374 0.0 0.0 1847108 19696 ? Ssl 00:20 0:00 /opt/gitlab/embedded/bin/postgres_exporter --no-collector.stat_user_tables --collector.postmaster --web.listen-address=localhost:9187 --extend.query-path=/var/opt/gitlab/postgres-exporter/queries.yaml root 1449 0.0 0.0 6608 2108 pts/1 S+ 00:28 0:00 grep --color=auto postgres
- 원인: PostgreSQL 관련 프로세스가 제대로 실행되지 않는 경우입니다.
- 해결 방법:
/volume1/docker/gitlab/data/postgresql
경로의.s.PGSQL.5432.lock
와.s.PGSQL.5432
파일을 삭제한 후 GitLab을 재시작합니다.
이렇게 Synology NAS에서 실행 중인 GitLab에 SSL을 적용하는 방법에 대해 알아보았습니다. 이제 안전한 HTTPS 접속으로 GitLab을 사용할 수 있게 되었네요! 보안도 강화하고, 접속도 편리해졌습니다. 😄
GitLab은 강력한 버전 관리 및 협업 기능을 제공하여 개발 생산성을 크게 향상시켜 줍니다. SSL 적용으로 더욱 안전하게 사용할 수 있게 되었으니, 여러분의 소중한 코드를 GitLab에서 관리해 보시는 건 어떨까요? 😉
질문이나 추가로 궁금한 점이 있다면 댓글로 남겨주세요. 함께 해결해 나가겠습니다!
오늘도 즐거운 개발 되세요! 😊