Damrongsak Reetanon
Posted on September 25, 2021
"ติดตั้ง Gitlab ใช้เองในบ้าน" เป้าหมายสำหรับเสาร์อาทิตย์สัปดาห์นี้ ... ยอมรับเลยว่าความรู้เรื่อง git ผมน้อยมาก เรียกได้ว่า งู ๆ ปลา ๆ เลยก็ได้ จะใช้ก็อะไร ก็ google เอา แล้วก็ใช้เท่าที่ตัวเองรู้ ... ก็รู้อยู่แหละว่า git ทำอะไรได้หลากหลายมาก เกินกว่าความรู้ที่เรามีอยู่ ก็เลยอยากเพิ่มเติมความรู้เรื่องนี้ซะหน่อย ... gitlab นี่แหละแนวเรา มี Community Edition ให้เลือกใช้ได้ และถ้าถูกใจก็ไปต่อกับ Enterprise Edition
อ้อ ... ถ้าแวะเวียนผ่านมาอ่าน แล้วอยากแบ่งปันความรู้เรื่อง git ให้ผม ขอสมัครเรียนด้วยนะครับ อยากรู้มากกกกก
0.ขั้นตอนการเตรียมความพร้อมก่อนการติดตั้ง โดยรวม ๆ ก็เริ่มจากมี VM ผมเลือกใช้ Ubuntu 20.04.3 LTS ขนาด 4 vCPU 8 GB RAM พร้อมติดตั้ง docker และ docker-compose ไว้เรียบร้อยแล้ว และ domain ที่ใช้ในการทดสอบคือ git.d8k.lo
drs@git:~$ uname -a
Linux git 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
drs@git:~$ docker version
Client:
Version: 20.10.7
API version: 1.41
Go version: go1.13.8
Git commit: 20.10.7-0ubuntu1~20.04.1
Built: Wed Aug 4 22:52:25 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.7
API version: 1.41 (minimum version 1.12)
Go version: go1.13.8
Git commit: 20.10.7-0ubuntu1~20.04.1
Built: Wed Aug 4 19:07:47 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.5.2-0ubuntu1~20.04.2
GitCommit:
runc:
Version: 1.0.0~rc95-0ubuntu1~20.04.2
GitCommit:
docker-init:
Version: 0.19.0
GitCommit:
drs@git:~$ docker-compose version
docker-compose version 1.25.0, build unknown
docker-py version: 4.1.0
CPython version: 3.8.10
OpenSSL version: OpenSSL 1.1.1f 31 Mar 2020
1.สร้าง directory เพื่อเป็นที่เก็บ configuration และ persistent data รวมถึง key pair สำหรับ TLS ด้วย
drs@git:~$ WORKING_DIR=$HOME
drs@git:~$ mkdir -p ${WORKING_DIR}/gitlab-data/config/ssl
drs@git:~$ mkdir -p ${WORKING_DIR}/gitlab-data/logs
drs@git:~$ mkdir -p ${WORKING_DIR}/gitlab-data/data
drs@git:~$ cat > ${WORKING_DIR}/gitlab-data/config/ssl/gen-tls <<EOF
#!/bin/bash
rm -f *.key *.crt *.csr
openssl ecparam -out ca.key -name prime256v1 -genkey
openssl req -new -x509 -key ca.key -out ca.crt -subj "/CN=My CA EC"
rm -f server*
openssl ecparam -out server1.key -name prime256v1 -genkey
openssl req -new -key server1.key -out server1.csr -sha256 -subj "/CN=$(hostname)"
echo subjectAltName = DNS:$(hostname),IP:$(ip a show dev enp1s0 |grep "inet "|awk '{print $2}'|cut -d "/" -f 1),IP:127.0.0.1 >> server1.cnf
echo extendedKeyUsage = serverAuth >> server1.cnf
openssl x509 -req -in server1.csr -CAkey ca.key -CA ca.crt -out server1.crt -CAcreateserial -extfile server1.cnf
openssl dhparam -out dhparam 2048
EOF
drs@git:~$ chmod 755 ${WORKING_DIR}/gitlab-data/config/ssl/gen-tls
drs@git:~$ cd ${WORKING_DIR}/gitlab-data/config/ssl
drs@git:~$ ${WORKING_DIR}/gitlab-data/config/ssl/gen-tls
drs@git:~$ cd
2.สร้าง docker-compose.yml และ เรียก dock-compose up -d
drs@git:~$ cat > ${WORKING_DIR}/docker-compose.yml <<EOF
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'git.d8k.lo'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://git.d8k.lo'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/server1.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server1.key"
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparam"
ports:
- '80:80'
- '443:443'
- '2224:22'
volumes:
- '${WORKING_DIR}/gitlab-data/config:/etc/gitlab'
- '${WORKING_DIR}/gitlab-data/logs:/var/log/gitlab'
- '${WORKING_DIR}/gitlab-data/data:/var/opt/gitlab'
- '${WORKING_DIR}/gitlab-data/config/ssl:/etc/gitlab/ssl'
EOF
drs@git:~$ docker-compose up -d
3.ตรวจสอบความคีบหน้าของการทำงานของ gitlab-ce ซึ่งใช้เวลาประมาณ 5 นาที ถึงจะพร้อมให้บริการ
ตรวจสอบชื่อ container จากคำสั่ง docker container ls ในกรณีของผมจะชื่อว่า drs_web_1
drs@git:~$ docker logs -f drs_web_1
4.ตรวจสอบรหัสผ่านสำหรับ root เพื่อใช้ในการ login ได้จาก
drs@git:~$ sudo cat ~/gitlab-data/config/initial_root_password
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
Password: ueK3olh3hY0yA2nHU2OXSBU+Wvh2F620rOaxVrr1Ldc=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
- ทดสอบการใช้งานได้ที่ https://git.d8k.lo
มูลค่าความสุข
Posted on September 25, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.