diff --git a/.env b/.env index fca522ee..f5d282d0 100644 --- a/.env +++ b/.env @@ -28,3 +28,10 @@ POSTGRES_HOST=db # MAX_CONCURRENCY=80 MIN_CONCURRENCY=10 + +# +# Rengine web interface super user (for non-interactive install) +# +DJANGO_SUPERUSER_USERNAME=rengine +DJANGO_SUPERUSER_EMAIL=rengine@example.com +DJANGO_SUPERUSER_PASSWORD=Sm7IJG.IfHAFw9snSKv diff --git a/Makefile b/Makefile index eec1d327..463846a2 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,4 @@ +include .env .DEFAULT_GOAL:=help # Credits: https://github.com/sherifabdlnaby/elastdocker/ @@ -25,7 +26,11 @@ build: ## Build all services. ${COMPOSE_PREFIX_CMD} docker compose ${COMPOSE_ALL_FILES} build ${SERVICES} username: ## Generate Username (Use only after make up). - ${COMPOSE_PREFIX_CMD} docker compose ${COMPOSE_ALL_FILES} exec web python3 manage.py createsuperuser +ifeq ($(isNonInteractive), true) + ${COMPOSE_PREFIX_CMD} docker-compose ${COMPOSE_ALL_FILES} exec web python3 manage.py createsuperuser --username ${DJANGO_SUPERUSER_USERNAME} --email ${DJANGO_SUPERUSER_EMAIL} --noinput +else + ${COMPOSE_PREFIX_CMD} docker-compose ${COMPOSE_ALL_FILES} exec web python3 manage.py createsuperuser +endif changepassword: ## Change password for user diff --git a/README.md b/README.md index 62858113..180dcd60 100644 --- a/README.md +++ b/README.md @@ -318,12 +318,27 @@ screenshot: { git clone https://github.com/yogeshojha/rengine && cd rengine ``` -1. Edit the dotenv file, **please make sure to change the password for postgresql `POSTGRES_PASSWORD`!** +1. Edit the `.env` file, **please make sure to change the password for postgresql `POSTGRES_PASSWORD`!** ```bash nano .env ``` +1. **Optional, only for non-interactive install**: In the `.env` file, **please make sure to change the super admin values!** + + ```bash + DJANGO_SUPERUSER_USERNAME=yourUsername + DJANGO_SUPERUSER_EMAIL=YourMail@example.com + DJANGO_SUPERUSER_PASSWORD=yourStrongPassword + ``` + If you need to carry out a non-interactive installation, you can setup the login, email and password of the web interface admin directly from the .env file (instead of manually setting them from prompts during the installation process). This option can be interesting for automated installation (via ansible, vagrant, etc.). + + `DJANGO_SUPERUSER_USERNAME`: web interface admin username (used to login to the web interface). + + `DJANGO_SUPERUSER_EMAIL`: web interface admin email. + + `DJANGO_SUPERUSER_PASSWORD`: web interface admin password (used to login to the web interface). + 1. In the dotenv file, you may also modify the Scaling Configurations ```bash @@ -352,6 +367,12 @@ screenshot: { sudo ./install.sh ``` + Or for a non-interactive installation, use `-n` argument (make sure you've modified the `.env` file before launching the installation). + + ```bash + sudo ./install.sh -n + ``` + If `install.sh` does not have install permission, please change it, `chmod +x install.sh` **reNgine can now be accessed from or if you're on the VPS ** @@ -367,12 +388,10 @@ Installation instructions can be found at [https://reNgine.wiki/install/detailed 1. Updating is as simple as running the following command: ```bash - cd rengine && sudo ./update.sh + cd rengine && sudo ./update.sh ``` If `update.sh` does not have execution permissions, please change it, `sudo chmod +x update.sh` - - **NOTE:** if you're updating from 1.3.6 and you're getting a 'password authentication failed' error, consider uninstalling 1.3.6 first, then install 2.x.x as you'd normally do. ### Changelog diff --git a/docker-compose.yml b/docker-compose.yml index cc70afaa..3d2dc052 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -96,6 +96,7 @@ services: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_PORT=${POSTGRES_PORT} - POSTGRES_HOST=${POSTGRES_HOST} + - DJANGO_SUPERUSER_PASSWORD=${DJANGO_SUPERUSER_PASSWORD} # THIS IS A MUST FOR CHECKING UPDATE, EVERYTIME A COMMIT IS MERGED INTO # MASTER, UPDATE THIS!!! MAJOR.MINOR.PATCH https://semver.org/ - RENGINE_CURRENT_VERSION='2.0.6' diff --git a/install.sh b/install.sh index 8fddf3ab..030c048e 100755 --- a/install.sh +++ b/install.sh @@ -1,5 +1,15 @@ #!/bin/bash +usageFunction() +{ + echo " " + tput setaf 2; + echo "Usage: $0 (-n) (-h)" + echo -e "\t-n Non-interactive installation (Optional)" + echo -e "\t-h Show usage" + exit 1 +} + tput setaf 2; cat web/art/reNgine.txt @@ -7,22 +17,29 @@ tput setaf 1; echo "Before running this script, please make sure Docker is runni tput setaf 2; echo "Changing the postgres username & password from .env is highly recommended." tput setaf 4; -read -p "Are you sure, you made changes to .env file (y/n)? " answer -answer=$(echo $answer | tr '[:upper:]' '[:lower:]') -case ${answer:0:1} in - y|yes ) - echo "Continuing Installation!" - ;; - * ) - if [ -x "$(command -v nano)" ]; then - tput setaf 2; echo "nano already installed, skipping." - else - sudo apt update && sudo apt install nano -y - tput setaf 2; echo "nano installed!!!" - fi - nano .env - ;; -esac + +isNonInteractive=false +while getopts nh opt; do + case $opt in + n) isNonInteractive=true ;; + h) usageFunction ;; + ?) usageFunction ;; + esac +done + +if [ $isNonInteractive = false ]; then + read -p "Are you sure, you made changes to .env file (y/n)? " answer + case ${answer:0:1} in + y|Y|yes|YES|Yes ) + echo "Continiuing Installation!" + ;; + * ) + nano .env + ;; + esac +else + echo "Non-interactive installation parameter set. Installation begins." +fi echo " " tput setaf 3; @@ -67,6 +84,7 @@ else tput setaf 2; echo "Docker installed!!!" fi + echo " " tput setaf 4; echo "#########################################################################" @@ -75,12 +93,13 @@ echo "#########################################################################" if [ -x "$(command -v docker compose)" ]; then tput setaf 2; echo "Docker Compose already installed, skipping." else - curl -L "https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + curl -L "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose tput setaf 2; echo "Docker Compose installed!!!" fi + echo " " tput setaf 4; echo "#########################################################################" @@ -107,6 +126,8 @@ else exit 1 fi + + echo " " tput setaf 4; echo "#########################################################################" @@ -122,7 +143,7 @@ if [ "${failed}" -eq 0 ]; then echo "#########################################################################" echo "Creating an account" echo "#########################################################################" - make username + make username isNonInteractive=$isNonInteractive tput setaf 2 && printf "\n%s\n" "Thank you for installing reNgine, happy recon!!" echo "In case you have unapplied migrations (see above in red), run 'make migrate'"