1️⃣ 개요

GitLab을 인터넷이 차단된 내부망에서 Docker를 활용하여 CPU와 메모리를 제한한 상태로 설치하는 방법을 정리합니다.
또한, GitLab 데이터를 /data/gitlab 경로 아래에 저장하고, HTTPS(SSL) 설정을 적용하여 보안성을 강화합니다.


2️⃣ 사전 준비

GitLab을 설치할 내부망 서버에는 Docker 및 Docker Compose가 필요합니다.

✅ 인터넷이 없는 환경이므로, 외부망에서 필요한 파일을 다운로드 후 내부망으로 옮겨야 합니다.


3️⃣ 내부망에서 Docker 설치

내부망 서버에 Docker가 설치되지 않은 경우, 외부망에서 패키지를 다운로드 후 내부망으로 이동하여 설치합니다.

(1) 외부망에서 Docker 패키지 다운로드

wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/containerd.io_1.6.27-1_amd64.deb
wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce_25.0.2-1~ubuntu.22.04~jammy_amd64.deb
wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce-cli_25.0.2-1~ubuntu.22.04~jammy_amd64.deb
wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-compose-plugin_2.24.5-1~ubuntu.22.04~jammy_amd64.deb

(2) 내부망 서버로 패키지 전송

scp containerd.io_1.6.27-1_amd64.deb user@internal-server:/home/user/
scp docker-ce_25.0.2-1~ubuntu.22.04~jammy_amd64.deb user@internal-server:/home/user/
scp docker-ce-cli_25.0.2-1~ubuntu.22.04~jammy_amd64.deb user@internal-server:/home/user/
scp docker-compose-plugin_2.24.5-1~ubuntu.22.04~jammy_amd64.deb user@internal-server:/home/user/

(3) 내부망 서버에서 Docker 설치

sudo dpkg -i containerd.io_1.6.27-1_amd64.deb
sudo dpkg -i docker-ce-cli_25.0.2-1~ubuntu.22.04~jammy_amd64.deb
sudo dpkg -i docker-ce_25.0.2-1~ubuntu.22.04~jammy_amd64.deb
sudo dpkg -i docker-compose-plugin_2.24.5-1~ubuntu.22.04~jammy_amd64.deb

설치 확인:

docker --version
docker-compose version

4️⃣ 외부망에서 GitLab Docker 이미지 다운로드

외부에서 GitLab Docker 이미지를 미리 다운로드한 후 내부망으로 전송합니다.

(1) 외부망에서 GitLab EE 이미지 다운로드

docker pull gitlab/gitlab-ee:latest

(2) 다운로드한 이미지 저장

docker save -o gitlab-ee.tar gitlab/gitlab-ee:latest

(3) 내부망 서버로 전송

scp gitlab-ee.tar user@internal-server:/home/user/

5️⃣ 내부망에서 GitLab 실행 (리소스 제한 적용)

(1) 내부망에서 GitLab 이미지 로드

docker load -i gitlab-ee.tar

(2) /data/gitlab 디렉토리 생성

sudo mkdir -p /data/gitlab/config
sudo mkdir -p /data/gitlab/logs
sudo mkdir -p /data/gitlab/data
sudo chown -R 1000:1000 /data/gitlab

(3) Docker Compose 파일 작성 (docker-compose.yml)

version: '3.7'
services:
  gitlab:
    image: gitlab/gitlab-ee:latest
    restart: always
    hostname: 'gitlab.local'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.local'
        letsencrypt['enable'] = false
        nginx['redirect_http_to_https'] = true
        nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt"
        nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key"
    ports:
      - "80:80"
      - "443:443"
      - "22:22"
    volumes:
      - /data/gitlab/config:/etc/gitlab
      - /data/gitlab/logs:/var/log/gitlab
      - /data/gitlab/data:/var/opt/gitlab
      - /data/gitlab/ssl:/etc/gitlab/ssl
    deploy:
      resources:
        limits:
          cpus: "2"
          memory: "4GB"

(4) GitLab 컨테이너 실행

cd /data/gitlab
docker-compose up -d

6️⃣ GitLab 초기 설정 및 HTTPS 인증서 생성

mkdir -p /data/gitlab/ssl
cd /data/gitlab/ssl

openssl req -newkey rsa:4096 -nodes -keyout gitlab.key -x509 -days 365 -out gitlab.crt \
-subj "/C=KR/ST=Seoul/L=Seoul/O=InternalGitLab/OU=IT/CN=gitlab.local"

chmod 600 gitlab.*

 

+ Recent posts