# Сайт-визитка grenu4.ru Простой сайт-визитка на HTML, работающий в Docker-контейнере. Сайт проксируется через **Nginx Proxy Manager**, который обеспечивает автоматический SSL-сертификат (Let's Encrypt) и доступ по домену. ## Содержание - [Технологии](#технологии) - [Требования](#требования) - [Быстрый старт](#быстрый-старт) - [Структура проекта](#структура-проекта) - [Управление контейнером](#управление-контейнером) - [Обновление сайта](#обновление-сайта) - [Интеграция с Nginx Proxy Manager](#интеграция-с-nginx-proxy-manager) - [Лицензия](#лицензия) ## Технологии - HTML / CSS / JavaScript (статические файлы) - Docker + Docker Compose - Nginx (в качестве веб-сервера внутри контейнера) - Nginx Proxy Manager (для прокси и SSL) ## Требования - Сервер с Linux (Ubuntu/Debian рекомендуется) - Установленные Docker и Docker Compose - Установленный и настроенный Nginx Proxy Manager (занимает порты 80 и 443) - Домен, направленный на IP сервера (в примере `grenu4.ru`) ## Быстрый старт ### Клонируйте репозиторий ```bash git clone https://git.grenu4.ru/y0zhyck/My-Site.git cd grenu4-site 2. Поместите файлы сайта В папке проекта уже должен лежать index.html и другие ресурсы (css, js, изображения). При необходимости замените их своими. 3. Запустите контейнер Вариант A: через docker-compose (рекомендуется) bash docker-compose up -d Вариант B: через docker run bash docker build -t grenu4-site . docker run -d \ --name site-grenu4 \ -p 5050:80 \ --restart unless-stopped \ grenu4-site После запуска сайт будет доступен локально на порту 5050: http://:5050 4. Настройте прокси в Nginx Proxy Manager Откройте веб-интерфейс NPM (обычно http://:81) Добавьте Proxy Host: Domain: grenu4.ru (и www.grenu4.ru при необходимости) Scheme: http Forward Hostname / IP: IP вашего сервера (например, 192.168.1.10) Если NPM и сайт на одном сервере, можно использовать 127.0.0.1, но убедитесь, что NPM имеет доступ к порту 5050 хоста. Forward Port: 5050 Во вкладке SSL включите Request a new SSL certificate, укажите email и включите Force SSL. Через несколько минут сайт станет доступен по https://grenu4.ru ``` ### Структура проекта - Dockerfile # Описание образа на основе nginx:alpine - docker-compose.yml # (опционально) для управления через compose - README.md # Этот файл - index.html # Главная страница - css/ # Папка со стилями (если есть) - js/ # Папка со скриптами (если есть) - img/ # Папка с изображениями (если есть) ### Управление контейнером ```bash Если используется docker-compose Управление контейнером Если используется docker-compose Запуск / перезапуск после изменений bash docker-compose up -d --build Остановка и удаление контейнера bash docker-compose down Просмотр логов bash docker-compose logs -f Если используется чистый docker Остановка bash docker stop site-grenu4 Удаление bash docker rm site-grenu4 Запуск существующего контейнера bash docker start site-grenu4 Пересборка и запуск после изменений bash docker build -t grenu4-site . docker rm -f site-grenu4 docker run -d --name site-grenu4 -p 5050:80 --restart unless-stopped grenu4-site ``` ### Обновление сайта ```bash Если вы изменили HTML / CSS / JS, нужно обновить контейнер. Быстрый способ с docker-compose (пересборка и запуск) bash docker-compose up -d --build Если используется только docker bash docker build -t grenu4-site . docker stop site-grenu4 && docker rm site-grenu4 docker run -d --name site-grenu4 -p 5050:80 --restart unless-stopped grenu4-site Альтернатива: монтирование папки (для разработки) Чтобы избежать пересборки при каждом изменении, можно примонтировать локальную папку с файлами внутрь контейнера. В docker-compose.yml добавьте: yaml services: site: volumes: - ./:/usr/share/nginx/html После этого изменения в файлах будут видны сразу (перезапуск не требуется). Не используйте это на production без дополнительной оптимизации. ``` ### Интеграция с Nginx Proxy Manager ```bash Ваш контейнер с сайтом не занимает порты 80/443 — они используются NPM. Вся схема работы: Пользователь заходит на https://grenu4.ru. Запрос попадает в NPM (контейнер, слушающий 80/443 на хосте). NPM по правилу прокси перенаправляет трафик на http://<хост>:5050. Внутренний контейнер с сайтом отдаёт страницу. Убедитесь, что порт 5050 на хосте доступен для NPM (обычно NPM и контейнер сайта находятся на одном хосте, поэтому проблем нет). ``` ### Лицензия ```bash Этот проект распространяется под лицензией MIT. Подробнее в файле LICENSE. Автор: Y0zhyck Домен: grenu4.ru Репозиторий: https://git.grenu4.ru/y0zhyck/My-Site.git ```