mirror of
https://github.com/chevereto/docker.git
synced 2025-12-17 13:39:43 +01:00
improve sh
This commit is contained in:
10
Makefile
10
Makefile
@@ -158,7 +158,7 @@ cloudflare:
|
|||||||
@./scripts/system/cloudflare.sh
|
@./scripts/system/cloudflare.sh
|
||||||
|
|
||||||
cloudflare--create:
|
cloudflare--create:
|
||||||
@./scripts/system/cloudflare--create.sh | (printf "CLOUDFLARE_IDENTIFIER=" && cat) >> ${NAMESPACE_FILE}
|
@NAMESPACE_FILE=${NAMESPACE_FILE} ./scripts/system/cloudflare--create.sh
|
||||||
|
|
||||||
cloudflare--delete:
|
cloudflare--delete:
|
||||||
@./scripts/system/cloudflare--delete.sh
|
@./scripts/system/cloudflare--delete.sh
|
||||||
@@ -215,7 +215,7 @@ down--volumes: feedback feedback--compose
|
|||||||
spawn: feedback feedback--compose feedback--url cloudflare--create up-d
|
spawn: feedback feedback--compose feedback--url cloudflare--create up-d
|
||||||
|
|
||||||
.PHONY: deploy
|
.PHONY: deploy
|
||||||
deploy: feedback feedback--compose feedback--url
|
deploy:
|
||||||
@./scripts/system/deploy.sh
|
@./scripts/system/deploy.sh
|
||||||
|
|
||||||
update: feedback feedback--compose feedback--url
|
update: feedback feedback--compose feedback--url
|
||||||
@@ -225,12 +225,6 @@ destroy: feedback feedback--compose cloudflare--delete
|
|||||||
${DOCKER_COMPOSE} down --volumes
|
${DOCKER_COMPOSE} down --volumes
|
||||||
@rm namespace/${NAMESPACE}
|
@rm namespace/${NAMESPACE}
|
||||||
|
|
||||||
# Provisioning
|
|
||||||
|
|
||||||
provision: feedback--short
|
|
||||||
make namespace HOSTNAME="${NAMESPACE}.${DOMAIN}"
|
|
||||||
make spawn NAMESPACE=${NAMESPACE}
|
|
||||||
|
|
||||||
install: feedback--short
|
install: feedback--short
|
||||||
docker exec -it --user ${DOCKER_USER} \
|
docker exec -it --user ${DOCKER_USER} \
|
||||||
${CONTAINER_BASENAME}_${SERVICE} \
|
${CONTAINER_BASENAME}_${SERVICE} \
|
||||||
|
|||||||
14
README.md
14
README.md
@@ -96,20 +96,6 @@ make image
|
|||||||
make namespace NAMESPACE=yourproject HOSTNAME=yourdomain.tld
|
make namespace NAMESPACE=yourproject HOSTNAME=yourdomain.tld
|
||||||
```
|
```
|
||||||
|
|
||||||
## Spawn Chevereto instance
|
|
||||||
|
|
||||||
* Run the Chevereto container using [spawn](docs/DOCKER-COMPOSE.md#spawn):
|
|
||||||
|
|
||||||
```sh
|
|
||||||
make spawn NAMESPACE=yourproject
|
|
||||||
```
|
|
||||||
|
|
||||||
* 💡 When using free edition pass `EDITION=free`:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
make spawn NAMESPACE=yourproject EDITION=free
|
|
||||||
```
|
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
* [SETUP](./docs/SETUP.md)
|
* [SETUP](./docs/SETUP.md)
|
||||||
|
|||||||
@@ -53,10 +53,6 @@ The A record used to point CNAMEs generated by this project.
|
|||||||
|
|
||||||
**Note:** Following commands must run only after creating the [NAMESPACE](NAMESPACE.md).
|
**Note:** Following commands must run only after creating the [NAMESPACE](NAMESPACE.md).
|
||||||
|
|
||||||
### Spawn instance
|
|
||||||
|
|
||||||
Refer to [make spawn](DOCKER-COMPOSE.md#spawn).
|
|
||||||
|
|
||||||
### Destroy instance
|
### Destroy instance
|
||||||
|
|
||||||
Refer to [make destroy](DOCKER-COMPOSE.md#destroy).
|
Refer to [make destroy](DOCKER-COMPOSE.md#destroy).
|
||||||
|
|||||||
@@ -97,16 +97,6 @@ make down--volumes
|
|||||||
|
|
||||||
## Combined commands
|
## Combined commands
|
||||||
|
|
||||||
### Spawn
|
|
||||||
|
|
||||||
💡 Use it right after creating the NAMESPACE.
|
|
||||||
|
|
||||||
This will run [cloudflare--create](CLOUDFLARE.md#create-cname-record) and [up-d](DOCKER-COMPOSE.md#up-daemon).
|
|
||||||
|
|
||||||
```sh
|
|
||||||
make spawn NAMESPACE=yourproject
|
|
||||||
```
|
|
||||||
|
|
||||||
### Destroy
|
### Destroy
|
||||||
|
|
||||||
💡 Use it when needing to complety destroy an instance.
|
💡 Use it when needing to complety destroy an instance.
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
curl --request POST \
|
set -e
|
||||||
|
echo "* Creating ${HOSTNAME} CNAME record at CloudFlare"
|
||||||
|
CLOUDFLARE_IDENTIFIER=$(curl --request POST \
|
||||||
--url https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/dns_records \
|
--url https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/dns_records \
|
||||||
--header "Content-Type: application/json" \
|
--header "Content-Type: application/json" \
|
||||||
--header "Authorization: Bearer ${CLOUDFLARE_TOKEN}" \
|
--header "Authorization: Bearer ${CLOUDFLARE_TOKEN}" \
|
||||||
@@ -9,4 +11,10 @@ curl --request POST \
|
|||||||
"type": "CNAME",
|
"type": "CNAME",
|
||||||
"proxied": true,
|
"proxied": true,
|
||||||
"ttl": 3600
|
"ttl": 3600
|
||||||
}' | jq -r '.result.id'
|
}' | jq -r '.result.id')
|
||||||
|
if [ "${CLOUDFLARE_IDENTIFIER}" == null ]; then
|
||||||
|
echo "CloudFlare integration failure"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "CLOUDFLARE_IDENTIFIER=${CLOUDFLARE_IDENTIFIER}" >>${NAMESPACE_FILE}
|
||||||
|
echo "[OK] Hostname created @ ${CLOUDFLARE_IDENTIFIER}"
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
||||||
curl --request DELETE \
|
curl --request DELETE \
|
||||||
--url https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/dns_records/${CLOUDFLARE_IDENTIFIER} \
|
--url https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/dns_records/${CLOUDFLARE_IDENTIFIER} \
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
||||||
CLOUDFLARE_FILE_PATH=${PROJECT_DIR}/../nginx/cloudflare.conf
|
CLOUDFLARE_FILE_PATH=${PROJECT_DIR}/../nginx/cloudflare.conf
|
||||||
cat >${CLOUDFLARE_FILE_PATH} <<EOM
|
cat >${CLOUDFLARE_FILE_PATH} <<EOM
|
||||||
|
|||||||
@@ -2,8 +2,9 @@
|
|||||||
set -e
|
set -e
|
||||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
||||||
CRON_FILE=/etc/cron.d/chevereto
|
CRON_FILE=/etc/cron.d/chevereto
|
||||||
|
echo "* Creating ${CRON_FILE}"
|
||||||
cat >${CRON_FILE} <<EOM
|
cat >${CRON_FILE} <<EOM
|
||||||
* * * * * ${USER} ${PROJECT_DIR}/cron--run.sh >/dev/null 2>&1
|
* * * * * ${USER} ${PROJECT_DIR}/cron--run.sh >/dev/null 2>&1
|
||||||
45 2 * * * ${USER} ${PROJECT_DIR}/cloudflare.sh >/dev/null 2>&1
|
45 2 * * * ${USER} ${PROJECT_DIR}/cloudflare.sh >/dev/null 2>&1
|
||||||
EOM
|
EOM
|
||||||
echo ${CRON_FILE}
|
echo "[OK] Cron file created @ ${CRON_FILE}"
|
||||||
|
|||||||
@@ -1,23 +1,26 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
NAMESPACE="${NAMESPACE}"
|
NAMESPACE="${NAMESPACE}"
|
||||||
ADMIN_USER="${ADMIN_USER:-admin}"
|
ADMIN_USER="${ADMIN_USER:-admin}"
|
||||||
ADMIN_EMAIL="${ADMIN_EMAIL}"
|
ADMIN_EMAIL="${ADMIN_EMAIL}"
|
||||||
ADMIN_PASSWORD="$(openssl rand -base64 8)"
|
ADMIN_PASSWORD="$(openssl rand -base64 8)"
|
||||||
|
if [ -z "${CLOUDFLARE_A_NAME}" ]; then
|
||||||
NAMESPACE=${NAMESPACE} make --no-print-directory provision &&
|
HOSTNAME="${DOMAIN}"
|
||||||
NAMESPACE=${NAMESPACE} \
|
echo "* CLOUDFLARE_A_NAME is not set. Skipping DNS creation."
|
||||||
ADMIN_PASSWORD=${ADMIN_PASSWORD} \
|
else
|
||||||
ADMIN_EMAIL=${ADMIN_EMAIL} \
|
HOSTNAME="${NAMESPACE}.${DOMAIN}"
|
||||||
ADMIN_USER=${ADMIN_USER} make --no-print-directory install
|
fi
|
||||||
|
echo "* Using hostname ${HOSTNAME}"
|
||||||
|
make --no-print-directory feedback feedback--compose feedback--url NAMESPACE=${NAMESPACE}
|
||||||
|
make --no-print-directory namespace NAMESPACE=${NAMESPACE} HOSTNAME="${HOSTNAME}"
|
||||||
|
if [ -n "${CLOUDFLARE_A_NAME}" ]; then
|
||||||
|
make --no-print-directory cloudflare--create NAMESPACE=${NAMESPACE}
|
||||||
|
fi
|
||||||
|
make --no-print-directory up-d NAMESPACE=${NAMESPACE}
|
||||||
|
make --no-print-directory install NAMESPACE=${NAMESPACE} ADMIN_USER=${ADMIN_USER} ADMIN_EMAIL=${ADMIN_EMAIL} ADMIN_PASSWORD=${ADMIN_PASSWORD}
|
||||||
echo ""
|
echo ""
|
||||||
echo "🚀 Deployment complete!"
|
echo "[OK] Deployment complete!"
|
||||||
|
|
||||||
NAMESPACE=${NAMESPACE} make --no-print-directory feedback--url
|
NAMESPACE=${NAMESPACE} make --no-print-directory feedback--url
|
||||||
|
|
||||||
echo "Login details"
|
echo "Login details"
|
||||||
echo "--"
|
echo "--"
|
||||||
echo "Email: ${ADMIN_EMAIL}"
|
echo "Email: ${ADMIN_EMAIL}"
|
||||||
|
|||||||
@@ -4,13 +4,14 @@ if [ -f "${NAMESPACE_FILE}" ]; then
|
|||||||
echo "[!] File ${NAMESPACE_FILE} already exists"
|
echo "[!] File ${NAMESPACE_FILE} already exists"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
echo "* Creating ${NAMESPACE_FILE}"
|
||||||
if [ "${ENCRYPTION_KEY}" == "" ]; then
|
if [ "${ENCRYPTION_KEY}" == "" ]; then
|
||||||
ENCRYPTION_KEY=$(openssl rand -base64 32)
|
ENCRYPTION_KEY=$(openssl rand -base64 32)
|
||||||
echo '🔑 Using auto encryption key'
|
echo '* 🔑 Using auto encryption key'
|
||||||
fi
|
fi
|
||||||
mkdir -p $(dirname ${NAMESPACE_FILE})
|
mkdir -p $(dirname ${NAMESPACE_FILE})
|
||||||
cat >${NAMESPACE_FILE} <<EOM
|
cat >${NAMESPACE_FILE} <<EOM
|
||||||
HOSTNAME=${HOSTNAME}
|
HOSTNAME=${HOSTNAME}
|
||||||
ENCRYPTION_KEY=${ENCRYPTION_KEY}
|
ENCRYPTION_KEY=${ENCRYPTION_KEY}
|
||||||
EOM
|
EOM
|
||||||
echo ${NAMESPACE_FILE}
|
echo "[OK] Namespace file created @ ${NAMESPACE_FILE}"
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ENV_FILE="./.env"
|
ENV_FILE="./.env"
|
||||||
|
|||||||
Reference in New Issue
Block a user