nginx and certbot into containers is start and renew certs by auto

This commit is contained in:
2025-05-31 19:54:35 +03:00
parent 81fd806691
commit 89d6d62f12
15 changed files with 433 additions and 345 deletions
+17 -2
View File
@@ -1,3 +1,18 @@
FROM nginx:latest
FROM nginx:alpine
RUN mkdir -p /var/www/yalarba.ru/html
# Установка зависимостей
RUN apk add --no-cache bash
# Копируем обе конфигурации
COPY nginx-http.conf /etc/nginx/nginx-http.conf
COPY nginx-ssl.conf /etc/nginx/nginx-ssl.conf
# Создаем симлинк по умолчанию на HTTP конфиг
RUN ln -sf /etc/nginx/nginx-http.conf /etc/nginx/conf.d/default.conf
# Скрипт для проверки сертификатов и переключения конфига
COPY switch-config.sh /docker-entrypoint.d/40-switch-config.sh
RUN chmod +x /docker-entrypoint.d/40-switch-config.sh
# Создаем необходимые директории
RUN mkdir -p /var/www/certbot
-65
View File
@@ -1,65 +0,0 @@
# HTTP — редирект на HTTPS
server {
listen 80;
listen [::]:80;
server_name yalarb.ru www.yalarb.ru;
# Перенаправление всех HTTP-запросов на HTTPS
return 301 https://$server_name$request_uri;
}
# HTTPS — основной сервер
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name yalarba.ru www.yalarba.ru;
# Пути к SSL-сертификату (например, от Let's Encrypt)
ssl_certificate /etc/letsencrypt/live/yalarba.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yalarba.ru/privkey.pem;
# Настройки SSL
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
# Корневая директория сайта
root /var/www/yalarba.ru/html;
index index.html index.htm index.nginx-debian.html;
# Дополнительные заголовки безопасности
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# Обработка статических файлов
location / {
try_files $uri $uri/ =404;
}
# Запрет доступа к скрытым файлам (например, .htaccess)
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
# Настройки для PHP (если используется)
# location ~ \.php$ {
# include snippets/fastcgi-php.conf;
# fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
# }
}
# HTTP for certbot ssl certificate alterante port
server {
listen 333; # альтернативный порт для Certbot
location ~ /.well-known {
allow all;
}
}
-65
View File
@@ -1,65 +0,0 @@
# HTTP — редирект на HTTPS
server {
listen 80;
listen [::]:80;
server_name yalarb.ru www.yalarb.ru;
# Перенаправление всех HTTP-запросов на HTTPS
return 301 https://$server_name$request_uri;
}
# HTTPS — основной сервер
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name yalarba.ru www.yalarba.ru;
# Пути к SSL-сертификату (например, от Let's Encrypt)
ssl_certificate /etc/letsencrypt/live/yalarba.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yalarba.ru/privkey.pem;
# Настройки SSL
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
# Корневая директория сайта
root /var/www/yalarba.ru/html;
index index.html index.htm index.nginx-debian.html;
# Дополнительные заголовки безопасности
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# Обработка статических файлов
location / {
try_files $uri $uri/ =404;
}
# Запрет доступа к скрытым файлам (например, .htaccess)
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
# Настройки для PHP (если используется)
# location ~ \.php$ {
# include snippets/fastcgi-php.conf;
# fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
# }
}
# HTTP for certbot ssl certificate alterante port
server {
listen ${CERTBOT_PORT}; # альтернативный порт для Certbot
location ~ /.well-known {
allow all;
}
}
+13
View File
@@ -0,0 +1,13 @@
server {
listen 80;
server_name yalarba.ru;
location / {
root /usr/share/nginx/html;
index index.html;
}
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
}
+25
View File
@@ -0,0 +1,25 @@
server {
listen 80;
server_name yalarba.ru;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name yalarba.ru;
ssl_certificate /etc/letsencrypt/live/yalarba.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yalarba.ru/privkey.pem;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
-134
View File
@@ -1,134 +0,0 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ЯлАрба - Туристический агрегатор</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
line-height: 1.6;
color: #333;
max-width: 800px;
margin: 0 auto;
padding: 20px;
background-color: #f5f7fa;
}
header {
background-color: #1e88e5;
color: white;
padding: 20px;
border-radius: 8px;
margin-bottom: 30px;
text-align: center;
}
h1 {
margin: 0;
font-size: 2.2em;
}
h2 {
color: #1e88e5;
border-bottom: 2px solid #1e88e5;
padding-bottom: 5px;
margin-top: 30px;
}
.developer {
background-color: #e3f2fd;
padding: 15px;
border-radius: 8px;
margin: 20px 0;
}
.roadmap {
background-color: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
.phase {
margin-bottom: 20px;
padding-bottom: 20px;
border-bottom: 1px dashed #ccc;
}
.phase:last-child {
border-bottom: none;
}
footer {
text-align: center;
margin-top: 40px;
color: #666;
font-size: 0.9em;
}
</style>
</head>
<body>
<header>
<h1>ЯлАрба</h1>
<p>Инновационный агрегатор мест отдыха с ИИ-планировщиком маршрутов</p>
</header>
<section>
<h2>О проекте</h2>
<p>ЯлАрба — это супер-приложение для путешественников, объединяющее в себе:</p>
<ul>
<li>Агрегатор мест отдыха (отели, экскурсии, рестораны)</li>
<li>Маркетплейс туров и локальных сувениров</li>
<li>ИИ-планировщик маршрутов с учетом здоровья пользователя</li>
<li>Систему бронирования и покупки билетов</li>
</ul>
<p>Наша миссия — сделать планирование путешествий простым, персонализированным и доступным.</p>
</section>
<div class="developer">
<h2>Разработчик</h2>
<p><strong>Валитов Газиз</strong></p>
<p>Full-stack разработчик с опытом в travel-tech проектах. Специализация: Python/Django, React, системы рекомендаций на основе ИИ.</p>
</div>
<section class="roadmap">
<h2>План разработки</h2>
<div class="phase">
<h3>Этап 1: MVP (0-6 месяцев)</h3>
<ul>
<li>База мест отдыха (1000+ позиций)</li>
<li>Интеграция с API бронирования (Booking.com, Ostrovok)</li>
<li>Прототип ИИ-рекомендаций</li>
<li>Мобильная версия (PWA)</li>
</ul>
</div>
<div class="phase">
<h3>Этап 2: Монетизация (6-12 месяцев)</h3>
<ul>
<li>Система комиссий (10-15% с бронирований)</li>
<li>Платные подписки (PRO-аккаунт)</li>
<li>Партнерская программа для гидов</li>
</ul>
</div>
<div class="phase">
<h3>Этап 3: Масштабирование (12-24 месяца)</h3>
<ul>
<li>Выход на рынки СНГ (Казахстан, Узбекистан)</li>
<li>Полноценный ИИ-ассистент с рекомендациями по здоровью</li>
<li>Интеграция с сервисами аренды авто</li>
</ul>
</div>
</section>
<section>
<h2>Технологический стек</h2>
<ul>
<li><strong>Frontend:</strong> React.js, TypeScript, PWA</li>
<li><strong>Backend:</strong> Python/Django, PostgreSQL</li>
<li><strong>AI:</strong> NLP-модели для обработки запросов, рекомендательные системы</li>
<li><strong>DevOps:</strong> Docker, Kubernetes, Yandex Cloud</li>
</ul>
</section>
<footer>
<p>© 2024 ЯлАрба. Все права защищены.</p>
<p>Контакты: gaziz.valitov@yalarba.travel</p>
</footer>
</body>
</html>
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
# Проверяем наличие сертификатов
if [ -f "/etc/letsencrypt/live/yalarba.ru/fullchain.pem" ]; then
echo "SSL certificates found, switching to HTTPS configuration"
ln -sf /etc/nginx/nginx-ssl.conf /etc/nginx/conf.d/default.conf
else
echo "SSL certificates not found, using HTTP only configuration"
ln -sf /etc/nginx/nginx-http.conf /etc/nginx/conf.d/default.conf
fi
# Проверяем конфигурацию nginx
nginx -t