MAPPEX: прототип межведомственного пункта наблюдения
Интерактивный дашборд по макету Figma «Government Dashboards»: карта РФ (2D, вид с дрона в 3D, спутник, гибрид), ленты событий с вызовом ведомств в 1 клик, ИИ-автопилот назначений, журнал, профиль, радар, статистика, режимы «Ночное время», «Плохое зрение» и «Максимальная контрастность». Vite + React + TypeScript, MapLibre GL, zustand. Лицензия MIT. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
# MAPPEX — статический прототип на mappex.yappix.ru.
|
||||
# Установка на сервере:
|
||||
# sudo certbot certonly --webroot -w /var/www/certbot -d mappex.yappix.ru # сертификат (нужен блок :80)
|
||||
# sudo cp deploy/nginx-mappex.yappix.ru.conf /etc/nginx/sites-available/mappex.yappix.ru
|
||||
# sudo ln -sf /etc/nginx/sites-available/mappex.yappix.ru /etc/nginx/sites-enabled/
|
||||
# sudo nginx -t && sudo systemctl reload nginx
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name mappex.yappix.ru;
|
||||
|
||||
location ^~ /.well-known/acme-challenge/ {
|
||||
root /var/www/certbot;
|
||||
default_type "text/plain";
|
||||
}
|
||||
|
||||
location / {
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
listen [::]:443 ssl;
|
||||
http2 on;
|
||||
server_name mappex.yappix.ru;
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/mappex.yappix.ru/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/mappex.yappix.ru/privkey.pem;
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
root /var/www/mappex;
|
||||
index index.html;
|
||||
|
||||
# воркер MapLibre — ES-модуль: браузер требует JavaScript-тип
|
||||
types {
|
||||
text/html html;
|
||||
text/css css;
|
||||
application/javascript js mjs;
|
||||
application/json json;
|
||||
application/geo+json geojson;
|
||||
image/svg+xml svg;
|
||||
image/png png;
|
||||
image/jpeg jpg jpeg;
|
||||
font/woff2 woff2;
|
||||
image/x-icon ico;
|
||||
}
|
||||
|
||||
gzip on;
|
||||
gzip_vary on;
|
||||
gzip_comp_level 6;
|
||||
gzip_types text/css application/javascript application/json application/geo+json image/svg+xml;
|
||||
|
||||
# файлы сборки с хешем в имени — навсегда
|
||||
location /assets/ {
|
||||
add_header Cache-Control "public, max-age=31536000, immutable" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
|
||||
try_files $uri =404;
|
||||
}
|
||||
|
||||
location /data/ {
|
||||
add_header Cache-Control "public, max-age=86400" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
|
||||
try_files $uri =404;
|
||||
}
|
||||
|
||||
location / {
|
||||
add_header Cache-Control "no-cache" always;
|
||||
add_header Strict-Transport-Security "max-age=31536000" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
|
||||
# заголовки безопасности — в каждом location: add_header там отменяет наследование с уровня server
|
||||
access_log /var/log/nginx/mappex-yappix-access.log;
|
||||
error_log /var/log/nginx/mappex-yappix-error.log;
|
||||
}
|
||||
Executable
+17
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
# Выкладка прототипа на сервер: сборка → rsync dist/ → права для nginx.
|
||||
# DEPLOY_HOST=root@host DEPLOY_REMOTE=/var/www/mappex/ bash deploy/publish.sh
|
||||
# По умолчанию — VDS YappiX (алиас yappix-vds из ~/.ssh/config) и https://mappex.yappix.ru.
|
||||
set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
HOST="${DEPLOY_HOST:-yappix-vds}"
|
||||
REMOTE="${DEPLOY_REMOTE:-/var/www/mappex/}"
|
||||
|
||||
cd "$ROOT"
|
||||
npm run build
|
||||
ssh "$HOST" "mkdir -p $REMOTE"
|
||||
# rsync переносит права macOS (например, 700) — без chmod nginx (www-data) ответит 403
|
||||
rsync -az --delete dist/ "$HOST:$REMOTE"
|
||||
ssh "$HOST" "chown -R www-data:www-data $REMOTE && find $REMOTE -type f -exec chmod 644 {} + && find $REMOTE -type d -exec chmod 755 {} +"
|
||||
|
||||
echo "Выложено: $HOST:$REMOTE"
|
||||
Reference in New Issue
Block a user