feat: update deployment scripts and README for improved setup and configuration

This commit is contained in:
2026-02-22 03:05:15 +05:00
parent da463e6375
commit 14890b6875
5 changed files with 234 additions and 22 deletions

4
.gitignore vendored
View File

@@ -30,8 +30,10 @@ yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# env files (can opt-in for committing if needed)
# env files
.env*
!.env.local.example
!.postgres-env.example
# vercel
.vercel

5
.postgres-env Normal file
View File

@@ -0,0 +1,5 @@
DB_USER=postgres
DB_PASS=your_password_here
DB_HOST=192.168.2.175
DB_PORT=5432
DB_NAME=fairreview

View File

@@ -1,36 +1,80 @@
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
# FairReview - Steam Game Review Platform
## Getting Started
A gaming-focused website for reviewing Steam games with Steam account integration.
First, run the development server:
## Features
- **Public Access**: Browse games, read reviews
- **Website Account**: Register/login with email, upvote/downvote reviews
- **Steam Integration**: Link Steam account to post reviews with playtime & achievements displayed
## Tech Stack
- Next.js 14 (App Router)
- PostgreSQL (your existing DB at 192.168.2.175:5432)
- NextAuth.js with Credentials + Steam OpenID
- Tailwind CSS (gaming dark theme)
## Quick Deploy
### 1. Upload to Linux Server
Clone this repo to your Linux server.
### 2. Configure Database Credentials
Edit `.postgres-env`:
```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
DB_USER=postgres
DB_PASS=your_actual_password
DB_HOST=192.168.2.175
DB_PORT=5432
DB_NAME=fairreview
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
### 3. Run Deployment
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
```bash
chmod +x deploy.sh
./deploy.sh 192.168.2.175:3000
```
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
### 4. Update Steam API Key
## Learn More
After deployment, edit `.env.local` and add your Steam Web API key:
```
STEAM_API_KEY=your_steam_api_key
```
To learn more about Next.js, take a look at the following resources:
Then restart:
```bash
pm2 restart fairreview
```
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
## Changing Domain Later
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
```bash
./update-domain.sh fairreview.example.com
```
## Deploy on Vercel
## Useful Commands
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
```bash
pm2 status # Check app status
pm2 logs # View logs
pm2 restart fairreview # Restart app
```
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
## Project Structure
```
├── src/
│ ├── app/ # Next.js pages & API routes
│ ├── components/ # UI components
│ └── lib/ # Utilities (db, auth, steam)
├── prisma/
│ └── schema.prisma # Database schema
├── deploy.sh # Main deployment script
├── update-domain.sh # Domain update script
└── .postgres-env # DB credentials (you edit this)
```

118
deploy.sh Normal file
View File

@@ -0,0 +1,118 @@
#!/bin/bash
set -e
DOMAIN="${1:-192.168.2.175:3000}"
echo "=== FairReview Deployment Script ==="
echo "Target domain: $DOMAIN"
echo ""
# Check if running as root or with sudo
if [ "$EUID" -eq 0 ]; then
echo "Warning: Running as root is not recommended. Use a regular user with sudo."
echo ""
fi
# Load database credentials
if [ ! -f .postgres-env ]; then
echo "Error: .postgres-env file not found!"
echo "Please create .postgres-env with your database credentials."
exit 1
fi
source .postgres-env
# Validate credentials
if [ -z "$DB_PASS" ] || [ "$DB_PASS" = "your_password_here" ]; then
echo "Error: Please update .postgres-env with your actual database password."
exit 1
fi
echo "Database configuration:"
echo " Host: $DB_HOST:$DB_PORT"
echo " Database: $DB_NAME"
echo " User: $DB_USER"
echo ""
# Install Node.js 18.x
echo "=== Installing Node.js 18.x ==="
if ! command -v node &> /dev/null; then
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
else
echo "Node.js already installed: $(node --version)"
fi
# Install required packages
echo ""
echo "=== Installing required packages ==="
sudo apt update
sudo apt install -y curl build-essential git
# Install PM2 globally
echo ""
echo "=== Installing PM2 ==="
if ! command -v pm2 &> /dev/null; then
sudo npm install -g pm2
else
echo "PM2 already installed: $(pm2 --version)"
fi
# Install npm dependencies
echo ""
echo "=== Installing npm dependencies ==="
npm install
npm install next-auth@beta @prisma/client bcryptjs
npm install -D prisma @types/bcryptjs
# Create .env.local
echo ""
echo "=== Creating environment configuration ==="
NEXTAUTH_SECRET=$(openssl rand -base64 32)
cat > .env.local << EOF
DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@${DB_HOST}:${DB_PORT}/${DB_NAME}?sslmode=require"
NEXTAUTH_SECRET="${NEXTAUTH_SECRET}"
NEXTAUTH_URL="http://${DOMAIN}"
STEAM_API_KEY="YOUR_STEAM_WEB_API_KEY"
EOF
echo "Environment file created: .env.local"
echo " NEXTAUTH_URL: http://${DOMAIN}"
echo " Database: ${DB_HOST}:${DB_PORT}/${DB_NAME}"
echo ""
echo "IMPORTANT: Update STEAM_API_KEY in .env.local with your Steam Web API key!"
# Generate Prisma client and push schema
echo ""
echo "=== Setting up database ==="
npx prisma generate
npx prisma db push
# Build for production
echo ""
echo "=== Building for production ==="
npm run build
# Configure PM2
echo ""
echo "=== Starting application with PM2 ==="
pm2 stop fairreview 2>/dev/null || true
pm2 delete fairreview 2>/dev/null || true
pm2 start npm --name "fairreview" -- run start
# Save PM2 config for restart on reboot
pm2 save
# Setup PM2 startup (if systemd is available)
if command -v systemctl &> /dev/null; then
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u $USER --hp $HOME 2>/dev/null || true
fi
echo ""
echo "=== Deployment Complete ==="
echo "Application running at: http://${DOMAIN}"
echo ""
echo "Useful commands:"
echo " pm2 status - Check application status"
echo " pm2 logs - View application logs"
echo " pm2 restart fairreview - Restart application"

43
update-domain.sh Normal file
View File

@@ -0,0 +1,43 @@
#!/bin/bash
set -e
if [ -z "$1" ]; then
echo "Usage: ./update-domain.sh <domain>"
echo ""
echo "Examples:"
echo " ./update-domain.sh 192.168.2.175:3000"
echo " ./update-domain.sh fairreview.example.com"
exit 1
fi
NEW_DOMAIN="$1"
echo "=== Updating Domain ==="
echo "New domain: $NEW_DOMAIN"
# Check if .env.local exists
if [ ! -f .env.local ]; then
echo "Error: .env.local not found. Run deploy.sh first."
exit 1
fi
# Load database credentials
if [ -f .postgres-env ]; then
source .postgres-env
fi
# Update NEXTAUTH_URL in .env.local
sed -i "s|NEXTAUTH_URL=.*|NEXTAUTH_URL=\"http://$NEW_DOMAIN\"|" .env.local
echo "Updated NEXTAUTH_URL in .env.local"
# Rebuild and restart
echo "Rebuilding application..."
npm run build
echo "Restarting application..."
pm2 restart fairreview
echo ""
echo "=== Domain Update Complete ==="
echo "Application running at: http://$NEW_DOMAIN"