Sign inSign up

ethraza/backops

By ethraza

Updated 11 months ago

Your Goto toolbox Linux image for Dev/Back Ops powered with lots of tools.

Image
Networking
Operating systems
Monitoring & observability
0

3.4K

ethraza/backops repository overview

BackOps is your Goto toolbox Linux image for Dev/Back Ops powered with lots of tools.

Some apps are commented out in Dockerfile, if you need them, you uncomment and build it.

Example .toolboxrc (https://github.com/flatcar-linux/toolbox)

TOOLBOX_DOCKER_IMAGE=ethraza/backops
TOOLBOX_USER=sailor
TOOLBOX_BIND="--bind=/:/media/root --bind=/usr:/media/root/usr --bind=/run:/media/root/run --bind=/sys/fs/bpf:/sys/fs/bpf --bind=/var/run/docker.sock:/var/run/docker.sock"

Example docker-compose-swarm.yml

version: '3.8'
services:
  bops:
    image: ethraza/backops:latest
    command: 
      - bash
      - -c
      - |
        /home/sailor/bin/gen-certs.sh
    build:
      context: /var/apps/backops/docker/backops
      dockerfile: Dockerfile
    container_name: back-ops
    hostname: bops.${HOSTNAME} # .{{.Node.Hostname}}
    privileged: true
    pid: "host"
    network_mode: "host" # https://docs.docker.com/compose/compose-file/compose-file-v3/#network_mode - usar docker-compose up -d
    deploy:
      mode: replicated
      replicas: 1
      placement:
        max_replicas_per_node: 1
        constraints:
        #   - "node.hostname == {{.Node.Hostname}}"
          - "node.role == manager"
        preferences:
          - spread: node.labels.admin
    # ports:
      # - target: 22
      #   published: 2222
      #   protocol: tcp
      #   mode: ingress
      # - target: 8090
      #   published: 8090
      #   protocol: tcp
      #   mode: ingress
    environment:
      # X_NODE_ID: '{{.Node.ID}}'
      # X_NODE_HOSTNAME: '{{.Node.Hostname}}'
      # X_NODE_PLATFORM: '{{.Node.Platform}}'
      # X_NODE_PLATFORM_ARCHITECTURE: '{{.Node.Platform.Architecture}}'
      # X_NODE_PLATFORM_OS: '{{.Node.Platform.OS}}'
      # X_SERVICE_ID: '{{.Service.ID}}'
      # X_SERVICE_NAMES: '{{.Service.Name}}'
      # X_SERVICE_LABELS: '{{.Service.Labels}}'
      # X_SERVICE_LABEL_STACK_NAMESPACE: '{{index .Service.Labels "com.docker.stack.namespace"}}'
      # X_SERVICE_LABEL_STACK_IMAGE: '{{index .Service.Labels "com.docker.stack.image"}}'
      # X_SERVICE_LABEL_CUSTOM: '{{index .Service.Labels "service.label"}}'
      # X_TASK_ID: '{{.Task.ID}}'
      # X_TASK_NAME: '{{.Task.Name}}'
      # X_TASK_SLOT: '{{.Task.Slot}}'
      # X_IP: '{{.Swarm.NodeAddr}}'
      # BOPS_CRON: "on"
      # BOPS_DIUN: "on"
      # BOPS_GITEA: "on"
      # BOPS_SWARMCRONJOB: "on"
      BOPS_MSMTP: "on"
      BOPS_SSH: "on"
      GOTTY_PORT: 8090
      # GOTTY_TLS_CRT: "/home/sailor/.lego/certificates/bops.${HOSTNAME}.crt" # {{.Node.Hostname}}.crt"
      # GOTTY_TLS_KEY: "/home/sailor/.lego/certificates/bops.${HOSTNAME}.key" # {{.Node.Hostname}}.key"
      GOTTY_CREDENTIAL: "admin:adminpass"
      SAILOR_PASSWORD: "sailor:sailorpass"
      REMOTE_HOST: "${HOSTNAME}" # "{{.Node.Hostname}}"
      REMOTE_USER: "core"
      REMOTE_PORT: 22
      DOCKER_HOST: "ssh://core@${HOSTNAME}" # {{.Node.Hostname}}"
    extra_hosts:
      - "flatcar:192.168.0.10"
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /var/lib/docker/volumes:/var/lib/docker/volumes:ro
      - /backops/docker/backops/etc/cron.d:/etc/cron.d
      - /backops/docker/backops/etc/ssh/ssh_config:/etc/ssh/ssh_config:ro
      - /backops/docker/backops/etc/ssh/sshd_config:/etc/ssh/sshd_config:ro
      - /backops/docker/backops/etc/msmtprc:/etc/msmtprc:ro
      - /backops/docker/backops/etc/vim/vimrc.local:/etc/vim/vimrc.local
      - /backops/docker/backops/etc/diun:/etc/diun
      - /backops/docker/backops/home/sailor:/home/sailor
      - /mnt:/mnt
      - /tmp:/tmp
    # networks:
    #   - default


# networks:
#   default:
#     external: true

Dockerfile:

FROM debian:stable-slim
LABEL maintainer="Allan Brazute <[email protected]>"
LABEL description="BackOps is your Goto toolbox Linux image for Dev/Back Ops powered with lots of tools."

EXPOSE 22 8090

ARG DEBIAN_FRONTEND=noninteractive

ENV HOSTNAME="bops"
ENV TERM=xterm
ENV USER=sailor
ENV GITEA_CUSTOM=/var/lib/gitea
ENV GITEA_WORK_DIR=/var/lib/gitea/

ENV REMOTE_HOST=flatcar
ENV REMOTE_USER=root
ENV REMOTE_PORT=22
ENV DOCKER_HOST="ssh://core@flatcar"

RUN groupadd -g 1000 sailor && \
	groupadd -g 500 core && \
	groupadd -g 472 grafana && \
	groupadd -g 233 docker

RUN apt-get -y update && apt-get -y install --no-install-recommends \
	2ping \
	7zip \
	ansible \
	apt-transport-https \
	aria2 \
	bash-completion \
	btop \
	busybox-static \
	busybox-syslogd \
	# bzip2 \
	ca-certificates \
	## closure-linter \
	# cron \
	curl \
	# dnstop \
	# dnstracer \
	# dnsutils \
	# docker.io \
	duc \
	ethtool \
	file \
	fuse \
	lftp \
	lsb-release \
	gettext \
	git \
	gnupg \
	htop \
	inotify-tools \
	iotop \
	iperf3 \
	iproute2 \
	iputils-ping \
	jnettop \
	jq \
	libatomic1 \
	libconfig-inifiles-perl \
	libdbd-mysql-perl \
	libdbi-perl \
	libpam-modules \
	libterm-readkey-perl \
	libxml2-utils \
	locales \
	logrotate \
	lz4 \
	mariadb-client \
	mbuffer \
	msmtp-mta \
	# mydumper \
	mosh \
	ncat \
	ncdu \
	ncurses-term \
	# net-tools \
	nmap \
	nodejs \
	# npm \
	openssh-server \
	openssl \
	otp \
	parallel \
	parted \
	p7zip-full \
	pbzip2 \
	php-cli \
	pigz \
	pv \
	# procps \
	# https://www.debian.org/mirror/push_server.html
	rsync \
	s6 \
	shellcheck \
	# software-properties-common \
	speedtest-cli \
	# sqlite \
	sudo \
	supervisor \
	tidy \
	tmux \
	# traceroute \
	tzdata \
	unzip \
	vim \
	vim-fugitive \
	vim-lastplace \
	vim-scripts \
	vim-syntastic \
	# vim-syntax-docker \
	vim-tabular \
	vim-voom \
	vim-youcompleteme \
	# wget \
	xfsprogs \
	# xz-utils \
	zarchive-tools \
	zip \
	zst \
	zstd && \
	/bin/busybox --install

RUN useradd -m -u 1000 -s /bin/bash -c "Stevedore" -g sailor sailor -G adm,backup,core,disk,docker,grafana,lp,mail,news,nogroup,operator,root,staff,sudo,tape,tty,users,www-data && \
	echo "sailor:sailor" | chpasswd && \
	echo "alias ls='ls -F --show-control-chars --color=auto'\\nalias l='ls -lAFrt'\\nalias la='ls -la'\\nalias ll='eza -lhaF'\\nalias lls='eza -lAFrt'\\nalias rm='rm -i'" | tee /etc/profile.d/aliases.sh && \
	chmod 755 /etc/profile.d/aliases.sh && \
	echo "PATH=\$PATH:/sbin:/go/bin/:/home/sailor/bin" | tee /etc/profile.d/add2path.sh && \
	chmod 755 /etc/profile.d/add2path.sh && \
	echo "source /etc/profile" | tee -a /root/.profile && \
	echo "source /etc/profile" | tee -a /home/sailor/.profile && \
	echo "Banner /etc/ssh/banner.txt" | tee -a /etc/ssh/sshd_config && \
	echo '\nif [ -d /etc/profile.d ]; then for i in /etc/profile.d/*.sh; do if [ -r "$i" ]; then . "$i"; fi; done; unset i; fi\n' | tee -a /etc/bash.bashrc && \
	sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \
	locale-gen && \
	LANG=en_US.UTF-8

# Go lang

RUN curl https://getcroc.schollz.com | bash

RUN wget https://github.com/coreos/container-linux-config-transpiler/releases/download/v0.9.0/ct-v0.9.0-x86_64-unknown-linux-gnu -O /usr/local/bin/ct && \
	chmod 755 /usr/local/bin/ct

RUN wget https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64 -O /usr/local/bin/ctop && \
	chmod 755 /usr/local/bin/ctop

RUN ACC="crazy-max"; APP="diun"; FLN="linux_amd64.tar.gz"; \
	DIR="--strip-components=1 ./"; DEST="/usr/local/bin"; \
	URL=$(curl -sL "https://api.github.com/repos/${ACC}/${APP}/releases/latest" | grep "browser_download_url" | grep "${FLN}" | cut -d '"' -f 4) && \
	curl -sL "${URL}" | tar -C ${DEST} -xzf - ${DIR}${APP} && \
	echo "${ACC}/${APP} installed."

RUN wget --no-check-certificate https://downloads.dockerslim.com/releases/latest/dist_linux.tar.gz -O - | tar --strip-components 1 -C /usr/local/bin/ -xzf -

RUN ACC="kopia"; APP="kopia"; FLN="linux-x64.tar.gz"; \
	DIR="--strip-components=1 "; DEST="/usr/local/bin"; \
	URL=$(curl -sL "https://api.github.com/repos/${ACC}/${APP}/releases/latest" | grep "browser_download_url" | grep "${FLN}" | cut -d '"' -f 4) && \
	APP=""; curl -sL "${URL}" | tar -C ${DEST} -xzf - ${DIR}${APP} && \
	echo "${ACC}/${APP} installed."

RUN curl -sSf https://moncho.github.io/dry/dryup.sh | sh && \
	chmod 755 /usr/local/bin/dry

RUN wget https://github.com/tianon/gosu/releases/latest/download/gosu-amd64 -O /usr/local/bin/gosu && \
	chmod 755 /usr/local/bin/gosu

RUN ACC="sorenisanerd"; APP="gotty"; FLN="linux_amd64.tar.gz"; \
	DIR="--strip-components=1 ./"; DEST="/usr/local/bin"; \
	URL=$(curl -sL "https://api.github.com/repos/${ACC}/${APP}/releases/latest" | grep "browser_download_url" | grep "${FLN}" | cut -d '"' -f 4) && \
	curl -sL "${URL}" | tar -C ${DEST} -xzf - ${DIR}${APP} && \
	echo "${ACC}/${APP} installed."
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /home/sailor/.gotty.key -out /home/sailor/.gotty.crt

# RUN curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash

RUN ACC="go-acme"; APP="lego"; FLN="linux_amd64.tar.gz"; \
	DIR=""; DEST="/usr/local/bin"; \
	URL=$(curl -sL "https://api.github.com/repos/${ACC}/${APP}/releases/latest" | grep "browser_download_url" | grep "${FLN}" | cut -d '"' -f 4) && \
	curl -sL "${URL}" | tar -C ${DEST} -xzf - ${DIR}${APP} && \
	echo "${ACC}/${APP} installed."

RUN wget https://github.com/tdewolff/minify/releases/latest/download/minify_linux_amd64.tar.gz -O - | tar -C /usr/local/bin/ -xzf - minify

RUN curl https://rclone.org/install.sh | bash

RUN ACC="msoap"; APP="shell2http"; FLN="linux_amd64.tar.gz"; \
	DIR=""; DEST="/usr/local/bin"; \
	URL=$(curl -sL "https://api.github.com/repos/${ACC}/${APP}/releases/latest" | grep "browser_download_url" | grep "${FLN}" | cut -d '"' -f 4) && \
	curl -sL "${URL}" | tar -C ${DEST} -xzf - ${DIR}${APP} && \
	echo "${ACC}/${APP} installed."

# RUN wget https://github.com/crazy-max/swarm-cronjob/releases/download/v1.9.0/swarm-cronjob_1.9.0_linux_x86_64.tar.gz -O - | tar -C /usr/local/bin/ -xzf - swarm-cronjob

RUN wget https://github.com/skx/sysbox/releases/latest/download/sysbox-linux-amd64 -O /usr/local/bin/sysbox && \
	chmod 755 /usr/local/bin/sysbox && \
	/usr/local/bin/sysbox bash-completion > /etc/bash_completion.d/sysbox

RUN ACC="adnanh"; APP="webhook"; FLN="linux-amd64.tar.gz"; \
	DIR="--strip-components=1 webhook-linux-amd64/"; DEST="/usr/local/bin"; \
	URL=$(curl -sL "https://api.github.com/repos/${ACC}/${APP}/releases/latest" | grep "browser_download_url" | grep "${FLN}" | cut -d '"' -f 4) && \
	curl -sL "${URL}" | tar -C ${DEST} -xzf - ${DIR}${APP} && \
	echo "${ACC}/${APP} installed."

RUN ACC="digitalocean"; APP="doctl"; FLN="linux-amd64.tar.gz"; \
	DIR=""; DEST="/usr/local/bin"; \
	URL=$(curl -sL "https://api.github.com/repos/${ACC}/${APP}/releases/latest" | grep "browser_download_url" | grep "${FLN}" | cut -d '"' -f 4) && \
	curl -sL "${URL}" | tar -C ${DEST} -xzf - ${DIR}${APP} && \
	echo "${ACC}/${APP} installed."

RUN ACC="peak"; APP="s5cmd"; FLN="Linux-64bit.tar.gz"; \
	DIR=""; DEST="/usr/local/bin"; \
	URL=$(curl -sL "https://api.github.com/repos/${ACC}/${APP}/releases/latest" | grep "browser_download_url" | grep "${FLN}" | cut -d '"' -f 4) && \
	curl -sL "${URL}" | tar -C ${DEST} -xzf - ${DIR}${APP} && \
	echo "${ACC}/${APP} installed."

RUN wget https://github.com/elisescu/tty-share/releases/latest/download/tty-share_linux-amd64 -O /usr/local/bin/tty-share && \
	chmod 755 /usr/local/bin/tty-share

RUN curl -sSL https://raw.githubusercontent.com/aandrew-me/tgpt/main/install | bash -s /usr/local/bin

RUN ACC="vultr"; APP="vultr-cli"; FLN="linux_amd64.tar.gz"; \
	DIR=""; DEST="/usr/local/bin"; \
	URL=$(curl -sL "https://api.github.com/repos/${ACC}/${APP}/releases/latest" | grep "browser_download_url" | grep "${FLN}" | cut -d '"' -f 4) && \
	curl -sL "${URL}" | tar -C ${DEST} -xzf - ${DIR}${APP} && \
	echo "${ACC}/${APP} installed."

RUN curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | DIR=/usr/local/bin bash

RUN wget https://github.com/derailed/k9s/releases/latest/download/k9s_linux_amd64.deb && apt install ./k9s_linux_amd64.deb && rm k9s_linux_amd64.deb

RUN curl -sL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

RUN ACC="jesseduffield"; APP="lazygit"; FLN="linux_x86_64.tar.gz"; \
	DIR=""; DEST="/usr/local/bin"; \
	URL=$(curl -sL "https://api.github.com/repos/${ACC}/${APP}/releases/latest" | grep "browser_download_url" | grep "${FLN}" | cut -d '"' -f 4) && \
	curl -sL "${URL}" | tar -C ${DEST} -xzf - ${DIR}${APP} && \
	echo "${ACC}/${APP} installed."

RUN curl -sL https://raw.githubusercontent.com/TNK-Studio/lazykube/main/scripts/install_update_linux.sh | sed '/^PROXY=/ s|=.*|=""|' | DIR=/usr/local/bin bash

RUN ACC="jorgerojas26"; APP="lazysql"; FLN="Linux_x86_64.tar.gz"; \
	DIR=""; DEST="/usr/local/bin"; \
	URL=$(curl -sL "https://api.github.com/repos/${ACC}/${APP}/releases/latest" | grep "browser_download_url" | grep "${FLN}" | cut -d '"' -f 4) && \
	curl -sL "${URL}" | tar -C ${DEST} -xzf - ${DIR}${APP} && \
	echo "${ACC}/${APP} installed."

# Other langs

RUN curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

RUN wget https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -O /tmp/awscliv2.zip && \
	unzip /tmp/awscliv2.zip -d /tmp/ && \
	/tmp/aws/install -i /usr/local/aws-cli -b /usr/local/bin && \
	rm -rf /tmp/aws /tmp/awscliv2.zip

# RUN wget https://github.com/borgbackup/borg/releases/latest/download/borg-linux64 -O /usr/local/bin/borg && \
# 	chmod 755 /usr/local/bin/borg

RUN wget https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker -O /etc/bash_completion.d/docker.sh

RUN wget https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 -O /usr/local/bin/docker-compose && \
	chmod 755 /usr/local/bin/docker-compose && \
	wget https://raw.githubusercontent.com/docker/compose/master/contrib/completion/bash/docker-compose -O /etc/bash_completion.d/docker-compose.sh

RUN wget https://raw.githubusercontent.com/flatcar-linux/init/flatcar-master/bin/flatcar-install -O /usr/local/bin/flatcar-install.sh && \
	chmod 755 /usr/local/bin/flatcar-install.sh

# Deb

RUN	install -m 0755 -d /etc/apt/keyrings && \
	curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && \
	chmod a+r /etc/apt/keyrings/docker.asc && \
	echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \
	wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null && \
	gpg --no-default-keyring --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg --fingerprint && \
	echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list && \
	# apt-get -y remove docker docker-engine docker.io containerd runc && \
	apt-get -y update && apt-get -y -f install --no-install-recommends \
	dialog \
	docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin \
	eza \
	kubecolor kubectx kubernetes-client kubernetes-split-yaml kubetail \
#	mysql-client \
#	mysql-shell \
	terraform \
	tini \
	&& \
	apt-get -y clean && \
	apt-get -y autoclean && \
	apt-get -y autoremove && \
	rm -rf /var/lib/apt/lists/*

RUN set -x; cd "$(mktemp -d)" && \
	OS="$(uname | tr '[:upper:]' '[:lower:]')" && \
	ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && \
	KREW="krew-${OS}_${ARCH}" && \
	curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" && \
	tar zxvf "${KREW}.tar.gz" && \
	./"${KREW}" install krew

RUN mkdir /etc/rsyncd.d && touch /etc/rsyncd.secrets
COPY ./etc/rsyncd.conf /etc/

COPY ./etc/ssh/banner.txt /etc/ssh/

COPY ./entrypoint.sh /
ENTRYPOINT ["/usr/bin/tini", "--", "/entrypoint.sh"]

entrypoint.sh:

#!/bin/bash
set -e

bops_log() {
	local type="$1"; shift
	printf '%s [%s] [Entrypoint]: %s\n' "$(date --rfc-3339=seconds)" "$type" "$*"
}
bops_note() {
	bops_log Note "$@"
}
bops_warn() {
	bops_log Warn "$@" >&2
}

# usage: docker_process_init_files [file [file [...]]]
#    ie: docker_process_init_files /always-initdb.d/*
# process initializer files, based on file extensions
docker_process_init_files() {
	echo
	local f
	for f; do
		case "$f" in
			*.sh)
				if [ -x "$f" ]; then
					bops_note "$0: running $f"
					"$f"
				else
					bops_note "$0: sourcing $f"
					. "$f"
				fi
				;;
			*.bin)
				if [ -x "$f" ]; then
					bops_note "$0: running $f"
					"$f"
				fi
				;;
            *.env)
				bops_note "$0: sourcing $f"
				. "$f"
				;;
			*)  bops_warn "$0: ignoring $f" ;;
		esac
		echo
	done
}

# For user convenience.
# Bind mount /docker-entrypoint.d directory with you own addon init .sh, .bin or .env files 
# to run before anything else here.
if [ -d "/docker-entrypoint.d" ]; then
    docker_process_init_files /docker-entrypoint.d/*
fi

if [ ! -z "${SAILOR_PASSWORD}" ]; then
    bops_note "$0: setting sailor password"
    echo "${SAILOR_PASSWORD}" | chpasswd
fi

if [ ! -z "${BOPS_CRON}" ]; then
    bops_note "$0: running crond"
    touch /etc/crontab /etc/cron.*/*
    flock -w 3 /tmp/bops_crond.lock -c "/usr/sbin/crond -b -L /dev/stdout"
fi

if [ ! -z "${BOPS_DIUN}" ]; then
    bops_note "$0: running diun"
    runuser -l sailor -c "/opt/bin/diun"
fi

if [ ! -z "${BOPS_GITEA}" ]; then
    bops_note "$0: running gitea"
    runuser -l sailor -c "/opt/bin/gitea web -c /etc/gitea/app.ini"
fi

if [ ! -z "${BOPS_MSMTP}" ]; then
    bops_note "$0: running msmtp"
	if [ ! -f "/usr/sbin/msmtpd" ]; then 
		ln -s /usr/bin/msmtp /usr/sbin/
		ln -s /usr/bin/msmtpd /usr/sbin/
	fi
    /usr/sbin/msmtpd &
fi

if [ ! -z "${BOPS_SSH}" ]; then
    bops_note "$0: running sshd"
    mkdir -p /run/sshd
    /usr/sbin/sshd -e &
fi

if [ ! -z "${BOPS_SWARMCRONJOB}" ]; then
    bops_note "$0: running swarm-cronjob"
    runuser -l sailor -c "/opt/bin/swarm-cronjob"
fi

if [ ! -z "${GOTTY_PORT}" ]; then
    if [ -z "${GOTTY_TLS_CRT}" ]; then
        bops_note "$0: running gotty"
        runuser -l sailor -c "/go/bin/gotty --port ${GOTTY_PORT} --credential ${GOTTY_CREDENTIAL} --permit-write --permit-arguments --reconnect /bin/bash --rcfile ~/.profile"
    else
        runuser -l sailor -c "/go/bin/gotty --port ${GOTTY_PORT} --credential ${GOTTY_CREDENTIAL} --permit-write --permit-arguments --reconnect --tls --tls-crt ${GOTTY_TLS_CRT} --tls-key ${GOTTY_TLS_KEY} /bin/bash --rcfile ~/.profile"
    fi
fi

cat /etc/ssh/banner.txt

if [ "$#" -eq 0 ]; then
    bops_note "$0: Default to keep-alive"
	exec sleep infinity
fi

bops_note "$0: Custom command: $*"
exec "$@"

Tag summary

Content type

Image

Digest

sha256:f5f3d305d

Size

1.1 GB

Last updated

11 months ago

docker pull ethraza/backops