Skip to content

CloudVisionApps/RepoForge

Repository files navigation

RepoForge

Small Go service that stores uploaded artifacts on disk, tracks metadata in SQLite, exposes a REST API and a web UI, and rebuilds APT and RPM repository indexes so clients can consume repositories over plain HTTP.

Screenshots

Web dashboard (repositories, uploads, health, bearer token):

Repoforge web UI

Version

The current release is 0.5.0. See CHANGELOG.md for release history. This project uses Semantic Versioning and Keep a Changelog conventions.

Documentation

  • Configuration — environment variables, systemd, /etc/repoforge.env
  • Development — build from source, local FPM packages, repository layout on disk
  • REST API examplescurl for /v1 and install-repo tooling

Install from GitHub (Linux)

Published .deb and .rpm files attach to the latest GitHub Release when a v* tag is built (see .github/workflows/package-release.yml).

One-liner (needs curl, python3, and sudo unless you are already root; picks .deb on Debian/Ubuntu or .rpm on Fedora/RHEL-like systems, for amd64 or aarch64):

curl -fsSL https://raw.githubusercontent.com/CloudVisionApps/RepoForge/main/scripts/install-latest-linux.sh | sudo bash

Use another GitHub repo (fork or mirror) by setting REPOFORGE_GITHUB_REPO before running:

curl -fsSL https://raw.githubusercontent.com/CloudVisionApps/RepoForge/main/scripts/install-latest-linux.sh | sudo env REPOFORGE_GITHUB_REPO=you/YourFork bash

The script lives in the repo as scripts/install-latest-linux.sh. Prefer downloading it, reviewing it, then executing:

curl -fsSL -o install-repoforge.sh https://raw.githubusercontent.com/CloudVisionApps/RepoForge/main/scripts/install-latest-linux.sh
less install-repoforge.sh
sudo bash install-repoforge.sh

Client-facing HTTP (static tree)

Published files are served from:

GET /repo/{slug}/{path}

Examples after uploading hello_amd64.deb to deb-demo:

curl -sS localhost:8080/repo/deb-demo/dists/noble/main/binary-amd64/Packages
curl -sS localhost:8080/repo/deb-demo/pool/h/hello/hello_1.0_amd64.deb

APT (deb repo)

/etc/apt/sources.list.d/repoforge.list:

deb [trusted=yes] http://YOUR_HOST:8080/repo/deb-demo noble main

Use trusted=yes only if you are not signing Release (this service does not sign in v1).

DNF / YUM (rpm repo)

/etc/yum.repos.d/repoforge.repo:

[repoforge]
name=repoforge
baseurl=http://YOUR_HOST:8080/repo/rpm-demo/rpms
enabled=1
gpgcheck=0

createrepo_c writes repodata/ next to the .rpm files under rpms/, so the baseurl should point at that directory.

For local development on macOS and RPM indexing, see Development.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors