Files
mkd/docs/UBUNTU_SETUP.md
Sasha 4993816a95 Настройка запуска на Ubuntu + tmux и доступ извне (Арсен.)
- Добавлены инструкции `docs/UBUNTU_SETUP.md` и секции в README.
- Добавлены скрипты `scripts/setup-postgres-ubuntu.sh` и `scripts/start-tmux.sh` (tmux: front/back).
- Для доступа снаружи: Vite `allowedHosts: true`, бэкенд слушает `0.0.0.0`.
- Добавлен сид демо-пользователя портала `demo` / `demo123` с ролью DIRECTOR (как `its`).
- `.env` файлы добавлены в `.gitignore`, чтобы не коммитить секреты.

Выполнил: Арсен.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 11:55:20 +05:00

162 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Запуск проекта на Ubuntu 24.04
После переноса с Windows проект запускается на Ubuntu так же через Node.js и PostgreSQL. Ниже — пошаговая настройка.
## 1. Установка Node.js (18+)
```bash
# Через NodeSource (рекомендуется LTS)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
# Проверка
node -v # v20.x.x
npm -v
```
Либо через стандартный репозиторий Ubuntu:
```bash
sudo apt update
sudo apt install -y nodejs npm
```
## 2. Установка PostgreSQL
```bash
sudo apt update
sudo apt install -y postgresql postgresql-contrib
sudo systemctl start postgresql
sudo systemctl enable postgresql
```
Создание пользователя и базы (опционально, если ещё не созданы):
```bash
sudo -u postgres psql -c "CREATE USER mkd_user WITH PASSWORD 'your_password';"
sudo -u postgres psql -c "CREATE DATABASE mkd_control_center OWNER mkd_user;"
```
Строка подключения для `.env` бэкенда:
```
postgres://mkd_user:your_password@localhost:5432/mkd_control_center
```
## 3. Зависимости для Puppeteer (бэкенд)
Бэкенд использует Puppeteer. На Ubuntu нужны системные библиотеки:
```bash
sudo apt install -y \
ca-certificates fonts-liberation libasound2 libatk-bridge2.0-0 \
libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 \
libfontconfig1 libgbm1 libgcc1 libglib2.0-0 libgtk-3-0 libnspr4 \
libnss3 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 \
libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 \
libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 \
libxtst6 lsb-release wget xdg-utils
```
## 4. Настройка проекта
### 4.1 Клонирование / копирование
Если репозиторий уже скопирован в каталог проекта (например, `/home/its/mkd`), переходите в него:
```bash
cd /home/its/mkd
```
### 4.2 Установка зависимостей
В корне (фронтенд) и в `backend`:
```bash
npm install
cd backend && npm install && cd ..
```
### 4.3 Переменные окружения
**Корень проекта** — для фронтенда. Создайте `.env` или `.env.local` на основе `.env.example`:
```bash
cp .env.example .env.local
# Отредактируйте .env.local при необходимости (VITE_API_BASE_URL, Doma AI и т.д.)
```
**Бэкенд** — в `backend/.env` должны быть минимум:
```env
# Обязательно для работы БД
DATABASE_URL=postgres://mkd_user:your_password@localhost:5432/mkd_control_center
# Обязательно в production
JWT_SECRET=ваш-секретный-ключ-для-jwt
JWT_EXPIRES_IN=7d
# Опционально: Doma AI, Turnstile и т.д.
# DOMA_API_URL=...
# DOMA_API_TOKEN=...
```
Пути в конфигах (например, `path.join(__dirname, 'uploads')`) на Linux не меняют — Node использует `/` и `path.join` корректно.
## 5. Запуск
Нужны два процесса: бэкенд (API) и фронтенд (Vite).
### Вариант A: два терминала
**Терминал 1 — бэкенд:**
```bash
cd /home/its/mkd/backend
npm start
```
Должно появиться сообщение о запуске на порту 4000 (или вашем `PORT`).
**Терминал 2 — фронтенд:**
```bash
cd /home/its/mkd
npm run dev
```
Откройте в браузере: **http://localhost:3000**. Запросы к `/api` уйдут на бэкенд через прокси Vite (localhost:4000).
### Вариант B: один терминал (фоновый бэкенд)
```bash
cd /home/its/mkd/backend && npm start &
cd /home/its/mkd && npm run dev
```
### Сборка для production
```bash
cd /home/its/mkd
npm run build
```
Статика окажется в `dist/`. Раздавать её можно nginxом, указав API и `uploads` на бэкенд (порт 4000).
## 6. Проверка
| Компонент | URL / проверка |
|------------|----------------|
| Фронтенд | http://localhost:3000 |
| API бэкенд | http://localhost:4000/api (например, health, если есть) |
| PostgreSQL | `sudo -u postgres psql -c "\l"` — список баз |
## 7. Частые проблемы на Ubuntu
- **«DATABASE_URL не задана»** — добавьте `DATABASE_URL` в `backend/.env` и перезапустите бэкенд.
- **Puppeteer/Chromium не запускается** — установите зависимости из пункта 3; при необходимости в `backend` можно задать `PUPPETEER_EXECUTABLE_PATH` на системный chromium.
- **Порт 3000 или 4000 занят** — смените в `.env`: фронт — `server.port` в `vite.config.ts` или переменные Vite; бэкенд — `PORT` в `backend/.env`.
- **Права на каталог uploads** — если бэкенд пишет файлы от другого пользователя: `chmod 755 backend/uploads` (или 775 при необходимости).
После выполнения шагов 15 проект на Ubuntu 24.04 должен запускаться так же, как на Windows.