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 설치에 도전해 보시길 바랍니다. 궁금한 점이 있다면 댓글로 남겨주세요. 함께 문제를 해결해 나가요!

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

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

CentOS Stream 9에서 Docker 설치하기

Docker

Docker는 애플리케이션의 환경을 표준화하여 일관성 있는 배포와 운영을 가능하게 해줍니다. 이 가이드에서는 CentOS Stream 9에서 Docker를 설치하고 구성하는 방법을 자세히 설명하겠습니다.

1. Docker란?

Docker는 애플리케이션과 그 애플리케이션의 종속성을 함께 패키징하는 컨테이너 기반의 오픈 소스 플랫폼입니다. 이렇게 패키징된 애플리케이션은 Docker를 지원하는 어느 시스템에서든 동일하게 실행될 수 있습니다.

2. 설치 전 준비

  • 시스템 요구사항: CentOS Stream 9가 설치된 시스템
  • 사용자 권한: sudo 권한을 갖는 사용자 계정

3. Docker 설치 과정

  • 시스템 업데이트
    먼저, 시스템의 패키지를 최신 상태로 업데이트합니다.
sudo dnf update -y
1 6
  • 필요한 패키지 설치
    Docker 설치에 필요한 패키지와 종속성을 설치합니다.
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
2 5
  • Docker 저장소 추가
    Docker 공식 저장소를 시스템에 추가합니다.
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3 5
  • Docker CE 설치
    Docker의 Community Edition을 설치합니다.
sudo dnf install -y docker-ce --nobest
4 2
  • 여기서 --nobest 옵션은 Docker의 가장 최신 버전을 설치하는 데 필요한 것입니다.
  • Docker 서비스 활성화 및 시작
    시스템 부팅 시 Docker 서비스가 자동으로 시작되도록 설정하고, Docker 서비스를 시작합니다.
sudo systemctl enable --now docker
5 3
  • 설치 확인
    Docker의 상태와 버전을 확인하여 올바르게 설치되었는지 확인합니다.
sudo systemctl status docker 
sudo docker --version
6 3
7 2

4. Sudo 권한 없이 Docker 사용하기

기본적으로 Docker 명령을 실행하려면 sudo 권한이 필요합니다. 하지만, 사용자를 Docker 그룹에 추가함으로써 sudo 없이 Docker 명령을 실행할 수 있게 됩니다.

sudo usermod -aG docker your_username
9 1

이 변경을 적용하려면 로그아웃했다 다시 로그인해야 합니다. 그러나 이렇게 설정하면 보안 상의 위험이 있으니 주의가 필요합니다.

8

Docker 그룹에 포함된 사용자로 로그인하여 sudo 없이 docker 명령어를 사용하였습니다.

5. 결론 및 추가 리소스

이제 CentOS Stream 9에 Docker가 성공적으로 설치되었습니다. Docker를 사용하여 컨테이너화된 애플리케이션의 배포와 관리를 시작해보세요. 추가적인 정보와 도움말은 Docker의 공식 문서인 Docker Documentation에서 확인할 수 있습니다.

이 가이드를 통해 CentOS Stream 9에서 Docker 설치 과정을 순차적이고 명확하게 이해하고 수행할 수 있기를 바랍니다. Docker는 애플리케이션의 배포와 운영을 혁신적으로 바꾸는 플랫폼이니, 이 기회를 통해 그 힘을 체험해보시길 추천합니다!

[wooyung’s IT 블로그]