Не удалось выполнить макрос [velocity]. Причина: [The execution of the [velocity] script macro is not allowed in [xwiki:DevOps.Proxy.1\.Remnawave.1\.ultimate_remnanode_install.WebHome]. Check the rights of its last author or the parameters if it's rendered from another script.]. Нажмите на это сообщение для получения подробной информации.
org.xwiki.rendering.macro.MacroExecutionException: The execution of the [velocity] script macro is not allowed in [xwiki:DevOps.Proxy.1\.Remnawave.1\.ultimate_remnanode_install.WebHome]. Check the rights of its last author or the parameters if it's rendered from another script.
at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:178)
at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:58)
at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transform(MacroTransformation.java:441)
at org.xwiki.rendering.internal.transformation.DefaultRenderingContext.transformInContext(DefaultRenderingContext.java:183)
at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:88)
at org.xwiki.rendering.internal.transformation.XWikiTransformationManager.superPerformTransformations(XWikiTransformationManager.java:95)
at org.xwiki.rendering.internal.transformation.XWikiTransformationManager.performTransformations(XWikiTransformationManager.java:88)
at org.xwiki.display.internal.DocumentContentAsyncExecutor.executeInCurrentExecutionContext(DocumentContentAsyncExecutor.java:397)
at org.xwiki.display.internal.DocumentContentAsyncExecutor.execute(DocumentContentAsyncExecutor.java:269)
at org.xwiki.display.internal.DocumentContentAsyncRenderer.execute(DocumentContentAsyncRenderer.java:112)
at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.render(AbstractBlockAsyncRenderer.java:157)
at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.render(AbstractBlockAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:290)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.execute(DefaultBlockAsyncRendererExecutor.java:125)
at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:93)
at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:46)
at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:96)
at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:39)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:123)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:52)
at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:68)
at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:42)
at com.xpn.xwiki.doc.XWikiDocument.display(XWikiDocument.java:1433)
at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:1569)
at com.xpn.xwiki.doc.XWikiDocument.displayDocument(XWikiDocument.java:1519)
at com.xpn.xwiki.doc.XWikiDocument.displayDocument(XWikiDocument.java:1488)
at com.xpn.xwiki.api.Document.displayDocument(Document.java:821)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:704)
at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:75)
at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:242)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.xwiki.velocity.internal.directive.TryCatchDirective.render(TryCatchDirective.java:86)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:233)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:107)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:869)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:831)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:818)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:773)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:765)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:79)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:73)
at org.xwiki.template.script.TemplateScriptService.render(TemplateScriptService.java:54)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:492)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:217)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:233)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:107)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:869)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:831)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:818)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:773)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:765)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:79)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:73)
at org.xwiki.template.script.TemplateScriptService.render(TemplateScriptService.java:54)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:492)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:217)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:171)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:233)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:107)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:869)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:831)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:818)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:773)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:765)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:79)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:73)
at org.xwiki.template.script.TemplateScriptService.render(TemplateScriptService.java:54)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:492)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:217)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:233)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:107)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:869)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:831)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:811)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:797)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:91)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:85)
at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:2566)
at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:180)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:651)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:339)
at com.xpn.xwiki.web.LegacyActionServlet.service(LegacyActionServlet.java:111)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:66)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:135)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:212)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.xwiki.container.servlet.filters.internal.SafeRedirectFilter.doFilter(SafeRedirectFilter.java:106)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.xwiki.container.servlet.filters.internal.ResolveRelativeRedirectFilter.doFilter(ResolveRelativeRedirectFilter.java:129)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.xwiki.container.servlet.filters.internal.SourceURLResolverFilter.doFilter(SourceURLResolverFilter.java:177)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:120)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:673)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:1583)
Продвинутый скрипт автоматического развертывания Remnawave Node (Xray-core), спроектированный с упором на максимальную скрытность, защиту от активного зондирования (DPI) и гибкую маршрутизацию.
Это не просто VPN-установка. Это комплексная Defense-in-Depth инфраструктура, которая прячет ваш прокси за реальным облачным хранилищем, анализирует атаки в реальном времени и позволяет строить каскадные цепи прокси-серверов.
✨ Ключевые архитектурные особенности
- 🧠 Active DPI Defense (Динамический Graylist): Встроенный микросервис dpi-detector в реальном времени анализирует логи Nginx. При обнаружении сканеров уязвимостей или попыток активного зондирования (Active Probing), IP-адрес атакующего заносится в серый список. После этого Nginx на уровне L4 (TCP Stream) отрезает этот IP от ядра Xray, принудительно отдавая ему "белый" сайт-камуфляж.
- 🎭 Идеальная L4/L7 Маскировка: Единая точка входа на порт 443. Nginx Stream распределяет трафик по SNI: валидные запросы идут в Xray (Reality), весь остальной интернет-мусор и сканеры проваливаются в HTTP-блок, где их встречает легитимное и полностью рабочее файловое облако Nextcloud.
- 🕸️ Proxy Chaining (Каскадирование): Встроенная интеграция с NaïveProxy. Скрипт позволяет в пару кликов развернуть как серверную часть (вход для клиентов), так и клиентскую (выходной туннель на следующую ноду), маскируя транзитный трафик под обычные сессии браузера Chrome.
- 🔀 Умный локальный роутинг (SOCKS5): В ядро интегрированы локальные интерфейсы для точечного обхода ограничений прямо на ноде:
- Cloudflare WARP (порт 40000): Для прозрачного доступа к ChatGPT, Netflix и сервисам геолокации без риска бана IP дата-центра.
- B4 DPI Bypass (порт 1080): Для обхода региональных замедлений и блокировок (например, YouTube) на стороне самой ноды.
- 🔒 Hardened Security: Защита SSH через Fail2ban (с поддержкой рецидивов), блокировка ICMP-пингов, преконфигурированный UFW и защита от массового сканирования портов через TrafficGuard.
- 🚀 Оптимизация ядра: Автоматический тюнинг TCP BBR + fq_codel, расширение системных лимитов файловых дескрипторов (nofile до 1 млн) и тюнинг TCP keepalive для предотвращения обрывов "спящих" соединений за NAT.curl -fsSL
--
curl -fsSL 'https://xwiki.dev0ps.online/xwiki/bin/download/DevOps/Proxy/1.Remnawave/1.ultimate_remnanode_install/WebHome/install-node-nc.sh?rev=1.32' | sudo bash
Настройки B4
Сэты
YOUTUBE:
{"b4_version":"1.48.1","name":"youtube tls 1.3","tcp":{"incoming":{"mode":"fake","fake_count":10},"rst_protection":{"enabled":true}},"udp":{"mode":"drop","filter_quic":"parse"},"faking":{"sni_type":4,"payload_file":"captures/tls_stun.bin"},"targets":{"sni_domains":["googleapis.com","googleusercontent.com","googlevideo.com","youtu.be","youtube-nocookie.com","youtube.com","www.youtube.com","youtubei.googleapis.com","yt3.ggpht.com","youtubekids.com","dl.google.com"],"geosite_categories":["youtube"],"tls":"1.3"},"enabled":true}
YouTube - заработал на Selectel
{"b4_version":"1.47.2","name":"youtube (RT with missing bin) (copy)","udp":{"mode":"drop","filter_quic":"all"},"fragmentation":{"combo":{"shuffle_mode":"reverse","decoy_enabled":true,"fake_per_segment":true,"fake_per_seg_count":0},"disorder":{"fake_per_seg_count":0}},"faking":{"sni":false,"sni_type":4,"payload_file":"captures/tls_vk_com.bin","sni_mutation":{"mode":"fakesni"}},"targets":{"sni_domains":["ggpht.com","googleapis.com","googleusercontent.com","googlevideo.com","gstatic.com","gvt1.com","l.google.com","youtu.be","youtube-nocookie.com","youtube.com","yt.be","ytimg.com","play.google.com"],"geosite_categories":["youtube"]},"enabled":true}
Youtube + Telegram + Meta (mobile) + Загрузить пэйлоад в закрепе
{"id":"86746296-4e39-4b9f-9cc8-18669d492e9c","name":"Youtube + Telegram + Meta (mobile)","tcp":{"conn_bytes_limit":19,"seg2delay":0,"seg2delay_max":0,"syn_fake":true,"syn_fake_len":128,"syn_ttl":7,"drop_sack":false,"incoming":{"mode":"off","min":14,"max":14,"fake_ttl":7,"fake_count":3,"strategy":"badsum"},"desync":{"mode":"off","ttl":7,"count":3,"post_desync":false},"win":{"mode":"off","values":[0,1460,8192,65535]},"duplicate":{"enabled":false,"count":3}},"udp":{"mode":"fake","fake_seq_length":6,"fake_len":64,"faking_strategy":"none","dport_filter":"","filter_quic":"disabled","filter_stun":true,"conn_bytes_limit":8,"seg2delay":0,"seg2delay_max":0},"fragmentation":{"strategy":"tcp","reverse_order":true,"tlsrec_pos":0,"middle_sni":false,"sni_position":1,"oob_position":0,"oob_char":120,"seq_overlap_pattern":[],"combo":{"first_byte_split":false,"extension_split":false,"shuffle_mode":"full","first_delay_ms":30,"jitter_max_us":1000,"decoy_enabled":false,"decoy_snis":["ya.ru","vk.com","mail.ru","dzen.ru"]},"disorder":{"shuffle_mode":"full","min_jitter_us":1000,"max_jitter_us":3000}},"faking":{"sni":true,"ttl":7,"strategy":"pastseq","seq_offset":10000,"sni_seq_length":1,"sni_type":3,"custom_payload":"","payload_file":"","tls_mod":[],"timestamp_decrease":600000,"sni_mutation":{"mode":"off","grease_count":3,"padding_size":2048,"fake_ext_count":5,"fake_snis":["ya.ru","vk.com","max.ru"]},"tcp_md5":false},"targets":{"sni_domains":["youtube.com"],"ip":[],"geosite_categories":["youtube","telegram","instagram","meta"],"geoip_categories":["google","telegram","facebook"]},"enabled":true,"dns":{"enabled":true,"target_dns":"9.9.9.9","fragment_query":true},"stats":{"manual_domains":1,"manual_ips":0,"geosite_domains":825,"geoip_ips":5403,"total_domains":826,"total_ips":5403,"geosite_category_breakdown":{"instagram":74,"meta":553,"telegram":20,"youtube":178},"geoip_category_breakdown":{"facebook":108,"google":5283,"telegram":12}}}
googlevideo.com-pos-search-4
{"b4_version":"1.48.1","name":"googlevideo.com-pos-search-4","udp":{"filter_stun":false},"fragmentation":{"reverse_order":false,"middle_sni":false,"sni_position":4,"combo":{"first_byte_split":false,"extension_split":false}},"faking":{"sni":false,"ttl":1,"sni_type":3},"targets":{"sni_domains":["googlevideo.com","youtube.com","google.ru","youtubei.googleapis.com","yt3.ggpht.com"],"geosite_categories":["youtube","google","google-gemini"],"geoip_categories":["google"]},"enabled":true,"dns":{"target_dns":"192.168.1.1","fragment_query":true}}
youtube (с группы)
{"b4_version":"1.60.1","name":"YouTube","tcp":{"desync":{"mode":"rst","ttl":5,"count":10},"ip_block_detect":{"cache_blocked_ips":false}},"udp":{"mode":"reject","filter_quic":"all","filter_stun":false,"conn_bytes_limit":2},"fragmentation":{"strategy":"tcp","middle_sni":false,"combo":{"first_byte_split":false,"extension_split":false}},"faking":{"sni_type":3},"targets":{"sni_domains":["rr1---sn-n8v7kne6.googlevideo.com","rr2---sn-4pa5ojvg0-n8ve.googlevideo.com","rr3---sn-4pa5ojvg0-n8ve.googlevideo.com","rr7---sn-n8v7znsy.googlevideo.com","*.googlevideo.com"],"geosite_categories":["youtube"],"geoip_categories":["google"]},"enabled":true}
hyperion + payload: tls_gosuslugi_ru.bin
{"id":"1731ef6f-ec56-43b6-bc72-daec1e484daf","name":"hyperion","tcp":{"conn_bytes_limit":19,"seg2delay":20,"seg2delay_max":90,"syn_fake":false,"syn_fake_len":0,"syn_ttl":7,"drop_sack":false,"incoming":{"mode":"off","min":14,"max":14,"fake_ttl":7,"fake_count":3,"strategy":"badsum"},"desync":{"mode":"off","ttl":7,"count":3,"post_desync":false},"win":{"mode":"off","values":[0,1460,8192,65535]},"duplicate":{"enabled":false,"count":3}},"udp":{"mode":"fake","fake_seq_length":6,"fake_len":64,"faking_strategy":"none","dport_filter":"","filter_quic":"disabled","filter_stun":true,"conn_bytes_limit":8,"seg2delay":0,"seg2delay_max":0},"fragmentation":{"strategy":"combo","reverse_order":true,"tlsrec_pos":0,"middle_sni":true,"sni_position":1,"oob_position":0,"oob_char":120,"seq_overlap_pattern":[],"combo":{"first_byte_split":true,"extension_split":true,"shuffle_mode":"full","first_delay_ms":30,"jitter_max_us":1500,"decoy_enabled":false,"decoy_snis":["ya.ru","vk.com","mail.ru","dzen.ru"]},"disorder":{"shuffle_mode":"full","min_jitter_us":1000,"max_jitter_us":3000}},"faking":{"sni":true,"ttl":8,"strategy":"pastseq","seq_offset":10000,"sni_seq_length":1,"sni_type":4,"custom_payload":"","payload_file":"captures/tls_gosuslugi_ru.bin","tls_mod":[],"timestamp_decrease":600000,"sni_mutation":{"mode":"off","grease_count":3,"padding_size":2048,"fake_ext_count":5,"fake_snis":[]},"tcp_md5":true},"targets":{"sni_domains":["kinopub.online","linuxserver.io","euronews.com","shikimori.one","proton.me"],"ip":[],"geosite_categories":["cloudflare","ru-blocked","meta","discord","kinopub","youtube","intel","twitter","protonmail","canva","dw","category-media-ru","linkedin","instagram","hdrezka","fastly","hetzner","oracle","cdn77","digitalocean","akamai"],"geoip_categories":["cloudflare","digitalocean","contabo","akamai","amazon","hetzner","ovh","telegram","twitter","cdn77","scaleway","oracle","fastly"]},"enabled":true,"dns":{"enabled":false,"target_dns":"","fragment_query":false},"stats":{"manual_domains":5,"manual_ips":0,"geosite_domains":76395,"geoip_ips":7137,"total_domains":76400,"total_ips":7137,"geosite_category_breakdown":{"akamai":81,"canva":6,"category-media-ru":131,"cdn77":2,"cloudflare":74,"digitalocean":4,"discord":28,"dw":2,"fastly":8,"hdrezka":11,"hetzner":15,"instagram":74,"intel":288,"kinopub":11,"linkedin":12,"meta":553,"oracle":18,"protonmail":9,"ru-blocked":74866,"twitter":24,"youtube":178},"geoip_category_breakdown":{"akamai":596,"amazon":3447,"cdn77":213,"cloudflare":900,"contabo":284,"digitalocean":173,"fastly":62,"hetzner":117,"oracle":737,"ovh":554,"scaleway":21,"telegram":12,"twitter":21}}}
telegram
{"b4_version":"1.47.0","name":"telegram","tcp":{"syn_ttl":7,"incoming":{"fake_ttl":7},"desync":{"ttl":7}},"udp":{"filter_stun":false},"fragmentation":{"reverse_order":false,"strategy_pool":[],"tlsrec_pos_max":0,"middle_sni":false,"sni_position":2,"sni_position_max":0,"oob_position_max":0,"combo":{"first_byte_split":false,"extension_split":false,"shuffle_mode":"full","first_delay_ms":30,"first_delay_ms_max":0,"jitter_max_us":1000,"jitter_max_us_max":0,"fake_per_seg_count":0,"fake_per_seg_count_max":0},"disorder":{"fake_per_seg_count":0,"fake_per_seg_count_max":0}},"faking":{"sni":false,"ttl":1,"sni_type":3,"timestamp_decrease":600000},"targets":{"sni_domains":["t.me"],"geosite_categories":["telegram"],"geoip_categories":["telegram"]},"enabled":true}
meta
{"b4_version":"1.47.0","name":"meta","tcp":{"seg2delay":20,"drop_sack":true,"desync":{"mode":"ack","count":15}},"udp":{"fake_seq_length":15,"faking_strategy":"checksum","dport_filter":"443,3478,3482,5222,59234,45395,50300-50400","filter_quic":"parse","filter_stun":false},"fragmentation":{"strategy":"disorder","reverse_order":false,"strategy_pool":[],"tlsrec_pos_max":0,"middle_sni":false,"sni_position_max":0,"oob_position_max":0,"seq_overlap_pattern":["16","03","03","00","00"],"combo":{"first_byte_split":false,"extension_split":false,"first_delay_ms_max":0,"jitter_max_us_max":0,"fake_per_seg_count":0,"fake_per_seg_count_max":0},"disorder":{"min_jitter_us":500,"max_jitter_us":2100,"fake_per_seg_count":0,"fake_per_seg_count_max":0}},"faking":{"sni":false,"seq_offset":1000000,"sni_seq_length":12,"tls_mod":["rnd","dupsid"],"timestamp_decrease":600000},"targets":{"sni_domains":["facebook.com"],"geosite_categories":["meta"],"geoip_categories":["facebook"]},"enabled":true,"dns":{"target_dns":"9.9.9.9","fragment_query":true}}
| Сервис | Назначение |
|---|
| remnanode | VPN-нода Remnawave (xray-core) |
| remnawave-nginx | Nginx — SNI-роутинг, прокси xHTTP/gRPC/WS |
| nextcloud | Файловое облако (камуфляж) |
| b4 | B4 DPI Bypass — обход блокировок |
| goaccess | Визуализация логов nginx в реальном времени |
| watchtower | Автообновление контейнеров (каждые 24 часа) |
| Утилита | Назначение |
|---|
| ctop | Мониторинг Docker-контейнеров в терминале |
| lazydocker | TUI для управления Docker |
| fail2ban | Защита от брутфорса SSH |
| TrafficGuard | Блокировка сканеров по базам IP |
| Certbot | Let's Encrypt сертификаты |
| Zapret | Списки заблокированных в РФ сайтов |
| zsh + Oh My Zsh | Современный shell с плагинами |
| Настройка | Описание |
|---|
| BBR + fq_codel | Ускорение TCP |
| TCP Fast Open | Быстрый handshake |
| Socket buffers 128 MB | Высокая пропускная способность |
| Keepalive 60/10/5 | Быстрое обнаружение мёртвых соединений |
| IP Forwarding | Для VPN-маршрутизации |
| Настройка | Описание |
|---|
| nofile | 1048576 — макс. открытых файлов |
| nproc | 65536 — макс. процессов |
| fs.file-max | 1000000 — системный лимит дескрипторов |
| Настройка | Описание |
|---|
| UFW | deny incoming, whitelist SSH, 443 + 7443 открыты |
| fail2ban | sshd (3 попытки → бан 48ч), recidive (до 4 недель) |
| ICMP | echo-request заблокирован (сервер не пингуется) |
| Nginx | Блокировка ботов/сканеров по User-Agent |
Структура файлов
/opt/remnawave/
├── .env # Конфигурация (SECRET_KEY, домен, пути)
├── docker-compose.yml # Docker Compose
├── nginx-stream.conf # Nginx (stream + http)
├── .htpasswd_b4 # Пароли для B4/GoAccess
├── nextcloud/ # Конфиг Nextcloud
├── nextcloud_data/ # Данные Nextcloud
├── b4_config/ # Конфиг B4 DPI
├── nginx_logs/ # Логи nginx
├── goaccess_html/ # HTML-отчёты GoAccess
└── xray/share/
├── zapret.dat # Список запрещённых сайтов
├── geoip.dat # GeoIP база
└── geosite.dat # GeoSite база
Команды управления
| Команда | Описание |
|---|
| d | Статус контейнеров (алиас) |
| lzd | lazydocker (TUI) |
| dcu | docker compose up -d |
| dcd | docker compose down |
| dl remnanode | docker logs remnanode |
| Обновить ноду | cd /opt/remnawave && docker compose pull remnanode && docker compose up -d remnanode |
| Обновить Zapret вручную | bash /opt/remnawave/update-zapret.sh |
| Проверить fail2ban | fail2ban-client status sshd |
| Управление TrafficGuard | rknpidor — Интерактивное меню |
| Сертификаты | certbot certificates certbot renew --dry-run |
Автоматические задачи (Cron)
| Время | Задача |
|---|
| 03:00 | Certbot — продление сертификатов |
| 03:00 | Zapret — обновление списков |
| 04:00 | TrafficGuard — обновление баз IP |
| 24ч | Watchtower — обновление контейнеров |
Повторный запуск (обновление SNI)
Если скрипт обнаружит существующую установку, предложит обновить только Reality SNI:
[ВНИМАНИЕ] Обнаружена существующая конфигурация в /opt/remnawave/.env
Домен: example.com
Reality SNI: google.com
Обновить только Reality SNI? [y/N]: y
конфиг
🛠 Обновленная инструкция по заполнению полей
1. VLESS (Reality / Vision)
Для этого протокола мы объединяем твой системный тюнинг (BBR, WindowClamp) и фрагментацию.
Mux JSON: ❌ НЕ ИСПОЛЬЗОВАТЬ. Mux ломает логику XTLS-Vision и может сделать соединение более заметным для DPI.
SockOpt JSON: ✅ КОПИРОВАТЬ ЭТО:
{
"dialerProxy": "fragment",
"tcpcongestion": "bbr",
"tcpWindowClamp": 600,
"interface": "wg0",
"tcpKeepAliveInterval": 5,
"fragment": {
"packets": "tlshello",
"length": "50-100",
"interval": "10-20"
}
}
Что мы взяли из твоего примера:
- tcpcongestion: "bbr" — значительно ускоряет передачу данных при потерях пакетов.
- tcpWindowClamp: 600 — ограничивает размер окна TCP, что мешает DPI анализировать большие объемы данных сразу.
- interface: "wg0" — если у тебя трафик должен идти через конкретный интерфейс (например, Wireguard), это поле критично.
2. xHTTP (TCP)
Используем твои параметры xmux и extra, объединяя их в одном разделе xHTTP, и добавляем тюнинг в SockOpt.
xHTTP JSON: ✅ КОПИРОВАТЬ ЭТО:
{
"xmux": {
"cMaxReuseTimes": 0,
"maxConcurrency": "16-32",
"maxConnections": 0,
"hKeepAlivePeriod": 0,
"hMaxRequestTimes": "600-900",
"hMaxReusableSecs": "1800-3000"
},
"noGRPCHeader": false,
"xPaddingBytes": "100-1000",
"scMaxEachPostBytes": 1000000,
"scMinPostsIntervalMs": 30,
"scStreamUpServerSecs": "20-80"
}
SockOpt JSON: ✅ КОПИРОВАТЬ ЭТО:
{
"dialerProxy": "fragment",
"tcpcongestion": "bbr",
"tcpWindowClamp": 600,
"fragment": {
"packets": "tlshello",
"length": "50-100",
"interval": "10-20"
}
}
3. WebSocket (WS) — Прямое подключение
Здесь Mux будет полезен вместе с твоими системными настройками.
Mux JSON: ✅ КОПИРОВАТЬ ЭТО:
{
"enabled": true,
"concurrency": 16,
"version": 2
}
SockOpt JSON: ✅ КОПИРОВАТЬ ЭТО:
{
"dialerProxy": "fragment",
"tcpcongestion": "bbr",
"tcpKeepAliveInterval": 5,
"fragment": {
"packets": "tlshello",
"length": "50-100",
"interval": "10-20"
}
}
4. gRPC
Для gRPC важен низкий пинг, поэтому оставляем BBR, но Mux отключаем.
Mux JSON: ❌ НЕ ИСПОЛЬЗОВАТЬ. (gRPC сам управляет потоками).
SockOpt JSON: ✅ КОПИРОВАТЬ ЭТО:
{
"dialerProxy": "fragment",
"tcpcongestion": "bbr",
"fragment": {
"packets": "tlshello",
"length": "50-100",
"interval": "10-20"
}
}
ℹ️ Почему это важно (по твоим файлам):
- Фрагментация (tlshello): Режет первый пакет ClientHello (где виден SNI), не давая ТСПУ заблокировать соединение на старте.
- BBR (tcpcongestion): Твой сервер увидит, что клиент работает на BBR, и будет отдавать данные максимально быстро, минуя стандартные алгоритмы замедления TCP.
- Interface (wg0): Если ты используешь это в связке с локальным VPN или WARP (как в твоем конфиге OUT_WARP), этот параметр гарантирует, что трафик пойдет по нужному маршруту.