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.
Tiếp theo, cài đặt gói Git bằng cách chạy lệnh sau:
Sau khi cài đặt xong gói Git, bạn có thể tiến hành bước tiếp theo.
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:
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:
Sau khi MariaDB được bảo mật, hãy đăng nhập vào shell MariaDB bằng lệnh sau:
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:
Tiếp theo, tạo cơ sở dữ liệu và người dùng cho Gitea bằng lệnh sau:
Tiếp theo, cấp tất cả các quyền cho cơ sở dữ liệu giteadb:
Tiếp theo, cập nhật bộ ký tự cơ sở dữ liệu bằng lệnh sau lệnh:
Cuối cùng, xóa các đặc quyền và thoát khỏi shell MariaDB bằng lệnh sau:
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:
Thêm các dòng sau vào phần [mysqld]:
Lưu và đóng tệp. Sau đó, khởi động lại dịch vụ MariaDB để áp dụng các thay đổi:
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.
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:
Tiếp theo, tạo người dùng hệ thống cho Gitea bằng lệnh sau:
Tiếp theo, tạo cấu trúc thư mục cho Gitea bằng lệnh sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Thêm các dòng sau:
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:
Bạn có thể kiểm tra trạng thái của dịch vụ Gitea bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
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:
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.
Trước tiên, hãy cài đặt máy chủ web Nginx bằng cách chạy lệnh sau:
Sau khi cài đặt, hãy tạo tệp cấu hình máy chủ ảo Nginx mới cho Gitea:
Thêm các dòng sau:
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:
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:
Bạn sẽ nhận được kết quả đầu ra sau:
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.
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.
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:
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:
Nhập 2 và nhấn Enter để cài đặt chứng chỉ như hiển thị bên dưới:
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.
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:
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
Mã:
apt-get install git -y
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
Mã:
mysql_secure_installation
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ó
Mã:
mysql -u root -p
Mã:
MariaDB [(none)]>SET GLOBAL innodb_file_per_table = ON;
Mã:
MariaDB [(none)]>CREATE DATABASE gitea;
MariaDB [(none)]>CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'password';
Mã:
MariaDB [(none)]>GRANT ALL ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Mã:
MariaDB [(none)]>ALTER DATABASE gitea CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci;
Mã:
MariaDB [(none)]>FLUSH PRIVILEGES;
MariaDB [(none)]>EXIT;
Mã:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Mã:
innodb_file_format = Barracudainnodb_large_prefix = 1innodb_default_row_format = dynamic
Mã:
systemctl restart mariadb
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
Mã:
cp gitea-1.17.1-linux-amd64 /usr/bin/gitea
chmod 755 /usr/bin/gitea
Mã:
adduser --system --shell /bin/bash --group --disabled-password --home /home/git git
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
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
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
Mã:
systemctl daemon-reload
systemctl start gitea
Mã:
systemctl status gitea
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:>
Mã:
systemctl enable gitea
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
Mã:
nano /etc/nginx/sites-available/gitea
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; }}
Mã:
ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/
Mã:
systemctl restart nginx
Mã:
systemctl status nginx
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.
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
Mã:
certbot --nginx -d gitea.linuxbuz.com
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
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
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
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: