Cách cài đặt Gitlab Server với Docker trên Ubuntu 18.04 LTS

theanh

Administrator
Nhân viên
Gitlab CE hay Community Edition là một ứng dụng nguồn mở được sử dụng để lưu trữ kho lưu trữ Git của bạn. Tự lưu trữ kho lưu trữ Git của bạn giúp bạn kiểm soát hoàn toàn dữ liệu của mình đồng thời cung cấp giao diện dễ sử dụng cho bạn và các thành viên trong nhóm của bạn.

Trong hướng dẫn này, chúng tôi sẽ giới thiệu cách cài đặt kho lưu trữ Git của bạn bằng cách sử dụng dịch vụ miễn phí của Gitlab, Community Edition. Nếu bạn muốn các tính năng nâng cao như Phê duyệt hợp nhất, Lộ trình, Quản lý danh mục đầu tư, Phục hồi sau thảm họa, Quét vùng chứa, v.v., thì bạn có thể chọn nâng cấp lên Enterprise Edition.

Điều kiện tiên quyết​

  • Máy chủ chạy Ubuntu 18.04 với người dùng sudo không phải root.
  • Bạn cần một VPS có tối thiểu 2 lõi CPU và 8GB RAM theo yêu cầu phần cứng được chỉ định cho Gitlab CE, hỗ trợ 100 người dùng. Mặc dù bạn có thể thay thế không gian hoán đổi bằng RAM, nhưng điều này không được khuyến khích vì ứng dụng sẽ chạy chậm hơn.

Bước 1 - Cài đặt các phụ thuộc​

Trước khi cài đặt Gitlab, chúng ta cần đảm bảo máy chủ của mình có một số phần mềm nhất định mà Gitlab sẽ cần để chạy đúng cách. Chạy các lệnh sau để cài đặt các phụ thuộc.
Mã:
$ sudo apt update$ sudo apt install ca-certificates curl openssh-server ufw apt-transport-https -y
Một số phần mềm trên có thể đã được cài đặt sẵn cho bạn.

Bước 2 - Thay đổi Cổng SSH của Hệ thống​

Gitlab sẽ sử dụng cổng 22 để đẩy kho lưu trữ qua SSH. SSH của máy chủ của bạn cũng đang chạy trên cổng này, điều này sẽ gây ra xung đột. Có hai cách để thực hiện. Bạn có thể thay đổi cổng SSH mà bạn sử dụng để kết nối với hệ thống của mình hoặc bạn có thể thay đổi cổng mà Gitlab sẽ sử dụng cho SSH. Trong hướng dẫn này, chúng ta sẽ thay đổi cổng SSH cho chính máy chủ.

Để thực hiện việc này, chúng ta cần chỉnh sửa tệp /etc/ssh/sshd_config. Mở tệp trong trình soạn thảo văn bản nano.
Mã:
$ sudo nano /etc/ssh/sshd_config
Tìm dòng sau và đổi 22 thành 6622 rồi xóa dấu # ở phía trước. Bạn có thể chọn bất kỳ cổng nào bạn muốn.
Mã:
# Cổng 22
Nhấn Ctrl + X để đóng tệp của bạn và nhấn Y để lưu các thay đổi.

Khởi động lại dịch vụ SSH.
Mã:
$ sudo systemctl restart sshd
Đóng phiên SSH hiện tại của bạn và tạo một phiên mới với cổng 6622 và kết nối lại với máy chủ của bạn.
Mã:
$ ssh [emailprotected] -p 6622

Bước 3 - Cấu hình Tường lửa​

Ở bước trước, chúng ta đã cài đặt ufw (Tường lửa đơn giản). Trước khi có thể tiến hành cài đặt Gitlab, chúng ta cần cấu hình nó.

Bật SSH và cổng chúng ta vừa tạo để không bị khóa.
Mã:
$ sudo ufw allow OpenSSH$ sudo ufw allow 6622
Bật tường lửa ufw.
Mã:
$ sudo ufw enable
Chúng ta cũng cần bật http và https để Gitlab hoạt động.
Mã:
$ sudo ufw allow http$ sudo ufw allow https
Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo ufw status
Bạn sẽ thấy đầu ra như sau.
Mã:
Trạng thái: activeTo Action Từ-- ------ ----OpenSSH ALLOW Anywhere6622 ALLOW Anywhere80/tcp ALLOW Anywhere443/tcp ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)6622 (v6) ALLOW Anywhere (v6)80/tcp (v6) ALLOW Anywhere (v6)443/tcp (v6) ALLOW Anywhere (v6)

Bước 4 - Cài đặt Docker​

Thêm khóa GPG của Docker vào hệ thống của bạn.
Mã:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Xác minh dấu vân tay của khóa đã tải xuống.
Mã:
$ sudo apt-key fingerprint 0EBFCD88
Bạn sẽ thấy đầu ra như sau.
Mã:
pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88uid [ unknown] Docker Release (CE deb) sub rsa4096 2017-02-22 [S]
Thêm kho lưu trữ Docker.
Mã:
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Cập nhật cơ sở dữ liệu gói của bạn.
Mã:
$ sudo apt update
Cài đặt Docker-CE. CE là Phiên bản cộng đồng của Docker.
Mã:
$ sudo apt install docker-ce -y
Docker sẽ được cài đặt ngay bây giờ. Kiểm tra xem nó có đang chạy không.
Mã:
$ sudo systemctl status docker
Đầu ra sẽ tương tự như sau.
Mã:
? docker.service - Docker Application Container Engine Đã tải: đã tải (/lib/systemd/system/docker.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thu 2019-10-11 21:10:31 UTC; 32 giây trước Tài liệu: https://docs.docker.com PID chính: 19128 (dockerd) Nhiệm vụ: 12 CGroup: /system.slice/docker.service ??19128 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Nhấn q để thoát.

Thêm tài khoản người dùng Linux giới hạn của bạn vào nhóm docker để bạn có thể chạy docker mà không cần sudo.
Mã:
sudo usermod -aG docker $USER
Biến $USER sẽ chọn và thêm người dùng hiện đang đăng nhập vào nhóm docker. Thay thế $USER bằng tên người dùng thực tế nếu bạn hiện không đăng nhập bằng người dùng đó.

Chuyển sang người dùng mà chúng ta vừa thêm. Mặc dù bạn đã đăng nhập, bạn vẫn cần phải chuyển sang tài khoản đó một lần nữa để tải lại quyền.
Mã:
$ su - ${USER}
Kiểm tra xem mọi thứ có chạy tốt không bằng cách chạy chương trình "Hello World" tích hợp sẵn.
Mã:
$ docker run hello-world
Bạn sẽ thấy đầu ra sau cho biết Docker đã được cài đặt và hoạt động bình thường.
Mã:
Không tìm thấy hình ảnh 'hello-world:latest' cục bộlatest: Đang kéo từ thư viện/hello-world1b930d010525: Đã kéo xongTóm tắt: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5fTrạng thái: Đã tải xuống hình ảnh mới hơn cho hello-world:latestXin chào từ Docker!Thông báo này cho biết cài đặt của bạn có vẻ đang hoạt động bình thường.

Bước 5 - Cài đặt Docker Compose​

Bạn có thể bỏ qua bước này và tiếp tục nhưng việc cài đặt Docker Compose sẽ giúp chạy Gitlab dễ dàng hơn nhiều, đặc biệt nếu bạn muốn thực hiện trên nhiều máy chủ.
Mã:
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Tại thời điểm viết hướng dẫn này, 1.24.1 là bản phát hành ổn định hiện tại của Docker Compose. Bạn có thể kiểm tra phiên bản phát hành mới nhất từ trang Github của họ.

Áp dụng quyền thực thi cho tệp nhị phân docker compose.
Mã:
$ sudo chmod +x /usr/local/bin/docker-compose
Thêm lệnh hoàn thành vào Docker Compose.
Mã:
$ sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
Xác minh xem cài đặt của bạn đã thành công chưa.
Mã:
$ docker-compose --version
Nó sẽ in ra nội dung sau output.
Mã:
docker-compose phiên bản 1.24.1, bản dựng 4667896b

Bước 6 - Cài đặt Gitlab​

Tải xuống hình ảnh Docker của Gitlab từ Dockerhub. Hình ảnh này chứa mọi thứ bạn cần để chạy Docker - nginx, PostgreSQL, Redis, v.v. Chạy lệnh sau để tải xuống hình ảnh.
Mã:
$ docker pull gitlab/gitlab-ee:latest
Mặc dù hướng dẫn này là về việc cài đặt Community Edition, nhưng chúng tôi sẽ lấy hình ảnh Enterprise Edition của Gitlab. Điều này là do Enterprise Edition hoạt động giống hệt Community Edition trừ khi bạn nâng cấp lên bằng cách nhập giấy phép của mình. Việc nâng cấp cài đặt Community Edition lên Enterprise Edition gây ra nhiều phức tạp hơn.

Sẽ mất một lúc để tải xuống hình ảnh hoàn chỉnh. Khi công việc hoàn tất, bạn có thể chạy lệnh sau để kiểm tra tất cả các hình ảnh hiện có trên hệ thống của bạn.
Mã:
$ docker images
Đầu ra sẽ trông tương tự như sau.
Mã:
REPOSITORY TAG IMAGE ID CREATED SIZEgitlab/gitlab-ee latest 4bacb2356d28 4 ngày trước 1,87GBhello-world latest fce289e99eb9 9 tháng trước 1,84kB

Bước 7 - Chạy Gitlab​

Chúng ta có thể chạy container Gitlab ngay tại thời điểm này bằng cách cung cấp tất cả các tùy chọn trong một lệnh duy nhất nhưng điều đó có nghĩa là mỗi khi bạn cần chạy container, bạn cần cung cấp các biến này. Docker Compose giúp quá trình này dễ dàng hơn vì nó cho phép bạn lưu cấu hình vào tệp .yml sau đó sẽ được sử dụng để chạy và khởi chạy vùng chứa.

Tạo docker-compose.yml.
Mã:
$ nano docker-compose.yml
Dán mã sau.
Mã:
web: image: 'gitlab/gitlab-ee:latest' container_name: 'gitlab-howtoforge-tutorial' restart: always hostname: 'gitlab.example.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'https://gitlab.example.com' gitlab_rails['smtp_enable'] = đúng gitlab_rails['smtp_address'] = "smtp.gmail.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "[emailprotected]" gitlab_rails['smtp_password'] = "mật khẩu ứng dụng" gitlab_rails['smtp_domain'] = "smtp.gmail.com" gitlab_rails['smtp_authentication'] = "đăng nhập" gitlab_rails['smtp_enable_starttls_auto'] = đúng gitlab_rails['smtp_tls'] = sai gitlab_rails['smtp_openssl_verify_mode'] = 'peer' # Thêm bất kỳ cấu hình gitlab.rb nào khác tại đây, mỗi cấu hình trên một dòng riêng ports: - '80:80' - '443:443' - '22:22' - '587:587' volumes: - '/srv/gitlab/config:/etc/gitlab' - '/srv/gitlab/logs:/var/log/gitlab' - '/srv/gitlab/data:/var/opt/gitlab'
Chúng ta hãy xem từng tùy chọn trên có nghĩa là gì.
  • image đề cập đến vị trí của hình ảnh Docker của Gitlab trên Dockerhub.
  • container_name cho phép bạn áp dụng nhãn cho vùng chứa docker của mình, để sử dụng khi tham chiếu đến vùng chứa trong mạng Docker.
  • hostname định nghĩa tên máy chủ nội bộ của vùng chứa hoặc trong trường hợp của chúng tôi, là URL nơi Gitlab của bạn sẽ được lưu trữ đã cài đặt.
  • khởi động lại chỉ định chính sách khởi động lại cho vùng chứa. Chúng tôi đã đặt thành luôn luôn, nghĩa là vùng chứa nếu thoát sẽ tự động được khởi động lại.
  • môi trường cung cấp biến GITLAB_OMNIBUS_CONFIG cho phép bạn nhập bất kỳ cài đặt cấu hình Gitlab nào. Trong trường hợp này, chúng tôi đã cung cấp URL bên ngoài mà Gitlab được cho là sẽ sử dụng.
  • khối lượng định nghĩa các thư mục được gắn kết trên máy chủ để lưu trữ dữ liệu liên tục. Ba khối lượng/thư mục lưu trữ dữ liệu ứng dụng, tệp nhật ký và tệp cấu hình. Giá trị bên trái dấu chấm phẩy là thư mục cục bộ trên máy chủ và giá trị bên phải là thư mục bên trong vùng chứa.
  • xuất bản yêu cầu vùng chứa xuất bản các cổng hoặc một phạm vi cổng tới máy chủ. Vì Gitlab cần các cổng 22 (SSH), 80 (HTTP), 443 (HTTPS) và 587 (SMPT - MSA), nên chúng tôi đã chỉ định chúng ở đây. Nếu bạn muốn Gitlab sử dụng một cổng không chuẩn trên máy chủ của mình (có thể là do cổng đó không khả dụng), trước tiên bạn sẽ cung cấp cổng máy chủ rồi đến cổng container. Ví dụ: vì máy chủ của bạn đã sử dụng cổng SSH(22), bạn có thể yêu cầu Gitlab sử dụng SSH qua một cổng khác, chẳng hạn như 3333. Sau đó, bạn sẽ thay đổi 22:22 trong tệp trên thành 3333:22. Bạn cũng sẽ cần thêm dòng gitlab_rails['gitlab_shell_ssh_port'] = 3333 trong GITLAB_OMNIBUS_CONFIG ở trên.
  • external_url đề cập đến miền mà Gitlab của bạn sẽ được cài đặt. Chúng tôi đã chọn https, tùy chọn này sẽ tự động cài đặt chứng chỉ SSL Let's Encrypt cho chúng tôi.
  • Chúng tôi cũng đã thêm cấu hình bổ sung để cấu hình Gitlab sử dụng Gmail để gửi thư. Bạn có thể sử dụng bất kỳ dịch vụ thư SMTP của bên thứ 3 nào. Tài liệu Gitlab đã duy trì hướng dẫn chi tiết về cách cấu hình nhiều dịch vụ SMTP khác nhau với nó.
Đảm bảo rằng bạn đang ở cùng thư mục với docker-compose.yml. Chạy lệnh sau để khởi động Gitlab.
Mã:
$ docker-compose up -d
Bạn sẽ thấy nội dung tương tự như sau.
Mã:
Đang tạo gitlab-howtoforge-tutorial ... xong
Sẽ mất thêm vài phút nữa trước khi bạn có thể truy cập Gitlab qua trình duyệt. Bạn có thể tìm hiểu thêm về quy trình khởi động thông qua lệnh sau.
Mã:
$ docker logs -f gitlab-howtoforge-tutorial
Để thoát khỏi quy trình giám sát nhật ký, hãy nhấn Ctrl + C.

Tải trang Gitlab trong trình duyệt của bạn. Nếu bạn cố tải trang này quá sớm sau khi khởi động container, bạn sẽ nhận được lỗi 502. Nếu điều đó xảy ra, hãy đợi thêm vài phút nữa và thử lại.

Nếu mọi thứ đều ổn, bạn sẽ thấy trang sau trong trình duyệt của mình.


Bước 8 - Cấu hình Gitlab​

Cung cấp mật khẩu cho Mật khẩu quản trị viên của Gitlab. Tiếp theo, bạn sẽ được đưa đến màn hình đăng nhập. Sử dụng root làm tên người dùng và mật khẩu mà bạn vừa chọn để đăng nhập.


Cấu hình SMTP​

Chúng ta sẽ cần bật cài đặt SMTP trước khi

Cấu hình Hồ sơ Gitlab​

Nhấp vào biểu tượng người dùng ở góc trên bên phải để hiển thị menu thả xuống và chọn cài đặt.



Bạn sẽ được đưa đến trang cài đặt Hồ sơ của mình. Thêm tên và email của bạn tại đây. Bạn sẽ cần xác nhận địa chỉ email của mình để cập nhật. Bạn cũng có thể thêm thông tin về bản thân tại đây nếu muốn.



Nhấp vào Cập nhật Cài đặt Hồ sơ khi bạn hoàn tất.

Đổi Tên Người dùng​

Tiếp theo, chúng ta cần đổi tên người dùng từ root thành một tên khác vì root là tên người dùng có thể đoán được khá phổ biến. Nhấp vào Tài khoản ở thanh bên trái.



Thay đổi người dùng thành bất kỳ tên người dùng nào bạn muốn giữ. Nhấp vào Cập nhật tên người dùng để hoàn tất. Bạn cũng nên bật xác thực hai yếu tố tại đây để bảo mật hơn.

Hạn chế đăng ký công khai​

Theo mặc định, cài đặt Gitlab cho phép bất kỳ ai đăng ký. Nếu bạn không muốn điều đó, bạn nên tắt nó. Nhấp vào biểu tượng trông giống cờ lê ở thanh trên cùng để truy cập vào khu vực Quản trị.



Để điều chỉnh cài đặt, hãy nhấp vào Cài đặt ở thanh bên trái.



Tại đây, cuộn xuống Hạn chế đăng ký và nhấp vào nút Mở rộng. Bỏ chọn hộp Đã bật đăng ký và nhấp vào Lưu thay đổi khi hoàn tất.



Bạn vẫn có thể thêm người dùng mới thông qua giao diện Quản trị.

Thêm Khóa SSH​

Bước cuối cùng là thêm khóa SSH của chúng tôi. Nếu bạn có khóa SSH, bạn có thể bỏ qua lệnh sau. Nếu bạn không có, bạn có thể tạo một khóa bằng lệnh sau.
Mã:
$ ssh-keygen
Lệnh này phổ biến với Mac OS, Linux và Git Bash/WSL trên Windows. Chấp nhận các giá trị mặc định và để trống trường mật khẩu.
Mã:
Tạo cặp khóa rsa công khai/riêng tư.Nhập tệp để lưu khóa (/home/user/.ssh/id_rsa): /home/user/.ssh/gitlabNhập mật khẩu (để trống nếu không có mật khẩu):Nhập lại mật khẩu tương tự:Nhận dạng của bạn đã được lưu trong gitlab.Khóa công khai của bạn đã được lưu trong gitlab.pub.Dấu vân tay khóa là:SHA256:6dNGAPyd8JAkHAikYOW2PsFjGlzBBpwy4XQ9RQgVwK8 user@userpcHình ảnh randomart của khóa là:+---[RSA 2048]----+|+*OB=*O=.. ||B+o+o+oo+ ||oo.+. ...= . ||. + .. .o+ || o *. S . || =Eo . o || . o o o || . o || |+----[SHA256]-----+
Bạn có thể hiển thị khóa công khai của mình thông qua lệnh sau
Mã:
$ cat ~/.ssh/gitlab.pub
Mã:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUf64YH7uJimFWVJSy/mgYiLRqBxVB6JJMTxZZ96DwExoINhWVRhQAgMgExBWGpUCpWXhLcNuIM+EfFRtCq+YYyLC+GlHsNdnLgecGgop72p8BEi8UckgCiCSuMrWCMAOFh5NKs2YHpF7bOUjXQRVvGujLuV 1UBof7SXQ/za7e3aybNiH3KpA6oWSSmpqnOt8rZT54IjLnVFUSLx7ZxWDVW1bO29mI8NjWwzZGLAtNIkJQEOqVo8nhVkr ofHvBTrZnUsmr5oFOWG++LPqED9EUSPTpO8PNnogYT3xsVncBMMAEt0pPE7ATmstQc161SEtqAUa98Qb0RRKqCKcKStOp user@userpc
Quay lại khu vực Cài đặt Hồ sơ của bạn và truy cập khóa SSH từ thanh bên.



Dán khóa SSH vào hộp được cung cấp và nhấp vào Thêm khóa để tiếp tục.



Bây giờ bạn có thể tạo và cam kết với kho lưu trữ của mình mà không cần cung cấp thông tin xác thực Gitlab.

Bước 9 - Tạo Dự án đầu tiên của bạn​

Mỗi kho lưu trữ trong Gitlab đều thuộc về một dự án. Một dự án bao gồm một kho lưu trữ, trình theo dõi sự cố, yêu cầu hợp nhất, wiki, đường ống tích hợp liên tục và phân phối liên tục (CI/CD) và nhiều tính năng khác.

Để tạo kho lưu trữ đầu tiên của bạn, hãy nhấp vào Tạo dự án.



Bạn sẽ được đưa đến trang Dự án mới. Nhập tên dự án. Bạn có thể thay đổi slug của dự án thành một tên khác. Nhập mô tả về dự án nếu bạn thích và thay đổi khả năng hiển thị của dự án theo ý muốn. Bạn có thể Khởi tạo kho lưu trữ của mình bằng tệp README. Khi bạn hoàn tất, hãy nhấp vào Tạo dự án.



Bạn sẽ được đưa đến trang kho lưu trữ của mình chỉ với một tệp README.md trống.



Bây giờ kho lưu trữ của chúng ta đã hoạt động, hãy thử thêm nhật ký thay đổi từ dòng lệnh.

Nhập các lệnh sau trên máy tính của bạn để tạo tệp CHANGELOG và đẩy tệp đó trở lại kho lưu trữ của bạn. Đảm bảo rằng bạn đã cài đặt Git trên máy tính của mình.

Sao chép kho lưu trữ. Bạn có thể sao chép bằng SSH hoặc HTTPS.

Sao chép bằng SSH.
Mã:
$ git clone [emailprotected]:user/howtoforge-test.git
hoặc Sao chép bằng HTTPS.
Mã:
$ git clone https://gitlab.example.com/user/howtoforge-test.git
Nhập phần còn lại của các lệnh để tạo và đẩy CHANGELOG.
Mã:
$ cd howtoforge-test$ touch CHANGELOG # Hoặc tạo tệp trong trình soạn thảo của bạn và nhập mô tả dự án$ git add CHANGELOG$ git commit -m "add Changelog"$ git push -u origin master

Bước 10 - Quản lý Gitlab Container​

Để xem tất cả các container đang chạy, hãy chạy lệnh sau.
Mã:
$ docker-ps
Để dừng container Gitlab của bạn, hãy chạy lệnh sau.
Mã:
$ docker stop gitlab-howtoforge-tutorial
Để khởi động lại container của bạn, hãy sử dụng lệnh sau.
Mã:
$ docker start gitlab-howtoforge-tutorial
Trong trường hợp, bạn muốn xóa container của mình, bạn có thể thực hiện bằng lệnh sau.
Mã:
$ docker container rm gitlab-howtoforge-tutorial

Bước 11 - Nâng cấp Gitlab​

Nếu bạn muốn nâng cấp Gitlab lên phiên bản mới nhất, bạn cần dừng và xóa phiên bản hiện tại container, kéo hình ảnh mới nhất và sau đó tạo lại container.
Mã:
$ docker stop gitlab-howtoforge-tutorial$ docker rm gitlab-howtoforge-tutorial$ docker pull gitlab/gitlab-ee:latest$ docker-compose up -d
Và trước khi bạn hỏi, dữ liệu của bạn sẽ an toàn ngay cả khi bạn xóa container.

Đây là kết thúc hướng dẫn của chúng tôi về việc thiết lập Gitlab trên máy chủ Ubuntu 18.04 bằng Docker. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên