🗃️ Committing everything that changed 🗃️
							
								
								
									
										137
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						@@ -1,28 +1,33 @@
 | 
			
		||||
FROM casjaysdevdocker/python2:latest AS build
 | 
			
		||||
 | 
			
		||||
ARG PORTS="80 9090"
 | 
			
		||||
ARG ALPINE_VERSION="v3.16"
 | 
			
		||||
 | 
			
		||||
ENV CFLAGS="-static"
 | 
			
		||||
ARG DEFAULT_DATA_DIR="/usr/local/share/template-files/data" \
 | 
			
		||||
  DEFAULT_CONF_DIR="/usr/local/share/template-files/config" \
 | 
			
		||||
  DEFAULT_TEMPLATE_DIR="/usr/local/share/template-files/defaults"
 | 
			
		||||
 | 
			
		||||
ARG PACK_LIST="bash autoconf musl-dev automake gettext git libtool \
 | 
			
		||||
  openssl openssl-dev linux-headers rrdtool ffmpeg-dev geoip-dev php8-cgi"
 | 
			
		||||
 | 
			
		||||
ENV LANG=en_US.utf8 \
 | 
			
		||||
  ENV=ENV=~/.bashrc \
 | 
			
		||||
  TZ="America/New_York" \
 | 
			
		||||
  SHELL="/bin/sh" \
 | 
			
		||||
  TERM="xterm-256color" \
 | 
			
		||||
  TIMEZONE="${TZ:-$TIMEZONE}" \
 | 
			
		||||
  HOSTNAME="casjaysdev-cherokee" \
 | 
			
		||||
  CFLAGS="-static"
 | 
			
		||||
 | 
			
		||||
RUN set -ex; \
 | 
			
		||||
  rm -Rf "/etc/apk/repositories"; \
 | 
			
		||||
  mkdir -p "${DEFAULT_DATA_DIR}" "${DEFAULT_CONF_DIR}" "${DEFAULT_TEMPLATE_DIR}"; \
 | 
			
		||||
  echo "http://dl-cdn.alpinelinux.org/alpine/${ALPINE_VERSION}/main" >>"/etc/apk/repositories"; \
 | 
			
		||||
  echo "http://dl-cdn.alpinelinux.org/alpine/${ALPINE_VERSION}/community" >>"/etc/apk/repositories"; \
 | 
			
		||||
  if [ "${ALPINE_VERSION}" = "edge" ]; then echo "http://dl-cdn.alpinelinux.org/alpine/${ALPINE_VERSION}/testing" >>"/etc/apk/repositories" ; fi ; \
 | 
			
		||||
  apk update --update-cache && apk add --no-cache ${PACK_LIST} && \
 | 
			
		||||
  echo
 | 
			
		||||
 | 
			
		||||
WORKDIR /tmp/build
 | 
			
		||||
 | 
			
		||||
RUN apk -U upgrade && \
 | 
			
		||||
  apk add --no-cache \
 | 
			
		||||
  alpine-sdk \
 | 
			
		||||
  autoconf \
 | 
			
		||||
  musl-dev \
 | 
			
		||||
  automake \
 | 
			
		||||
  gettext \
 | 
			
		||||
  git \
 | 
			
		||||
  libtool \
 | 
			
		||||
  openssl \
 | 
			
		||||
  openssl-dev \
 | 
			
		||||
  linux-headers \
 | 
			
		||||
  rrdtool \
 | 
			
		||||
  ffmpeg-dev \
 | 
			
		||||
  geoip-dev \
 | 
			
		||||
  php8-cgi
 | 
			
		||||
 | 
			
		||||
RUN mkdir -p "/usr/local/share/template-files/config/defaults/cherokee" "/buildroot" && \
 | 
			
		||||
  cd /tmp/build && \
 | 
			
		||||
  git clone https://github.com/cherokee/webserver.git . && \
 | 
			
		||||
@@ -46,47 +51,79 @@ RUN mkdir -p "/usr/local/share/template-files/config/defaults/cherokee" "/buildr
 | 
			
		||||
  ln -sf /usr/local/share/cherokee/bin/* /usr/local/bin/ && \
 | 
			
		||||
  ln -sf /usr/local/share/cherokee/sbin/* /usr/local/bin/ && \
 | 
			
		||||
  cp -Rf "/etc/cherokee/." "/usr/local/share/template-files/config/defaults/cherokee/" && \
 | 
			
		||||
  cp -Rf "/usr/local/." "/buildroot/" && \
 | 
			
		||||
  rm -Rf /var/cache/apk/* /tmp/* /var/tmp/* /tmp/build /usr/src/*
 | 
			
		||||
  cp -Rf "/usr/local/." "/buildroot/"
 | 
			
		||||
 | 
			
		||||
FROM casjaysdevdocker/php:latest AS source
 | 
			
		||||
 | 
			
		||||
RUN apk add --no-cache geoip rrdtool openssl && \
 | 
			
		||||
  rm -Rf /var/cache/apk/* /tmp/* /var/tmp/*
 | 
			
		||||
FROM casjaysdevdocker/php:latest AS php
 | 
			
		||||
 | 
			
		||||
RUN apk add --no-cache geoip rrdtool openssl
 | 
			
		||||
 | 
			
		||||
COPY ./rootfs/. /
 | 
			
		||||
COPY --from=build /buildroot/. /usr/local/
 | 
			
		||||
COPY ./bin/. /usr/local/bin/
 | 
			
		||||
COPY ./data/. /usr/local/share/template-files/data/
 | 
			
		||||
COPY ./config/. /usr/local/share/template-files/config/
 | 
			
		||||
 | 
			
		||||
RUN echo 'Running cleanup' ; \
 | 
			
		||||
  rm -Rf /usr/share/doc/* /usr/share/info/* /tmp/* /var/tmp/* ; \
 | 
			
		||||
  rm -Rf /usr/local/bin/.gitkeep /usr/local/bin/.gitkeep /config /data /var/cache/apk/* ; \
 | 
			
		||||
  rm -rf /lib/systemd/system/multi-user.target.wants/* ; \
 | 
			
		||||
  rm -rf /etc/systemd/system/*.wants/* ; \
 | 
			
		||||
  rm -rf /lib/systemd/system/local-fs.target.wants/* ; \
 | 
			
		||||
  rm -rf /lib/systemd/system/sockets.target.wants/*udev* ; \
 | 
			
		||||
  rm -rf /lib/systemd/system/sockets.target.wants/*initctl* ; \
 | 
			
		||||
  rm -rf /lib/systemd/system/sysinit.target.wants/systemd-tmpfiles-setup* ; \
 | 
			
		||||
  rm -rf /lib/systemd/system/systemd-update-utmp* ; \
 | 
			
		||||
  if [ -d "/lib/systemd/system/sysinit.target.wants" ]; then cd "/lib/systemd/system/sysinit.target.wants" && rm $(ls | grep -v systemd-tmpfiles-setup) ; fi
 | 
			
		||||
 | 
			
		||||
FROM scratch
 | 
			
		||||
ARG BUILD_DATE="$(date +'%Y-%m-%d %H:%M')"
 | 
			
		||||
 | 
			
		||||
LABEL \
 | 
			
		||||
  org.label-schema.name="cherokee" \
 | 
			
		||||
  description="Alpine based image with cherokee and php8." \
 | 
			
		||||
  org.label-schema.url="https://hub.docker.com/r/casjaysdevdocker/cherokee" \
 | 
			
		||||
  org.label-schema.vcs-url="https://github.com/casjaysdevdocker/cherokee" \
 | 
			
		||||
  org.label-schema.build-date=$BUILD_DATE \
 | 
			
		||||
  org.label-schema.version=$BUILD_DATE \
 | 
			
		||||
  org.label-schema.vcs-ref=$BUILD_DATE \
 | 
			
		||||
  org.label-schema.license="WTFPL" \
 | 
			
		||||
  org.label-schema.vcs-type="Git" \
 | 
			
		||||
  org.label-schema.schema-version="1.0" \
 | 
			
		||||
  org.label-schema.vendor="CasjaysDev" \
 | 
			
		||||
  maintainer="CasjaysDev <docker-admin@casjaysdev.com>"
 | 
			
		||||
ARG \
 | 
			
		||||
  SERVICE_PORT="80" \
 | 
			
		||||
  EXPOSE_PORTS="80 9090" \
 | 
			
		||||
  PHP_SERVER="cherokee" \
 | 
			
		||||
  NODE_VERSION="system" \
 | 
			
		||||
  NODE_MANAGER="system" \
 | 
			
		||||
  BUILD_VERSION="latest" \
 | 
			
		||||
  LICENSE="MIT" \
 | 
			
		||||
  IMAGE_NAME="cherokee" \
 | 
			
		||||
  BUILD_DATE="Thu Oct 20 04:49:27 PM EDT 2022" \
 | 
			
		||||
  TIMEZONE="America/New_York"
 | 
			
		||||
 | 
			
		||||
COPY --from=source /. /
 | 
			
		||||
LABEL maintainer="CasjaysDev <docker-admin@casjaysdev.com>" \
 | 
			
		||||
  org.opencontainers.image.vendor="CasjaysDev" \
 | 
			
		||||
  org.opencontainers.image.authors="CasjaysDev" \
 | 
			
		||||
  org.opencontainers.image.vcs-type="Git" \
 | 
			
		||||
  org.opencontainers.image.name="${IMAGE_NAME}" \
 | 
			
		||||
  org.opencontainers.image.base.name="${IMAGE_NAME}" \
 | 
			
		||||
  org.opencontainers.image.license="${LICENSE}" \
 | 
			
		||||
  org.opencontainers.image.vcs-ref="${BUILD_VERSION}" \
 | 
			
		||||
  org.opencontainers.image.build-date="${BUILD_DATE}" \
 | 
			
		||||
  org.opencontainers.image.version="${BUILD_VERSION}" \
 | 
			
		||||
  org.opencontainers.image.schema-version="${BUILD_VERSION}" \
 | 
			
		||||
  org.opencontainers.image.url="https://hub.docker.com/r/casjaysdevdocker/${IMAGE_NAME}" \
 | 
			
		||||
  org.opencontainers.image.vcs-url="https://github.com/casjaysdevdocker/${IMAGE_NAME}" \
 | 
			
		||||
  org.opencontainers.image.url.source="https://github.com/casjaysdevdocker/${IMAGE_NAME}" \
 | 
			
		||||
  org.opencontainers.image.documentation="https://hub.docker.com/r/casjaysdevdocker/${IMAGE_NAME}" \
 | 
			
		||||
  org.opencontainers.image.description="Containerized version of ${IMAGE_NAME}"
 | 
			
		||||
 | 
			
		||||
ENV PHP_SERVER=cherokee
 | 
			
		||||
ENV LANG=en_US.utf8 \
 | 
			
		||||
  ENV=~/.bashrc \
 | 
			
		||||
  SHELL="/bin/bash" \
 | 
			
		||||
  PORT="${SERVICE_PORT}" \
 | 
			
		||||
  TERM="xterm-256color" \
 | 
			
		||||
  PHP_SERVER="${PHP_SERVER}" \
 | 
			
		||||
  CONTAINER_NAME="${IMAGE_NAME}" \
 | 
			
		||||
  TZ="${TZ:-America/New_York}" \
 | 
			
		||||
  TIMEZONE="${TZ:-$TIMEZONE}" \
 | 
			
		||||
  HOSTNAME="casjaysdev-${IMAGE_NAME}"
 | 
			
		||||
 | 
			
		||||
COPY --from=php /. /
 | 
			
		||||
 | 
			
		||||
USER root
 | 
			
		||||
WORKDIR /data/htdocs/www
 | 
			
		||||
 | 
			
		||||
EXPOSE $PORTS
 | 
			
		||||
VOLUME [ "/config","/data" ]
 | 
			
		||||
 | 
			
		||||
VOLUME [ "/data", "/config" ]
 | 
			
		||||
 | 
			
		||||
ENTRYPOINT [ "tini", "--" ]
 | 
			
		||||
HEALTHCHECK --interval=15s --timeout=3s CMD [ "/usr/local/bin/entrypoint-cherokee.sh" "healthcheck" ]
 | 
			
		||||
CMD ["/usr/local/bin/entrypoint-cherokee.sh"]
 | 
			
		||||
EXPOSE $EXPOSE_PORTS
 | 
			
		||||
 | 
			
		||||
#CMD [ "" ]
 | 
			
		||||
ENTRYPOINT [ "tini", "-p", "SIGTERM", "--", "/usr/local/bin/entrypoint.sh" ]
 | 
			
		||||
HEALTHCHECK --start-period=1m --interval=2m --timeout=3s CMD [ "/usr/local/bin/entrypoint.sh", "healthcheck" ]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,45 +0,0 @@
 | 
			
		||||
#!/usr/bin/env sh
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Set bash options
 | 
			
		||||
[ -n "$DEBUG" ] && set -x
 | 
			
		||||
set -o pipefail
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
export PATH="/usr/local/share/cherokee/bin:/usr/local/share/cherokee/sbin:$PATH"
 | 
			
		||||
[ -f "/config/ssl.env" ] && . "/config/ssl.env"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
if [ ! -d "/config/cherokee" ] && [ -d "/usr/local/share/template-files/config/cherokee" ]; then
 | 
			
		||||
  mkdir -p "/config/cherokee"
 | 
			
		||||
  cp -Rf "/usr/local/share/template-files/config/cherokee/." "/config/cherokee/"
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
[ -d "/data/cherokee/graphs" ] || mkdir -p "/data/cherokee/graphs"
 | 
			
		||||
[ -d "/config/cherokee" ] && cp -Rf "/config/cherokee/." "/etc/cherokee/" || cp -Rf "/usr/local/share/template-files/config/defaults/" "/etc/cherokee/"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
[ -d "/data/htdocs" ] || mkdir -p "/data/htdocs"
 | 
			
		||||
[ -d "/data/cherokee" ] || mkdir -p "/data/cherokee"
 | 
			
		||||
[ -d "/config/cherokee/themes" ] && cp -Rf "/config/cherokee/themes/." "/usr/local/share/cherokee/share/cherokee/themes/"
 | 
			
		||||
if [ -z "$(ls -A /data/htdocs/www/* 2>/dev/null||echo '')" ]; then
 | 
			
		||||
  mkdir -p "/data/htdocs" "/data/htdocs/cgi-bin"
 | 
			
		||||
  cp -Rf "/usr/local/share/template-files/data/." "/data/"
 | 
			
		||||
fi
 | 
			
		||||
[ -d "/usr/lib/cgi-bin" ] && [ -d "" ] && cp -Rf "/usr/lib/cgi-bin/." "/data/htdocs/cgi-bin/"
 | 
			
		||||
[ -f "/config/cherokee/cherokee.conf" ] && cp -Rfv "/config/cherokee/cherokee.conf" "/etc/cherokee/"
 | 
			
		||||
[ -d "/usr/local/share/cherokee/icons" ] && [ ! -d "/config/cherokee/icons" ] && cp -Rf "/usr/local/share/cherokee/icons/." "/config/cherokee/icons/"
 | 
			
		||||
[ -d "/usr/local/share/cherokee/themes" ] && [ ! -d "/config/cherokee/themes" ] && cp -Rf "/usr/local/share/cherokee/themes/." "/config/cherokee/themes/"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
if [ ! -f "/config/ssl//localhost.crt" ] || [ ! -f "/config/ssl//localhost.key" ]; then
 | 
			
		||||
  create-ssl-cert
 | 
			
		||||
fi
 | 
			
		||||
# Fix permissions
 | 
			
		||||
chmod -Rfv 664 "/data/cherokee"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Start php-fpm server
 | 
			
		||||
php-fpm-server &
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
if [ ! -f "/tmp/cherokee.pid" ]; then
 | 
			
		||||
  echo "Starting cherokee-admin on port 9090"
 | 
			
		||||
  cherokee-admin -b -p 9090 -C /etc/cherokee/cherokee.conf &
 | 
			
		||||
  echo "Starting cherokee webserver on port 80"
 | 
			
		||||
  exec cherokee -C /etc/cherokee/cherokee.conf || rm -Rf "/tmp/cherokee.pid"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -1,140 +0,0 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# shellcheck shell=bash
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
##@Version           :  202210102226-git
 | 
			
		||||
# @@Author           :  Jason Hempstead
 | 
			
		||||
# @@Contact          :  jason@casjaysdev.com
 | 
			
		||||
# @@License          :  LICENSE.md
 | 
			
		||||
# @@ReadME           :  entrypoint-cherokee.sh --help
 | 
			
		||||
# @@Copyright        :  Copyright: (c) 2022 Jason Hempstead, Casjays Developments
 | 
			
		||||
# @@Created          :  Monday, Oct 10, 2022 22:26 EDT
 | 
			
		||||
# @@File             :  entrypoint-cherokee.sh
 | 
			
		||||
# @@Description      :
 | 
			
		||||
# @@Changelog        :  New script
 | 
			
		||||
# @@TODO             :  Better documentation
 | 
			
		||||
# @@Other            :
 | 
			
		||||
# @@Resource         :
 | 
			
		||||
# @@Terminal App     :  no
 | 
			
		||||
# @@sudo/root        :  no
 | 
			
		||||
# @@Template         :  other/docker-entrypoint
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Set bash options
 | 
			
		||||
[ -n "$DEBUG" ] && set -x
 | 
			
		||||
set -o pipefail
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
APPNAME="$(basename "$0" 2>/dev/null)"
 | 
			
		||||
VERSION="202210102226-git"
 | 
			
		||||
HOME="${USER_HOME:-$HOME}"
 | 
			
		||||
USER="${SUDO_USER:-$USER}"
 | 
			
		||||
RUN_USER="${SUDO_USER:-$USER}"
 | 
			
		||||
SCRIPT_SRC_DIR="${BASH_SOURCE%/*}"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Set functions
 | 
			
		||||
__version() { echo -e ${GREEN:-}"$VERSION"${NC:-}; }
 | 
			
		||||
__find() { ls -A "$*" 2>/dev/null; }
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# colorization
 | 
			
		||||
[ -n "$SHOW_RAW" ] || printf_color() { echo -e '\t\t'${2:-}"${1:-}${NC}"; }
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
__exec_command() {
 | 
			
		||||
  local cmd="${*:-/bin/bash -l}"
 | 
			
		||||
  local exitCode=0
 | 
			
		||||
  echo "Executing command: $cmd"
 | 
			
		||||
  eval "$cmd" || exitCode=10
 | 
			
		||||
  return ${exitCode:-$?}
 | 
			
		||||
}
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Functions
 | 
			
		||||
__heath_check() {
 | 
			
		||||
  local status=0
 | 
			
		||||
  #curl -q -LSsf -o /dev/null -s -w "200" "http://localhost/server-health" || status=$(($status + 1))
 | 
			
		||||
  return ${status:-$?}
 | 
			
		||||
}
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Define default variables - don not change these
 | 
			
		||||
TZ="${TZ:-America/New_York}"
 | 
			
		||||
LOCAL_BIN_DIR="${LOCAL_BIN_DIR:-/usr/local/bin}"
 | 
			
		||||
HOSTNAME="${HOSTNAME:-casjaysdev-bin}"
 | 
			
		||||
TEMPLATE_DATA_DIR="$(__find /usr/local/share/template-files/data/ 2>/dev/null | grep '^' || echo '')"
 | 
			
		||||
TEMPLATE_CONFIG_DIR="$(__find /usr/local/share/template-files/config/ 2>/dev/null | grep '^' || echo '')"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Additional variables and variable overrides
 | 
			
		||||
SSL="true"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# import variables from file
 | 
			
		||||
[ -f "/root/env.sh" ] && . "/root/env.sh"
 | 
			
		||||
[ -f "/config/env.sh" ] && "/config/env.sh"
 | 
			
		||||
[ -f "/config/.env.sh" ] && . "/config/.env.sh"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Set timezone
 | 
			
		||||
[ -n "${TZ}" ] && echo "${TZ}" >"/etc/timezone"
 | 
			
		||||
[ -f "/usr/share/zoneinfo/${TZ}" ] && ln -sf "/usr/share/zoneinfo/${TZ}" "/etc/localtime"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Set hostname
 | 
			
		||||
if [ -n "${HOSTNAME}" ]; then
 | 
			
		||||
  echo "${HOSTNAME}" >"/etc/hostname"
 | 
			
		||||
  echo "127.0.0.1 ${HOSTNAME} localhost ${HOSTNAME}.local" >"/etc/hosts"
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Delete any gitkeep files
 | 
			
		||||
if [ "$SSL" = "true" ] || [ "$SSL" = "yes" ]; then
 | 
			
		||||
  if [ -f "/config/ssl/server.crt" ] && [ -f "/config/ssl/server.key" ]; then
 | 
			
		||||
    SSL="on"
 | 
			
		||||
    SSL_CERT="/config/ssl/server.crt"
 | 
			
		||||
    SSL_KEY="/config/ssl/server.key"
 | 
			
		||||
    if [ -f "/config/ssl/ca.crt" ]; then
 | 
			
		||||
      mkdir -p "/etc/ssl/certs"
 | 
			
		||||
      cat "/config/ssl/ca.crt" >>"/etc/ssl/certs/ca-certificates.crt"
 | 
			
		||||
    fi
 | 
			
		||||
  else
 | 
			
		||||
    [ -d "/config/ssl" ] || mkdir -p "/config/ssl"
 | 
			
		||||
    export SSL_DIR="/config/ssl"
 | 
			
		||||
    create-ssl-cert
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Update ssl certificates
 | 
			
		||||
[ -f "/config/ssl/ca.crt" ] && cat "/config/ssl/ca.crt" >>"/etc/ssl/certs/ca-certificates.crt"
 | 
			
		||||
type update-ca-certificates &>/dev/null && update-ca-certificates
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Export variables
 | 
			
		||||
export TZ HOSTNAME
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Additional commands
 | 
			
		||||
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
case "$1" in
 | 
			
		||||
--help) # Help message
 | 
			
		||||
  echo 'Docker container for '$APPNAME''
 | 
			
		||||
  echo "Usage: $APPNAME [healthcheck, bash, command]"
 | 
			
		||||
  echo "Failed command will have exit code 10"
 | 
			
		||||
  echo
 | 
			
		||||
  exitCode=$?
 | 
			
		||||
  ;;
 | 
			
		||||
 | 
			
		||||
healthcheck) # Docker healthcheck
 | 
			
		||||
  __heath_check || exit 10
 | 
			
		||||
  echo "$(uname -s) $(uname -m) is running"
 | 
			
		||||
  exitCode=$?
 | 
			
		||||
  ;;
 | 
			
		||||
 | 
			
		||||
*/bin/sh | */bin/bash | bash | shell | sh) # Launch shell
 | 
			
		||||
  shift 1
 | 
			
		||||
  __exec_command "${@:-/bin/bash}"
 | 
			
		||||
  exitCode=$?
 | 
			
		||||
  ;;
 | 
			
		||||
 | 
			
		||||
*) # Execute primary command
 | 
			
		||||
  if [ $# -eq 0 ]; then
 | 
			
		||||
    cherokee-server
 | 
			
		||||
    exitCode=$?
 | 
			
		||||
  else
 | 
			
		||||
    __exec_command "$@"
 | 
			
		||||
    exitCode=$?
 | 
			
		||||
  fi
 | 
			
		||||
  ;;
 | 
			
		||||
esac
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# end of entrypoint
 | 
			
		||||
exit ${exitCode:-$?}
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
							
								
								
									
										284
									
								
								rootfs/usr/local/bin/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,284 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# shellcheck shell=bash
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
##@Version           :  202210201649-git
 | 
			
		||||
# @@Author           :  Jason Hempstead
 | 
			
		||||
# @@Contact          :  jason@casjaysdev.com
 | 
			
		||||
# @@License          :  LICENSE.md
 | 
			
		||||
# @@ReadME           :  entrypoint.sh --help
 | 
			
		||||
# @@Copyright        :  Copyright: (c) 2022 Jason Hempstead, Casjays Developments
 | 
			
		||||
# @@Created          :  Thursday, Oct 20, 2022 16:49 EDT
 | 
			
		||||
# @@File             :  entrypoint.sh
 | 
			
		||||
# @@Description      :  entrypoint point for cherokee
 | 
			
		||||
# @@Changelog        :  New script
 | 
			
		||||
# @@TODO             :  Better documentation
 | 
			
		||||
# @@Other            :
 | 
			
		||||
# @@Resource         :
 | 
			
		||||
# @@Terminal App     :  no
 | 
			
		||||
# @@sudo/root        :  no
 | 
			
		||||
# @@Template         :  other/docker-entrypoint
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Set bash options
 | 
			
		||||
[ -n "$DEBUG" ] && set -x
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Set functions
 | 
			
		||||
__exec_command() {
 | 
			
		||||
  local exitCode=0
 | 
			
		||||
  local cmd="${*:-bash -l}"
 | 
			
		||||
  echo "${exec_message:-Executing command: $cmd}"
 | 
			
		||||
  $cmd || exitCode=1
 | 
			
		||||
  [ "$exitCode" = 0 ] || exitCode=10
 | 
			
		||||
  return ${exitCode:-$?}
 | 
			
		||||
}
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
__pcheck() { [ -n "$(which pgrep 2>/dev/null)" ] && pgrep -x "$1" || return 1; }
 | 
			
		||||
__find() { find "$1" -mindepth 1 -type ${2:-f,d} 2>/dev/null | grep '^' || return 10; }
 | 
			
		||||
__curl() { curl -q -LSsf -o /dev/null -s -w "200" "$@" 2>/dev/null || return 10; }
 | 
			
		||||
__pgrep() { __pcheck "${1:-$SERVICE_NAME}" || ps aux 2>/dev/null | grep -Fw " ${1:-$SERVICE_NAME}" | grep -qv ' grep' || return 10; }
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
__certbot() {
 | 
			
		||||
  [ -n "$DOMANNAME" ] && [ -n "$CERT_BOT_MAIL" ] || { echo "The variables DOMANNAME and CERT_BOT_MAIL are set" && exit 1; }
 | 
			
		||||
  [ "$SSL_CERT_BOT" = "true" ] && type -P certbot &>/dev/null || { export SSL_CERT_BOT="" && return 10; }
 | 
			
		||||
  certbot $1 --agree-tos -m $CERT_BOT_MAIL certonly --webroot -w "${WWW_ROOT_DIR:-/data/htdocs/www}" -d $DOMAINNAME -d $DOMAINNAME \
 | 
			
		||||
    --put-all-related-files-into "$SSL_DIR" -key-path "$SSL_KEY" -fullchain-path "$SSL_CERT"
 | 
			
		||||
}
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
__heath_check() {
 | 
			
		||||
  status=0 health="Good"
 | 
			
		||||
  __pgrep ${1:-} || status=$((status + 1))
 | 
			
		||||
  #__curl "https://1.1.1.1" || status=$((status + 1))
 | 
			
		||||
  #__curl "http://localhost:$HTTP_PORT/server-health" || status=$((status + 1))
 | 
			
		||||
  [ "$status" -eq 0 ] || health="Errors reported see docker logs --follow $CONTAINER_NAME"
 | 
			
		||||
  echo "$(uname -s) $(uname -m) is running and the health is: $health"
 | 
			
		||||
  return ${status:-$?}
 | 
			
		||||
}
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
__start_all_services() {
 | 
			
		||||
  echo "$service_message"
 | 
			
		||||
  start-fpm.sh &
 | 
			
		||||
  start-cherokee.sh
 | 
			
		||||
  return $?
 | 
			
		||||
}
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Additional functions
 | 
			
		||||
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# export functions
 | 
			
		||||
export -f __exec_command __pcheck __pgrep __find __curl __heath_check __certbot __start_all_services
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Define default variables - do not change these - redefine with -e or set under Additional
 | 
			
		||||
DISPLAY="${DISPLAY:-}"
 | 
			
		||||
LANG="${LANG:-C.UTF-8}"
 | 
			
		||||
DOMAINNAME="${DOMAINNAME:-}"
 | 
			
		||||
TZ="${TZ:-America/New_York}"
 | 
			
		||||
HTTP_PORT="${HTTP_PORT:-80}"
 | 
			
		||||
HTTPS_PORT="${HTTPS_PORT:-}"
 | 
			
		||||
SERVICE_PORT="${SERVICE_PORT:-}"
 | 
			
		||||
SERVICE_NAME="${CONTAINER_NAME:-}"
 | 
			
		||||
HOSTNAME="${HOSTNAME:-casjaysdev-cherokee}"
 | 
			
		||||
HOSTADMIN="${HOSTADMIN:-root@${DOMAINNAME:-$HOSTNAME}}"
 | 
			
		||||
CERT_BOT_MAIL="${CERT_BOT_MAIL:-certbot-mail@casjay.net}"
 | 
			
		||||
SSL_CERT_BOT="${SSL_CERT_BOT:-false}"
 | 
			
		||||
SSL_ENABLED="${SSL_ENABLED:-false}"
 | 
			
		||||
SSL_DIR="${SSL_DIR:-/config/ssl}"
 | 
			
		||||
SSL_CA="${SSL_CA:-$SSL_DIR/ca.crt}"
 | 
			
		||||
SSL_KEY="${SSL_KEY:-$SSL_DIR/server.key}"
 | 
			
		||||
SSL_CERT="${SSL_CERT:-$SSL_DIR/server.crt}"
 | 
			
		||||
SSL_CONTAINER_DIR="${SSL_CONTAINER_DIR:-/etc/ssl/CA}"
 | 
			
		||||
WWW_ROOT_DIR="${WWW_ROOT_DIR:-/data/htdocs}"
 | 
			
		||||
LOCAL_BIN_DIR="${LOCAL_BIN_DIR:-/usr/local/bin}"
 | 
			
		||||
DEFAULT_DATA_DIR="${DEFAULT_DATA_DIR:-/usr/local/share/template-files/data}"
 | 
			
		||||
DEFAULT_CONF_DIR="${DEFAULT_CONF_DIR:-/usr/local/share/template-files/config}"
 | 
			
		||||
DEFAULT_TEMPLATE_DIR="${DEFAULT_TEMPLATE_DIR:-/usr/local/share/template-files/defaults}"
 | 
			
		||||
CONTAINER_IP_ADDRESS="$(ip a 2>/dev/null | grep 'inet' | grep -v '127.0.0.1' | awk '{print $2}' | sed 's|/.*||g')"
 | 
			
		||||
[ -n "$HTTP_PORT" ] || [ -n "$HTTPS_PORT" ] || HTTP_PORT="$SERVICE_PORT"
 | 
			
		||||
[ "$HTTPS_PORT" = "443" ] && HTTP_PORT="$HTTPS_PORT" && SSL_ENABLED="true"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Additional variables and variable overrides
 | 
			
		||||
#SERVICE_NAME=""
 | 
			
		||||
export service_message="Starting $CONTAINER_NAME"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Check if this is a new container
 | 
			
		||||
[ -f "/data/.docker_has_run" ] && DATA_DIR_INITIALIZED="true" || DATA_DIR_INITIALIZED="false"
 | 
			
		||||
[ -f "/config/.docker_has_run" ] && CONFIG_DIR_INITIALIZED="true" || CONFIG_DIR_INITIALIZED="false"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# export variables
 | 
			
		||||
export LANG TZ DOMAINNAME HOSTNAME HOSTADMIN SSL_ENABLED SSL_DIR SSL_CA SSL_KEY SERVICE_NAME
 | 
			
		||||
export SSL_DIR HTTP_PORT HTTPS_PORT LOCAL_BIN_DIR DEFAULT_CONF_DIR CONTAINER_IP_ADDRESS
 | 
			
		||||
export SSL_CONTAINER_DIR SSL_CERT_BOT DISPLAY CONFIG_DIR_INITIALIZED DATA_DIR_INITIALIZED
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# import variables from file
 | 
			
		||||
[ -f "/root/env.sh" ] && . "/root/env.sh"
 | 
			
		||||
[ -f "/config/env.sh" ] && "/config/env.sh"
 | 
			
		||||
[ -f "/config/.env.sh" ] && . "/config/.env.sh"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Set timezone
 | 
			
		||||
[ -n "$TZ" ] && echo "$TZ" >"/etc/timezone"
 | 
			
		||||
[ -f "/usr/share/zoneinfo/$TZ" ] && ln -sf "/usr/share/zoneinfo/$TZ" "/etc/localtime"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Set hostname
 | 
			
		||||
if [ -n "$HOSTNAME" ]; then
 | 
			
		||||
  echo "$HOSTNAME" >"/etc/hostname"
 | 
			
		||||
  echo "127.0.0.1 $HOSTNAME localhost $HOSTNAME.local" >"/etc/hosts"
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Add domain to hosts file
 | 
			
		||||
if [ -n "$DOMAINNAME" ]; then
 | 
			
		||||
  echo "$HOSTNAME.${DOMAINNAME:-local}" >"/etc/hostname"
 | 
			
		||||
  echo "127.0.0.1 $HOSTNAME localhost $HOSTNAME.local" >"/etc/hosts"
 | 
			
		||||
  echo "${CONTAINER_IP_ADDRESS:-127.0.0.1} $HOSTNAME.$DOMAINNAME" >>"/etc/hosts"
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Delete any gitkeep files
 | 
			
		||||
[ -d "/data" ] && rm -Rf "/data/.gitkeep" "/data"/*/*.gitkeep
 | 
			
		||||
[ -d "/config" ] && rm -Rf "/config/.gitkeep" "/data"/*/*.gitkeep
 | 
			
		||||
[ -f "/usr/local/bin/.gitkeep" ] && rm -Rf "/usr/local/bin/.gitkeep"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Create directories
 | 
			
		||||
[ -d "/etc/ssl" ] || mkdir -p "$SSL_CONTAINER_DIR"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Create files
 | 
			
		||||
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Create symlinks
 | 
			
		||||
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
if [ "$SSL_ENABLED" = "true" ] || [ "$SSL_ENABLED" = "yes" ]; then
 | 
			
		||||
  if [ -f "/config/ssl/server.crt" ] && [ -f "/config/ssl/server.key" ]; then
 | 
			
		||||
    export SSL_ENABLED="true"
 | 
			
		||||
    if [ -n "$SSL_CA" ] && [ -f "$SSL_CA" ]; then
 | 
			
		||||
      mkdir -p "$SSL_CONTAINER_DIR/certs"
 | 
			
		||||
      cat "$SSL_CA" >>"/etc/ssl/certs/ca-certificates.crt"
 | 
			
		||||
      cp -Rf "/config/ssl/." "$SSL_CONTAINER_DIR/"
 | 
			
		||||
    fi
 | 
			
		||||
  else
 | 
			
		||||
    [ -d "$SSL_DIR" ] || mkdir -p "$SSL_DIR"
 | 
			
		||||
    create-ssl-cert
 | 
			
		||||
  fi
 | 
			
		||||
  type update-ca-certificates &>/dev/null && update-ca-certificates
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
[ -f "$SSL_CA" ] && cp -Rfv "$SSL_CA" "$SSL_CONTAINER_DIR/ca.crt"
 | 
			
		||||
[ -f "$SSL_KEY" ] && cp -Rfv "$SSL_KEY" "$SSL_CONTAINER_DIR/server.key"
 | 
			
		||||
[ -f "$SSL_CERT" ] && cp -Rfv "$SSL_CERT" "$SSL_CONTAINER_DIR/server.crt"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Setup bin directory
 | 
			
		||||
SET_USR_BIN=""
 | 
			
		||||
[ -d "/data/bin" ] && SET_USR_BIN+="$(__find /data/bin f) "
 | 
			
		||||
[ -d "/config/bin" ] && SET_USR_BIN+="$(__find /config/bin f) "
 | 
			
		||||
if [ -n "$SET_USR_BIN" ]; then
 | 
			
		||||
  echo "Setting up bin"
 | 
			
		||||
  for create_bin in $SET_USR_BIN; do
 | 
			
		||||
    create_bin_name="$(basename "$create_bin")"
 | 
			
		||||
    ln -sf "$create_bin" "$LOCAL_BIN_DIR/$create_bin_name"
 | 
			
		||||
  done
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Create default config
 | 
			
		||||
if [ "$CONFIG_DIR_INITIALIZED" = "false" ] && [ -d "/config" ]; then
 | 
			
		||||
  echo "Copying default config files"
 | 
			
		||||
  if [ -n "$DEFAULT_TEMPLATE_DIR" ] && [ -d "$DEFAULT_TEMPLATE_DIR" ]; then
 | 
			
		||||
    for create_template in "$DEFAULT_TEMPLATE_DIR"/*; do
 | 
			
		||||
      create_template_name="$(basename "$create_template")"
 | 
			
		||||
      cp -Rf "$create_template" "/config/$create_template_name" 2>/dev/null
 | 
			
		||||
    done
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Copy custom config files
 | 
			
		||||
if [ "$CONFIG_DIR_INITIALIZED" = "false" ] && [ -d "/config" ]; then
 | 
			
		||||
  echo "Copying custom config files"
 | 
			
		||||
  for create_config in "$DEFAULT_CONF_DIR"/*; do
 | 
			
		||||
    create_config_name="$(basename "$create_config")"
 | 
			
		||||
    cp -Rf "$create_config" "/config/$create_config_name" 2>/dev/null
 | 
			
		||||
  done
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Copy custom data files
 | 
			
		||||
if [ "$DATA_DIR_INITIALIZED" = "false" ] && [ -d "/data" ]; then
 | 
			
		||||
  echo "Copying data files"
 | 
			
		||||
  for create_data in "$DEFAULT_DATA_DIR"/*; do
 | 
			
		||||
    create_data_name="$(basename "$create_data")"
 | 
			
		||||
    cp -Rf "$create_data" "/data/$create_data_name" 2>/dev/null
 | 
			
		||||
  done
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Copy /config to /etc
 | 
			
		||||
if [ -d "/config" ]; then
 | 
			
		||||
  echo "Copying /config to /etc"
 | 
			
		||||
  for create_conf in /config/*; do
 | 
			
		||||
    if [ -n "$create_conf" ]; then
 | 
			
		||||
      create_conf_name="$(basename "$create_conf")"
 | 
			
		||||
      if [ -e "/etc/$create_conf_name" ]; then
 | 
			
		||||
        if [ -d "/etc/$create_conf_name" ]; then
 | 
			
		||||
          cp -Rf "$create_conf/." "/etc/$create_conf_name/" 2>/dev/null
 | 
			
		||||
        else
 | 
			
		||||
          cp -Rf "$create_conf" "/etc/$create_conf_name" 2>/dev/null
 | 
			
		||||
        fi
 | 
			
		||||
      fi
 | 
			
		||||
    fi
 | 
			
		||||
  done
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Unset unneeded variables
 | 
			
		||||
unset SET_USR_BIN create_bin create_bin_name create_template create_template_name
 | 
			
		||||
unset create_data create_data_name create_config create_config_name create_conf create_conf_name
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
[ -f "/data/.docker_has_run" ] || { [ -d "/data" ] && echo "Initialized on: $(date)" >"/data/.docker_has_run"; }
 | 
			
		||||
[ -f "/config/.docker_has_run" ] || { [ -d "/config" ] && echo "Initialized on: $(date)" >"/config/.docker_has_run"; }
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Additional commands
 | 
			
		||||
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Show message
 | 
			
		||||
echo "Container ip address is: $CONTAINER_IP_ADDRESS"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
case "$1" in
 | 
			
		||||
--help) # Help message
 | 
			
		||||
  echo 'Docker container for '$APPNAME''
 | 
			
		||||
  echo "Usage: $APPNAME [healthcheck, bash, command]"
 | 
			
		||||
  echo "Failed command will have exit code 10"
 | 
			
		||||
  echo ""
 | 
			
		||||
  exit ${exitCode:-$?}
 | 
			
		||||
  ;;
 | 
			
		||||
 | 
			
		||||
healthcheck) # Docker healthcheck
 | 
			
		||||
  __heath_check "${1:-$SERVICE_NAME}" || exitCode=10
 | 
			
		||||
  exit ${exitCode:-$?}
 | 
			
		||||
  ;;
 | 
			
		||||
 | 
			
		||||
*/bin/sh | */bin/bash | bash | shell | sh) # Launch shell
 | 
			
		||||
  shift 1
 | 
			
		||||
  __exec_command "${@:-/bin/bash}"
 | 
			
		||||
  exit ${exitCode:-$?}
 | 
			
		||||
  ;;
 | 
			
		||||
 | 
			
		||||
certbot)
 | 
			
		||||
  shift 1
 | 
			
		||||
  SSL_CERT_BOT="true"
 | 
			
		||||
  if [ "$1" = "create" ]; then
 | 
			
		||||
    shift 1
 | 
			
		||||
    __certbot
 | 
			
		||||
  elif [ "$1" = "renew" ]; then
 | 
			
		||||
    shift 1
 | 
			
		||||
    __certbot "renew certonly --force-renew"
 | 
			
		||||
  else
 | 
			
		||||
    __exec_command "certbot" "$@"
 | 
			
		||||
  fi
 | 
			
		||||
  ;;
 | 
			
		||||
 | 
			
		||||
*) # Execute primary command
 | 
			
		||||
  if [ $# -eq 0 ]; then
 | 
			
		||||
    __start_all_services
 | 
			
		||||
    exit ${exitCode:-$?}
 | 
			
		||||
  else
 | 
			
		||||
    __exec_command "$@"
 | 
			
		||||
    exitCode=$?
 | 
			
		||||
  fi
 | 
			
		||||
  ;;
 | 
			
		||||
esac
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# end of entrypoint
 | 
			
		||||
exit ${exitCode:-$?}
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
							
								
								
									
										166
									
								
								rootfs/usr/local/bin/start-cherokee.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,166 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# shellcheck shell=bash
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
##@Version           :  202210201649-git
 | 
			
		||||
# @@Author           :  Jason Hempstead
 | 
			
		||||
# @@Contact          :  jason@casjaysdev.com
 | 
			
		||||
# @@License          :  LICENSE.md
 | 
			
		||||
# @@ReadME           :  start-cherokee.sh --help
 | 
			
		||||
# @@Copyright        :  Copyright: (c) 2022 Jason Hempstead, Casjays Developments
 | 
			
		||||
# @@Created          :  Thursday, Oct 20, 2022 16:49 EDT
 | 
			
		||||
# @@File             :  start-cherokee.sh
 | 
			
		||||
# @@Description      :  script to start cherokee
 | 
			
		||||
# @@Changelog        :  New script
 | 
			
		||||
# @@TODO             :  Better documentation
 | 
			
		||||
# @@Other            :
 | 
			
		||||
# @@Resource         :
 | 
			
		||||
# @@Terminal App     :  no
 | 
			
		||||
# @@sudo/root        :  no
 | 
			
		||||
# @@Template         :  other/start-service
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Set functions
 | 
			
		||||
__pcheck() { [ -n "$(which pgrep 2>/dev/null)" ] && pgrep -x "$1" || return 1; }
 | 
			
		||||
__find() { find "$1" -mindepth 1 -type ${2:-f,d} 2>/dev/null | grep '^' || return 10; }
 | 
			
		||||
__curl() { curl -q -LSsf -o /dev/null -s -w "200" "$@" 2>/dev/null || return 10; }
 | 
			
		||||
__pgrep() { __pcheck "$1" || ps aux 2>/dev/null | grep -Fw " $1" | grep -qv ' grep' || return 10; }
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
__certbot() {
 | 
			
		||||
  [ -n "$DOMANNAME" ] && [ -n "$CERT_BOT_MAIL" ] || { echo "The variables DOMANNAME and CERT_BOT_MAIL are set" && exit 1; }
 | 
			
		||||
  [ "$SSL_CERT_BOT" = "true" ] && type -P certbot &>/dev/null || { export SSL_CERT_BOT="" && return 10; }
 | 
			
		||||
  certbot $1 --agree-tos -m $CERT_BOT_MAIL certonly --webroot -w "${WWW_ROOT_DIR:-/data/htdocs/www}" -d $DOMAINNAME -d $DOMAINNAME \
 | 
			
		||||
    --put-all-related-files-into "$SSL_DIR" -key-path "$SSL_KEY" -fullchain-path "$SSL_CERT"
 | 
			
		||||
}
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
__heath_check() {
 | 
			
		||||
  status=0 health="Good"
 | 
			
		||||
  __pgrep ${1:-} || status=$((status + 1))
 | 
			
		||||
  #__curl "http://localhost:$HTTP_PORT/server-health" || status=$((status + 1))
 | 
			
		||||
  [ "$status" -eq 0 ] || health="Errors reported see docker logs --follow $CONTAINER_NAME"
 | 
			
		||||
  echo "$(uname -s) $(uname -m) is running and the health is: $health"
 | 
			
		||||
  return ${status:-$?}
 | 
			
		||||
}
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Set variables
 | 
			
		||||
DISPLAY="${DISPLAY:-}"
 | 
			
		||||
LANG="${LANG:-C.UTF-8}"
 | 
			
		||||
DOMAINNAME="${DOMAINNAME:-}"
 | 
			
		||||
TZ="${TZ:-America/New_York}"
 | 
			
		||||
HTTP_PORT="${HTTP_PORT:-80}"
 | 
			
		||||
HTTPS_PORT="${HTTPS_PORT:-}"
 | 
			
		||||
SERVICE_PORT="${SERVICE_PORT:-$HTTP_PORT}"
 | 
			
		||||
SERVICE_NAME="${CONTAINER_NAME:-}"
 | 
			
		||||
HOSTNAME="${HOSTNAME:-casjaysdev-cherokee}"
 | 
			
		||||
HOSTADMIN="${HOSTADMIN:-root@${DOMAINNAME:-$HOSTNAME}}"
 | 
			
		||||
SSL_CERT_BOT="${SSL_CERT_BOT:-false}"
 | 
			
		||||
SSL_ENABLED="${SSL_ENABLED:-false}"
 | 
			
		||||
SSL_DIR="${SSL_DIR:-/config/ssl}"
 | 
			
		||||
SSL_CA="${SSL_CA:-$SSL_DIR/ca.crt}"
 | 
			
		||||
SSL_KEY="${SSL_KEY:-$SSL_DIR/server.key}"
 | 
			
		||||
SSL_CERT="${SSL_CERT:-$SSL_DIR/server.crt}"
 | 
			
		||||
SSL_CONTAINER_DIR="${SSL_CONTAINER_DIR:-/etc/ssl/CA}"
 | 
			
		||||
WWW_ROOT_DIR="${WWW_ROOT_DIR:-/data/htdocs}"
 | 
			
		||||
LOCAL_BIN_DIR="${LOCAL_BIN_DIR:-/usr/local/bin}"
 | 
			
		||||
DATA_DIR_INITIALIZED="${DATA_DIR_INITIALIZED:-}"
 | 
			
		||||
CONFIG_DIR_INITIALIZED="${CONFIG_DIR_INITIALIZED:-}"
 | 
			
		||||
DEFAULT_DATA_DIR="${DEFAULT_DATA_DIR:-/usr/local/share/template-files/data}"
 | 
			
		||||
DEFAULT_CONF_DIR="${DEFAULT_CONF_DIR:-/usr/local/share/template-files/config}"
 | 
			
		||||
DEFAULT_TEMPLATE_DIR="${DEFAULT_TEMPLATE_DIR:-/usr/local/share/template-files/defaults}"
 | 
			
		||||
CONTAINER_IP_ADDRESS="$(ip a 2>/dev/null | grep 'inet' | grep -v '127.0.0.1' | awk '{print $2}' | sed 's|/.*||g')"
 | 
			
		||||
[ -n "$HTTP_PORT" ] || [ -n "$HTTPS_PORT" ] || HTTP_PORT="$SERVICE_PORT"
 | 
			
		||||
[ "$HTTPS_PORT" = "443" ] && HTTP_PORT="$HTTPS_PORT" && SSL_ENABLED="true"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Overwrite variables
 | 
			
		||||
#SERVICE_PORT=""
 | 
			
		||||
SERVICE_NAME="cherokee"
 | 
			
		||||
SERVICE_COMMAND="cherokee -C /etc/cherokee/cherokee.conf"
 | 
			
		||||
export exec_message="Starting $SERVICE_NAME on $CONTAINER_IP_ADDRESS:$SERVICE_PORT"
 | 
			
		||||
export PATH="/usr/local/share/cherokee/bin:/usr/local/share/cherokee/sbin:$PATH"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Pre copy commands
 | 
			
		||||
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Check if this is a new container
 | 
			
		||||
[ -z "$DATA_DIR_INITIALIZED" ] && [ -f "/data/.docker_has_run" ] && DATA_DIR_INITIALIZED="true"
 | 
			
		||||
[ -z "$CONFIG_DIR_INITIALIZED" ] && [ -f "/config/.docker_has_run" ] && CONFIG_DIR_INITIALIZED="true"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Create default config
 | 
			
		||||
if [ "$CONFIG_DIR_INITIALIZED" = "false" ] && [ -n "$DEFAULT_TEMPLATE_DIR" ]; then
 | 
			
		||||
  [ -d "/config" ] && cp -Rf "$DEFAULT_TEMPLATE_DIR/." "/config/" 2>/dev/null
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Copy custom config files
 | 
			
		||||
if [ "$CONFIG_DIR_INITIALIZED" = "false" ] && [ -n "$DEFAULT_CONF_DIR" ]; then
 | 
			
		||||
  [ -d "/config" ] && cp -Rf "$DEFAULT_CONF_DIR/." "/config/" 2>/dev/null
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Copy custom data files
 | 
			
		||||
if [ "$DATA_DIR_INITIALIZED" = "false" ] && [ -n "$DEFAULT_DATA_DIR" ]; then
 | 
			
		||||
  [ -d "/data" ] && cp -Rf "$DEFAULT_DATA_DIR/." "/data/" 2>/dev/null
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Copy html files
 | 
			
		||||
if [ "$DATA_DIR_INITIALIZED" = "false" ] && [ -d "$DEFAULT_DATA_DIR/data/htdocs" ]; then
 | 
			
		||||
  [ -d "/data" ] && cp -Rf "$DEFAULT_DATA_DIR/data/htdocs/." "$WWW_ROOT_DIR/" 2>/dev/null
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Post copy commands
 | 
			
		||||
[ -d "/data/cherokee/graphs" ] || mkdir -p "/data/cherokee/graphs"
 | 
			
		||||
[ -d "/config/cherokee/themes" ] && cp -Rf "/config/cherokee/themes/." "/usr/local/share/cherokee/share/cherokee/themes/"
 | 
			
		||||
[ -d "/usr/local/share/cherokee/icons" ] && [ ! -d "/config/cherokee/icons" ] && mkdir -p "/config/cherokee/icons" && cp -Rf "/usr/local/share/cherokee/icons/." "/config/cherokee/icons/"
 | 
			
		||||
[ -d "/usr/local/share/cherokee/themes" ] && [ ! -d "/config/cherokee/themes" ] && mkdir -p "/config/cherokee/themes" && cp -Rf "/usr/local/share/cherokee/themes/." "/config/cherokee/themes/"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Initialized
 | 
			
		||||
[ -d "/data" ] && touch "/data/.docker_has_run"
 | 
			
		||||
[ -d "/config" ] && touch "/config/.docker_has_run"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# APP Variables overrides
 | 
			
		||||
[ -f "/root/env.sh" ] && . "/root/env.sh"
 | 
			
		||||
[ -f "/config/env.sh" ] && "/config/env.sh"
 | 
			
		||||
[ -f "/config/.env.sh" ] && . "/config/.env.sh"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Actions based on env
 | 
			
		||||
chmod -Rfv 664 "/data/cherokee"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# begin main app
 | 
			
		||||
case "$1" in
 | 
			
		||||
healthcheck)
 | 
			
		||||
  shift 1
 | 
			
		||||
  __heath_check "${SERVICE_NAME:-bash}"
 | 
			
		||||
  exit $?
 | 
			
		||||
  ;;
 | 
			
		||||
 | 
			
		||||
certbot)
 | 
			
		||||
  shift 1
 | 
			
		||||
  SSL_CERT_BOT="true"
 | 
			
		||||
  if [ "$1" = "create" ]; then
 | 
			
		||||
    shift 1
 | 
			
		||||
    __certbot
 | 
			
		||||
  elif [ "$1" = "renew" ]; then
 | 
			
		||||
    shift 1
 | 
			
		||||
    __certbot "renew certonly --force-renew"
 | 
			
		||||
  else
 | 
			
		||||
    __exec_command "certbot" "$@"
 | 
			
		||||
  fi
 | 
			
		||||
  ;;
 | 
			
		||||
 | 
			
		||||
*)
 | 
			
		||||
  if __pgrep "$SERVICE_NAME" && [ ! -f "/tmp/$SERVICE_NAME.pid" ]; then
 | 
			
		||||
    echo "$SERVICE_NAME is running"
 | 
			
		||||
  else
 | 
			
		||||
    touch "/tmp/$SERVICE_NAME.pid"
 | 
			
		||||
    echo "Starting cherokee-admin on port 9090"
 | 
			
		||||
    cherokee-admin -b -p 9090 -C /etc/cherokee/cherokee.conf &
 | 
			
		||||
    __exec_command "$SERVICE_COMMAND" || rm -Rf "/tmp/$SERVICE_NAME.pid"
 | 
			
		||||
  fi
 | 
			
		||||
  ;;
 | 
			
		||||
esac
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Set exit code
 | 
			
		||||
exitCode="${exitCode:-$?}"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# End application
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# lets exit with code
 | 
			
		||||
exit ${exitCode:-$?}
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# end
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB  | 
| 
		 Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 93 KiB  | 
| 
		 Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB  | 
| 
		 Before Width: | Height: | Size: 766 B After Width: | Height: | Size: 766 B  | 
| 
		 Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB  | 
| 
		 Before Width: | Height: | Size: 429 B After Width: | Height: | Size: 429 B  |