0
0
Lập trình
TT

Hướng dẫn tự host Forgejo: Máy chủ Git cá nhân

Đăng vào 21 giờ trước

• 3 phút đọc

Hướng dẫn tự host Forgejo

Giới thiệu

Chào mọi người! Trong bài viết này, tôi sẽ hướng dẫn bạn cách tự host Forgejo, một phần mềm Git forge nhẹ nhàng và dễ sử dụng. Bạn có thể coi nó như một phiên bản GitHub riêng tư, nơi bạn kiểm soát 100% dữ liệu của mình.

Forgejo là một binary Golang độc lập và hoạt động hoàn chỉnh, với SQLite làm cơ sở dữ liệu mặc định. Nếu bạn có dưới 100 người dùng, SQLite là đủ để đáp ứng nhu cầu. Tuy nhiên, hãy lưu ý rằng hiện tại Forgejo chưa hỗ trợ tương tác giữa người dùng từ các instance khác nhau. Để thích ứng với điều này, Forgejo đang phát triển giao thức liên kết gọi là ForgeFed.

Tự Host Forgejo

Để tự host Forgejo, bạn có thể sử dụng Ansible Playbook mà tôi đã tạo. Bạn có thể tải về từ kho lưu trữ của tôi:

Cài đặt Ansible

Playbook chỉ hoạt động trên các bản phân phối dựa trên RHEL, như Fedora, RockyLinux, CentOS, AlmaLinux hoặc OpenSuse. Để chạy playbook, bạn cần cài đặt Ansible:

bash Copy
sudo dnf install ansible
ansible-galaxy collection install community.general
ansible-galaxy collection install containers.podman
ansible-galaxy collection install ansible.posix

Cấu hình tập tin inventory

Cập nhật tập tin inventory.ini với địa chỉ IP và người dùng sudo của máy chủ mà bạn sẽ cài đặt Forgejo:

ini Copy
[nuculabs]
host.example.com ansible_user=ansible

[local]
localhost

Cập nhật các biến

Tiếp theo, chỉnh sửa tập tin variables.yaml với các giá trị của bạn:

yaml Copy
setup_firewall: false
forgejo:
  base_url: forgejo.example.com
  http_port: 3000
  ssh_port: 3001
  container_image: "codeberg.org/forgejo/forgejo:12"
  base_directory: "/forgejo"

Sau khi chỉnh sửa, bạn có thể chạy câu lệnh sau:

bash Copy
make run

Ansible sẽ yêu cầu bạn nhập mật khẩu sudo của người dùng ansible và sau đó bắt đầu tải về và thiết lập các phụ thuộc cần thiết.

Cài đặt Nginx

Để truy cập Forgejo từ internet, tôi khuyến nghị bạn thiết lập một reverse proxy Nginx. Tạo một tệp trong thư mục sites-available với nội dung sau và liên kết nó đến thư mục sites-enabled:

nginx Copy
server {
    server_name forge.nuculabs.dev;
    client_max_body_size 30M;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

Chạy certbot --nginx, chọn forge.nuculabs.dev để tạo chứng chỉ HTTPS.

Cấu hình Forgejo

Sau khi cài đặt thành công, bạn cần cập nhật tập tin app.ini tại /forgejo/gitea/conf:

ini Copy
APP_NAME = NucuLabs
RUN_MODE = prod
DOMAIN = forge.nuculabs.dev
# ....

[service]
DISABLE_REGISTRATION = true
# ...

Để Forgejo nhận diện sự thay đổi tập tin, quan trọng là khởi động lại với systemctl restart forgejo.

Bảo trì

Nâng cấp phiên bản

Để nâng cấp, SSH vào máy chủ và kéo hình ảnh Forgejo mới nhất:

bash Copy
podman pull codeberg.org/forgejo/forgejo:12

Chỉnh sửa tập tin systemd /etc/containers/systemd/forgejo.container và cập nhật hình ảnh:

ini Copy
Image=codeberg.org/forgejo/forgejo:12

Tải lại systemd và khởi động lại Forgejo:

bash Copy
sudo systemctl daemon-reload
systemctl restart forgejo

Quản lý người dùng qua CLI

Nếu bạn đã có tài khoản quản trị viên, bạn có thể tạo người dùng mới thông qua UI quản trị. Nếu không, bạn có thể sử dụng forgejo-cli để chỉnh sửa hoặc đặt lại mật khẩu người dùng.

bash Copy
podman exec -it forgejo bin/bash
su git

Kết luận

Forgejo dễ dàng để tự host, yêu cầu tài nguyên thấp, và gánh nặng bảo trì rất nhẹ. Tùy chọn lưu trữ SQLite rất tuyệt vời cho các triển khai nhỏ và trung bình. Hy vọng bạn thích bài viết này! Cảm ơn bạn đã đọc và hẹn gặp lại!

Câu hỏi thường gặp

1. Forgejo có miễn phí không?
Có, Forgejo là phần mềm mã nguồn mở và hoàn toàn miễn phí.

2. Có thể sử dụng Forgejo với cơ sở dữ liệu nào?
Forgejo hỗ trợ SQLite, MariaDB, MySQL và PostgreSQL.

3. Làm thế nào để nâng cấp Forgejo?
Bạn có thể nâng cấp bằng cách kéo hình ảnh mới nhất từ kho lưu trữ và khởi động lại dịch vụ.

4. Có cần cài đặt thêm phần mềm nào khác không?
Bạn chỉ cần cài đặt Ansible để tự động hóa quy trình cài đặt Forgejo.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào