Gitea là dịch vụ lưu trữ mã tự lưu trữ tương tự như Github, Bitbucket và Gitlab. Gitea được viết bằng ngôn ngữ Go và có thể cài đặt trên nhiều hệ điều hành, bao gồm Linux, macOS, Windows và các kiến trúc như amd64, i386, ARM và các kiến trúc khác. Là một ứng dụng nhẹ, Gitea có thể được cài đặt với yêu cầu phần cứng tối thiểu. Nó bao gồm trình chỉnh sửa tệp kho lưu trữ, máy chủ OpenSSH, theo dõi sự cố, yêu cầu kéo, quản lý người dùng, thông báo, wiki tích hợp, hỗ trợ LFS, Git hooks và nhiều hơn nữa.
Trong bài viết này, bạn sẽ học cách cài đặt Gitea bằng Docker trên máy chủ Rocky Linux 8.
[*]
Cài đặt các gói thiết yếu.
[*]
Tên miền đủ điều kiện (FQDN) trỏ đến máy chủ như gitea.example.com.
Tường lửa hoạt động với các vùng khác nhau và vùng công cộng là vùng mặc định mà chúng ta sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Nó sẽ hiển thị đầu ra sau.
Cho phép các cổng HTTP và HTTPS.
Mở cổng 2221 cho SSH.
Liệt kê tất cả các dịch vụ đang được tường lửa bật.
Bạn sẽ thấy đầu ra tương tự.
Tải lại tường lửa để kích hoạt các thay đổi.
Cài đặt phiên bản Docker mới nhất.
Bật và chạy daemon Docker.
Xác minh rằng nó đang chạy.
Theo mặc định, Docker yêu cầu quyền root. Nếu bạn muốn tránh sử dụng sudo mỗi khi chạy lệnh docker, hãy thêm tên người dùng của bạn vào nhóm docker.
Bạn sẽ cần đăng xuất khỏi máy chủ và đăng nhập lại với cùng một người dùng để bật thay đổi này.
Áp dụng quyền thực thi cho tệp nhị phân Docker Compose file.
Kiểm tra cài đặt.
Cài đặt tập lệnh Docker-compose Bash Completion.
Tải lại cài đặt hồ sơ của bạn để bash-completion hoạt động.
Bạn có thể thấy hệ thống được đặt thành múi giờ GMT hoặc UTC. Nếu bạn sống ở khu vực có múi giờ khác hoặc muốn thay đổi múi giờ, hãy sử dụng lệnh sau để thực hiện.
Kiểm tra lại múi giờ.
Bạn có thể thấy múi giờ đã được cập nhật thành IST, tức là GMT+5:30.
Chuyển sang thư mục Gitea.
Tạo thư mục để lưu trữ dữ liệu Gitea và cơ sở dữ liệu PostgreSQL.
Tạo và mở tệp Docker Compose để chỉnh sửa.
Dán mã sau vào đó. Dán các giá trị UID và GID được tạo trước đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Tệp Docker Compose ở trên triển khai hai vùng chứa - một cho Gitea và một cho PostgreSQL. Chúng tôi đã thêm một vài biến môi trường để cấu hình chi tiết cơ sở dữ liệu. Để kết nối cơ sở dữ liệu PostgreSQL với vùng chứa Gitea, chúng tôi đã chỉ định máy chủ làm tên của dịch vụ PostgreSQL trong tệp.
Các tham số cổng "3000:3000" và "2221:22" chỉ định ánh xạ cổng trong đó cổng bên trái biểu thị cổng máy chủ và cổng bên phải biểu thị cổng vùng chứa. Gitea sử dụng cổng 3000 cho dịch vụ web của mình, đây cũng là cổng mà chúng tôi đã đưa lên máy chủ. Đối với SSH, hệ thống của chúng tôi đã sử dụng cổng 22 cho mục đích ghi nhật ký. Do đó, chúng tôi chỉ định một cổng tùy chỉnh để thực hiện các hoạt động SSH. Trong trường hợp của chúng tôi, chúng tôi đang sử dụng cổng 2221. Cổng này cũng cần được mở thông qua tường lửa của bạn, chúng tôi đã thực hiện ở bước 1 của hướng dẫn này.
Cả Gitea và các container PostgreSQL đều được kết nối thông qua một mạng Docker nội bộ chung có tên là gitea. Các mount ổ đĩa sẽ tự động tạo các thư mục gitea và postgres trong thư mục hiện tại khi bạn bắt đầu cài đặt Docker. ID người dùng được chỉ định trong tệp compose là ID mà container Gitea sẽ sử dụng để tạo thư mục gitea.Mặt khác, container PostgreSQL sẽ được quản lý bởi người dùng systemd-coredump, đây là hành vi mặc định. Bạn có thể thay đổi hành vi đó, nhưng điều đó không cần thiết.
Kiểm tra trạng thái của các container để đảm bảo chúng đang chạy đúng cách.
Bạn cũng có thể sử dụng lệnh sau để kiểm tra trạng thái.
Trước tiên, bạn cần tải xuống và cài đặt kho lưu trữ EPEL.
Chạy các lệnh sau để cài đặt Certbot.
Tạo chứng chỉ SSL.
Lệnh trên sẽ tải xuống chứng chỉ vào thư mục /etc/letsencrypt/live/gitea.example.com trên máy chủ của bạn.
Tạo chứng chỉ nhóm Diffie-Hellman.
Tạo thư mục gốc web thử thách để tự động gia hạn Let's Encrypt.
Tạo Cron Job để gia hạn SSL. Nó sẽ chạy hàng ngày để kiểm tra chứng chỉ và gia hạn nếu cần. Để thực hiện việc đó, trước tiên, hãy tạo tệp /etc/cron.daily/certbot-renew và mở tệp đó để chỉnh sửa.
Dán mã sau.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Thay đổi quyền trên tệp tác vụ để làm cho tệp đó có thể thực thi được.
Dán các dòng sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Cài đặt Nginx.
Xác minh cài đặt.
Bật và khởi động dịch vụ Nginx.
Tạo và mở tệp /etc/nginx/conf.d/gitea.conf để chỉnh sửa.
Dán mã sau vào đó.
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc. Cấu hình trên cho phép Nginx hoạt động như một máy chủ proxy và liên kết với cổng 3000 trên localhost. Để cho phép tải lên các tệp lớn cho Git LFS, bạn có thể thay đổi giá trị của biến client_max_body_size theo yêu cầu. Đối với hướng dẫn của chúng tôi, chúng tôi sử dụng 100 MB làm giới hạn.
Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Thêm dòng sau trước dòng include /etc/nginx/conf.d/*.conf;.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Xác minh cú pháp tệp cấu hình Nginx.
Khởi động lại dịch vụ Nginx để kích hoạt cấu hình mới.
Hầu hết các trường sẽ được điền sẵn cho bạn dựa trên các giá trị từ tệp Docker compose.
Nhập gitea.example.com làm Miền máy chủ và https://gitea.example.com làm URL cơ sở Gitea. Thay đổi giá trị cho Cổng máy chủ SSH từ 22 thành 2221. Giữ nguyên các thiết lập còn lại.
Nếu bạn muốn sử dụng các tính năng thư, bạn có thể thêm thông tin chi tiết về máy chủ SMTP của mình. Mở rộng phần Cài đặt email của trang và nhập các giá trị như trong ảnh chụp màn hình. Đảm bảo bao gồm cổng SMTP của bạn với tên máy chủ như được hiển thị. Đối với hướng dẫn của chúng tôi, chúng tôi đang sử dụng dịch vụ Amazon SES. Bạn có thể sử dụng bất kỳ dịch vụ SMTP nào bạn chọn.
Có một số thiết lập khác mà bạn nên kiểm tra trước khi cài đặt. Để thay đổi chúng, hãy mở rộng phần Cài đặt máy chủ và dịch vụ của bên thứ ba của trang.
Thay đổi các thiết lập theo yêu cầu của bạn. Chúng tôi đã bật tùy chọn Ẩn địa chỉ email theo mặc định để đảm bảo quyền riêng tư cao hơn. Nếu bạn không muốn mọi người đăng ký tài khoản, hãy bật tùy chọn Tắt tự đăng ký.
Cuối cùng nhưng không kém phần quan trọng, hãy thiết lập tài khoản quản trị viên của bạn. Mở rộng phần Cài đặt tài khoản quản trị viên của trang và điền vào các giá trị bắt buộc.
Nhấp vào nút Cài đặt Gitea khi hoàn tất để hoàn tất quá trình cài đặt. Bạn sẽ được chuyển hướng đến bảng điều khiển Gitea. Nếu vì lý do nào đó, bạn gặp lỗi 502, hãy làm mới trang.
Nhập thông tin chi tiết về kho lưu trữ. Chọn nhãn Sự cố mặc định bằng cách chọn từ menu thả xuống. Chọn giấy phép phù hợp cho kho lưu trữ của bạn.
Chọn nhánh mặc định cho kho lưu trữ của bạn.
Sau khi hài lòng, hãy nhấp vào nút Tạo kho lưu trữ để tạo kho lưu trữ đầu tiên của bạn trên bản cài đặt Gitea. Bạn sẽ được chuyển hướng đến trang chủ kho lưu trữ của mình.
Đối với hướng dẫn này, chúng ta sẽ sử dụng một máy tính cục bộ có cài đặt sẵn Ubuntu. Tuy nhiên, các lệnh sẽ hoạt động trên bất kỳ thiết bị đầu cuối hệ điều hành nào mà không cần thay đổi nhiều.
Tạo một khóa SSH mới để sử dụng với Gitea trên máy tính cục bộ của bạn.
Nhập một mật khẩu mạnh thay cho chỗ giữ chỗ trong lệnh ở trên. Thao tác này sẽ tạo khóa SSH tại vị trí ~/.ssh/gitea-demo.
Tiếp theo, mở cài đặt hồ sơ Gitea của bạn như hiển thị bằng cách nhấp vào menu thả xuống trên ảnh hồ sơ của bạn và chọn tùy chọn Cài đặt.
Tiếp theo, chuyển sang tab Khóa SSH/GPG trên trang.
Thêm tên cho khóa SSH của bạn. Quay lại thiết bị đầu cuối trên PC cục bộ của bạn và chạy lệnh sau để xuất khóa công khai cho Gitea.
Sao chép đầu ra kết quả và dán lại vào hộp Nội dung trên trang khóa SSH của Gitea.
Nhấp vào nút Thêm khóa để hoàn tất việc thêm khóa.
Quay lại PC cục bộ của bạn và thiết lập tác nhân SSH để duy trì hoạt động trong 1 giờ.
Thêm khóa SSH mới tạo vào tác nhân SSH.
Bạn sẽ được nhắc nhập mật khẩu.
Nó sẽ trông giống như sau.
Chạy lệnh sau trên PC cục bộ của bạn để sao chép kho lưu trữ bằng SSH.
Bạn sẽ được nhắc thêm thông tin xác thực của máy chủ. Nhập yes để tiến hành sao chép kho lưu trữ.
Bạn sẽ thấy kho lưu trữ đã sao chép trên hệ thống của mình.
Chuyển đến thư mục.
Kiểm tra trạng thái Git của kho lưu trữ mới được sao chép. Để thực hiện việc này, bạn nên cài đặt Git trên PC cục bộ của mình.
Điều này kết luận rằng SSH đang hoạt động hoàn hảo.
Chúng ta hãy cập nhật tệp README.md. Trên PC cục bộ của bạn, hãy mở tệp readme để chỉnh sửa.
Chỉnh sửa tệp và khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Kiểm tra lại trạng thái Git.
Điều này cho thấy tệp Readme đã được chỉnh sửa nhưng chưa được cam kết. Thêm tệp để chuẩn bị cho cam kết.
Cam kết tệp.
Đẩy tệp lên Máy chủ Gitea của bạn.
Để xác nhận, hãy quay lại trang kho lưu trữ Gitea.
Bạn có thể nhận thấy rằng tệp Readme đã được cập nhật và thông báo cam kết mới nhất cũng được hiển thị. Để xem các thay đổi, hãy nhấp vào thông báo xác nhận và bạn có thể xem trang sau với các điểm khác biệt.
Đây là lần xác nhận đầu tiên của chúng ta cho kho lưu trữ. Bạn có thể bắt đầu làm việc trên cài đặt Gitea cho các dự án của mình.
Tắt và xóa các vùng chứa hiện có. Vì dữ liệu được lưu bên ngoài các vùng chứa trên máy chủ nên dữ liệu sẽ được giữ lại.
Mở tệp docker-compose.yml và thay đổi phiên bản của vùng chứa Gitea. Tiếp theo, kéo hình ảnh Gitea mới.
Khởi động các container mới.
Kiểm tra trạng thái.
Trong bài viết này, bạn sẽ học cách cài đặt Gitea bằng Docker trên máy chủ Rocky Linux 8.
Điều kiện tiên quyết
-
Máy chủ chạy Rocky Linux 8.5.
-
Người dùng không phải root có quyền sudo.
-
Vô hiệu hóa SELinux.
-
Cập nhật mọi thứ.
Mã:
$ sudo dnf update
Cài đặt các gói thiết yếu.
Mã:
$ sudo dnf install yum-utils nano curl
Tên miền đủ điều kiện (FQDN) trỏ đến máy chủ như gitea.example.com.
Bước 1 - Cấu hình Tường lửa
Bước đầu tiên là cấu hình tường lửa. Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --staterunning
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client ssh
Mã:
$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https
Mã:
$ sudo firewall-cmd --permanent --add-port=2221/tcp
Mã:
$ sudo firewall-cmd --permanent --list-all
Mã:
public target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client http https ssh ports: 2221/tcp protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Mã:
$ sudo firewall-cmd --reload
Bước 2 - Cài đặt Docker
Rocky Linux được tích hợp sẵn phiên bản Docker cũ hơn. Để cài đặt phiên bản mới nhất, trước tiên, hãy cài đặt kho lưu trữ Docker chính thức.
Mã:
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Mã:
$ sudo dnf install docker-ce docker-ce-cli containerd.io
Mã:
$ sudo systemctl enable docker --now
Mã:
? docker.service - Docker Application Container Engine Đã tải: đã tải (/usr/lib/systemd/system/docker.service; đã bật; cài đặt trước của nhà cung cấp: đã tắt) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ bảy 2022-04-02 13:26:08 UTC; 2 giây trước Tài liệu: https://docs.docker.com PID chính: 21152 (dockerd) Nhiệm vụ: 7 Bộ nhớ: 30,9M CGroup: /system.slice/docker.service ??21152 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock...
Mã:
$ sudo usermod -aG docker $(whoami)
Bước 3 - Cài đặt Docker Compose
Tải xuống bản phát hành ổn định mới nhất của Docker Compose.
Mã:
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Mã:
$ sudo chmod +x /usr/local/bin/docker-compose
Mã:
$ docker-compose --versiondocker-compose phiên bản 1.29.2, bản dựng 5becea4c
Mã:
$ sudo curl \ -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \ -o /etc/bash_completion.d/docker-compose
Mã:
$ source ~/.bashrc
Bước 4 - Cấu hình và cài đặt Gitea
Cấu hình múi giờ hệ thống
Bạn có thể kiểm tra múi giờ hiện tại của hệ thống bằng lệnh sau.
Mã:
$ timedatectl Giờ địa phương: Thứ Hai 2022-05-02 06:38:36 UTC Giờ quốc tế: Thứ Hai 2022-05-02 06:38:36 UTC Giờ RTC: Thứ Hai 2022-05-02 06:38:36 Múi giờ: Etc/UTC (UTC, +0000)Đồng bộ hóa đồng hồ hệ thống: có Dịch vụ NTP: hoạt động RTC tại TZ cục bộ: không
Mã:
$ sudo timedatectl set-timezone Asia/Kolkata
Mã:
$ timedatectlGiờ địa phương: Thứ Hai 2022-05-02 12:09:23 IST Giờ quốc tế: Thứ Hai 2022-05-02 06:39:23 UTC Giờ RTC: Thứ Hai 2022-05-02 06:39:22 Múi giờ: Châu Á/Kolkata (IST, +0530)Đồng bộ hóa đồng hồ hệ thống: có Dịch vụ NTP: đang hoạt động RTC tại TZ cục bộ: không
Tạo Gitea Thư mục
Tạo thư mục cho Gitea.
Mã:
$ mkdir ~/gitea-docker
Mã:
$ cd ~/gitea-docker
Mã:
$ mkdir {gitea,postgres}
Cấu hình tệp Gitea Docker Compose
Lấy giá trị UID (Mã định danh người dùng) và GID (Mã định danh nhóm) cho người dùng hiện đang đăng nhập. Lệnh đầu tiên tạo UID, trong khi lệnh thứ hai tạo GID. Sao chép cả hai giá trị vì chúng sẽ cần thiết để cấu hình tệp Docker compose.
Mã:
$ echo $(id -u)1000$ echo $(id -g)1000
Mã:
$ nano docker-compose.yml
Mã:
version: "3"networks: gitea: external: falseservices: server: image: gitea/gitea:1.16.6 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" - "2221:22" depends_on: - db db: image: postgres:14 restart: always environment: - POSTGRES_USER=gitea - POSTGRES_PASSWORD=gitea - POSTGRES_DB=gitea networks: - gitea volumes: - ./postgres:/var/lib/postgresql/data
Tệp Docker Compose ở trên triển khai hai vùng chứa - một cho Gitea và một cho PostgreSQL. Chúng tôi đã thêm một vài biến môi trường để cấu hình chi tiết cơ sở dữ liệu. Để kết nối cơ sở dữ liệu PostgreSQL với vùng chứa Gitea, chúng tôi đã chỉ định máy chủ làm tên của dịch vụ PostgreSQL trong tệp.
Các tham số cổng "3000:3000" và "2221:22" chỉ định ánh xạ cổng trong đó cổng bên trái biểu thị cổng máy chủ và cổng bên phải biểu thị cổng vùng chứa. Gitea sử dụng cổng 3000 cho dịch vụ web của mình, đây cũng là cổng mà chúng tôi đã đưa lên máy chủ. Đối với SSH, hệ thống của chúng tôi đã sử dụng cổng 22 cho mục đích ghi nhật ký. Do đó, chúng tôi chỉ định một cổng tùy chỉnh để thực hiện các hoạt động SSH. Trong trường hợp của chúng tôi, chúng tôi đang sử dụng cổng 2221. Cổng này cũng cần được mở thông qua tường lửa của bạn, chúng tôi đã thực hiện ở bước 1 của hướng dẫn này.
Cả Gitea và các container PostgreSQL đều được kết nối thông qua một mạng Docker nội bộ chung có tên là gitea. Các mount ổ đĩa sẽ tự động tạo các thư mục gitea và postgres trong thư mục hiện tại khi bạn bắt đầu cài đặt Docker. ID người dùng được chỉ định trong tệp compose là ID mà container Gitea sẽ sử dụng để tạo thư mục gitea.Mặt khác, container PostgreSQL sẽ được quản lý bởi người dùng systemd-coredump, đây là hành vi mặc định. Bạn có thể thay đổi hành vi đó, nhưng điều đó không cần thiết.
Tùy chỉnh Cài đặt Gitea của bạn
Bạn có thể tùy chỉnh cài đặt Gitea của mình bằng cách thêm tệp app.ini vào thư mục ~/gitea-docker/gitea/gitea/conf. Sau khi cài đặt, tệp này có thể được chỉnh sửa từ bên trong vùng chứa từ vị trí /data/gitea/conf/app.ini. Bạn có thể sử dụng tệp ini mẫu từ kho lưu trữ Github của Gitea để tham khảo.Cài đặt Gitea
Chạy lệnh sau để khởi chạy các container Gitea.
Mã:
$ docker-compose up -d
Mã:
$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESbd06e370c46b gitea/gitea:1.16.6 "/usr/bin/entrypoint…" 19 phút trước Đã hoạt động 19 phút 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp, 0.0.0.0:2221->22/tcp, :::2221->22/tcp gitea3fc6c4bce810 postgres:14 "docker-entrypoint.s…" 19 phút trước Đã hoạt động 19 phút 5432/tcp gitea_db_1
Mã:
$ docker-compose ps Tên Lệnh Trạng thái Cổng-------------------------------------------------------------------------------------------------------------------------------------------------------gitea /usr/bin/entrypoint /bin/s ... Đã hoạt động 0.0.0.0:2221->22/tcp,:::2221->22/tcp, 0.0.0.0:3000->3000/tcp,:::3000->3000/tcpgitea_db_1 docker-entrypoint.sh postgres Up 5432/tcp
Bước 5 - Cài đặt SSL
Để cài đặt chứng chỉ SSL bằng Let's Encrypt, chúng ta cần cài đặt công cụ Certbot.Trước tiên, bạn cần tải xuống và cài đặt kho lưu trữ EPEL.
Mã:
$ sudo dnf install epel-release
Mã:
$ sudo dnf install certbot
Mã:
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d gitea.example.com
Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Mã:
$ sudo mkdir -p /var/lib/letsencrypt
Mã:
$ sudo nano /etc/cron.daily/certbot-renew
Mã:
#!/bin/shcertbot renew --cert-name gitea.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Thay đổi quyền trên tệp tác vụ để làm cho tệp đó có thể thực thi được.
Mã:
$ sudo chmod +x /etc/cron.daily/certbot-renew
Bước 6 - Cài đặt Nginx
Chúng tôi sẽ cài đặt phiên bản Nginx mới nhất. Tạo và mở tệp /etc/yum.repos.d/nginx.repo để chỉnh sửa.
Mã:
$ sudo nano /etc/yum.repos.d/nginx.repo
Mã:
[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true[nginx-mainline]name=nginx mainline repobaseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/gpgcheck=1enabled=0gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true
Cài đặt Nginx.
Mã:
$ sudo dnf install nginx
Mã:
$ nginx -vphiên bản nginx: nginx/1.20.2
Mã:
$ sudo systemctl enable nginx --now
Mã:
$ sudo nano /etc/nginx/conf.d/gitea.conf
Mã:
# Chuyển hướng tất cả không được mã hóa sang được mã hóaserver { listen 80; listen [::]:80; server_name gitea.example.com; return 301 https://$host$request_uri;}server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name gitea.example.com; ssl_certificate /etc/letsencrypt/live/gitea.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/gitea.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/gitea.example.com/chain.pem; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; tắt ssl_session_tickets; bật ssl_stapling; bật ssl_stapling_verify; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; nhật ký truy cập /var/log/nginx/gitea.example.com.access.log chính; nhật ký lỗi /var/log/nginx/gitea.example.com.error.log; vị trí / { kích thước_phần_thể_tối_đa của_khách_hàng 100M; proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }}
Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Mã:
server_names_hash_bucket_size 64;
Xác minh cú pháp tệp cấu hình Nginx.
Mã:
$ sudo nginx -tnginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: tệp cấu hình Kiểm tra /etc/nginx/nginx.conf thành công
Mã:
$ sudo systemctl restart nginx
Bước 7 - Truy cập và thiết lập Gitea
Truy cập URL https://gitea.example.com trong trình duyệt của bạn và màn hình cài đặt sau sẽ xuất hiện.Hầu hết các trường sẽ được điền sẵn cho bạn dựa trên các giá trị từ tệp Docker compose.
Nhập gitea.example.com làm Miền máy chủ và https://gitea.example.com làm URL cơ sở Gitea. Thay đổi giá trị cho Cổng máy chủ SSH từ 22 thành 2221. Giữ nguyên các thiết lập còn lại.
Nếu bạn muốn sử dụng các tính năng thư, bạn có thể thêm thông tin chi tiết về máy chủ SMTP của mình. Mở rộng phần Cài đặt email của trang và nhập các giá trị như trong ảnh chụp màn hình. Đảm bảo bao gồm cổng SMTP của bạn với tên máy chủ như được hiển thị. Đối với hướng dẫn của chúng tôi, chúng tôi đang sử dụng dịch vụ Amazon SES. Bạn có thể sử dụng bất kỳ dịch vụ SMTP nào bạn chọn.
Có một số thiết lập khác mà bạn nên kiểm tra trước khi cài đặt. Để thay đổi chúng, hãy mở rộng phần Cài đặt máy chủ và dịch vụ của bên thứ ba của trang.
Thay đổi các thiết lập theo yêu cầu của bạn. Chúng tôi đã bật tùy chọn Ẩn địa chỉ email theo mặc định để đảm bảo quyền riêng tư cao hơn. Nếu bạn không muốn mọi người đăng ký tài khoản, hãy bật tùy chọn Tắt tự đăng ký.
Cuối cùng nhưng không kém phần quan trọng, hãy thiết lập tài khoản quản trị viên của bạn. Mở rộng phần Cài đặt tài khoản quản trị viên của trang và điền vào các giá trị bắt buộc.
Nhấp vào nút Cài đặt Gitea khi hoàn tất để hoàn tất quá trình cài đặt. Bạn sẽ được chuyển hướng đến bảng điều khiển Gitea. Nếu vì lý do nào đó, bạn gặp lỗi 502, hãy làm mới trang.
Bước 8 - Tạo kho lưu trữ đầu tiên
Chúng ta hãy tạo kho lưu trữ đầu tiên. Để thực hiện việc đó, hãy nhấp vào dấu + trên bảng điều khiển.Nhập thông tin chi tiết về kho lưu trữ. Chọn nhãn Sự cố mặc định bằng cách chọn từ menu thả xuống. Chọn giấy phép phù hợp cho kho lưu trữ của bạn.
Chọn nhánh mặc định cho kho lưu trữ của bạn.
Sau khi hài lòng, hãy nhấp vào nút Tạo kho lưu trữ để tạo kho lưu trữ đầu tiên của bạn trên bản cài đặt Gitea. Bạn sẽ được chuyển hướng đến trang chủ kho lưu trữ của mình.
Bước 9 - Thiết lập SSH
Chúng ta hãy thiết lập SSH để sử dụng với kho lưu trữ mới tạo của mình.Đối với hướng dẫn này, chúng ta sẽ sử dụng một máy tính cục bộ có cài đặt sẵn Ubuntu. Tuy nhiên, các lệnh sẽ hoạt động trên bất kỳ thiết bị đầu cuối hệ điều hành nào mà không cần thay đổi nhiều.
Tạo một khóa SSH mới để sử dụng với Gitea trên máy tính cục bộ của bạn.
Mã:
$ ssh-keygen -f ~/.ssh/gitea-demo -t rsa -b 4096 -C "HowtoForge Gitea Demo" -q -N "yourpassphrase"
Tiếp theo, mở cài đặt hồ sơ Gitea của bạn như hiển thị bằng cách nhấp vào menu thả xuống trên ảnh hồ sơ của bạn và chọn tùy chọn Cài đặt.
Tiếp theo, chuyển sang tab Khóa SSH/GPG trên trang.
Thêm tên cho khóa SSH của bạn. Quay lại thiết bị đầu cuối trên PC cục bộ của bạn và chạy lệnh sau để xuất khóa công khai cho Gitea.
Mã:
$ cat ~/.ssh/gitea-demo.pub
Nhấp vào nút Thêm khóa để hoàn tất việc thêm khóa.
Quay lại PC cục bộ của bạn và thiết lập tác nhân SSH để duy trì hoạt động trong 1 giờ.
Mã:
$ eval $(ssh-agent -t 3600)b
Mã:
$ ssh-add ~/.ssh/gitea-demoNhập cụm mật khẩu cho /home/navjot/.ssh/gitea-demo:Đã thêm danh tính: /home/navjot/.ssh/gitea-demo (Bản demo HowtoForge Gitea)
Bước 10 - Sao chép kho lưu trữ bằng SSH
Chúng ta hãy sao chép kho lưu trữ mới tạo bằng SSH. Truy cập lại trang kho lưu trữ và sao chép URL SSH sau khi chọn tùy chọn SSH.Nó sẽ trông giống như sau.
Mã:
ssh://[emailprotected]:2221/navjot/howtoforge.git
Mã:
$ git clone ssh://[emailprotected]:2221/navjot/howtoforge.gitĐang sao chép vào 'howtoforge'...Không thể thiết lập tính xác thực của máy chủ '[gitea.example.com]:2221 ([209.23.11.75]:2221)'.Dấu vân tay khóa ECDSA là SHA256:sN0N4OkpChwuR00xpGZU1mGJrp7ktwHRC7uxGP7Nh08.Bạn có chắc chắn muốn tiếp tục kết nối (có/không/[dấu vân tay]) không? cóCảnh báo: Đã thêm vĩnh viễn '[gitea.example.com]:2221,[209.23.11.75]:2221' (ECDSA) vào danh sách các máy chủ đã biết.remote: Đang liệt kê các đối tượng: 4, xong.remote: Đang đếm các đối tượng: 100% (4/4), xong.remote: Đang nén các đối tượng: 100% (3/3), xong.remote: Tổng cộng 4 (delta 0), đã sử dụng lại 0 (delta 0), đã sử dụng lại gói 0Đang nhận các đối tượng: 100% (4/4), xong.
Bạn sẽ thấy kho lưu trữ đã sao chép trên hệ thống của mình.
Mã:
$ lshowtoforge
Mã:
$ cd howtoforge
Mã:
$ git statusTrên nhánh masterNhánh của bạn đã được cập nhật với 'origin/master'.không có gì để cam kết, cây làm việc sạch sẽ
Bước 11 - Kiểm tra lần cam kết đầu tiên
Bây giờ chúng ta đã thiết lập kho lưu trữ đầu tiên, đã đến lúc thực hiện một số thay đổi và cam kết chúng trở lại.Chúng ta hãy cập nhật tệp README.md. Trên PC cục bộ của bạn, hãy mở tệp readme để chỉnh sửa.
Mã:
$ nano README.md
Kiểm tra lại trạng thái Git.
Mã:
$ git statusTrên nhánh masterNhánh của bạn đã được cập nhật với 'origin/master'.Những thay đổi không được dàn dựng để cam kết: (sử dụng "git add ..." để cập nhật những gì sẽ được cam kết) (sử dụng "git restore ..." để hủy những thay đổi trong thư mục làm việc) đã sửa đổi: README.mdkhông có thay đổi nào được thêm vào cam kết (sử dụng "git add" và/hoặc "git commit -a")
Mã:
$ git add README.md
Mã:
$ git commit -m "Cập nhật tệp Readme cho hướng dẫn Gitea."[master 5e9b039] Cập nhật tệp Readme cho hướng dẫn Gitea. 1 tệp đã thay đổi, 3 lần chèn (+), 1 lần xóa (-)
Mã:
$ git push origin masterĐang liệt kê các đối tượng: 5, xong.Đang đếm các đối tượng: 100% (5/5), xong.Nén delta sử dụng tối đa 4 luồngĐang nén các đối tượng: 100% (3/3), xong.Đang ghi các đối tượng: 100% (3/3), 392 byte | 392,00 KiB/giây, xong.Tổng cộng 3 (delta 0), đã sử dụng lại 0 (delta 0)remote: . Đang xử lý 1 tham chiếuremote: Đã xử lý tổng cộng 1 tham chiếuĐến ssh://gitea.example.com:2221/navjot/howtoforge.git a61dfce..5e9b039 master -> master
Bạn có thể nhận thấy rằng tệp Readme đã được cập nhật và thông báo cam kết mới nhất cũng được hiển thị. Để xem các thay đổi, hãy nhấp vào thông báo xác nhận và bạn có thể xem trang sau với các điểm khác biệt.
Đây là lần xác nhận đầu tiên của chúng ta cho kho lưu trữ. Bạn có thể bắt đầu làm việc trên cài đặt Gitea cho các dự án của mình.
Bước 12 - Nâng cấp Gitea
Nâng cấp Gitea là một quá trình đơn giản.Tắt và xóa các vùng chứa hiện có. Vì dữ liệu được lưu bên ngoài các vùng chứa trên máy chủ nên dữ liệu sẽ được giữ lại.
Mã:
$ cd ~/gitea-docker$ docker-compose down --remove-orphans
Mã:
$ docker pull
Mã:
$ docker-compose up -d
Mã:
$ docker ps