Linux
์ง์ ํ๊ฒฝ: ์ปค๋ 4.4 ์ด์, systemd๋ฅผ ์ฌ์ฉํ๋ glibc ๊ธฐ๋ฐ ๋ฐฐํฌํ. Ubuntu 22.04+, Debian 12, Fedora 39+์์ ํ ์คํธ๋จ. ์ํคํ ์ฒ: amd64, arm64.
-
์ ธ์ ์ฝ๋๋ค.
-
์ค์น ์คํฌ๋ฆฝํธ๋ฅผ ์คํํฉ๋๋ค:
Terminal window curl -sSL https://proxy.sotatek.works/releases/download/latest/install.sh | bashexport PATH="$HOME/.local/bin:$PATH" && hash -r์คํฌ๋ฆฝํธ๋ ํด๋น ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ด๋ ค๋ฐ์ SHA256 ์ฒดํฌ์ฌ์ ๊ฒ์ฆํ๊ณ
/usr/local/bin/sotatek-proxy์ ๋ฐฐ์นํ ๋ค, ์์คํ ์ ์ญ systemd ์๋น์ค๋ฅผ ๋ฑ๋กํฉ๋๋ค(์ด ๋จ๊ณ์์sudo๋ฅผ ์์ฒญํฉ๋๋ค). ์๋น์ค๋ ์ฆ์ ์์๋๋ฉฐ ๋ถํ ์์๋ ์๋ ์์๋ฉ๋๋ค. -
๋ฐ๋ชฌ์ด ์คํ ์ค์ธ์ง ํ์ธํฉ๋๋ค:
Terminal window sudo sotatek-proxy statuscurl http://127.0.0.1:3817/_proxy/healthz
-
์ ์ฅ์๋ฅผ ํด๋ก ํฉ๋๋ค:
Terminal window git clone https://github.com/sotatek-dev/sotatek-proxy.gitcd sotatek-proxy -
๋น๋ ๋ฐ ์ค์น:
Terminal window bash scripts/install-from-source.sh์คํฌ๋ฆฝํธ๋ ์ํคํ ์ฒ(amd64 ๋๋ arm64)๋ฅผ ๊ฐ์งํด
make build-linux-amd64/make build-linux-arm64๋ฅผ ์คํํ๊ณ , ๋ฐ์ด๋๋ฆฌ๋ฅผ/usr/local/bin/sotatek-proxy๋ก ๋ณต์ฌํ ๋ค ์์คํ ์ ์ญ systemd ์๋น์ค๋ฅผ ๋ฑ๋กํฉ๋๋ค(sudo์์ฒญ).์ ํ ํ๋๊ทธ:
ํ๋๊ทธ ์ค๋ช --no-service๋ฐ์ด๋๋ฆฌ๋ง ์ค์น โ systemd ๋ฑ๋ก ๊ฑด๋๋ --prefix DIR์ค์น ๋๋ ํฐ๋ฆฌ ์ฌ์ ์ -
๋ฐ๋ชฌ์ด ์คํ ์ค์ธ์ง ํ์ธํฉ๋๋ค:
Terminal window sudo sotatek-proxy statuscurl http://127.0.0.1:3817/_proxy/healthz
์์ฑ(attribution) ๋์ ๋ฐฉ์
์น์ ์ ๋ชฉ: โ์์ฑ(attribution) ๋์ ๋ฐฉ์โ๋ฐ๋ชฌ์ ๊ฐ ์์ฒญ์ ๋ณด๋ธ ํ๋ก์ธ์ค๋ฅผ ์๋ณํ๊ณ ๊ทธ ์์
๋๋ ํฐ๋ฆฌ๋ฅผ ์ฝ์ ๋ค, ํด๋น ์ฌ์ฉ์์ uid๋ก ๊ถํ์
๋ฎ์ถฐ git remote -v๋ฅผ ์คํํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ ์ฌ์ฉ์์ ์ ์ฅ์๋ฅผ ๊ทธ ์ฌ์ฉ์์ ๊ถํ์ผ๋ก๋ง ์ฝ์ผ๋ฉฐ,
์์น๋ ๊ถํ์ผ๋ก๋ ์ ๋ ์ฝ์ง ์์ต๋๋ค. ๊ฒฐ๊ณผ๋ X-Git-Remote ํค๋๋ก ์
์คํธ๋ฆผ์ ์ ๋ฌ๋ฉ๋๋ค.
์ด๋ฅผ ์ํด ์๋น์ค๋ CAP_SYS_PTRACE, CAP_SETUID, CAP_SETGID๋ฅผ ๋ณด์ ํ๋ฉฐ, root๊ฐ ์๋ ์์คํ
์ฌ์ฉ์๋ก ์๋๋ฐ์ค(NoNewPrivileges, ProtectSystem=strict, ProtectHome=read-only) ์์์ ์คํ๋ฉ๋๋ค.
ํ์ผ ์์น
์น์ ์ ๋ชฉ: โํ์ผ ์์นโ| ํญ๋ชฉ | ๊ฒฝ๋ก |
|---|---|
| ๋ฐ์ด๋๋ฆฌ | /usr/local/bin/sotatek-proxy |
| ์ค์ | /etc/sotatek-proxy/config.yaml (์ ํ) |
| ๋ก๊ทธ | /var/log/sotatek-proxy/sotatek-proxy.log |
| ์ ๋ | /etc/systemd/system/sotatek-proxy.service |
| ์คํ ๊ณ์ | ์์คํ
์ฌ์ฉ์ sotatek-proxy (nologin) |
์๋น์ค ๋ช ๋ น์ด
์น์ ์ ๋ชฉ: โ์๋น์ค ๋ช ๋ น์ดโsudo sotatek-proxy status # running / stoppedsudo sotatek-proxy start # ์ฆ์ ์์sudo sotatek-proxy stop # ์ค์ง (์ฌ๋ถํ
ํ์๋ ์ค์ง ์ํ ์ ์ง)sotatek-proxy logs # ์ต๊ทผ 100์ค ํ์ธsudo sotatek-proxy uninstall # ์๋น์ค, ์์คํ
์ฌ์ฉ์, ์ค์ , ๋ก๊ทธ ์ ๊ฑฐsystemd๋ฅผ ์ง์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค:
systemctl status sotatek-proxyjournalctl -u sotatek-proxy -fsystemd๊ฐ ์๋ ํ๊ฒฝ (์ปจํ ์ด๋, WSL, Alpine)
์น์ ์ ๋ชฉ: โsystemd๊ฐ ์๋ ํ๊ฒฝ (์ปจํ ์ด๋, WSL, Alpine)โsystemd๋ useradd๋ฅผ ์ฌ์ฉํ ์ ์๋ ํ๊ฒฝ์์๋ ์๋น์ค ์ค์น๊ฐ ์ง์๋์ง ์์ต๋๋ค. ๋์ ํ๋ก์๋ฅผ
ํฌ๊ทธ๋ผ์ด๋๋ก ์คํํ์ธ์ โ ์ฌ์ฉ์๋ณ ๊ฒฝ๋ก(~/.config/sotatek-proxy/config.yaml,
~/.local/state/sotatek-proxy/)๋ก ๋์ฒด๋๋ฉฐ root ๊ถํ์ด ํ์ ์์ต๋๋ค:
sotatek-proxy daemon๋ฌธ์ ํด๊ฒฐ
์น์ ์ ๋ชฉ: โ๋ฌธ์ ํด๊ฒฐโsotatek-proxy status๊ฐ command not found๋ฅผ ๋ฐํํ๋ฉด /usr/local/bin์ด PATH์ ์๋ ๊ฒ์
๋๋ค.
์ ธ rc ํ์ผ์ ์ถ๊ฐํ ๋ค ๋ค์ ๋ก๋ํ์ธ์:
case "$(basename "${SHELL:-bash}")" in zsh) RC="$HOME/.zshrc" ;; *) RC="$HOME/.bashrc" ;;esacLINE='export PATH="/usr/local/bin:$PATH"'grep -qxF "$LINE" "$RC" 2>/dev/null || echo "$LINE" >> "$RC"source "$RC"๋ค๋ฅธ ํ๋ก์ธ์ค โ ๋๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์์ ์์ ์ฌ์ฉ์๋ณ sotatek-proxy โ ๊ฐ 3817 ํฌํธ๋ฅผ ์ ์ ํ๊ณ ์์ต๋๋ค. ์์ ์๋ฅผ ํ์ธํ์ธ์:
sudo ss -tlnp 'sport = 3817'ํด๋น ์ฌ์ฉ์์ ์์ ์ ๋์ ์ค์งํ ๋ค ์์คํ ์๋น์ค๋ฅผ ์์ํฉ๋๋ค:
sudo -u <user> systemctl --user disable --now sotatek-proxysudo sotatek-proxy startํฌํธ๊ฐ ์ฌ์ฉ ์ค์ผ ๋ ๋ฐ๋ชฌ์ ํฌ๋์ ๋ฃจํ์ ๋น ์ง์ง ์์ต๋๋ค. ์ ์ ์ค์ธ ์ฌ์ฉ์๋ฅผ ๋ก๊ทธ์ ๋จ๊ธฐ๊ณ ์ข
๋ฃํ๋ฏ๋ก
journalctl -u sotatek-proxy์์ ๋๊ฐ ์ ์ ํ๋์ง ์ ํํ ํ์ธํ ์ ์์ต๋๋ค.
sotatek-proxy logssystemctl status sotatek-proxyjournalctl -u sotatek-proxy --since "10 min ago"sudo sotatek-proxy daemon # ๋๋ฒ๊น
์ฉ ํฌ๊ทธ๋ผ์ด๋ ์คํ์ ์คํธ๋ฆผ ์์ฒญ์ ์ ์ฅ์ ์ ๋ณด๊ฐ ์ค๋ฆฌ์ง ์๋๋ค๋ฉด, ์๋น์ค์ capabilities๊ฐ ์ ํจํ์ง ์์ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค (ํ๋๋๋ ์ปค๋, capabilities๊ฐ ์๋ ์ปจํ ์ด๋, MAC ์ ์ฑ ๋ฑ). ๋ฐ๋ชฌ์ ์์ ์ ์ด๋ฅผ ๋ก๊ทธ๋ก ๋จ๊น๋๋ค:
journalctl -u sotatek-proxy | grep -i "capability self-test"์์ฒญ ์์ฒด๋ ์ ์ ๋์ํ๋ฉฐ, ์์ฑ ํค๋๋ง ๋๋ฝ๋ฉ๋๋ค.
sudo sotatek-proxy uninstallsudo rm /usr/local/bin/sotatek-proxy