Synology NAS에 Docker로 설치한 GitLab에 SSL 적용하는 방법 🔒🔑

안녕하세요! 지난 번에 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 설정을 위한 사전 준비

  1. GitLab 포트 설정 확인
GitLab에 SSL 포트설정
  1. SSL 인증서 파일 준비
  • Synology NAS에 이미 적용되어 있는 SSL 인증서 파일(fullchain.pem, privkey.pem)을 사용할 예정입니다.
  • 인증서 파일 경로는 /usr/syno/etc/certificate/_archive/<인증서폴더>/ 입니다.

📝 gitlab.rb 설정 파일 수정

  1. /volume1/docker/gitlab/config 폴더에 있는 gitlab.rb 파일을 에디터로 열어주세요.
  2. 다음 내용을 파일에 추가해 줍니다.
   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 접속을 활성화하고, 인증서 파일 경로를 지정합니다.
  1. 수정한 내용을 저장한 뒤 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

✅ 접속 테스트

  1. 웹 브라우저에서 https://gitlab.example.com:19433으로 GitLab에 접속해 봅니다.
  2. SSL 인증서가 적용되어 HTTPS로 정상 접속되는지 확인합니다.
GitLab에 SSL 적용된 화면
GitLab에 SSL 인증서

❗ 오류 발생 시 확인 사항

  1. 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
  1. 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에서 관리해 보시는 건 어떨까요? 😉

질문이나 추가로 궁금한 점이 있다면 댓글로 남겨주세요. 함께 해결해 나가겠습니다!

오늘도 즐거운 개발 되세요! 😊

Synology NAS에서 Docker로 GitLab 설치하는 방법 🐳🦊

안녕하세요! 오늘은 Synology NAS에서 Docker를 사용하여 GitLab을 설치하는 방법에 대해 알아보겠습니다. GitLab은 개발자들에게 필수적인 도구로, 소스 코드 관리, 이슈 트래킹, CI/CD 등 다양한 기능을 제공합니다. Synology NAS와 Docker를 활용하면 간편하게 GitLab 설치 할 수 있습니다. 지금부터 단계별로 설치 과정을 살펴볼까요? 😄

📌 준비사항

  • Synology NAS 기기
  • 인터넷 연결

🐳 단계 1: Docker 설치하기

  1. Synology NAS의 패키지 센터에 접속합니다.
  2. “Docker”를 검색하면 “Docker Manager”라는 이름으로 등록되어 있습니다.
  3. “Docker Manager”를 선택하고 설치합니다.
docker 설치

설치가 완료되면 Docker를 실행할 수 있습니다.

docker 설치 완료된 모습
docker 실행한 모습

🦊 단계 2: GitLab 이미지 다운로드

  1. Docker의 레지스트리에서 “gitlab”을 검색합니다.
  2. 검색 결과 중 “gitlab/gitlab-ce”를 선택하고 다운로드합니다.
gitlab 이미지 다운로드

다운로드가 완료되면 이미지 목록에 GitLab이 나타납니다.

gitlab 이미지

🚀 단계 3: GitLab 컨테이너 실행

  • 다운로드한 GitLab 이미지를 마우스 우클릭하고 “실행”을 선택합니다.
  • 컨테이너 이름을 입력하고 “자동 재시작” 옵션을 활성화합니다.
gitlab 설정
  • 포트 설정에서 GitLab 접속에 사용할 포트를 지정합니다. (예: 19080)
gitlab포트 설정
  • 볼륨 설정에서 Synology NAS의 Docker 환경 디렉토리를 선택합니다.
gitlab 볼륨 설정
  • 볼륨을 설정하기 전에는 docker 디렉토리에 볼륨을 마운트할 디렉토리를 미리 생성해 놓는 것이 좋습니다.
gitlab 디렉토리 만들기
  • “적용”을 클릭하여 컨테이너를 생성합니다.
gitlab  설정 완료

컨테이너 생성이 완료되면 GitLab이 실행됩니다.

gitlab  실행되는 모습

🔧 단계 4: GitLab 접속 및 설정

  1. 웹 브라우저에서 “시놀로지IP:포트번호”로 GitLab에 접속합니다. (예: 192.168.0.100:19080)
  2. 초기 관리자 비밀번호는 Synology NAS의 “/docker/gitlab/config/initial_root_password” 파일에서 확인할 수 있습니다.
  3. 관리자 계정으로 로그인한 후 원하는 대로 GitLab을 설정합니다.
gitlab 로그인 화면

💡 추가 팁

  • 포트 번호를 변경하려면 GitLab 컨테이너를 중지하고 설정에서 포트 부분을 수정한 후 다시 시작하세요.
  • 외부에서 gitlab에 접근하기 위해서는 아래와 같이 포트를 설정해줍니다.
  • 그리고 conifg 디렉토리에서 gitlab.rb 파일을 찾아 external_url ‘자신의 도메인:19080’ 을 추가해줍니다.
gitlab 추가 포트 설정
  • GitLab의 데이터는 Synology NAS의 Docker 볼륨 디렉토리에 저장되므로 데이터 백업 및 관리에 유의하세요.

이제 Synology NAS에서 Docker를 사용하여 GitLab을 성공적으로 설치했습니다! 개발 작업을 더욱 효율적으로 관리하고 협업할 수 있게 되었죠. GitLab의 다양한 기능을 활용하여 개발 프로세스를 개선해 보세요. 😉

Synology NAS와 Docker로 GitLab 설치에 도전해 보시길 바랍니다. 궁금한 점이 있다면 댓글로 남겨주세요. 함께 문제를 해결해 나가요!

오늘도 즐거운 개발 되세요! 😄

“이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.”