- kit update ставит только релизы, у которых SHA256SUMS подписан ключом автора (ssh-keygen -Y verify), версия внутри подписи совпадает, файлы сошлись с хешами; откат на старую версию запрещён; после обновления проверяется подписка, иначе возврат - автообновление: systemd-таймер раз в сутки ночью со случайной задержкой, kit update --manual / --auto, журнал /var/log/kit-update.log - hy2 update тоже проверяет подпись - tools/release.sh: проверка версий и хеша установщика 3X-UI, SHA256SUMS и подпись - kit backup и 3x-ui.sh --restore: архив 600, строгая проверка архива, конфиги nginx и kit-sub собираются заново, смена IP в подключениях - сайт-заглушка: случайный из шести шаблонов внутри скрипта - zashboard закреплён на v3.29.1, короткие тире и 192.168.x.x в текстах и картинках - CI: ключ подписи одинаковый в kit и hy2, проверка подписи релиза - CHANGELOG, README, инструкция, SECURITY.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7GrBSRPVXhrz3RAprWDnt
1 line
7.7 KiB
XML
1 line
7.7 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="300" viewBox="0 0 1200 300" role="img" aria-label="3X-UI KIT – свой VPN-сервер: все протоколы, один порт, одна подписка"><title>3X-UI KIT – свой VPN-сервер: все протоколы, один порт, одна подписка</title><style>.s{font-family:Inter, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif}.m{font-family:'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}</style><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#0d1117"/><stop offset="1" stop-color="#0f2418"/></linearGradient><pattern id="p" width="28" height="28" patternUnits="userSpaceOnUse"><path d="M28 0H0V28" fill="none" stroke="#3fb95014"/></pattern></defs><rect width="1200" height="300" rx="20" fill="url(#g)"/><rect width="1200" height="300" rx="20" fill="url(#p)"/><g opacity="0.4"><text x="1045" y="97" class="m" font-size="12" fill="#3fb950" font-weight="400" text-anchor="start">ア</text></g><g opacity="0.4"><text x="917" y="68" class="m" font-size="12" fill="#3fb950" font-weight="400" text-anchor="start">コ</text></g><g opacity="0.15"><text x="1139" y="129" class="m" font-size="18" fill="#3fb950" font-weight="400" text-anchor="start">1</text></g><g opacity="0.15"><text x="1094" y="55" class="m" font-size="20" fill="#3fb950" font-weight="400" text-anchor="start">カ</text></g><g opacity="0.15"><text x="1097" y="50" class="m" font-size="15" fill="#3fb950" font-weight="400" text-anchor="start">{</text></g><g opacity="0.4"><text x="1178" y="51" class="m" font-size="18" fill="#3fb950" font-weight="400" text-anchor="start">{</text></g><g opacity="0.4"><text x="905" y="133" class="m" font-size="14" fill="#3fb950" font-weight="400" text-anchor="start">1</text></g><g opacity="0.4"><text x="1028" y="234" class="m" font-size="13" fill="#3fb950" font-weight="400" text-anchor="start">ウ</text></g><g opacity="0.4"><text x="1172" y="177" class="m" font-size="14" fill="#3fb950" font-weight="400" text-anchor="start">/</text></g><g opacity="0.15"><text x="932" y="116" class="m" font-size="20" fill="#3fb950" font-weight="400" text-anchor="start">コ</text></g><g opacity="0.15"><text x="912" y="50" class="m" font-size="19" fill="#3fb950" font-weight="400" text-anchor="start">}</text></g><g opacity="0.25"><text x="1152" y="238" class="m" font-size="21" fill="#3fb950" font-weight="400" text-anchor="start">ケ</text></g><g opacity="0.15"><text x="1112" y="205" class="m" font-size="14" fill="#3fb950" font-weight="400" text-anchor="start">ク</text></g><g opacity="0.25"><text x="1004" y="61" class="m" font-size="20" fill="#3fb950" font-weight="400" text-anchor="start">{</text></g><g opacity="0.25"><text x="1133" y="195" class="m" font-size="21" fill="#3fb950" font-weight="400" text-anchor="start">ウ</text></g><g opacity="0.25"><text x="917" y="80" class="m" font-size="14" fill="#3fb950" font-weight="400" text-anchor="start">></text></g><g opacity="0.25"><text x="1055" y="97" class="m" font-size="12" fill="#3fb950" font-weight="400" text-anchor="start"><</text></g><g opacity="0.4"><text x="919" y="180" class="m" font-size="17" fill="#3fb950" font-weight="400" text-anchor="start">ケ</text></g><g opacity="0.15"><text x="1134" y="253" class="m" font-size="16" fill="#3fb950" font-weight="400" text-anchor="start">ア</text></g><g opacity="0.4"><text x="1122" y="53" class="m" font-size="16" fill="#3fb950" font-weight="400" text-anchor="start">1</text></g><g opacity="0.4"><text x="1175" y="248" class="m" font-size="18" fill="#3fb950" font-weight="400" text-anchor="start">ク</text></g><g opacity="0.25"><text x="1057" y="31" class="m" font-size="14" fill="#3fb950" font-weight="400" text-anchor="start">ウ</text></g><g opacity="0.15"><text x="939" y="272" class="m" font-size="16" fill="#3fb950" font-weight="400" text-anchor="start">1</text></g><g opacity="0.25"><text x="946" y="146" class="m" font-size="19" fill="#3fb950" font-weight="400" text-anchor="start">ア</text></g><g opacity="0.25"><text x="921" y="105" class="m" font-size="20" fill="#3fb950" font-weight="400" text-anchor="start">ウ</text></g><g opacity="0.4"><text x="1022" y="90" class="m" font-size="16" fill="#3fb950" font-weight="400" text-anchor="start">イ</text></g><g opacity="0.15"><text x="1092" y="203" class="m" font-size="14" fill="#3fb950" font-weight="400" text-anchor="start">ア</text></g><g opacity="0.15"><text x="922" y="110" class="m" font-size="22" fill="#3fb950" font-weight="400" text-anchor="start">ウ</text></g><g opacity="0.4"><text x="999" y="26" class="m" font-size="14" fill="#3fb950" font-weight="400" text-anchor="start"><</text></g><g opacity="0.15"><text x="1014" y="164" class="m" font-size="18" fill="#3fb950" font-weight="400" text-anchor="start">0</text></g><g opacity="0.4"><text x="1153" y="209" class="m" font-size="17" fill="#3fb950" font-weight="400" text-anchor="start">}</text></g><g opacity="0.4"><text x="944" y="283" class="m" font-size="22" fill="#3fb950" font-weight="400" text-anchor="start">}</text></g><g opacity="0.25"><text x="907" y="253" class="m" font-size="18" fill="#3fb950" font-weight="400" text-anchor="start">/</text></g><g opacity="0.25"><text x="1084" y="221" class="m" font-size="22" fill="#3fb950" font-weight="400" text-anchor="start">イ</text></g><g opacity="0.15"><text x="1085" y="51" class="m" font-size="15" fill="#3fb950" font-weight="400" text-anchor="start">オ</text></g><g opacity="0.25"><text x="1105" y="103" class="m" font-size="21" fill="#3fb950" font-weight="400" text-anchor="start">イ</text></g><g opacity="0.4"><text x="906" y="72" class="m" font-size="14" fill="#3fb950" font-weight="400" text-anchor="start">0</text></g><g opacity="0.4"><text x="1154" y="71" class="m" font-size="12" fill="#3fb950" font-weight="400" text-anchor="start">コ</text></g><g opacity="0.25"><text x="916" y="126" class="m" font-size="14" fill="#3fb950" font-weight="400" text-anchor="start">}</text></g><g opacity="0.25"><text x="1009" y="197" class="m" font-size="19" fill="#3fb950" font-weight="400" text-anchor="start">}</text></g><text x="72" y="140" class="s" font-size="60" fill="#e6edf3" font-weight="800" text-anchor="start">3X-UI KIT</text><text x="74" y="190" class="s" font-size="26" fill="#8b949e" font-weight="400" text-anchor="start">Свой VPN-сервер: все протоколы, один порт 443, одна подписка</text><rect x="74" y="222" width="101" height="36" rx="18" fill="#3fb95022" stroke="#3fb950" stroke-width="1.2" /><text x="124.5" y="246" class="s" font-size="16" fill="#3fb950" font-weight="600" text-anchor="middle">REALITY</text><rect x="187" y="222" width="120" height="36" rx="18" fill="#3fb95022" stroke="#3fb950" stroke-width="1.2" /><text x="247.0" y="246" class="s" font-size="16" fill="#3fb950" font-weight="600" text-anchor="middle">Hysteria2</text><rect x="319" y="222" width="120" height="36" rx="18" fill="#3fb95022" stroke="#3fb950" stroke-width="1.2" /><text x="379.0" y="246" class="s" font-size="16" fill="#3fb950" font-weight="600" text-anchor="middle">AmneziaWG</text><rect x="451" y="222" width="82" height="36" rx="18" fill="#3fb95022" stroke="#3fb950" stroke-width="1.2" /><text x="492.0" y="246" class="s" font-size="16" fill="#3fb950" font-weight="600" text-anchor="middle">XHTTP</text><rect x="545" y="222" width="72" height="36" rx="18" fill="#3fb95022" stroke="#3fb950" stroke-width="1.2" /><text x="581.0" y="246" class="s" font-size="16" fill="#3fb950" font-weight="600" text-anchor="middle">TUIC</text><rect x="629" y="222" width="63" height="36" rx="18" fill="#3fb95022" stroke="#3fb950" stroke-width="1.2" /><text x="660.5" y="246" class="s" font-size="16" fill="#3fb950" font-weight="600" text-anchor="middle">443</text></svg> |