Cách cài đặt Gitea với Docker trên Debian Linux

Tác giả sysadmin, T.M.Hai 15, 2023, 04:28:25 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách cài đặt Gitea với Docker trên Debian Linux


Gitea là một giải pháp lưu trữ mã nhẹ, mã nguồn mở và tự lưu trữ, tương tự như GitHub, Gitlab và BitBucket. Nó chủ yếu được viết bằng Go và có thể chạy trên Windows, Linux, macOS, ARM, v.v. Gitea được phát triển dưới dạng một nhánh của Gogs và được xuất bản theo giấy phép MIT.

Gitea rất dễ cài đặt và cung cấp một số tùy chọn để cài đặt. Bạn có thể cài đặt Gitea với tệp nhị phân cho nền tảng và kiến trúc của mình, cài đặt và gửi nó dưới dạng vùng chứa với Docker hoặc cài đặt dưới dạng gói (.deb,.rpm). Gitea có yêu cầu hệ thống tối thiểu và có thể được cài đặt trên máy có lõi 2CPU và RAM 1GB, thường dành cho các dự án/nhóm nhỏ. Đây là một giải pháp thay thế nhẹ, giàu tính năng và tự lưu trữ cho các dịch vụ như GitHub.

Trong hướng dẫn này, bạn sẽ thiết lập Gitea làm vùng chứa với Docker trên Debian 11. Sau đó, bạn sẽ sử dụng Apache làm proxy ngược cho gitea, bảo mật việc sử dụng gitea bằng SSL Letsencrypt và thiết lập dự án/kho lưu trữ với gitea.

1. Yêu cầu

  • Máy chủ Debian - giả sử bạn đang sử dụng bản cài đặt máy chủ Debian mới.
  • Người dùng root hoặc người dùng có đặc quyền root - để cài đặt các gói mới và thực hiện các thay đổi trên toàn hệ thống.

2. Cài đặt Docker CE trên Debian

Theo mặc định, kho lưu trữ Debian cung cấp các gói cho Docker. Tuy nhiên, trong hướng dẫn này, bạn sẽ cài đặt Docker từ kho Docker chính thức. Do đó, trước tiên bạn sẽ thêm kho Docker và khóa gpg vào hệ thống Debian của mình.

Việc sử dụng các gói Docker từ kho Docker chính thức đảm bảo rằng bạn có được phiên bản mới nhất với các tính năng mới hơn của Docker.

Trước khi thêm kho Docker, hãy chạy lệnh sau để cài đặt các gói phụ thuộc

Mã nguồn [Chọn]
sudo apt install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

Sau khi quá trình cài đặt hoàn tất, hãy thêm kho Docker cho hệ thống Debian và thêm khóa gpg Docker bằng lệnh sau

Mã nguồn [Chọn]
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Mã nguồn [Chọn]
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Bây giờ hãy cập nhật kho Debian của bạn. Sau đó cài đặt Docker CE bằng lệnh sau.

Mã nguồn [Chọn]
apt update

apt install docker-ce docker-ce-cli containerd.io

Nhập"y" và nhấn"Nhập" để xác nhận và tiếp tục cài đặt các gói.


Sau khi quá trình cài đặt hoàn tất, dịch vụ Docker sẽ tự động hoạt động và chạy trên hệ thống Debian của bạn. Nó cũng sẽ tự động chạy khi khởi động/khởi động hệ thống.


3. Cài đặt Docker Compose

Compose là một công cụ dòng lệnh để tạo và quản lý các ứng dụng Docker có nhiều vùng chứa. Bạn có thể chỉ cần xác định tất cả các vùng chứa ứng dụng của mình trong một cấu hình YAML duy nhất "docker-compose.yml" sau đó triển khai và khởi động ứng dụng của bạn bằng lệnh docker-compose.

Compose đi kèm với một gói nhị phân duy nhất. Bạn có thể cài đặt nó bằng cách tải xuống tệp nhị phân và đặt nó vào "bin" thư mục trên hệ thống của bạn.

Tải tệp nhị phân Compose xuống "/usr/local/bin" thư mục bằng lệnh sau

Mã nguồn [Chọn]
sudocurl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Sau đó thực hiện lệnh chmod để chuyển đổi tệp thành chương trình thực thi.

Mã nguồn [Chọn]
sudo chmod +x /usr/local/bin/docker-compose
Bây giờ hãy chạy lệnh 'docker-compose' để xác minh việc cài đặt.

Mã nguồn [Chọn]
docker-compose --version
Bạn sẽ thấy đầu ra tương tự như dưới đây.


4. Thêm người dùng hệ thống mới cho Gitea

Vì lý do bảo mật, bạn nên chạy các ứng dụng vùng chứa Docker với người dùng không phải root. Trong hướng dẫn này, bạn sẽ tạo một người dùng mới "gitea" theo đó tất cả các ứng dụng được đóng gói sẽ chạy.

Để tạo người dùng mới trên hệ thống Linux, hãy thực hiện lệnh sau.

Mã nguồn [Chọn]
useradd -m -s /bin/bash gitea

passwd gitea

Nhập mật khẩu mới cho người dùng "gitea" và lặp lại nó.

Để kích hoạt người dùng "gitea" để chạy vùng chứa Docker, bạn phải thêm người dùng "gitea" đến "docker" nhóm bằng lệnh usermod sau.

Mã nguồn [Chọn]
usermod -aG docker gitea

Sau đó đăng nhập với người dùng "gitea" và khởi động vùng chứa "hello-world" với lệnh sau.

Mã nguồn [Chọn]
su - gitea

docker run hello-world

Nếu cấu hình của bạn đúng, bạn sẽ thấy kết quả đầu ra tương tự như bên dưới.


5. Thiết lập môi trường cài đặt Gitea

Gitea cung cấp hình ảnh Docker được tạo sẵn để cài đặt. Gitea hỗ trợ cơ sở dữ liệu MySQL và PostgreSQL. Trong hướng dẫn này, bạn sẽ tạo cấu hình YAML docker-compose cho môi trường cài đặt Gitea. Nó bao gồm một số mạng nhất định, dịch vụ gitea và cơ sở dữ liệu PostgreSQL.

"gitea" và thay đổi thư mục làm việc của bạn thành nó

Mã nguồn [Chọn]
su - gitea

mkdir -p gitea; cd gitea/

Tạo tập lệnh "docker-compose.yml" với chỉnh sửa nano.

Mã nguồn [Chọn]
nano docker-compose.yml
Đầu tiên sao chép dòng sau và dán vào đầu dòng. Đây là dấu hiệu cho thấy bạn đang sử dụng tập lệnh docker-compose version: "3".

Mã nguồn [Chọn]
version: "3"
Xác định tên mạng cụ thể "gitea" cho môi trường cài đặt của bạn.

Mã nguồn [Chọn]
networks:
  gitea:
    external: false

Xác định cấu hình của các dịch vụ. Tất cả các dịch vụ trong ngăn xếp ứng dụng của bạn phải nằm trong phần chính của cấu hình dịch vụ.

Mã nguồn [Chọn]
services:
Xác định gitea dịch vụ với các thông tin sau:

  • Tên dịch vụ là " máy chủ" và vùng chứa là"gitea".
  • Sử dụng hình ảnh cơ bản gitea phiên bản mới nhất.
  • Đảm bảo rằng tên cơ sở dữ liệu, người dùng và mật khẩu khớp với dịch vụ cơ sở dữ liệu.
  • Chỉ định mạng bằng"gitea".
  • Thư mục ổ đĩa ứng dụng có sẵn trong '/installation/path/gitea'.
  • Gán cổng TCP"3000" cho ứng dụng Gitea và cổng"22" để được hỗ trợ SSH Git. Ngoài ra, hãy đảm bảo rằng dịch vụ SSH trên máy chủ sử dụng một cổng khác.
  • Dịch vụ này được thực thi sau dịch vụ cơ sở dữ liệu.

Mã nguồn [Chọn]
  server:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=gitea
    restart: always
    networks:
      - gitea
    volumes:
      -./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "22:22"
    depends_on:
      - db

Bây giờ hãy xác định dịch vụ cơ sở dữ liệu với các chi tiết sau:

  • Dịch vụ cơ sở dữ liệu được đặt tên"db".
  • Sử dụng hình ảnh cơ sở PostgreSQL 13
  • Xác định tên cơ sở dữ liệu và người dùng cho ứng dụng Gitea.
  • Sử dụng cùng một mạng cụ thể"gitea".
  • Thư mục dữ liệu cho dịch vụ db có sẵn trong '/installation/dir/postgres'.

Mã nguồn [Chọn]
  db:
    image: postgres:13
    restart: always
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=gitea
      - POSTGRES_DB=gitea
    networks:
      - gitea
    volumes:
      -./postgres:/var/lib/postgresql/data

Lưu cấu hình bằng cách nhấn'Ctrl+x', gõ 'y' rồi nhấn'Enter' để thoát.

Dưới đây bạn có thể thấy cấu hình đã hoàn thành mà bạn sẽ sử dụng.

Mã nguồn [Chọn]
version: "3"
networks:
gitea:
external: false

services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
-./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "22:22"
depends_on:
- db

db:
image: postgres:13
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
networks:
- gitea
volumes:
-./postgres:/var/lib/postgresql/data

Để tạo và khởi động dịch vụ Gitea Docker, hãy chạy lệnh docker-compose.

Mã nguồn [Chọn]
docker-compose up -d

Khi tất cả các quá trình hoàn tất, hãy kiểm tra cài đặt docker gitea của bạn bằng lệnh sau.

Mã nguồn [Chọn]
docker-compose ps
Nếu cài đặt của bạn đúng, bạn sẽ thấy hai dịch vụ container: "gitea" dưới dạng một ứng dụng và"gitea_db_1" như một dịch vụ cơ sở dữ liệu. Cả hai dịch vụ container đều đang trong"Up" trạng thái, tức là họ đang chạy.


Bạn cũng có thể kiểm tra nhật ký của ứng dụng Gitea của mình bằng lệnh docker-compose sau.

Mã nguồn [Chọn]
docker-compose logs
Bạn sẽ thấy rằng rất nhiều thông điệp tường trình được tạo ra trong quá trình khởi tạo dịch vụ vùng chứa.

6. Thiết lập Apache làm proxy ngược cho Gitea

Trong bước này, bạn sẽ cài đặt và định cấu hình máy chủ web Apache làm proxy ngược cho dịch vụ docker Gitea. Bạn cũng sẽ bảo mật cài đặt Gitea của mình bằng SSL từ Letsencrypt.

Chạy lệnh sau để cài đặt các gói apache2, certbot và certbot-plugin cho apache.

Mã nguồn [Chọn]
apt install apache2 certbot python3-certbot-apache
Nhập"y" và nhấn"Nhập" để xác nhận và tiếp tục cài đặt.

"/etc/apache/sites-available" và tạo cấu hình Apache ảo mới"gitea.conf" với nano.

Mã nguồn [Chọn]
cd /etc/apache2/sites-available/

nano gitea.conf

Sao chép và dán cấu hình sau. Đảm bảo rằng bạn thay thế tên miền bằng tên miền của riêng bạn.

Mã nguồn [Chọn]
# apache2 port 80
<VirtualHost *:80>
  ServerName git.example.io
 
  ErrorLog /var/log/apache2/git.example.io-error.log
  CustomLog /var/log/apache2/git.example.io-access.log combined

ProxyPreserveHost On
ProxyRequests off
AllowEncodedSlashes NoDecode
ProxyPass / http://localhost:3000/ nocanon
ProxyPassReverse / http://localhost:3000/

</VirtualHost>

Nhấn tổ hợp phím"Ctrl+x", nhập"y" để lưu và thoát."Enter" rồi nhấn

Sau đó thực hiện lệnh sau để kích hoạt cấu hình của máy chủ ảo "gitea.conf". 3.

Mã nguồn [Chọn]
a2ensite gitea.conf
Bây giờ kích hoạt một số mô-đun Apache và kiểm tra cấu hình Apache2 của bạn bằng lệnh bên dưới.

Mã nguồn [Chọn]
a2enmod ssl proxy proxy_http

apachectl configtest

Nếu bạn không gặp lỗi, hãy khởi động lại dịch vụ Apache2 để áp dụng cấu hình mới.

Mã nguồn [Chọn]
systemctl restart apache2

Tiếp theo, tạo SSL Letsencrypt bằng lệnh certbot bên dưới.

Mã nguồn [Chọn]
certbot --apache --agree-tos -m [email protected] -d git.example.io
Bạn sẽ được hỏi một số câu hỏi.

  • Địa chỉ email: Khi chứng chỉ SSL hết hạn, bạn sẽ được chuyển hướng đến email này.
  • Letsencrypt TOS (Điều khoản dịch vụ): Nhập "A " đồng ý.
  • Chia sẻ email với EFF: Bạn có thể chọn"N" vì không.
  • Tự động chuyển hướng HTTP sang HTTPS: Chọn số "2" để bật tính năng chuyển hướng tự động.

Sau khi quá trình hoàn tất, bạn sẽ thấy chứng chỉ SSL có sẵn trong "/etc/letsencrypt/live/git.example.io" danh mục. Ngoài ra, cấu hình máy chủ ảo Apache2 của bạn đã thay đổi do cấu hình bổ sung của letsencrypt.

Để đảm bảo rằng cấu hình Apache mới đã được áp dụng, hãy khởi động lại dịch vụ Apache2 và kiểm tra nó bằng lệnh sau.

Mã nguồn [Chọn]
systemctl restart apache2

systemctl is-enabled apache2

systemctl status apache2

Bạn sẽ nhận được một đầu ra tương tự như dưới đây.


Dịch vụ apache được bật và sẽ được khởi động tự động khi khởi động hệ thống. Dịch vụ apache2 đang"hoạt động (đang chạy)" làm proxy ngược cho dịch vụ Gitea Docker. Và nó chạy với SSL được kích hoạt từ Letsencrypt.

7. Thiết lập Gitea lần đầu tiên

Ở giai đoạn này, bạn đã hoàn tất việc cài đặt Gitea. Bây giờ hãy thiết lập dữ liệu ứng dụng Gitea của bạn và tạo người dùng quản trị viên mới.

Mở trình duyệt web của bạn và đi tới miền cài đặt Gitea.

Mã nguồn [Chọn]
https://git.example.io/
Trong phần "Cài đặt chung" phần này, bạn phải thực hiện các cấu hình quan trọng nhất như sau:



"Cài đặt tùy chọn" và nhấp vào tùy chọn bổ sung "Cài đặt tài khoản quản trị viên".

Tạo người dùng quản trị viên mới cho Gitea:

  • Tên người dùng quản trị viên: johndoe
  • Mật khẩu: johndoe ********
  • Xác nhận mật khẩu: ********
  • Địa chỉ email: [email protected]


Bây giờ hãy nhấp vào "Cài đặt Gitea" để bắt đầu cài đặt Gitea của bạn.

Nếu cài đặt đúng, bạn sẽ được chuyển hướng đến trang chủ Gitea (xem bên dưới).


Vấn đề thường gặp: Nếu bạn được chuyển hướng đến địa chỉ "   Đăng nhập để xem liên kết", bạn cần thiết lập"URL cơ sở Gitea"Gitea URL cơ sở" khớp với tên miền bạn đang sử dụng để cài đặt Gitea.

8. Kiểm tra cài đặt Gitea: Tạo kho lưu trữ đầu tiên

Trên trang người dùng chuẩn Gitea, bạn sẽ thấy các phần "Kho lưu trữ" và"Tổ chức".

Kho lưu trữ" và nhấp vào"+" để tạo kho lưu trữ mới.


Nhập chi tiết cấu hình kho lưu trữ như sau.

  • Tên kho lưu trữ: dotfiles
  • Khả năng hiển thị: Đánh dấu là kiểm tra kho lưu trữ riêng tư
  • Mô tả: Nhập mô tả của bạn


Cuộn xuống cuối và nhấp vào"Tạo" nút.

Bạn đã tạo thành công kho lưu trữ mới trên Gitea.


Để thiết lập kho git trên máy tính cục bộ của bạn, bạn phải cài đặt gói git trên hệ thống của mình.

Đặt tên người dùng và địa chỉ email chung cho kho git của bạn bằng cách thực hiện lệnh sau.

Mã nguồn [Chọn]
git config --global user.email "[email protected]"

git config --global user.name "johndoe"

Tạo một thư mục mới "dotfiles", thay đổi thư mục làm việc hiện tại thành thư mục đó rồi tạo và chỉnh sửa tệp mới "README.md".

Thực hiện lệnh sau.

Mã nguồn [Chọn]
mkdir dotfiles; cd dotfiles

touch README.md

nano README.md

Bây giờ hãy khởi tạo kho lưu trữ Git mới bằng lệnh Git bên dưới.

Mã nguồn [Chọn]
git init
Kho Git mới đã được khởi tạo.


Thêm các thay đổi của tệp"README.md" vào kho Git hiện tại và cam kết chúng.

Mã nguồn [Chọn]
git add README.md

git commit -m "first commit - add README.md"

Thêm kho lưu trữ từ xa vào kho lưu trữ gitea của bạn và đẩy tất cả các tệp vào đó.

Mã nguồn [Chọn]
git remote add origin https://git.example.io/johndoe/dotfiles.git

git push -u origin master

Nhập tên người dùng và mật khẩu gitea của bạn. Trong ví dụ này, hãy sử dụng tên người dùng "johndoe". Khi quá trình đẩy của bạn hoàn tất, bạn sẽ thấy kết quả đầu ra tương tự như bên dưới.


Để kiểm tra cam kết đầu tiên của bạn với kho lưu trữ Gitea, hãy truy cập kho lưu trữ của bạn bằng trình duyệt web. Bạn sẽ thấy mã của mình có sẵn trong kho Gitea.


Dưới đây bạn có thể xem ảnh chụp màn hình sau khi thêm mã mới vào "tệp chấm" kho.


Chúc mừng! Bạn đã học cách cài đặt Gitea với cơ sở dữ liệu PostgreSQL và kho lưu trữ Apache bằng bộ chứa Docker trên máy chủ Debian 11 mới nhất. Bạn cũng bảo đảm việc triển khai Gitea của mình bằng SSL từ Letsencrypt. Bạn cũng đã tạo một kho lưu trữ riêng mới trên dịch vụ Gitea của mình và chuyển mã cục bộ từ máy tính của bạn sang máy chủ Gitea.