nginx and certbot into containers is start and renew certs by auto
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
build:
|
||||
@docker compose build
|
||||
|
||||
run:
|
||||
run: stop
|
||||
@docker compose up -d --remove-orphans
|
||||
|
||||
stop:
|
||||
@docker compose down
|
||||
|
||||
clean:
|
||||
@docker builder prune
|
||||
|
||||
|
||||
+9
-12
@@ -1,16 +1,13 @@
|
||||
# certbot/Dockerfile
|
||||
FROM certbot/certbot:latest
|
||||
FROM certbot/certbot
|
||||
|
||||
# Опционально: можно установить дополнительные пакеты, если нужно
|
||||
# RUN apk add --no-cache some-package
|
||||
# Создаем директории для конфигов
|
||||
RUN mkdir -p /etc/letsencrypt/config
|
||||
|
||||
# Копируем env файл (альтернатива - передавать через docker-compose)
|
||||
# COPY .env /tmp/.env
|
||||
# Копируем конфигурационные файлы
|
||||
COPY config/certbot.ini /etc/letsencrypt/config/
|
||||
COPY scripts/init-certbot.sh /opt/
|
||||
|
||||
# Копируем скрипт инициализации (если используется)
|
||||
# COPY certbot-init.sh /opt/
|
||||
# RUN chmod +x /opt/certbot-init.sh
|
||||
# Устанавливаем права
|
||||
RUN chmod +x /opt/init-certbot.sh
|
||||
|
||||
# Указываем точку входа (можно и через command в compose)
|
||||
ENTRYPOINT ["sh", "-c"]
|
||||
CMD ["certbot certonly --standalone --http-01-port ${CERTBOT_PORT} --noninteractive --agree-tos --email ${EMAIL} -d ${DOMAINS} --keep-until-expiring"]
|
||||
ENTRYPOINT ["/opt/init-certbot.sh"]
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
# Используем staging сервер для тестов
|
||||
staging = False # Staging True for develops
|
||||
|
||||
# Ваш email
|
||||
email = valitovgaziz@yandex.ru
|
||||
|
||||
# Принимаем условия подписки
|
||||
agree-tos = True
|
||||
|
||||
# Неинтерактивный режим
|
||||
non-interactive = True
|
||||
|
||||
# Домены
|
||||
domains = yalarba.ru
|
||||
|
||||
# Путь для webroot-аутентификации
|
||||
webroot-path = /var/www/certbot
|
||||
|
||||
# Предпочитаемые настройки
|
||||
key-type = ecdsa
|
||||
elliptic-curve = secp384r1
|
||||
@@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Проверяем наличие сертификатов
|
||||
if [ ! -d "/etc/letsencrypt/live/${DOMAINS}" ]; then
|
||||
echo "Получаем новые сертификаты..."
|
||||
certbot certonly --webroot \
|
||||
--config /etc/letsencrypt/config/certbot.ini \
|
||||
-w /var/www/certbot \
|
||||
-d ${DOMAINS}
|
||||
fi
|
||||
|
||||
# Бесконечный цикл для обновления сертификатов
|
||||
while :; do
|
||||
echo "Проверяем необходимость обновления..."
|
||||
certbot renew
|
||||
sleep 12h
|
||||
done
|
||||
+11
-8
@@ -44,7 +44,6 @@ services:
|
||||
volumes:
|
||||
- goose:/migrations
|
||||
command: goose up
|
||||
restart: unless-stopped
|
||||
|
||||
spa:
|
||||
container_name: spa
|
||||
@@ -65,9 +64,9 @@ services:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- ./nginx/configs/nginx.conf.template:/etc/nginx/templates/nginx.conf.template
|
||||
- certbot-etc:/etc/letsencrypt
|
||||
- ./spa/app:/var/www/yalarba.ru/html
|
||||
- certbot_data:/etc/letsencrypt
|
||||
- certbot_www:/var/www/certbot
|
||||
- ./spa/app:/usr/share/nginx/html
|
||||
networks:
|
||||
- web-network
|
||||
depends_on:
|
||||
@@ -79,18 +78,22 @@ services:
|
||||
dockerfile: Dockerfile
|
||||
container_name: certbot
|
||||
volumes:
|
||||
- certbot-etc:/etc/letsencrypt
|
||||
- certbot-var:/var/lib/letsencrypt
|
||||
- certbot_data:/etc/letsencrypt
|
||||
- certbot_www:/var/www/certbot
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
- EMAIL=valitovgaziz@yandex.ru
|
||||
- DOMAINS=yalarba.ru
|
||||
- STAGING=0
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
api:
|
||||
postgres-db:
|
||||
goose:
|
||||
certbot-etc:
|
||||
certbot-var:
|
||||
certbot_data:
|
||||
certbot_www:
|
||||
|
||||
networks:
|
||||
web-network:
|
||||
|
||||
+17
-2
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -0,0 +1,302 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Валитов Газиз - Full Stack Developer</title>
|
||||
<style>
|
||||
:root {
|
||||
--primary: #2c3e50;
|
||||
--secondary: #3498db;
|
||||
--light: #ecf0f1;
|
||||
--dark: #2c3e50;
|
||||
--success: #2ecc71;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 0 20px;
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
header {
|
||||
background-color: var(--primary);
|
||||
color: white;
|
||||
padding: 2rem 0;
|
||||
margin-bottom: 2rem;
|
||||
border-radius: 0 0 10px 10px;
|
||||
}
|
||||
|
||||
.header-content {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
h1, h2, h3 {
|
||||
color: var(--primary);
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin: 0;
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
border-bottom: 2px solid var(--secondary);
|
||||
padding-bottom: 0.5rem;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.contact-info {
|
||||
background-color: var(--light);
|
||||
padding: 1.5rem;
|
||||
border-radius: 8px;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.contact-info p {
|
||||
margin: 0.5rem 0;
|
||||
}
|
||||
|
||||
.job, .education {
|
||||
background-color: white;
|
||||
padding: 1.5rem;
|
||||
margin-bottom: 1.5rem;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
.job-header, .edu-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.skills-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 1rem;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.skill-category {
|
||||
flex: 1;
|
||||
min-width: 250px;
|
||||
background-color: white;
|
||||
padding: 1.5rem;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
.skill-category h3 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding-left: 1.2rem;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.tag {
|
||||
display: inline-block;
|
||||
background-color: var(--secondary);
|
||||
color: white;
|
||||
padding: 0.3rem 0.8rem;
|
||||
border-radius: 20px;
|
||||
font-size: 0.9rem;
|
||||
margin-right: 0.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--secondary);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
footer {
|
||||
text-align: center;
|
||||
padding: 2rem 0;
|
||||
margin-top: 2rem;
|
||||
color: #777;
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.header-content {
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.contact-info {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="header-content">
|
||||
<div>
|
||||
<h1>Валитов Газиз Камилевич</h1>
|
||||
<p>Full Stack Developer / Системный администратор</p>
|
||||
</div>
|
||||
<div>
|
||||
<p>Дата рождения: 27 октября 1985</p>
|
||||
<p>Место жительства: Уфа</p>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="contact-info">
|
||||
<h2>Контактная информация</h2>
|
||||
<p><strong>Телефон:</strong> +7 (962) 543-93-43</p>
|
||||
<p><strong>Email:</strong> <a href="mailto:valitovgaziz@gmail.com">valitovgaziz@gmail.com</a></p>
|
||||
<p><strong>Telegram:</strong> @valitovgaziz</p>
|
||||
<p><strong>GitHub:</strong> <a href="https://github.com/valitovgaziz" target="_blank">github.com/valitovgaziz</a></p>
|
||||
<p><strong>Ожидаемая зарплата:</strong> 130 000 ₽</p>
|
||||
<p><strong>Занятость:</strong> Полная занятость (удаленная работа)</p>
|
||||
</div>
|
||||
|
||||
<section>
|
||||
<h2>Опыт работы</h2>
|
||||
|
||||
<div class="job">
|
||||
<div class="job-header">
|
||||
<h3>Проектная работа (Full Stack Developer)</h3>
|
||||
<p><strong>Октябрь 2017 — настоящее время (7 лет)</strong></p>
|
||||
</div>
|
||||
<ul>
|
||||
<li><strong>2022-2024:</strong> Full Stack разработка агрегатора на Golang, Postgres и JavaScript с личным кабинетом, авторизацией, аутентификацией. <a href="https://github.com/valitovgaziz/yahrb_REST_API_2.0.git" target="_blank">Проект на GitHub</a></li>
|
||||
<li><strong>2021-2022:</strong> Разработка туристического агрегатора (Full Stack). Проектирование БД PostgresQL, создание фреймов для фронта. Стек: Java, JavaScript.</li>
|
||||
<li><strong>2019-2021:</strong> Разработка маркетплейса в составе команды. Создание сервисного слоя и обращений к БД через Hibernate на Java. <a href="https://bitbucket.org/Guhar4k/marketplace/src/master/src/" target="_blank">Проект на Bitbucket</a></li>
|
||||
<li><strong>2017-2018:</strong> Фронтенд разработка сайтов и сервисов. Стек: JavaScript, HTML, CSS.</li>
|
||||
<li><strong>2012-2015:</strong> Ремонт ТГК, администрирование ОС (установка и настройка), настройка ЛВС (прокладка, настройка роутеров).</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Образование</h2>
|
||||
|
||||
<div class="education">
|
||||
<div class="edu-header">
|
||||
<h3>Автономная некоммерческая организация высшего образования «Университет Иннополис»</h3>
|
||||
<p><strong>2021</strong></p>
|
||||
</div>
|
||||
<p>Java enterprise, Java enterprise developer (Сертификат о переквалификации)</p>
|
||||
</div>
|
||||
|
||||
<div class="education">
|
||||
<div class="edu-header">
|
||||
<h3>УКСИВТ</h3>
|
||||
<p><strong>2020</strong></p>
|
||||
</div>
|
||||
<p>Техник по информационным системам</p>
|
||||
</div>
|
||||
|
||||
<div class="education">
|
||||
<div class="edu-header">
|
||||
<h3>Уфимский государственный авиационный технический университет</h3>
|
||||
<p><strong>2004</strong></p>
|
||||
</div>
|
||||
<p>Автоматизация технологических систем, Сварочное производство (2 курса)</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Повышение квалификации</h2>
|
||||
|
||||
<div class="education">
|
||||
<div class="edu-header">
|
||||
<h3>Skillbox</h3>
|
||||
<p><strong>2024</strong></p>
|
||||
</div>
|
||||
<p>Управление проектами, Эффективный руководитель (комплект курсов)</p>
|
||||
</div>
|
||||
|
||||
<div class="education">
|
||||
<div class="edu-header">
|
||||
<h3>JetBrains Academy</h3>
|
||||
<p><strong>2022</strong></p>
|
||||
</div>
|
||||
<p>Java Full Stack Developer</p>
|
||||
</div>
|
||||
|
||||
<div class="education">
|
||||
<div class="edu-header">
|
||||
<h3>Нетология-групп</h3>
|
||||
<p><strong>2020</strong></p>
|
||||
</div>
|
||||
<p>Управление по Agile: Scrum, Kanban, Lean</p>
|
||||
</div>
|
||||
|
||||
<div class="education">
|
||||
<div class="edu-header">
|
||||
<h3>Frog-school</h3>
|
||||
<p><strong>2019</strong></p>
|
||||
</div>
|
||||
<p>English intermediate, CodeCamp Frontend developer</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Навыки</h2>
|
||||
<div class="skills-container">
|
||||
<div class="skill-category">
|
||||
<h3>Технические навыки</h3>
|
||||
<span class="tag">Java</span>
|
||||
<span class="tag">JavaScript</span>
|
||||
<span class="tag">Golang</span>
|
||||
<span class="tag">HTML/CSS</span>
|
||||
<span class="tag">PostgreSQL</span>
|
||||
<span class="tag">Hibernate</span>
|
||||
<span class="tag">Linux</span>
|
||||
<span class="tag">TCP/IP</span>
|
||||
<span class="tag">Настройка ЛВС</span>
|
||||
<span class="tag">Алгоритмы и структуры данных</span>
|
||||
</div>
|
||||
|
||||
<div class="skill-category">
|
||||
<h3>Языки</h3>
|
||||
<p><strong>Башкирский:</strong> Родной</p>
|
||||
<p><strong>Русский:</strong> C1 (Продвинутый)</p>
|
||||
<p><strong>Английский:</strong> B2 (Средне-продвинутый)</p>
|
||||
</div>
|
||||
|
||||
<div class="skill-category">
|
||||
<h3>Прочие навыки</h3>
|
||||
<span class="tag">Работа в команде</span>
|
||||
<span class="tag">Управление проектами</span>
|
||||
<span class="tag">Agile (Scrum, Kanban)</span>
|
||||
<span class="tag">Full Stack разработка</span>
|
||||
<span class="tag">Системное администрирование</span>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Обо мне</h2>
|
||||
<div class="job">
|
||||
<p>Без вредных привычек. Опытный Full Stack разработчик с дополнительными навыками в системном администрировании и управлении проектами. Способен работать как в команде, так и самостоятельно над сложными проектами.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<p>© 2024 Валитов Газиз. Все права защищены.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,57 +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 http2;
|
||||
listen [::]:443 ssl http2;
|
||||
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;
|
||||
# }
|
||||
}
|
||||
Reference in New Issue
Block a user