Cách cài đặt Gitea Code Hosting Platform với HTTPS trên Debian 10

theanh

Administrator
Nhân viên
Gitea là một ứng dụng web lưu trữ mã được viết bằng Go và phân nhánh từ Gogs. Như tên gọi của nó, nó được thiết kế để sử dụng với chương trình kiểm soát nguồn phổ biến Git, tương tự như Gitlab và Github. Hướng dẫn này sẽ giải thích cách cài đặt Gitea trên Debian 10 đằng sau proxy ngược HTTPS (Nginx).

Yêu cầu​

  • Hệ thống Debian 10 mà bạn có quyền root.
  • Tên miền đã đăng ký trỏ đến máy chủ của bạn.
  • Biến môi trường $EDITOR phải được đặt.
  • Truy cập vào máy chủ SMTP để nhận thông báo qua email (tùy chọn).
Đảm bảo rằng (tên miền phụ) của bạn trỏ đến địa chỉ IPv4 của máy chủ với bản ghi A. Tùy chọn, tạo bản ghi AAAA trỏ đến địa chỉ IPv6 của máy chủ của bạn.

Bước 1: Chuẩn bị hệ thống​

Bắt đầu bằng cách cập nhật chỉ mục gói của bạn và cài đặt bất kỳ bản cập nhật nào có sẵn:
Mã:
apt updateapt upgrade -yreboot
Đối với thiết lập này, cần có một số gói phần mềm:
  • Git, một phần phụ thuộc của Gitea.
  • PostgreSQL, vì Gitea yêu cầu cơ sở dữ liệu.
  • Nginx, sẽ được sử dụng làm proxy.
  • Certbot, một tiện ích để lấy chứng chỉ SSL Let's Encrypt.
  • Sudo, để chạy các lệnh với tư cách là người dùng hệ thống postgres.
Cài đặt chúng như sau:
Mã:
apt install -y git nginx certbot postgresql sudo
Tiếp theo, tạo một người dùng để chạy Gitea:
Mã:
adduser --system --disabled-password --group --shell /bin/bash --home /home/gitea gitea
Sau đó, tạo cấu trúc thư mục cho Gitea:
Mã:
mkdir -p /var/lib/gitea/{data,log} /etc/gitea /run/gitea
Và đặt quyền sở hữu và quyền như sau:
Mã:
chown -R gitea:gitea /var/lib/giteachown -R gitea:gitea /run/giteachown -R root:gitea /etc/giteachmod -R 750 /var/lib/giteachmod 770 /etc/gitea
Quyền trên /etc/gitea là tạm thời và sẽ được thắt chặt sau khi chạy trình cài đặt web.

Bước 2: Thiết lập cơ sở dữ liệu​

Đảm bảo Postgres được bật và đang chạy:
Mã:
systemctl enable --now [emailprotected]
Sau đó, tạo vai trò người dùng và cơ sở dữ liệu để Gitea sử dụng:
Mã:
sudo -u postgres psqlpostgres=# CREATE ROLE gitea LOGIN ENCRYPTED PASSWORD 'your_password';postgres=# CREATE DATABASE gitea;postgres=# CẤP TẤT CẢ CÁC QUYỀN TRÊN CƠ SỞ DỮ LIỆU gitea CHO gitea;postgres=# exit;

Bước 3: Cài đặt Gitea​

Tải xuống tệp nhị phânlinux-amd64 mới nhất từ trang tải xuống của Gitea. Ví dụ:
Mã:
wget https://dl.gitea.io/gitea/master/gitea-master-linux-amd64 -O /usr/local/bin/giteachmod 755 /usr/local/bin/gitea
Tiếp theo, tạo tệp đơn vị systemd cho Gitea:
Mã:
$EDITOR /etc/systemd/system/gitea.service
Và nhập thông tin sau:
Mã:
[Unit]Description=Gitea (Git with a cup of tea)After=syslog.targetAfter=network.targetRequires=postgresql.service[Service]Type=simpleUser=giteaGroup=giteaWorkingDirectory=/var/lib/gitea/RuntimeDirectory=giteaExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.iniRestart=alwaysEnvironment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea[Cài đặt]WantedBy=multi-user.target
Đảm bảo đơn vị mới đã được tải:
Mã:
systemctl daemon-reload
Sau đó hướng dẫn systemd khởi động Gitea khi khởi động hệ thống:
Mã:
systemctl enable gitea.service

Bước 4: Cấu hình Gitea​

Đối với cấu hình ban đầu, chúng tôi sẽ sử dụng tập lệnh cài đặt web đi kèm. Trước tiên, hãy khởi động Gitea:
Mã:
systemctl start gitea.service
Sau đó, điều hướng đến http://your_domain:3000/install và điền vào các tham số bắt buộc như sau:
  • Loại cơ sở dữ liệu: PostgreSQL
  • Máy chủ: 127.0.0.1:5432
  • Tên người dùng: gitea
  • Mật khẩu: Nhập mật khẩu bạn đã chọn trong quá trình tạo vai trò Postgres.
  • Tên cơ sở dữ liệu: gitea
  • SSL: Tắt
  • Tiêu đề trang web: Tiêu đề bạn chọn.
  • Đường dẫn gốc của kho lưu trữ: /var/lib/gitea/data/repositories
  • Đường dẫn gốc của Git LFS: /var/lib/gitea/data/lfs
  • Chạy với tư cách là tên người dùng: gitea
  • Tên miền máy chủ SSH: your_domain
  • SSH Cổng máy chủ: 22
  • Gitea HTTP Listen Post: 3000
  • URL cơ sở Gitea: https://your_domain/
  • Đường dẫn nhật ký: /var/lib/gitea/log
Cấu hình email và các thiết lập còn lại theo ý muốn, sau đó nhấp vào "Cài đặt Gitea". Bạn sẽ được chuyển hướng đến một URL bị lỗi. Điều này là bình thường vì chúng tôi chưa cấu hình Nginx hoặc HTTPS. Vì lý do hiệu suất, bây giờ chúng tôi sẽ cấu hình Gitea để lắng nghe trên một socket unix thay vì cổng TCP mặc định.

Dừng Gitea trước khi tiếp tục:
Mã:
systemctl stop gitea.service
Thắt chặt quyền đối với /etc/gitea như được hiển thị bên dưới. Điều này ngăn không cho bất kỳ ai không thuộc nhóm gitea đọc app.ini, chứa thông tin nhạy cảm, bao gồm thông tin xác thực cơ sở dữ liệu.
Mã:
chmod 750 /etc/giteachown root:gitea /etc/gitea/app.inichmod 640 /etc/gitea/app.ini
Mở tệp cấu hình của nó:
Mã:
$EDITOR /etc/gitea/app.ini
Mã:
Xóa dòng sau khỏi phần [máy chủ]:
Mã:
HTTP_PORT = 3000
Mã:
Và thêm các dòng sau vào phần [máy chủ]:
Mã:
HTTP_ADDR = /run/gitea/gitea.sockPROTOCOL = unixUNIX_SOCKET_PERMISSION = 666

Bước 5: Thiết lập Proxy ngược​

Mã:
Dừng Nginx nếu nó đang chạy, vì certbot sẽ cần liên kết với cổng 80:
Mã:
systemctl stop nginx.service
Sử dụng lệnh sau để lấy chứng chỉ cho tên miền của bạn:
Mã:
certbot certonly --standalone --agree-tos -m [emailprotected] -d your_domain
Let's Encrypt sẽ xác minh quyền sở hữu tên miền trước khi cấp chứng chỉ. Chứng chỉ, chuỗi và khóa riêng của bạn sẽ được lưu trữ trong /etc/letsencrypt/live/your_domain/.

Bây giờ chúng ta có thể cấu hình Nginx. Tạo tệp cấu hình mới:
Mã:
$EDITOR /etc/nginx/sites-available/gitea
Và nhập cấu hình sau:
Mã:
server { listen 80; listen [::]:80; server_name your_domain; return 301 https://$server_name$request_uri; access_log /var/log/nginx/gitea-proxy_access.log; error_log /var/log/nginx/gitea-proxy_error.log;}server { listen 443 ssl; listen [::]:443 ssl; server_name your_domain; ssl on; ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem; location / { proxy_pass http://unix:/var/run/gitea/gitea.sock; } access_log /var/log/nginx/gitea-proxy_access.log; error_log /var/log/nginx/gitea-proxy_error.log;}
Khối máy chủ đầu tiên chỉ đơn giản phục vụ cho việc chuyển hướng tất cả các yêu cầu HTTP sang HTTPS. Khối thứ hai lắng nghe các kết nối HTTPS và chuyển tiếp chúng đến socket unix mà chúng ta đã cấu hình Gitea để lắng nghe.

Sau khi lưu cấu hình trên, hãy chạy lệnh sau để bật cấu hình:
Mã:
ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled
Kiểm tra xem có lỗi cú pháp nào không và chỉnh sửa cấu hình của bạn cho phù hợp:
Mã:
nginx -t
Cuối cùng, hãy khởi động Nginx và Gitea:
Mã:
systemctl start nginx.service gitea.service
Hiện tại, phiên bản Gitea của bạn sẽ chạy thành công. Nếu bạn không tạo tài khoản quản trị viên bằng trình cài đặt web ban đầu, người dùng đầu tiên đăng ký sẽ được cấp vai trò quản trị viên.

Các bước tùy chọn​

Cấu hình ghi nhật ký​

Theo mặc định, Gitea ghi nhật ký các thông báo có mức độ nghiêm trọng Info trở lên. Bạn rất có thể sẽ muốn thay đổi thành Warn hoặc Error. Để thực hiện, hãy mở /etc/gitea/app.ini và thay đổi tham số LEVEL trong phần [log] thành một trong các mục sau: trace, debug, info, warn, error, critical, fatal, none. Ví dụ, để ghi nhật ký các thông báo có mức độ nghiêm trọng Warn trở lên, hãy sử dụng:
Mã:
[log]MODE = fileLEVEL = warnROOT_PATH = /var/lib/gitea/log
Khởi động lại Gitea để các thay đổi có hiệu lực:
Mã:
systemctl restart gitea.service

Máy chủ SSH riêng​

Gitea cũng có thể sử dụng máy chủ SSH riêng. Để bật máy chủ này, hãy thêm dòng sau vào phần cấu hình [server]:
Mã:
START_SSH_SERVER = true
Và thay đổi cổng SSH thành bất kỳ số nào lớn hơn 1000, ví dụ:
Mã:
SSH_PORT = 2222
Sau đó, khởi động lại Gitea để áp dụng các thay đổi.
 
Back
Bên trên