Record interactive VPS installer

Этот коммит содержится в:
Виктор
2026-05-08 16:58:28 +09:00
родитель 32d211bca4
Коммит df10d97e2f
+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.
``` ```