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.
Kiểm tra xem tường lửa có đang chạy không.
Bạn sẽ nhận được kết quả sau.
Kiểm tra các dịch vụ/cổng hiện được phép.
Kết quả sau sẽ hiển thị.
Cho phép các cổng HTTP và HTTPS.
Kiểm tra lại trạng thái của tường lửa.
Bạn sẽ thấy kết quả tương tự.
Tải lại Tường lửa.
Xác minh cài đặt bằng cách kiểm tra phiên bản Git.
Bạn có thể kiểm tra cấu hình bằng cách sử dụng lệnh sau.
Cài đặt và khởi tạo 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 đồ
Chỉnh sửa các biến sau theo cách sau.
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.
Đăng nhập vào shell PostgreSQL.
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.
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
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
Nếu cơ sở dữ liệu là cục bộ, hãy thêm dòng này.
Đối với cơ sở dữ liệu từ xa, hãy sử dụng mã sau.
Bạn cũng sẽ cần chỉnh sửa các dòng sau bằng cách thêm thay thế
Chúng sẽ trông giống như sau.
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.
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.
Lệnh này tạo người dùng và nhóm mới có tên
Sử dụng tiện ích
Di chuyển tệp nhị phân đã tải xuống vào thư mục
Làm cho tệp nhị phân có thể thực thi.
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.
Quyền cho thư mục
Dán mã sau vào đó.
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.
Kích hoạt và khởi động dịch vụ Gitea.
Xác minh rằng Gitea đang chạy.
Mở trình duyệt của bạn và nhập
Cài đặt cơ sở dữ liệu
Để 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.
Vậy là xong. Gitea hiện đã được cài đặt trên máy chủ của bạn.
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
Tạo thư mục webroot thử thách cho Let's Encrypt tự động gia hạn.
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
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.
Tạo tệp cấu hình Nginx cho Gitea.
Dán mã sau vào đó.
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.
Khởi động lại máy chủ 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
Thay đổi các giá trị sau.
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.
Để bật thông báo, hãy mở tệp cấu hình
Chỉnh sửa phần sau trong tệp và thêm mã sau.
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ụ.
Đầu tiên, hãy dừng dịch vụ Gitea.
Tải xuống và cài đặt tệp nhị phân Gitea.
Khởi động lại Dịch vụ Gitea.
Điều này sẽ tạo một khóa có tên
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
Mở tệp cấu hình SSHD.
Tìm dòng trông giống như sau.
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.
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ụ
Bạn có thể sao chép kho lưu trữ của mình để kiểm tra kết nối SSH.
Đâ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
Mã:
đang chạy
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
dhcpv6-client mdns ssh
Mã:
$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
dhcpv6-client http https mdns ssh
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
Mã:
$ git --versiongit version 2.31.1
Cấu hình Git
Git có thể được cấu hình bằng lệnhgit 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]"
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
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
Mã:
listen_addresses = 'localhost, 201.0.110.0'password_encryption = scram-sha-256
Khởi động lại PostgreSQL.
Mã:
$ sudo systemctl restart postgresql
Mã:
$ sudo -u postgres psql
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';
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
Mã:
host giteadb gitea 192.0.2.10/32 scram-sha-256
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
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
Khởi động lại PostgreSQL.
Mã:
$ sudo systemctl restart postgresql
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
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ếnVERSION
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
/usr/local/bin
.
Mã:
$ sudo mv gitea /usr/local/bin
Mã:
$ sudo chmod +x /usr/local/bin/gitea
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
/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
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
Để 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
Mã:
$ sudo systemctl enable --now gitea
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
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
- 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ắ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
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
Mã:
$ sudo certbot certonly --standalone --preferred-challenges http -d example.com
/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
/etc/cron.daily/certbot-renew
và mở tệp đó để chỉnh sửa.
Mã:
$ sudo nano /etc/cron.daily/certbot-renew
Mã:
#!/bin/shcertbot renew --cert-name 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 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
Mã:
$ sudo nano /etc/nginx/conf.d/gitea.conf
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;}
Kiểm tra xem tệp cấu hình có hoạt động bình thường không.
Mã:
$ sudo nginx -t
Mã:
$ sudo systemctl restart nginx
/etc/gitea/app.ini
.
Mã:
$ sudo nano /etc/gitea/app.ini
Mã:
[server]SSH_DOMAIN = git.example.comDOMAIN = git.example.comROOT_URL = https://git.example.com/
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
Mã:
[mailer]ENABLED = trueFROM = [emailprotected]MAILER_TYPE = smtpHOST = mail.mydomain.com:587IS_TLS_ENABLED = trueUSER = [emailprotected]PASSWD = `password`
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
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
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"
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
Mã:
AllowUsers myuser myotheruser git
Khởi động lại dịch vụ SSHD.
Mã:
$ sudo systemctl restart ssh
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
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.