- Bump version 0.1.0 -> 0.3.0 - Add systemd service unit (config/s5p.service) and install-service Makefile target - Add CLI argument parsing tests (tests/test_cli.py, 27 tests) - Expand protocol tests with SOCKS5/4/HTTP handshake, error, and auth coverage (tests/test_proto.py, 30 tests) - Add full API reference to docs/USAGE.md with response schemas for all GET/POST endpoints - Update INSTALL.md, CHEATSHEET.md with systemd section - Update ROADMAP.md, TASKS.md for v0.3.0
1.6 KiB
1.6 KiB
s5p -- Installation
Prerequisites
- Python >= 3.11
- pip
- Tor (optional, for Tor-based chains)
- podman + podman-compose (optional, for container deployment)
Local Install
cd ~/git/s5p
python -m venv .venv
source .venv/bin/activate
pip install -e .
Verify
s5p --version
which s5p
Symlink (alternative)
ln -sf ~/git/s5p/.venv/bin/s5p ~/.local/bin/s5p
Container Install
cd ~/git/s5p
cp config/example.yaml config/s5p.yaml # edit with your proxies
make build # podman-compose build
make up # podman-compose up -d
The Alpine-based image (~59MB) contains Python, PyYAML, and baked-in source. Config is mounted at runtime. The compose.yaml volume mount overrides source for local dev.
Systemd Service
Install s5p as a systemd service for automatic startup and restart.
# Install the binary
cd ~/git/s5p
source .venv/bin/activate
pip install -e .
# Copy config
sudo mkdir -p /etc/s5p
sudo cp config/example.yaml /etc/s5p/s5p.yaml
sudo nano /etc/s5p/s5p.yaml # edit with your settings
# Install the unit (copies service file + daemon-reload)
make install-service
# Enable and start
sudo systemctl enable --now s5p
# Check status
sudo systemctl status s5p
journalctl -u s5p -f
The service unit expects:
- Binary at
/usr/local/bin/s5p - Config at
/etc/s5p/s5p.yaml - Restarts on failure with 5-second delay
Install Tor (optional)
sudo apt install tor
sudo systemctl enable --now tor
# Verify Tor SOCKS5 port
ss -tlnp | grep 9050