обновление сайта
This commit is contained in:
@@ -8,3 +8,6 @@ MAIL_BIND_IP=0.0.0.0
|
||||
|
||||
# The setup UI is bound to 127.0.0.1 only.
|
||||
MAIL_SETUP_PORT=8081
|
||||
|
||||
# Certbot deploys the public certificate and private key here.
|
||||
MAIL_TLS_DIR=/etc/moonwell-mail/tls
|
||||
|
||||
@@ -16,6 +16,7 @@ services:
|
||||
volumes:
|
||||
- 'stalwart-config:/etc/stalwart'
|
||||
- 'stalwart-data:/var/lib/stalwart'
|
||||
- '${MAIL_TLS_DIR:-/etc/moonwell-mail/tls}:/run/stalwart-tls:ro'
|
||||
networks:
|
||||
default:
|
||||
aliases:
|
||||
|
||||
@@ -134,3 +134,18 @@ docker compose exec -T laravel.test php artisan config:cache
|
||||
|
||||
Перед восстановлением используй ту же minor-версию образа Stalwart, что указана
|
||||
в `compose.mail.yaml`.
|
||||
|
||||
## TLS на production-сервере
|
||||
|
||||
На production сертификат выпускает системный Certbot через Nginx. Контейнер
|
||||
получает read-only каталог `MAIL_TLS_DIR` и использует:
|
||||
|
||||
```text
|
||||
/run/stalwart-tls/fullchain.pem
|
||||
/run/stalwart-tls/privkey.pem
|
||||
```
|
||||
|
||||
Deploy-hook Certbot копирует обновлённые файлы в этот каталог и перезапускает
|
||||
только контейнер Stalwart, чтобы он перечитал сертификат.
|
||||
|
||||
Hook устанавливается из `scripts/deploy-mail-certificate.sh`.
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
server {
|
||||
server_name mail.moon-well.online;
|
||||
listen 80;
|
||||
|
||||
location / {
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
server_name mail.moon-well.online;
|
||||
listen 443 ssl;
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/mail.moon-well.online/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/mail.moon-well.online/privkey.pem;
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
client_max_body_size 50M;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:8082;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
}
|
||||
@@ -1560,7 +1560,7 @@ section {
|
||||
}
|
||||
.footer-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 2fr 1fr 1fr 1fr;
|
||||
grid-template-columns: 2fr 1fr 1fr;
|
||||
gap: 48px;
|
||||
padding-top: 56px;
|
||||
border-top: 1px solid var(--panel-border);
|
||||
@@ -1583,6 +1583,13 @@ section {
|
||||
}
|
||||
.footer-col a:hover { color: var(--ivory); }
|
||||
|
||||
.join-note-link {
|
||||
color: var(--moon);
|
||||
text-decoration: underline;
|
||||
text-decoration-color: rgba(127,184,212,0.3);
|
||||
}
|
||||
.join-note-link:hover { text-decoration-color: var(--moon); }
|
||||
|
||||
.footer-brand {
|
||||
max-width: 360px;
|
||||
}
|
||||
|
||||
@@ -36,8 +36,12 @@ defineProps({
|
||||
<p>Приватный сервер World of Warcraft 3.3.5a с личным прогрессом, одиночными подземельями и режимом «Предатель». Играй бесплатно — покупки не дают боевого преимущества.</p>
|
||||
</div>
|
||||
<div class="footer-col"><h4>Сервер</h4><a href="#">Статус реалмов</a><a :href="playUrl">Скачать клиент</a><a v-if="legalUrls.offer_published" :href="legalUrls.offer">Публичная оферта</a><a v-if="legalUrls.privacy_published" :href="legalUrls.privacy">Персональные данные</a><a v-if="legalUrls.rules_published" :href="legalUrls.rules">Правила проекта</a></div>
|
||||
<div class="footer-col"><h4>Сообщество</h4><a href="#">Discord</a><a href="#">Форум</a><a href="#">Поддержка</a><a href="#">Вакансии</a></div>
|
||||
<div class="footer-col"><h4>База знаний</h4><a href="#">Гайды</a><a href="#">База данных</a><a href="#">Рейтинги</a><a href="#">API</a></div>
|
||||
<div class="footer-col">
|
||||
<h4>Сообщество</h4>
|
||||
<a href="https://vk.ru/moonwellwow" target="_blank" rel="noopener">ВКонтакте</a>
|
||||
<a href="https://t.me/+cVJjNhAgj3IyMTYy" target="_blank" rel="noopener">Telegram</a>
|
||||
<a href="mailto:support@moon-well.online">Поддержка</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer-bottom">
|
||||
|
||||
@@ -109,7 +109,7 @@ function submit(event) {
|
||||
<p class="lead" style="font-style: italic">{{ inviteRequired ? 'Укажи инвайт-код, логин, почту и пароль' : 'Укажи логин, почту и пароль' }} — аккаунт будет готов к входу в игру сразу после регистрации.</p>
|
||||
<div v-if="inviteRequired" class="join-note">
|
||||
<span class="join-note-k">Закрытый бета-доступ</span>
|
||||
<span class="join-note-v">Пока идёт закрытый этап: регистрация только по инвайт-кодам. Код можно получить у друзей-игроков или в нашем Discord.</span>
|
||||
<span class="join-note-v">Пока идёт закрытый этап: регистрация только по инвайт-кодам. Код можно получить у друзей-игроков или в нашем <a class="join-note-link" href="https://t.me/+cVJjNhAgj3IyMTYy" target="_blank" rel="noopener">Telegram-сообществе</a>.</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Executable
+31
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -Eeuo pipefail
|
||||
|
||||
CERTIFICATE_LINEAGE="${RENEWED_LINEAGE:-/etc/letsencrypt/live/mail.moon-well.online}"
|
||||
TLS_DIR="${MAIL_TLS_DIR:-/etc/moonwell-mail/tls}"
|
||||
MAIL_CONTAINER="${MAIL_CONTAINER:-moonwell-web-stalwart-1}"
|
||||
|
||||
[[ -s "${CERTIFICATE_LINEAGE}/fullchain.pem" ]] || {
|
||||
printf '[mail:tls:error] Certificate chain is missing\n' >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
[[ -s "${CERTIFICATE_LINEAGE}/privkey.pem" ]] || {
|
||||
printf '[mail:tls:error] Private key is missing\n' >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
install -d -o root -g 2000 -m 0750 "$TLS_DIR"
|
||||
install -o root -g 2000 -m 0640 \
|
||||
"${CERTIFICATE_LINEAGE}/fullchain.pem" \
|
||||
"${TLS_DIR}/fullchain.pem"
|
||||
install -o root -g 2000 -m 0640 \
|
||||
"${CERTIFICATE_LINEAGE}/privkey.pem" \
|
||||
"${TLS_DIR}/privkey.pem"
|
||||
|
||||
if docker container inspect "$MAIL_CONTAINER" >/dev/null 2>&1; then
|
||||
docker restart "$MAIL_CONTAINER" >/dev/null
|
||||
fi
|
||||
|
||||
printf '[mail:tls] Certificate deployed from %s\n' "$CERTIFICATE_LINEAGE"
|
||||
Reference in New Issue
Block a user