Record interactive VPS installer
Этот коммит содержится в:
+65
-16
@@ -256,7 +256,8 @@ Use VPS-only deployment.
|
|||||||
│ ├── deploy-agent/
|
│ ├── deploy-agent/
|
||||||
│ └── vps/
|
│ └── vps/
|
||||||
│ ├── .env.example
|
│ ├── .env.example
|
||||||
│ └── bootstrap.sh
|
│ ├── bootstrap.sh
|
||||||
|
│ └── install.sh
|
||||||
└── docs/
|
└── docs/
|
||||||
├── FASTPANEL.md
|
├── FASTPANEL.md
|
||||||
├── FASTPANEL_MANUAL_FRONTEND.md
|
├── FASTPANEL_MANUAL_FRONTEND.md
|
||||||
@@ -268,6 +269,51 @@ Use VPS-only deployment.
|
|||||||
|
|
||||||
## Implemented so far
|
## Implemented so far
|
||||||
|
|
||||||
|
### VPS interactive installer
|
||||||
|
|
||||||
|
Added `deploy/vps/install.sh`.
|
||||||
|
|
||||||
|
It is an interactive root installer with progress and error logging.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
- shows current step `[01/13]` style;
|
||||||
|
- writes log file to `/tmp/wschat-install-YYYYMMDD-HHMMSS.log`;
|
||||||
|
- asks for project path, domains, FastPanel webroots, Telegram token, JWT secret;
|
||||||
|
- validates FastPanel webroot path shape;
|
||||||
|
- installs base packages;
|
||||||
|
- installs Node.js 20 via NodeSource;
|
||||||
|
- installs PM2;
|
||||||
|
- creates `/opt/ws-chat` directories;
|
||||||
|
- clones/updates repo;
|
||||||
|
- installs npm dependencies;
|
||||||
|
- writes `backend/.env`;
|
||||||
|
- writes `/opt/ws-chat/install-state.env`;
|
||||||
|
- starts/restarts PM2 process `wschat-backend`;
|
||||||
|
- checks backend health at `http://127.0.0.1:3000/health`;
|
||||||
|
- builds admin and widget;
|
||||||
|
- publishes static files if webroots are configured and already exist;
|
||||||
|
- prints FastPanel reverse proxy instructions for `api.example.ru`.
|
||||||
|
|
||||||
|
Installer does not create domains or edit FastPanel configs.
|
||||||
|
|
||||||
|
Run on VPS as root:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /opt/ws-chat/source
|
||||||
|
bash deploy/vps/install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
If repo is not cloned yet:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p /opt/ws-chat
|
||||||
|
cd /opt/ws-chat
|
||||||
|
git clone https://github.com/viktor138irk/chat.git source
|
||||||
|
cd source
|
||||||
|
bash deploy/vps/install.sh
|
||||||
|
```
|
||||||
|
|
||||||
### Root workspace
|
### Root workspace
|
||||||
|
|
||||||
- npm workspaces configured.
|
- npm workspaces configured.
|
||||||
@@ -397,21 +443,23 @@ FASTPANEL_SAFE_MODE=true
|
|||||||
- Update bundle workflow: `b1fa5ead43f33e80c7208b98bcea6e0fa68d5682`
|
- Update bundle workflow: `b1fa5ead43f33e80c7208b98bcea6e0fa68d5682`
|
||||||
- Raspberry armhf bootstrap fix: `fbe84c8b16a51cdd4931ecf0b1e0fa8654edec6a`
|
- Raspberry armhf bootstrap fix: `fbe84c8b16a51cdd4931ecf0b1e0fa8654edec6a`
|
||||||
- Architecture switched to VPS-only after Raspberry issues: `28b0ca37c4032633811cce4dc096d1c714c5d5a2`
|
- Architecture switched to VPS-only after Raspberry issues: `28b0ca37c4032633811cce4dc096d1c714c5d5a2`
|
||||||
- Project path renamed to `/opt/ws-chat` and PM2 process to `wschat-backend`: current updates
|
- Project path renamed to `/opt/ws-chat` and PM2 process to `wschat-backend`.
|
||||||
|
- Interactive VPS installer added: current updates.
|
||||||
|
|
||||||
## Next development steps
|
## Next development steps
|
||||||
|
|
||||||
1. Finish updating docs to WSChat/VPS-only architecture.
|
1. Test `deploy/vps/install.sh` on the VPS.
|
||||||
2. Update package names/descriptions from raspi-chat to wschat where useful.
|
2. Finish updating docs to WSChat/VPS-only architecture.
|
||||||
3. Add VPS backend deploy/update script:
|
3. Update package names/descriptions from raspi-chat to wschat where useful.
|
||||||
|
4. Add VPS backend deploy/update script or extend deploy-agent:
|
||||||
- install backend deps
|
- install backend deps
|
||||||
- create `/opt/ws-chat/data`
|
- create `/opt/ws-chat/data`
|
||||||
- prepare backend env
|
- prepare backend env
|
||||||
- build admin/widget
|
- build admin/widget
|
||||||
- publish static files safely
|
- publish static files safely
|
||||||
- start/restart backend with PM2 `wschat-backend`
|
- start/restart backend with PM2 `wschat-backend`
|
||||||
4. Fix widget production build so it outputs stable `widget.js`.
|
5. Fix widget production build so it outputs stable `widget.js`.
|
||||||
5. Add SQLite database layer:
|
6. Add SQLite database layer:
|
||||||
- sites
|
- sites
|
||||||
- operators
|
- operators
|
||||||
- site_operators
|
- site_operators
|
||||||
@@ -419,23 +467,23 @@ FASTPANEL_SAFE_MODE=true
|
|||||||
- conversations
|
- conversations
|
||||||
- messages
|
- messages
|
||||||
- settings
|
- settings
|
||||||
6. Persist widget messages.
|
7. Persist widget messages.
|
||||||
7. Implement Telegram bot bridge:
|
8. Implement Telegram bot bridge:
|
||||||
- send website messages to allowed operators
|
- send website messages to allowed operators
|
||||||
- map Telegram replies to conversations
|
- map Telegram replies to conversations
|
||||||
- send replies back to widget via WebSocket
|
- send replies back to widget via WebSocket
|
||||||
8. Add admin auth.
|
9. Add admin auth.
|
||||||
9. Add admin CRUD:
|
10. Add admin CRUD:
|
||||||
- sites
|
- sites
|
||||||
- operators
|
- operators
|
||||||
- operator-site permissions
|
- operator-site permissions
|
||||||
- Telegram settings
|
- Telegram settings
|
||||||
- SOCKS5 settings
|
- SOCKS5 settings
|
||||||
10. Add origin/domain validation:
|
11. Add origin/domain validation:
|
||||||
- `site_id + Origin` must match configured site.
|
- `site_id + Origin` must match configured site.
|
||||||
11. Add manual update section in admin panel.
|
12. Add manual update section in admin panel.
|
||||||
12. Add update bundle generator and apply script.
|
13. Add update bundle generator and apply script.
|
||||||
13. Prepare Android-ready API later.
|
14. Prepare Android-ready API later.
|
||||||
|
|
||||||
## User preferences and constraints
|
## User preferences and constraints
|
||||||
|
|
||||||
@@ -447,6 +495,7 @@ FASTPANEL_SAFE_MODE=true
|
|||||||
- User wants future auto-update file/bundle workflow.
|
- User wants future auto-update file/bundle workflow.
|
||||||
- User changed architecture to VPS-only after Raspberry issues.
|
- User changed architecture to VPS-only after Raspberry issues.
|
||||||
- User named the system WSChat and chose `/opt/ws-chat` as the project path.
|
- User named the system WSChat and chose `/opt/ws-chat` as the project path.
|
||||||
|
- VPS currently uses root user by default, so MVP installation can run as root.
|
||||||
|
|
||||||
## How to continue in a new chat
|
## How to continue in a new chat
|
||||||
|
|
||||||
@@ -455,5 +504,5 @@ Open this file first. Then continue from "Next development steps".
|
|||||||
Recommended next task:
|
Recommended next task:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Finish WSChat/VPS-only cleanup, then implement SQLite schema and message persistence.
|
Test deploy/vps/install.sh on VPS, then implement SQLite schema and message persistence.
|
||||||
```
|
```
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user