#!/usr/bin/env bash set -euxo pipefail echo "=== tingz pre-docker script ===" echo "This script assumes you're running it on a Debian 12+ system." echo "This script assumes you haven't created a tingz user & group yet." echo "This script assumes you are using the default volumes directory structure." echo echo "Description:" echo "This script creates a tingz user & group," echo "creates and sets permissions for volumes," echo "and creates a .env.development file." echo echo "1. Check dependencies" commands=(docker adduser addgroup cut getent) for cmd in "${commands[@]}"; do if ! command -v "$cmd" &> /dev/null; then echo "Error: $cmd could not be found" exit 1 fi done echo "2. Add tingz user & group" addgroup --system tingz GID=$(getent group tingz | cut -d: -f3) adduser --ingroup tingz --system --no-create-home --uid ${GID} --shell /usr/sbin/nologin tingz echo "3. Verify tingz group and user" getent group tingz getent passwd tingz echo "4. Create and set permissions for volumes" mkdir -p volumes/data volumes/docs volumes/deploys chown -R tingz:tingz volumes echo "5. Create .env.tmp file" ADMIN_TOKEN=$(openssl rand -hex 16) cat > .env.tmp << EOF ADMIN_TOKEN=${ADMIN_TOKEN} HOST=127.0.0.1 PORT=8080 UID=${GID} GID=${GID} DEPLOY_ROOT=/var/www/docs RELEASE_ROOT=/var/www/deploys DB_PATH=/data/deployer.db MAX_UPLOAD_SIZE=104857600 EOF echo "Please verify .env.temp and move into .env if everything is correct" echo "=== .env.tmp ===" cat .env.tmp echo "=== .env ===" echo "Done"