A debian repository server with support for signing packages, uploading to S3, and more
Go to file
Tyler b79d1de9bc
continuous-integration/drone/push Build is failing Details
Update drone.yml
2020-06-14 04:33:48 -04:00
deb Cleanup, fixes, cloud fs support 2020-06-14 04:29:16 -04:00
packaging Cleanup, fixes, cloud fs support 2020-06-14 04:29:16 -04:00
samples Initial commit 2017-06-11 02:14:29 -04:00
.drone.yml Update drone.yml 2020-06-14 04:33:48 -04:00
.gitignore Caching of packages, new config format 2017-06-11 20:41:49 -04:00
LICENSE.txt Initial commit 2017-06-11 02:14:29 -04:00
README.md Add b uild status, up version 2020-06-14 04:31:58 -04:00
apt.go Cleanup, fixes, cloud fs support 2020-06-14 04:29:16 -04:00
config.go Cleanup, fixes, cloud fs support 2020-06-14 04:29:16 -04:00
glide.lock Try a different project structure 2018-10-14 04:17:04 -04:00
glide.yaml Try a different project structure 2018-10-14 04:17:04 -04:00
go.mod Cleanup, fixes, cloud fs support 2020-06-14 04:29:16 -04:00
go.sum Add b uild status, up version 2020-06-14 04:31:58 -04:00
http.go Cleanup, fixes, cloud fs support 2020-06-14 04:29:16 -04:00
packages.go Cleanup, fixes, cloud fs support 2020-06-14 04:29:16 -04:00
sample_conf.ini Build proper packages 2017-09-11 00:00:18 -04:00
server.go Add b uild status, up version 2020-06-14 04:31:58 -04:00

README.md

Build Status

deb-simple (get it? dead simple.. deb simple...)

A lightweight, bare-bones apt repository server.

Purpose

This project came from a need I had to be able to serve up already created deb packages without a lot of fuss. Most of the existing solutions I found were either geared at mirroring existing "official" repos or for providing your packages to the public. My need was just something that I could use internally to install already built deb packages via apt-get. I didn't care about change files, signed packages, etc. Since this was to be used in a CI pipeline it had to support remote uploads and be able to update the package list after each upload.

What it does:

  • Supports multiple versions of packages
  • Supports multi-arch repos (i386, amd64, custom, etc)
  • Supports uploading via HTTP/HTTPS POST requests
  • Supports removing packages via HTTP/HTTPS DELETE requests
  • Does NOT require a changes file
  • Supports uploads from various locations without corrupting the repo

What it doesn't do:

  • Create actual packages
  • Mirror existing repos

Usage:

Install using go get. Fill out the conf.json file with the values you want, it should be pretty self-explanatory, then fire it up!

Once it is running POST a file to the /upload endpoint:

curl -XPOST 'http://localhost:9090/upload?arch=amd64&distro=stable' -F "file=@myapp.deb"

Or delete an existing file:

curl -XDELETE 'http://localhost:9090/delete' -d '{"filename":"myapp.deb","distroName":"stable","arch":"amd64"}'

To use your new repo you will have to add a line like this to your sources.list file:

deb http://my-hostname:listenPort/ stable main

my-hostname should be the actual hostname/IP where you are running deb-simple and listenPort will be whatever you set in the config. By default deb-simple puts everything into the stable distro and main section. If you have enabled SSL you will want to swap http for https.

#License:

MIT so go crazy. Would appreciate PRs for anything cool you add though :)