Automated COPR builds of Pushpin realtime reverse proxy from GitHub releases.
Pushpin is a reverse proxy server written in Rust/C++ that makes it easy to implement WebSocket, HTTP streaming, and HTTP long-polling services. It's maintained by Fastly.
# Replace YOUR_USER with the actual COPR username
sudo dnf copr enable YOUR_USER/pushpin
sudo dnf install pushpin# Build locally
cd .copr
make srpm
# Install the generated SRPM
sudo dnf builddep *.src.rpm
rpmbuild --rebuild *.src.rpm
sudo dnf install ~/rpmbuild/RPMS/x86_64/pushpin-*.rpm- Edit the main configuration file:
sudo nano /etc/pushpin/pushpin.conf- Configure your backend routes:
sudo nano /etc/pushpin/routesExample routes file:
# Route all requests to a backend server
* http://localhost:8080
# Route specific paths to different backends
/api http://api-server:3000
/websocket ws://websocket-server:8081
# Start Pushpin
sudo systemctl start pushpin
# Enable on boot
sudo systemctl enable pushpin
# Check status
sudo systemctl status pushpin
# View logs
sudo journalctl -u pushpin -f
# Restart service (configuration changes)
sudo systemctl restart pushpin
# Attempt reload (may not be supported)
sudo systemctl reload pushpin/etc/pushpin/pushpin.conf- Main configuration file/etc/pushpin/routes- Backend routing rules/etc/pushpin/runner/- Runner configuration/var/lib/pushpin/- Runtime data directory/var/log/pushpin/- Log files
- 7999 - HTTP/WebSocket client connections
- 5560 - ZMQ PULL for receiving messages
- 5561 - HTTP port for receiving messages
- 5562 - ZMQ SUB for receiving messages
- 5563 - ZMQ REP for receiving commands
This RPM package includes:
- All Pushpin binaries (pushpin, pushpin-proxy, pushpin-handler, etc.)
- Systemd service integration with automatic restart on failure
- Security hardening through systemd directives
- Dedicated
pushpinuser for privilege separation - Automatic release number incrementation for rebuilds
sudo systemctl restart pushpinThis repository uses GitHub releases (not git commits) for builds. The COPR Makefile:
- Fetches the latest release from GitHub API
- Downloads the official release tarball
- Builds with Rust and Qt toolchains
- Packages into RPM with systemd integration
- rust & cargo
- gcc-c++
- qt5-qtbase-devel
- zeromq-devel
- openssl-devel
- boost-devel
# Check for port conflicts
sudo ss -tlnp | grep -E '7999|556[0-3]'
# Verify configuration
pushpin --config=/etc/pushpin/pushpin.conf --check
# Check permissions
ls -la /var/lib/pushpin /var/log/pushpin# Test backend connectivity
curl -v http://localhost:7999/
# Monitor logs
sudo journalctl -u pushpin -fBuilds are triggered automatically when:
- New releases are published on GitHub
- Manual rebuild is triggered in COPR
The build system automatically increments release numbers for same-version rebuilds.
Pushpin is licensed under the Apache-2.0 License. See the upstream LICENSE file.
To contribute to the packaging:
- Fork this repository
- Make your changes
- Test locally with
make srpmin.copr/ - Submit a pull request
For Pushpin itself, contribute upstream at https://github.com/fastly/pushpin