440 lines
11 KiB
Markdown
440 lines
11 KiB
Markdown
<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>
|
||
</VirtualHost>
|
||
|
||
# SSL версия (если используете HTTPS)
|
||
<IfModule mod_ssl.c>
|
||
<VirtualHost *:443>
|
||
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"
|
||
</VirtualHost>
|
||
</IfModule>
|
||
# 🃏 Texas Hold'em Poker - Развертывание в Docker
|
||
|
||
## 📋 Содержание
|
||
|
||
- [Быстрый старт](#быстрый-старт)
|
||
- [Развертывание с Docker](#развертывание-с-docker)
|
||
- [Настройка Apache](#настройка-apache)
|
||
- [Переменные окружения](#переменные-окружения)
|
||
- [Backup и восстановление](#backup-и-восстановление)
|
||
|
||
---
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
### Запуск через Docker Compose (рекомендуется)
|
||
|
||
```bash
|
||
# Клонируйте репозиторий
|
||
git clone <repository-url>
|
||
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 <PID>
|
||
```
|
||
|
||
### Проблемы с 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
|