- Fix login/register to treat usernames case-insensitively (HeagBoKaT == heagbokat) using LOWER() in SQL with JS .toLowerCase() for Unicode safety - Add helmet for HTTP security headers and express-rate-limit on auth endpoints (20 req / 15 min) to prevent brute-force - Lock CORS to ALLOWED_ORIGIN env var; warn if JWT_SECRET is the default dev key - Serve built client/dist from Express so a single PM2 process handles everything - Add deploy.sh, README.md with full first-run and auto-restart instructions, and server/.env.example Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
72 lines
2.3 KiB
Markdown
72 lines
2.3 KiB
Markdown
# Котограм
|
||
|
||
Сайт для публикации фотографий котов. React + Vite (фронт), Express + TypeScript (бэк), SQLite.
|
||
|
||
## Первый запуск на сервере
|
||
|
||
```bash
|
||
cd /var/www/cats
|
||
|
||
# 1. Установить зависимости и собрать фронт
|
||
npm install --prefix server
|
||
npm install --prefix client
|
||
npm run build
|
||
|
||
# 2. Создать файл переменных окружения
|
||
cp server/.env.example server/.env
|
||
# Отредактировать server/.env: задать JWT_SECRET и ALLOWED_ORIGIN
|
||
nano server/.env
|
||
|
||
# 3. Запустить через PM2
|
||
sudo pm2 start npm --name cats -- start
|
||
|
||
# 4. Зарегистрировать автостарт (один раз на машине)
|
||
sudo pm2 startup
|
||
# Скопировать и выполнить команду, которую выведет pm2 startup
|
||
sudo pm2 save
|
||
```
|
||
|
||
## Переменные окружения (`server/.env`)
|
||
|
||
```env
|
||
PORT=3040
|
||
JWT_SECRET=замените_на_случайную_строку_32_символа
|
||
ALLOWED_ORIGIN=http://cats.heagbokat-server.ru
|
||
```
|
||
|
||
Сгенерировать JWT_SECRET:
|
||
```bash
|
||
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
|
||
```
|
||
|
||
## Деплой обновлений
|
||
|
||
```bash
|
||
cd /var/www/cats
|
||
chmod +x deploy.sh # только первый раз
|
||
./deploy.sh
|
||
```
|
||
|
||
Скрипт делает: `git pull` → сборка фронта → перезапуск PM2.
|
||
|
||
## Управление PM2
|
||
|
||
```bash
|
||
sudo pm2 ps # статус процессов
|
||
sudo pm2 logs cats # логи сервера
|
||
sudo pm2 restart cats # перезапустить
|
||
sudo pm2 stop cats # остановить
|
||
```
|
||
|
||
## Данные (не трогать!)
|
||
|
||
- `server/data.db` — база данных (пользователи, лайки, коты)
|
||
- `server/uploads/` — загруженные изображения
|
||
|
||
Оба пути в `.gitignore` — `git pull` их не перезапишет.
|
||
|
||
## Первый администратор
|
||
|
||
При первом запуске автоматически создаётся пользователь `admin / admin123`.
|
||
**Обязательно смените пароль** через интерфейс или напрямую в БД.
|