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
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
[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
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
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
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
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
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
Image=codeberg.org/forgejo/forgejo:12
Tải lại systemd và khởi động lại Forgejo:
bash
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
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.