first_commit

This commit is contained in:
2026-08-28 19:36:10 +00:00
commit a104b6d764
11 changed files with 1334 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ICQ Family Chat</title>
<meta name="theme-color" content="#2c3e50">
<!-- Converse.js v14 (локально, ESM-сборка из /dist) -->
<link rel="stylesheet" type="text/css" href="/dist/converse.min.css">
</head>
<body>
<!-- Converse.js рендерит интерфейс в этот контейнер -->
<div id="conversejs"></div>
<!-- ВАЖНО: v14 собирается как ES-модуль (использует import.meta и динамические
import() для чанков). Подключать ТОЛЬКО через type="module", иначе
SyntaxError: Cannot use 'import.meta' outside a module. -->
<script type="module" src="/dist/converse.min.js"></script>
<script type="module">
import converse from '/dist/converse.min.js';
converse.initialize({
// WebSocket-адрес XMPP-сервера (ВАЖНО: websocket_url, НЕ bosh_service_url —
// иначе Converse пробует подключиться по BOSH-протоколу и падает).
// Страница живёт на chat.nixg.ru, но XMPP-домен теперь nixg.ru → WS на xmpp.nixg.ru.
// Юзеры логинятся как user@nixg.ru.
websocket_url: 'wss://xmpp.nixg.ru/xmpp-websocket',
// Полноэкранный режим (дефолт в v14)
view_mode: 'fullscreen',
// Авторизация вручную (форма логина)
auto_login: false,
// Тема
theme: 'concord',
// Русский язык
i18n: 'ru',
// Показать форму входа сразу
show_controlbox_by_default: true,
});
</script>
</body>
</html>
+44
View File
@@ -0,0 +1,44 @@
# ICQ WebChat — nginx, отдаёт Converse.js и проксирует WebSocket на Prosody
# Порт 8081 (внутри сети icq_default), Caddy на vps02 проксирует на 10.8.0.2:8081
server {
listen 8081;
server_name chat.nixg.ru xmpp.nixg.ru;
# Статика Converse.js
root /usr/share/nginx/html;
index index.html;
# WebSocket XMPP (Converse.js подключается к wss://chat.nixg.ru/xmpp-websocket)
location /xmpp-websocket {
proxy_pass http://prosody:5280/xmpp-websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 3600s; # долгоживущий WS
proxy_send_timeout 3600s;
}
# BOSH (если понадобится)
location /http-bind {
proxy_pass http://prosody:5280/http-bind;
proxy_http_version 1.1;
proxy_set_header Host $host;
}
# XEP-0156: host-meta (JSON) — чтобы клиенты находили WebSocket автоматически
location = /.well-known/host-meta {
default_type application/jrd+json;
return 200 '{"links":[{"rel":"urn:xmpp:alt-connections:websocket","href":"wss://xmpp.nixg.ru/xmpp-websocket"},{"rel":"urn:xmpp:alt-connections:xbosh","href":"https://xmpp.nixg.ru/http-bind"}]}';
}
location = /.well-known/host-meta.json {
default_type application/jrd+json;
return 200 '{"links":[{"rel":"urn:xmpp:alt-connections:websocket","href":"wss://xmpp.nixg.ru/xmpp-websocket"},{"rel":"urn:xmpp:alt-connections:xbosh","href":"https://xmpp.nixg.ru/http-bind"}]}';
}
# Основная страница
location / {
try_files $uri $uri/ /index.html;
}
}