docs: add Quick Install (VS Code, Claude Code extension, install-all.sh); add install-all.sh fresh-machine setup script

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-02 23:41:01 -04:00
co-authored by Claude Opus 5.5
parent d357edd4a6
commit d67aa75c42
2 changed files with 146 additions and 1 deletions
Executable
+107
View File
@@ -0,0 +1,107 @@
#!/bin/bash
# =============================================================
# Dental Manager — fresh-machine install (README Steps 4–14, 16)
# Run in a terminal: bash install-all.sh
# It asks for your sudo password once at the start.
# Safe to re-run: every step skips what's already done.
# =============================================================
set -e
cd "$(dirname "$0")"
PROJECT_DIR="$(pwd)"
step() { echo ""; echo "=============================="; echo " $1"; echo "=============================="; }
sudo -v # ask for password up front
# keep sudo alive while the script runs
while true; do sudo -n true; sleep 50; kill -0 "$$" || exit; done 2>/dev/null &
step "Base tools (curl, wget, git)"
sudo apt-get update
sudo apt-get install -y curl wget ca-certificates git
step "STEP 4 — Node.js 20"
if command -v node >/dev/null && node -v | grep -q '^v2[0-9]'; then
echo "Node already installed: $(node -v)"
else
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
fi
node -v; npm -v
step "STEP 5 — Python (+ venv, pip)"
sudo apt-get install -y python3 python3-pip python3-venv
python3 --version
step "STEP 6 — Google Chrome"
if command -v google-chrome >/dev/null; then
echo "Chrome already installed"
else
wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -O /tmp/google-chrome-stable.deb
sudo apt-get install -y /tmp/google-chrome-stable.deb
fi
google-chrome --version
step "STEP 7 — PostgreSQL"
sudo apt-get install -y postgresql postgresql-contrib
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo -u postgres psql -tc "SELECT 1 FROM pg_database WHERE datname='dentalapp'" | grep -q 1 \
|| sudo -u postgres psql -c "CREATE DATABASE dentalapp OWNER postgres;"
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'mypassword';"
sudo sed -i 's/scram-sha-256/md5/g' /etc/postgresql/*/main/pg_hba.conf
sudo systemctl restart postgresql
PGPASSWORD=mypassword psql -U postgres -d dentalapp -h 127.0.0.1 -c 'SELECT 1' >/dev/null && echo "✓ PostgreSQL login works"
step "STEP 8 — Redis"
sudo apt-get install -y redis-server
sudo systemctl enable redis-server
sudo systemctl start redis-server
redis-cli ping
step "STEP 9 — rclone"
bash scripts/install-rclone.sh
step "STEP 10 — Node.js dependencies"
npm install
step "STEP 11 — Python dependencies (venvs)"
npm run setup:python
step "STEP 12 — .env files (only the missing ones; existing ones are kept)"
for f in packages/db/prisma/.env apps/Frontend/.env apps/Backend/.env \
apps/PatientDataExtractorService/.env apps/SeleniumService/.env apps/PaymentOCRService/.env; do
if [ -f "$f" ]; then echo "keep $f"
else cp "$f.example" "$f" && echo "created $f"; fi
done
step "STEP 13 — Database (migrate, generate, seed)"
npm run db:migrate
npm run db:generate
npm run db:seed
step "STEP 14 — nginx"
sudo apt-get install -y nginx
CERT=$(grep -m1 -oP 'ssl_certificate\s+\K\S+(?=;)' nginx.conf)
if sudo test -f "$CERT"; then
sudo cp nginx.conf /etc/nginx/sites-available/dental-app
sudo ln -sf /etc/nginx/sites-available/dental-app /etc/nginx/sites-enabled/dental-app
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl reload nginx
echo "✓ nginx configured"
else
echo "⚠ Skipped enabling the dental-app nginx site: certificate not found at"
echo " $CERT"
echo " Do the README's 'LAN HTTPS Setup' (certbot) first, then re-run this script."
fi
step "STEP 16 — Desktop shortcuts"
bash setup-desktop-shortcut.sh
echo ""
echo "============================================"
echo " Done. To run the app (Step 15):"
echo " Terminal 1: cd $PROJECT_DIR && npm run dev"
echo " Terminal 2: cd $PROJECT_DIR/apps/SeleniumService && .venv/bin/python3 agent.py"
echo " ...or double-click the 'Dental App' desktop shortcut."
echo "============================================"