11 KiB
11 KiB
<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
🔐 Безопасность
Рекомендации
- Используйте HTTPS - настройте SSL сертификаты (Let's Encrypt)
- Firewall - ограничьте доступ к порту 3336 только с localhost
- Регулярные обновления - обновляйте зависимости и Docker образы
- Backup - настройте автоматическое резервное копирование
- Мониторинг - отслеживайте логи и производительность
Настройка Let's Encrypt (опционально)
# Установка certbot
sudo apt-get install certbot python3-certbot-apache
# Получение сертификата
sudo certbot --apache -d poker.yourdomain.com
# Автоматическое обновление
sudo certbot renew --dry-run
📞 Поддержка
Если возникли проблемы:
- Проверьте логи:
docker-compose logs -f - Проверьте статус:
docker-compose ps - Проверьте Apache:
sudo systemctl status apache2 - Проверьте логи Apache:
sudo tail -f /var/log/apache2/poker_error.log
📝 Лицензия
Этот проект предназначен для личного использования.
Версия: 1.0.0
Дата обновления: 2026-02-01