inception/Makefile
2025-06-17 15:22:16 +02:00

124 lines
2.7 KiB
Makefile

BUILD_PATH=__build/
DOCKER=docker
MKTEMP=mktemp
include .env
SRC_COMPOSE=srcs/
SRC_WWW_MORE=srcs/www/
CERT_PATH=srcs/__cert/
CERT_PATH_FILES=$(addprefix $(CERT_PATH), ca.pem cert.key cert.crt )
.ONESHELL :
.SHELLFLAGS = -eu -c
.PHONY : run reset re cert_reset cert_re help
### pretty logs ####
_ECHO = echoo(){ \
if [ -t 1 ]; then \
echo "\e[30;47;1m$$*\e[0m"; \
else \
echo "$$*"; \
fi; \
}
## Run the compose.
run : $(CERT_PATH_FILES)
@$(_ECHO)
echoo "Running '$(SRC_COMPOSE)'..."
cd -- $(SRC_COMPOSE)
mkdir -p $(VOLUMES_PATH)/www
mkdir -p $(VOLUMES_PATH)/db
DATABASE_PWD="$(DATABASE_PWD)" VOLUMES_PATH="$(VOLUMES_PATH)" $(DOCKER) compose up --build
>/dev/null cd -
## Remove all content of the website.
reset :
@$(_ECHO)
echoo "Removing all data..."
cd -- $(SRC_COMPOSE)
docker compose down -v
>/dev/null cd -
## 'reset' then 'run'
re : reset run
@$(_ECHO)
echo
echo "run \`make\` or \`make run\` to run the docker."
## Create the SSL certificate.
cert : $(CERT_PATH_FILES)
$(CERT_PATH_FILES) :
@$(_ECHO)
echoo "Creating SSL certificate files..."
mkdir -p $(CERT_PATH)
cd $(CERT_PATH)
echoo " -> Creating CA..."
# Create local CA
TMP_CA_KEY=$$($(MKTEMP))
openssl genrsa -out $$TMP_CA_KEY 2048
openssl req -x509 -new -nodes -key $$TMP_CA_KEY -sha256 -days 1825 -out ca.pem
echoo " -> Creating certificate for $(DOMAIN)..."
# Create certificate for $(DOMAIN)
openssl genrsa -out "cert.key" 2048
TMP_CA_CSR=$$($(MKTEMP))
openssl req -new -key cert.key -out $$TMP_CA_CSR
TMP_EXT=$$($(MKTEMP))
>>$$TMP_EXT echo "authorityKeyIdentifier=keyid,issuer"
>>$$TMP_EXT echo "basicConstraints=CA:FALSE"
>>$$TMP_EXT echo "keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment"
>>$$TMP_EXT echo "subjectAltName = @alt_names"
>>$$TMP_EXT echo ""
>>$$TMP_EXT echo "[alt_names]"
>>$$TMP_EXT echo "DNS.1 = $(DOMAIN)"
openssl x509 -req -in $$TMP_CA_CSR -CA ca.pem -CAkey $$TMP_CA_KEY \
-CAcreateserial -out cert.crt -days 825 -sha256 -extfile $$TMP_EXT
rm $$TMP_CA_KEY $$TMP_CA_CSR $$TMP_EXT
echo
echo "====="
echo "to avoid \"this website was self-signed\" warnings,"
echo "install $(CERT_PATH)/ca.pem on whatever you need i guess"
echo "====="
echo
>/dev/null cd -
## Remove the SSL certificate.
cert_reset :
@$(_ECHO)
echoo "Removing SSL certificate files..."
rm -rf $(CERT_PATH)
## 'cert_reset' then 'cert'
cert_re : cert_reset $(CERT_PATH_FILES)
## Show help
help :
@$(_ECHO)
echo
echo "run Run the compose."
echo "reset Remove all content of the website."
echo "re 'reset' then 'run'."
echo
echo "cert Create the SSL certificate."
echo "cert_reset Remove the SSL certificate."
echo "cert_re 'cert_reset' then 'cert'."
echo