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
ProxyPass http://localhost:3336/
ProxyPassReverse http://localhost:3336/
ProxyPreserveHost On
# WebSocket headers
RequestHeader set X-Forwarded-Proto "http"
RequestHeader set X-Forwarded-Port "80"
# 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
ProxyPass http://localhost:3336/
ProxyPassReverse http://localhost:3336/
ProxyPreserveHost On
# WebSocket headers
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
# Безопасность
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](#развертывание-с-docker)
- [Настройка Apache](#настройка-apache)
- [Переменные окружения](#переменные-окружения)
- [Backup и восстановление](#backup-и-восстановление)
---
## 🚀 Быстрый старт
### Запуск через Docker Compose (рекомендуется)
```bash
# Клонируйте репозиторий
git clone
cd onlinepocker
# Запустите контейнер
docker-compose up -d
# Проверьте статус
docker-compose ps
# Просмотр логов
docker-compose logs -f
```
Приложение будет доступно по адресу: `http://localhost:3336`
---
## 🐳 Развертывание с Docker
### Сборка Docker образа вручную
```bash
# Сборка образа
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
```
### Управление контейнером
```bash
# Остановка
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 команды
```bash
# Запуск в фоне
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
```bash
# Включаем модули для проксирования и 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
```
### Копирование конфигурации
```bash
# Копируем конфиг в 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
```bash
# Проверка статуса
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
```yaml
environment:
- NODE_ENV=production
- PORT=3336
```
### Настройка в Dockerfile
```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 и восстановление
### Создание резервной копии базы данных
```bash
# Остановка контейнера
docker-compose stop
# Копирование БД
cp data/poker.db data/poker.db.backup.$(date +%Y%m%d_%H%M%S)
# Запуск контейнера
docker-compose start
```
### Восстановление из резервной копии
```bash
# Остановка контейнера
docker-compose stop
# Восстановление БД
cp data/poker.db.backup.20260201_120000 data/poker.db
# Запуск контейнера
docker-compose start
```
### Автоматический backup (cron)
```bash
# Создаем скрипт backup
nano /opt/poker-backup.sh
```
```bash
#!/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"
```
```bash
# Делаем скрипт исполняемым
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
### Проблемы с портами
```bash
# Проверка, не занят ли порт 3336
sudo netstat -tlnp | grep 3336
# Если порт занят, найти процесс
sudo lsof -i :3336
# Убить процесс
sudo kill -9
```
### Проблемы с WebSocket
```bash
# Проверка модулей Apache
apache2ctl -M | grep proxy
# Должны быть включены:
# - proxy_module
# - proxy_http_module
# - proxy_wstunnel_module
```
### Проблемы с правами доступа
```bash
# Установка правильных прав на директорию data
sudo chown -R www-data:www-data data/
sudo chmod 755 data/
# Для Docker
sudo chown -R 1000:1000 data/
```
### Просмотр логов контейнера
```bash
# Все логи
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 (опционально)
```bash
# Установка 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