Размещение Reactive‑Resume: приватный конструктор резюме

Узнайте, как установить и настроить Reactive‑Resume в собственном homelab: пошаговая инструкция, оптимизация и полная приватность данных.

Не указано
Алексей Кузнецов
Алексей Кузнецов
Системный администратор10 февраля 2026 г.

Установка через Docker (рекомендуемый способ)

Использование Docker изолирует приложение и его зависимости, что упрощает установку и управление.

Шаг 1: Установка Docker

Установка Docker для Ubuntu, macOS или Windows

Для Ubuntu:
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Шаг 2: Клонирование репозитория

Клонируем официальный репозиторий Reactive-Resume

git clone https://github.com/AmruthPillai/Reactive-Resume.git
cd Reactive-Resume

Шаг 3: Настройка Docker Compose

Создаем файл docker-compose.yml с конфигурацией сервиса

version: '3.8'
services:
  app:
    image: amruthpillai/reactive-resume:latest
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - MONGODB_URI=mongodb://mongo:27017/reactive-resume?authSource=admin
      - REDIS_URL=redis://redis:6379
    depends_on:
      - mongo
      - redis
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
      interval: 30s
      timeout: 10s
      retries: 3
  mongo:
    image: mongo:6.0
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=securepassword
    volumes:
      - mongo-data:/data/db
    restart: unless-stopped
  redis:
    image: redis:7.0-alpine
    volumes:
      - redis-data:/data
    restart: unless-stopped
volumes:
  mongo-data:
  redis-data:

Шаг 4: Настройка переменных окружения

Создаем файл .env с необходимыми переменными

MONGO_USERNAME=admin
MONGO_PASSWORD=securepassword
JWT_SECRET=your-super-secret-jwt-key-that-is-long-and-random

Шаг 5: Запуск контейнеров

Запускаем приложение в фоновом режиме

docker-compose up -d
docker-compose ps

Установка из исходного кода

Этот метод подходит для продвинутых пользователей, которым нужна более глубокая кастомизация приложения.

Шаг 1: Установка зависимостей

Установка Node.js и npm для Ubuntu

sudo apt update
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v  # Должна быть 18.x или выше
npm -v   # Должна быть 8.x или выше

Шаг 2: Установка и настройка MongoDB

Установка MongoDB и создание пользователей

sudo apt update
sudo apt install -y mongodb-org
sudo systemctl start mongod
sudo systemctl enable mongod

mongosh --eval "
  use admin
  db.createUser({
    user: 'admin',
    pwd: 'securepassword',
    roles: ['userAdminAnyDatabase', 'dbAdminAnyDatabase', 'readWriteAnyDatabase']
  })
  use reactive-resume
  db.createUser({
    user: 'resume_user',
    pwd: 'resume_password',
    roles: ['readWrite']
  })
"

Шаг 3: Установка и настройка Redis

Установка и запуск Redis

sudo apt install -y redis-server
sudo systemctl start redis-server
sudo systemctl enable redis-server
redis-cli ping

Шаг 4: Настройка переменных окружения

Создаем .env файл с конфигурацией

NODE_ENV=production
PORT=3000
MONGODB_URI=mongodb://admin:securepassword@localhost:27017/reactive-resume?authSource=admin
REDIS_URL=redis://localhost:6379
JWT_SECRET=your-super-secret-jwt-key-that-is-long-and-random

Шаг 5: Сборка и запуск

Собираем приложение и запускаем его через PM2

npm run build
sudo npm install -g pm2
pm2 start ecosystem.config.js --name "reactive-resume"
pm2 startup
pm2 save

Настройка после установки

Дополнительные шаги для полноценного развертывания

Настройка домена и HTTPS

Настройка Nginx как reverse proxy и установка SSL-сертификата

sudo apt install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx

# Настройка Nginx как reverse proxy
# Создать файл /etc/nginx/sites-available/reactive-resume с соответствующими настройками

# Установка Let's Encrypt SSL-сертификата
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com

# Добавить в cron для автоматического обновления:
0 12 * * * /usr/bin/certbot renew --quiet

Обновление экземпляра

Инструкция по обновлению Reactive-Resume

Через Docker:
docker-compose down
git pull origin main
docker-compose pull
docker-compose up -d
docker-compose ps

Из исходного кода:
pm2 stop reactive-resume
git pull origin main
npm install
npm run build
pm2 start ecosystem.config.js --name "reactive-resume"
pm2 status

Руководство: Как самостоятельно разместить Reactive-Resume

Reactive-Resume — это конструктор резюме с открытым исходным кодом, позволяющий создавать профессиональные резюме с полным контролем над вашими данными. Это руководство поможет вам развернуть собственный экземпляр Reactive-Resume двумя способами: через Docker (рекомендуемый) и из исходного кода.

Требования системы

  • Операционная система: Linux (Ubuntu 20.04/22.04), macOS или Windows (для локальной разработки)
  • Node.js версии 18.x или выше
  • npm версии 8.x или выше
  • MongoDB (версия 5.0+)
  • Redis (версия 6.0+)
  • Не менее 2 ГБ оперативной памяти
  • 5+ ГБ свободного дискового пространства

Установка через Docker (рекомендуемый способ)

Использование Docker изолирует приложение и его зависимости, что упрощает установку и управление.

Шаг 1: Установка Docker

Для Ubuntu:

# Обновление пакетов
sudo apt update

# Установка зависимостей
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

# Добавление официального GPG ключа Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# Установка стабильного репозитория Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Установка Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# Добавление текущего пользователя в группу docker
sudo usermod -aG docker $USER

# Установка Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

echo "Пожалуйста, выйдите из системы и войдите снова, чтобы применить изменения в группе docker"

Для macOS: Скачайте Docker Desktop с официального сайта: https://www.docker.com/products/docker-desktop

Для Windows: Скачайте Docker Desktop с официального сайта: https://www.docker.com/products/docker-desktop

Шаг 2: Клонирование репозитория

git clone https://github.com/AmruthPillai/Reactive-Resume.git
cd Reactive-Resume

Шаг 3: Настройка Docker Compose

Создайте файл docker-compose.yml:

version: '3.8'
services:
  app:
    image: amruthpillai/reactive-resume:latest
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - MONGODB_URI=mongodb://mongo:27017/reactive-resume?authSource=admin
      - REDIS_URL=redis://redis:6379
    depends_on:
      - mongo
      - redis
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
      interval: 30s
      timeout: 10s
      retries: 3
  mongo:
    image: mongo:6.0
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=securepassword
    volumes:
      - mongo-data:/data/db
    restart: unless-stopped
  redis:
    image: redis:7.0-alpine
    volumes:
      - redis-data:/data
    restart: unless-stopped
volumes:
  mongo-data:
  redis-data:

Шаг 4: Настройка переменных окружения

Создайте файл .env:

MONGO_USERNAME=admin
MONGO_PASSWORD=securepassword
JWT_SECRET=your-super-secret-jwt-key-that-is-long-and-random

Шаг 5: Запуск контейнеров

docker-compose up -d
docker-compose ps

Приложение будет доступно по адресу http://localhost:3000

Установка из исходного кода

Этот метод подходит для продвинутых пользователей, которым нужна более глубокая кастомизация приложения.

Шаг 1: Установка зависимостей

Установка Node.js и npm (для Ubuntu):

# Обновление пакетов
sudo apt update

# Установка Node.js и npm
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

# Проверка версий
node -v  # Должна быть 18.x или выше
npm -v   # Должна быть 8.x или выше

Для macOS (через Homebrew):

brew install node

Для Windows: Скачайте установщик с официального сайта: https://nodejs.org/

git clone https://github.com/AmruthPillai/Reactive-Resume.git
cd Reactive-Resume
npm install

Шаг 2: Установка и настройка MongoDB

Установка MongoDB (для Ubuntu):

# Импорт публичного ключа MongoDB
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

# Добавление репозитория MongoDB
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

# Установка MongoDB
sudo apt update
sudo apt install -y mongodb-org

# Запуск и включение MongoDB
sudo systemctl start mongod
sudo systemctl enable mongod

Для macOS (через Homebrew):

brew install mongodb-community
brew services start mongodb-community

Настройка MongoDB:

mongosh --eval "
  use admin
  db.createUser({
    user: 'admin',
    pwd: 'securepassword',
    roles: ['userAdminAnyDatabase', 'dbAdminAnyDatabase', 'readWriteAnyDatabase']
  })
  use reactive-resume
  db.createUser({
    user: 'resume_user',
    pwd: 'resume_password',
    roles: ['readWrite']
  })
"

Шаг 3: Установка и настройка Redis

Установка Redis (для Ubuntu):

sudo apt install -y redis-server
sudo systemctl start redis-server
sudo systemctl enable redis-server
redis-cli ping

Для macOS (через Homebrew):

brew install redis
brew services start redis

Шаг 4: Настройка переменных окружения

Создайте файл .env в корневой директории проекта:

NODE_ENV=production
PORT=3000
MONGODB_URI=mongodb://admin:securepassword@localhost:27017/reactive-resume?authSource=admin
REDIS_URL=redis://localhost:6379
JWT_SECRET=your-super-secret-jwt-key-that-is-long-and-random

Важные замечания по безопасности:

  • Замените your-super-secret-jwt-key-that-is-long-and-random на реальный секретный ключ
  • Используйте сложные пароли для MongoDB и Redis

Шаг 5: Сборка и запуск

npm run build
sudo npm install -g pm2
pm2 start ecosystem.config.js --name "reactive-resume"
pm2 startup
pm2 save

Приложение будет доступно по адресу http://localhost:3000

Настройка после установки

1. Настройка домена и HTTPS

Установка Nginx:

sudo apt install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx

Настройка Nginx как reverse proxy: Создайте файл /etc/nginx/sites-available/reactive-resume:

server {
    listen 80;
    server_name your-domain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name your-domain.com;

    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    
    client_max_body_size 10M;
    
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
    
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
        
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }
}

Включение конфигурации Nginx:

sudo ln -s /etc/nginx/sites-available/reactive-resume /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Установка Let's Encrypt SSL-сертификата:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
sudo crontab -e

Добавьте строку для автоматического обновления сертификата:

0 12 * * * /usr/bin/certbot renew --quiet

2. Настройка резервного копирования

Создание скрипта резервного копирования MongoDB: Создайте файл /usr/local/bin/backup-mongodb.sh:

#!/bin/bash

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backups/reactive-resume"
MONGO_HOST="localhost"
MONGO_PORT="27017"
MONGO_USER="admin"
MONGO_PASSWORD="securepassword"
MONGO_DB="reactive-resume"
MAX_BACKUPS=7

mkdir -p $BACKUP_DIR
mongodump --host $MONGO_HOST --port $MONGO_PORT \
  --username $MONGO_USER --password $MONGO_PASSWORD \
  --db $MONGO_DB \
  --out $BACKUP_DIR/mongo_$DATE

tar -czf $BACKUP_DIR/mongo_$DATE.tar.gz -C $BACKUP_DIR mongo_$DATE
rm -rf $BACKUP_DIR/mongo_$DATE

cd $BACKUP_DIR
ls -t mongo_*.tar.gz | tail -n +$((MAX_BACKUPS+1)) | xargs -r rm

Создание скрипта резервного копирования Redis: Создайте файл /usr/local/bin/backup-redis.sh:

#!/bin/bash

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backups/reactive-resume"
REDIS_HOST="localhost"
REDIS_PORT="6379"
MAX_BACKUPS=7

mkdir -p $BACKUP_DIR
redis-cli -h $REDIS_HOST -p $REDIS_PORT BGSAVE
sleep 10
cp /var/lib/redis/dump.rdb $BACKUP_DIR/redis_$DATE.rdb

cd $BACKUP_DIR
ls -t redis_*.rdb | tail -n +$((MAX_BACKUPS+1)) | xargs -r rm

Настройка cron для автоматического резервного копирования:

sudo crontab -e

Добавьте строки:

0 2 * * * /usr/local/bin/backup-mongodb.sh
0 3 * * * /usr/local/bin/backup-redis.sh

3. Настройка безопасности

Настройка файрвола:

sudo apt install -y ufw
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw allow from 127.0.0.1 to any port 3000
sudo ufw enable

Настройка Fail2ban:

sudo apt install -y fail2ban
sudo nano /etc/fail2ban/jail.local

Добавьте в файл:

[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log

[nginx-limit-req]
enabled = true
filter = nginx-limit-req
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 10
findtime = 60
bantime = 3600

Перезапуск Fail2ban:

sudo systemctl restart fail2ban

Обновление экземпляра

Через Docker

docker-compose down
git pull origin main
docker-compose pull
docker-compose up -d
docker-compose ps

Из исходного кода

pm2 stop reactive-resume
git pull origin main
npm install
npm run build
pm2 start ecosystem.config.js --name "reactive-resume"
pm2 status

Миграция данных при обновлении

mongodump --db reactive-resume --out /path/to/backup
# Выполните шаги обновления
mongorestore --db reactive-resume /path/to/backup/reactive-resume

Масштабирование

Горизонтальное масштабирование с Docker

Создайте файл docker-compose.scale.yml:

version: '3.8'
services:
  app:
    image: amruthpillai/reactive-resume:latest
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - MONGODB_URI=mongodb://mongo:27017/reactive-resume?authSource=admin
      - REDIS_URL=redis://redis:6379
    depends_on:
      - mongo
      - redis
    restart: unless-stopped
    deploy:
      replicas: 3
  mongo:
    image: mongo:6.0
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=securepassword
    volumes:
      - mongo-data:/data/db
    restart: unless-stopped
  redis:
    image: redis:7.0-alpine
    volumes:
      - redis-data:/data
    restart: unless-stopped
volumes:
  mongo-data:
  redis-data:

Масштабирование MongoDB

Для высоконагруженных экземпляров настройте репликацию:

openssl rand -base64 756 > /etc/mongodb-keyfile
chmod 400 /etc/mongodb-keyfile

echo "replication:
  replSet: rs0
  keyFile: /etc/mongodb-keyfile" | sudo tee -a /etc/mongod.conf

sudo systemctl restart mongod
mongosh --eval "rs.initiate()"

Заключение

Теперь у вас полностью автономный экземпонал Reactive-Resume с контролем над вашими данными. Регулярно обновляйте систему, делайте резервные копии и следите за безопасностью. При масштабировании используйте описанные методы для обеспечения высокой доступности и производительности.

Для получения дополнительной информации посетите официальный репозиторий: github.com/AmruthPillai/Reactive-Resume

Поделиться:TelegramX / TwitterVK