mirror of
https://github.com/aliasvault/aliasvault.git
synced 2026-01-23 05:21:45 -05:00
79 lines
2.6 KiB
Bash
Executable File
79 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Define colors for CLI output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[0;33m'
|
|
BLUE='\033[0;34m'
|
|
MAGENTA='\033[0;35m'
|
|
CYAN='\033[0;36m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Define the path to the .env and .env.example files
|
|
ENV_FILE=".env"
|
|
ENV_EXAMPLE_FILE=".env.example"
|
|
|
|
# Function to generate a new 32-character JWT key
|
|
generate_jwt_key() {
|
|
dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 | head -c 32
|
|
}
|
|
|
|
# Function to create .env file from .env.example if it doesn't exist
|
|
create_env_file() {
|
|
if [ ! -f "$ENV_FILE" ]; then
|
|
if [ -f "$ENV_EXAMPLE_FILE" ]; then
|
|
cp "$ENV_EXAMPLE_FILE" "$ENV_FILE"
|
|
printf "${GREEN}> .env file created from .env.example.${NC}\n"
|
|
else
|
|
touch "$ENV_FILE"
|
|
printf "${YELLOW}> .env file created as empty because .env.example was not found.${NC}\n"
|
|
fi
|
|
else
|
|
printf "${CYAN}> .env file already exists.${NC}\n"
|
|
fi
|
|
}
|
|
|
|
# Function to check and populate the .env file with JWT_KEY
|
|
populate_jwt_key() {
|
|
if ! grep -q "^JWT_KEY=" "$ENV_FILE" || [ -z "$(grep "^JWT_KEY=" "$ENV_FILE" | cut -d '=' -f2)" ]; then
|
|
printf "${YELLOW}JWT_KEY not found or empty in $ENV_FILE. Generating a new JWT key...${NC}\n"
|
|
JWT_KEY=$(generate_jwt_key)
|
|
if grep -q "^JWT_KEY=" "$ENV_FILE"; then
|
|
awk -v key="$JWT_KEY" '/^JWT_KEY=/ {$0="JWT_KEY="key} 1' "$ENV_FILE" > "$ENV_FILE.tmp" && mv "$ENV_FILE.tmp" "$ENV_FILE"
|
|
else
|
|
printf "JWT_KEY=${JWT_KEY}" >> "$ENV_FILE\n"
|
|
fi
|
|
printf "${GREEN}> JWT_KEY has been added to $ENV_FILE.${NC}\n"
|
|
else
|
|
printf "${CYAN}> JWT_KEY already exists and has a value in $ENV_FILE.${NC}\n"
|
|
fi
|
|
}
|
|
|
|
# Function to print the CLI logo
|
|
print_logo() {
|
|
printf "${MAGENTA}\n"
|
|
printf "=========================================================\n"
|
|
printf " _ _ __ __ _ _ \n"
|
|
printf " /\ | (_) \ \ / / | | | \n"
|
|
printf " / \ | |_ __ _ __\ \ / /_ _ _ _| | |_\n"
|
|
printf " / /\ \ | | |/ _ / __\ \/ / _ | | | | | __|\n"
|
|
printf " / ____ \| | | (_| \__ \\ / (_| | |_| | | |_ \n"
|
|
printf " /_/ \_\_|_|\__,_|___/ \/ \__,_|\__,_|_|\__|\n"
|
|
printf "\n"
|
|
printf "=========================================================\n"
|
|
printf "${NC}\n"
|
|
}
|
|
|
|
# Run the functions and print status
|
|
print_logo
|
|
printf "${BLUE}Initializing AliasVault...${NC}\n"
|
|
create_env_file
|
|
populate_jwt_key
|
|
printf "${BLUE}Initialization complete.${NC}\n"
|
|
printf "\n"
|
|
printf "To build the images and start the containers, run the following command:\n"
|
|
printf "\n"
|
|
printf "${CYAN}$ docker compose up -d --build --force-recreate${NC}\n"
|
|
printf "\n"
|
|
printf "\n"
|