Fix case-insensitive auth and harden for production
- 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>
This commit is contained in:
71
README.md
Normal file
71
README.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# Котограм
|
||||
|
||||
Сайт для публикации фотографий котов. 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`.
|
||||
**Обязательно смените пароль** через интерфейс или напрямую в БД.
|
||||
Reference in New Issue
Block a user