Skip to main content

A simple Debian repository using S3

sthreepo (read ess-three-p-oh) is an extremely simple (and far FAR from complete) Debian repository manager using AWS S3 for storage and AWS KMS for signature keys.

Signature Keys

Signature keys are managed in AWS KMS, using the pgpkms library. Read its documentation to better understand how to create and manage those keys.

Creating a Repository

A repository can be created by simply invoking sthreepo with a bucket name, default index and (optional) origin and label:

$ python3 -m sthreepo \
  --bucket=my-repo-bucket \
  --default-index=buster:main \
  --origin=Juit \
  --label=Juit

Adding Packages

Once the repository is created (and its state stored in S3) adding packages should be as easy as calling:

$ python3 -m sthreepo -b=my-repo-bucket ./my-package.deb

HTTPS and Authentication

As with any S3-based website, HTTPs and authentication support can be added using CloudFront.

The terraform/ directory contains a basic Terraform setup to create such an environment.

Further Help

Look at the command line help for more information:

$ ./bin/sthreepo -h

Usage: ./bin/sthreepo [options] <package.deb>

Options:
  -b, --bucket=<name>   The AWS bucket name of the repository.
  -c, --create-index=distribution:component
                        Create a new index in the repository.
  -d, --default-index=distribution:component
                        Set the default index for the repository.
  -i, --index=distribution:component
                        Use the specified index for the new package.
  -k, --key=<id>        The ID, ARN, or alias of the key to use.
  -l, --label=<label>   Set the label for the repository.
  -n, --name=<name>     The name of the repository (default: "repository").
  -o, --origin=<origin> Set the origin for the repository.
  -v, --verbose         Be more verbose.
      --invalidate-cloudfront=<distribution-id>
                        Invalidate all CloudFront caches for the distribution
                        with the specified ID.

Environment Variables:
  STHREEPO_BUCKET         The AWS bucket name of the repository.
  STHREEPO_KEY            The default ID, ARN or alias of the KMS key to use.
  STHREEPO_CLOUDFRONT_ID  The CloudFront Distribution ID for invalidating caches.

Release files for sthreepo 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sthreepo 0.0.3
File Size Uploaded
sthreepo-0.0.3.tar.gz 20.3 kB Details

Release files / sthreepo-0.0.3.tar.gz

Download URL sthreepo-0.0.3.tar.gz
Size 20.3 kB
Tags Source
SHA-256 checksum
How to use checksums
844f2823b3bcd05bda7231403ed6fd06f803f7df7be3a6f40c1d2e90bd094b15
BLAKE2b-256 checksum
How to use checksums
96bee12a0cc8d583add9a6630448652f7089b544414df5fd48be75aa96bf11ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 colorama/0.4.4 importlib-metadata/4.6.4 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.25.1 rfc3986/1.5.0 tqdm/4.57.0 urllib3/1.26.5 CPython/3.10.4

Release history Release notifications | RSS feed

This release

0.0.3 This release

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page