Bỏ qua để đến nội dung

Linux

Hỗ trợ: kernel 4.4+, các distro dùng glibc có systemd. Đã kiểm tra trên Ubuntu 22.04+, Debian 12, Fedora 39+. Kiến trúc: amd64, arm64.

  1. Mở một shell.

  2. Chạy trình cài đặt:

    Terminal window
    curl -sSL https://proxy.sotatek.works/releases/download/latest/install.sh | bash
    export PATH="$HOME/.local/bin:$PATH" && hash -r

    Script tải binary phù hợp, xác minh checksum SHA256, đặt binary tại /usr/local/bin/sotatek-proxy, và đăng ký systemd service toàn máy (script sẽ hỏi sudo ở bước này). Dịch vụ khởi động ngay và tự chạy khi boot.

  3. Xác minh daemon đang chạy:

    Terminal window
    sudo sotatek-proxy status
    curl http://127.0.0.1:3817/_proxy/healthz

Daemon xác định process đã gửi request, đọc thư mục làm việc của process đó, rồi chạy git remote -v hạ quyền xuống đúng uid của user đó — nên nó đọc repo của mỗi user bằng chính quyền của user ấy, không bao giờ bằng quyền cao hơn. Kết quả được gửi lên upstream qua header X-Git-Remote.

Để làm được điều này, dịch vụ giữ CAP_SYS_PTRACE, CAP_SETUIDCAP_SETGID, chạy trong sandbox (NoNewPrivileges, ProtectSystem=strict, ProtectHome=read-only) dưới một system user không phải root.

Thành phầnĐường dẫn
Binary/usr/local/bin/sotatek-proxy
Config/etc/sotatek-proxy/config.yaml (tùy chọn)
Logs/var/log/sotatek-proxy/sotatek-proxy.log
Unit/etc/systemd/system/sotatek-proxy.service
Chạy dướisystem user sotatek-proxy (nologin)
Terminal window
sudo sotatek-proxy status # running / stopped
sudo sotatek-proxy start # khởi động ngay
sudo sotatek-proxy stop # dừng (giữ trạng thái dừng qua reboot)
sotatek-proxy logs # xem 100 dòng log cuối
sudo sotatek-proxy uninstall # gỡ dịch vụ, system user, config và logs

Bạn cũng có thể dùng systemd trực tiếp:

Terminal window
systemctl status sotatek-proxy
journalctl -u sotatek-proxy -f

Ở môi trường không có systemd hoặc không có useradd, việc cài dịch vụ không được hỗ trợ. Thay vào đó hãy chạy proxy ở foreground — nó tự dùng đường dẫn theo user (~/.config/sotatek-proxy/config.yaml, ~/.local/state/sotatek-proxy/) và không cần root:

Terminal window
sotatek-proxy daemon

Nếu sotatek-proxy status báo command not found, /usr/local/bin chưa nằm trong PATH.

Thêm vào file rc của shell đúng, rồi nạp lại:

Terminal window
case "$(basename "${SHELL:-bash}")" in
zsh) RC="$HOME/.zshrc" ;;
*) RC="$HOME/.bashrc" ;;
esac
LINE='export PATH="/usr/local/bin:$PATH"'
grep -qxF "$LINE" "$RC" 2>/dev/null || echo "$LINE" >> "$RC"
source "$RC"
Terminal window
sudo sotatek-proxy uninstall
sudo rm /usr/local/bin/sotatek-proxy