Cách cài đặt dịch vụ lưu trữ Gitea Code trên Fedora 34

theanh

Administrator
Nhân viên
Gitea là giải pháp lưu trữ mã nguồn mở dựa trên nền tảng Git. Giải pháp này được viết bằng ngôn ngữ Go. Giải pháp này bao gồm trình chỉnh sửa tệp lưu trữ, 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 hook và nhiều tính năng khác.

Đây là ứng dụng nhẹ. Do đó, có thể cài đặt trên các hệ thống có công suất thấp.Nếu bạn đang tìm kiếm nền tảng Git tự lưu trữ với nền tảng bộ nhớ nhỏ hơn, bạn nên xem qua Gitea.

Bài viết này sẽ hướng dẫn cách cài đặt và cấu hình Gitea trên Fedora 34 và cách thiết lập kho lưu trữ Git đầu tiên của bạn. Gitea có thể được cài đặt từ nguồn, nhị phân, gói docker hoặc gói. Đối với hướng dẫn này, chúng tôi sẽ cài đặt nó từ nhị phân.

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

  • Máy chủ chạy Fedora 34.
  • Người dùng sudo không phải root.
  • SELinux đã tắt.

  • Đảm bảo mọi thứ đã được cập nhật.
    Mã:
    $ sudo dnf update

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. Máy chủ Fedora đi kèm với tường lửa Firewalld.

Kiểm tra xem tường lửa có đang chạy không.
Mã:
$ sudo firewall-cmd --state
Bạn sẽ nhận được kết quả sau.
Mã:
đang chạy
Kiểm tra các dịch vụ/cổng hiện được phép.
Mã:
$ sudo firewall-cmd --permanent --list-services
Kết quả sau sẽ hiển thị.
Mã:
dhcpv6-client mdns ssh
Cho phép các cổng HTTP và HTTPS.
Mã:
$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https
Kiểm tra lại trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --permanent --list-services
Bạn sẽ thấy kết quả tương tự.
Mã:
dhcpv6-client http https mdns ssh
Tải lại Tường lửa.
Mã:
$ sudo systemctl reload firewalld

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

Bước đầu tiên là cài đặt Git.
Mã:
$ sudo dnf install git
Xác minh cài đặt bằng cách kiểm tra phiên bản Git.
Mã:
$ git --versiongit version 2.31.1

Cấu hình Git​

Git có thể được cấu hình bằng lệnh git config. Đặt tên và địa chỉ email của bạn để làm việc với Git.
Mã:
$ git config --global user.name "Tên của bạn"$ git config --global user.email "[emailprotected]"
Bạn có thể kiểm tra cấu hình bằng cách sử dụng lệnh sau.
Mã:
$ git config --listuser.name=Tên của bạn[emailprotected]

Bước 3 - Cài đặt và cấu hình PostgreSQL​

Gitea hỗ trợ SQLite, MySQL/Mariadb, MSSQL và PostgreSQL. Đối với hướng dẫn của chúng tôi, chúng tôi sẽ sử dụng PostgreSQL.

Cài đặt và khởi tạo PostgreSQL.
Mã:
$ sudo dnf module enable postgresql:13$ sudo dnf install postgresql-server postgresql-contrib$ sudo postgresql-setup --initdb --unit postgresql$ sudo systemctl enable --now postgresql
PostgreSQL sử dụng lược đồ mã hóa md5 để xác thực mật khẩu theo mặc định, lược đồ này không an toàn. Bạn cần chuyển sang lược đồ SCRAM-SHA-256. Và nếu bạn định kết nối với cơ sở dữ liệu PostgreSQL từ xa, bạn cần định cấu hình để lắng nghe địa chỉ IP của mình. Cả hai đều có thể được thay đổi bằng cách chỉnh sửa tệp /var/lib/pgsql/data/postgresql.conf. Mở tệp để chỉnh sửa.
Mã:
$ sudo nano /var/lib/pgsql/data/postgresql.conf
Chỉnh sửa các biến sau theo cách sau.
Mã:
listen_addresses = 'localhost, 201.0.110.0'password_encryption = scram-sha-256
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại PostgreSQL.
Mã:
$ sudo systemctl restart postgresql
Đăng nhập vào shell PostgreSQL.
Mã:
$ sudo -u postgres psql
Tạo người dùng SQL và cơ sở dữ liệu mới cho Gitea. Chọn mật khẩu mạnh cho người dùng cơ sở dữ liệu của bạn.
Mã:
postgres-# TẠO VAI TRÒ gitea VỚI MẬT KHẨU ĐĂNG NHẬP 'yourpassword';postgres-# CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
Thay thế tên người dùng, tên cơ sở dữ liệu và mật khẩu cho phù hợp.

Thoát khỏi shell bằng cách nhập \q.

Cho phép người dùng cơ sở dữ liệu truy cập cơ sở dữ liệu được tạo ở trên bằng cách thêm quy tắc xác thực sau vào /var/lib/pgsql/data/pg_hba.conf.

Nếu cơ sở dữ liệu là cục bộ, hãy thêm dòng này.
Mã:
local giteadb gitea scram-sha-256
Đối với cơ sở dữ liệu từ xa, hãy sử dụng mã sau.
Mã:
host giteadb gitea 192.0.2.10/32 scram-sha-256
Bạn cũng sẽ cần chỉnh sửa các dòng sau bằng cách thêm thay thế ident bằng scram-sha-256.
Mã:
# Kết nối cục bộ IPv4:host all all 127.0.0.1/32 ident# Kết nối cục bộ IPv6:host all all ::1/128 ident
Chúng sẽ trông giống như sau.
Mã:
# Kết nối cục bộ IPv4:host all all 127.0.0.1/32 scram-sha-256# Kết nối cục bộ IPv6:host all all ::1/128 scram-sha-256
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại PostgreSQL.
Mã:
$ sudo systemctl restart postgresql
Bạn cũng sẽ cần thêm quy tắc sau vào tường lửa nếu muốn bật kết nối từ xa.
Mã:
$ sudo firewall-cmd --permanent--add-service=postgresql$ sudo firewall-cmd --reload

Bước 4 - Tạo người dùng Git​

Tạo người dùng hệ thống mới để chạy ứng dụng Gitea.
Mã:
$ sudo useradd \ --system \ --shell /bin/bash \ --comment 'Git Version Control' \ --create-home \ --home /home/git \ git
Lệnh này tạo người dùng và nhóm mới có tên git và đặt thư mục gốc thành /home/git.

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

Mở Trang tải xuống Gitea và kiểm tra số phiên bản của tệp nhị phân mới nhất có sẵn. Tại thời điểm viết hướng dẫn này, phiên bản mới nhất là 1.14.3. Nếu có phiên bản mới hơn, hãy thay đổi phiên bản đó trong biến VERSION trong lệnh bên dưới.

Sử dụng tiện ích wget để lấy tệp nhị phân Gitea mới nhất.
Mã:
$ GITEAVERSION=1.14.3$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64
Di chuyển tệp nhị phân đã tải xuống vào thư mục /usr/local/bin.
Mã:
$ sudo mv gitea /usr/local/bin
Làm cho tệp nhị phân có thể thực thi.
Mã:
$ sudo chmod +x /usr/local/bin/gitea
Chạy các lệnh sau để tạo thư mục và thiết lập các quyền cần thiết để Gitea hoạt động bình thường.
Mã:
$ sudo mkdir -p /var/lib/gitea/{custom,data,log}$ sudo chown -R git:git /var/lib/gitea/$ sudo chmod -R 750 /var/lib/gitea/$ sudo mkdir /etc/gitea$ sudo chown root:git /etc/gitea$ sudo chmod 770 /etc/gitea
Quyền cho thư mục /etc/gitea được thiết lập thành 770 để trình hướng dẫn cài đặt tạo tệp cấu hình. Sau khi cài đặt hoàn tất, chúng tôi sẽ thiết lập quyền hạn hạn chế hơn.

Tạo tệp dịch vụ Systemd​

Chúng tôi sẽ chạy Gitea dưới dạng dịch vụ systemd. Để thực hiện việc đó, hãy tạo một tệp mục nhập systemd mới cho Gitea.
Mã:
$ sudo nano /etc/systemd/system/gitea.service
Dán mã sau vào đó.
Mã:
[Unit]Description=GiteaAfter=syslog.targetAfter=network.targetAfter=postgresql.service[Service]RestartSec=2sType=simpleUser=gitGroup=gitWorkingDirectory=/var/lib/gitea/ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.iniRestart=alwaysEnvironment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea[Install]WantedBy=multi-user.target
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Để tham khảo, bạn có thể xem tệp systemd mẫu có trong kho lưu trữ Gitea.

Tải lại daemon systemd để kích hoạt tệp chúng ta vừa tạo.
Mã:
$ sudo systemctl daemon-reload
Kích hoạt và khởi động dịch vụ Gitea.
Mã:
$ sudo systemctl enable --now gitea
Xác minh rằng Gitea đang chạy.
Mã:
$ sudo systemctl status gitea gitea.service - Gitea Đã tải: đã tải (/etc/systemd/system/gitea.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ứ Ba 2021-07-04 20:33:38 EDT; 1 ngày 8 giờ trước PID chính: 46404 (gitea) Nhiệm vụ: 7 (giới hạn: 2328) Bộ nhớ: 115,5M
 CPU: 9 phút 12,061 giây CGroup: /system.slice/gitea.service ---46404 /usr/local/bin/gitea web -c /etc/gitea/app.ini...

Bước 6 - Cấu hình Gitea​

Theo mặc định, Gitea lắng nghe trên cổng 3000. Bạn có thể sử dụng một cổng khác hoặc giữ nguyên cổng mặc định. Do đó, chúng ta cũng cần mở cổng 3000.
Mã:
$ sudo firewall-cmd --permanent --add-port=3000/tcp$ sudo firewall-cmd --reload
Mở trình duyệt của bạn và nhập https://YOURIPADDRESS:3000 và bạn sẽ thấy trình cài đặt Gitea. Sử dụng các giá trị sau để cấu hình.

Cài đặt cơ sở dữ liệu


  • Loại cơ sở dữ liệu: Chọn PostgreSQL từ danh sách thả xuống
  • Máy chủ: 127.0.0.1:5432
  • Tên người dùng: gitea
  • Mật khẩu: yourpassword
  • Tên cơ sở dữ liệu: gitea
Cài đặt chung


  • Tiêu đề trang web: Nhập tên tổ chức của bạn
  • Đường dẫn gốc kho lưu trữ: Để nguyên đường dẫn mặc định
  • Đường dẫn gốc Git LFS: Để nguyên đường dẫn mặc định
  • Chạy với tư cách là Tên người dùng: git
  • Tên miền máy chủ SSH: Nhập địa chỉ IP của bạn
  • HTTP Listen Port: 3000 (Bạn có thể thay đổi cổng tại đây, nhưng bạn sẽ cần truy cập qua tường lửa.)
  • URL cơ sở Gitea: http://ĐỊA CHỈ IP CỦA BẠN:3000
  • Đường dẫn nhật ký: Giữ nguyên mặc định
Bạn có thể định cấu hình cài đặt Email và Máy chủ tại thời điểm này hoặc bạn có thể thay đổi chúng sau. Tuy nhiên, bạn nên điền vào cài đặt tài khoản quản trị viên.



Để bắt đầu cài đặt, hãy nhấp vào nút Cài đặt Gitea*. Sau khi hoàn tất, bạn sẽ tự động được đăng nhập và chuyển hướng đến bảng điều khiển tài khoản.



Quá trình cài đặt sẽ tạo tệp cấu hình Gitea. Đổi quyền thành chỉ đọc.
Mã:
$ sudo chmod 750 /etc/gitea$ sudo chmod 640 /etc/gitea/app.ini
Vậy là xong. Gitea hiện đã được cài đặt trên máy chủ của bạn.

Bước 7 - Cài đặt SSL bằng Let's Encrypt​

Để cài đặt chứng chỉ SSL bằng Let's Encrypt, chúng ta cần tải xuống công cụ Certbot bằng trình cài đặt gói Snapd có trong Ubuntu 20.04.

Chạy các lệnh sau để cài đặt Certbot.
Mã:
$ sudo dnf install certbot
Tạo chứng chỉ SSL.
Mã:
$ sudo certbot certonly --standalone --preferred-challenges http -d example.com
Lệnh trên sẽ tải xuống chứng chỉ vào thư mục /etc/letsencrypt/live/example.com trên máy chủ của bạn.

Tạo thư mục webroot thử thách cho Let's Encrypt tự động gia hạn.
Mã:
$ sudo mkdir -p /var/lib/letsencrypt
Tạo một 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.
Mã:
$ sudo nano /etc/cron.daily/certbot-renew
Dán mã sau.
Mã:
#!/bin/shcertbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
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.
Mã:
$ sudo chmod +x /etc/cron.daily/certbot-renew

Bước 8 - Cài đặt và cấu hình Nginx​

Bước tiếp theo là cài đặt máy chủ Nginx.
Mã:
$ sudo dnf install nginx
Tạo tệp cấu hình Nginx cho Gitea.
Mã:
$ sudo nano /etc/nginx/conf.d/gitea.conf
Dán mã sau vào đó.
Mã:
server { lắng nghe 80; vị trí ~ /\.well-known/acme-challenge { root /var/lib/letsencrypt/; } server_name yourdomain.com; trả về 301 https://$server_name$request_uri;}server { lắng nghe 443 ssl http2; server_name your_domain; client_max_body_size 50 phút; ssl_session_timeout 1 ngày; ssl_session_cache shared:MozSSL:10 phút; # khoảng 40000 phiên ssl_session_tickets tắt; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; ssl_prefer_server_ciphers tắt; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling đang bật; ssl_stapling_verify đang bật; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/yourdomain.com/chain.pem; proxy_read_timeout 720 giây; proxy_connect_timeout 720 giây; proxy_send_timeout 720 giây; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; location / { proxy_redirect off; proxy_pass http://127.0.0.1:3000; } access_log /var/log/nginx/gitea.access.log; error_log /var/log/nginx/gitea.error.log;}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Kiểm tra xem tệp cấu hình có hoạt động bình thường không.
Mã:
$ sudo nginx -t
Khởi động lại máy chủ Nginx.
Mã:
$ sudo systemctl restart nginx
Tiếp theo, hãy thay đổi tên miền Gitea và URL gốc. Để thực hiện điều đó, hãy mở tệp cấu hình /etc/gitea/app.ini.
Mã:
$ sudo nano /etc/gitea/app.ini
Thay đổi các giá trị sau.
Mã:
[server]SSH_DOMAIN = git.example.comDOMAIN = git.example.comROOT_URL = https://git.example.com/
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại dịch vụ Gitea.
Mã:
$ sudo systemctl restart gitea

Bước 9 - Thiết lập Thông báo qua Email​

Nếu bạn muốn nhận thông báo qua email, bạn có thể bật chúng qua Sendmail hoặc qua dịch vụ giao dịch Email của bên thứ 3 như Amazon SES, Postmark, Mailgun hoặc Sendgrid.

Để bật thông báo, hãy mở tệp cấu hình /etc/gitea/app.ini.
Mã:
$ sudo nano /etc/gitea/app.ini
Chỉnh sửa phần sau trong tệp và thêm mã sau.
Mã:
[mailer]ENABLED = trueFROM = [emailprotected]MAILER_TYPE = smtpHOST = mail.mydomain.com:587IS_TLS_ENABLED = trueUSER = [emailprotected]PASSWD = `password`
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại Gitea dịch vụ.
Mã:
$ sudo systemctl restart gitea

Bước 10 - Cập nhật Gitea​

Nâng cấp Gitea bao gồm việc tải xuống và thay thế tệp nhị phân Gitea.

Đầu tiên, hãy dừng dịch vụ Gitea.
Mã:
$ sudo systemctl stop gitea
Tải xuống và cài đặt tệp nhị phân Gitea.
Mã:
$ GITEAVERSION=LATESTVERSION$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64$ sudo mv gitea /usr/local/bin$ sudo chmod +x /usr/local/bin/gitea
Khởi động lại Dịch vụ Gitea.
Mã:
$ sudo systemctl start gitea

Bước 11 - Cách sử dụng SSH​

Để sử dụng SSH, chúng ta cần thêm khóa SSH của riêng mình vào Gitea. Nếu bạn không có, bạn có thể tạo một khóa bằng lệnh sau trên hệ thống cục bộ của mình.
Mã:
$ ssh-keygen -N "yourpassphrase" -t ed25519 -C "gitea_key"
Điều này sẽ tạo một khóa có tên id_ed25519 trong thư mục ~/.ssh. Để thêm khóa này, hãy sao chép nội dung của tệp ~/.ssh/id_ed25519.pub vào bảng tạm của bạn. Sau đó thêm khóa này vào trang cài đặt Gitea của bạn trong tab Khóa SSH/GPG. Nhấp vào nút Thêm khóa và đặt tên cho khóa rồi dán vào hộp.



Nếu bạn có danh sách người dùng được phép trong tệp cấu hình sshd, bạn cần thêm git vào đó.

Mở tệp cấu hình SSHD.
Mã:
$ sudo nano /etc/ssh/sshd_config
Tìm dòng trông giống như sau.
Mã:
AllowUsers myuser myotheruser git
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại dịch vụ SSHD.
Mã:
$ sudo systemctl restart ssh
Bạn cần thêm cụm mật khẩu cho khóa mà chúng tôi đã tạo cho công cụ ssh-agent trên hệ thống cục bộ của mình để bạn không bị yêu cầu nhập mật khẩu nhiều lần. Chạy các lệnh sau để thực hiện.
Mã:
$ eval $(ssh-agent)Agent pid 46436$ ssh-add ~/.ssh/id_ed25519
Bạn có thể sao chép kho lưu trữ của mình để kiểm tra kết nối SSH.
Mã:
$ git clone ssh://[emailprotected]/username/repo.gitĐang sao chép vào 'repo'...Không thể thiết lập tính xác thực của máy chủ 'example.com (201.110.80.160)'.Dấu vân tay khóa ECDSA là SHA256:Kx9l19zpGhHfbb2wHtmWeC7/WWv8e5/T3Tcws2qwVEw.Bạn có chắc chắn muốn tiếp tục kết nối không (có/không/[dấu vân tay])? cóCảnh báo: Đã thêm vĩnh viễn 'example.com,201.110.80.160' (ECDSA) vào danh sách các máy chủ đã biết.remote: Đang liệt kê các đối tượng: 5, xong.remote: Đang đếm các đối tượng: 100% (5/5), xong.remote: Đang nén các đối tượng: 100% (4/4), xong.remote: Tổng cộng 5 (delta 0), đã sử dụng lại 0 (delta 0)Đang nhận các đối tượng: 100% (5/5), 4,77 KiB | 977,00 KiB/giây, xong.

Kết luận​

Đây là phần kết thúc hướng dẫn về cài đặt và cấu hình dịch vụ lưu trữ mã Gitea trên Fedora 34. 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