feat: update deployment scripts and README for improved setup and configuration
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -30,8 +30,10 @@ yarn-debug.log*
|
|||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
.pnpm-debug.log*
|
.pnpm-debug.log*
|
||||||
|
|
||||||
# env files (can opt-in for committing if needed)
|
# env files
|
||||||
.env*
|
.env*
|
||||||
|
!.env.local.example
|
||||||
|
!.postgres-env.example
|
||||||
|
|
||||||
# vercel
|
# vercel
|
||||||
.vercel
|
.vercel
|
||||||
|
|||||||
5
.postgres-env
Normal file
5
.postgres-env
Normal 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
|
||||||
86
README.md
86
README.md
@@ -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
|
```bash
|
||||||
npm run dev
|
DB_USER=postgres
|
||||||
# or
|
DB_PASS=your_actual_password
|
||||||
yarn dev
|
DB_HOST=192.168.2.175
|
||||||
# or
|
DB_PORT=5432
|
||||||
pnpm dev
|
DB_NAME=fairreview
|
||||||
# or
|
|
||||||
bun dev
|
|
||||||
```
|
```
|
||||||
|
|
||||||
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.
|
## Changing Domain Later
|
||||||
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
|
||||||
|
|
||||||
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
118
deploy.sh
Normal 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
43
update-domain.sh
Normal 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"
|
||||||
Reference in New Issue
Block a user