Manual Install from Source

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:

  1. Create directory structure (backup/, log/, configs/)
  2. Generate configuration template (configs/backup.env)
  3. Optionally configure AGE encryption (recipient setup)
  4. 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