All tests fixed. Deployment on NAS prepared
This commit is contained in:
80
deployment_guide.md
Normal file
80
deployment_guide.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# GymFlow Deployment Guide (NAS / Existing Container)
|
||||
|
||||
This guide explains how to deploy GymFlow to your Ugreen NAS by integrating it into your existing `nodejs-apps` container.
|
||||
|
||||
## 1. Preparation (Build)
|
||||
|
||||
You need to build the application on your local machine before transferring it to the NAS.
|
||||
|
||||
### Build Frontend
|
||||
Run the following in the project root:
|
||||
```bash
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
This creates a `dist` folder with the compiled frontend.
|
||||
|
||||
### Build Backend
|
||||
Run the following in the project root:
|
||||
```bash
|
||||
cd server
|
||||
npm install
|
||||
npm run build
|
||||
cd ..
|
||||
```
|
||||
This creates a `server/dist` folder with the compiled backend.
|
||||
|
||||
## 2. Transfer Files
|
||||
|
||||
Copy the entire `gymflow` folder to your NAS.
|
||||
Destination: `nodejs_data/gymflow` (inside the folder mounted to `/usr/src/app`).
|
||||
|
||||
Ensure the following files/folders are present on the NAS:
|
||||
- `gymflow/dist/` (Frontend assets)
|
||||
- `gymflow/server/dist/` (Backend code)
|
||||
- `gymflow/server/package.json`
|
||||
- `gymflow/server/prisma/` (Schema for database)
|
||||
- `gymflow/ecosystem.config.cjs` (PM2 config)
|
||||
|
||||
*Note: You do not need to copy `node_modules`. We will install production dependencies on the NAS to ensure compatibility.*
|
||||
|
||||
## 3. Integration
|
||||
|
||||
Update your `docker-compose.yml` to include GymFlow in the startup command and map the new port.
|
||||
|
||||
### Update `command`
|
||||
Add the following to your existing command string (append before the final `pm2 logs`):
|
||||
```bash
|
||||
... && cd ../gymflow/server && npm install --omit=dev && DATABASE_URL=file:./prod.db npx prisma db push && cd .. && pm2 start ecosystem.config.cjs && ...
|
||||
```
|
||||
*Note: We assume `gymflow` is a sibling of `ag-beats` etc.*
|
||||
|
||||
**Full Command Example:**
|
||||
```yaml
|
||||
command: /bin/sh -c "npm install -g pm2 && cd ag-beats && npm install && cd ../ball-shooting && npm install && cd ../gymflow/server && npm install --omit=dev && DATABASE_URL=file:./prod.db npx prisma db push && cd .. && pm2 start ecosystem.config.cjs && cd ../ag-beats && pm2 start ecosystem.config.js && cd ../ball-shooting && pm2 start npm --name ag-ball -- start && pm2 logs --raw"
|
||||
```
|
||||
|
||||
### Update `ports`
|
||||
Add the GymFlow port (3003 inside container, mapped to your choice, e.g., 3033):
|
||||
```yaml
|
||||
ports:
|
||||
- "3030:3000"
|
||||
- "3031:3001"
|
||||
- "3032:3002"
|
||||
- "3033:3003" # GymFlow
|
||||
```
|
||||
|
||||
## 4. Environment Variables
|
||||
|
||||
GymFlow uses `dotenv` but in this setup PM2 handles the variables via `ecosystem.config.cjs`.
|
||||
- Port: `3003` (Internal)
|
||||
- Database: `server/prod.db` (SQLite)
|
||||
- Node Env: `production`
|
||||
|
||||
## 5. Nginx Proxy Manager
|
||||
|
||||
Point your domain (e.g., `gym.yourdomain.com`) to the NAS IP and the mapped port (`3033`).
|
||||
- Scheme: `http`
|
||||
- Forward Hostname / IP: `[NAS_IP]`
|
||||
- Forward Port: `3033`
|
||||
- Websockets Support: Enable (if needed for future features).
|
||||
Reference in New Issue
Block a user