{"id":284,"date":"2024-01-13T19:07:44","date_gmt":"2024-01-13T22:07:44","guid":{"rendered":"https:\/\/atcp.dev\/?p=284"},"modified":"2024-01-14T15:11:46","modified_gmt":"2024-01-14T18:11:46","slug":"wireguard-integracao-do-wireguard-com-docker","status":"publish","type":"post","link":"https:\/\/atcp.dev\/index.php\/2024\/01\/13\/wireguard-integracao-do-wireguard-com-docker\/","title":{"rendered":"WireGuard &#8211; Integra\u00e7\u00e3o do WireGuard com Docker"},"content":{"rendered":"<div class=\"f618d039bd5afeaf81f3cd1d6ab100e9\" data-index=\"1\" style=\"float: none; margin:10px 0 10px 0; text-align:center;\">\n<script type=\"text\/javascript\">\r\n\tatOptions = {\r\n\t\t'key' : '791bfe77868e08dbb3d074f964f83ebb',\r\n\t\t'format' : 'iframe',\r\n\t\t'height' : 90,\r\n\t\t'width' : 728,\r\n\t\t'params' : {}\r\n\t};\r\n<\/script>\r\n<script type=\"text\/javascript\" src=\"\/\/www.highperformanceformat.com\/791bfe77868e08dbb3d074f964f83ebb\/invoke.js\"><\/script>\n<\/div>\n\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"284\" class=\"elementor elementor-284\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3df1749b e-flex e-con-boxed e-con e-parent\" data-id=\"3df1749b\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4e39dcfd elementor-widget elementor-widget-text-editor\" data-id=\"4e39dcfd\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.18.0 - 20-12-2023 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p><!-- wp:image {\"id\":294,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} --><\/p>\n<p><img  title=\"\" fetchpriority=\"high\" decoding=\"async\" width=\"768\" height=\"432\" class=\"wp-image-294\" src=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/image.png\"  alt=\"image WireGuard - Integra\u00e7\u00e3o do WireGuard com Docker\"  srcset=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/image.png 768w, https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/image-300x169.png 300w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/p>\n<p><!-- \/wp:image --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<h2><strong>Tutorial: Integra\u00e7\u00e3o do WireGuard com Docker<\/strong><\/h2>\n<p>Neste tutorial, voc\u00ea aprender\u00e1 como integrar o WireGuard em cont\u00eaineres Docker para estabelecer uma comunica\u00e7\u00e3o segura entre eles. O WireGuard \u00e9 uma tecnologia de VPN moderna e eficiente que pode ser facilmente integrada em ambientes de cont\u00eaineres para garantir a seguran\u00e7a da comunica\u00e7\u00e3o entre servi\u00e7os.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:heading {\"level\":3} --><\/p>\n<p>\u00a0<\/p>\n<p><strong style=\"font-family: inherit; text-align: var(--text-align); color: #333333; font-size: 2rem;\">Passo 1: Instalar o WireGuard no Host<\/strong><\/p>\n<h3 class=\"wp-block-heading\">Pr\u00e9-requisitos:<\/h3>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:list --><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul><!-- wp:list-item --><\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Docker instalado no seu sistema.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><!-- \/wp:list-item --><\/p>\n<p><!-- wp:list-item --><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Acesso de administrador (ou capacidade de executar comandos Docker sem sudo).<\/li>\n<li>Conhecimento b\u00e1sico de Docker e WireGuard.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><!-- \/wp:list-item --><\/p>\n<p><!-- wp:list-item --><\/p>\n<p>Antes de come\u00e7ar, instale o WireGuard no host. Dependendo do sistema operacional, voc\u00ea pode instalar o WireGuard usando os gerenciadores de pacotes adequados.\u00a0<cite><strong>Exemplo para Ubuntu\/Debian:<\/strong><\/cite><\/p>\n<p><!-- \/wp:quote --><\/p>\n<p><!-- wp:image {\"id\":285,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} --><\/p>\n<figure class=\"wp-block-image size-full\"><img  title=\"\" decoding=\"async\" width=\"459\" height=\"84\" class=\"wp-image-285\" src=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_3.png\"  alt=\"Screenshot_3 WireGuard - Integra\u00e7\u00e3o do WireGuard com Docker\"  srcset=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_3.png 459w, https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_3-300x55.png 300w\" sizes=\"(max-width: 459px) 100vw, 459px\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p><!-- wp:heading --><\/p>\n<h2 class=\"wp-block-heading\"><strong>Passo 2: Criar as Chaves do WireGuard<\/strong><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Vamos gerar as chaves necess\u00e1rias para o servidor WireGuard e para os cont\u00eaineres.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:image {\"id\":286,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} --><\/p>\n<figure class=\"wp-block-image size-full\"><img  title=\"\" decoding=\"async\" width=\"458\" height=\"138\" class=\"wp-image-286\" src=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_4.png\"  alt=\"Screenshot_4 WireGuard - Integra\u00e7\u00e3o do WireGuard com Docker\"  srcset=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_4.png 458w, https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_4-300x90.png 300w\" sizes=\"(max-width: 458px) 100vw, 458px\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p><!-- wp:heading --><\/p>\n<h2 class=\"wp-block-heading\"><strong>Passo 3: Criar a Configura\u00e7\u00e3o do WireGuard<\/strong><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Crie um arquivo de configura\u00e7\u00e3o para o servidor WireGuard (<code>wg0.conf<\/code>).<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:image {\"id\":287,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} --><\/p>\n<figure class=\"wp-block-image size-full\"><img  title=\"\" loading=\"lazy\" decoding=\"async\" width=\"458\" height=\"208\" class=\"wp-image-287\" src=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_5.png\"  alt=\"Screenshot_5 WireGuard - Integra\u00e7\u00e3o do WireGuard com Docker\"  srcset=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_5.png 458w, https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_5-300x136.png 300w\" sizes=\"(max-width: 458px) 100vw, 458px\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p><!-- wp:heading --><\/p>\n<h2 class=\"wp-block-heading\">Passo 4: Configurar o Docker para Usar o WireGuard<\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Crie uma rede Docker usando o driver &#8216;bridge&#8217; e conecte-a \u00e0 interface WireGuard.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:image {\"id\":289,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} --><\/p>\n<figure class=\"wp-block-image size-full\"><img  title=\"\" loading=\"lazy\" decoding=\"async\" width=\"460\" height=\"65\" class=\"wp-image-289\" src=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_6.png\"  alt=\"Screenshot_6 WireGuard - Integra\u00e7\u00e3o do WireGuard com Docker\"  srcset=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_6.png 460w, https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_6-300x42.png 300w\" sizes=\"(max-width: 460px) 100vw, 460px\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p><!-- wp:heading --><\/p>\n<h2 class=\"wp-block-heading\"><strong>Passo 5: Criar e Configurar Cont\u00eaineres <\/strong><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Crie cont\u00eaineres Docker e conecte-os \u00e0 rede criada.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:image {\"id\":290,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} --><\/p>\n<figure class=\"wp-block-image size-full\"><img  title=\"\" loading=\"lazy\" decoding=\"async\" width=\"458\" height=\"229\" class=\"wp-image-290\" src=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_7.png\"  alt=\"Screenshot_7 WireGuard - Integra\u00e7\u00e3o do WireGuard com Docker\"  srcset=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_7.png 458w, https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_7-300x150.png 300w\" sizes=\"(max-width: 458px) 100vw, 458px\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p><!-- wp:heading --><\/p>\n<h2 class=\"wp-block-heading\">Passo 6: Iniciar a Interface WireGuard<\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>No host, inicie a interface WireGuard.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:image {\"id\":291,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} --><\/p>\n<figure class=\"wp-block-image size-full\"><img  title=\"\" loading=\"lazy\" decoding=\"async\" width=\"460\" height=\"68\" class=\"wp-image-291\" src=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_8.png\"  alt=\"Screenshot_8 WireGuard - Integra\u00e7\u00e3o do WireGuard com Docker\"  srcset=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_8.png 460w, https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_8-300x44.png 300w\" sizes=\"(max-width: 460px) 100vw, 460px\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p><!-- wp:heading --><\/p>\n<h2 class=\"wp-block-heading\">Passo 7: Testar a Comunica\u00e7\u00e3o<\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>No cont\u00eainer, teste a comunica\u00e7\u00e3o com o servidor WireGuard.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:image {\"id\":292,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} --><\/p>\n<figure class=\"wp-block-image size-full\"><img  title=\"\" loading=\"lazy\" decoding=\"async\" width=\"459\" height=\"85\" class=\"wp-image-292\" src=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_9.png\"  alt=\"Screenshot_9 WireGuard - Integra\u00e7\u00e3o do WireGuard com Docker\"  srcset=\"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_9.png 459w, https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/Screenshot_9-300x56.png 300w\" sizes=\"(max-width: 459px) 100vw, 459px\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Se tudo estiver configurado corretamente, voc\u00ea deve ver respostas dos pings.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Este tutorial fornece uma introdu\u00e7\u00e3o b\u00e1sica \u00e0 integra\u00e7\u00e3o do WireGuard com cont\u00eaineres Docker. Lembre-se de adaptar as configura\u00e7\u00f5es conforme necess\u00e1rio para atender \u00e0s suas necessidades espec\u00edficas.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c1faea2 elementor-widget elementor-widget-text-editor\" data-id=\"c1faea2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><strong>Participe da Nossa Comunidade Gratuita! <img  title=\"\" decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/svg\/1f680.svg\"  alt=\"1f680 WireGuard - Integra\u00e7\u00e3o do WireGuard com Docker\"  \/><\/strong><\/p>\n<p>Se voc\u00ea est\u00e1 buscando aprender, compartilhar conhecimento e se conectar com outros entusiastas apaixonados pela tecnologia, junte-se \u00e0 nossa comunidade gratuita agora! <img  title=\"\" decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/svg\/1f310.svg\"  alt=\"1f310 WireGuard - Integra\u00e7\u00e3o do WireGuard com Docker\"  \/><img  title=\"\" decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/svg\/2728.svg\"  alt=\"2728 WireGuard - Integra\u00e7\u00e3o do WireGuard com Docker\"  \/><\/p>\n<p><strong>Benef\u00edcios da Nossa Comunidade:<\/strong><\/p>\n<ul>\n<li>Acesso a recursos, software e conte\u00fados\u00a0 exclusivos.<\/li>\n<li>Troca de ideias com especialistas.<\/li>\n<li>Oportunidades de networking.<\/li>\n<\/ul>\n<p><strong>Preencha os Campos Abaixo e Fa\u00e7a Parte:<\/strong><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-24a5cf6 elementor-widget elementor-widget-metform\" data-id=\"24a5cf6\" data-element_type=\"widget\" data-widget_type=\"metform.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div id=\"mf-response-props-id-82\" data-previous-steps-style=\"\" data-editswitchopen=\"\" data-response_type=\"alert\" data-erroricon=\"fas fa-exclamation-triangle\" data-successicon=\"fas fa-check\" data-messageposition=\"top\" class=\"   mf-scroll-top-no\">\n\t\t<div class=\"formpicker_warper formpicker_warper_editable\" data-metform-formpicker-key=\"82\" >\n\t\t\t\t\n\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\r\n\t\t<div\r\n\t\t\tid=\"metform-wrap-24a5cf6-82\"\r\n\t\t\tclass=\"mf-form-wrapper\"\r\n\t\t\tdata-form-id=\"82\"\r\n\t\t\tdata-action=\"https:\/\/atcp.dev\/index.php\/wp-json\/metform\/v1\/entries\/insert\/82\"\r\n\t\t\tdata-wp-nonce=\"addc236ae6\"\r\n\t\t\tdata-form-nonce=\"731afebfe7\"\r\n\t\t\tdata-quiz-summery = \"false\"\r\n\t\t\tdata-save-progress = \"false\"\r\n\t\t\tdata-form-type=\"general-form\"\r\n\t\t\tdata-stop-vertical-effect=\"\"\r\n\t\t\t><\/div>\r\n\r\n\r\n\t\t<!----------------------------- \r\n\t\t\t* controls_data : find the the props passed indie of data attribute\r\n\t\t\t* props.SubmitResponseMarkup : contains the markup of error or success message\r\n\t\t\t* https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Template_literals\r\n\t\t--------------------------- -->\r\n\r\n\t\t\t\t<script type=\"text\/mf\" class=\"mf-template\">\r\n\t\t\tfunction controls_data (value){\r\n\t\t\t\tlet currentWrapper = \"mf-response-props-id-82\";\r\n\t\t\t\tlet currentEl = document.getElementById(currentWrapper);\r\n\t\t\t\t\r\n\t\t\t\treturn currentEl ? currentEl.dataset[value] : false\r\n\t\t\t}\r\n\r\n\r\n\t\t\tlet is_edit_mode = '' ? true : false;\r\n\t\t\tlet message_position = controls_data('messageposition') || 'top';\r\n\r\n\t\t\t\r\n\t\t\tlet message_successIcon = controls_data('successicon') || '';\r\n\t\t\tlet message_errorIcon = controls_data('erroricon') || '';\r\n\t\t\tlet message_editSwitch = controls_data('editswitchopen') === 'yes' ? true : false;\r\n\t\t\tlet message_proClass = controls_data('editswitchopen') === 'yes' ? 'mf_pro_activated' : '';\r\n\t\t\t\r\n\t\t\tlet is_dummy_markup = is_edit_mode && message_editSwitch ? true : false;\r\n\r\n\t\t\t\r\n\t\t\treturn html`\r\n\t\t\t\t<form\r\n\t\t\t\t\tclassName=\"metform-form-content\"\r\n\t\t\t\t\tref=${parent.formContainerRef}\r\n\t\t\t\t\tonSubmit=${ validation.handleSubmit( parent.handleFormSubmit ) }\r\n\t\t\t\t\r\n\t\t\t\t\t>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\t${is_dummy_markup ? message_position === 'top' ?  props.ResponseDummyMarkup(message_successIcon, message_proClass) : '' : ''}\r\n\t\t\t\t\t${is_dummy_markup ? ' ' :  message_position === 'top' ? props.SubmitResponseMarkup`${parent}${state}${message_successIcon}${message_errorIcon}${message_proClass}` : ''}\r\n\r\n\t\t\t\t\t<!--------------------------------------------------------\r\n\t\t\t\t\t*** IMPORTANT \/ DANGEROUS ***\r\n\t\t\t\t\t${html``} must be used as in immediate child of \"metform-form-main-wrapper\"\r\n\t\t\t\t\tclass otherwise multistep form will not run at all\r\n\t\t\t\t\t---------------------------------------------------------->\r\n\r\n\t\t\t\t\t<div className=\"metform-form-main-wrapper\" key=${'hide-form-after-submit'} ref=${parent.formRef}>\r\n\t\t\t\t\t${html`\r\n\t\t\t\t\t\t\t\t<div data-elementor-type=\"wp-post\" key=\"2\" data-elementor-id=\"82\" className=\"elementor elementor-82\">\n\t\t\t\t\t\t\t<div className=\"elementor-element elementor-element-16fd14a e-flex e-con-boxed e-con e-parent\" data-id=\"16fd14a\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div className=\"e-con-inner\">\n\t\t\t\t<div className=\"elementor-element elementor-element-1a3f7fc elementor-widget elementor-widget-mf-listing-fname\" data-id=\"1a3f7fc\" data-element_type=\"widget\" data-settings=\"{&quot;mf_input_name&quot;:&quot;mf-listing-fname&quot;}\" data-widget_type=\"mf-listing-fname.default\">\n\t\t\t\t<div className=\"elementor-widget-container\">\n\t\t\t\n\t\t<div className=\"mf-input-wrapper\">\n\t\t\t\t\t\t\t<label className=\"mf-input-label\" htmlFor=\"mf-input-text-1a3f7fc\">\n\t\t\t\t\t${ parent.decodeEntities(`Nome`) } \t\t\t\t\t<span className=\"mf-input-required-indicator\">*<\/span>\n\t\t\t\t<\/label>\n\t\t\t\n\t\t\t<input type=\"text\" className=\"mf-input \" id=\"mf-input-text-1a3f7fc\" \n\t\t\t\tname=\"mf-listing-fname\" \n\t\t\t\tplaceholder=\"${ parent.decodeEntities(`Digite seu nome`) } \"\n\t\t\t\tonInput=${ parent.handleChange }\n\n\t\t\t\t\t\t\t\t\taria-invalid=${validation.errors['mf-listing-fname'] ? 'true' : 'false'}\n\t\t\t\t\tref=${ el => parent.activateValidation({\"message\":\"Esse campo e obrigat\\u00f3rio \",\"minLength\":1,\"maxLength\":\"\",\"type\":\"none\",\"required\":true,\"expression\":\"null\"}, el) }\n\t\t\t\t\t\t\t\/>\n\n\t\t\t\t\t\t\t<${validation.ErrorMessage}\n\t\t\t\t\terrors=${validation.errors}\n\t\t\t\t\tname=\"mf-listing-fname\"\n\t\t\t\t\tas=${html`<span className=\"mf-error-message\"><\/span>`}\n\t\t\t\t\t\/>\n\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div className=\"elementor-element elementor-element-b376e46 elementor-widget elementor-widget-mf-email\" data-id=\"b376e46\" data-element_type=\"widget\" data-settings=\"{&quot;mf_input_name&quot;:&quot;mf-email&quot;}\" data-widget_type=\"mf-email.default\">\n\t\t\t\t<div className=\"elementor-widget-container\">\n\t\t\t\r\n\t\t<div className=\"mf-input-wrapper\">\r\n\t\t\t\t\t\t\t<label className=\"mf-input-label\" htmlFor=\"mf-input-email-b376e46\">\r\n\t\t\t\t\t${ parent.decodeEntities(`E-mail`) } \t\t\t\t\t<span className=\"mf-input-required-indicator\">*<\/span>\r\n\t\t\t\t<\/label>\r\n\t\t\t\r\n\t\t\t<input \r\n\t\t\t\ttype=\"email\" \r\n\t\t\t\t \r\n\t\t\t\tdefaultValue=\"\" \r\n\t\t\t\tclassName=\"mf-input \" \r\n\t\t\t\tid=\"mf-input-email-b376e46\" \r\n\t\t\t\tname=\"mf-email\" \r\n\t\t\t\tplaceholder=\"${ parent.decodeEntities(`Digite seu e-mail`) } \" \r\n\t\t\t\t \r\n\t\t\t\tonBlur=${parent.handleChange} onFocus=${parent.handleChange} aria-invalid=${validation.errors['mf-email'] ? 'true' : 'false' } \r\n\t\t\t\tref=${el=> parent.activateValidation({\"message\":\"This field is required.\",\"emailMessage\":\"Please enter a valid Email address\",\"minLength\":1,\"maxLength\":\"\",\"type\":\"none\",\"required\":true,\"expression\":\"null\"}, el)}\r\n\t\t\t\t\t\t\t\/>\r\n\r\n\t\t\t\t\t\t<${validation.ErrorMessage} \r\n\t\t\t\terrors=${validation.errors} \r\n\t\t\t\tname=\"mf-email\" \r\n\t\t\t\tas=${html`<span className=\"mf-error-message\"><\/span>`}\r\n\t\t\t\/>\r\n\t\t\t\r\n\t\t\t\t\t<\/div>\r\n\r\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div className=\"elementor-element elementor-element-2f5c324 elementor-widget elementor-widget-mf-number\" data-id=\"2f5c324\" data-element_type=\"widget\" data-settings=\"{&quot;mf_input_name&quot;:&quot;mf-number&quot;}\" data-widget_type=\"mf-number.default\">\n\t\t\t\t<div className=\"elementor-widget-container\">\n\t\t\t\r\n\t\t<div className=\"mf-input-wrapper\">\r\n\t\t\t\t\t\t\t<label className=\"mf-input-label\" htmlFor=\"mf-input-number-2f5c324\">\r\n\t\t\t\t\t${ parent.decodeEntities(`Whatsapp`) } \t\t\t\t\t<span className=\"mf-input-required-indicator\"><\/span>\r\n\t\t\t\t<\/label>\r\n\t\t\t\r\n\t\t\t<input\r\n\t\t\t\ttype=\"number\"\r\n\t\t\t\tstep=\"any\"\r\n\t\t\t\tclassName=\"mf-input \"\r\n\t\t\t\tid=\"mf-input-mobile-2f5c324\"\r\n\t\t\t\tname=\"mf-number\"\r\n\t\t\t\tplaceholder=\"${ parent.decodeEntities(`Digite seu whatsapp`) } \"\r\n\t\t\t\t\t\t\t\t\tonInput=${parent.handleChange}\r\n\t\t\t\t\taria-invalid=${validation.errors['mf-number'] ? 'true' : 'false'}\r\n\t\t\t\t\tref=${el => parent.activateValidation({\"message\":\"This field is required.\",\"minLength\":1,\"maxLength\":\"\",\"type\":\"none\",\"required\":false,\"expression\":\"null\"}, el)}\r\n\t\t\t\t\t\t\t\t\/>\r\n\r\n\t\t\t\t\t\t\t<${validation.ErrorMessage}\r\n\t\t\t\t\terrors=${validation.errors}\r\n\t\t\t\t\tname=\"mf-number\"\r\n\t\t\t\t\tas=${html`<span className=\"mf-error-message\"><\/span>`}\r\n\t\t\t\t\t\/>\r\n\t\t\t\r\n\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div className=\"elementor-element elementor-element-ddc0261 mf-btn--mobile-center mf-btn--center elementor-widget elementor-widget-mf-button\" data-id=\"ddc0261\" data-element_type=\"widget\" data-widget_type=\"mf-button.default\">\n\t\t\t\t<div className=\"elementor-widget-container\">\n\t\t\t\t\t<div className=\"mf-btn-wraper \" data-mf-form-conditional-logic-requirement=\"\">\r\n\t\t\t\t\t\t\t<button type=\"submit\" className=\"metform-btn metform-submit-btn \" id=\"\">\r\n\t\t\t\t\t<svg aria-hidden=\"true\" className=\"e-font-icon-svg e-fab-telegram-plane\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z\"><\/path><\/svg>\t\t\t\t\t<span>${ parent.decodeEntities(`Entrar no Grupo`) } <\/span>\r\n\t\t\t\t<\/button>\r\n\t\t\t        <\/div>\r\n        \t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t`}\r\n\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t${is_dummy_markup ? message_position === 'bottom' ? props.ResponseDummyMarkup(message_successIcon, message_proClass) : '' : ''}\r\n\t\t\t\t\t${is_dummy_markup ? ' ' : message_position === 'bottom' ? props.SubmitResponseMarkup`${parent}${state}${message_successIcon}${message_errorIcon}${message_proClass}` : ''}\r\n\t\t\t\t\r\n\t\t\t\t<\/form>\r\n\t\t\t`\r\n\t\t<\/script>\r\n\r\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d1b00ed e-flex e-con-boxed e-con e-parent\" data-id=\"d1b00ed\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-df2352d elementor-widget elementor-widget-heading\" data-id=\"df2352d\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.18.0 - 20-12-2023 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\">O acesso chegar\u00e1 no seu e-mail.<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<!--CusAds0-->\n<div style=\"font-size: 0px; height: 0px; line-height: 0px; margin: 0; padding: 0; clear: both;\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Tutorial: Integra\u00e7\u00e3o do WireGuard com Docker Neste tutorial, voc\u00ea aprender\u00e1 como integrar o WireGuard em cont\u00eaineres Docker para estabelecer uma comunica\u00e7\u00e3o segura entre eles. O WireGuard \u00e9 uma tecnologia de&hellip; <\/p>\n","protected":false},"author":1,"featured_media":294,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[6,5,4],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/atcp.dev\/wp-content\/uploads\/2024\/01\/image.png","jetpack-related-posts":[{"id":344,"url":"https:\/\/atcp.dev\/index.php\/2024\/01\/19\/configurando-uma-vpn-wireguard-no-windows-10-tutorial-detalhado\/","url_meta":{"origin":284,"position":0},"title":"Configurando uma VPN WireGuard no Windows 10: Tutorial Detalhado","author":"akira","date":"19 de janeiro de 2024","format":false,"excerpt":"Introdu\u00e7\u00e3o: Este tutorial detalhado ir\u00e1 gui\u00e1-lo atrav\u00e9s do processo de configura\u00e7\u00e3o de uma VPN WireGuard no Windows 10, proporcionando uma conex\u00e3o segura e eficiente entre o seu computador e um servidor remoto. Certifique-se de seguir cada passo com aten\u00e7\u00e3o para garantir uma configura\u00e7\u00e3o bem-sucedida. Passo 1: Instalando o WireGuard no\u2026","rel":"","context":"Em &quot;Windows 10&quot;","block_context":{"text":"Windows 10","link":"https:\/\/atcp.dev\/index.php\/category\/windows-10\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2024\/01\/Banner-horizontal-para-projetos-de-combate-a-fome.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2024\/01\/Banner-horizontal-para-projetos-de-combate-a-fome.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2024\/01\/Banner-horizontal-para-projetos-de-combate-a-fome.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2024\/01\/Banner-horizontal-para-projetos-de-combate-a-fome.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2024\/01\/Banner-horizontal-para-projetos-de-combate-a-fome.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2024\/01\/Banner-horizontal-para-projetos-de-combate-a-fome.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":37,"url":"https:\/\/atcp.dev\/index.php\/2023\/06\/20\/wireguard-como-instalar-e-configurar-o-servidor-vpn-wireguard-no-ubuntu-22-04-20-04-lts-2\/","url_meta":{"origin":284,"position":1},"title":"WireGuard &#8211; Como instalar e configurar o servidor VPN WireGuard no Ubuntu 22.04 | 20.04 LTS","author":"akira","date":"20 de junho de 2023","format":false,"excerpt":"O WireGuard \u00e9 um protocolo VPN de c\u00f3digo aberto que oferece uma maneira simples e eficiente de estabelecer conex\u00f5es seguras entre dispositivos. Neste guia, vou explicar como instalar e configurar um servidor VPN WireGuard em um sistema Ubuntu com as vers\u00f5es 22.04 ou 20.04 LTS. Atualize o sistema: Antes de\u2026","rel":"","context":"Em &quot;UBUNTU&quot;","block_context":{"text":"UBUNTU","link":"https:\/\/atcp.dev\/index.php\/category\/ubuntu\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2023\/06\/og-logo.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2023\/06\/og-logo.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2023\/06\/og-logo.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2023\/06\/og-logo.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2023\/06\/og-logo.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":33,"url":"https:\/\/atcp.dev\/index.php\/2023\/06\/20\/wireguard-como-instalar-e-configurar-o-servidor-vpn-wireguard-no-ubuntu-22-04-20-04-lts\/","url_meta":{"origin":284,"position":2},"title":"WireGuard &#8211; Como instalar e configurar o servidor VPN WireGuard na Raspberry Pi","author":"akira","date":"20 de junho de 2023","format":false,"excerpt":"Para configurar um servidor WireGuard em uma Raspberry Pi, voc\u00ea precisar\u00e1 seguir os passos abaixo: Passo 1: Instale o sistema operacional na Raspberry Pi Baixe e instale um sistema operacional adequado na Raspberry Pi. Recomenda-se o uso do Raspbian ou Raspberry Pi OS. Passo 2: Atualize o sistema operacional Abra\u2026","rel":"","context":"Em &quot;raspberry&quot;","block_context":{"text":"raspberry","link":"https:\/\/atcp.dev\/index.php\/category\/raspberry\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2023\/06\/og-logo.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2023\/06\/og-logo.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2023\/06\/og-logo.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2023\/06\/og-logo.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2023\/06\/og-logo.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":368,"url":"https:\/\/atcp.dev\/index.php\/2025\/02\/06\/descubra-as-ferramentas-open-source-que-revolucionarao-o-seu-desenvolvimento-de-software\/","url_meta":{"origin":284,"position":3},"title":"&#8220;Descubra as ferramentas open source que revolucionar\u00e3o o seu desenvolvimento de software!&#8221;","author":"akira","date":"6 de fevereiro de 2025","format":false,"excerpt":"T\u00edtulo: Descubra as ferramentas open source que revolucionar\u00e3o o seu desenvolvimento de software! Introdu\u00e7\u00e3o: No mundo da tecnologia, as ferramentas open source t\u00eam ganhado cada vez mais destaque e conquistado o cora\u00e7\u00e3o de desenvolvedores ao redor do mundo. Com a promessa de transpar\u00eancia, colabora\u00e7\u00e3o e customiza\u00e7\u00e3o, essas ferramentas t\u00eam sido\u2026","rel":"","context":"Em &quot;Opensouce&quot;","block_context":{"text":"Opensouce","link":"https:\/\/atcp.dev\/index.php\/category\/opensouce\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":388,"url":"https:\/\/atcp.dev\/index.php\/2025\/02\/06\/conheca-as-10-melhores-ferramentas-open-source-para-turbinar-seu-desenvolvimento-de-software\/","url_meta":{"origin":284,"position":4},"title":"&#8220;Conhe\u00e7a as 10 melhores ferramentas open source para turbinar seu desenvolvimento de software!&#8221;","author":"akira","date":"6 de fevereiro de 2025","format":false,"excerpt":"# Conhe\u00e7a as 10 melhores ferramentas open source para turbinar seu desenvolvimento de software! Desenvolver softwares pode ser uma tarefa desafiadora, mas com as ferramentas certas, \u00e9 poss\u00edvel agilizar o processo e aumentar a qualidade do produto final. Existem diversas op\u00e7\u00f5es de ferramentas open source dispon\u00edveis no mercado que podem\u2026","rel":"","context":"Em &quot;Opensouce&quot;","block_context":{"text":"Opensouce","link":"https:\/\/atcp.dev\/index.php\/category\/opensouce\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2025\/02\/c96f9c89dfc868678dbd2f3b44377619ac4c52367de57600a95211cfe4c6d753.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2025\/02\/c96f9c89dfc868678dbd2f3b44377619ac4c52367de57600a95211cfe4c6d753.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2025\/02\/c96f9c89dfc868678dbd2f3b44377619ac4c52367de57600a95211cfe4c6d753.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2025\/02\/c96f9c89dfc868678dbd2f3b44377619ac4c52367de57600a95211cfe4c6d753.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2025\/02\/c96f9c89dfc868678dbd2f3b44377619ac4c52367de57600a95211cfe4c6d753.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":391,"url":"https:\/\/atcp.dev\/index.php\/2025\/02\/07\/desvendando-o-mundo-do-software-open-source-conheca-as-melhores-ferramentas-gratuitas-para-potencializar-seus-projetos\/","url_meta":{"origin":284,"position":5},"title":"&#8220;Desvendando o mundo do software open source: Conhe\u00e7a as melhores ferramentas gratuitas para potencializar seus projetos!&#8221;","author":"akira","date":"7 de fevereiro de 2025","format":false,"excerpt":"Desvendando o mundo do software open source: Conhe\u00e7a as melhores ferramentas gratuitas para potencializar seus projetos! Desvendando o mundo do software open source: Conhe\u00e7a as melhores ferramentas gratuitas para potencializar seus projetos! Vivemos em uma era em que a tecnologia est\u00e1 cada vez mais presente em nosso dia a dia.\u2026","rel":"","context":"Em &quot;Opensouce&quot;","block_context":{"text":"Opensouce","link":"https:\/\/atcp.dev\/index.php\/category\/opensouce\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2025\/02\/c96f9c89dfc868678dbd2f3b44377619ac4c52367de57600a95211cfe4c6d753.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2025\/02\/c96f9c89dfc868678dbd2f3b44377619ac4c52367de57600a95211cfe4c6d753.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2025\/02\/c96f9c89dfc868678dbd2f3b44377619ac4c52367de57600a95211cfe4c6d753.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2025\/02\/c96f9c89dfc868678dbd2f3b44377619ac4c52367de57600a95211cfe4c6d753.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/atcp.dev\/wp-content\/uploads\/2025\/02\/c96f9c89dfc868678dbd2f3b44377619ac4c52367de57600a95211cfe4c6d753.png?resize=1050%2C600&ssl=1 3x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/atcp.dev\/index.php\/wp-json\/wp\/v2\/posts\/284"}],"collection":[{"href":"https:\/\/atcp.dev\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atcp.dev\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atcp.dev\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atcp.dev\/index.php\/wp-json\/wp\/v2\/comments?post=284"}],"version-history":[{"count":27,"href":"https:\/\/atcp.dev\/index.php\/wp-json\/wp\/v2\/posts\/284\/revisions"}],"predecessor-version":[{"id":330,"href":"https:\/\/atcp.dev\/index.php\/wp-json\/wp\/v2\/posts\/284\/revisions\/330"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/atcp.dev\/index.php\/wp-json\/wp\/v2\/media\/294"}],"wp:attachment":[{"href":"https:\/\/atcp.dev\/index.php\/wp-json\/wp\/v2\/media?parent=284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atcp.dev\/index.php\/wp-json\/wp\/v2\/categories?post=284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atcp.dev\/index.php\/wp-json\/wp\/v2\/tags?post=284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}