Cách cài đặt dịch vụ Git tự lưu trữ Gitea bằng Docker trên Ubuntu 18.04

theanh

Administrator
Nhân viên
Gitea là một nhánh của Gogs, dịch vụ Git tự lưu trữ dễ sử dụng. Nó tương tự như GitHub, Bitbucket và Gitlab. Gitea là giải pháp lưu trữ mã nhẹ được viết bằng Go, có thể chạy trên các yêu cầu phần cứng tối thiểu. Đây là một ứng dụng đa nền tảng, có thể chạy ở bất kỳ đâu có thể biên dịch Go như Windows, Linux, MacOS, ARM, v.v.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn từng bước cách cài đặt và cấu hình dịch vụ Git nhẹ bằng Gitea. Chúng tôi sẽ triển khai máy chủ Gitea bằng Docker và sẽ sử dụng cơ sở dữ liệu PostgreSQL và proxy ngược Traefik. Đối với hướng dẫn này, chúng tôi sẽ sử dụng Ubuntu 18.04 Server mới nhất.

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

  • Ubuntu 18.04
  • Quyền root

Chúng ta sẽ làm gì?​

  1. Cài đặt Docker-CE
  2. Cài đặt Docker Compose
  3. Triển khai Gitea dưới dạng Container bằng Docker
  4. Sau khi cài đặt Gitea
  5. Tạo kho lưu trữ đầu tiên
  6. Kiểm tra lần cam kết đầu tiên

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

Bước đầu tiên chúng ta sẽ thực hiện đối với hướng dẫn này là cài đặt phiên bản cộng đồng Docker vào máy chủ Ubuntu 18.04. Chúng tôi sẽ cài đặt gói Docker CE từ kho lưu trữ Docker chính thức.

Thêm Docker và kho lưu trữ Docker bằng cách chạy các lệnh bên dưới.
Mã:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
 "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) \
 stable"


Lệnh 'add-apt-repository' sẽ tự động cập nhật kho lưu trữ.

Bây giờ hãy cài đặt gói Docker CE.
Mã:
sudo apt policy docker-ce
sudo apt install docker-ce=18.06.1~ce~3-0~ubuntu


Khi quá trình cài đặt hoàn tất, hãy khởi động dịch vụ docker và cho phép dịch vụ này khởi chạy mọi lúc khi khởi động hệ thống.
Mã:
sudo systemctl start docker
sudo systemctl enable docker
Docker CE đã hoạt động trên Ubuntu Máy chủ 18.04. Xác minh cài đặt bằng cách kiểm tra phiên bản docker.
Mã:
phiên bản docker


hoặc chạy docker 'hello-world'.
Mã:
docker run hello-world

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

Docker-Compose là một công cụ dòng lệnh để xác định và quản lý các ứng dụng docker đa container. Nó cho phép bạn tạo một container dưới dạng dịch vụ, rất phù hợp cho môi trường phát triển, thử nghiệm và dàn dựng của bạn.

Cài đặt Docker Compose bằng cách tải xuống tệp nhị phân và biến nó thành tệp thực thi.
Mã:
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Bây giờ hãy kiểm tra lệnh docker-compose.
Mã:
phiên bản docker-compose
Docker Compose hiện đã được cài đặt.


Bước 3 - Triển khai Gitea dưới dạng Docker Container​

Trong bước này, chúng tôi sẽ tạo một tập lệnh docker-compose mới chứa tất cả cấu hình dịch vụ bao gồm Cơ sở dữ liệu PostgreSQL và proxy ngược Traefik. Chúng tôi sẽ thiết lập tất cả các tệp triển khai trên thư mục có tên 'deployment'.

Tạo Mạng Docker Tùy chỉnh​

Trước khi tạo cấu hình triển khai, hãy tạo một mạng cầu nối tùy chỉnh mới. Nó sẽ được sử dụng cho proxy ngược traefik dịch vụ bên ngoài.

Kiểm tra danh sách docker network.
Mã:
docker network ls
Bây giờ hãy tạo một mạng cầu tùy chỉnh mới có tên là 'hakasenet'.
Mã:
docker network create hakasenet
Kiểm tra lại.
Mã:
docker network ls
Bây giờ bạn sẽ nhận được mạng 'hakasenet' trong danh sách.


Thiết lập thư mục triển khai và tệp​

Tạo một thư mục mới có tên là 'deployment' và tập lệnh 'docker-compose.yml' trên đó.
Mã:
mkdir implementation; cd triển khai
touch docker-compose.yml
Bây giờ hãy tạo thư mục mới 'gitea' và khối lượng dữ liệu 'postgres'.
Mã:
mkdir -p gitea/ postgres/
Tạo tệp mới 'acme.json' và thay đổi quyền của tệp. tệp này sẽ được sử dụng để lưu trữ dữ liệu Letsencrypt.
Mã:
touch acme.json
chmod 600 acme.json
Bây giờ hãy tạo tệp cấu hình traefik toàn cục 'traefik.toml'.
Mã:
touch traefik.toml
Và bên dưới là các tệp và thư mục chúng ta có để cài đặt Gitea bằng Docker.
Mã:
tree

Thiết lập dịch vụ PostgreSQL​

Dịch vụ cơ sở dữ liệu PostgreSQL là dịch vụ đầu tiên mà chúng ta muốn cấu hình. Dịch vụ cơ sở dữ liệu sẽ chỉ chạy trên mạng docker nội bộ.

Chúng ta sẽ sử dụng hình ảnh Postgres 9.6, sử dụng 'gitea' làm tên cơ sở dữ liệu, người dùng và mật khẩu, và thiết lập khối lượng dữ liệu postgres.

Chỉnh sửa tệp 'docker-compose.yml' bằng vim.
Mã:
vim docker-compose.yml
Dán cấu hình bên dưới.
Mã:
phiên bản: "3"mạng: hakasenet: bên ngoài: đúng bên trong: bên ngoài: saidịch vụ: db: hình ảnh: postgres:9.6 khởi động lại: luôn luôn môi trường: - POSTGRES_USER=gitea - POSTGRES_PASSWORD=gitea - POSTGRES_DB=gitea nhãn: - "traefik.enable=false" mạng: - khối lượng nội bộ: - ./postgres:/var/lib/postgresql/data
Lưu và thoát.

Thiết lập Proxy ngược Traefik​

Bây giờ chúng ta sẽ cấu hình proxy ngược Traefik cho cài đặt Gitea của chúng ta.

Dịch vụ traefik sẽ chạy dưới các cổng mặc định HTTP và HTTPS, chạy trên mạng cầu tùy chỉnh có tên là 'hakasenet' và chúng ta sẽ cấu hình để sử dụng chứng chỉ Letsencrypt sẽ được xác định trên tệp 'traefik.toml'.

Chỉnh sửa tập lệnh soạn thảo.
Mã:
vim docker-compose.yml
Dán cấu hình vào cấu hình dịch vụ db.
Mã:
traefik: image: traefik:latest command: --docker ports: - 80:80 - 443:443 labels: - "traefik.enable=true" - "traefik.backend=dashboard" - "traefik.frontend.rule=Host:traefik.hakase-labs.io" - "traefik.port=8080" networks: - hakasenet volumes: - /var/run/docker.sock:/var/run/docker.sock - ./traefik.toml:/traefik.toml - ./acme.json:/acme.json container_name: traefik restart: always
Lưu và thoát.

Bây giờ hãy chỉnh sửa tệp cấu hình 'traefik.toml'.
Mã:
vim traefik.toml
Và dán cấu hình sau.
Mã:
#Cấu hình toàn cục Traefikdebug = falsecheckNewVersion = truelogLevel = "ERROR"#Xác định EntryPoint cho HTTP và HTTPSdefaultEntryPoints = ["https","http"]#Xác định cổng HTTP 80 và#Cổng HTTPS 443 EntryPoint#Bật tự động chuyển hướng HTTP đến HTTPS[entryPoints][entryPoints.http]address = ":80"[entryPoints.http.redirect]entryPoint = "https"[entryPoints.https]address = ":443"[entryPoints.https.tls]#Bật Traefik Dashboard trên cổng 8080#với phương thức xác thực cơ bản#hakase và mật khẩu[entryPoints.dash]address=":8080"[entryPoints.dash.auth][entryPoints.dash.auth.basic] users = [ "hakase:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.", ][api]entrypoint="dash"dashboard = true#Bật thử lại gửi yêu cầu nếu lỗi mạng[retry]#Xác định cấu hình Docker Backend[docker]endpoint = "unix:///var/run/docker.sock"domain = "hakase-labs.io"watch = trueexposedbydefault = false#Đăng ký Letsencrypt#Xác định thử thách Letsencrypt ACME HTTP[acme]email = "[emailprotected]"storage = "acme.json"entryPoint = "https"OnHostRule = true [acme.httpChallenge] entryPoint = "http"
Lưu và thoát.

Lưu ý:
  • Thay đổi email acme letsencrypt bằng địa chỉ email hợp lệ của bạn.

Thiết lập Dịch vụ Gitea​

Chỉnh sửa tệp cấu hình 'docker-compose.yml'.
Mã:
vim docker-compose.yml
Dán cấu hình dịch vụ gitea vào cuối dòng.
Mã:
máy chủ: hình ảnh: gitea/gitea:môi trường mới nhất: - USER_UID=1000 - USER_GID=1000 khởi động lại: luôn luôn mạng: - khối lượng nội bộ: - ./gitea:/dữ liệu cổng: - "3000" - "22" nhãn: - "traefik.enabled=true" - "traefik.backend=gitea" - "traefik.frontend.rule=Host:git.hakase-labs.io" - "traefik.docker.network=hakasenet" - "traefik.port=3000" mạng: - nội bộ - hakasenet phụ thuộc vào: - db - traefik
Lưu và thoát.

Dịch vụ Gitea sẽ chạy trên cổng TCP '3000', sử dụng hai mạng docker đó là 'internal' và 'hakasenet' và sẽ chạy dưới proxy ngược traefik trên miền 'git.hakase-labs.io'.

Docker Cấu hình composes cho triển khai Gitea đã hoàn tất.

Triển khai tất cả các dịch vụ​

Bây giờ triển khai ngăn xếp bằng lệnh 'docker-compose' bên dưới.
Mã:
docker-compose up -d
Lệnh sẽ tải xuống tất cả các hình ảnh docker cần thiết và chạy các dịch vụ được xác định trên tập lệnh docker-compose.



Và khi hoàn tất, hãy kiểm tra các dịch vụ khả dụng trên docker bằng tùy chọn ps như bên dưới.
Mã:
docker-compose ps
Bây giờ bạn sẽ nhận được kết quả như bên dưới.



Cơ sở dữ liệu PostgreSQL, Gitea và các vùng chứa proxy ngược traefik hiện đã hoạt động. Dịch vụ cơ sở dữ liệu đang chạy trên cổng mặc định '5432', máy chủ gitea đang chạy trên cổng '3000' và proxy traefik đang chạy trên cổng HTTP và HTTPS, có thể truy cập từ mạng/internet bên ngoài.

Nếu bạn muốn kiểm tra tất cả các bản ghi từ docker check, hãy chạy lệnh bên dưới.
Mã:
docker-compose logs

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

Mở trình duyệt web của bạn và nhập URL cài đặt Gitea. Của tôi là:


Bây giờ bạn sẽ nhận được trang Gitea mặc định.



Thêm đường dẫn cài đặt vào URL.


Bây giờ bạn sẽ nhận được trang cài đặt Gitea.

Cấu hình cơ sở dữ liệu​

Nhập thông tin chi tiết về cơ sở dữ liệu PostgreSQL và sử dụng 'db' làm máy chủ.


Cấu hình Gitea chung​

Thay đổi 'Tiêu đề trang web' bằng tiêu đề của riêng bạn, 'Miền máy chủ SSH' (không có https) và 'URL cơ sở Gitea' bằng URL máy chủ gitea của bạn.


Cài đặt tài khoản quản trị​

Trên cài đặt quản trị, nhập tên người dùng, mật khẩu và địa chỉ email của quản trị viên.



Bây giờ hãy nhấp vào nút 'Cài đặt Gitea'.

Và bạn sẽ được chuyển hướng đến bảng điều khiển người dùng mặc định của Gitea.


Bước 5 - Tạo kho lưu trữ đầu tiên trong Gitea​

Trên trang chủ của người dùng, nhấp vào nút '+'.

Bây giờ hãy nhập thông tin chi tiết về kho lưu trữ mà bạn muốn tạo.



và nhấp vào nút 'Tạo kho lưu trữ'.

Kho lưu trữ đã được tạo.


Bước 6 - Kiểm tra lần commit đầu tiên​

Quay lại shell terminal của bạn và thiết lập người dùng git và email mặc định.

Chạy lệnh git bên dưới.
Mã:
git config --global user.name "hakase"
git config --global user.email "[emailprotected]"
Bây giờ hãy sao chép kho lưu trữ.
Mã:
git clone https://git.hakase-labs.io/hakase/myrepo.git
Đi tới thư mục kho lưu trữ 'myyrepo' và chỉnh sửa tệp README.md.
Mã:
cd myrepo/
vim README.md
thực hiện các thay đổi trên tệp README, sau đó lưu và thoát.

Bây giờ hãy commit kho lưu trữ.
Mã:
git add .
git commit -m 'Chỉnh sửa tệp README.md file by hakase-labs'
Và đẩy nó lên máy chủ.
Mã:
git push origin master
Nhập tên người dùng và mật khẩu của bạn.

Và sau đây là kết quả.



Kiểm tra trang kho lưu trữ và đảm bảo bạn nhận được các thay đổi như bên dưới.



Quá trình cài đặt Gitea với Docker trên Ubuntu 18.04 đã hoàn tất thành công.

Tham khảo​

 
Back
Bên trên