Cách cài đặt Gitea trên Ubuntu 22.04

theanh

Administrator
Nhân viên
Gitea là dịch vụ Git miễn phí, mã nguồn mở và tự lưu trữ. Nó được viết bằng ngôn ngữ GO và cung cấp một cách dễ dàng hơn để lưu trữ hệ thống kiểm soát phiên bản của riêng bạn trên internet. Nó đơn giản, nhẹ và có thể được cài đặt trên các hệ thống có công suất thấp. Nó rất giống với GitHub và GitLab và cung cấp một bộ tính năng phong phú như trình chỉnh sửa tệp lưu trữ, theo dõi sự cố dự án, quản lý người dùng, thông báo, wiki tích hợp và nhiều hơn nữa. Nó là nền tảng chéo và có thể được cài đặt trên tất cả các hệ điều hành chính, bao gồm kiến trúc Linux, macOS, Windows, ARM và PowerPC.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt dịch vụ Gitea Git với Nginx và Let's Encrypt SSL trên Ubuntu 22.04.

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

  • Một máy chủ chạy Ubuntu 22.04.
  • Một tên miền hợp lệ được trỏ bằng IP máy chủ của bạn.
  • Một mật khẩu gốc được cấu hình trên máy chủ của bạn.

Bắt đầu​

Trước tiên, hãy cập nhật và nâng cấp tất cả các gói hệ thống lên phiên bản mới nhất bằng cách chạy lệnh sau:
Mã:
apt update -y
apt upgrade -y
Tiếp theo, cài đặt gói Git bằng cách chạy lệnh sau:
Mã:
apt-get install git -y
Sau khi cài đặt xong gói Git, bạn có thể tiến hành bước tiếp theo.

Cài đặt và cấu hình MariaDB​

Gitea sử dụng MariaDB làm backend cơ sở dữ liệu. Vì vậy, bạn sẽ cần cài đặt nó trên máy chủ của mình. Bạn có thể cài đặt nó bằng cách chạy lệnh sau:
Mã:
apt install mariadb-server -y
Sau khi cài đặt. Vì vậy, bạn sẽ cần bảo mật MariaDB và đặt mật khẩu gốc. Bạn có thể bảo mật bằng cách chạy tập lệnh mysql_secure_installation:
Mã:
mysql_secure_installation
Tập lệnh này sẽ đặt mật khẩu gốc, xóa người dùng ẩn danh, không cho phép đăng nhập gốc từ xa và xóa cơ sở dữ liệu thử nghiệm như được hiển thị bên dưới:
Mã:
Nhập mật khẩu hiện tại cho gốc (nhập nếu không có):Đặt mật khẩu gốc? [Y/n]: CóXóa người dùng ẩn danh? [Y/n]: CóKhông cho phép đăng nhập gốc từ xa? [Y/n]: CóXóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? [Y/n]: CóTải lại bảng đặc quyền ngay bây giờ? [Y/n]: Có
Sau khi MariaDB được bảo mật, hãy đăng nhập vào shell MariaDB bằng lệnh sau:
Mã:
mysql -u root -p
Nhập mật khẩu gốc của bạn khi được nhắc. Sau đó, thay đổi GLOBAL innodeb_file_per_table thành On:
Mã:
MariaDB [(none)]>SET GLOBAL innodb_file_per_table = ON;
Tiếp theo, tạo cơ sở dữ liệu và người dùng cho Gitea bằng lệnh sau:
Mã:
MariaDB [(none)]>CREATE DATABASE gitea;
MariaDB [(none)]>CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'password';
Tiếp theo, cấp tất cả các quyền cho cơ sở dữ liệu giteadb:
Mã:
MariaDB [(none)]>GRANT ALL ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Tiếp theo, cập nhật bộ ký tự cơ sở dữ liệu bằng lệnh sau lệnh:
Mã:
MariaDB [(none)]>ALTER DATABASE gitea CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci;
Cuối cùng, xóa các đặc quyền và thoát khỏi shell MariaDB bằng lệnh sau:
Mã:
MariaDB [(none)]>FLUSH PRIVILEGES;
MariaDB [(none)]>EXIT;
Tiếp theo, bạn sẽ cần chỉnh sửa tệp cấu hình mặc định của MariaDB và thêm các tham số InnoDB:
Mã:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Thêm các dòng sau vào phần [mysqld]:
Mã:
innodb_file_format = Barracudainnodb_large_prefix = 1innodb_default_row_format = dynamic
Lưu và đóng tệp. Sau đó, khởi động lại dịch vụ MariaDB để áp dụng các thay đổi:
Mã:
systemctl restart mariadb
Lúc này, cơ sở dữ liệu MariaDB của bạn đã được cấu hình. Bây giờ bạn có thể tiến hành bước tiếp theo.

Cài đặt và cấu hình Gitea​

Đầu tiên, hãy truy cập trang tải xuống Gitea, chọn phiên bản mới nhất và tải xuống tệp nhị phân Gitea mới nhất bằng lệnh sau:
Mã:
wget https://dl.gitea.io/gitea/1.17.1/gitea-1.17.1-linux-amd64
Sau khi tải xuống hoàn tất, hãy sao chép tệp đã tải xuống vào thư mục /usr/bin/ và cấp quyền thực thi:
Mã:
cp gitea-1.17.1-linux-amd64 /usr/bin/gitea
chmod 755 /usr/bin/gitea
Tiếp theo, tạo người dùng hệ thống cho Gitea bằng lệnh sau:
Mã:
adduser --system --shell /bin/bash --group --disabled-password --home /home/git git
Tiếp theo, tạo cấu trúc thư mục cho Gitea bằng lệnh sau:
Mã:
mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
chown git:git /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
chmod 750 /var/lib/gitea/{data,indexers,log}
chmod 770 /etc/gitea
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

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

Tiếp theo, bạn sẽ cần tạo tệp dịch vụ systemd để quản lý dịch vụ Gitea bằng systemd. Bạn có thể tạo nó bằng lệnh sau:
Mã:
nano /etc/systemd/system/gitea.service
Thêm các dòng sau:
Mã:
[Unit]Description=GiteaAfter=syslog.targetAfter=network.targetAfter=mysql.service[Service]RestartSec=2sType=simpleUser=gitGroup=gitWorkingDirectory=/var/lib/gitea/ExecStart=/usr/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 và đóng tệp. Sau đó, tải lại daemon systemd và khởi động dịch vụ Gitea bằng lệnh sau:
Mã:
systemctl daemon-reload
systemctl start gitea
Bạn có thể kiểm tra trạng thái của dịch vụ Gitea bằng lệnh sau:
Mã:
systemctl status gitea
Bạn sẽ thấy đầu ra sau:
Mã:
? gitea.service - Gitea Đã tải: đã tải (/etc/systemd/system/gitea.service; đã tắt; đã bật cài đặt trước của nhà cung cấp) Đang hoạt động: đang hoạt động (đang chạy) kể từ CN 2022-08-21 12:19:23 UTC; 8 giây trước PID chính: 24766 (gitea) Nhiệm vụ: 6 (giới hạn: 2242) Bộ nhớ: 121,2M CPU: 800ms CGroup: /system.slice/gitea.service ??24766 /usr/bin/gitea web -c /etc/gitea/app.ini21 tháng 8 12:19:23 ubuntu2204 gitea[24766]: 21/08/2022 12:19:23 ...s/install/setting.go:21:PreloadSettings() [I] AppPath: /usr/bin/gitea21 tháng 8 12:19:23 ubuntu2204 gitea[24766]: 21/08/2022 12:19:23 ...s/install/setting.go:22:PreloadSettings() [I] AppWorkPath: /var/lib/gitea21 tháng 8 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:23:PreloadSettings() [I] Đường dẫn tùy chỉnh: /var/lib/gitea/cus>21/08 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:24:PreloadSettings() [I] Đường dẫn nhật ký: /var/lib/gitea/log21/08 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:25:PreloadSettings() [I] Tệp cấu hình: /etc/gitea/>21/08 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:26:PreloadSettings() [I] Chuẩn bị chạy trang cài đặt21/08 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:29:PreloadSettings() [I] Hỗ trợ SQLite321/08 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 cmd/web.go:217:listen() [I] [630222cb-6] Nghe: http://0.0.0.0:300021 tháng 8 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 cmd/web.go:221:listen() [I] [630222cb-6] AppURL(ROOT_URL): http://localhost:3000/21 tháng 8 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/graceful/server.go:61:NewServer() [I] [630222cb-6] Đang khởi động máy chủ Web mới:>
Tiếp theo, hãy bật dịch vụ Gitea để bắt đầu khi khởi động lại hệ thống bằng lệnh sau:
Mã:
systemctl enable gitea
Lúc này, Gitea đã được khởi động và đang lắng nghe trên cổng 3000. Bây giờ bạn có thể tiến hành bước tiếp theo.

Cấu hình Nginx làm Proxy ngược cho Gitea​

Theo mặc định, Gitea lắng nghe trên cổng 3000. Vì vậy, bạn sẽ cần cấu hình Nginx làm proxy ngược để truy cập Gitea mà không cần chỉ định cổng.

Trước tiên, hãy cài đặt máy chủ web Nginx bằng cách chạy lệnh sau:
Mã:
apt-get install nginx -y
Sau khi cài đặt, hãy tạo tệp cấu hình máy chủ ảo Nginx mới cho Gitea:
Mã:
nano /etc/nginx/sites-available/gitea
Thêm các dòng sau:
Mã:
upstream gitea { server 127.0.0.1:3000;}server { listen 80; server_name git.example.com; root /var/lib/gitea/public; access_log off; error_log off; location / { try_files maintain.html $uri $uri/index.html @node; } location @node { client_max_body_size 0; proxy_pass http://localhost:3000; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_max_temp_file_size 0; proxy_redirect off; proxy_read_timeout 120; }}
Lưu và đóng tệp. Sau đó, kích hoạt tệp cấu hình máy chủ ảo Nginx bằng lệnh sau:
Mã:
ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/
Cuối cùng, khởi động lại dịch vụ Nginx và kiểm tra trạng thái của dịch vụ Nginx bằng lệnh sau:
Mã:
systemctl restart nginx
Mã:
systemctl status nginx
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
? nginx.service - Một máy chủ web hiệu suất cao và một máy chủ proxy ngược Đã tải: đã tải (/lib/systemd/system/nginx.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ CN 2022-08-21 12:21:23 UTC; 5 giây trước Tài liệu: man:nginx(8) Tiến trình: 24799 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Tiến trình: 24800 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) PID chính: 24801 (nginx) Nhiệm vụ: 2 (giới hạn: 2242) Bộ nhớ: 4,5M CPU: 44ms CGroup: /system.slice/nginx.service ??24801 "nginx: tiến trình chính /usr/sbin/nginx -g daemon on; master_process on;" ??24802 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""21 tháng 8, 12:21:23 ubuntu2204 systemd[1]: Bắt đầu Một máy chủ web hiệu suất cao và một máy chủ proxy ngược...21 tháng 8, 12:21:23 ubuntu2204 systemd[1]: Bắt đầu Một máy chủ web hiệu suất cao và một máy chủ proxy ngược.
Tại thời điểm này, Nginx được cấu hình để phục vụ Gitea. Bây giờ bạn có thể tiến hành bước tiếp theo.

Bảo mật Gitea bằng Let's Encrypt SSL​

Trước tiên, bạn sẽ cần cài đặt ứng dụng khách Certbot để cài đặt và quản lý Let's Encrypt SSL trong hệ thống của mình. Bạn có thể cài đặt bằng cách chạy lệnh sau:
Mã:
apt-get install certbot python3-certbot-nginx -y
Sau khi Certbot được cài đặt, hãy chạy lệnh sau để tải xuống và cài đặt Let's Encrypt SSL cho trang web Gitea.
Mã:
certbot --nginx -d gitea.linuxbuz.com
Cung cấp địa chỉ email của bạn và chấp nhận điều khoản dịch vụ như hiển thị bên dưới:
Mã:
Lưu nhật ký gỡ lỗi vào /var/log/letsencrypt/letsencrypt.logCác plugin đã chọn: Authenticator nginx, Installer nginxNhập địa chỉ email (dùng để gia hạn khẩn cấp và thông báo bảo mật) (Nhập 'c' đểhủy): [emailprotected]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Vui lòng đọc Điều khoản dịch vụ tạihttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Bạn phảiđồng ý để đăng ký với máy chủ ACME tạihttps://acme-v02.api.letsencrypt.org/directory- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(A)gree/(C)ancel: A- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Bạn có muốn chia sẻ địa chỉ email của mình với Electronic Frontier Foundation, đối tác sáng lập của dự án Let's Encrypt và tổ chức phi lợi nhuậnphát triển Certbot không? Chúng tôi muốn gửi cho bạn email về công việc của chúng tôimã hóa web, tin tức EFF, các chiến dịch và các cách hỗ trợ tự do kỹ thuật số.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(C)ó/(K)o: CNhận chứng chỉ mớiThực hiện các thử thách sau:Thử thách http-01 cho gitea.linuxbuz.comĐang chờ xác minh...Dọn dẹp các thử tháchTriển khai chứng chỉ cho VirtualHost /etc/nginx/sites-enabled/gitea
Tiếp theo, chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không như hiển thị bên dưới:
Mã:
Vui lòng chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không, xóa quyền truy cập HTTP.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1: Không chuyển hướng - Không thực hiện thêm bất kỳ thay đổi nào đối với cấu hình máy chủ web.2: Chuyển hướng - Chuyển hướng tất cả các yêu cầu đến quyền truy cập HTTPS an toàn. Chọn tùy chọn này chocác trang web mới hoặc nếu bạn tin tưởng rằng trang web của mình hoạt động trên HTTPS. Bạn có thể hoàn tácthay đổi này bằng cách chỉnh sửa cấu hình máy chủ web của mình.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Chọn số thích hợp [1-2] rồi [enter] (nhấn 'c' để hủy): 2
Nhập 2 và nhấn Enter để cài đặt chứng chỉ như hiển thị bên dưới:
Mã:
Chuyển hướng tất cả lưu lượng truy cập trên cổng 80 sang ssl trong /etc/nginx/sites-enabled/gitea- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xin chúc mừng! Bạn đã bật thành công https://gitea.linuxbuz.comBạn nên kiểm tra cấu hình của mình tại:https://www.ssllabs.com/ssltest/analyze.html?d=gitea.linuxbuz.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -LƯU Ý QUAN TRỌNG: - Xin chúc mừng! Chứng chỉ và chuỗi của bạn đã được lưu tại: /etc/letsencrypt/live/gitea.linuxbuz.com/fullchain.pem Tệp khóa của bạn đã được lưu tại: /etc/letsencrypt/live/gitea.linuxbuz.com/privkey.pem Chứng chỉ của bạn sẽ hết hạn vào ngày 21-11-2022. Để có phiên bản mới hoặc đã chỉnh sửa của chứng chỉ này trong tương lai, chỉ cần chạy lại certbot với tùy chọn "certonly". Để gia hạn không tương tác *tất cả* chứng chỉ của bạn, hãy chạy "certbot renew" - Nếu bạn thích Certbot, vui lòng cân nhắc hỗ trợ công việc của chúng tôi bằng cách: Quyên góp cho ISRG / Let's Encrypt: https://letsencrypt.org/donate Quyên góp cho EFF: https://eff.org/donate-le
Bây giờ, trang web Gitea của bạn được bảo mật bằng Let's Encrypt SSL. Bây giờ bạn có thể tiến hành bước tiếp theo.

Truy cập Giao diện Web Gitea​

Bây giờ, hãy mở trình duyệt web của bạn và nhập URL . Bạn sẽ được chuyển hướng đến trang sau:







Cung cấp tên cơ sở dữ liệu Gitea, tên người dùng, mật khẩu, đường dẫn kho lưu trữ, chạy dưới dạng tên người dùng, cổng lắng nghe, URL cơ sở Gitea, Đường dẫn nhật ký, tên người dùng quản trị Gitea, mật khẩu và nhấp vào nút Cài đặt Gitea. Sau khi quá trình cài đặt hoàn tất, bạn sẽ thấy bảng điều khiển Gitea trên màn hình sau:


Kết luận​

Xin chúc mừng! Bạn đã cài đặt thành công Gitea với Nginx và Let's Encrypt SSL trên máy chủ Ubuntu 22.04. Bây giờ bạn có thể triển khai Gitea trong tổ chức của mình và bắt đầu tạo kho lưu trữ đầu tiên với Gitea. Để biết thêm thông tin, hãy truy cập tài liệu của Gitea.
 
Back
Bên trên