poker/DEPLOYMENT.md

11 KiB
Raw Blame History

<VirtualHost *:80> ServerName poker.yourdomain.com ServerAdmin admin@yourdomain.com

# Логи
ErrorLog ${APACHE_LOG_DIR}/poker_error.log
CustomLog ${APACHE_LOG_DIR}/poker_access.log combined

# Проксирование на Docker контейнер
ProxyPreserveHost On
ProxyPass / http://localhost:3336/
ProxyPassReverse / http://localhost:3336/

# WebSocket поддержка
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://localhost:3336/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) http://localhost:3336/$1 [P,L]

# Заголовки для WebSocket
<Location />
    ProxyPass http://localhost:3336/
    ProxyPassReverse http://localhost:3336/
    ProxyPreserveHost On
    
    # WebSocket headers
    RequestHeader set X-Forwarded-Proto "http"
    RequestHeader set X-Forwarded-Port "80"
</Location>

SSL версия (если используете HTTPS)

ServerName poker.yourdomain.com ServerAdmin admin@yourdomain.com
# SSL сертификаты
SSLEngine on
SSLCertificateFile /etc/ssl/certs/poker.crt
SSLCertificateKeyFile /etc/ssl/private/poker.key
# SSLCertificateChainFile /etc/ssl/certs/chain.pem

# Логи
ErrorLog ${APACHE_LOG_DIR}/poker_ssl_error.log
CustomLog ${APACHE_LOG_DIR}/poker_ssl_access.log combined

# Проксирование на Docker контейнер
ProxyPreserveHost On
ProxyPass / http://localhost:3336/
ProxyPassReverse / http://localhost:3336/

# WebSocket поддержка
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://localhost:3336/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) http://localhost:3336/$1 [P,L]

# Заголовки для WebSocket
<Location />
    ProxyPass http://localhost:3336/
    ProxyPassReverse http://localhost:3336/
    ProxyPreserveHost On
    
    # WebSocket headers
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port "443"
</Location>

# Безопасность
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
# 🃏 Texas Hold'em Poker - Развертывание в Docker

📋 Содержание


🚀 Быстрый старт

Запуск через Docker Compose (рекомендуется)

# Клонируйте репозиторий
git clone <repository-url>
cd onlinepocker

# Запустите контейнер
docker-compose up -d

# Проверьте статус
docker-compose ps

# Просмотр логов
docker-compose logs -f

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


🐳 Развертывание с Docker

Сборка Docker образа вручную

# Сборка образа
docker build -t texas-holdem-poker:latest .

# Запуск контейнера
docker run -d \
  --name poker-app \
  -p 3336:3336 \
  -v $(pwd)/data:/app/data \
  -e NODE_ENV=production \
  -e PORT=3336 \
  texas-holdem-poker:latest

# Проверка работы
docker ps
docker logs poker-app

Управление контейнером

# Остановка
docker stop poker-app

# Запуск
docker start poker-app

# Перезапуск
docker restart poker-app

# Удаление
docker stop poker-app
docker rm poker-app

# Просмотр логов
docker logs -f poker-app

Docker Compose команды

# Запуск в фоне
docker-compose up -d

# Остановка
docker-compose down

# Перезапуск
docker-compose restart

# Пересборка образа
docker-compose build

# Пересборка и запуск
docker-compose up -d --build

# Просмотр логов
docker-compose logs -f

# Остановка с удалением volumes
docker-compose down -v

🌐 Настройка Apache

Включение необходимых модулей Apache

# Включаем модули для проксирования и WebSocket
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_wstunnel
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod ssl  # Если используете HTTPS

# Перезапуск Apache
sudo systemctl restart apache2

Копирование конфигурации

# Копируем конфиг в Apache
sudo cp apache-config.conf /etc/apache2/sites-available/poker.conf

# Редактируем домен (замените poker.yourdomain.com на ваш домен)
sudo nano /etc/apache2/sites-available/poker.conf

# Включаем сайт
sudo a2ensite poker.conf

# Проверяем конфигурацию
sudo apache2ctl configtest

# Перезагружаем Apache
sudo systemctl reload apache2

Проверка статуса Apache

# Проверка статуса
sudo systemctl status apache2

# Просмотр логов ошибок
sudo tail -f /var/log/apache2/poker_error.log

# Просмотр логов доступа
sudo tail -f /var/log/apache2/poker_access.log

⚙️ Переменные окружения

Основные переменные

Переменная Значение по умолчанию Описание
PORT 3336 Порт для запуска сервера
NODE_ENV production Режим работы (production/development)

Настройка в docker-compose.yml

environment:
  - NODE_ENV=production
  - PORT=3336

Настройка в Dockerfile

ENV NODE_ENV=production
ENV PORT=3336

📦 Структура проекта после развертывания

onlinepocker/
├── data/                   # База данных (создается автоматически)
│   └── poker.db
├── logs/                   # Логи приложения (опционально)
├── public/                 # Статические файлы
├── node_modules/           # Зависимости
├── server.js               # Основной сервер
├── database.js             # Работа с БД
├── package.json
├── Dockerfile              # Docker образ
├── docker-compose.yml      # Docker Compose конфигурация
├── .dockerignore           # Исключения для Docker
└── apache-config.conf      # Конфигурация Apache

💾 Backup и восстановление

Создание резервной копии базы данных

# Остановка контейнера
docker-compose stop

# Копирование БД
cp data/poker.db data/poker.db.backup.$(date +%Y%m%d_%H%M%S)

# Запуск контейнера
docker-compose start

Восстановление из резервной копии

# Остановка контейнера
docker-compose stop

# Восстановление БД
cp data/poker.db.backup.20260201_120000 data/poker.db

# Запуск контейнера
docker-compose start

Автоматический backup (cron)

# Создаем скрипт backup
nano /opt/poker-backup.sh
#!/bin/bash
BACKUP_DIR="/opt/poker-backups"
DATE=$(date +%Y%m%d_%H%M%S)

# Создаем директорию для backup
mkdir -p $BACKUP_DIR

# Копируем БД
docker cp texas-holdem-poker:/app/data/poker.db $BACKUP_DIR/poker.db.$DATE

# Удаляем старые backup (старше 30 дней)
find $BACKUP_DIR -name "poker.db.*" -mtime +30 -delete

echo "Backup создан: poker.db.$DATE"
# Делаем скрипт исполняемым
chmod +x /opt/poker-backup.sh

# Добавляем в cron (каждый день в 3:00)
crontab -e
# Добавьте строку:
0 3 * * * /opt/poker-backup.sh >> /var/log/poker-backup.log 2>&1

🔧 Troubleshooting

Проблемы с портами

# Проверка, не занят ли порт 3336
sudo netstat -tlnp | grep 3336

# Если порт занят, найти процесс
sudo lsof -i :3336

# Убить процесс
sudo kill -9 <PID>

Проблемы с WebSocket

# Проверка модулей Apache
apache2ctl -M | grep proxy

# Должны быть включены:
# - proxy_module
# - proxy_http_module
# - proxy_wstunnel_module

Проблемы с правами доступа

# Установка правильных прав на директорию data
sudo chown -R www-data:www-data data/
sudo chmod 755 data/

# Для Docker
sudo chown -R 1000:1000 data/

Просмотр логов контейнера

# Все логи
docker logs texas-holdem-poker

# Последние 100 строк
docker logs --tail 100 texas-holdem-poker

# В реальном времени
docker logs -f texas-holdem-poker

🔐 Безопасность

Рекомендации

  1. Используйте HTTPS - настройте SSL сертификаты (Let's Encrypt)
  2. Firewall - ограничьте доступ к порту 3336 только с localhost
  3. Регулярные обновления - обновляйте зависимости и Docker образы
  4. Backup - настройте автоматическое резервное копирование
  5. Мониторинг - отслеживайте логи и производительность

Настройка Let's Encrypt (опционально)

# Установка certbot
sudo apt-get install certbot python3-certbot-apache

# Получение сертификата
sudo certbot --apache -d poker.yourdomain.com

# Автоматическое обновление
sudo certbot renew --dry-run

📞 Поддержка

Если возникли проблемы:

  1. Проверьте логи: docker-compose logs -f
  2. Проверьте статус: docker-compose ps
  3. Проверьте Apache: sudo systemctl status apache2
  4. Проверьте логи Apache: sudo tail -f /var/log/apache2/poker_error.log

📝 Лицензия

Этот проект предназначен для личного использования.


Версия: 1.0.0
Дата обновления: 2026-02-01