<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://wiki.doth.com.br/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Murilo</id>
	<title>Wiki Doth - Contribuições do usuário [pt-br]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.doth.com.br/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Murilo"/>
	<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Especial:Contribui%C3%A7%C3%B5es/Murilo"/>
	<updated>2026-04-15T18:48:16Z</updated>
	<subtitle>Contribuições do usuário</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Integra%C3%A7%C3%B5es&amp;diff=1172</id>
		<title>Integrações</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Integra%C3%A7%C3%B5es&amp;diff=1172"/>
		<updated>2026-03-29T21:10:20Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* MTLS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Processo de integração do sistema&lt;br /&gt;
&lt;br /&gt;
== Banco do Brasil ==&lt;br /&gt;
&lt;br /&gt;
=== Pix === &lt;br /&gt;
&lt;br /&gt;
Recebimentos de pix &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&amp;quot;pix&amp;quot;:[{&amp;quot;endToEndId&amp;quot;:&amp;quot;E18236120202310241126s0094c62752&amp;quot;,&amp;quot;txid&amp;quot;:&amp;quot;1110323296010000001895700011417535&amp;quot;,&amp;quot;valor&amp;quot;:&amp;quot;4.60&amp;quot;,&amp;quot;componentesValor&amp;quot;:{&amp;quot;original&amp;quot;:{&amp;quot;valor&amp;quot;:&amp;quot;4.60&amp;quot;}},&amp;quot;chave&amp;quot;:&amp;quot;485e87ab-9f2c-4f18-83c9-10dbbaf35173&amp;quot;,&amp;quot;horario&amp;quot;:&amp;quot;2023-10-24T08:26:39.00-03:00&amp;quot;,&amp;quot;infoPagador&amp;quot;:&amp;quot;Servico Funerario de Botucatu&amp;quot;,&amp;quot;pagador&amp;quot;:{&amp;quot;cpf&amp;quot;:&amp;quot;00000000000&amp;quot;,&amp;quot;nome&amp;quot;:&amp;quot;NOME DO PAGADOR&amp;quot;}}]}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fluxo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Pix é pago pelo usuário&lt;br /&gt;
* BB envia webhook&lt;br /&gt;
* AWS - API gateway recebe o webhook (bbwh.doth.link)&lt;br /&gt;
* SQS  (filaBBPix)&lt;br /&gt;
* Lambda (bb_MySql)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;txid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 GG.FFF.YYZZZ.TT.IIIIIIIIIII.RRRRRRRRRRR&lt;br /&gt;
&lt;br /&gt;
* GG - grupo econômico&lt;br /&gt;
* FFF - 101 - unidade&lt;br /&gt;
* YYZZZZ - 23065 - (ano/dia)&lt;br /&gt;
* TT - 03 - tipo&lt;br /&gt;
* IIIIIIIIIII - 00000000001 - id do pix&lt;br /&gt;
* RRRRRRRRRRR - 00000000023 - id da referencia do pix&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipos de Pix&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 01 – caixa mensalidade única&lt;br /&gt;
* 02 – caixa mensalidades múltiplas&lt;br /&gt;
* 03 – caixa ordem de serviço&lt;br /&gt;
* 04 – caixa parcela única (fazer)&lt;br /&gt;
* 05 – caixa contrato (fazer)&lt;br /&gt;
* 06 – avulsos – ok&lt;br /&gt;
* 07 – pré vendas – ok&lt;br /&gt;
* 08 – clinica&lt;br /&gt;
* 09 – exames&lt;br /&gt;
&lt;br /&gt;
== Conciliadora ==&lt;br /&gt;
&lt;br /&gt;
cadastro de novo cliente&lt;br /&gt;
suporte.conciliadora.com.br/form/4040&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ClickSign ==&lt;br /&gt;
&lt;br /&gt;
Processo de integração para assinatura de documentos&lt;br /&gt;
&lt;br /&gt;
# Criar conta na clicksign&lt;br /&gt;
# Plano de intração&lt;br /&gt;
# Gerar novo Token&lt;br /&gt;
# Cadastrar webhook&lt;br /&gt;
## No webhook copiar a chave Hash&lt;br /&gt;
&lt;br /&gt;
=== Webhook ===&lt;br /&gt;
&lt;br /&gt;
Retorno de eventos pré definidos&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WhatsApp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Url base: https:/doth/apis/clicksign/whatsapp.php?g=xx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
acceptance_term_completed&lt;br /&gt;
acceptance_term_refused&lt;br /&gt;
acceptance_term_canceled	&lt;br /&gt;
acceptance_term_expired&lt;br /&gt;
acceptance_term_error&lt;br /&gt;
attempts_by_whatsapp_exceeded&lt;br /&gt;
acceptance_term_sent&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enotas ==&lt;br /&gt;
&lt;br /&gt;
Processo de integração utilizado para emissão de nota fiscal (serviços e produtos)&lt;br /&gt;
&lt;br /&gt;
* A empresa deve possuir certificado digital&lt;br /&gt;
* Para cadastro de emissão de NFC-e deve possuir o códico CSC (cadastrado no Sefaz)&lt;br /&gt;
&lt;br /&gt;
=== WebHook ===&lt;br /&gt;
&lt;br /&gt;
Recebido após a emissão da nota fiscal (serviço ou produto)&lt;br /&gt;
&lt;br /&gt;
Documentação: https://docs.enotasgw.com.br/docs/webhook&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Headers&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* x-token - chave de validação (fixa)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Status &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
nfeStatus&amp;quot;: &amp;quot;Negada&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
nfeStatus&amp;quot;: &amp;quot;CancelamentoNegado&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tipo&#039;&#039;&#039; - NFS-e / NFC-e&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;nfeIdExterno&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 H.GG.FFF.T.IIIIIIIIIII.X.RRRRRRRRRRR&lt;br /&gt;
&lt;br /&gt;
* H - Servidor (Homologação/Produção)&lt;br /&gt;
* GG - Grupo econôminco (000)&lt;br /&gt;
* FFF - Unidade (000)&lt;br /&gt;
* T - Tipo de nota: Plano, Os, Serviço, Venda, E cafe)&lt;br /&gt;
* IIIIIIIIIII - Id do tipo (00000000000)&lt;br /&gt;
* X - Separador (X)&lt;br /&gt;
* RRRRRRRRRRR - Id de referência (00000000000)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipos&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* P - Plano &lt;br /&gt;
* O - Ordem de serviço&lt;br /&gt;
* S - Serviços&lt;br /&gt;
* V - Vendas&lt;br /&gt;
* E - Café&lt;br /&gt;
&lt;br /&gt;
=== Tabelas ===&lt;br /&gt;
&lt;br /&gt;
* P - Plano - insert tabela enotas_plns&lt;br /&gt;
* O - Ordem de serviço - insert tabela enotas_os&lt;br /&gt;
* S - Serviços - update tabela ordemservico_nfs&lt;br /&gt;
* V - Vendas -  update tabela ordemservico_nfs&lt;br /&gt;
* C - Café - sem definição&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Updates &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
P - &lt;br /&gt;
&lt;br /&gt;
O - &lt;br /&gt;
&lt;br /&gt;
S - UPDATE ordemservico_nfs SET status_osnfs = ?, rps_osnfs=nfeNumeroRps, numero_osnfs=nfeNumero,  erie_osnfs=nfeSerieRps, chave_osnfs=nfeCodigoVerificacao WHERE id_osnfs = RRRRRRRRRRR AND os_osnfs = IIIIIIIIIII&lt;br /&gt;
&lt;br /&gt;
E - UPDATE cafe_vendas SET cfnum_cfvd=nfeNumero, cfserie_cfvd=nfeSerie, cfchave_cfvd=nfeChaveAcesso, cfdnfe_cfvd=nfeLinkDanfe WHERE id_cfvd = IIIIIIIIIII AND gprf_cfvd = GG&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NFS-e&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;tipo&amp;quot;: &amp;quot;NFS-e&amp;quot;,&lt;br /&gt;
    &amp;quot;empresaId&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeId&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeIdExterno&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeStatus&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeMotivoStatus&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeLinkPdf&amp;quot;: &amp;quot;http://api.enotasgw.com.br/file/(...)/pdf&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeLinkXml&amp;quot;: &amp;quot;http://api.enotasgw.com.br/file/(...)/xml&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeNumero&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeCodigoVerificacao&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeNumeroRps&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeSerieRps&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeDataCompetencia&amp;quot;: &amp;quot;date&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NFC-e&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;tipo&amp;quot;: &amp;quot;NFC-e&amp;quot;,&lt;br /&gt;
    &amp;quot;empresaId&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeId&amp;quot;: &amp;quot;001&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeStatus&amp;quot;: &amp;quot;Autorizada&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeMotivoStatus&amp;quot;: null,&lt;br /&gt;
    &amp;quot;nfeLinkDanfe&amp;quot;: &amp;quot;http://api.enotasgw.com.br/file/(...)/pdf&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeLinkXml&amp;quot;: &amp;quot;http://api.enotasgw.com.br/file/(...)/pdf&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeLinkConsultaPorChaveAcesso&amp;quot;: &amp;quot;http://sistemas.sefaz.am.gov.br/nfceweb/formConsulta.do&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeNumero&amp;quot;: &amp;quot;123&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeSerie&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeChaveAcesso&amp;quot;: &amp;quot;73349650010000005351606919674115087649800517&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeDataEmissao&amp;quot;: &amp;quot;2017-01-02T17:20:32Z&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeDataAutorizacao&amp;quot;: &amp;quot;2017-01-02T17:21:07Z&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeNumeroProtocolo&amp;quot;: &amp;quot;353150000119390&amp;quot;,&lt;br /&gt;
    &amp;quot;nfeDigestValue&amp;quot;: &amp;quot;ssiUjiiOQkD2UGw&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Findcep == &lt;br /&gt;
&lt;br /&gt;
Api para localização de ceps e endereços&lt;br /&gt;
&lt;br /&gt;
Documentação: https://www.findcep.com/docs/index.html&lt;br /&gt;
&lt;br /&gt;
Outro: https://www.findcep.com/success&lt;br /&gt;
&lt;br /&gt;
== MTLS ==&lt;br /&gt;
&lt;br /&gt;
=== BB Certificado ===&lt;br /&gt;
&lt;br /&gt;
1) Extrai as CAs com suporte legacy&lt;br /&gt;
&lt;br /&gt;
openssl pkcs12 -legacy -in certificado.pfx -cacerts -nokeys -out _tmp_cacerts.pem&lt;br /&gt;
&lt;br /&gt;
2) Remove &amp;quot;Bag Attributes&amp;quot; e deixa só os blocos -----BEGIN CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
openssl crl2pkcs7 -nocrl -certfile _tmp_cacerts.pem | openssl pkcs7 -print_certs -out certificado.pem&lt;br /&gt;
&lt;br /&gt;
del _tmp_cacerts.pem&lt;br /&gt;
&lt;br /&gt;
=== Api Gateway === &lt;br /&gt;
&lt;br /&gt;
url: bb.doth.com.br&lt;br /&gt;
&lt;br /&gt;
=== Bucket S3 ===&lt;br /&gt;
&lt;br /&gt;
versionamento: ativado&lt;br /&gt;
colocar o arquivo&lt;br /&gt;
&lt;br /&gt;
=== TrustStore ===&lt;br /&gt;
&lt;br /&gt;
* Nome: truststore.pem&lt;br /&gt;
* Arquvivo a ser disponiblizado no S3&lt;br /&gt;
* Precisa estar versionado&lt;br /&gt;
&lt;br /&gt;
=== Conteúdo ===&lt;br /&gt;
&lt;br /&gt;
Chave enviada pelo fornecedor (banco), unificada em um único arquivo&lt;br /&gt;
&lt;br /&gt;
* chave 1 - chave raiz (autoridade certificadora)&lt;br /&gt;
* chave 2 - chave intermediaria (serasa)&lt;br /&gt;
* chave 3 - chave privada (api.webhook...)&lt;br /&gt;
&lt;br /&gt;
=== BB Pix === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;pix&amp;quot;:&lt;br /&gt;
  [&lt;br /&gt;
    {&lt;br /&gt;
     &amp;quot;endToEndId&amp;quot;:&amp;quot;E0000000020230102105258930087828&amp;quot;,&lt;br /&gt;
     &amp;quot;txid&amp;quot;:&amp;quot;1110123001010000000595500054174494&amp;quot;,&lt;br /&gt;
     &amp;quot;valor&amp;quot;:&amp;quot;15.00&amp;quot;,&amp;quot;componentesValor&amp;quot;:[{&amp;quot;original&amp;quot;:{&amp;quot;valor&amp;quot;:&amp;quot;15.00&amp;quot;}}],&amp;quot;chave&amp;quot;:&amp;quot;485e87ab-9f2c-4f18-83c9-10dbbaf35173&amp;quot;,&amp;quot;horario&amp;quot;:&amp;quot;2023-01-02T07:53:32.00-03:00&amp;quot;,&amp;quot;infoPagador&amp;quot;:&amp;quot;Aluguel cadeira de banho&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Openssl == &lt;br /&gt;
&lt;br /&gt;
Gerador de chave SSL&lt;br /&gt;
&lt;br /&gt;
=== Instalar ===&lt;br /&gt;
&lt;br /&gt;
Baixa open ssl sourceforge&lt;br /&gt;
&lt;br /&gt;
#set OPENSSL_CONF=openssl.cnf&lt;br /&gt;
#export OPENSSL_CONF=/dev/null&lt;br /&gt;
&lt;br /&gt;
=== Criar/configurar chave ===&lt;br /&gt;
&lt;br /&gt;
padrao:&lt;br /&gt;
&lt;br /&gt;
#openssl pkcs12 -in maya.pfx -clcerts -nokeys -out maya.pem&lt;br /&gt;
#openssl pkcs12 -in maya.pfx -nocerts -nodes -out maya.pem&lt;br /&gt;
&lt;br /&gt;
corrigido:&lt;br /&gt;
&lt;br /&gt;
#openssl pkcs12 -legacy -in certificado.pfx -clcerts -nokeys -out certificado.pem&lt;br /&gt;
#openssl pkcs12 -legacy -in certificado.pfx -nocerts -nodes -out certificado_key.pem&lt;br /&gt;
&lt;br /&gt;
== PagSeguro ==&lt;br /&gt;
&lt;br /&gt;
Processo de integração junto a PagSeguro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checkouts (links de pagamento) === &lt;br /&gt;
&lt;br /&gt;
Processo para gerar links de pagamento através do sistema&lt;br /&gt;
&lt;br /&gt;
a) necesário ter um token pagseguro&lt;br /&gt;
&lt;br /&gt;
#Acesse a sua conta PagBank;&lt;br /&gt;
#No menu lateral, selecione Venda online;&lt;br /&gt;
#Selecione a opção Integrações;&lt;br /&gt;
#Clique em Gerar Token.&lt;br /&gt;
&lt;br /&gt;
=== Terminais POS === &lt;br /&gt;
&lt;br /&gt;
# Estabelecimento credenciado junto a PagSeguro&lt;br /&gt;
# Habilitar o terminal para o aplicativo junto a PagSeguro&lt;br /&gt;
# Solicitar exclusão do PagVendas&lt;br /&gt;
# Cadastrar o serial do terminal no Doth&lt;br /&gt;
&lt;br /&gt;
== PontoMais ==&lt;br /&gt;
&lt;br /&gt;
== Rd Station == &lt;br /&gt;
&lt;br /&gt;
=== Configuração ===&lt;br /&gt;
&lt;br /&gt;
Tutorial: https://developers.rdstation.com/reference/autentica%C3%A7%C3%A3o&lt;br /&gt;
&lt;br /&gt;
01 - Criar aplicativo&lt;br /&gt;
&lt;br /&gt;
* acessar o publisher https://appstore.rdstation.com/pt-BR/publisher&lt;br /&gt;
* criar um app privado&lt;br /&gt;
* url callback: https://testes.doth.com.br/apis/rdstation&lt;br /&gt;
* copiar client id e client secret&lt;br /&gt;
&lt;br /&gt;
02 - Executar passo 2 no navegador&lt;br /&gt;
* url: https://api.rd.services/auth/dialog?client_id=client_id&amp;amp;redirect_uri=redirect_uri&lt;br /&gt;
* obter o code&lt;br /&gt;
&lt;br /&gt;
03 - obter bearer&lt;br /&gt;
* pegar codigo beare &lt;br /&gt;
* pegar refresh token&lt;br /&gt;
&lt;br /&gt;
04 - refresh token&lt;br /&gt;
* colocar no codigo do lambda&lt;br /&gt;
&lt;br /&gt;
=== Pré venda ===&lt;br /&gt;
&lt;br /&gt;
Opção utilizada dentro da própria tela de pré vendas&lt;br /&gt;
&lt;br /&gt;
Tags: planosweb,vendas, filial, cidade (substituem as tags anteriores)&lt;br /&gt;
&lt;br /&gt;
Objetivos: disparo&lt;br /&gt;
&lt;br /&gt;
=== Planos Ativos ===&lt;br /&gt;
&lt;br /&gt;
Opção de envio: 5.07.08.02&lt;br /&gt;
&lt;br /&gt;
Tags: planos, associados, filial, cidade (substituem as tags anteriores)&lt;br /&gt;
&lt;br /&gt;
== Vindi ==&lt;br /&gt;
&lt;br /&gt;
Empresa especializada na cobrança de valores recorrentes via cartão de crédito&lt;br /&gt;
&lt;br /&gt;
O Doth possui integração com o software Vindi. Isso significa que quando a fatura for paga na vindi, será enviado a informação de baixa para o sistema&lt;br /&gt;
&lt;br /&gt;
=== Geral ===&lt;br /&gt;
&lt;br /&gt;
Informações gerais a respeito do processo vindi&lt;br /&gt;
&lt;br /&gt;
==== Configuração do Cliente ====&lt;br /&gt;
&lt;br /&gt;
No código externo do cliente deve estar informado o número da inscrição&lt;br /&gt;
&lt;br /&gt;
==== Ficha do Associado ====&lt;br /&gt;
&lt;br /&gt;
# Status Recorrente:&lt;br /&gt;
## Não, Sim (cliente cadastrado), A (assinatura ok recorrente)&lt;br /&gt;
&lt;br /&gt;
#Code, assinatura, cartão&lt;br /&gt;
## code: codigo do cliente na vindi&lt;br /&gt;
## assinatura: codigo vindi de assiantura&lt;br /&gt;
## codigo na vidi&lt;br /&gt;
## todos devem estar preenchidos para uma assinatura ativa&lt;br /&gt;
&lt;br /&gt;
=== Módulo de assinaturas === &lt;br /&gt;
&lt;br /&gt;
Quando já existe o plano cadastrado&lt;br /&gt;
&lt;br /&gt;
==== Configuração Vindi ====&lt;br /&gt;
&lt;br /&gt;
# cadastro de produto&lt;br /&gt;
## cadastro de produtona Vindi de valor 0,00 (preço fixo)&lt;br /&gt;
## colocar o codigo do produto na tabela de filiais (vindiProduto)&lt;br /&gt;
&lt;br /&gt;
# cadastro de plano&lt;br /&gt;
## cadastro de plano de assinautura na vindi sem nenhum produto&lt;br /&gt;
## inputar o codigo na tabela de filiais (vindiPln)&lt;br /&gt;
&lt;br /&gt;
# chave de acesso&lt;br /&gt;
## criar uma chave de api&lt;br /&gt;
## inputar o codigo na tabela fiiais (vindiKey)&lt;br /&gt;
&lt;br /&gt;
#webhook&lt;br /&gt;
## Criar webhook com status de fatura paga para o endereço: https://erp.doth.com.br/apis/vindi/hook.php?secret=x&lt;br /&gt;
## Cobrança (cancelada, estornada, rejeitda)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Funcionamento ====&lt;br /&gt;
&lt;br /&gt;
# A cada fatura paga será enviada a informação da baixa diretamente para o sistema&lt;br /&gt;
# É realizada uma pré-baixa que fica disponível em: Processos &amp;gt; Externos &amp;gt; Importar Vindi/pago. 5.07.04. - Imporar vindi/pago&lt;br /&gt;
# É possível consultar as faturas em Aberto (ainda não processadas) ou Baixadas (já processadas)&lt;br /&gt;
# Processar as baixas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Obs: é considerado como mês de pagamento o mês onde a fatura foi efetivamente lançada no cartão do cliente.&lt;br /&gt;
&lt;br /&gt;
=== Módulo de Vendas ===&lt;br /&gt;
&lt;br /&gt;
Vendas pela internet direto pelo sistema recorrente&lt;br /&gt;
&lt;br /&gt;
==== Vindi ====&lt;br /&gt;
&lt;br /&gt;
# Produtos&lt;br /&gt;
## É o item com o valor final&lt;br /&gt;
&lt;br /&gt;
# Planos&lt;br /&gt;
# ciclo permanente - mensalidade&lt;br /&gt;
# ciclo temporario - adesão&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Howto&amp;diff=1171</id>
		<title>Howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Howto&amp;diff=1171"/>
		<updated>2026-03-28T12:52:38Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Lançar parcelas e parcela única */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
Passo a passo de alguns procedimentos a seguir no sistema de processos gerenciais&lt;br /&gt;
&lt;br /&gt;
= Planos = &lt;br /&gt;
&lt;br /&gt;
== Lançamento Global de Parcelas ==&lt;br /&gt;
&lt;br /&gt;
Processo realizado anualmente para reajustar e gerar novas mensalidades &lt;br /&gt;
&lt;br /&gt;
É necessário executar os passos abaixo:&lt;br /&gt;
&lt;br /&gt;
# Bloquear para novos planos &lt;br /&gt;
# Avaliar situação e cancelar planos em atraso&lt;br /&gt;
# Reajustar taxas e subgrupos&lt;br /&gt;
# Lançar parcelas e parcela única&lt;br /&gt;
# Gerar Boletos&lt;br /&gt;
# Gerar arquivo banco/gráfica&lt;br /&gt;
# Cobrança em carteira, sem CPF&lt;br /&gt;
&lt;br /&gt;
=== Bloquear para novos planos === &lt;br /&gt;
&lt;br /&gt;
* 9.99.01.Bloquear planos&lt;br /&gt;
&lt;br /&gt;
(evita novos cadastros, lançamento de mensalidades e alterações)&lt;br /&gt;
&lt;br /&gt;
=== Cancelar planos em atraso===&lt;br /&gt;
&lt;br /&gt;
* 5.08.02. Avaliar situação&lt;br /&gt;
&lt;br /&gt;
Atenção aos filtros de mensalidade e data de vencimento&lt;br /&gt;
&lt;br /&gt;
Definir um nome para a situação (será utilizado nos próximos passos)&lt;br /&gt;
&lt;br /&gt;
* 5.08.07. Relatório de situação definida&lt;br /&gt;
&lt;br /&gt;
Múltiplos filtros de planos que serão cancelados dentro da situação definida.&lt;br /&gt;
&lt;br /&gt;
* 5.08.05. Cancelamento em lote&lt;br /&gt;
&lt;br /&gt;
=== Reajustar taxas e subgrupos ===&lt;br /&gt;
&lt;br /&gt;
* 5.10.01 Reajuste taxas&lt;br /&gt;
	&lt;br /&gt;
Afeta todas os planos de todas as filiais que utilizam as taxas&lt;br /&gt;
&lt;br /&gt;
Percentual, ajuste arredonda para baixo&lt;br /&gt;
&lt;br /&gt;
* 5.10.02 Reajuste subgrupo &lt;br /&gt;
&lt;br /&gt;
Ajuste por filial&lt;br /&gt;
&lt;br /&gt;
Percentual, ajuste arredonda para baixo&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Após o reajuste é feito é necessário atualizar os valores &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 5.08.01.00. - Zera valores plano (por filial)&lt;br /&gt;
* 5.08.01.01. - Atualiza valor plano (soma o valor)&lt;br /&gt;
* 5.08.01.02. - Atualiza valor taxa (soma o valor)&lt;br /&gt;
	&lt;br /&gt;
=== Correções e controles a serem realizados ===&lt;br /&gt;
&lt;br /&gt;
* 5.08.01.05. - Checa cpf dos Planos &lt;br /&gt;
&lt;br /&gt;
Valida os cpfs dos planos para mudar o tipo de cobrança para ignorado. Tipo cobrança: boleto (fazer com nulos e sem nulos)&lt;br /&gt;
&lt;br /&gt;
* 6.01.03. - Relatório Associados geral&lt;br /&gt;
&lt;br /&gt;
Relatório geral e por tipo de cobrança carnê para controle do processo&lt;br /&gt;
&lt;br /&gt;
=== Lançar parcelas e parcela única ===&lt;br /&gt;
	&lt;br /&gt;
* 5.08.01.09. - Lançar parcelas&lt;br /&gt;
&lt;br /&gt;
Lançamento global. Enviado e-mail ao final do processo&lt;br /&gt;
&lt;br /&gt;
Considerar PV lançadas&lt;br /&gt;
&lt;br /&gt;
* 5.08.01.04. - Verificar parcela/boleto lançada&lt;br /&gt;
&lt;br /&gt;
* 5.03.02. - Gerar parcela única&lt;br /&gt;
&lt;br /&gt;
Planos com tipo de cobrança carnê&lt;br /&gt;
&lt;br /&gt;
Parcela única lança boleto automaticamente&lt;br /&gt;
&lt;br /&gt;
Enviar remessa parcela única para o banco (5.01.01 Gerar Remessa)&lt;br /&gt;
&lt;br /&gt;
=== Gerar Boletos das Parcelas ===&lt;br /&gt;
&lt;br /&gt;
* 5.08.01.06. - Lançar boletos Global&lt;br /&gt;
	&lt;br /&gt;
Filtros:&lt;br /&gt;
&lt;br /&gt;
a) Tipo cobrança carne; &lt;br /&gt;
b) Por filial grupos; &lt;br /&gt;
c) Verificar número de boletos lançados no grupo	&lt;br /&gt;
d) Processar boletos&lt;br /&gt;
&lt;br /&gt;
Não passar de 10k&lt;br /&gt;
&lt;br /&gt;
* 5.03.01. - Gerar Boleto cobrança rápido&lt;br /&gt;
&lt;br /&gt;
Processo alternativo ao processo anterior (mais lento).&lt;br /&gt;
&lt;br /&gt;
Após gerar os boletos, mesmo de forma global, é necessário processar os boletos.&lt;br /&gt;
&lt;br /&gt;
=== Gerar arquivo banco/gráfica ===&lt;br /&gt;
&lt;br /&gt;
* 5.01.01. - Gera remessa &lt;br /&gt;
&lt;br /&gt;
Registrar no banco (30 minutos para processar)&lt;br /&gt;
&lt;br /&gt;
Verificar entradas no registro banco Sicoob carteira&lt;br /&gt;
&lt;br /&gt;
* 5.03.05. - Imprimir boleto geral&lt;br /&gt;
&lt;br /&gt;
Por Grupo&lt;br /&gt;
&lt;br /&gt;
Gerar CSV para gráfica/doth recibos (ptbr)&lt;br /&gt;
	&lt;br /&gt;
=== Cobrança fora do banco - Carteira sem CPF ===&lt;br /&gt;
&lt;br /&gt;
5.03.09. - Boletos carteia&lt;br /&gt;
&lt;br /&gt;
Gerar boletos para planos tipo cobrança carteia&lt;br /&gt;
&lt;br /&gt;
= Cemitério = &lt;br /&gt;
&lt;br /&gt;
== Cobrança de manutenção ==&lt;br /&gt;
* Checar última parcela: definir situação para os planos a trabalhar (será o filtro principal nos demais processos)&lt;br /&gt;
&lt;br /&gt;
atenção a data da venda: definir 09 meses antes da data de início da cobrança (evita que planos a vista, sejam cobrados no mesmo ano)&lt;br /&gt;
&lt;br /&gt;
* Atualizar valores: atualiza valores da taxa de manutenção nos planos&lt;br /&gt;
* Lançamento Global de Parcelas: lança parcelas para o próximo período&lt;br /&gt;
* Gerar boletos (gera os boletos das parcelas&lt;br /&gt;
* Gerar e enviar remessa&lt;br /&gt;
&lt;br /&gt;
Opcional:&lt;br /&gt;
&lt;br /&gt;
*Gerar Parcela única: gera uma parcela única com desconto&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Howto&amp;diff=1170</id>
		<title>Howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Howto&amp;diff=1170"/>
		<updated>2026-03-28T12:43:52Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Bloquear para novos planos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
Passo a passo de alguns procedimentos a seguir no sistema de processos gerenciais&lt;br /&gt;
&lt;br /&gt;
= Planos = &lt;br /&gt;
&lt;br /&gt;
== Lançamento Global de Parcelas ==&lt;br /&gt;
&lt;br /&gt;
Processo realizado anualmente para reajustar e gerar novas mensalidades &lt;br /&gt;
&lt;br /&gt;
É necessário executar os passos abaixo:&lt;br /&gt;
&lt;br /&gt;
# Bloquear para novos planos &lt;br /&gt;
# Avaliar situação e cancelar planos em atraso&lt;br /&gt;
# Reajustar taxas e subgrupos&lt;br /&gt;
# Lançar parcelas e parcela única&lt;br /&gt;
# Gerar Boletos&lt;br /&gt;
# Gerar arquivo banco/gráfica&lt;br /&gt;
# Cobrança em carteira, sem CPF&lt;br /&gt;
&lt;br /&gt;
=== Bloquear para novos planos === &lt;br /&gt;
&lt;br /&gt;
* 9.99.01.Bloquear planos&lt;br /&gt;
&lt;br /&gt;
(evita novos cadastros, lançamento de mensalidades e alterações)&lt;br /&gt;
&lt;br /&gt;
=== Cancelar planos em atraso===&lt;br /&gt;
&lt;br /&gt;
* 5.08.02. Avaliar situação&lt;br /&gt;
&lt;br /&gt;
Atenção aos filtros de mensalidade e data de vencimento&lt;br /&gt;
&lt;br /&gt;
Definir um nome para a situação (será utilizado nos próximos passos)&lt;br /&gt;
&lt;br /&gt;
* 5.08.07. Relatório de situação definida&lt;br /&gt;
&lt;br /&gt;
Múltiplos filtros de planos que serão cancelados dentro da situação definida.&lt;br /&gt;
&lt;br /&gt;
* 5.08.05. Cancelamento em lote&lt;br /&gt;
&lt;br /&gt;
=== Reajustar taxas e subgrupos ===&lt;br /&gt;
&lt;br /&gt;
* 5.10.01 Reajuste taxas&lt;br /&gt;
	&lt;br /&gt;
Afeta todas os planos de todas as filiais que utilizam as taxas&lt;br /&gt;
&lt;br /&gt;
Percentual, ajuste arredonda para baixo&lt;br /&gt;
&lt;br /&gt;
* 5.10.02 Reajuste subgrupo &lt;br /&gt;
&lt;br /&gt;
Ajuste por filial&lt;br /&gt;
&lt;br /&gt;
Percentual, ajuste arredonda para baixo&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Após o reajuste é feito é necessário atualizar os valores &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 5.08.01.00. - Zera valores plano (por filial)&lt;br /&gt;
* 5.08.01.01. - Atualiza valor plano (soma o valor)&lt;br /&gt;
* 5.08.01.02. - Atualiza valor taxa (soma o valor)&lt;br /&gt;
	&lt;br /&gt;
=== Correções e controles a serem realizados ===&lt;br /&gt;
&lt;br /&gt;
* 5.08.01.05. - Checa cpf dos Planos &lt;br /&gt;
&lt;br /&gt;
Valida os cpfs dos planos para mudar o tipo de cobrança para ignorado. Tipo cobrança: boleto (fazer com nulos e sem nulos)&lt;br /&gt;
&lt;br /&gt;
* 6.01.03. - Relatório Associados geral&lt;br /&gt;
&lt;br /&gt;
Relatório geral e por tipo de cobrança carnê para controle do processo&lt;br /&gt;
&lt;br /&gt;
=== Lançar parcelas e parcela única ===&lt;br /&gt;
	&lt;br /&gt;
* 5.08.01.03. - Lançar parcelas&lt;br /&gt;
&lt;br /&gt;
Lançamento global. Enviado e-mail ao final do processo&lt;br /&gt;
&lt;br /&gt;
Considerar PV lançadas&lt;br /&gt;
&lt;br /&gt;
* 5.08.01.04. - Verificar parcela/boleto lançada&lt;br /&gt;
&lt;br /&gt;
* 5.03.02. - Gerar parcela única&lt;br /&gt;
&lt;br /&gt;
Planos com tipo de cobrança carnê&lt;br /&gt;
&lt;br /&gt;
Parcela única lança boleto automaticamente&lt;br /&gt;
&lt;br /&gt;
Enviar remessa parcela única para o banco (5.01.01 Gerar Remessa)&lt;br /&gt;
&lt;br /&gt;
=== Gerar Boletos das Parcelas ===&lt;br /&gt;
&lt;br /&gt;
* 5.08.01.06. - Lançar boletos Global&lt;br /&gt;
	&lt;br /&gt;
Filtros:&lt;br /&gt;
&lt;br /&gt;
a) Tipo cobrança carne; &lt;br /&gt;
b) Por filial grupos; &lt;br /&gt;
c) Verificar número de boletos lançados no grupo	&lt;br /&gt;
d) Processar boletos&lt;br /&gt;
&lt;br /&gt;
Não passar de 10k&lt;br /&gt;
&lt;br /&gt;
* 5.03.01. - Gerar Boleto cobrança rápido&lt;br /&gt;
&lt;br /&gt;
Processo alternativo ao processo anterior (mais lento).&lt;br /&gt;
&lt;br /&gt;
Após gerar os boletos, mesmo de forma global, é necessário processar os boletos.&lt;br /&gt;
&lt;br /&gt;
=== Gerar arquivo banco/gráfica ===&lt;br /&gt;
&lt;br /&gt;
* 5.01.01. - Gera remessa &lt;br /&gt;
&lt;br /&gt;
Registrar no banco (30 minutos para processar)&lt;br /&gt;
&lt;br /&gt;
Verificar entradas no registro banco Sicoob carteira&lt;br /&gt;
&lt;br /&gt;
* 5.03.05. - Imprimir boleto geral&lt;br /&gt;
&lt;br /&gt;
Por Grupo&lt;br /&gt;
&lt;br /&gt;
Gerar CSV para gráfica/doth recibos (ptbr)&lt;br /&gt;
	&lt;br /&gt;
=== Cobrança fora do banco - Carteira sem CPF ===&lt;br /&gt;
&lt;br /&gt;
5.03.09. - Boletos carteia&lt;br /&gt;
&lt;br /&gt;
Gerar boletos para planos tipo cobrança carteia&lt;br /&gt;
&lt;br /&gt;
= Cemitério = &lt;br /&gt;
&lt;br /&gt;
== Cobrança de manutenção ==&lt;br /&gt;
* Checar última parcela: definir situação para os planos a trabalhar (será o filtro principal nos demais processos)&lt;br /&gt;
&lt;br /&gt;
atenção a data da venda: definir 09 meses antes da data de início da cobrança (evita que planos a vista, sejam cobrados no mesmo ano)&lt;br /&gt;
&lt;br /&gt;
* Atualizar valores: atualiza valores da taxa de manutenção nos planos&lt;br /&gt;
* Lançamento Global de Parcelas: lança parcelas para o próximo período&lt;br /&gt;
* Gerar boletos (gera os boletos das parcelas&lt;br /&gt;
* Gerar e enviar remessa&lt;br /&gt;
&lt;br /&gt;
Opcional:&lt;br /&gt;
&lt;br /&gt;
*Gerar Parcela única: gera uma parcela única com desconto&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1169</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1169"/>
		<updated>2026-03-08T12:50:10Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Apagar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Com certeza você já ouviu uma famosa frase &#039;Na minha máquina funciona&#039;... então se na sua máquina funciona, por que não enviar ela para produção?&lt;br /&gt;
&lt;br /&gt;
Pois bem, o que o Docker faz é parecido com isto. Em termos gerais ele abstrai a infraestrutura das aplicações através de imagens prontas.&lt;br /&gt;
&lt;br /&gt;
O que temos são basicamente &#039;máquinas virtuais&#039; de baixo custo rodando somente com a infraestrutura das nossas aplicações.&lt;br /&gt;
&lt;br /&gt;
= Comandos básicos =&lt;br /&gt;
&lt;br /&gt;
- ver versao&lt;br /&gt;
&lt;br /&gt;
docker version&lt;br /&gt;
&lt;br /&gt;
- ver imagens&lt;br /&gt;
&lt;br /&gt;
docker images -a&lt;br /&gt;
docker container ls&lt;br /&gt;
&lt;br /&gt;
- start / restart&lt;br /&gt;
&lt;br /&gt;
docker start nome_imagem&lt;br /&gt;
dockr restart nome_imagem&lt;br /&gt;
 &lt;br /&gt;
- Executa um comando dentro do container demo-lucasfp&lt;br /&gt;
docker exec -it nome_imagem apt-get update&lt;br /&gt;
&lt;br /&gt;
- ver containers em execução&lt;br /&gt;
&lt;br /&gt;
docker ps&lt;br /&gt;
&lt;br /&gt;
= Apagar =&lt;br /&gt;
&lt;br /&gt;
docker stack ls&lt;br /&gt;
&lt;br /&gt;
docker stack rm nome_container&lt;br /&gt;
&lt;br /&gt;
docker volume ls&lt;br /&gt;
&lt;br /&gt;
docker volume rm nome_volume&lt;br /&gt;
&lt;br /&gt;
= Dokploy = &lt;br /&gt;
&lt;br /&gt;
Resetar a senha: docker exec -it instancia_id bash -c &amp;quot;pnpm run reset-password&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Hostinger = &lt;br /&gt;
&lt;br /&gt;
Processo de instalação do Docker na hostinger&lt;br /&gt;
&lt;br /&gt;
* instalar ubuntu 24.04&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
curl -fsSL https://get.docker.com -o get-docker.sh&lt;br /&gt;
&lt;br /&gt;
sudo sh get-docker.sh&lt;br /&gt;
&lt;br /&gt;
docker swarm init --advertise-addr=IP_DO_SERVIDOR&lt;br /&gt;
&lt;br /&gt;
docker network create --driver=overlay agent_network&lt;br /&gt;
&lt;br /&gt;
docker network create --driver=overlay traefik_public&lt;br /&gt;
&lt;br /&gt;
mkdir portainer&lt;br /&gt;
&lt;br /&gt;
cd portainer&lt;br /&gt;
&lt;br /&gt;
vi portainer.yaml (conteudo)&lt;br /&gt;
&lt;br /&gt;
docker stack deploy -c portainer.yaml portainer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# acessar ip do servidor:9000 &lt;br /&gt;
# criar senha&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Python&amp;diff=1168</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Python&amp;diff=1168"/>
		<updated>2026-03-04T12:21:20Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Instlalar pacote na pasta */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
= Básicos = &lt;br /&gt;
&lt;br /&gt;
== Comandos ==&lt;br /&gt;
&lt;br /&gt;
pip list - lista os pacotes&lt;br /&gt;
&lt;br /&gt;
python -m venv .venv - cria ambiente virtual&lt;br /&gt;
&lt;br /&gt;
.venv\Scripts\activate - entra no ambiente&lt;br /&gt;
&lt;br /&gt;
deactivate - sai do ambiente&lt;br /&gt;
&lt;br /&gt;
== Install and updates ==&lt;br /&gt;
&lt;br /&gt;
# Ver pacotes desatualizados&lt;br /&gt;
&lt;br /&gt;
pip list --outdated&lt;br /&gt;
&lt;br /&gt;
Atualiza pacotes windows&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pip freeze | %{$_.split(&#039;==&#039;)[0]} | %{pip install --upgrade $_}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Instlalar pacote na pasta == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
pip install requests -t ./&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= FastApi =&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Python&amp;diff=1167</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Python&amp;diff=1167"/>
		<updated>2026-03-04T12:21:09Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Báscicos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
= Básicos = &lt;br /&gt;
&lt;br /&gt;
== Comandos ==&lt;br /&gt;
&lt;br /&gt;
pip list - lista os pacotes&lt;br /&gt;
&lt;br /&gt;
python -m venv .venv - cria ambiente virtual&lt;br /&gt;
&lt;br /&gt;
.venv\Scripts\activate - entra no ambiente&lt;br /&gt;
&lt;br /&gt;
deactivate - sai do ambiente&lt;br /&gt;
&lt;br /&gt;
== Install and updates ==&lt;br /&gt;
&lt;br /&gt;
# Ver pacotes desatualizados&lt;br /&gt;
&lt;br /&gt;
pip list --outdated&lt;br /&gt;
&lt;br /&gt;
Atualiza pacotes windows&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pip freeze | %{$_.split(&#039;==&#039;)[0]} | %{pip install --upgrade $_}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Instlalar pacote na pasta == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
pip install requests -t ./&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Python&amp;diff=1166</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Python&amp;diff=1166"/>
		<updated>2026-03-04T12:21:00Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Install and updates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
= Báscicos = &lt;br /&gt;
&lt;br /&gt;
== Comandos ==&lt;br /&gt;
&lt;br /&gt;
pip list - lista os pacotes&lt;br /&gt;
&lt;br /&gt;
python -m venv .venv - cria ambiente virtual&lt;br /&gt;
&lt;br /&gt;
.venv\Scripts\activate - entra no ambiente&lt;br /&gt;
&lt;br /&gt;
deactivate - sai do ambiente&lt;br /&gt;
&lt;br /&gt;
== Install and updates ==&lt;br /&gt;
&lt;br /&gt;
# Ver pacotes desatualizados&lt;br /&gt;
&lt;br /&gt;
pip list --outdated&lt;br /&gt;
&lt;br /&gt;
Atualiza pacotes windows&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pip freeze | %{$_.split(&#039;==&#039;)[0]} | %{pip install --upgrade $_}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Instlalar pacote na pasta == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
pip install requests -t ./&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Python&amp;diff=1165</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Python&amp;diff=1165"/>
		<updated>2026-03-04T12:20:34Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Install and updates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
= Báscicos = &lt;br /&gt;
&lt;br /&gt;
== Comandos ==&lt;br /&gt;
&lt;br /&gt;
pip list - lista os pacotes&lt;br /&gt;
&lt;br /&gt;
python -m venv .venv - cria ambiente virtual&lt;br /&gt;
&lt;br /&gt;
.venv\Scripts\activate - entra no ambiente&lt;br /&gt;
&lt;br /&gt;
deactivate - sai do ambiente&lt;br /&gt;
&lt;br /&gt;
== Install and updates ==&lt;br /&gt;
# Ver pacotes desatualizados&lt;br /&gt;
&lt;br /&gt;
pip list --outdated&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atualiza pacotes windows&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pip freeze | %{$_.split(&#039;==&#039;)[0]} | %{pip install --upgrade $_}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Instlalar pacote na pasta == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
pip install requests -t ./&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Python&amp;diff=1164</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Python&amp;diff=1164"/>
		<updated>2026-03-04T12:20:08Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Comandos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
= Báscicos = &lt;br /&gt;
&lt;br /&gt;
== Comandos ==&lt;br /&gt;
&lt;br /&gt;
pip list - lista os pacotes&lt;br /&gt;
&lt;br /&gt;
python -m venv .venv - cria ambiente virtual&lt;br /&gt;
&lt;br /&gt;
.venv\Scripts\activate - entra no ambiente&lt;br /&gt;
&lt;br /&gt;
deactivate - sai do ambiente&lt;br /&gt;
&lt;br /&gt;
== Install and updates ==&lt;br /&gt;
# Ver pacotes desatualizados&lt;br /&gt;
&lt;br /&gt;
pip list --outdated&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atualiza pacotes windows&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pip freeze | %{$_.split(&#039;==&#039;)[0]} | %{pip install --upgrade $_}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Instlalar pacote na pasta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
pip install requests -t ./&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1163</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1163"/>
		<updated>2026-02-28T22:22:47Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Apagar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Com certeza você já ouviu uma famosa frase &#039;Na minha máquina funciona&#039;... então se na sua máquina funciona, por que não enviar ela para produção?&lt;br /&gt;
&lt;br /&gt;
Pois bem, o que o Docker faz é parecido com isto. Em termos gerais ele abstrai a infraestrutura das aplicações através de imagens prontas.&lt;br /&gt;
&lt;br /&gt;
O que temos são basicamente &#039;máquinas virtuais&#039; de baixo custo rodando somente com a infraestrutura das nossas aplicações.&lt;br /&gt;
&lt;br /&gt;
= Comandos básicos =&lt;br /&gt;
&lt;br /&gt;
- ver versao&lt;br /&gt;
&lt;br /&gt;
docker version&lt;br /&gt;
&lt;br /&gt;
- ver imagens&lt;br /&gt;
&lt;br /&gt;
docker images -a&lt;br /&gt;
docker container ls&lt;br /&gt;
&lt;br /&gt;
- start / restart&lt;br /&gt;
&lt;br /&gt;
docker start nome_imagem&lt;br /&gt;
dockr restart nome_imagem&lt;br /&gt;
 &lt;br /&gt;
- Executa um comando dentro do container demo-lucasfp&lt;br /&gt;
docker exec -it nome_imagem apt-get update&lt;br /&gt;
&lt;br /&gt;
- ver containers em execução&lt;br /&gt;
&lt;br /&gt;
docker ps&lt;br /&gt;
&lt;br /&gt;
= Apagar =&lt;br /&gt;
&lt;br /&gt;
docker stack ls&lt;br /&gt;
&lt;br /&gt;
docker stack rm nome_container&lt;br /&gt;
&lt;br /&gt;
docker volume ls&lt;br /&gt;
&lt;br /&gt;
docker volume rm nome_volume&lt;br /&gt;
&lt;br /&gt;
= Hostinger = &lt;br /&gt;
&lt;br /&gt;
Processo de instalação do Docker na hostinger&lt;br /&gt;
&lt;br /&gt;
* instalar ubuntu 24.04&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
curl -fsSL https://get.docker.com -o get-docker.sh&lt;br /&gt;
&lt;br /&gt;
sudo sh get-docker.sh&lt;br /&gt;
&lt;br /&gt;
docker swarm init --advertise-addr=IP_DO_SERVIDOR&lt;br /&gt;
&lt;br /&gt;
docker network create --driver=overlay agent_network&lt;br /&gt;
&lt;br /&gt;
docker network create --driver=overlay traefik_public&lt;br /&gt;
&lt;br /&gt;
mkdir portainer&lt;br /&gt;
&lt;br /&gt;
cd portainer&lt;br /&gt;
&lt;br /&gt;
vi portainer.yaml (conteudo)&lt;br /&gt;
&lt;br /&gt;
docker stack deploy -c portainer.yaml portainer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# acessar ip do servidor:9000 &lt;br /&gt;
# criar senha&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1162</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1162"/>
		<updated>2026-02-28T21:45:03Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Apagar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Com certeza você já ouviu uma famosa frase &#039;Na minha máquina funciona&#039;... então se na sua máquina funciona, por que não enviar ela para produção?&lt;br /&gt;
&lt;br /&gt;
Pois bem, o que o Docker faz é parecido com isto. Em termos gerais ele abstrai a infraestrutura das aplicações através de imagens prontas.&lt;br /&gt;
&lt;br /&gt;
O que temos são basicamente &#039;máquinas virtuais&#039; de baixo custo rodando somente com a infraestrutura das nossas aplicações.&lt;br /&gt;
&lt;br /&gt;
= Comandos básicos =&lt;br /&gt;
&lt;br /&gt;
- ver versao&lt;br /&gt;
&lt;br /&gt;
docker version&lt;br /&gt;
&lt;br /&gt;
- ver imagens&lt;br /&gt;
&lt;br /&gt;
docker images -a&lt;br /&gt;
docker container ls&lt;br /&gt;
&lt;br /&gt;
- start / restart&lt;br /&gt;
&lt;br /&gt;
docker start nome_imagem&lt;br /&gt;
dockr restart nome_imagem&lt;br /&gt;
 &lt;br /&gt;
- Executa um comando dentro do container demo-lucasfp&lt;br /&gt;
docker exec -it nome_imagem apt-get update&lt;br /&gt;
&lt;br /&gt;
- ver containers em execução&lt;br /&gt;
&lt;br /&gt;
docker ps&lt;br /&gt;
&lt;br /&gt;
= Apagar =&lt;br /&gt;
&lt;br /&gt;
docker stack ls&lt;br /&gt;
&lt;br /&gt;
docker stack rm nome_container&lt;br /&gt;
&lt;br /&gt;
= Hostinger = &lt;br /&gt;
&lt;br /&gt;
Processo de instalação do Docker na hostinger&lt;br /&gt;
&lt;br /&gt;
* instalar ubuntu 24.04&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
curl -fsSL https://get.docker.com -o get-docker.sh&lt;br /&gt;
&lt;br /&gt;
sudo sh get-docker.sh&lt;br /&gt;
&lt;br /&gt;
docker swarm init --advertise-addr=IP_DO_SERVIDOR&lt;br /&gt;
&lt;br /&gt;
docker network create --driver=overlay agent_network&lt;br /&gt;
&lt;br /&gt;
docker network create --driver=overlay traefik_public&lt;br /&gt;
&lt;br /&gt;
mkdir portainer&lt;br /&gt;
&lt;br /&gt;
cd portainer&lt;br /&gt;
&lt;br /&gt;
vi portainer.yaml (conteudo)&lt;br /&gt;
&lt;br /&gt;
docker stack deploy -c portainer.yaml portainer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# acessar ip do servidor:9000 &lt;br /&gt;
# criar senha&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1161</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1161"/>
		<updated>2026-02-28T21:44:44Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Comandos básicos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Com certeza você já ouviu uma famosa frase &#039;Na minha máquina funciona&#039;... então se na sua máquina funciona, por que não enviar ela para produção?&lt;br /&gt;
&lt;br /&gt;
Pois bem, o que o Docker faz é parecido com isto. Em termos gerais ele abstrai a infraestrutura das aplicações através de imagens prontas.&lt;br /&gt;
&lt;br /&gt;
O que temos são basicamente &#039;máquinas virtuais&#039; de baixo custo rodando somente com a infraestrutura das nossas aplicações.&lt;br /&gt;
&lt;br /&gt;
= Comandos básicos =&lt;br /&gt;
&lt;br /&gt;
- ver versao&lt;br /&gt;
&lt;br /&gt;
docker version&lt;br /&gt;
&lt;br /&gt;
- ver imagens&lt;br /&gt;
&lt;br /&gt;
docker images -a&lt;br /&gt;
docker container ls&lt;br /&gt;
&lt;br /&gt;
- start / restart&lt;br /&gt;
&lt;br /&gt;
docker start nome_imagem&lt;br /&gt;
dockr restart nome_imagem&lt;br /&gt;
 &lt;br /&gt;
- Executa um comando dentro do container demo-lucasfp&lt;br /&gt;
docker exec -it nome_imagem apt-get update&lt;br /&gt;
&lt;br /&gt;
- ver containers em execução&lt;br /&gt;
&lt;br /&gt;
docker ps&lt;br /&gt;
&lt;br /&gt;
= Apagar =&lt;br /&gt;
&lt;br /&gt;
= Hostinger = &lt;br /&gt;
&lt;br /&gt;
Processo de instalação do Docker na hostinger&lt;br /&gt;
&lt;br /&gt;
* instalar ubuntu 24.04&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
curl -fsSL https://get.docker.com -o get-docker.sh&lt;br /&gt;
&lt;br /&gt;
sudo sh get-docker.sh&lt;br /&gt;
&lt;br /&gt;
docker swarm init --advertise-addr=IP_DO_SERVIDOR&lt;br /&gt;
&lt;br /&gt;
docker network create --driver=overlay agent_network&lt;br /&gt;
&lt;br /&gt;
docker network create --driver=overlay traefik_public&lt;br /&gt;
&lt;br /&gt;
mkdir portainer&lt;br /&gt;
&lt;br /&gt;
cd portainer&lt;br /&gt;
&lt;br /&gt;
vi portainer.yaml (conteudo)&lt;br /&gt;
&lt;br /&gt;
docker stack deploy -c portainer.yaml portainer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# acessar ip do servidor:9000 &lt;br /&gt;
# criar senha&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1160</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1160"/>
		<updated>2026-02-28T21:01:55Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Hostinger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Com certeza você já ouviu uma famosa frase &#039;Na minha máquina funciona&#039;... então se na sua máquina funciona, por que não enviar ela para produção?&lt;br /&gt;
&lt;br /&gt;
Pois bem, o que o Docker faz é parecido com isto. Em termos gerais ele abstrai a infraestrutura das aplicações através de imagens prontas.&lt;br /&gt;
&lt;br /&gt;
O que temos são basicamente &#039;máquinas virtuais&#039; de baixo custo rodando somente com a infraestrutura das nossas aplicações.&lt;br /&gt;
&lt;br /&gt;
= Comandos básicos =&lt;br /&gt;
&lt;br /&gt;
- ver versao&lt;br /&gt;
&lt;br /&gt;
docker version&lt;br /&gt;
&lt;br /&gt;
- ver imagens&lt;br /&gt;
&lt;br /&gt;
docker images -a&lt;br /&gt;
docker container ls&lt;br /&gt;
&lt;br /&gt;
- start / restart&lt;br /&gt;
&lt;br /&gt;
docker start nome_imagem&lt;br /&gt;
dockr restart nome_imagem&lt;br /&gt;
 &lt;br /&gt;
- Executa um comando dentro do container demo-lucasfp&lt;br /&gt;
docker exec -it nome_imagem apt-get update&lt;br /&gt;
&lt;br /&gt;
- ver containers em execução&lt;br /&gt;
&lt;br /&gt;
docker ps&lt;br /&gt;
&lt;br /&gt;
= Hostinger = &lt;br /&gt;
&lt;br /&gt;
Processo de instalação do Docker na hostinger&lt;br /&gt;
&lt;br /&gt;
* instalar ubuntu 24.04&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
curl -fsSL https://get.docker.com -o get-docker.sh&lt;br /&gt;
&lt;br /&gt;
sudo sh get-docker.sh&lt;br /&gt;
&lt;br /&gt;
docker swarm init --advertise-addr=IP_DO_SERVIDOR&lt;br /&gt;
&lt;br /&gt;
docker network create --driver=overlay agent_network&lt;br /&gt;
&lt;br /&gt;
docker network create --driver=overlay traefik_public&lt;br /&gt;
&lt;br /&gt;
mkdir portainer&lt;br /&gt;
&lt;br /&gt;
cd portainer&lt;br /&gt;
&lt;br /&gt;
vi portainer.yaml (conteudo)&lt;br /&gt;
&lt;br /&gt;
docker stack deploy -c portainer.yaml portainer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# acessar ip do servidor:9000 &lt;br /&gt;
# criar senha&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1159</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1159"/>
		<updated>2026-02-28T20:58:56Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Hostinger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Com certeza você já ouviu uma famosa frase &#039;Na minha máquina funciona&#039;... então se na sua máquina funciona, por que não enviar ela para produção?&lt;br /&gt;
&lt;br /&gt;
Pois bem, o que o Docker faz é parecido com isto. Em termos gerais ele abstrai a infraestrutura das aplicações através de imagens prontas.&lt;br /&gt;
&lt;br /&gt;
O que temos são basicamente &#039;máquinas virtuais&#039; de baixo custo rodando somente com a infraestrutura das nossas aplicações.&lt;br /&gt;
&lt;br /&gt;
= Comandos básicos =&lt;br /&gt;
&lt;br /&gt;
- ver versao&lt;br /&gt;
&lt;br /&gt;
docker version&lt;br /&gt;
&lt;br /&gt;
- ver imagens&lt;br /&gt;
&lt;br /&gt;
docker images -a&lt;br /&gt;
docker container ls&lt;br /&gt;
&lt;br /&gt;
- start / restart&lt;br /&gt;
&lt;br /&gt;
docker start nome_imagem&lt;br /&gt;
dockr restart nome_imagem&lt;br /&gt;
 &lt;br /&gt;
- Executa um comando dentro do container demo-lucasfp&lt;br /&gt;
docker exec -it nome_imagem apt-get update&lt;br /&gt;
&lt;br /&gt;
- ver containers em execução&lt;br /&gt;
&lt;br /&gt;
docker ps&lt;br /&gt;
&lt;br /&gt;
= Hostinger = &lt;br /&gt;
&lt;br /&gt;
Processo de instalação do Docker na hostinger&lt;br /&gt;
&lt;br /&gt;
* instalar ubuntu 24.04&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
curl -fsSL https://get.docker.com -o get-docker.sh&lt;br /&gt;
&lt;br /&gt;
sudo sh get-docker.sh&lt;br /&gt;
&lt;br /&gt;
docker swarm init --advertise-addr=IP_DO_SERVIDOR&lt;br /&gt;
&lt;br /&gt;
docker network create --driver=overlay agent_network&lt;br /&gt;
&lt;br /&gt;
docker network create --driver=overlay traefik_public&lt;br /&gt;
&lt;br /&gt;
mkdir portainer&lt;br /&gt;
&lt;br /&gt;
cd portainer&lt;br /&gt;
&lt;br /&gt;
vi portainer.yaml (conteudo)&lt;br /&gt;
&lt;br /&gt;
docker stack deploy -c portainer.yaml portainer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1158</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1158"/>
		<updated>2026-02-28T20:50:19Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Hostinger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Com certeza você já ouviu uma famosa frase &#039;Na minha máquina funciona&#039;... então se na sua máquina funciona, por que não enviar ela para produção?&lt;br /&gt;
&lt;br /&gt;
Pois bem, o que o Docker faz é parecido com isto. Em termos gerais ele abstrai a infraestrutura das aplicações através de imagens prontas.&lt;br /&gt;
&lt;br /&gt;
O que temos são basicamente &#039;máquinas virtuais&#039; de baixo custo rodando somente com a infraestrutura das nossas aplicações.&lt;br /&gt;
&lt;br /&gt;
= Comandos básicos =&lt;br /&gt;
&lt;br /&gt;
- ver versao&lt;br /&gt;
&lt;br /&gt;
docker version&lt;br /&gt;
&lt;br /&gt;
- ver imagens&lt;br /&gt;
&lt;br /&gt;
docker images -a&lt;br /&gt;
docker container ls&lt;br /&gt;
&lt;br /&gt;
- start / restart&lt;br /&gt;
&lt;br /&gt;
docker start nome_imagem&lt;br /&gt;
dockr restart nome_imagem&lt;br /&gt;
 &lt;br /&gt;
- Executa um comando dentro do container demo-lucasfp&lt;br /&gt;
docker exec -it nome_imagem apt-get update&lt;br /&gt;
&lt;br /&gt;
- ver containers em execução&lt;br /&gt;
&lt;br /&gt;
docker ps&lt;br /&gt;
&lt;br /&gt;
= Hostinger = &lt;br /&gt;
&lt;br /&gt;
Processo de instalação do Docker na hostinger&lt;br /&gt;
&lt;br /&gt;
* instalar ubuntu 24.04&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
curl -fsSL https://get.docker.com -o get-docker.sh&lt;br /&gt;
&lt;br /&gt;
sudo sh get-docker.sh&lt;br /&gt;
&lt;br /&gt;
docker swarm init --advertise-addr=IP_DO_SERVIDOR&lt;br /&gt;
&lt;br /&gt;
docker network create --driver=overlay agent_network&lt;br /&gt;
&lt;br /&gt;
docker network create --driver=overlay traefik_public&lt;br /&gt;
&lt;br /&gt;
mkdir portainer&lt;br /&gt;
&lt;br /&gt;
cd portainer&lt;br /&gt;
&lt;br /&gt;
vi portainer.yaml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1157</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1157"/>
		<updated>2026-02-28T20:43:22Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Hostinger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Com certeza você já ouviu uma famosa frase &#039;Na minha máquina funciona&#039;... então se na sua máquina funciona, por que não enviar ela para produção?&lt;br /&gt;
&lt;br /&gt;
Pois bem, o que o Docker faz é parecido com isto. Em termos gerais ele abstrai a infraestrutura das aplicações através de imagens prontas.&lt;br /&gt;
&lt;br /&gt;
O que temos são basicamente &#039;máquinas virtuais&#039; de baixo custo rodando somente com a infraestrutura das nossas aplicações.&lt;br /&gt;
&lt;br /&gt;
= Comandos básicos =&lt;br /&gt;
&lt;br /&gt;
- ver versao&lt;br /&gt;
&lt;br /&gt;
docker version&lt;br /&gt;
&lt;br /&gt;
- ver imagens&lt;br /&gt;
&lt;br /&gt;
docker images -a&lt;br /&gt;
docker container ls&lt;br /&gt;
&lt;br /&gt;
- start / restart&lt;br /&gt;
&lt;br /&gt;
docker start nome_imagem&lt;br /&gt;
dockr restart nome_imagem&lt;br /&gt;
 &lt;br /&gt;
- Executa um comando dentro do container demo-lucasfp&lt;br /&gt;
docker exec -it nome_imagem apt-get update&lt;br /&gt;
&lt;br /&gt;
- ver containers em execução&lt;br /&gt;
&lt;br /&gt;
docker ps&lt;br /&gt;
&lt;br /&gt;
= Hostinger = &lt;br /&gt;
&lt;br /&gt;
Processo de instalação do Docker na hostinger&lt;br /&gt;
&lt;br /&gt;
* instalar ubuntu 24.04&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
curl -fsSL https://get.docker.com -o get-docker.sh&lt;br /&gt;
&lt;br /&gt;
sudo sh get-docker.sh&lt;br /&gt;
&lt;br /&gt;
docker swarm init --advertise-addr=IP_DO_SERVIDOR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1156</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1156"/>
		<updated>2026-02-28T20:43:13Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Hostinger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Com certeza você já ouviu uma famosa frase &#039;Na minha máquina funciona&#039;... então se na sua máquina funciona, por que não enviar ela para produção?&lt;br /&gt;
&lt;br /&gt;
Pois bem, o que o Docker faz é parecido com isto. Em termos gerais ele abstrai a infraestrutura das aplicações através de imagens prontas.&lt;br /&gt;
&lt;br /&gt;
O que temos são basicamente &#039;máquinas virtuais&#039; de baixo custo rodando somente com a infraestrutura das nossas aplicações.&lt;br /&gt;
&lt;br /&gt;
= Comandos básicos =&lt;br /&gt;
&lt;br /&gt;
- ver versao&lt;br /&gt;
&lt;br /&gt;
docker version&lt;br /&gt;
&lt;br /&gt;
- ver imagens&lt;br /&gt;
&lt;br /&gt;
docker images -a&lt;br /&gt;
docker container ls&lt;br /&gt;
&lt;br /&gt;
- start / restart&lt;br /&gt;
&lt;br /&gt;
docker start nome_imagem&lt;br /&gt;
dockr restart nome_imagem&lt;br /&gt;
 &lt;br /&gt;
- Executa um comando dentro do container demo-lucasfp&lt;br /&gt;
docker exec -it nome_imagem apt-get update&lt;br /&gt;
&lt;br /&gt;
- ver containers em execução&lt;br /&gt;
&lt;br /&gt;
docker ps&lt;br /&gt;
&lt;br /&gt;
= Hostinger = &lt;br /&gt;
&lt;br /&gt;
Processo de instalação do Docker na hostinger&lt;br /&gt;
&lt;br /&gt;
* instalar ubuntu 24.04&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
curl -fsSL https://get.docker.com -o get-docker.sh&lt;br /&gt;
sudo sh get-docker.sh&lt;br /&gt;
docker swarm init --advertise-addr=IP_DO_SERVIDOR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1155</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1155"/>
		<updated>2026-02-28T20:39:11Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Hostinger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Com certeza você já ouviu uma famosa frase &#039;Na minha máquina funciona&#039;... então se na sua máquina funciona, por que não enviar ela para produção?&lt;br /&gt;
&lt;br /&gt;
Pois bem, o que o Docker faz é parecido com isto. Em termos gerais ele abstrai a infraestrutura das aplicações através de imagens prontas.&lt;br /&gt;
&lt;br /&gt;
O que temos são basicamente &#039;máquinas virtuais&#039; de baixo custo rodando somente com a infraestrutura das nossas aplicações.&lt;br /&gt;
&lt;br /&gt;
= Comandos básicos =&lt;br /&gt;
&lt;br /&gt;
- ver versao&lt;br /&gt;
&lt;br /&gt;
docker version&lt;br /&gt;
&lt;br /&gt;
- ver imagens&lt;br /&gt;
&lt;br /&gt;
docker images -a&lt;br /&gt;
docker container ls&lt;br /&gt;
&lt;br /&gt;
- start / restart&lt;br /&gt;
&lt;br /&gt;
docker start nome_imagem&lt;br /&gt;
dockr restart nome_imagem&lt;br /&gt;
 &lt;br /&gt;
- Executa um comando dentro do container demo-lucasfp&lt;br /&gt;
docker exec -it nome_imagem apt-get update&lt;br /&gt;
&lt;br /&gt;
- ver containers em execução&lt;br /&gt;
&lt;br /&gt;
docker ps&lt;br /&gt;
&lt;br /&gt;
= Hostinger = &lt;br /&gt;
&lt;br /&gt;
Processo de instalação do Docker na hostinger&lt;br /&gt;
&lt;br /&gt;
* instalar ubuntu 24.04&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1154</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1154"/>
		<updated>2026-02-28T20:38:50Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Hostinger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Com certeza você já ouviu uma famosa frase &#039;Na minha máquina funciona&#039;... então se na sua máquina funciona, por que não enviar ela para produção?&lt;br /&gt;
&lt;br /&gt;
Pois bem, o que o Docker faz é parecido com isto. Em termos gerais ele abstrai a infraestrutura das aplicações através de imagens prontas.&lt;br /&gt;
&lt;br /&gt;
O que temos são basicamente &#039;máquinas virtuais&#039; de baixo custo rodando somente com a infraestrutura das nossas aplicações.&lt;br /&gt;
&lt;br /&gt;
= Comandos básicos =&lt;br /&gt;
&lt;br /&gt;
- ver versao&lt;br /&gt;
&lt;br /&gt;
docker version&lt;br /&gt;
&lt;br /&gt;
- ver imagens&lt;br /&gt;
&lt;br /&gt;
docker images -a&lt;br /&gt;
docker container ls&lt;br /&gt;
&lt;br /&gt;
- start / restart&lt;br /&gt;
&lt;br /&gt;
docker start nome_imagem&lt;br /&gt;
dockr restart nome_imagem&lt;br /&gt;
 &lt;br /&gt;
- Executa um comando dentro do container demo-lucasfp&lt;br /&gt;
docker exec -it nome_imagem apt-get update&lt;br /&gt;
&lt;br /&gt;
- ver containers em execução&lt;br /&gt;
&lt;br /&gt;
docker ps&lt;br /&gt;
&lt;br /&gt;
= Hostinger = &lt;br /&gt;
&lt;br /&gt;
Processo de instalação do Docker na hostinger&lt;br /&gt;
&lt;br /&gt;
* instalar ubuntu 24.04&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# sudo apt update&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1153</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1153"/>
		<updated>2026-02-28T20:33:43Z</updated>

		<summary type="html">&lt;p&gt;Murilo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Com certeza você já ouviu uma famosa frase &#039;Na minha máquina funciona&#039;... então se na sua máquina funciona, por que não enviar ela para produção?&lt;br /&gt;
&lt;br /&gt;
Pois bem, o que o Docker faz é parecido com isto. Em termos gerais ele abstrai a infraestrutura das aplicações através de imagens prontas.&lt;br /&gt;
&lt;br /&gt;
O que temos são basicamente &#039;máquinas virtuais&#039; de baixo custo rodando somente com a infraestrutura das nossas aplicações.&lt;br /&gt;
&lt;br /&gt;
= Comandos básicos =&lt;br /&gt;
&lt;br /&gt;
- ver versao&lt;br /&gt;
&lt;br /&gt;
docker version&lt;br /&gt;
&lt;br /&gt;
- ver imagens&lt;br /&gt;
&lt;br /&gt;
docker images -a&lt;br /&gt;
docker container ls&lt;br /&gt;
&lt;br /&gt;
- start / restart&lt;br /&gt;
&lt;br /&gt;
docker start nome_imagem&lt;br /&gt;
dockr restart nome_imagem&lt;br /&gt;
 &lt;br /&gt;
- Executa um comando dentro do container demo-lucasfp&lt;br /&gt;
docker exec -it nome_imagem apt-get update&lt;br /&gt;
&lt;br /&gt;
- ver containers em execução&lt;br /&gt;
&lt;br /&gt;
docker ps&lt;br /&gt;
&lt;br /&gt;
= Hostinger = &lt;br /&gt;
&lt;br /&gt;
Processo de instalação do Docker na hostinger&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=PHP&amp;diff=1152</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=PHP&amp;diff=1152"/>
		<updated>2026-01-08T12:14:05Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Variávies de configuração */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Informações Gerais&lt;br /&gt;
&lt;br /&gt;
= Versionamento =&lt;br /&gt;
&lt;br /&gt;
Php - 7.0.27&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;módulos instalados&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
php -m&lt;br /&gt;
&lt;br /&gt;
php -i |grep -i memcache&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Variávies de configuração = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/var/etc/php/x.x/apache2/php.ini&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
max_input_time = 240&lt;br /&gt;
&lt;br /&gt;
memory_limit = 256M&lt;br /&gt;
&lt;br /&gt;
post_max_size = 20M	&lt;br /&gt;
&lt;br /&gt;
upload_max_filesize = 20M&lt;br /&gt;
&lt;br /&gt;
date.timezone = America/Sao_Paulo&lt;br /&gt;
&lt;br /&gt;
session.save_handler = memcached&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
session.gc_maxlifetime = 3600 # 1 hora de sessão&lt;br /&gt;
&lt;br /&gt;
session.cookie_lifetime = 0 #cookie de sessão vive enquanto o browser estiver aberto&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[curl]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
curl.cainfo = &amp;quot;/etc/ssl/cacert.pem&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[memcached]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
session.save_path = &amp;quot;url:11211&amp;quot;&lt;br /&gt;
&lt;br /&gt;
session.save_handler = memcached&lt;br /&gt;
&lt;br /&gt;
session.lazy_write = Off&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[memcached 2]&lt;br /&gt;
&lt;br /&gt;
/etc/php.d/50-memcached.ini&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
memcached.sess_locking = Off&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Dowload cacert pem]&lt;br /&gt;
&lt;br /&gt;
wget https://curl.se/ca/cacert.pem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[MySQLi]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mysqli.allow_local_infile = On&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Módulos instalados =&lt;br /&gt;
&lt;br /&gt;
php-cli php-fpm php-json php-pdo php-mysql php-zip php-gd php-mbstring php-curl &lt;br /&gt;
php-xml php-pear php-bcmath php-soap php-geoip php-fpdf php-pclzip libdbd-mysql-perl &lt;br /&gt;
default-mysql-client php-memcached&lt;br /&gt;
&lt;br /&gt;
= Composer = &lt;br /&gt;
&lt;br /&gt;
download&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
wget https://github.com/composer/composer/releases/download/1.10.19/composer.phar&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
instalar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=1.10.19&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1151</id>
		<title>AWS</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1151"/>
		<updated>2025-11-30T18:39:23Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Issabel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
= EC2 =&lt;br /&gt;
&lt;br /&gt;
Metadatas: http://169.25.169.254/latest/metadata&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/ec2-instance-metadata.html&lt;br /&gt;
&lt;br /&gt;
= Code Deploy =&lt;br /&gt;
&lt;br /&gt;
Instalar agente do CodeDeploy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt install ruby-full&lt;br /&gt;
&lt;br /&gt;
sudo apt install wget&lt;br /&gt;
&lt;br /&gt;
cd /home/user/&lt;br /&gt;
&lt;br /&gt;
wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
wget https://aws-codedeploy-sa-east-1.s3.sa-east-1.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
chmod +x ./install&lt;br /&gt;
&lt;br /&gt;
sudo ./install auto&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html&lt;br /&gt;
&lt;br /&gt;
*Verificar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent status&lt;br /&gt;
&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erro Code Deploy ==&lt;br /&gt;
&lt;br /&gt;
The ApplicationStop hook is being called from the previously installed deployment before trying to run the current deployment appspec.yml file.&lt;br /&gt;
&lt;br /&gt;
In order to prevent this from happening you&#039;ll have to remove any previously installed deployment from the server.&lt;br /&gt;
&lt;br /&gt;
Stop the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent stop  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
clear all deployments under&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/opt/codedeploy-agent/deployment-root&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= S3 =&lt;br /&gt;
&lt;br /&gt;
== Comandos uteis ==&lt;br /&gt;
&lt;br /&gt;
lista os arquivos / tamanho&lt;br /&gt;
&lt;br /&gt;
aws s3 ls s3://bucket/x --recursive --human-readable --summarize&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bucket site externo == &lt;br /&gt;
&lt;br /&gt;
* criar bucket (nome do bucket tem que ser a url)&lt;br /&gt;
* ativar hospedagem de site (redirecionamento p/objeto - index.html)&lt;br /&gt;
* colocar política base do bucket&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,&lt;br /&gt;
    &amp;quot;Statement&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Sid&amp;quot;: &amp;quot;PublicReadGetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
            &amp;quot;Principal&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
            &amp;quot;Action&amp;quot;: &amp;quot;s3:GetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Resource&amp;quot;: &amp;quot;arn:aws:s3:::endereco.site.com.br/*&amp;quot;&lt;br /&gt;
        }       &lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* criar distribuição no cloudfront&lt;br /&gt;
** Default root object: index.html&lt;br /&gt;
* solicitar certificado pelo cloudfront&lt;br /&gt;
&lt;br /&gt;
= Serverless = &lt;br /&gt;
&lt;br /&gt;
= SES = &lt;br /&gt;
&lt;br /&gt;
Sistema de envio de e-mails &lt;br /&gt;
&lt;br /&gt;
== SES Template ==&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --generate-cli-skeleton &amp;gt; arquivo.json (gera um arquivo padrão)&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses detele-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses get-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses update-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses test-render-template --template-name MyTemplate --template-data {&amp;quot;nome&amp;quot;:&amp;quot;nome_do_template&amp;quot;} --region sa-east-1&lt;br /&gt;
&lt;br /&gt;
== Envio em massa ==&lt;br /&gt;
&lt;br /&gt;
* Criar SQS fifo&lt;br /&gt;
&lt;br /&gt;
* Criar função lambda: atenção as permissões (SES,SQS)&lt;br /&gt;
&lt;br /&gt;
* Ligar fila SQS a função lambda&lt;br /&gt;
&lt;br /&gt;
* Enviar para a fila&lt;br /&gt;
&lt;br /&gt;
Envio:&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;sendTo&amp;quot;:&amp;quot;destino@provedor.com&amp;quot;,&amp;quot;TemplateData&amp;quot;:&amp;quot;{\&amp;quot;var1\&amp;quot;:\&amp;quot;valor1\&amp;quot;,\&amp;quot;var2\&amp;quot;:\&amp;quot;valor2\&amp;quot;}&amp;quot;,&amp;quot;Source&amp;quot;:&amp;quot;no-reply@dominio.com.br&amp;quot;,&amp;quot;Template&amp;quot;:&amp;quot;nomedoTemplate&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= SQS = &lt;br /&gt;
&lt;br /&gt;
Simple Queue Service - distribuição de mensagens da aplicação&lt;br /&gt;
&lt;br /&gt;
== Códigos em produção ==&lt;br /&gt;
&lt;br /&gt;
=== SMS ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendSms&lt;br /&gt;
&lt;br /&gt;
multiplas: &lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendSms&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from:&amp;quot;usuario sms&amp;quot;,&amp;quot;token&amp;quot;:&amp;quot;token do sms&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;celular de destino&amp;quot;,&lt;br /&gt;
&amp;quot;mensagem&amp;quot;:&amp;quot;mensagem enviada&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Whatsapp ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
multiplas: dothSendWhatsApp.fifo&lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from&amp;quot;:&amp;quot;aplicacao&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;destino&amp;quot;,&amp;quot;mensagem&amp;quot;:&amp;quot;o conteudo da mensagem&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= Pfsense =&lt;br /&gt;
&lt;br /&gt;
utilizado com concentrado de reede p/vpns&lt;br /&gt;
&lt;br /&gt;
== Rede publica ==&lt;br /&gt;
&lt;br /&gt;
- instancia onde esta o pfsense&lt;br /&gt;
&lt;br /&gt;
== Rede privada == &lt;br /&gt;
&lt;br /&gt;
- ec2 instancia para serviços (pabx, ad)&lt;br /&gt;
&lt;br /&gt;
- ec2 rede: verificacao de origem e destino: desativada&lt;br /&gt;
&lt;br /&gt;
= Issabel = &lt;br /&gt;
&lt;br /&gt;
Instalação servidor de telefonia&lt;br /&gt;
&lt;br /&gt;
== Configurações ==&lt;br /&gt;
&lt;br /&gt;
AMI: Rocky Linux 8 (x86_64)&lt;br /&gt;
&lt;br /&gt;
Tipo: t3.medium (2 vCPU / 4 GB) – recomendado&lt;br /&gt;
&lt;br /&gt;
Disco: 40 GB GP3&lt;br /&gt;
&lt;br /&gt;
Portas: &lt;br /&gt;
&lt;br /&gt;
5060 tpc/udp sip&lt;br /&gt;
5061 - tpc/udo sip tls&lt;br /&gt;
10000-20000 udp - rtp&lt;br /&gt;
&lt;br /&gt;
== Instalação == &lt;br /&gt;
&lt;br /&gt;
- ataulizar o sistema&lt;br /&gt;
sudo dnf update -y&lt;br /&gt;
sudo dnf install wget -y&lt;br /&gt;
&lt;br /&gt;
- Criar SWAP (AWS geralmente vem sem) (essencial para asterisk + php)&lt;br /&gt;
&lt;br /&gt;
sudo fallocate -l 2G /swapfile&lt;br /&gt;
sudo chmod 600 /swapfile&lt;br /&gt;
sudo mkswap /swapfile&lt;br /&gt;
sudo swapon /swapfile&lt;br /&gt;
echo &#039;/swapfile swap swap defaults 0 0&#039; | sudo tee -a /etc/fstab&lt;br /&gt;
&lt;br /&gt;
- Instalar o Issabel 5 no Rocky Linux 8&lt;br /&gt;
&lt;br /&gt;
= Imagens =&lt;br /&gt;
&lt;br /&gt;
Processo para criar uma imagem virtual (vmware) e subir como imagem na aws&lt;br /&gt;
&lt;br /&gt;
== Criação da imagem ==&lt;br /&gt;
&lt;br /&gt;
1 - instalar o software em uma VmWare e exportar para OVA&lt;br /&gt;
&lt;br /&gt;
2 - Enviar para o S3&lt;br /&gt;
&lt;br /&gt;
aws s3 cp issabel.ova s3://SEU_BUCKET/issabel/issabel.ova&lt;br /&gt;
&lt;br /&gt;
3 - criar arquivo json de descrição da imagem&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;Description&amp;quot;: &amp;quot;Issabel PBX CentOS7&amp;quot;,&lt;br /&gt;
  &amp;quot;Format&amp;quot;: &amp;quot;ova&amp;quot;,&lt;br /&gt;
  &amp;quot;UserBucket&amp;quot;: {&lt;br /&gt;
    &amp;quot;S3Bucket&amp;quot;: &amp;quot;SEU_BUCKET&amp;quot;,&lt;br /&gt;
    &amp;quot;S3Key&amp;quot;: &amp;quot;issabel/issabel.ova&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
4 - imporar como AMI (VM Import/EXport)&lt;br /&gt;
&lt;br /&gt;
aws ec2 import-image --description &amp;quot;Issabel PBX&amp;quot; --disk-containers file://import.json&lt;br /&gt;
&lt;br /&gt;
(leva de 5 a 45 min)&lt;br /&gt;
&lt;br /&gt;
5 - Verificar status&lt;br /&gt;
&lt;br /&gt;
aws ec2 describe-import-image-tasks&lt;br /&gt;
&lt;br /&gt;
quando terminar aparece: ImageId: ami-XXXXXXXX&lt;br /&gt;
&lt;br /&gt;
6 - Criar instancia EC2 a partir da AMI&lt;br /&gt;
&lt;br /&gt;
aws ec2 run-instances --image-id ami-XXXXXXXX --instance-type t3.medium&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1150</id>
		<title>AWS</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1150"/>
		<updated>2025-11-30T18:37:12Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Imagens */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
= EC2 =&lt;br /&gt;
&lt;br /&gt;
Metadatas: http://169.25.169.254/latest/metadata&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/ec2-instance-metadata.html&lt;br /&gt;
&lt;br /&gt;
= Code Deploy =&lt;br /&gt;
&lt;br /&gt;
Instalar agente do CodeDeploy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt install ruby-full&lt;br /&gt;
&lt;br /&gt;
sudo apt install wget&lt;br /&gt;
&lt;br /&gt;
cd /home/user/&lt;br /&gt;
&lt;br /&gt;
wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
wget https://aws-codedeploy-sa-east-1.s3.sa-east-1.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
chmod +x ./install&lt;br /&gt;
&lt;br /&gt;
sudo ./install auto&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html&lt;br /&gt;
&lt;br /&gt;
*Verificar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent status&lt;br /&gt;
&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erro Code Deploy ==&lt;br /&gt;
&lt;br /&gt;
The ApplicationStop hook is being called from the previously installed deployment before trying to run the current deployment appspec.yml file.&lt;br /&gt;
&lt;br /&gt;
In order to prevent this from happening you&#039;ll have to remove any previously installed deployment from the server.&lt;br /&gt;
&lt;br /&gt;
Stop the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent stop  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
clear all deployments under&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/opt/codedeploy-agent/deployment-root&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= S3 =&lt;br /&gt;
&lt;br /&gt;
== Comandos uteis ==&lt;br /&gt;
&lt;br /&gt;
lista os arquivos / tamanho&lt;br /&gt;
&lt;br /&gt;
aws s3 ls s3://bucket/x --recursive --human-readable --summarize&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bucket site externo == &lt;br /&gt;
&lt;br /&gt;
* criar bucket (nome do bucket tem que ser a url)&lt;br /&gt;
* ativar hospedagem de site (redirecionamento p/objeto - index.html)&lt;br /&gt;
* colocar política base do bucket&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,&lt;br /&gt;
    &amp;quot;Statement&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Sid&amp;quot;: &amp;quot;PublicReadGetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
            &amp;quot;Principal&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
            &amp;quot;Action&amp;quot;: &amp;quot;s3:GetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Resource&amp;quot;: &amp;quot;arn:aws:s3:::endereco.site.com.br/*&amp;quot;&lt;br /&gt;
        }       &lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* criar distribuição no cloudfront&lt;br /&gt;
** Default root object: index.html&lt;br /&gt;
* solicitar certificado pelo cloudfront&lt;br /&gt;
&lt;br /&gt;
= Serverless = &lt;br /&gt;
&lt;br /&gt;
= SES = &lt;br /&gt;
&lt;br /&gt;
Sistema de envio de e-mails &lt;br /&gt;
&lt;br /&gt;
== SES Template ==&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --generate-cli-skeleton &amp;gt; arquivo.json (gera um arquivo padrão)&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses detele-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses get-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses update-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses test-render-template --template-name MyTemplate --template-data {&amp;quot;nome&amp;quot;:&amp;quot;nome_do_template&amp;quot;} --region sa-east-1&lt;br /&gt;
&lt;br /&gt;
== Envio em massa ==&lt;br /&gt;
&lt;br /&gt;
* Criar SQS fifo&lt;br /&gt;
&lt;br /&gt;
* Criar função lambda: atenção as permissões (SES,SQS)&lt;br /&gt;
&lt;br /&gt;
* Ligar fila SQS a função lambda&lt;br /&gt;
&lt;br /&gt;
* Enviar para a fila&lt;br /&gt;
&lt;br /&gt;
Envio:&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;sendTo&amp;quot;:&amp;quot;destino@provedor.com&amp;quot;,&amp;quot;TemplateData&amp;quot;:&amp;quot;{\&amp;quot;var1\&amp;quot;:\&amp;quot;valor1\&amp;quot;,\&amp;quot;var2\&amp;quot;:\&amp;quot;valor2\&amp;quot;}&amp;quot;,&amp;quot;Source&amp;quot;:&amp;quot;no-reply@dominio.com.br&amp;quot;,&amp;quot;Template&amp;quot;:&amp;quot;nomedoTemplate&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= SQS = &lt;br /&gt;
&lt;br /&gt;
Simple Queue Service - distribuição de mensagens da aplicação&lt;br /&gt;
&lt;br /&gt;
== Códigos em produção ==&lt;br /&gt;
&lt;br /&gt;
=== SMS ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendSms&lt;br /&gt;
&lt;br /&gt;
multiplas: &lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendSms&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from:&amp;quot;usuario sms&amp;quot;,&amp;quot;token&amp;quot;:&amp;quot;token do sms&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;celular de destino&amp;quot;,&lt;br /&gt;
&amp;quot;mensagem&amp;quot;:&amp;quot;mensagem enviada&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Whatsapp ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
multiplas: dothSendWhatsApp.fifo&lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from&amp;quot;:&amp;quot;aplicacao&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;destino&amp;quot;,&amp;quot;mensagem&amp;quot;:&amp;quot;o conteudo da mensagem&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= Pfsense =&lt;br /&gt;
&lt;br /&gt;
utilizado com concentrado de reede p/vpns&lt;br /&gt;
&lt;br /&gt;
== Rede publica ==&lt;br /&gt;
&lt;br /&gt;
- instancia onde esta o pfsense&lt;br /&gt;
&lt;br /&gt;
== Rede privada == &lt;br /&gt;
&lt;br /&gt;
- ec2 instancia para serviços (pabx, ad)&lt;br /&gt;
&lt;br /&gt;
- ec2 rede: verificacao de origem e destino: desativada&lt;br /&gt;
&lt;br /&gt;
= Issabel = &lt;br /&gt;
&lt;br /&gt;
Instalação servidor de telefonia&lt;br /&gt;
&lt;br /&gt;
= Imagens =&lt;br /&gt;
&lt;br /&gt;
Processo para criar uma imagem virtual (vmware) e subir como imagem na aws&lt;br /&gt;
&lt;br /&gt;
== Criação da imagem ==&lt;br /&gt;
&lt;br /&gt;
1 - instalar o software em uma VmWare e exportar para OVA&lt;br /&gt;
&lt;br /&gt;
2 - Enviar para o S3&lt;br /&gt;
&lt;br /&gt;
aws s3 cp issabel.ova s3://SEU_BUCKET/issabel/issabel.ova&lt;br /&gt;
&lt;br /&gt;
3 - criar arquivo json de descrição da imagem&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;Description&amp;quot;: &amp;quot;Issabel PBX CentOS7&amp;quot;,&lt;br /&gt;
  &amp;quot;Format&amp;quot;: &amp;quot;ova&amp;quot;,&lt;br /&gt;
  &amp;quot;UserBucket&amp;quot;: {&lt;br /&gt;
    &amp;quot;S3Bucket&amp;quot;: &amp;quot;SEU_BUCKET&amp;quot;,&lt;br /&gt;
    &amp;quot;S3Key&amp;quot;: &amp;quot;issabel/issabel.ova&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
4 - imporar como AMI (VM Import/EXport)&lt;br /&gt;
&lt;br /&gt;
aws ec2 import-image --description &amp;quot;Issabel PBX&amp;quot; --disk-containers file://import.json&lt;br /&gt;
&lt;br /&gt;
(leva de 5 a 45 min)&lt;br /&gt;
&lt;br /&gt;
5 - Verificar status&lt;br /&gt;
&lt;br /&gt;
aws ec2 describe-import-image-tasks&lt;br /&gt;
&lt;br /&gt;
quando terminar aparece: ImageId: ami-XXXXXXXX&lt;br /&gt;
&lt;br /&gt;
6 - Criar instancia EC2 a partir da AMI&lt;br /&gt;
&lt;br /&gt;
aws ec2 run-instances --image-id ami-XXXXXXXX --instance-type t3.medium&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1149</id>
		<title>AWS</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1149"/>
		<updated>2025-11-30T18:13:18Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Criação da imagem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
= EC2 =&lt;br /&gt;
&lt;br /&gt;
Metadatas: http://169.25.169.254/latest/metadata&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/ec2-instance-metadata.html&lt;br /&gt;
&lt;br /&gt;
= Code Deploy =&lt;br /&gt;
&lt;br /&gt;
Instalar agente do CodeDeploy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt install ruby-full&lt;br /&gt;
&lt;br /&gt;
sudo apt install wget&lt;br /&gt;
&lt;br /&gt;
cd /home/user/&lt;br /&gt;
&lt;br /&gt;
wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
wget https://aws-codedeploy-sa-east-1.s3.sa-east-1.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
chmod +x ./install&lt;br /&gt;
&lt;br /&gt;
sudo ./install auto&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html&lt;br /&gt;
&lt;br /&gt;
*Verificar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent status&lt;br /&gt;
&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erro Code Deploy ==&lt;br /&gt;
&lt;br /&gt;
The ApplicationStop hook is being called from the previously installed deployment before trying to run the current deployment appspec.yml file.&lt;br /&gt;
&lt;br /&gt;
In order to prevent this from happening you&#039;ll have to remove any previously installed deployment from the server.&lt;br /&gt;
&lt;br /&gt;
Stop the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent stop  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
clear all deployments under&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/opt/codedeploy-agent/deployment-root&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= S3 =&lt;br /&gt;
&lt;br /&gt;
== Comandos uteis ==&lt;br /&gt;
&lt;br /&gt;
lista os arquivos / tamanho&lt;br /&gt;
&lt;br /&gt;
aws s3 ls s3://bucket/x --recursive --human-readable --summarize&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bucket site externo == &lt;br /&gt;
&lt;br /&gt;
* criar bucket (nome do bucket tem que ser a url)&lt;br /&gt;
* ativar hospedagem de site (redirecionamento p/objeto - index.html)&lt;br /&gt;
* colocar política base do bucket&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,&lt;br /&gt;
    &amp;quot;Statement&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Sid&amp;quot;: &amp;quot;PublicReadGetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
            &amp;quot;Principal&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
            &amp;quot;Action&amp;quot;: &amp;quot;s3:GetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Resource&amp;quot;: &amp;quot;arn:aws:s3:::endereco.site.com.br/*&amp;quot;&lt;br /&gt;
        }       &lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* criar distribuição no cloudfront&lt;br /&gt;
** Default root object: index.html&lt;br /&gt;
* solicitar certificado pelo cloudfront&lt;br /&gt;
&lt;br /&gt;
= Serverless = &lt;br /&gt;
&lt;br /&gt;
= SES = &lt;br /&gt;
&lt;br /&gt;
Sistema de envio de e-mails &lt;br /&gt;
&lt;br /&gt;
== SES Template ==&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --generate-cli-skeleton &amp;gt; arquivo.json (gera um arquivo padrão)&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses detele-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses get-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses update-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses test-render-template --template-name MyTemplate --template-data {&amp;quot;nome&amp;quot;:&amp;quot;nome_do_template&amp;quot;} --region sa-east-1&lt;br /&gt;
&lt;br /&gt;
== Envio em massa ==&lt;br /&gt;
&lt;br /&gt;
* Criar SQS fifo&lt;br /&gt;
&lt;br /&gt;
* Criar função lambda: atenção as permissões (SES,SQS)&lt;br /&gt;
&lt;br /&gt;
* Ligar fila SQS a função lambda&lt;br /&gt;
&lt;br /&gt;
* Enviar para a fila&lt;br /&gt;
&lt;br /&gt;
Envio:&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;sendTo&amp;quot;:&amp;quot;destino@provedor.com&amp;quot;,&amp;quot;TemplateData&amp;quot;:&amp;quot;{\&amp;quot;var1\&amp;quot;:\&amp;quot;valor1\&amp;quot;,\&amp;quot;var2\&amp;quot;:\&amp;quot;valor2\&amp;quot;}&amp;quot;,&amp;quot;Source&amp;quot;:&amp;quot;no-reply@dominio.com.br&amp;quot;,&amp;quot;Template&amp;quot;:&amp;quot;nomedoTemplate&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= SQS = &lt;br /&gt;
&lt;br /&gt;
Simple Queue Service - distribuição de mensagens da aplicação&lt;br /&gt;
&lt;br /&gt;
== Códigos em produção ==&lt;br /&gt;
&lt;br /&gt;
=== SMS ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendSms&lt;br /&gt;
&lt;br /&gt;
multiplas: &lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendSms&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from:&amp;quot;usuario sms&amp;quot;,&amp;quot;token&amp;quot;:&amp;quot;token do sms&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;celular de destino&amp;quot;,&lt;br /&gt;
&amp;quot;mensagem&amp;quot;:&amp;quot;mensagem enviada&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Whatsapp ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
multiplas: dothSendWhatsApp.fifo&lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from&amp;quot;:&amp;quot;aplicacao&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;destino&amp;quot;,&amp;quot;mensagem&amp;quot;:&amp;quot;o conteudo da mensagem&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= Pfsense =&lt;br /&gt;
&lt;br /&gt;
utilizado com concentrado de reede p/vpns&lt;br /&gt;
&lt;br /&gt;
== Rede publica ==&lt;br /&gt;
&lt;br /&gt;
- instancia onde esta o pfsense&lt;br /&gt;
&lt;br /&gt;
== Rede privada == &lt;br /&gt;
&lt;br /&gt;
- ec2 instancia para serviços (pabx, ad)&lt;br /&gt;
&lt;br /&gt;
- ec2 rede: verificacao de origem e destino: desativada&lt;br /&gt;
&lt;br /&gt;
= Imagens =&lt;br /&gt;
&lt;br /&gt;
Processo para criar uma imagem virtual (vmware) e subir como imagem na aws&lt;br /&gt;
&lt;br /&gt;
== Criação da imagem ==&lt;br /&gt;
&lt;br /&gt;
1 - instalar o software em uma VmWare e exportar para OVA&lt;br /&gt;
&lt;br /&gt;
2 - Enviar para o S3&lt;br /&gt;
&lt;br /&gt;
aws s3 cp issabel.ova s3://SEU_BUCKET/issabel/issabel.ova&lt;br /&gt;
&lt;br /&gt;
3 - criar arquivo json de descrição da imagem&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;Description&amp;quot;: &amp;quot;Issabel PBX CentOS7&amp;quot;,&lt;br /&gt;
  &amp;quot;Format&amp;quot;: &amp;quot;ova&amp;quot;,&lt;br /&gt;
  &amp;quot;UserBucket&amp;quot;: {&lt;br /&gt;
    &amp;quot;S3Bucket&amp;quot;: &amp;quot;SEU_BUCKET&amp;quot;,&lt;br /&gt;
    &amp;quot;S3Key&amp;quot;: &amp;quot;issabel/issabel.ova&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
4 - imporar como AMI (VM Import/EXport)&lt;br /&gt;
&lt;br /&gt;
aws ec2 import-image --description &amp;quot;Issabel PBX&amp;quot; --disk-containers file://import.json&lt;br /&gt;
&lt;br /&gt;
(leva de 5 a 45 min)&lt;br /&gt;
&lt;br /&gt;
5 - Verificar status&lt;br /&gt;
&lt;br /&gt;
aws ec2 describe-import-image-tasks&lt;br /&gt;
&lt;br /&gt;
quando terminar aparece: ImageId: ami-XXXXXXXX&lt;br /&gt;
&lt;br /&gt;
6 - Criar instancia EC2 a partir da AMI&lt;br /&gt;
&lt;br /&gt;
aws ec2 run-instances --image-id ami-XXXXXXXX --instance-type t3.medium&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1148</id>
		<title>AWS</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1148"/>
		<updated>2025-11-30T18:05:53Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* = Criação da imagem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
= EC2 =&lt;br /&gt;
&lt;br /&gt;
Metadatas: http://169.25.169.254/latest/metadata&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/ec2-instance-metadata.html&lt;br /&gt;
&lt;br /&gt;
= Code Deploy =&lt;br /&gt;
&lt;br /&gt;
Instalar agente do CodeDeploy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt install ruby-full&lt;br /&gt;
&lt;br /&gt;
sudo apt install wget&lt;br /&gt;
&lt;br /&gt;
cd /home/user/&lt;br /&gt;
&lt;br /&gt;
wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
wget https://aws-codedeploy-sa-east-1.s3.sa-east-1.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
chmod +x ./install&lt;br /&gt;
&lt;br /&gt;
sudo ./install auto&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html&lt;br /&gt;
&lt;br /&gt;
*Verificar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent status&lt;br /&gt;
&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erro Code Deploy ==&lt;br /&gt;
&lt;br /&gt;
The ApplicationStop hook is being called from the previously installed deployment before trying to run the current deployment appspec.yml file.&lt;br /&gt;
&lt;br /&gt;
In order to prevent this from happening you&#039;ll have to remove any previously installed deployment from the server.&lt;br /&gt;
&lt;br /&gt;
Stop the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent stop  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
clear all deployments under&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/opt/codedeploy-agent/deployment-root&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= S3 =&lt;br /&gt;
&lt;br /&gt;
== Comandos uteis ==&lt;br /&gt;
&lt;br /&gt;
lista os arquivos / tamanho&lt;br /&gt;
&lt;br /&gt;
aws s3 ls s3://bucket/x --recursive --human-readable --summarize&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bucket site externo == &lt;br /&gt;
&lt;br /&gt;
* criar bucket (nome do bucket tem que ser a url)&lt;br /&gt;
* ativar hospedagem de site (redirecionamento p/objeto - index.html)&lt;br /&gt;
* colocar política base do bucket&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,&lt;br /&gt;
    &amp;quot;Statement&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Sid&amp;quot;: &amp;quot;PublicReadGetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
            &amp;quot;Principal&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
            &amp;quot;Action&amp;quot;: &amp;quot;s3:GetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Resource&amp;quot;: &amp;quot;arn:aws:s3:::endereco.site.com.br/*&amp;quot;&lt;br /&gt;
        }       &lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* criar distribuição no cloudfront&lt;br /&gt;
** Default root object: index.html&lt;br /&gt;
* solicitar certificado pelo cloudfront&lt;br /&gt;
&lt;br /&gt;
= Serverless = &lt;br /&gt;
&lt;br /&gt;
= SES = &lt;br /&gt;
&lt;br /&gt;
Sistema de envio de e-mails &lt;br /&gt;
&lt;br /&gt;
== SES Template ==&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --generate-cli-skeleton &amp;gt; arquivo.json (gera um arquivo padrão)&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses detele-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses get-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses update-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses test-render-template --template-name MyTemplate --template-data {&amp;quot;nome&amp;quot;:&amp;quot;nome_do_template&amp;quot;} --region sa-east-1&lt;br /&gt;
&lt;br /&gt;
== Envio em massa ==&lt;br /&gt;
&lt;br /&gt;
* Criar SQS fifo&lt;br /&gt;
&lt;br /&gt;
* Criar função lambda: atenção as permissões (SES,SQS)&lt;br /&gt;
&lt;br /&gt;
* Ligar fila SQS a função lambda&lt;br /&gt;
&lt;br /&gt;
* Enviar para a fila&lt;br /&gt;
&lt;br /&gt;
Envio:&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;sendTo&amp;quot;:&amp;quot;destino@provedor.com&amp;quot;,&amp;quot;TemplateData&amp;quot;:&amp;quot;{\&amp;quot;var1\&amp;quot;:\&amp;quot;valor1\&amp;quot;,\&amp;quot;var2\&amp;quot;:\&amp;quot;valor2\&amp;quot;}&amp;quot;,&amp;quot;Source&amp;quot;:&amp;quot;no-reply@dominio.com.br&amp;quot;,&amp;quot;Template&amp;quot;:&amp;quot;nomedoTemplate&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= SQS = &lt;br /&gt;
&lt;br /&gt;
Simple Queue Service - distribuição de mensagens da aplicação&lt;br /&gt;
&lt;br /&gt;
== Códigos em produção ==&lt;br /&gt;
&lt;br /&gt;
=== SMS ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendSms&lt;br /&gt;
&lt;br /&gt;
multiplas: &lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendSms&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from:&amp;quot;usuario sms&amp;quot;,&amp;quot;token&amp;quot;:&amp;quot;token do sms&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;celular de destino&amp;quot;,&lt;br /&gt;
&amp;quot;mensagem&amp;quot;:&amp;quot;mensagem enviada&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Whatsapp ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
multiplas: dothSendWhatsApp.fifo&lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from&amp;quot;:&amp;quot;aplicacao&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;destino&amp;quot;,&amp;quot;mensagem&amp;quot;:&amp;quot;o conteudo da mensagem&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= Pfsense =&lt;br /&gt;
&lt;br /&gt;
utilizado com concentrado de reede p/vpns&lt;br /&gt;
&lt;br /&gt;
== Rede publica ==&lt;br /&gt;
&lt;br /&gt;
- instancia onde esta o pfsense&lt;br /&gt;
&lt;br /&gt;
== Rede privada == &lt;br /&gt;
&lt;br /&gt;
- ec2 instancia para serviços (pabx, ad)&lt;br /&gt;
&lt;br /&gt;
- ec2 rede: verificacao de origem e destino: desativada&lt;br /&gt;
&lt;br /&gt;
= Imagens =&lt;br /&gt;
&lt;br /&gt;
Processo para criar uma imagem virtual (vmware) e subir como imagem na aws&lt;br /&gt;
&lt;br /&gt;
== Criação da imagem ==&lt;br /&gt;
&lt;br /&gt;
1 - instalar o software em uma VmWare&lt;br /&gt;
&lt;br /&gt;
2 - Exporar para uma OVA&lt;br /&gt;
&lt;br /&gt;
3 - Enviar para o S3&lt;br /&gt;
&lt;br /&gt;
aws s3 cp issabel.ova s3://SEU_BUCKET/issabel/issabel.ova&lt;br /&gt;
&lt;br /&gt;
4 - criar arquivo json de descrição da imagem&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;Description&amp;quot;: &amp;quot;Issabel PBX CentOS7&amp;quot;,&lt;br /&gt;
  &amp;quot;Format&amp;quot;: &amp;quot;ova&amp;quot;,&lt;br /&gt;
  &amp;quot;UserBucket&amp;quot;: {&lt;br /&gt;
    &amp;quot;S3Bucket&amp;quot;: &amp;quot;SEU_BUCKET&amp;quot;,&lt;br /&gt;
    &amp;quot;S3Key&amp;quot;: &amp;quot;issabel/issabel.ova&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
4 - imporar como AMI (VM Import/EXport)&lt;br /&gt;
&lt;br /&gt;
aws ec2 import-image --description &amp;quot;Issabel PBX&amp;quot; --disk-containers file://import.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 - Verificar status&lt;br /&gt;
&lt;br /&gt;
aws ec2 describe-import-image-tasks&lt;br /&gt;
&lt;br /&gt;
6 - Criar instancia EC2 a partir da AMI&lt;br /&gt;
&lt;br /&gt;
aws ec2 run-instances --image-id ami-XXXXXXXX --instance-type t3.medium&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1147</id>
		<title>AWS</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1147"/>
		<updated>2025-11-30T18:05:45Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Imagens */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
= EC2 =&lt;br /&gt;
&lt;br /&gt;
Metadatas: http://169.25.169.254/latest/metadata&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/ec2-instance-metadata.html&lt;br /&gt;
&lt;br /&gt;
= Code Deploy =&lt;br /&gt;
&lt;br /&gt;
Instalar agente do CodeDeploy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt install ruby-full&lt;br /&gt;
&lt;br /&gt;
sudo apt install wget&lt;br /&gt;
&lt;br /&gt;
cd /home/user/&lt;br /&gt;
&lt;br /&gt;
wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
wget https://aws-codedeploy-sa-east-1.s3.sa-east-1.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
chmod +x ./install&lt;br /&gt;
&lt;br /&gt;
sudo ./install auto&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html&lt;br /&gt;
&lt;br /&gt;
*Verificar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent status&lt;br /&gt;
&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erro Code Deploy ==&lt;br /&gt;
&lt;br /&gt;
The ApplicationStop hook is being called from the previously installed deployment before trying to run the current deployment appspec.yml file.&lt;br /&gt;
&lt;br /&gt;
In order to prevent this from happening you&#039;ll have to remove any previously installed deployment from the server.&lt;br /&gt;
&lt;br /&gt;
Stop the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent stop  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
clear all deployments under&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/opt/codedeploy-agent/deployment-root&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= S3 =&lt;br /&gt;
&lt;br /&gt;
== Comandos uteis ==&lt;br /&gt;
&lt;br /&gt;
lista os arquivos / tamanho&lt;br /&gt;
&lt;br /&gt;
aws s3 ls s3://bucket/x --recursive --human-readable --summarize&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bucket site externo == &lt;br /&gt;
&lt;br /&gt;
* criar bucket (nome do bucket tem que ser a url)&lt;br /&gt;
* ativar hospedagem de site (redirecionamento p/objeto - index.html)&lt;br /&gt;
* colocar política base do bucket&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,&lt;br /&gt;
    &amp;quot;Statement&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Sid&amp;quot;: &amp;quot;PublicReadGetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
            &amp;quot;Principal&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
            &amp;quot;Action&amp;quot;: &amp;quot;s3:GetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Resource&amp;quot;: &amp;quot;arn:aws:s3:::endereco.site.com.br/*&amp;quot;&lt;br /&gt;
        }       &lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* criar distribuição no cloudfront&lt;br /&gt;
** Default root object: index.html&lt;br /&gt;
* solicitar certificado pelo cloudfront&lt;br /&gt;
&lt;br /&gt;
= Serverless = &lt;br /&gt;
&lt;br /&gt;
= SES = &lt;br /&gt;
&lt;br /&gt;
Sistema de envio de e-mails &lt;br /&gt;
&lt;br /&gt;
== SES Template ==&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --generate-cli-skeleton &amp;gt; arquivo.json (gera um arquivo padrão)&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses detele-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses get-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses update-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses test-render-template --template-name MyTemplate --template-data {&amp;quot;nome&amp;quot;:&amp;quot;nome_do_template&amp;quot;} --region sa-east-1&lt;br /&gt;
&lt;br /&gt;
== Envio em massa ==&lt;br /&gt;
&lt;br /&gt;
* Criar SQS fifo&lt;br /&gt;
&lt;br /&gt;
* Criar função lambda: atenção as permissões (SES,SQS)&lt;br /&gt;
&lt;br /&gt;
* Ligar fila SQS a função lambda&lt;br /&gt;
&lt;br /&gt;
* Enviar para a fila&lt;br /&gt;
&lt;br /&gt;
Envio:&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;sendTo&amp;quot;:&amp;quot;destino@provedor.com&amp;quot;,&amp;quot;TemplateData&amp;quot;:&amp;quot;{\&amp;quot;var1\&amp;quot;:\&amp;quot;valor1\&amp;quot;,\&amp;quot;var2\&amp;quot;:\&amp;quot;valor2\&amp;quot;}&amp;quot;,&amp;quot;Source&amp;quot;:&amp;quot;no-reply@dominio.com.br&amp;quot;,&amp;quot;Template&amp;quot;:&amp;quot;nomedoTemplate&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= SQS = &lt;br /&gt;
&lt;br /&gt;
Simple Queue Service - distribuição de mensagens da aplicação&lt;br /&gt;
&lt;br /&gt;
== Códigos em produção ==&lt;br /&gt;
&lt;br /&gt;
=== SMS ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendSms&lt;br /&gt;
&lt;br /&gt;
multiplas: &lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendSms&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from:&amp;quot;usuario sms&amp;quot;,&amp;quot;token&amp;quot;:&amp;quot;token do sms&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;celular de destino&amp;quot;,&lt;br /&gt;
&amp;quot;mensagem&amp;quot;:&amp;quot;mensagem enviada&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Whatsapp ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
multiplas: dothSendWhatsApp.fifo&lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from&amp;quot;:&amp;quot;aplicacao&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;destino&amp;quot;,&amp;quot;mensagem&amp;quot;:&amp;quot;o conteudo da mensagem&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= Pfsense =&lt;br /&gt;
&lt;br /&gt;
utilizado com concentrado de reede p/vpns&lt;br /&gt;
&lt;br /&gt;
== Rede publica ==&lt;br /&gt;
&lt;br /&gt;
- instancia onde esta o pfsense&lt;br /&gt;
&lt;br /&gt;
== Rede privada == &lt;br /&gt;
&lt;br /&gt;
- ec2 instancia para serviços (pabx, ad)&lt;br /&gt;
&lt;br /&gt;
- ec2 rede: verificacao de origem e destino: desativada&lt;br /&gt;
&lt;br /&gt;
= Imagens =&lt;br /&gt;
&lt;br /&gt;
Processo para criar uma imagem virtual (vmware) e subir como imagem na aws&lt;br /&gt;
&lt;br /&gt;
== Criação da imagem = &lt;br /&gt;
&lt;br /&gt;
1 - instalar o software em uma VmWare&lt;br /&gt;
&lt;br /&gt;
2 - Exporar para uma OVA&lt;br /&gt;
&lt;br /&gt;
3 - Enviar para o S3&lt;br /&gt;
&lt;br /&gt;
aws s3 cp issabel.ova s3://SEU_BUCKET/issabel/issabel.ova&lt;br /&gt;
&lt;br /&gt;
4 - criar arquivo json de descrição da imagem&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;Description&amp;quot;: &amp;quot;Issabel PBX CentOS7&amp;quot;,&lt;br /&gt;
  &amp;quot;Format&amp;quot;: &amp;quot;ova&amp;quot;,&lt;br /&gt;
  &amp;quot;UserBucket&amp;quot;: {&lt;br /&gt;
    &amp;quot;S3Bucket&amp;quot;: &amp;quot;SEU_BUCKET&amp;quot;,&lt;br /&gt;
    &amp;quot;S3Key&amp;quot;: &amp;quot;issabel/issabel.ova&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
4 - imporar como AMI (VM Import/EXport)&lt;br /&gt;
&lt;br /&gt;
aws ec2 import-image --description &amp;quot;Issabel PBX&amp;quot; --disk-containers file://import.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 - Verificar status&lt;br /&gt;
&lt;br /&gt;
aws ec2 describe-import-image-tasks&lt;br /&gt;
&lt;br /&gt;
6 - Criar instancia EC2 a partir da AMI&lt;br /&gt;
&lt;br /&gt;
aws ec2 run-instances --image-id ami-XXXXXXXX --instance-type t3.medium&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1146</id>
		<title>AWS</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1146"/>
		<updated>2025-11-30T17:59:41Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Imagens */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
= EC2 =&lt;br /&gt;
&lt;br /&gt;
Metadatas: http://169.25.169.254/latest/metadata&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/ec2-instance-metadata.html&lt;br /&gt;
&lt;br /&gt;
= Code Deploy =&lt;br /&gt;
&lt;br /&gt;
Instalar agente do CodeDeploy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt install ruby-full&lt;br /&gt;
&lt;br /&gt;
sudo apt install wget&lt;br /&gt;
&lt;br /&gt;
cd /home/user/&lt;br /&gt;
&lt;br /&gt;
wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
wget https://aws-codedeploy-sa-east-1.s3.sa-east-1.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
chmod +x ./install&lt;br /&gt;
&lt;br /&gt;
sudo ./install auto&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html&lt;br /&gt;
&lt;br /&gt;
*Verificar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent status&lt;br /&gt;
&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erro Code Deploy ==&lt;br /&gt;
&lt;br /&gt;
The ApplicationStop hook is being called from the previously installed deployment before trying to run the current deployment appspec.yml file.&lt;br /&gt;
&lt;br /&gt;
In order to prevent this from happening you&#039;ll have to remove any previously installed deployment from the server.&lt;br /&gt;
&lt;br /&gt;
Stop the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent stop  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
clear all deployments under&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/opt/codedeploy-agent/deployment-root&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= S3 =&lt;br /&gt;
&lt;br /&gt;
== Comandos uteis ==&lt;br /&gt;
&lt;br /&gt;
lista os arquivos / tamanho&lt;br /&gt;
&lt;br /&gt;
aws s3 ls s3://bucket/x --recursive --human-readable --summarize&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bucket site externo == &lt;br /&gt;
&lt;br /&gt;
* criar bucket (nome do bucket tem que ser a url)&lt;br /&gt;
* ativar hospedagem de site (redirecionamento p/objeto - index.html)&lt;br /&gt;
* colocar política base do bucket&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,&lt;br /&gt;
    &amp;quot;Statement&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Sid&amp;quot;: &amp;quot;PublicReadGetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
            &amp;quot;Principal&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
            &amp;quot;Action&amp;quot;: &amp;quot;s3:GetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Resource&amp;quot;: &amp;quot;arn:aws:s3:::endereco.site.com.br/*&amp;quot;&lt;br /&gt;
        }       &lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* criar distribuição no cloudfront&lt;br /&gt;
** Default root object: index.html&lt;br /&gt;
* solicitar certificado pelo cloudfront&lt;br /&gt;
&lt;br /&gt;
= Serverless = &lt;br /&gt;
&lt;br /&gt;
= SES = &lt;br /&gt;
&lt;br /&gt;
Sistema de envio de e-mails &lt;br /&gt;
&lt;br /&gt;
== SES Template ==&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --generate-cli-skeleton &amp;gt; arquivo.json (gera um arquivo padrão)&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses detele-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses get-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses update-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses test-render-template --template-name MyTemplate --template-data {&amp;quot;nome&amp;quot;:&amp;quot;nome_do_template&amp;quot;} --region sa-east-1&lt;br /&gt;
&lt;br /&gt;
== Envio em massa ==&lt;br /&gt;
&lt;br /&gt;
* Criar SQS fifo&lt;br /&gt;
&lt;br /&gt;
* Criar função lambda: atenção as permissões (SES,SQS)&lt;br /&gt;
&lt;br /&gt;
* Ligar fila SQS a função lambda&lt;br /&gt;
&lt;br /&gt;
* Enviar para a fila&lt;br /&gt;
&lt;br /&gt;
Envio:&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;sendTo&amp;quot;:&amp;quot;destino@provedor.com&amp;quot;,&amp;quot;TemplateData&amp;quot;:&amp;quot;{\&amp;quot;var1\&amp;quot;:\&amp;quot;valor1\&amp;quot;,\&amp;quot;var2\&amp;quot;:\&amp;quot;valor2\&amp;quot;}&amp;quot;,&amp;quot;Source&amp;quot;:&amp;quot;no-reply@dominio.com.br&amp;quot;,&amp;quot;Template&amp;quot;:&amp;quot;nomedoTemplate&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= SQS = &lt;br /&gt;
&lt;br /&gt;
Simple Queue Service - distribuição de mensagens da aplicação&lt;br /&gt;
&lt;br /&gt;
== Códigos em produção ==&lt;br /&gt;
&lt;br /&gt;
=== SMS ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendSms&lt;br /&gt;
&lt;br /&gt;
multiplas: &lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendSms&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from:&amp;quot;usuario sms&amp;quot;,&amp;quot;token&amp;quot;:&amp;quot;token do sms&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;celular de destino&amp;quot;,&lt;br /&gt;
&amp;quot;mensagem&amp;quot;:&amp;quot;mensagem enviada&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Whatsapp ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
multiplas: dothSendWhatsApp.fifo&lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from&amp;quot;:&amp;quot;aplicacao&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;destino&amp;quot;,&amp;quot;mensagem&amp;quot;:&amp;quot;o conteudo da mensagem&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= Pfsense =&lt;br /&gt;
&lt;br /&gt;
utilizado com concentrado de reede p/vpns&lt;br /&gt;
&lt;br /&gt;
== Rede publica ==&lt;br /&gt;
&lt;br /&gt;
- instancia onde esta o pfsense&lt;br /&gt;
&lt;br /&gt;
== Rede privada == &lt;br /&gt;
&lt;br /&gt;
- ec2 instancia para serviços (pabx, ad)&lt;br /&gt;
&lt;br /&gt;
- ec2 rede: verificacao de origem e destino: desativada&lt;br /&gt;
&lt;br /&gt;
= Imagens =&lt;br /&gt;
&lt;br /&gt;
- criar uma imagem virtual e subir para a AWS&lt;br /&gt;
&lt;br /&gt;
1 - instalar o software em uma VmWare&lt;br /&gt;
&lt;br /&gt;
2 - Exporar para uma OVA&lt;br /&gt;
&lt;br /&gt;
3 - Enviar para o S3&lt;br /&gt;
&lt;br /&gt;
aws s3 cp issabel.ova s3://SEU_BUCKET/issabel/issabel.ova&lt;br /&gt;
&lt;br /&gt;
4 - criar arquivo json de descrição da imagem&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;Description&amp;quot;: &amp;quot;Issabel PBX CentOS7&amp;quot;,&lt;br /&gt;
  &amp;quot;Format&amp;quot;: &amp;quot;ova&amp;quot;,&lt;br /&gt;
  &amp;quot;UserBucket&amp;quot;: {&lt;br /&gt;
    &amp;quot;S3Bucket&amp;quot;: &amp;quot;SEU_BUCKET&amp;quot;,&lt;br /&gt;
    &amp;quot;S3Key&amp;quot;: &amp;quot;issabel/issabel.ova&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
4 - imporar como AMI (VM Import/EXport)&lt;br /&gt;
&lt;br /&gt;
aws ec2 import-image --description &amp;quot;Issabel PBX&amp;quot; --disk-containers file://import.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 - Verificar status&lt;br /&gt;
&lt;br /&gt;
aws ec2 describe-import-image-tasks&lt;br /&gt;
&lt;br /&gt;
6 - Criar instancia EC2 a partir da AMI&lt;br /&gt;
&lt;br /&gt;
aws ec2 run-instances --image-id ami-XXXXXXXX --instance-type t3.medium&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1145</id>
		<title>AWS</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1145"/>
		<updated>2025-11-30T17:56:48Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Pfsense */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
= EC2 =&lt;br /&gt;
&lt;br /&gt;
Metadatas: http://169.25.169.254/latest/metadata&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/ec2-instance-metadata.html&lt;br /&gt;
&lt;br /&gt;
= Code Deploy =&lt;br /&gt;
&lt;br /&gt;
Instalar agente do CodeDeploy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt install ruby-full&lt;br /&gt;
&lt;br /&gt;
sudo apt install wget&lt;br /&gt;
&lt;br /&gt;
cd /home/user/&lt;br /&gt;
&lt;br /&gt;
wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
wget https://aws-codedeploy-sa-east-1.s3.sa-east-1.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
chmod +x ./install&lt;br /&gt;
&lt;br /&gt;
sudo ./install auto&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html&lt;br /&gt;
&lt;br /&gt;
*Verificar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent status&lt;br /&gt;
&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erro Code Deploy ==&lt;br /&gt;
&lt;br /&gt;
The ApplicationStop hook is being called from the previously installed deployment before trying to run the current deployment appspec.yml file.&lt;br /&gt;
&lt;br /&gt;
In order to prevent this from happening you&#039;ll have to remove any previously installed deployment from the server.&lt;br /&gt;
&lt;br /&gt;
Stop the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent stop  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
clear all deployments under&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/opt/codedeploy-agent/deployment-root&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= S3 =&lt;br /&gt;
&lt;br /&gt;
== Comandos uteis ==&lt;br /&gt;
&lt;br /&gt;
lista os arquivos / tamanho&lt;br /&gt;
&lt;br /&gt;
aws s3 ls s3://bucket/x --recursive --human-readable --summarize&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bucket site externo == &lt;br /&gt;
&lt;br /&gt;
* criar bucket (nome do bucket tem que ser a url)&lt;br /&gt;
* ativar hospedagem de site (redirecionamento p/objeto - index.html)&lt;br /&gt;
* colocar política base do bucket&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,&lt;br /&gt;
    &amp;quot;Statement&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Sid&amp;quot;: &amp;quot;PublicReadGetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
            &amp;quot;Principal&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
            &amp;quot;Action&amp;quot;: &amp;quot;s3:GetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Resource&amp;quot;: &amp;quot;arn:aws:s3:::endereco.site.com.br/*&amp;quot;&lt;br /&gt;
        }       &lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* criar distribuição no cloudfront&lt;br /&gt;
** Default root object: index.html&lt;br /&gt;
* solicitar certificado pelo cloudfront&lt;br /&gt;
&lt;br /&gt;
= Serverless = &lt;br /&gt;
&lt;br /&gt;
= SES = &lt;br /&gt;
&lt;br /&gt;
Sistema de envio de e-mails &lt;br /&gt;
&lt;br /&gt;
== SES Template ==&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --generate-cli-skeleton &amp;gt; arquivo.json (gera um arquivo padrão)&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses detele-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses get-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses update-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses test-render-template --template-name MyTemplate --template-data {&amp;quot;nome&amp;quot;:&amp;quot;nome_do_template&amp;quot;} --region sa-east-1&lt;br /&gt;
&lt;br /&gt;
== Envio em massa ==&lt;br /&gt;
&lt;br /&gt;
* Criar SQS fifo&lt;br /&gt;
&lt;br /&gt;
* Criar função lambda: atenção as permissões (SES,SQS)&lt;br /&gt;
&lt;br /&gt;
* Ligar fila SQS a função lambda&lt;br /&gt;
&lt;br /&gt;
* Enviar para a fila&lt;br /&gt;
&lt;br /&gt;
Envio:&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;sendTo&amp;quot;:&amp;quot;destino@provedor.com&amp;quot;,&amp;quot;TemplateData&amp;quot;:&amp;quot;{\&amp;quot;var1\&amp;quot;:\&amp;quot;valor1\&amp;quot;,\&amp;quot;var2\&amp;quot;:\&amp;quot;valor2\&amp;quot;}&amp;quot;,&amp;quot;Source&amp;quot;:&amp;quot;no-reply@dominio.com.br&amp;quot;,&amp;quot;Template&amp;quot;:&amp;quot;nomedoTemplate&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= SQS = &lt;br /&gt;
&lt;br /&gt;
Simple Queue Service - distribuição de mensagens da aplicação&lt;br /&gt;
&lt;br /&gt;
== Códigos em produção ==&lt;br /&gt;
&lt;br /&gt;
=== SMS ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendSms&lt;br /&gt;
&lt;br /&gt;
multiplas: &lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendSms&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from:&amp;quot;usuario sms&amp;quot;,&amp;quot;token&amp;quot;:&amp;quot;token do sms&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;celular de destino&amp;quot;,&lt;br /&gt;
&amp;quot;mensagem&amp;quot;:&amp;quot;mensagem enviada&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Whatsapp ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
multiplas: dothSendWhatsApp.fifo&lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from&amp;quot;:&amp;quot;aplicacao&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;destino&amp;quot;,&amp;quot;mensagem&amp;quot;:&amp;quot;o conteudo da mensagem&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= Pfsense =&lt;br /&gt;
&lt;br /&gt;
utilizado com concentrado de reede p/vpns&lt;br /&gt;
&lt;br /&gt;
== Rede publica ==&lt;br /&gt;
&lt;br /&gt;
- instancia onde esta o pfsense&lt;br /&gt;
&lt;br /&gt;
== Rede privada == &lt;br /&gt;
&lt;br /&gt;
- ec2 instancia para serviços (pabx, ad)&lt;br /&gt;
&lt;br /&gt;
- ec2 rede: verificacao de origem e destino: desativada&lt;br /&gt;
&lt;br /&gt;
= Imagens =&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1144</id>
		<title>AWS</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1144"/>
		<updated>2025-11-30T16:29:53Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Pfsense */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
= EC2 =&lt;br /&gt;
&lt;br /&gt;
Metadatas: http://169.25.169.254/latest/metadata&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/ec2-instance-metadata.html&lt;br /&gt;
&lt;br /&gt;
= Code Deploy =&lt;br /&gt;
&lt;br /&gt;
Instalar agente do CodeDeploy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt install ruby-full&lt;br /&gt;
&lt;br /&gt;
sudo apt install wget&lt;br /&gt;
&lt;br /&gt;
cd /home/user/&lt;br /&gt;
&lt;br /&gt;
wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
wget https://aws-codedeploy-sa-east-1.s3.sa-east-1.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
chmod +x ./install&lt;br /&gt;
&lt;br /&gt;
sudo ./install auto&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html&lt;br /&gt;
&lt;br /&gt;
*Verificar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent status&lt;br /&gt;
&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erro Code Deploy ==&lt;br /&gt;
&lt;br /&gt;
The ApplicationStop hook is being called from the previously installed deployment before trying to run the current deployment appspec.yml file.&lt;br /&gt;
&lt;br /&gt;
In order to prevent this from happening you&#039;ll have to remove any previously installed deployment from the server.&lt;br /&gt;
&lt;br /&gt;
Stop the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent stop  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
clear all deployments under&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/opt/codedeploy-agent/deployment-root&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= S3 =&lt;br /&gt;
&lt;br /&gt;
== Comandos uteis ==&lt;br /&gt;
&lt;br /&gt;
lista os arquivos / tamanho&lt;br /&gt;
&lt;br /&gt;
aws s3 ls s3://bucket/x --recursive --human-readable --summarize&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bucket site externo == &lt;br /&gt;
&lt;br /&gt;
* criar bucket (nome do bucket tem que ser a url)&lt;br /&gt;
* ativar hospedagem de site (redirecionamento p/objeto - index.html)&lt;br /&gt;
* colocar política base do bucket&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,&lt;br /&gt;
    &amp;quot;Statement&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Sid&amp;quot;: &amp;quot;PublicReadGetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
            &amp;quot;Principal&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
            &amp;quot;Action&amp;quot;: &amp;quot;s3:GetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Resource&amp;quot;: &amp;quot;arn:aws:s3:::endereco.site.com.br/*&amp;quot;&lt;br /&gt;
        }       &lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* criar distribuição no cloudfront&lt;br /&gt;
** Default root object: index.html&lt;br /&gt;
* solicitar certificado pelo cloudfront&lt;br /&gt;
&lt;br /&gt;
= Serverless = &lt;br /&gt;
&lt;br /&gt;
= SES = &lt;br /&gt;
&lt;br /&gt;
Sistema de envio de e-mails &lt;br /&gt;
&lt;br /&gt;
== SES Template ==&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --generate-cli-skeleton &amp;gt; arquivo.json (gera um arquivo padrão)&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses detele-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses get-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses update-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses test-render-template --template-name MyTemplate --template-data {&amp;quot;nome&amp;quot;:&amp;quot;nome_do_template&amp;quot;} --region sa-east-1&lt;br /&gt;
&lt;br /&gt;
== Envio em massa ==&lt;br /&gt;
&lt;br /&gt;
* Criar SQS fifo&lt;br /&gt;
&lt;br /&gt;
* Criar função lambda: atenção as permissões (SES,SQS)&lt;br /&gt;
&lt;br /&gt;
* Ligar fila SQS a função lambda&lt;br /&gt;
&lt;br /&gt;
* Enviar para a fila&lt;br /&gt;
&lt;br /&gt;
Envio:&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;sendTo&amp;quot;:&amp;quot;destino@provedor.com&amp;quot;,&amp;quot;TemplateData&amp;quot;:&amp;quot;{\&amp;quot;var1\&amp;quot;:\&amp;quot;valor1\&amp;quot;,\&amp;quot;var2\&amp;quot;:\&amp;quot;valor2\&amp;quot;}&amp;quot;,&amp;quot;Source&amp;quot;:&amp;quot;no-reply@dominio.com.br&amp;quot;,&amp;quot;Template&amp;quot;:&amp;quot;nomedoTemplate&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= SQS = &lt;br /&gt;
&lt;br /&gt;
Simple Queue Service - distribuição de mensagens da aplicação&lt;br /&gt;
&lt;br /&gt;
== Códigos em produção ==&lt;br /&gt;
&lt;br /&gt;
=== SMS ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendSms&lt;br /&gt;
&lt;br /&gt;
multiplas: &lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendSms&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from:&amp;quot;usuario sms&amp;quot;,&amp;quot;token&amp;quot;:&amp;quot;token do sms&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;celular de destino&amp;quot;,&lt;br /&gt;
&amp;quot;mensagem&amp;quot;:&amp;quot;mensagem enviada&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Whatsapp ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
multiplas: dothSendWhatsApp.fifo&lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from&amp;quot;:&amp;quot;aplicacao&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;destino&amp;quot;,&amp;quot;mensagem&amp;quot;:&amp;quot;o conteudo da mensagem&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= Pfsense =&lt;br /&gt;
&lt;br /&gt;
utilizado com concentrado de reede p/vpns&lt;br /&gt;
&lt;br /&gt;
== Rede publica ==&lt;br /&gt;
&lt;br /&gt;
- instancia onde esta o pfsense&lt;br /&gt;
&lt;br /&gt;
== Rede privada == &lt;br /&gt;
&lt;br /&gt;
- ec2 instancia para serviços (pabx, ad)&lt;br /&gt;
&lt;br /&gt;
- ec2 rede: verificacao de origem e destino: desativada&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1143</id>
		<title>AWS</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1143"/>
		<updated>2025-11-30T16:28:32Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* 2 redes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
= EC2 =&lt;br /&gt;
&lt;br /&gt;
Metadatas: http://169.25.169.254/latest/metadata&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/ec2-instance-metadata.html&lt;br /&gt;
&lt;br /&gt;
= Code Deploy =&lt;br /&gt;
&lt;br /&gt;
Instalar agente do CodeDeploy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt install ruby-full&lt;br /&gt;
&lt;br /&gt;
sudo apt install wget&lt;br /&gt;
&lt;br /&gt;
cd /home/user/&lt;br /&gt;
&lt;br /&gt;
wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
wget https://aws-codedeploy-sa-east-1.s3.sa-east-1.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
chmod +x ./install&lt;br /&gt;
&lt;br /&gt;
sudo ./install auto&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html&lt;br /&gt;
&lt;br /&gt;
*Verificar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent status&lt;br /&gt;
&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erro Code Deploy ==&lt;br /&gt;
&lt;br /&gt;
The ApplicationStop hook is being called from the previously installed deployment before trying to run the current deployment appspec.yml file.&lt;br /&gt;
&lt;br /&gt;
In order to prevent this from happening you&#039;ll have to remove any previously installed deployment from the server.&lt;br /&gt;
&lt;br /&gt;
Stop the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent stop  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
clear all deployments under&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/opt/codedeploy-agent/deployment-root&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= S3 =&lt;br /&gt;
&lt;br /&gt;
== Comandos uteis ==&lt;br /&gt;
&lt;br /&gt;
lista os arquivos / tamanho&lt;br /&gt;
&lt;br /&gt;
aws s3 ls s3://bucket/x --recursive --human-readable --summarize&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bucket site externo == &lt;br /&gt;
&lt;br /&gt;
* criar bucket (nome do bucket tem que ser a url)&lt;br /&gt;
* ativar hospedagem de site (redirecionamento p/objeto - index.html)&lt;br /&gt;
* colocar política base do bucket&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,&lt;br /&gt;
    &amp;quot;Statement&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Sid&amp;quot;: &amp;quot;PublicReadGetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
            &amp;quot;Principal&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
            &amp;quot;Action&amp;quot;: &amp;quot;s3:GetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Resource&amp;quot;: &amp;quot;arn:aws:s3:::endereco.site.com.br/*&amp;quot;&lt;br /&gt;
        }       &lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* criar distribuição no cloudfront&lt;br /&gt;
** Default root object: index.html&lt;br /&gt;
* solicitar certificado pelo cloudfront&lt;br /&gt;
&lt;br /&gt;
= Serverless = &lt;br /&gt;
&lt;br /&gt;
= SES = &lt;br /&gt;
&lt;br /&gt;
Sistema de envio de e-mails &lt;br /&gt;
&lt;br /&gt;
== SES Template ==&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --generate-cli-skeleton &amp;gt; arquivo.json (gera um arquivo padrão)&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses detele-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses get-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses update-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses test-render-template --template-name MyTemplate --template-data {&amp;quot;nome&amp;quot;:&amp;quot;nome_do_template&amp;quot;} --region sa-east-1&lt;br /&gt;
&lt;br /&gt;
== Envio em massa ==&lt;br /&gt;
&lt;br /&gt;
* Criar SQS fifo&lt;br /&gt;
&lt;br /&gt;
* Criar função lambda: atenção as permissões (SES,SQS)&lt;br /&gt;
&lt;br /&gt;
* Ligar fila SQS a função lambda&lt;br /&gt;
&lt;br /&gt;
* Enviar para a fila&lt;br /&gt;
&lt;br /&gt;
Envio:&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;sendTo&amp;quot;:&amp;quot;destino@provedor.com&amp;quot;,&amp;quot;TemplateData&amp;quot;:&amp;quot;{\&amp;quot;var1\&amp;quot;:\&amp;quot;valor1\&amp;quot;,\&amp;quot;var2\&amp;quot;:\&amp;quot;valor2\&amp;quot;}&amp;quot;,&amp;quot;Source&amp;quot;:&amp;quot;no-reply@dominio.com.br&amp;quot;,&amp;quot;Template&amp;quot;:&amp;quot;nomedoTemplate&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= SQS = &lt;br /&gt;
&lt;br /&gt;
Simple Queue Service - distribuição de mensagens da aplicação&lt;br /&gt;
&lt;br /&gt;
== Códigos em produção ==&lt;br /&gt;
&lt;br /&gt;
=== SMS ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendSms&lt;br /&gt;
&lt;br /&gt;
multiplas: &lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendSms&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from:&amp;quot;usuario sms&amp;quot;,&amp;quot;token&amp;quot;:&amp;quot;token do sms&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;celular de destino&amp;quot;,&lt;br /&gt;
&amp;quot;mensagem&amp;quot;:&amp;quot;mensagem enviada&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Whatsapp ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
multiplas: dothSendWhatsApp.fifo&lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from&amp;quot;:&amp;quot;aplicacao&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;destino&amp;quot;,&amp;quot;mensagem&amp;quot;:&amp;quot;o conteudo da mensagem&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= Pfsense =&lt;br /&gt;
&lt;br /&gt;
Rede publica&lt;br /&gt;
&lt;br /&gt;
== Rede privada == &lt;br /&gt;
&lt;br /&gt;
- ec2 rede: verificacao de origem e destino: desativada&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1142</id>
		<title>AWS</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=AWS&amp;diff=1142"/>
		<updated>2025-11-30T16:27:25Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* SQS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
= EC2 =&lt;br /&gt;
&lt;br /&gt;
Metadatas: http://169.25.169.254/latest/metadata&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/ec2-instance-metadata.html&lt;br /&gt;
&lt;br /&gt;
= Code Deploy =&lt;br /&gt;
&lt;br /&gt;
Instalar agente do CodeDeploy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt install ruby-full&lt;br /&gt;
&lt;br /&gt;
sudo apt install wget&lt;br /&gt;
&lt;br /&gt;
cd /home/user/&lt;br /&gt;
&lt;br /&gt;
wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
wget https://aws-codedeploy-sa-east-1.s3.sa-east-1.amazonaws.com/latest/install&lt;br /&gt;
&lt;br /&gt;
chmod +x ./install&lt;br /&gt;
&lt;br /&gt;
sudo ./install auto&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html&lt;br /&gt;
&lt;br /&gt;
*Verificar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent status&lt;br /&gt;
&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erro Code Deploy ==&lt;br /&gt;
&lt;br /&gt;
The ApplicationStop hook is being called from the previously installed deployment before trying to run the current deployment appspec.yml file.&lt;br /&gt;
&lt;br /&gt;
In order to prevent this from happening you&#039;ll have to remove any previously installed deployment from the server.&lt;br /&gt;
&lt;br /&gt;
Stop the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent stop  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
clear all deployments under&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/opt/codedeploy-agent/deployment-root&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart the code deploy agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service codedeploy-agent start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= S3 =&lt;br /&gt;
&lt;br /&gt;
== Comandos uteis ==&lt;br /&gt;
&lt;br /&gt;
lista os arquivos / tamanho&lt;br /&gt;
&lt;br /&gt;
aws s3 ls s3://bucket/x --recursive --human-readable --summarize&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bucket site externo == &lt;br /&gt;
&lt;br /&gt;
* criar bucket (nome do bucket tem que ser a url)&lt;br /&gt;
* ativar hospedagem de site (redirecionamento p/objeto - index.html)&lt;br /&gt;
* colocar política base do bucket&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,&lt;br /&gt;
    &amp;quot;Statement&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Sid&amp;quot;: &amp;quot;PublicReadGetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
            &amp;quot;Principal&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
            &amp;quot;Action&amp;quot;: &amp;quot;s3:GetObject&amp;quot;,&lt;br /&gt;
            &amp;quot;Resource&amp;quot;: &amp;quot;arn:aws:s3:::endereco.site.com.br/*&amp;quot;&lt;br /&gt;
        }       &lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* criar distribuição no cloudfront&lt;br /&gt;
** Default root object: index.html&lt;br /&gt;
* solicitar certificado pelo cloudfront&lt;br /&gt;
&lt;br /&gt;
= Serverless = &lt;br /&gt;
&lt;br /&gt;
= SES = &lt;br /&gt;
&lt;br /&gt;
Sistema de envio de e-mails &lt;br /&gt;
&lt;br /&gt;
== SES Template ==&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --generate-cli-skeleton &amp;gt; arquivo.json (gera um arquivo padrão)&lt;br /&gt;
&lt;br /&gt;
aws ses create-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses detele-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses get-template --template-name MyTemplate&lt;br /&gt;
&lt;br /&gt;
aws ses update-template --cli-input-json file://file.json&lt;br /&gt;
&lt;br /&gt;
aws ses test-render-template --template-name MyTemplate --template-data {&amp;quot;nome&amp;quot;:&amp;quot;nome_do_template&amp;quot;} --region sa-east-1&lt;br /&gt;
&lt;br /&gt;
== Envio em massa ==&lt;br /&gt;
&lt;br /&gt;
* Criar SQS fifo&lt;br /&gt;
&lt;br /&gt;
* Criar função lambda: atenção as permissões (SES,SQS)&lt;br /&gt;
&lt;br /&gt;
* Ligar fila SQS a função lambda&lt;br /&gt;
&lt;br /&gt;
* Enviar para a fila&lt;br /&gt;
&lt;br /&gt;
Envio:&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;sendTo&amp;quot;:&amp;quot;destino@provedor.com&amp;quot;,&amp;quot;TemplateData&amp;quot;:&amp;quot;{\&amp;quot;var1\&amp;quot;:\&amp;quot;valor1\&amp;quot;,\&amp;quot;var2\&amp;quot;:\&amp;quot;valor2\&amp;quot;}&amp;quot;,&amp;quot;Source&amp;quot;:&amp;quot;no-reply@dominio.com.br&amp;quot;,&amp;quot;Template&amp;quot;:&amp;quot;nomedoTemplate&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= SQS = &lt;br /&gt;
&lt;br /&gt;
Simple Queue Service - distribuição de mensagens da aplicação&lt;br /&gt;
&lt;br /&gt;
== Códigos em produção ==&lt;br /&gt;
&lt;br /&gt;
=== SMS ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendSms&lt;br /&gt;
&lt;br /&gt;
multiplas: &lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendSms&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from:&amp;quot;usuario sms&amp;quot;,&amp;quot;token&amp;quot;:&amp;quot;token do sms&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;celular de destino&amp;quot;,&lt;br /&gt;
&amp;quot;mensagem&amp;quot;:&amp;quot;mensagem enviada&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Whatsapp ===&lt;br /&gt;
&lt;br /&gt;
unica: dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
multiplas: dothSendWhatsApp.fifo&lt;br /&gt;
&lt;br /&gt;
Destino: Lambda - dothSendWhatsApp&lt;br /&gt;
&lt;br /&gt;
conteudo: {&amp;quot;from&amp;quot;:&amp;quot;aplicacao&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;destino&amp;quot;,&amp;quot;mensagem&amp;quot;:&amp;quot;o conteudo da mensagem&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
= 2 redes =&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Linux&amp;diff=1141</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Linux&amp;diff=1141"/>
		<updated>2025-11-28T15:20:27Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Backup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
comandos uteis linux&lt;br /&gt;
&lt;br /&gt;
= Geral =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Ver ip externo &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
wget -qO- ifconfig.co/ip&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Listar links simbolicos&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
find . -type l -ls&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reload Bash&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
source ~/.bashrc&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verificar espaço&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
du -shc *&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vim &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
(ctrl v mouse)&lt;br /&gt;
&lt;br /&gt;
/.vimrc&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
set mouse-=a&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Setar timezone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo timedatectl set-timezone America/Sao_Paulo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tar&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
tar -cvf sampleArchive.tar /sampleArchive&lt;br /&gt;
&lt;br /&gt;
tar -xvf sampleArchive.tar&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Status e Versões &#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
service --status-all&lt;br /&gt;
&lt;br /&gt;
java -version&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Logs &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
journalctl -xe&lt;br /&gt;
&lt;br /&gt;
journalctl -f -e -u nome_app&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; limpa os logs com  + de 10 dias&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 journalctl --vacuum-time=10d&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Composer = &lt;br /&gt;
&lt;br /&gt;
Download&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
curl -sS https://getcomposer.org/installer -o composer-setup.php&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instalar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Crontab = &lt;br /&gt;
&lt;br /&gt;
*ver log: /var/mail/&lt;br /&gt;
&lt;br /&gt;
= Find =&lt;br /&gt;
&lt;br /&gt;
Dentro do ditetorio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; find . &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Somente diretorios&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-type d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Somente arquivos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-type f&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
com permissoes diferentes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;find / -type f ! -perm 777&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Arquivos acessados nas ultimas 12 horas&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
find . -type f -ctime -0.5 -exec ls -l {} \;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Metabase =&lt;br /&gt;
&lt;br /&gt;
BI de dados&lt;br /&gt;
&lt;br /&gt;
== Instalação ==&lt;br /&gt;
&lt;br /&gt;
Processo de instalação do metabase&lt;br /&gt;
&lt;br /&gt;
https://www.metabase.com/docs/latest/installation-and-operation/running-metabase-on-debian&lt;br /&gt;
&lt;br /&gt;
https://www.letscloud.io/community/how-to-install-metabase-on-ubuntu-20-04-as-a-service-with-nginx&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Antes de tudo&lt;br /&gt;
&lt;br /&gt;
* apt-get update&lt;br /&gt;
* apt-get install vim&lt;br /&gt;
* apt-get install rsyslog&lt;br /&gt;
* apt install snapd&lt;br /&gt;
* apt install -y default-jdk&lt;br /&gt;
* java -version&lt;br /&gt;
* timedatectl set-timezone America/Sao_Paulo&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Maria Db &lt;br /&gt;
&lt;br /&gt;
apt install mariadb-server&lt;br /&gt;
&lt;br /&gt;
systemctl start mariadb&lt;br /&gt;
&lt;br /&gt;
systemctl enable mariadb&lt;br /&gt;
&lt;br /&gt;
mysql_secure_installation&lt;br /&gt;
&lt;br /&gt;
mysql -u root&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
CREATE database metabase;&lt;br /&gt;
&lt;br /&gt;
CREATE USER &#039;metabase&#039;@&#039;%&#039; IDENTIFIED BY &#039;senha&#039;;&lt;br /&gt;
&lt;br /&gt;
GRANT ALL PRIVILEGES ON metabase.* to &#039;metabase&#039;@&#039;%&#039;;&lt;br /&gt;
&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Ngix&lt;br /&gt;
&lt;br /&gt;
apt install nginx&lt;br /&gt;
&lt;br /&gt;
vi /etc/nginx/sites-available/metabase&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# sample nginx.conf&lt;br /&gt;
# proxy requests to Metabase instance&lt;br /&gt;
server {&lt;br /&gt;
  listen 80;&lt;br /&gt;
  listen [::]:80;&lt;br /&gt;
  server_name your.domain.com;&lt;br /&gt;
  location / {&lt;br /&gt;
    proxy_pass http://127.0.0.1:3000;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ln -s /etc/nginx/sites-available/metabase /etc/nginx/sites-enabled/metabase&lt;br /&gt;
&lt;br /&gt;
nginx -t&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; SSL &lt;br /&gt;
&lt;br /&gt;
sudo snap install --classic certbot&lt;br /&gt;
&lt;br /&gt;
sudo ln -s /snap/bin/certbot /usr/bin/certbot&lt;br /&gt;
&lt;br /&gt;
sudo certbot --nginx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Linux&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo groupadd -r metabase&lt;br /&gt;
&lt;br /&gt;
sudo useradd -r -s /bin/false -g metabase metabase&lt;br /&gt;
&lt;br /&gt;
sudo chown -R metabase:metabase /home/metabase/&lt;br /&gt;
&lt;br /&gt;
sudo touch /var/log/metabase.log&lt;br /&gt;
&lt;br /&gt;
sudo chown syslog:adm /var/log/metabase.log (no)&lt;br /&gt;
&lt;br /&gt;
sudo touch /etc/default/metabase&lt;br /&gt;
&lt;br /&gt;
sudo chmod 640 /etc/default/metabase&lt;br /&gt;
&lt;br /&gt;
sudo touch /etc/systemd/system/metabase.service&lt;br /&gt;
&lt;br /&gt;
vi /etc/systemd/system/metabase.service&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
if $programname == &#039;metabase&#039; then /var/log/metabase.log&lt;br /&gt;
&lt;br /&gt;
&amp;amp; stop&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sudo systemctl restart rsyslog.service&lt;br /&gt;
&lt;br /&gt;
sudo vi /etc/default/metabase&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
MB_PASSWORD_COMPLEXITY=normal #&amp;lt;weak|normal|strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MB_PASSWORD_LENGTH=10&lt;br /&gt;
&lt;br /&gt;
#MB_JETTY_HOST=&amp;lt;0.0.0.0&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#MB_JETTY_PORT=&amp;lt;12345&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MB_DB_TYPE=mysql #&amp;lt;postgres|mysql|h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MB_DB_DBNAME= your_metabase_db_name&lt;br /&gt;
&lt;br /&gt;
MB_DB_PORT=3306&lt;br /&gt;
&lt;br /&gt;
MB_DB_USER=your_metabase_db_user&lt;br /&gt;
&lt;br /&gt;
MB_DB_PASS=ssshhhh&lt;br /&gt;
&lt;br /&gt;
MB_DB_HOST=localhost&lt;br /&gt;
&lt;br /&gt;
MB_EMOJI_IN_LOGS=true #&amp;lt;true|false&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# any other env vars you want available to Metabase&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sudo systemctl daemon-reload&lt;br /&gt;
&lt;br /&gt;
sudo systemctl start metabase.service&lt;br /&gt;
&lt;br /&gt;
sudo systemctl status metabase.service&lt;br /&gt;
&lt;br /&gt;
sudo systemctl enable metabase.service&lt;br /&gt;
&lt;br /&gt;
== Atualização == &lt;br /&gt;
&lt;br /&gt;
* Stop metabase&lt;br /&gt;
* Download da nova versão e backup anterior&lt;br /&gt;
* Copia para pasta&lt;br /&gt;
* Start e reinicia&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo systemctl stop metabase.service&lt;br /&gt;
&lt;br /&gt;
sudo systemctl start metabase.service&lt;br /&gt;
&lt;br /&gt;
sudo systemctl status metabase.service&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Manutenção == &lt;br /&gt;
&lt;br /&gt;
ver status: ver status&lt;br /&gt;
service --status-all&lt;br /&gt;
&lt;br /&gt;
reload daemon&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
journalctl -xe&lt;br /&gt;
&lt;br /&gt;
journalctl -f -e -u metabase&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
java -version&lt;br /&gt;
&lt;br /&gt;
== Banco de Dados == &lt;br /&gt;
&lt;br /&gt;
#Criação do banco&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
CREATE DATABASE metabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Configuração&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
export MB_DB_TYPE=mysql&lt;br /&gt;
&lt;br /&gt;
export MB_DB_DBNAME=metabase&lt;br /&gt;
&lt;br /&gt;
export MB_DB_PORT=3306&lt;br /&gt;
&lt;br /&gt;
export MB_DB_USER=&amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
export MB_DB_PASS=&amp;lt;password&amp;gt;&lt;br /&gt;
&lt;br /&gt;
export MB_DB_HOST=localhost&lt;br /&gt;
&lt;br /&gt;
java -jar metabase.jar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Backup ==&lt;br /&gt;
&lt;br /&gt;
== Docker ==&lt;br /&gt;
&lt;br /&gt;
Processo de uso do metabase via docker&lt;br /&gt;
&lt;br /&gt;
=== Instalação === &lt;br /&gt;
&lt;br /&gt;
=== Atualização ===&lt;br /&gt;
&lt;br /&gt;
- abrir o arquivo docker-compose.yml&lt;br /&gt;
&lt;br /&gt;
- editar a linha da imagem e colocar a nova versao (evite usar latest)&lt;br /&gt;
&lt;br /&gt;
- docker compose pull metabase&lt;br /&gt;
&lt;br /&gt;
- docker-compose down&lt;br /&gt;
&lt;br /&gt;
- docker-compose up -d&lt;br /&gt;
&lt;br /&gt;
- docker-compose logs -f metabase&lt;br /&gt;
&lt;br /&gt;
= Rocket Chat =&lt;br /&gt;
&lt;br /&gt;
Programa de chat empresarial&lt;br /&gt;
&lt;br /&gt;
https://github.com/RocketChat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Certficado SSL ==&lt;br /&gt;
&lt;br /&gt;
Atualização de certificado ssl https:&lt;br /&gt;
&lt;br /&gt;
# stop ngix&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/etc/init.d/nginx stop&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# renew certificate&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
certbot renew&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# start&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/etc/init.d/nginx start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#delete&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo certbot delete&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo certbot delete --cert-name example.com&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Atualizar/Manutenção == &lt;br /&gt;
&lt;br /&gt;
Documentação: &lt;br /&gt;
&lt;br /&gt;
https://rocket.chat/docs/installation/manual-installation/ubuntu/snaps/&lt;br /&gt;
&lt;br /&gt;
https://snapcraft.io/rocketchat-server&lt;br /&gt;
&lt;br /&gt;
Checar versão do snap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
snap --version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Checar versão programas instalados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ver informações&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
snap info rocketchat-server&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
How do I manually update to a new release?&lt;br /&gt;
&lt;br /&gt;
While updates happen automatically usually within 6 hours from time of release, you can update manually by issuing this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo snap refresh rocketchat-server&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*opção de escolher canal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
--channel=canal/stable&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trocar de versão&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
snap switch rocketchat-server --channel=7.x/stable&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
How do I tell if Rocket.Chat is actually running?&lt;br /&gt;
&lt;br /&gt;
You can check on the status of Rocket.Chat with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service snap.rocketchat-server.rocketchat-server status&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To restart Rocket.Chat:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service snap.rocketchat-server.rocketchat-server restart&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chat por departamento == &lt;br /&gt;
&lt;br /&gt;
Chat padrão&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- Start of Rocket.Chat Livechat Script --&amp;gt;&lt;br /&gt;
	&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
	(function(w, d, s, u) {&lt;br /&gt;
		w.RocketChat = function(c) { w.RocketChat._.push(c) }; w.RocketChat._ = []; w.RocketChat.url = u;&lt;br /&gt;
		w.RocketChat.setDepartment(&#039;FILL HERE DEPARTMENT NAME - case sensitive&#039;);&lt;br /&gt;
		var h = d.getElementsByTagName(s)[0], j = d.createElement(s);&lt;br /&gt;
		j.async = true; j.src = &#039;https://chat.sistemaprever.com.br/livechat/rocketchat-livechat.min.js?_=201903270000&#039;;&lt;br /&gt;
		h.parentNode.insertBefore(j, h);&lt;br /&gt;
	})(window, document, &#039;script&#039;, &#039;https://chat.sistemaprever.com.br/livechat&#039;);&lt;br /&gt;
	&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atribuir departamento ao chat do livechat&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
	&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
	RocketChat(function() {&lt;br /&gt;
		this.setDepartment(&#039;FILL HERE DEPARTMENT NAME - case sensitive&#039;);&lt;br /&gt;
	});&lt;br /&gt;
	&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1140</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Docker&amp;diff=1140"/>
		<updated>2025-11-28T15:06:16Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Comandos básicos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Com certeza você já ouviu uma famosa frase &#039;Na minha máquina funciona&#039;... então se na sua máquina funciona, por que não enviar ela para produção?&lt;br /&gt;
&lt;br /&gt;
Pois bem, o que o Docker faz é parecido com isto. Em termos gerais ele abstrai a infraestrutura das aplicações através de imagens prontas.&lt;br /&gt;
&lt;br /&gt;
O que temos são basicamente &#039;máquinas virtuais&#039; de baixo custo rodando somente com a infraestrutura das nossas aplicações.&lt;br /&gt;
&lt;br /&gt;
= Comandos básicos =&lt;br /&gt;
&lt;br /&gt;
- ver versao&lt;br /&gt;
&lt;br /&gt;
docker version&lt;br /&gt;
&lt;br /&gt;
- ver imagens&lt;br /&gt;
&lt;br /&gt;
docker images -a&lt;br /&gt;
docker container ls&lt;br /&gt;
&lt;br /&gt;
- start / restart&lt;br /&gt;
&lt;br /&gt;
docker start nome_imagem&lt;br /&gt;
dockr restart nome_imagem&lt;br /&gt;
 &lt;br /&gt;
- Executa um comando dentro do container demo-lucasfp&lt;br /&gt;
docker exec -it nome_imagem apt-get update&lt;br /&gt;
&lt;br /&gt;
- ver containers em execução&lt;br /&gt;
&lt;br /&gt;
docker ps&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Apache&amp;diff=1139</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Apache&amp;diff=1139"/>
		<updated>2025-11-15T14:46:28Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Configurações */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Comandos e configurações&lt;br /&gt;
&lt;br /&gt;
= Configurações =&lt;br /&gt;
&lt;br /&gt;
* Ver se as configs estão ok&lt;br /&gt;
&lt;br /&gt;
apachectl configtest&lt;br /&gt;
&lt;br /&gt;
* reiniciar&lt;br /&gt;
&lt;br /&gt;
systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
== variáveis de ambiente ==&lt;br /&gt;
&lt;br /&gt;
Diretório: /etc/apache2/conf-available/env-vars.conf&lt;br /&gt;
&lt;br /&gt;
Modelo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
SetEnv APP_var &amp;quot;valor da variavel&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Habilitar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
a2enconf env-vars.conf&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== habilitar módulos ==&lt;br /&gt;
&lt;br /&gt;
a2enmod rewrite&lt;br /&gt;
&lt;br /&gt;
== apache2.conf ==&lt;br /&gt;
&lt;br /&gt;
KeepAlive On&lt;br /&gt;
&lt;br /&gt;
MaxKeepAliveRequests 500&lt;br /&gt;
&lt;br /&gt;
* Permite múltiplas requisições por uma mesma requisição&lt;br /&gt;
* Melhora desempenho&lt;br /&gt;
* Reduz consumo cpu, aumenta consumo de memória&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;no final do arquivo&#039;&#039;&#039; - antes do &amp;quot;Includeptional&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ServerSignature Off&lt;br /&gt;
&lt;br /&gt;
ServerTokens Prod&lt;br /&gt;
&lt;br /&gt;
== mods-available/dir.conf ==&lt;br /&gt;
DirectoryIndex index.php #ler primeiro index.php&lt;br /&gt;
&lt;br /&gt;
= Certbot =&lt;br /&gt;
&lt;br /&gt;
Remover certificado&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
certbot delete&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rotação de log&lt;br /&gt;
&lt;br /&gt;
cat /etc/logrotate.d/certbot&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/var/log/letsencrypt/*.log {&lt;br /&gt;
    rotate 12&lt;br /&gt;
    weekly&lt;br /&gt;
    compress&lt;br /&gt;
    missingok&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Apache&amp;diff=1138</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Apache&amp;diff=1138"/>
		<updated>2025-11-15T14:46:15Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Configurações */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Comandos e configurações&lt;br /&gt;
&lt;br /&gt;
= Configurações =&lt;br /&gt;
&lt;br /&gt;
* Ver se as configs estão ok&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
apachectl configtest&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* reiniciar&lt;br /&gt;
&lt;br /&gt;
systemctl reload apache2&lt;br /&gt;
&lt;br /&gt;
== variáveis de ambiente ==&lt;br /&gt;
&lt;br /&gt;
Diretório: /etc/apache2/conf-available/env-vars.conf&lt;br /&gt;
&lt;br /&gt;
Modelo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
SetEnv APP_var &amp;quot;valor da variavel&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Habilitar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
a2enconf env-vars.conf&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== habilitar módulos ==&lt;br /&gt;
&lt;br /&gt;
a2enmod rewrite&lt;br /&gt;
&lt;br /&gt;
== apache2.conf ==&lt;br /&gt;
&lt;br /&gt;
KeepAlive On&lt;br /&gt;
&lt;br /&gt;
MaxKeepAliveRequests 500&lt;br /&gt;
&lt;br /&gt;
* Permite múltiplas requisições por uma mesma requisição&lt;br /&gt;
* Melhora desempenho&lt;br /&gt;
* Reduz consumo cpu, aumenta consumo de memória&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;no final do arquivo&#039;&#039;&#039; - antes do &amp;quot;Includeptional&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ServerSignature Off&lt;br /&gt;
&lt;br /&gt;
ServerTokens Prod&lt;br /&gt;
&lt;br /&gt;
== mods-available/dir.conf ==&lt;br /&gt;
DirectoryIndex index.php #ler primeiro index.php&lt;br /&gt;
&lt;br /&gt;
= Certbot =&lt;br /&gt;
&lt;br /&gt;
Remover certificado&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
certbot delete&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rotação de log&lt;br /&gt;
&lt;br /&gt;
cat /etc/logrotate.d/certbot&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/var/log/letsencrypt/*.log {&lt;br /&gt;
    rotate 12&lt;br /&gt;
    weekly&lt;br /&gt;
    compress&lt;br /&gt;
    missingok&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1137</id>
		<title>Pfsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1137"/>
		<updated>2025-10-31T20:48:20Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* NTP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
PfSense é uma solução de firewall e roteador de código aberto, baseado no sistema operacional FreeBSD, que transforma um computador em um dispositivo de segurança de rede&lt;br /&gt;
&lt;br /&gt;
= Configurações iniciais =&lt;br /&gt;
&lt;br /&gt;
Configurações recomendadas&lt;br /&gt;
&lt;br /&gt;
== Config avançadas ==&lt;br /&gt;
&lt;br /&gt;
* mudar para https&lt;br /&gt;
* tcp porta 82&lt;br /&gt;
&lt;br /&gt;
== Pacotes recomendados ==&lt;br /&gt;
&lt;br /&gt;
* Avahi&lt;br /&gt;
* nmap&lt;br /&gt;
* WireGuard (vpn)&lt;br /&gt;
&lt;br /&gt;
== Load Balance ==&lt;br /&gt;
&lt;br /&gt;
* colocar ip de monitoramento nos gateways&lt;br /&gt;
* tier 1 / tier 2 - qdo cai 1 link o outro assume&lt;br /&gt;
* tier 1 / tier 1 - os 2 simultaneos (bom para navegação, mas pode ter problema com regras)&lt;br /&gt;
&lt;br /&gt;
= Serviços =&lt;br /&gt;
&lt;br /&gt;
Alguns serviços úteis&lt;br /&gt;
&lt;br /&gt;
== NTP == &lt;br /&gt;
&lt;br /&gt;
Controle de horario. Deixar apenas para as redes internas&lt;br /&gt;
&lt;br /&gt;
* a.st1.ntp.br&lt;br /&gt;
* c.st1.ntp.br&lt;br /&gt;
* b.ntp.br&lt;br /&gt;
&lt;br /&gt;
= VPN = &lt;br /&gt;
&lt;br /&gt;
Existem diversas soluções de VPN para configurar no pfsense&lt;br /&gt;
&lt;br /&gt;
== OpenVpn == &lt;br /&gt;
&lt;br /&gt;
== Wireguard ==&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1136</id>
		<title>Pfsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1136"/>
		<updated>2025-10-31T20:46:56Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* VPN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
PfSense é uma solução de firewall e roteador de código aberto, baseado no sistema operacional FreeBSD, que transforma um computador em um dispositivo de segurança de rede&lt;br /&gt;
&lt;br /&gt;
= Configurações iniciais =&lt;br /&gt;
&lt;br /&gt;
Configurações recomendadas&lt;br /&gt;
&lt;br /&gt;
== Config avançadas ==&lt;br /&gt;
&lt;br /&gt;
* mudar para https&lt;br /&gt;
* tcp porta 82&lt;br /&gt;
&lt;br /&gt;
== Pacotes recomendados ==&lt;br /&gt;
&lt;br /&gt;
* Avahi&lt;br /&gt;
* nmap&lt;br /&gt;
* WireGuard (vpn)&lt;br /&gt;
&lt;br /&gt;
== Load Balance ==&lt;br /&gt;
&lt;br /&gt;
* colocar ip de monitoramento nos gateways&lt;br /&gt;
* tier 1 / tier 2 - qdo cai 1 link o outro assume&lt;br /&gt;
* tier 1 / tier 1 - os 2 simultaneos (bom para navegação, mas pode ter problema com regras)&lt;br /&gt;
&lt;br /&gt;
= Serviços =&lt;br /&gt;
&lt;br /&gt;
Alguns serviços úteis&lt;br /&gt;
&lt;br /&gt;
== NTP == &lt;br /&gt;
&lt;br /&gt;
Controle de horario&lt;br /&gt;
&lt;br /&gt;
* a.st1.ntp.br&lt;br /&gt;
* c.st1.ntp.br&lt;br /&gt;
* b.ntp.br&lt;br /&gt;
&lt;br /&gt;
= VPN = &lt;br /&gt;
&lt;br /&gt;
Existem diversas soluções de VPN para configurar no pfsense&lt;br /&gt;
&lt;br /&gt;
== OpenVpn == &lt;br /&gt;
&lt;br /&gt;
== Wireguard ==&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1135</id>
		<title>Pfsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1135"/>
		<updated>2025-10-31T20:45:30Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Load Balance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
PfSense é uma solução de firewall e roteador de código aberto, baseado no sistema operacional FreeBSD, que transforma um computador em um dispositivo de segurança de rede&lt;br /&gt;
&lt;br /&gt;
= Configurações iniciais =&lt;br /&gt;
&lt;br /&gt;
Configurações recomendadas&lt;br /&gt;
&lt;br /&gt;
== Config avançadas ==&lt;br /&gt;
&lt;br /&gt;
* mudar para https&lt;br /&gt;
* tcp porta 82&lt;br /&gt;
&lt;br /&gt;
== Pacotes recomendados ==&lt;br /&gt;
&lt;br /&gt;
* Avahi&lt;br /&gt;
* nmap&lt;br /&gt;
* WireGuard (vpn)&lt;br /&gt;
&lt;br /&gt;
== Load Balance ==&lt;br /&gt;
&lt;br /&gt;
* colocar ip de monitoramento nos gateways&lt;br /&gt;
* tier 1 / tier 2 - qdo cai 1 link o outro assume&lt;br /&gt;
* tier 1 / tier 1 - os 2 simultaneos (bom para navegação, mas pode ter problema com regras)&lt;br /&gt;
&lt;br /&gt;
= VPN = &lt;br /&gt;
&lt;br /&gt;
Existem diversas soluções de VPN para configurar no pfsense&lt;br /&gt;
&lt;br /&gt;
== OpenVpn == &lt;br /&gt;
&lt;br /&gt;
== Wireguard ==&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1134</id>
		<title>Pfsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1134"/>
		<updated>2025-10-31T20:44:54Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Load Balance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
PfSense é uma solução de firewall e roteador de código aberto, baseado no sistema operacional FreeBSD, que transforma um computador em um dispositivo de segurança de rede&lt;br /&gt;
&lt;br /&gt;
= Configurações iniciais =&lt;br /&gt;
&lt;br /&gt;
Configurações recomendadas&lt;br /&gt;
&lt;br /&gt;
== Config avançadas ==&lt;br /&gt;
&lt;br /&gt;
* mudar para https&lt;br /&gt;
* tcp porta 82&lt;br /&gt;
&lt;br /&gt;
== Pacotes recomendados ==&lt;br /&gt;
&lt;br /&gt;
* Avahi&lt;br /&gt;
* nmap&lt;br /&gt;
* WireGuard (vpn)&lt;br /&gt;
&lt;br /&gt;
== Load Balance ==&lt;br /&gt;
&lt;br /&gt;
* tier 1 / tier 2 - qdo cai 1 link o outro assume&lt;br /&gt;
* tier 1 / tier 1 - os 2 simultaneos (bom para navegação, mas pode ter problema com regras)&lt;br /&gt;
&lt;br /&gt;
= VPN = &lt;br /&gt;
&lt;br /&gt;
Existem diversas soluções de VPN para configurar no pfsense&lt;br /&gt;
&lt;br /&gt;
== OpenVpn == &lt;br /&gt;
&lt;br /&gt;
== Wireguard ==&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1133</id>
		<title>Pfsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1133"/>
		<updated>2025-10-31T20:43:46Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Configurações iniciais */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
PfSense é uma solução de firewall e roteador de código aberto, baseado no sistema operacional FreeBSD, que transforma um computador em um dispositivo de segurança de rede&lt;br /&gt;
&lt;br /&gt;
= Configurações iniciais =&lt;br /&gt;
&lt;br /&gt;
Configurações recomendadas&lt;br /&gt;
&lt;br /&gt;
== Config avançadas ==&lt;br /&gt;
&lt;br /&gt;
* mudar para https&lt;br /&gt;
* tcp porta 82&lt;br /&gt;
&lt;br /&gt;
== Pacotes recomendados ==&lt;br /&gt;
&lt;br /&gt;
* Avahi&lt;br /&gt;
* nmap&lt;br /&gt;
* WireGuard (vpn)&lt;br /&gt;
&lt;br /&gt;
== Load Balance ==&lt;br /&gt;
&lt;br /&gt;
* tier 1 / tier 2 - qdo cai 1 link o outro assume&lt;br /&gt;
* tier 1 / tier 1 - os 2 simultaneos&lt;br /&gt;
&lt;br /&gt;
= VPN = &lt;br /&gt;
&lt;br /&gt;
Existem diversas soluções de VPN para configurar no pfsense&lt;br /&gt;
&lt;br /&gt;
== OpenVpn == &lt;br /&gt;
&lt;br /&gt;
== Wireguard ==&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1132</id>
		<title>Pfsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1132"/>
		<updated>2025-10-31T20:42:15Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Configurações iniciais */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
PfSense é uma solução de firewall e roteador de código aberto, baseado no sistema operacional FreeBSD, que transforma um computador em um dispositivo de segurança de rede&lt;br /&gt;
&lt;br /&gt;
= Configurações iniciais =&lt;br /&gt;
&lt;br /&gt;
Configurações recomendadas&lt;br /&gt;
&lt;br /&gt;
== Config avançadas ==&lt;br /&gt;
&lt;br /&gt;
* mudar para https&lt;br /&gt;
* tcp porta 82&lt;br /&gt;
&lt;br /&gt;
== Pacotes recomendados ==&lt;br /&gt;
&lt;br /&gt;
* Avahi&lt;br /&gt;
* nmap&lt;br /&gt;
* WireGuard (vpn)&lt;br /&gt;
&lt;br /&gt;
= VPN = &lt;br /&gt;
&lt;br /&gt;
Existem diversas soluções de VPN para configurar no pfsense&lt;br /&gt;
&lt;br /&gt;
== OpenVpn == &lt;br /&gt;
&lt;br /&gt;
== Wireguard ==&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1131</id>
		<title>Pfsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1131"/>
		<updated>2025-10-31T20:41:22Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Configurações iniciais */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
PfSense é uma solução de firewall e roteador de código aberto, baseado no sistema operacional FreeBSD, que transforma um computador em um dispositivo de segurança de rede&lt;br /&gt;
&lt;br /&gt;
= Configurações iniciais =&lt;br /&gt;
&lt;br /&gt;
Configurações recomendadas&lt;br /&gt;
&lt;br /&gt;
== Config avançadas ==&lt;br /&gt;
&lt;br /&gt;
* mudar para https&lt;br /&gt;
* tcp porta 82&lt;br /&gt;
&lt;br /&gt;
= VPN = &lt;br /&gt;
&lt;br /&gt;
Existem diversas soluções de VPN para configurar no pfsense&lt;br /&gt;
&lt;br /&gt;
== OpenVpn == &lt;br /&gt;
&lt;br /&gt;
== Wireguard ==&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1130</id>
		<title>Pfsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1130"/>
		<updated>2025-10-31T20:39:44Z</updated>

		<summary type="html">&lt;p&gt;Murilo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
PfSense é uma solução de firewall e roteador de código aberto, baseado no sistema operacional FreeBSD, que transforma um computador em um dispositivo de segurança de rede&lt;br /&gt;
&lt;br /&gt;
= Configurações iniciais = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= VPN = &lt;br /&gt;
&lt;br /&gt;
Existem diversas soluções de VPN para configurar no pfsense&lt;br /&gt;
&lt;br /&gt;
== OpenVpn == &lt;br /&gt;
&lt;br /&gt;
== Wireguard ==&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1129</id>
		<title>Pfsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1129"/>
		<updated>2025-10-31T20:39:08Z</updated>

		<summary type="html">&lt;p&gt;Murilo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
PfSense é uma solução de firewall e roteador de código aberto, baseado no sistema operacional FreeBSD, que transforma um computador em um dispositivo de segurança de rede&lt;br /&gt;
&lt;br /&gt;
= VPN = &lt;br /&gt;
&lt;br /&gt;
Existem diversas soluções de VPN para configurar no pfsense&lt;br /&gt;
&lt;br /&gt;
== OpenVpn == &lt;br /&gt;
&lt;br /&gt;
== Wireguard ==&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=P%C3%A1gina_principal&amp;diff=1128</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=P%C3%A1gina_principal&amp;diff=1128"/>
		<updated>2025-10-31T20:38:34Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Servidores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
Este é o wiki do sistema Doth. Ele funciona como um manual colaborativo, do sistema, escrito pelos próprios usuários com dicas e informações sobre o uso do sistema&lt;br /&gt;
&lt;br /&gt;
= ERP =&lt;br /&gt;
&lt;br /&gt;
* [[ERP|Introdução]]&lt;br /&gt;
&lt;br /&gt;
= Aplicativo =&lt;br /&gt;
&lt;br /&gt;
* [[Aplicativo|Aplicativo]]&lt;br /&gt;
* [[Aplicativo#App_do_associado|Aplicativo do associado]]&lt;br /&gt;
&lt;br /&gt;
= Caixa =&lt;br /&gt;
* [[Caixa|Introdução]]&lt;br /&gt;
* [[Caixa#Caixa_Plano|Caixa Plano]]&lt;br /&gt;
* [[Caixa#Caixa_OS|Caixa Os]]&lt;br /&gt;
* [[Caixa#Entradas_e_Sa.C3.ADdas|Entradas e Saídas]]&lt;br /&gt;
* [[Caixa#Sangrias|Sangrias]]&lt;br /&gt;
* [[Caixa#Estorno|Estorno]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= CPFL =&lt;br /&gt;
* [[Cpfl|Introdução]]&lt;br /&gt;
* [[Cpfl#Observações_gerais|Observações gerais]]&lt;br /&gt;
&lt;br /&gt;
= Óbitos =&lt;br /&gt;
* [[Registro de Óbito]]&lt;br /&gt;
** [[Registro de Óbito#Passo_2:_Dados_base|Dados Base]]&lt;br /&gt;
** [[Registro de Óbito#Passo_3:_Parentesco|Parentesco]]&lt;br /&gt;
** [[Registro de Óbito#Passo_4:_Falecimento|Falecimento]]&lt;br /&gt;
** [[Registro de Óbito#Passo_5:_Declarante|Declarante]]&lt;br /&gt;
** [[Registro de Óbito#Passo_6:_Sepultamento|Sepultamento]]&lt;br /&gt;
* [[Consulta de Óbitos]]&lt;br /&gt;
* [[Quadro do Óbitos]]&lt;br /&gt;
* [[Status do Óbito]]&lt;br /&gt;
&lt;br /&gt;
= Ordem de Serviço =&lt;br /&gt;
*[[Ordem_de_serviço#Consulta_de_OS|Consulta de OS]]&lt;br /&gt;
*[[Ordem_de_serviço#Registro_de_OS|Registro de OS]]&lt;br /&gt;
&lt;br /&gt;
= Nota Fiscal =&lt;br /&gt;
*[[Nota Fiscal|Introdução]]&lt;br /&gt;
*[[Nota Fiscal#Como_emitir|Como emitir]]&lt;br /&gt;
*[[Nota Fiscal#Regras_para_emiss.C3.A3o|Regras para emissão]]&lt;br /&gt;
&lt;br /&gt;
= Suporte Técnico =&lt;br /&gt;
*[[Suporte_técnico#Chamado|Introdução]]&lt;br /&gt;
*[[Suporte_técnico#Acesso|Como criar um chamado]]&lt;br /&gt;
*[[Suporte_técnico#Prioridades de Chamado|Tipos de chamado]]&lt;br /&gt;
&lt;br /&gt;
= Integrações = &lt;br /&gt;
&lt;br /&gt;
* [[Itau|Itaú]]&lt;br /&gt;
* [[Santander|Santander]]&lt;br /&gt;
* [[Integrações|Integrações com o sistema]]&lt;br /&gt;
* [[Integrações#Enotas| E-notas]]&lt;br /&gt;
* [[Glpi|GLPI]]&lt;br /&gt;
* [[Mailchimp#Mailchimp | Mailchimp ]]&lt;br /&gt;
* [[Integrações#Vindi|Vindi - cobrança cartão recorrente]]&lt;br /&gt;
* [[Integrações#Rd_Station|Rd Station - Maketing]]&lt;br /&gt;
&lt;br /&gt;
= Software de Terceiros =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Omnichannel|Omnichannel - atendimento via chat]]&lt;br /&gt;
*[[Senior|Senior - controle de ponto]]&lt;br /&gt;
*[[PontoMais|Ponto mais - controle de ponto]]&lt;br /&gt;
*[[Woocomerce|Woocommerce - venda pela internet]]&lt;br /&gt;
&lt;br /&gt;
= How To =&lt;br /&gt;
&lt;br /&gt;
*[[Howto|Informações]]&lt;br /&gt;
*[[Howto#Howto#Cemit.C3.A9rio|Cemitério]]&lt;br /&gt;
*[[Howto#Planos|Planos]]&lt;br /&gt;
&lt;br /&gt;
= T.I. = &lt;br /&gt;
&lt;br /&gt;
Informações técnicas e ajuda de desenvolvimento&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
*[[Hardware|Hardware]]&lt;br /&gt;
*[[Hardware#Impressoras|Impressoras]]&lt;br /&gt;
*[[Hardware#POS_Data|POS Data]]&lt;br /&gt;
&lt;br /&gt;
== Servidores ==&lt;br /&gt;
*[[AWS|AWS]]&lt;br /&gt;
*[[Apache|Apache]]&lt;br /&gt;
*[[Asterisk|Asterisk]]&lt;br /&gt;
*[[Docker|Docker]]&lt;br /&gt;
*[[Google|Google]]&lt;br /&gt;
*[[Linux|Linux]]&lt;br /&gt;
*[[Pfsense|Pfsense]]&lt;br /&gt;
*[[MariaDb|MariaDb]]&lt;br /&gt;
*[[MediaWiki|MediaWiki]]&lt;br /&gt;
*[[PHP|PHP]]&lt;br /&gt;
*[[WordPress|Wordpress]]&lt;br /&gt;
&lt;br /&gt;
== Programação ==&lt;br /&gt;
&lt;br /&gt;
*[[Erp_config|Erp config]]&lt;br /&gt;
*[[Chatwoot|Chatwoot]]&lt;br /&gt;
*[[FlutterFlow|Flutter Flow]]&lt;br /&gt;
*[[Programação#VsCode|VsCode]]&lt;br /&gt;
*[[Github|Github]]&lt;br /&gt;
*[[Websites|Websites]]&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1127</id>
		<title>Pfsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Pfsense&amp;diff=1127"/>
		<updated>2025-10-31T20:38:18Z</updated>

		<summary type="html">&lt;p&gt;Murilo: Criou página com &amp;#039; PfSense é uma solução de firewall e roteador de código aberto, baseado no sistema operacional FreeBSD, que transforma um computador em um dispositivo de segurança de rede&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
PfSense é uma solução de firewall e roteador de código aberto, baseado no sistema operacional FreeBSD, que transforma um computador em um dispositivo de segurança de rede&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Santander&amp;diff=1126</id>
		<title>Santander</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Santander&amp;diff=1126"/>
		<updated>2025-09-08T11:25:58Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Pagamentos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Integração com o santander&lt;br /&gt;
&lt;br /&gt;
= Liberação de acesso =&lt;br /&gt;
&lt;br /&gt;
# acesso através de portal developers com o usuário master&lt;br /&gt;
# Membros: convidar membro murilo.pz@gmail.com&lt;br /&gt;
# É necessário ter certificado digital a1&lt;br /&gt;
&lt;br /&gt;
= Certificado = &lt;br /&gt;
&lt;br /&gt;
Obs. 2: O certificado não pode ter uma expiração inferior a 30 dias.&lt;br /&gt;
&lt;br /&gt;
Ao receberem o Certificado Digital da certificadora (arquivo .pfx – parte privada), devem seguir com a instalação desse certificado. Ao realizar a instalação, marcar a chave como exportável (isso permitirá o backup do transporte das chaves posteriormente). Incluir todas as propriedades estendidas. &lt;br /&gt;
&lt;br /&gt;
Após instalado o certificado, vão precisar exportar (criação da parte pública) para inserir no Portal do Desenvolvedor. Seguir os passos abaixo para exportar (sistema WINDOWS): &lt;br /&gt;
&lt;br /&gt;
No menu de Pesquisa do Windows, digitar “Opções da Internet” e clicar no conteúdo encontrado;&lt;br /&gt;
&lt;br /&gt;
Clicar na aba “Conteúdo”;&lt;br /&gt;
&lt;br /&gt;
Clicar em “Certificados”;&lt;br /&gt;
&lt;br /&gt;
Selecionar o Certificado que deseja exportar e clicar em “Exportar”;&lt;br /&gt;
&lt;br /&gt;
Marque a opção “Não, não exportar a chave privada”;&lt;br /&gt;
&lt;br /&gt;
Marque a opção “X.509 codificado na base 64(*.cer)”;&lt;br /&gt;
&lt;br /&gt;
Salvar o certificado em alguma pasta.&lt;br /&gt;
&lt;br /&gt;
= Access Token = &lt;br /&gt;
&lt;br /&gt;
O access token para pix é diferente dos demais&lt;br /&gt;
&lt;br /&gt;
= Cobrança = &lt;br /&gt;
&lt;br /&gt;
# Utilização de certificado&lt;br /&gt;
# É necessário criar um workspance&lt;br /&gt;
# Modelo de convenio 240&lt;br /&gt;
# Nosso numero: grp (2) + banco (3) + id boleto (8)&lt;br /&gt;
# Nsu: grupo+id do boleto&lt;br /&gt;
&lt;br /&gt;
= Pagamentos =&lt;br /&gt;
&lt;br /&gt;
1 - criar workspace de pagamentos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Payments Pix == &lt;br /&gt;
&lt;br /&gt;
# necessario ter um UID 4&lt;br /&gt;
&lt;br /&gt;
= Pix = &lt;br /&gt;
&lt;br /&gt;
# Cadastrar chave pix aleatório&lt;br /&gt;
&lt;br /&gt;
= Webhook = &lt;br /&gt;
&lt;br /&gt;
# Retorno do santander&lt;br /&gt;
# Necessário ter certificados MTLs&lt;br /&gt;
# O certificado MTLS do retorno do pix é diferente dos demais certificados&lt;br /&gt;
# Certificado do pix baixa no portal do santander&lt;br /&gt;
# Certificado da cobrança disponível na documentação&lt;br /&gt;
# Para o envio é feito via POST, para o cadastro é validado o GET&lt;br /&gt;
&lt;br /&gt;
= Getnet = &lt;br /&gt;
&lt;br /&gt;
Operadora de cartão de crédito getnet&lt;br /&gt;
&lt;br /&gt;
== Cadastro de estabelcimento ==&lt;br /&gt;
&lt;br /&gt;
* Cadastro pelo Portal Getvendas&lt;br /&gt;
* Liberação após o e-mail&lt;br /&gt;
&lt;br /&gt;
== Links de pagamento == &lt;br /&gt;
&lt;br /&gt;
Para ativar o processo de links de pagamento&lt;br /&gt;
&lt;br /&gt;
* Menu autorizações: Liberar Pagamento Getpay Autorizado&lt;br /&gt;
* Menu Minha Getnet: Realizar contratação Getpay Avançado&lt;br /&gt;
* Menu Mais Serviços -&amp;gt; Chaves de autenticação plataforma digital&lt;br /&gt;
** Capturar as chaves&lt;br /&gt;
** Ligar 4020-4009 (cnpj, 1, 2) e pedir a liberação&lt;br /&gt;
** Cuidado que só é visto a primeira vez que acessa&lt;br /&gt;
&lt;br /&gt;
== Novo Estabelecimento Comercial ==&lt;br /&gt;
&lt;br /&gt;
== POS == &lt;br /&gt;
&lt;br /&gt;
* Solicitação de Get Smart POS&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Santander&amp;diff=1125</id>
		<title>Santander</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Santander&amp;diff=1125"/>
		<updated>2025-09-08T11:22:21Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Pagamentos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Integração com o santander&lt;br /&gt;
&lt;br /&gt;
= Liberação de acesso =&lt;br /&gt;
&lt;br /&gt;
# acesso através de portal developers com o usuário master&lt;br /&gt;
# Membros: convidar membro murilo.pz@gmail.com&lt;br /&gt;
# É necessário ter certificado digital a1&lt;br /&gt;
&lt;br /&gt;
= Certificado = &lt;br /&gt;
&lt;br /&gt;
Obs. 2: O certificado não pode ter uma expiração inferior a 30 dias.&lt;br /&gt;
&lt;br /&gt;
Ao receberem o Certificado Digital da certificadora (arquivo .pfx – parte privada), devem seguir com a instalação desse certificado. Ao realizar a instalação, marcar a chave como exportável (isso permitirá o backup do transporte das chaves posteriormente). Incluir todas as propriedades estendidas. &lt;br /&gt;
&lt;br /&gt;
Após instalado o certificado, vão precisar exportar (criação da parte pública) para inserir no Portal do Desenvolvedor. Seguir os passos abaixo para exportar (sistema WINDOWS): &lt;br /&gt;
&lt;br /&gt;
No menu de Pesquisa do Windows, digitar “Opções da Internet” e clicar no conteúdo encontrado;&lt;br /&gt;
&lt;br /&gt;
Clicar na aba “Conteúdo”;&lt;br /&gt;
&lt;br /&gt;
Clicar em “Certificados”;&lt;br /&gt;
&lt;br /&gt;
Selecionar o Certificado que deseja exportar e clicar em “Exportar”;&lt;br /&gt;
&lt;br /&gt;
Marque a opção “Não, não exportar a chave privada”;&lt;br /&gt;
&lt;br /&gt;
Marque a opção “X.509 codificado na base 64(*.cer)”;&lt;br /&gt;
&lt;br /&gt;
Salvar o certificado em alguma pasta.&lt;br /&gt;
&lt;br /&gt;
= Access Token = &lt;br /&gt;
&lt;br /&gt;
O access token para pix é diferente dos demais&lt;br /&gt;
&lt;br /&gt;
= Cobrança = &lt;br /&gt;
&lt;br /&gt;
# Utilização de certificado&lt;br /&gt;
# É necessário criar um workspance&lt;br /&gt;
# Modelo de convenio 240&lt;br /&gt;
# Nosso numero: grp (2) + banco (3) + id boleto (8)&lt;br /&gt;
# Nsu: grupo+id do boleto&lt;br /&gt;
&lt;br /&gt;
= Pagamentos =&lt;br /&gt;
&lt;br /&gt;
1 - criar workspace de pagamentos&lt;br /&gt;
&lt;br /&gt;
= Pix = &lt;br /&gt;
&lt;br /&gt;
# Cadastrar chave pix aleatório&lt;br /&gt;
&lt;br /&gt;
= Webhook = &lt;br /&gt;
&lt;br /&gt;
# Retorno do santander&lt;br /&gt;
# Necessário ter certificados MTLs&lt;br /&gt;
# O certificado MTLS do retorno do pix é diferente dos demais certificados&lt;br /&gt;
# Certificado do pix baixa no portal do santander&lt;br /&gt;
# Certificado da cobrança disponível na documentação&lt;br /&gt;
# Para o envio é feito via POST, para o cadastro é validado o GET&lt;br /&gt;
&lt;br /&gt;
= Getnet = &lt;br /&gt;
&lt;br /&gt;
Operadora de cartão de crédito getnet&lt;br /&gt;
&lt;br /&gt;
== Cadastro de estabelcimento ==&lt;br /&gt;
&lt;br /&gt;
* Cadastro pelo Portal Getvendas&lt;br /&gt;
* Liberação após o e-mail&lt;br /&gt;
&lt;br /&gt;
== Links de pagamento == &lt;br /&gt;
&lt;br /&gt;
Para ativar o processo de links de pagamento&lt;br /&gt;
&lt;br /&gt;
* Menu autorizações: Liberar Pagamento Getpay Autorizado&lt;br /&gt;
* Menu Minha Getnet: Realizar contratação Getpay Avançado&lt;br /&gt;
* Menu Mais Serviços -&amp;gt; Chaves de autenticação plataforma digital&lt;br /&gt;
** Capturar as chaves&lt;br /&gt;
** Ligar 4020-4009 (cnpj, 1, 2) e pedir a liberação&lt;br /&gt;
** Cuidado que só é visto a primeira vez que acessa&lt;br /&gt;
&lt;br /&gt;
== Novo Estabelecimento Comercial ==&lt;br /&gt;
&lt;br /&gt;
== POS == &lt;br /&gt;
&lt;br /&gt;
* Solicitação de Get Smart POS&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=Santander&amp;diff=1124</id>
		<title>Santander</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=Santander&amp;diff=1124"/>
		<updated>2025-09-08T11:22:11Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* Pix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Integração com o santander&lt;br /&gt;
&lt;br /&gt;
= Liberação de acesso =&lt;br /&gt;
&lt;br /&gt;
# acesso através de portal developers com o usuário master&lt;br /&gt;
# Membros: convidar membro murilo.pz@gmail.com&lt;br /&gt;
# É necessário ter certificado digital a1&lt;br /&gt;
&lt;br /&gt;
= Certificado = &lt;br /&gt;
&lt;br /&gt;
Obs. 2: O certificado não pode ter uma expiração inferior a 30 dias.&lt;br /&gt;
&lt;br /&gt;
Ao receberem o Certificado Digital da certificadora (arquivo .pfx – parte privada), devem seguir com a instalação desse certificado. Ao realizar a instalação, marcar a chave como exportável (isso permitirá o backup do transporte das chaves posteriormente). Incluir todas as propriedades estendidas. &lt;br /&gt;
&lt;br /&gt;
Após instalado o certificado, vão precisar exportar (criação da parte pública) para inserir no Portal do Desenvolvedor. Seguir os passos abaixo para exportar (sistema WINDOWS): &lt;br /&gt;
&lt;br /&gt;
No menu de Pesquisa do Windows, digitar “Opções da Internet” e clicar no conteúdo encontrado;&lt;br /&gt;
&lt;br /&gt;
Clicar na aba “Conteúdo”;&lt;br /&gt;
&lt;br /&gt;
Clicar em “Certificados”;&lt;br /&gt;
&lt;br /&gt;
Selecionar o Certificado que deseja exportar e clicar em “Exportar”;&lt;br /&gt;
&lt;br /&gt;
Marque a opção “Não, não exportar a chave privada”;&lt;br /&gt;
&lt;br /&gt;
Marque a opção “X.509 codificado na base 64(*.cer)”;&lt;br /&gt;
&lt;br /&gt;
Salvar o certificado em alguma pasta.&lt;br /&gt;
&lt;br /&gt;
= Access Token = &lt;br /&gt;
&lt;br /&gt;
O access token para pix é diferente dos demais&lt;br /&gt;
&lt;br /&gt;
= Cobrança = &lt;br /&gt;
&lt;br /&gt;
# Utilização de certificado&lt;br /&gt;
# É necessário criar um workspance&lt;br /&gt;
# Modelo de convenio 240&lt;br /&gt;
# Nosso numero: grp (2) + banco (3) + id boleto (8)&lt;br /&gt;
# Nsu: grupo+id do boleto&lt;br /&gt;
&lt;br /&gt;
= Pagamentos = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pix = &lt;br /&gt;
&lt;br /&gt;
# Cadastrar chave pix aleatório&lt;br /&gt;
&lt;br /&gt;
= Webhook = &lt;br /&gt;
&lt;br /&gt;
# Retorno do santander&lt;br /&gt;
# Necessário ter certificados MTLs&lt;br /&gt;
# O certificado MTLS do retorno do pix é diferente dos demais certificados&lt;br /&gt;
# Certificado do pix baixa no portal do santander&lt;br /&gt;
# Certificado da cobrança disponível na documentação&lt;br /&gt;
# Para o envio é feito via POST, para o cadastro é validado o GET&lt;br /&gt;
&lt;br /&gt;
= Getnet = &lt;br /&gt;
&lt;br /&gt;
Operadora de cartão de crédito getnet&lt;br /&gt;
&lt;br /&gt;
== Cadastro de estabelcimento ==&lt;br /&gt;
&lt;br /&gt;
* Cadastro pelo Portal Getvendas&lt;br /&gt;
* Liberação após o e-mail&lt;br /&gt;
&lt;br /&gt;
== Links de pagamento == &lt;br /&gt;
&lt;br /&gt;
Para ativar o processo de links de pagamento&lt;br /&gt;
&lt;br /&gt;
* Menu autorizações: Liberar Pagamento Getpay Autorizado&lt;br /&gt;
* Menu Minha Getnet: Realizar contratação Getpay Avançado&lt;br /&gt;
* Menu Mais Serviços -&amp;gt; Chaves de autenticação plataforma digital&lt;br /&gt;
** Capturar as chaves&lt;br /&gt;
** Ligar 4020-4009 (cnpj, 1, 2) e pedir a liberação&lt;br /&gt;
** Cuidado que só é visto a primeira vez que acessa&lt;br /&gt;
&lt;br /&gt;
== Novo Estabelecimento Comercial ==&lt;br /&gt;
&lt;br /&gt;
== POS == &lt;br /&gt;
&lt;br /&gt;
* Solicitação de Get Smart POS&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
	<entry>
		<id>https://wiki.doth.com.br/index.php?title=WordPress&amp;diff=1123</id>
		<title>WordPress</title>
		<link rel="alternate" type="text/html" href="https://wiki.doth.com.br/index.php?title=WordPress&amp;diff=1123"/>
		<updated>2025-08-28T14:03:15Z</updated>

		<summary type="html">&lt;p&gt;Murilo: /* plugin direct login */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Configurações gerais wordpress&lt;br /&gt;
&lt;br /&gt;
= Debug =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
define( &#039;WP_DEBUG&#039;, true );&lt;br /&gt;
&lt;br /&gt;
define( &#039;WP_DEBUG&#039;, false );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Permissões = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo find . -type f -exec chmod 644 {} \;&lt;br /&gt;
&lt;br /&gt;
sudo find . -type d -exec chmod 755 {} \;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Permissão extra pastas: uploads, upgraned, plugins: 664&lt;br /&gt;
&lt;br /&gt;
Permissão: 775 extra&lt;br /&gt;
&lt;br /&gt;
= FTP = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
define(&#039;FS_METHOD&#039;, &#039;direct&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= plugin direct login = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Insert custom functions here */&lt;br /&gt;
add_action(&#039;init&#039;, function () {&lt;br /&gt;
    if (isset($_GET[&#039;autologin&#039;]) &amp;amp;&amp;amp; $_GET[&#039;autologin&#039;] === &#039;chave_de_seguranca&#039;) {&lt;br /&gt;
        $user = get_user_by(&#039;login&#039;, &#039;usuario&#039;); // Troque &#039;usuario&#039; pelo usuário desejado&lt;br /&gt;
        if ($user) {&lt;br /&gt;
            wp_set_current_user($user-&amp;gt;ID);&lt;br /&gt;
            wp_set_auth_cookie($user-&amp;gt;ID);&lt;br /&gt;
            wp_redirect(admin_url()); // Vai direto para o painel&lt;br /&gt;
			wp_redirect(home_url()); // Vai direto para a home&lt;br /&gt;
            exit;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Murilo</name></author>
	</entry>
</feed>