WIP
This commit is contained in:
304
docs/TROUBLESHOOTING_SETUP.md
Normal file
304
docs/TROUBLESHOOTING_SETUP.md
Normal file
@ -0,0 +1,304 @@
|
||||
# Setup Troubleshooting Guide
|
||||
|
||||
## Step-by-Step Manual Setup
|
||||
|
||||
Let's go through each step manually to identify where the issue occurs.
|
||||
|
||||
### Step 1: Check Prerequisites
|
||||
|
||||
```bash
|
||||
# Check Node.js version (should be 16+)
|
||||
node --version
|
||||
|
||||
# Check npm version
|
||||
npm --version
|
||||
|
||||
# Check if PostgreSQL is installed and running
|
||||
psql --version
|
||||
|
||||
# Check if PostgreSQL service is running
|
||||
# On Ubuntu/Debian:
|
||||
sudo systemctl status postgresql
|
||||
|
||||
# On macOS:
|
||||
brew services list | grep postgresql
|
||||
|
||||
# On Windows:
|
||||
# Check Services in Task Manager for PostgreSQL
|
||||
```
|
||||
|
||||
### Step 2: Database Setup (Most Common Issue)
|
||||
|
||||
```bash
|
||||
# Start PostgreSQL if not running
|
||||
# Ubuntu/Debian:
|
||||
sudo systemctl start postgresql
|
||||
|
||||
# macOS:
|
||||
brew services start postgresql
|
||||
|
||||
# Connect to PostgreSQL (try different approaches)
|
||||
# Option 1: Default postgres user
|
||||
sudo -u postgres psql
|
||||
|
||||
# Option 2: Your system user
|
||||
psql -U postgres
|
||||
|
||||
# Option 3: Specify host
|
||||
psql -h localhost -U postgres
|
||||
|
||||
# Once connected, create databases:
|
||||
CREATE DATABASE bookmark_manager;
|
||||
CREATE DATABASE bookmark_manager_test;
|
||||
|
||||
# Create a user (optional but recommended)
|
||||
CREATE USER bookmark_user WITH PASSWORD 'secure_password_123';
|
||||
GRANT ALL PRIVILEGES ON DATABASE bookmark_manager TO bookmark_user;
|
||||
GRANT ALL PRIVILEGES ON DATABASE bookmark_manager_test TO bookmark_user;
|
||||
|
||||
# List databases to verify
|
||||
\l
|
||||
|
||||
# Exit PostgreSQL
|
||||
\q
|
||||
```
|
||||
|
||||
### Step 3: Backend Setup
|
||||
|
||||
```bash
|
||||
# Navigate to backend directory
|
||||
cd backend
|
||||
|
||||
# Install dependencies (this might take a while)
|
||||
npm install
|
||||
|
||||
# If npm install fails, try:
|
||||
npm install --legacy-peer-deps
|
||||
|
||||
# Or clear cache first:
|
||||
npm cache clean --force
|
||||
npm install
|
||||
```
|
||||
|
||||
### Step 4: Environment Configuration
|
||||
|
||||
```bash
|
||||
# Copy the example environment file
|
||||
cp .env.example .env
|
||||
|
||||
# Edit the .env file with your actual values
|
||||
nano .env
|
||||
# OR
|
||||
code .env
|
||||
# OR
|
||||
vim .env
|
||||
```
|
||||
|
||||
**Edit your `.env` file with these values:**
|
||||
|
||||
```env
|
||||
# Server Configuration
|
||||
NODE_ENV=development
|
||||
PORT=3001
|
||||
|
||||
# Database Configuration (CHANGE THESE)
|
||||
DB_HOST=localhost
|
||||
DB_PORT=5432
|
||||
DB_NAME=bookmark_manager
|
||||
DB_USER=postgres
|
||||
DB_PASSWORD=your_actual_postgres_password
|
||||
DB_SSL=false
|
||||
|
||||
# JWT Configuration (CHANGE THIS)
|
||||
JWT_SECRET=your_very_long_random_secret_key_at_least_32_characters_long
|
||||
JWT_EXPIRES_IN=24h
|
||||
|
||||
# Email Configuration (OPTIONAL - can skip for now)
|
||||
EMAIL_HOST=smtp.gmail.com
|
||||
EMAIL_PORT=587
|
||||
EMAIL_SECURE=false
|
||||
EMAIL_USER=your_email@gmail.com
|
||||
EMAIL_PASSWORD=your_app_password
|
||||
EMAIL_FROM=your_email@gmail.com
|
||||
|
||||
# Application Configuration
|
||||
ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
|
||||
BASE_URL=http://localhost:3001
|
||||
|
||||
# Security Configuration
|
||||
BCRYPT_SALT_ROUNDS=12
|
||||
RATE_LIMIT_WINDOW_MS=900000
|
||||
RATE_LIMIT_MAX_REQUESTS=100
|
||||
AUTH_RATE_LIMIT_MAX=5
|
||||
```
|
||||
|
||||
### Step 5: Test Database Connection
|
||||
|
||||
```bash
|
||||
# Test if you can connect to the database with your credentials
|
||||
psql -h localhost -U postgres -d bookmark_manager
|
||||
|
||||
# If this works, exit with:
|
||||
\q
|
||||
```
|
||||
|
||||
### Step 6: Initialize Database Tables
|
||||
|
||||
```bash
|
||||
# Try to initialize the database
|
||||
npm run db:init
|
||||
|
||||
# If this fails, let's check what's available:
|
||||
npm run
|
||||
|
||||
# Try individual database commands:
|
||||
npm run db:status
|
||||
npm run db:diagnostics
|
||||
```
|
||||
|
||||
### Step 7: Start the Application
|
||||
|
||||
```bash
|
||||
# Try starting in development mode
|
||||
npm run dev
|
||||
|
||||
# If that fails, try:
|
||||
npm start
|
||||
|
||||
# If both fail, try running the server directly:
|
||||
node server.js
|
||||
```
|
||||
|
||||
## Common Error Solutions
|
||||
|
||||
### Error: "Database not connected"
|
||||
|
||||
**Solution:**
|
||||
1. Make sure PostgreSQL is running
|
||||
2. Check your database credentials in `.env`
|
||||
3. Test connection manually:
|
||||
```bash
|
||||
psql -h localhost -U postgres -d bookmark_manager
|
||||
```
|
||||
|
||||
### Error: "ECONNREFUSED" or "Connection refused"
|
||||
|
||||
**Solution:**
|
||||
1. PostgreSQL is not running:
|
||||
```bash
|
||||
# Ubuntu/Debian:
|
||||
sudo systemctl start postgresql
|
||||
|
||||
# macOS:
|
||||
brew services start postgresql
|
||||
```
|
||||
|
||||
2. Wrong host/port in `.env`:
|
||||
```env
|
||||
DB_HOST=localhost
|
||||
DB_PORT=5432
|
||||
```
|
||||
|
||||
### Error: "database does not exist"
|
||||
|
||||
**Solution:**
|
||||
```bash
|
||||
# Connect to PostgreSQL and create the database
|
||||
sudo -u postgres psql
|
||||
CREATE DATABASE bookmark_manager;
|
||||
CREATE DATABASE bookmark_manager_test;
|
||||
\q
|
||||
```
|
||||
|
||||
### Error: "authentication failed"
|
||||
|
||||
**Solution:**
|
||||
1. Check your PostgreSQL password
|
||||
2. Try connecting as postgres user:
|
||||
```bash
|
||||
sudo -u postgres psql
|
||||
```
|
||||
3. Reset postgres password if needed:
|
||||
```bash
|
||||
sudo -u postgres psql
|
||||
ALTER USER postgres PASSWORD 'newpassword';
|
||||
```
|
||||
|
||||
### Error: "npm install" fails
|
||||
|
||||
**Solution:**
|
||||
```bash
|
||||
# Clear npm cache
|
||||
npm cache clean --force
|
||||
|
||||
# Delete node_modules and package-lock.json
|
||||
rm -rf node_modules package-lock.json
|
||||
|
||||
# Reinstall
|
||||
npm install
|
||||
|
||||
# If still fails, try:
|
||||
npm install --legacy-peer-deps
|
||||
```
|
||||
|
||||
### Error: "Port 3001 already in use"
|
||||
|
||||
**Solution:**
|
||||
```bash
|
||||
# Find what's using the port
|
||||
lsof -i :3001
|
||||
|
||||
# Kill the process
|
||||
kill -9 <PID>
|
||||
|
||||
# Or change the port in .env:
|
||||
PORT=3002
|
||||
```
|
||||
|
||||
## Minimal Test Setup
|
||||
|
||||
If you're still having issues, let's try a minimal setup:
|
||||
|
||||
```bash
|
||||
# 1. Just test if Node.js works
|
||||
cd backend
|
||||
node -e "console.log('Node.js works!')"
|
||||
|
||||
# 2. Test if we can connect to PostgreSQL
|
||||
psql -U postgres -c "SELECT version();"
|
||||
|
||||
# 3. Test if npm install worked
|
||||
npm list --depth=0
|
||||
|
||||
# 4. Test if we can start the server without database
|
||||
# Comment out database initialization in server.js temporarily
|
||||
```
|
||||
|
||||
## Get Help
|
||||
|
||||
**Please share the specific error messages you're seeing, including:**
|
||||
|
||||
1. What command you ran
|
||||
2. The exact error message
|
||||
3. Your operating system
|
||||
4. Node.js version (`node --version`)
|
||||
5. PostgreSQL version (`psql --version`)
|
||||
|
||||
**Common commands to get system info:**
|
||||
```bash
|
||||
# System info
|
||||
uname -a
|
||||
|
||||
# Node.js version
|
||||
node --version
|
||||
|
||||
# npm version
|
||||
npm --version
|
||||
|
||||
# PostgreSQL version and status
|
||||
psql --version
|
||||
sudo systemctl status postgresql # Linux
|
||||
brew services list | grep postgresql # macOS
|
||||
```
|
||||
|
||||
This will help me provide more specific solutions for your setup issues.
|
||||
Reference in New Issue
Block a user