Building ProxSave from source gives you the latest development version and allows customization (patches, local builds, and testing changes before deploying).
Prerequisites
- Go 1.25+ (recommended: go1.25.5): required for building (see go.mod)
- make: build automation (recommended)
- git: clone the repository
Optional (feature-dependent):
- rclone: required for cloud storage features
- Compression binaries: some formats use external tools (xz, zstd, pigz, lzma)
Installing Go on Debian/Proxmox
# Remove old Go if present
sudo rm -rf /usr/local/go
# Download and install Go (example: go1.25.5 for amd64)
GO_VERSION="1.25.5"
ARCH="amd64" # or arm64
curl -fsSLO "https://go.dev/dl/go${GO_VERSION}.linux-${ARCH}.tar.gz"
sudo tar -C /usr/local -xzf "go${GO_VERSION}.linux-${ARCH}.tar.gz"
# Add to PATH
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
# Verify
go version
Building from Source
Build as a regular user. Only the installer and backup runs require root privileges.
# Clone repository (example path)
sudo mkdir -p /opt/proxsave
sudo chown -R "$USER":"$USER" /opt/proxsave
cd /opt/proxsave
git clone https://github.com/tis24dev/proxsave.git .
# Download dependencies
make deps
# Build binary
make build
# Verify
./build/proxsave --version
The binary is created at ./build/proxsave.
Running the Installer
After building, run the installer wizard (TUI by default):
cd /opt/proxsave
sudo ./build/proxsave --install
The installer will:
- Create directory structure (backup/, log/, configs/)
- Generate configuration template (configs/backup.env)
- Optionally configure AGE encryption (recipient setup)
- Optionally configure a daily cron schedule
If TUI rendering is problematic (some SSH terminals), use CLI mode:
cd /opt/proxsave
sudo ./build/proxsave --install --cli
Build Options
# Clean build (remove previous artifacts)
make clean && make build
# Run tests
make test
# Run tests with coverage
make test-coverage
Directory Structure After Install
/opt/proxsave/
├── build/
│ └── proxsave # Binary
├── backup/ # Backup storage
├── log/ # Log files
├── configs/
│ └── backup.env # Configuration
└── identity/
├── .server_identity # Server ID
└── age/ # When encryption is configured
└── recipient.txt # AGE recipient(s)
Updating from Source
cd /opt/proxsave
git pull
make clean && make deps && make build
./build/proxsave --version
Troubleshooting Build Issues
Error: go: cannot find main module
# Ensure you're in project root
cd /opt/proxsave
ls go.mod # Should exist
Error: package xxx not found
# Download dependencies
make deps
make build
Error: permission denied
# Fix build directory permissions
sudo chmod 755 /opt/proxsave/build
make clean && make build