Public Access
38 lines
808 B
Bash
38 lines
808 B
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
ENV_FILE="${PROJECT_DIR}/.env"
|
|
ENV_EXAMPLE="${PROJECT_DIR}/.env.example"
|
|
SECRETS_DIR="${PROJECT_DIR}/secrets"
|
|
DATA_DIR="${PROJECT_DIR}/data"
|
|
|
|
create_secret() {
|
|
local path="$1"
|
|
|
|
if [ ! -s "$path" ]; then
|
|
umask 077
|
|
openssl rand -base64 48 | tr -d '\n' > "$path"
|
|
printf '\n' >> "$path"
|
|
fi
|
|
}
|
|
|
|
mkdir -p \
|
|
"$SECRETS_DIR" \
|
|
"$DATA_DIR/user" \
|
|
"$DATA_DIR/pictures" \
|
|
"$DATA_DIR/tmp"
|
|
|
|
if [ ! -f "$ENV_FILE" ]; then
|
|
cp "$ENV_EXAMPLE" "$ENV_FILE"
|
|
fi
|
|
|
|
create_secret "$SECRETS_DIR/db_password"
|
|
create_secret "$SECRETS_DIR/db_root_password"
|
|
|
|
chmod 0600 \
|
|
"$SECRETS_DIR/db_password" \
|
|
"$SECRETS_DIR/db_root_password"
|
|
|
|
printf 'Project prepared: %s\n' "$PROJECT_DIR"
|