Skip to content

thekoma/batbelt

Repository files navigation

Readme

Badges

  • GitHub last commit
  • Docker Image Version (alias latest)
  • Docker Image Version (alias latest)
  • GitHub Workflow Status (with event)

Registries:

  • GHCR: ghcr.io/thekoma/batbelt

Note that the images are refreshed weekly (tag latest). If you want to keep a version use the sha pointer or the weekly generated tag. Also note that after a couple mount the image could be delete/rotated.

Preface

This is a stupid image that I use to test environments.

This image has batman superpowers. (That would be none)

I've stolen the idea from the netshoot project and added some more tools (see Dockerfile for the list).

Info

This container runs two processes:

  • A web server serving /www/ with python listening on port 8081
  • A Web Terminal Emulator listening on port 8080 via ttyd.

Run in podman

You can run it with:

podman run -dt --rm  \
  -e PASSWORD=password \
  -e ADMIN=admin \
  -p 8080:8080 \
  -p 8081:8081 \
  -v /adirectorytoshare:/www/public \
  docker.io/koma85/batbelt:latest

Run in Openshift/K8S basic deploy

git clone https://github.com/thekoma/batbelt
oc apply -f https://raw.githubusercontent.com/thekoma/batbelt/master/deploy/manifest-aio/aio.yaml -n <yournamespace>

Helm deploy

# Extract the repository
git clone https://github.com/thekoma/batbelt
# Extract the values.yaml
helm show values batbelt/deploy/helm/batbelt > alfredtakethewheel.yaml
# Edit the values (the ingress part at least unless you are Bruce Waine)

# Install the batbelt
helm upgrade batbelt batbelt/deploy/helm/batbelt  --values alfredtakethewheel.yaml --namespace batbelt

Example values:

replicaCount: 1

image:
  repository: docker.io/koma85/batbelt
  pullPolicy: Always
  tag: "latest"

imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""

serviceAccount:
  create: true
  annotations: {}
  name: "alfred"

podAnnotations: {}

podSecurityContext:
  fsGroup: 0

securityContext:
  capabilities:
    add:
    - ALL
  readOnlyRootFilesystem: false
  runAsNonRoot: false
  runAsUser: 0
  runAsGroup: 0

# Link Service account to privileged SCC
openshift:
  privileged: true

effimeralvolume: true

service:
  service_type: ClusterIP
  terminal:
    port: 8080
    user: admin
    password: iambrucewayne
  webserver:
    port: 8081

routes: "Use ingresses we are in 2021"

ingress:
  enabled: true
  annotations:
    route.openshift.io/termination: "edge"
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
  hosts:
    - host: "batweb.wayneenterprises.com"
      name: webserver
      path: /
      pathType: Prefix
      backend:
        service:
          name: webserver
    - host: "batbelt.wayneenterprises.com"
      name: terminal
      path: /
      pathType: Prefix
      backend:
        service:
          name: terminal


resources: 
  limits:
    cpu: 500m
    memory: 256Mi
  requests:
    cpu: 100m
    memory: 128Mi

nodeSelector: {}
  # kubernetes.io/hostname: master0

tolerations:
  - key: "batcave"
    operator: "Exists"
    effect: "NoSchedule"
  - key: "batmobile"
    operator: "Exists"
    effect: "NoSchedule"

affinity:
  requiredDuringSchedulingIgnoredDuringExecution:
    nodeSelectorTerms:
    - matchExpressions:
      - key: gotham
        operator: In
        values:
        - night
        - gordon

Note

This image is HUGE.

It contains hundred of tools.

Is not intended to be light is intended to be complete as I work with Openshift kubernetes and normally containers are rootless, so no package will be added at runtime.

Screenshots

Login

Login

Split Screen

split

Installed packages

  • oh-my-zsh
  • oh-my-tmux
  • ctop
  • calicoctl
  • termshark
  • oc
  • kubectl
  • k9s
  • ansible
  • zsh
  • yq
  • wget
  • websocat
  • vim
  • util-linux
  • ttyd
  • tshark
  • tmux
  • tmate
  • tcptraceroute
  • tcpdump
  • strace
  • socat
  • scapy
  • ripgrep
  • py3-setuptools
  • py3-pip
  • pv
  • postgresql-client
  • podman-remote
  • podman-bash-completion
  • podman
  • pgcli
  • openssl
  • nmap-nping
  • nmap
  • ngrep
  • nftables
  • netcat-openbsd
  • net-tools
  • net-snmp-tools
  • ncdu
  • nagios-plugins
  • mtr
  • mosh
  • mariadb-client
  • liboping
  • libc6-compat
  • jq
  • ipvsadm
  • iputils
  • iptraf-ng
  • iptables
  • ipset
  • iproute2
  • iperf3
  • iperf
  • ioping
  • iftop
  • htop
  • git
  • fzf-zsh-completion
  • fzf
  • fping
  • fio
  • file
  • ethtool
  • drill
  • dhcping
  • curl
  • cri-tools
  • coreutils
  • conntrack-tools
  • ceph-utils
  • busybox-extras
  • buildah
  • bridge-utils
  • bird
  • bind-tools
  • bat
  • bash-completion
  • bash
  • apache2-utils
  • zsh-vcs

Note:

I've removed Gitlab Docker.io and other repositoryies. Instead I moved fully on ghcr.io I think is less work. Feel free to mirror it yourself.