Skip to content

JJGadgets/containers

 
 

Repository files navigation

Containers

A heavily opinionated collection of container images

GitHub Repo stars GitHub forks GitHub Workflow Status (with event)

OpenSSF Scorecard

Welcome to @JJGadgets' container images, if looking for a container start by browsing the Packages tab in GitHub for this repo.

Mission statement

The containers found in this repo have similar baseline goals to the ones found in onedr0p's containers repo.

However, the containers found in this repo are more opinionated for my (@JJGadgets) use.

For example, using distroless base images, or adding on packages/plugins that fit my use case (e.g. Caddy plugins, installing smbclient packages on NextCloud, changing out the web servers on frontend containers from Nginx to Caddy), etc.

I (@JJGadgets) make no guarantees that the containers found here will work for everyone else, as long as it works for me and fulfils my uses, I consider it "stable and tested". If you understand that, feel free to use them too!

Tag immutability

The containers built here do not use immutable tags, as least not in the more common way you have seen from linuxserver.io or Bitnami.

We do take a similar approach but instead of appending a -ls69 or -r420 prefix to the tag we instead insist on pinning to the sha256 digest of the image, while this is not as pretty it is just as functional in making the images immutable.

Container Immutable
registry.jjgadgets.tech/jjgadgets/gotosocial:rolling
registry.jjgadgets.tech/jjgadgets/gotosocial:0.12.2.1507
registry.jjgadgets.tech/jjgadgets/gotosocial:rolling@sha256:8053...
registry.jjgadgets.tech/jjgadgets/gotosocial:0.12.2.1507@sha256:8053...

If pinning an image to the sha256 digest, tools like Renovate support updating the container on a digest or application version change.

Passing arguments to a application

Some applications do not support defining configuration via environment variables and instead only allow certain config to be set in the command line arguments for the app. To circumvent this, for applications that have an entrypoint.sh read below.

  1. First read the Kubernetes docs on defining command and arguments for a Container.

  2. Look up the documentation for the application and find a argument you would like to set.

  3. Set the argument in the args section, be sure to include entrypoint.sh as the first arg and any application specific arguments thereafter.

    args:
      - /entrypoint.sh
      - --port
      - "8080"

Configuration volume

For applications that need to have persistent configuration data the config volume is hardcoded to /config inside the container. This is not able to be changed in most cases.

Available Images

Each Image will be built with a rolling tag, along with tags specific to it's version. Available Images Below

Container Channel Image Latest Tags
bird stable registry.jjgadgets.tech/jjgadgets/bird 2.15.1-r0 rolling
davical stable registry.jjgadgets.tech/jjgadgets/davical 1.1.12-2 rolling
elk stable registry.jjgadgets.tech/jjgadgets/elk 0.15.1 rolling
findmydeviceserver stable registry.jjgadgets.tech/jjgadgets/findmydeviceserver rolling v0.7.0
findmydeviceserver-master master registry.jjgadgets.tech/jjgadgets/findmydeviceserver-master master rolling
goatcounter stable registry.jjgadgets.tech/jjgadgets/goatcounter 2.5.0 rolling
gotosocial stable registry.jjgadgets.tech/jjgadgets/gotosocial 0.17.3 rolling
gotosocial-rc rc registry.jjgadgets.tech/jjgadgets/gotosocial-rc 0.17.0-rc5 rolling
jjgadgets-error-page-ingress-nginx stable registry.jjgadgets.tech/jjgadgets/jjgadgets-error-page-ingress-nginx 1.0.0-caddy-2.7.5 rolling
joplin stable registry.jjgadgets.tech/jjgadgets/joplin 2.13.5-beta rolling
k8s-crd-extractor stable registry.jjgadgets.tech/jjgadgets/k8s-crd-extractor 20241123 rolling
mlc-llm stable registry.jjgadgets.tech/jjgadgets/mlc-llm 0.17.2 rolling
mlc-llm-cuda cuda registry.jjgadgets.tech/jjgadgets/mlc-llm-cuda 0.17.2 rolling
mlc-llm-cuda-nightly cuda-nightly registry.jjgadgets.tech/jjgadgets/mlc-llm-cuda-nightly 2024.11.23 rolling
mlc-llm-nightly nightly registry.jjgadgets.tech/jjgadgets/mlc-llm-nightly 2024.11.23 rolling
phanpy stable registry.jjgadgets.tech/jjgadgets/phanpy 2024.11.22.8f048af rolling
radicale stable registry.jjgadgets.tech/jjgadgets/radicale 3.3.0 rolling
radicale-beta beta registry.jjgadgets.tech/jjgadgets/radicale-beta 3.2.2 rolling
rclone stable registry.jjgadgets.tech/jjgadgets/rclone 1.68.2 rolling
redbot-distroless stable registry.jjgadgets.tech/jjgadgets/redbot-distroless 3.5.13 rolling
samba-debian stable registry.jjgadgets.tech/jjgadgets/samba-debian 4.17.12 rolling

Automated tags

Here's an example of how tags are created in the GitHub workflows, be careful with metadata.json as it does affect the outcome of how the tags will be created when the application is built.

Application Channel Stable Base Generated Tag
ubuntu focal true true ubuntu:focal-rolling
ubuntu focal true true ubuntu:focal-19880312
alpine 3.16 true true alpine:rolling
alpine 3.16 true true alpine:3.16.0
gotosocial develop false false gotosocial-develop:0.12.2.1538
gotosocial develop false false gotosocial-develop:rolling
gotosocial main true false gotosocial:0.12.2.1507
gotosocial main true false gotosocial:rolling

Deprecations

Containers here can be deprecated at any point, this could be for any reason described below.

  1. The upstream application is no longer actively developed
  2. The upstream application has an official upstream container that follows closely to the mission statement described here
  3. The upstream application has been replaced with a better alternative
  4. The maintenance burden of keeping the container here is too bothersome

Note: Deprecated containers in this repo may be removed at any time. Hopefully procrastination will keep the deprecated containers long enough.

Credits

This repo's main pipeline code (found in .github) was taken from onedr0p's containers repo. Full attributions can be found in the .github/CREDITS.md.