<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Vinicius Paes</title>
	<atom:link href="https://viniciuspaes.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://viniciuspaes.com/</link>
	<description>Tutoriais e tecnologia</description>
	<lastBuildDate>Sun, 25 May 2025 14:06:02 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>
	<item>
		<title>Tutorial como montar hd externo ou pendrive no Windows WSL</title>
		<link>https://viniciuspaes.com/linux/tutorial-montar-hd-externo-pendrive-windows-wsl/</link>
					<comments>https://viniciuspaes.com/linux/tutorial-montar-hd-externo-pendrive-windows-wsl/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Tue, 31 Dec 2024 23:28:44 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[hd externo]]></category>
		<category><![CDATA[windows wsl]]></category>
		<category><![CDATA[wsl]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=3077</guid>

					<description><![CDATA[<p>Passo a passo ensinando a montar seu HD externo no Windows WSL.</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-montar-hd-externo-pendrive-windows-wsl/">Tutorial como montar hd externo ou pendrive no Windows WSL</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Este tutorial ensina os passos para montar seu HD externo ou pendrive no WSL para acessar ou alterar arquivos. Caso tenha um computador com sistema operacional Windows e precise acessar ou alterar informações em um HD/SSD externo (USB) ou Pendrive com partições de Linux (ext3, ext4, &#8230;) é possível utilizar o Windows WSL (Windows Subsystem for Linux).</p>
<h2>Requisitos</h2>
<p>Para executar este tutorial, temos como requisitos:</p>
<ul>
<li>Sistema Operacional Windows Instalado</li>
<li>WSL instalado no Windows</li>
<li>HD Externo, cartão SD, ou Pendrive com sistema de arquivos Linux (ext3, ext4, &#8230;).</li>
<li>Acesso como Administrador no Windows PowerShell</li>
</ul>
<h2>Tutorial passo a passo para montar um hd externo ou pen drive no windows WSL (Windows Subsystem for Linux)</h2>
<h3>Passo 1: Conectar unidade de armazenamento externo no computador</h3>
<p>Neste momento é importante conectar sua unidade de armazenamento HD Externo/Pendrive/Cartão SD no seu computador. É comum o windows não reconhcer o sistema de arquivos e oferecer para realizar formatação. Não formate a unidade de armazenamento, senão perderá os arquivos!</p>
<h3>Passo 2: Executar o Windows Powershell como administrador</h3>
<p>Encontre o aplicativo do Windows Power Shell, clique com o botão direito sobre o ícone e selecione a opção:</p>
<pre>Executar como administrador / Run as administrator</pre>
<h3>Passo 3: Verificar se o Windows detectou a unidade de armazenamento</h3>
<p>Dentro da janela do Powershell, precisamos verificar quais unidades ou dispositivos de armazenamento o windows detectou. Vamos utilizar o comando:</p>
<pre>GET-CimInstance -query "SELECT * from Win32_DiskDrive"</pre>
<p>Vamo ter como saída algo semelhante a:</p>
<pre>DeviceID             Caption                 	Part.   Size   Model
--------             -------                 	-----   ----   -----
\\.\PHYSICALDRIVE<span style="color: #ff0000;"><strong>0</strong></span>   Samsung SSD 980 PRO 2TB	4	2000   Samsung SSD 980 PRO 2TB
\\.\PHYSICALDRIVE<span style="color: #ff0000;"><strong>1</strong></span>   Samsung SSD 850 EVO 500G	2	500    Samsung SSD 850 EVO 500
</pre>
<p>No exemplo da saída acima, precisamos identificar qual é o SSD principal do computador e qual é o HD/SSD externo que foi conectado. Como conheço as características do meu SSD Externo USB, sei que a unidade externa é o SSD de 500GB. Repare que a saída acima também mostra o número de partições de cada SSD, isso pode ser útil caso opte por disponibilizar apenas alguma partição no WSL, ao invés da unidade toda.</p>
<h3>Passo 4: Disponibilizar a unidade/dispositivo no WSL</h3>
<p>No caso deste exemplo, a unidade externa é identificada pelo DeviceID &#8220;\\.\PHYSICALDRIVE<span style="color: #ff0000;"><strong>1</strong></span>&#8220;. Para disponibilizar essa unidade no WSL, vamos executar o comando:</p>
<pre>wsl --mount \\.\PHYSICALDRIVE<span style="color: #ff0000;"><strong>1</strong></span> --bare</pre>
<p class="cimg"><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-3090" src="https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-verificar-hd-disponivel-disponibilizar-unidade.png" alt="Windows WSL - adicionando unidade de armazenamento no WSL utilizando powershell" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-verificar-hd-disponivel-disponibilizar-unidade.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-verificar-hd-disponivel-disponibilizar-unidade-300x169.png 300w" sizes="(max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5: Identificar a unidade no WSL</h3>
<p>Vamos agora para o terminal do Windows WSL. Vamos identificar o ponto de montagem da unidade utilizando o comando:</p>
<p>lsblk</p>
<p>O comando acima, vai nos trazer uma saída semelhante a:</p>
<pre>NAME     MAJ:MIN  RM    SIZE  RO  TYPE  MOUNTPOINTS
sda        8:0     0  388.4M   1  disk
sdb        8:16    0      8G   0  disk  [SWAP]
<strong>sdc        8:32    0  465.8G   0  disk
 |--sdc1   8:33    0    256M   0  part
 |--sdc2   8:34    0  465.5G   0  part</strong>
sdd        8:32    0      1T   0  disk  /var/lib/docker
                                        /snap
                                        /mnt/wslg/distro
                                        /
</pre>
<p>Como tenho conhecimento que o SSD externo tem 500GB, a unidade que mais se assemelha a estas configurações é a <strong>sdc</strong>. Também sei que o SSD externo tem 2 partições, e essa informação também está presente, a unidade <strong>sdc</strong> possui as partições <strong>sdc1</strong> e a <strong>sdc2</strong>.</p>
<h3>Passo 6: Montar a partição desejada</h3>
<p>Nesta etapa, tenho o desejo de montar a partição <strong>sdc<span style="color: #ff0000;">1</span></strong>, que é a primeira partição da unidade. Então primeiro vou criar uma pasta chamada<strong>&#8220;hd-externo&#8221;</strong>, em seguida vou montar a partição nesta pasta, utilizando os comandos:</p>
<pre>mkdir ~/hd-externo
sudo mount /dev/<strong>sdc<span style="color: #ff0000;">1</span></strong> ~/<strong>hd-externo</strong>
</pre>
<h3>Passo 7: Acessar arquivos da partição</h3>
<p>Com a partição montada na pasta <strong>&#8220;hd-externo</strong>&#8220;, basta entrar na pasta para ter acesso as informações presentes na partição:</p>
<pre>cd ~/hd-externo
ls -lah
</pre>
<h3>Passo 8: Desmontar a partição utilizada</h3>
<p>Depois de realizar o acesso ou modificação dos arquivos presentes na partição, precisamos desmontar esta partição do sistema. Vamos utilizar o comando:</p>
<pre>sudo umount ~/hd-externo</pre>
<p class="cimg"><img decoding="async" class="alignnone size-full wp-image-3088" src="https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-desmontar-particao.png" alt="Windows WSL - desmontando partição dentro do windows WSL" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-desmontar-particao.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-desmontar-particao-300x169.png 300w" sizes="(max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9 &#8211; Remover a unidade/dispositivo no WSL</h3>
<p>Antes de remover a unidade de armazenamento externo do computador, precisamos remover ela do WSL. Vamos para o terminal do powershell, sendo necessário executar o comando:</p>
<pre>wsl --unmount \\.\PHYSICALDRIVE<strong><span style="color: #ff0000;">1</span></strong></pre>
<p class="cimg"><img decoding="async" class="alignnone size-full wp-image-3085" src="https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-remover-unidade-wsl-pelo-powershell.png" alt="Windows WSL - removendo unidade do WSL utilizando o powershell" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-remover-unidade-wsl-pelo-powershell.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-remover-unidade-wsl-pelo-powershell-300x169.png 300w" sizes="(max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 10 &#8211; Confirmar se a unidade foi removida do WSL</h3>
<p>No terminal do WSL, podemos confirmar se a unidade foi realmente removida do WSL e está disponível de volta no sistema Windows. Vamos utilizar novamente o comando:</p>
<pre>lsblk</pre>
<p>E vamos ter como saída, algo como:</p>
<pre>NAME     MAJ:MIN  RM    SIZE  RO  TYPE  MOUNTPOINTS
sda        8:0     0  388.4M   1  disk
sdb        8:16    0      8G   0  disk  [SWAP]
sdd        8:32    0      1T   0  disk  /var/lib/docker
                                        /snap
                                        /mnt/wslg/distro
                                        /
</pre>
<p>Desta forma, confirmamos que a unidade de armazenamento externa foi removida.</p>
<h3>Passo 11 &#8211; Ejetar a Unidade de armazenamento externa do computador</h3>
<p>Realizado todos os passos anteriores, já podemos agora ejetar o HD/SSD externo ou pendrive do computador normalmente.</p>
<h2>Extra &#8211; Desabilitando Overclock do Raspberry Pi após falha no boot</h2>
<p>A principal motivação na criação deste tutorial é para realizar alterações no arquivo config.txt da partição de boot do raspberry pi. Desta forma, quando vou testar perfis de overclock que eventualmente não funcionam, é mais rápido ligar o SSD do Raspberry com uma gaveta USB no computador com o Windows e realizar as modificações. Se tem um problema semelhante, os passos deste tutorial vão te auxiliar nessas etapas.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3082" src="https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-verificar-unidades-disponveis-montar-acessar-arquivo.png" alt="Windows WSL - alterando arquivo config.txt e desabilitando overclock do raspberry pi" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-verificar-unidades-disponveis-montar-acessar-arquivo.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-verificar-unidades-disponveis-montar-acessar-arquivo-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-3083" src="https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-remover-overclock-raspberry-pi.png" alt="Windows WSL - desabilitando overclock do raspberry pi" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-remover-overclock-raspberry-pi.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/12/windows-wsl-remover-overclock-raspberry-pi-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Conclusão</h2>
<p>Utilizar o Windows WSL pode ser muito útil, caso não tenha um computador com linux disponível para acessar informações em uma unidade externa. Ou caso precise realizar procedimentos reparadores na unidade de armazenamento do seu linux no seu computador com Windows.</p>
<p>Qualquer dúvida ou sugestão, basta informar nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-montar-hd-externo-pendrive-windows-wsl/">Tutorial como montar hd externo ou pendrive no Windows WSL</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/linux/tutorial-montar-hd-externo-pendrive-windows-wsl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial criar docker container do MySQLTuner</title>
		<link>https://viniciuspaes.com/docker/tutorial-criar-docker-container-do-mysqltuner/</link>
					<comments>https://viniciuspaes.com/docker/tutorial-criar-docker-container-do-mysqltuner/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Sun, 15 Dec 2024 19:30:32 +0000</pubDate>
				<category><![CDATA[docker]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[docker compose]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[MySQLTuner]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=3051</guid>

					<description><![CDATA[<p>Tutorial passo a passo descrevendo como criar um docker container do MySQLTuner e realizar análises de performance de banco de dados no MySQL/MariaDB.</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-criar-docker-container-do-mysqltuner/">Tutorial criar docker container do MySQLTuner</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Criar um container com o software <strong>MySQLTuner</strong> integrado a uma base de dados, utilizando o <strong>docker compose</strong>.</p>
<h2>Condições de contorno</h2>
<p>Neste tutorial, vamos realizar teste em um container com a base de dados <strong>MariaDB</strong> (fork do mysql) em um sistema operacional linux em um processador ARM.</p>
<h2>Passo a passo para utilizar o mysqltuner como um container com o docker compose</h2>
<h3>Passo 1: Conexão SSH</h3>
<p>Conecte no seu servidor por <strong>SSH</strong>, por exemplo:</p>
<pre>ssh <span style="color: #ff0000;"><strong>vinicius</strong></span>@<span style="color: #ff0000;"><strong>192.168.1.100</strong></span></pre>
<h3>Passo 2: Criar diretórios para arquivos do container</h3>
<p>Vamos criar um diretório dentro da pasta do usuário chamado <strong>docker</strong>, e depois uma pasta chamada <strong>MySQLTuner</strong> dentro desta pasta:</p>
<pre>mkdir ~/docker
mkdir ~/docker/mysqltuner
cd ~/docker/mysqltuner</pre>
<h3>Passo 3: Criar o arquivo .env</h3>
<p>O arquivo environment (.env) irá guardar as informações de conexão na <strong>base de dados</strong>. Vamos utilizar de exemplo a base de dados do container do <strong>moodle</strong> deste tutorial: <a href="https://viniciuspaes.com/docker/tutorial-docker-container-moodle-lms/" target="_blank" rel="noopener"><strong>container moodle</strong></a></p>
<pre>nano .env</pre>
<p>Inserir as informações dentro do arquivo:</p>
<pre>DOMAIN=<span style="color: #ff0000;"><strong>cursos.viniciuspaes.com</strong></span>
HOST=<span style="color: #ff0000;"><strong>moodledb</strong></span>
USER=root
PASS=<span style="color: #ff0000;"><strong>senha_banco_dados</strong></span>
PORT=3306
MEM=<span style="color: #ff0000;"><strong>8192</strong></span></pre>
<p>Lembrando que nas informações acima, o nome do <strong>HOST</strong> é o nome do nosso container do mariadb. Como estamos utilizando o exemplo do container que hospeda o <strong>moodle</strong>, o nome dele é <strong>moodledb</strong> (container da imagem do <strong>mariadb</strong>). A porta utilizada é a porta interna do container, que a padrão do mysql/mariadb é a <strong>3306</strong>. A variável <strong>MEM</strong>, é relativa a memória ram disponível do <strong>HOST</strong>. A variável <strong>DOMAIN</strong> é utilizada para dar nome ao <strong>container</strong>, como estamos utilizando o exemplo do container do <strong>moodle</strong>, mantivemos o nome do subdomínio para ficar organizado dentro do <strong>portainer</strong> quando formos procurar pela <strong>stack</strong>.</p>
<h3>Passo 4 &#8211; Criar a rede privada do mysqltuner</h3>
<p>Para evitar abrir porta externa do container do <strong>mariadb</strong>, vamos ter que colocar o container do <strong>MySQLTuner</strong> na mesma rede do container do <strong>mariadb</strong> que queremos inspecionar. Primeiro, vamos criar então uma rede chamada <strong>MySQLTuner</strong>:</p>
<pre>docker network create mysqltuner</pre>
<h3>Passo 5 &#8211; Editar o docker compose do seu container do mariadb</h3>
<p>Se não tiver criado ainda um container do <strong>mariadb</strong>, basta criar. Se já tiver um container criado, basta adicionar a rede <strong>mysqltuner</strong> no container do mariadb. No exemplo abaixo <strong>destacamos</strong> apenas o update que realizamos no container do <strong>mariadb</strong> para adicionar a rede do <strong>mysqltuner</strong> e ativar o <strong>performance-schema</strong>:</p>
<pre>  moodledb:
    image: mariadb:latest
    container_name: ${DOMAIN}_db
    command: '--default-authentication-plugin=mysql_native_password <span style="color: #339966;"><strong>--performance-schema</strong></span>'
    volumes:
      - ./db_data:/var/lib/mysql
<span style="color: #339966;"><strong>      - ./mariadb-conf/my.cnf:/root/.my.cnf</strong></span>
    restart: always
    env_file: .env
    environment:
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_DATABASE=${MYSQL_DB}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
      - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
      - MARIADB_CHARACTER_SET=utf8mb4
      - MARIADB_COLLATE=utf8mb4_unicode_ci
    networks:
      - default
<span style="color: #339966;"><strong>      - mysqltuner</strong></span>

networks:
  default:
    name: rede_${DOMAIN}
  rede_proxy_reverso:
    external: true
<span style="color: #339966;"><strong>  mysqltuner:
    external: true
</strong></span></pre>
<p>No código acima, repare que mapeamos o arquivo <strong>my.cnf</strong> para acesso externo ao container. Desta forma, caso tenha o desejo de realizar modificações de performance nessa instância do <strong>mysql</strong>, basta editar o arquivo e adicioná-las.</p>
<h3>Passo 6 &#8211; Criar o docker compose do container do mysqltuner</h3>
<p>Vamos criar agora o <strong>docker compose</strong> do container do <strong>MySQLTuner</strong>:</p>
<pre>nano docker-compose.yml</pre>
<p>Inserir o conteúdo abaixo dentro do arquivo:</p>
<pre>services:

  mysqltuner:
    container_name: ${DOMAIN}_mysqltuner
    build: .
    volumes:
     - ./projects:/srv/projects
    env_file:
      - .env
    networks:
      - mysqltuner
    stdin_open: true
    tty: true
    command: --host ${HOST} --port ${PORT} --user ${USER} --pass ${PASS} --forcemem ${MEM}

networks:
  mysqltuner:
    external: true
</pre>
<h3>Passo 7 &#8211; Realizar download de arquivos necessários do <strong>MySQLTuner</strong></h3>
<p>Precisamos agora realizar o download dos arquivos necessários para o funcionamento do <strong>MySQLTuner</strong>:</p>
<pre>wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/vulnerabilities.csv
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/template_example.tpl
</pre>
<h3>Passo 8 &#8211; Criar o arquivo Dockerfile</h3>
<p>Vamos construir nosso próprio container do <strong>MySQLTuner</strong>, então precisamos criar um arquivo do tipo <strong>Dockerfile</strong>:</p>
<pre>nano Dockerfile</pre>
<p>Inserir o código abaixo dentro do arquivo:</p>
<pre>FROM ubuntu:latest

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update &amp;&amp; apt upgrade -y &amp;&amp; apt-get install -yq --no-install-recommends \
    apt-utils \
    curl \
    wget \
    perl \
    perl-doc \
    mysql-client \
    libjson-perl \
    libtext-template-perl \
    &amp;&amp; apt-get clean \
    &amp;&amp; rm -rf /var/lib/apt/lists/* \
    &amp;&amp; mkdir -p /results

RUN apt clean all

WORKDIR /

COPY ./mysqltuner.pl /mysqltuner.pl
COPY ./vulnerabilities.csv /vulnerabilities.txt
COPY ./basic_passwords.txt /basic_passwords.txt
COPY ./template_example.tpl /template.tpl

ENTRYPOINT [ "perl", "/mysqltuner.pl", "--passwordfile", "/basic_passwords.txt",\
             "--cvefile", "/vulnerabilities.txt", "--nosysstat", "--defaults-file", \
             "/defaults.cnf", "--dumpdir", "/results", "--outputfile", \
             "/results/mysqltuner.txt", "--template", "/template.tpl", \
             "--reportfile", "/results/mysqltuner.html" ]

CMD ["--verbose" ]
</pre>
<h3>Passo 9 &#8211; Criar o container do mysqltuner</h3>
<p>Agora é a última etapa! Para utilizar o <strong>docker compose</strong> para iniciar o container:</p>
<pre>docker compose up -d</pre>
<p>Se tudo correu bem e as configurações foram realizadas da forma correta, é possível inspecionar o log do container do <strong>MySQLTuner</strong> e verificar a saída do diagnóstico:</p>
<pre>docker logs <strong><span style="color: #ff0000;">cursos.viniciuspaes.com_mysqltuner</span></strong></pre>
<p>No comando acima, você pode substituir o nome do container pelo seu ID de identificação. Primeiro utilize o comando:</p>
<pre>docker ps</pre>
<p>Agora anote o ID do container do mysqltuner, por exemplo:</p>
<pre>CONTAINER ID   IMAGE             COMMAND                  CREATED             STATUS           NAMES
ab81292190a2   mariadb:latest    "docker-entrypoint.s…"   45 minutes ago      Up 45 minutes    cursos.viniciuspaes.com_db
<span style="color: #339966;"><strong>jh370de553a5</strong>   <strong>mysqltuner</strong></span>        "perl /mysqltuner.pl…"   About an hour ago   Up 5 seconds     cursos.viniciuspaes.com_mysqltuner
</pre>
<p>No código acima, vemos que o ID do container do MySQLTuner é:</p>
<pre><span style="color: #339966;"><strong>jh370de553a5</strong></span></pre>
<p>Podemos então acessar o log do container pelo comando:</p>
<pre>docker logs <span style="color: #ff0000;"><strong>jh370de553a5</strong></span></pre>
<p>Vamos ter como saída algo como:</p>
<pre>-------- Recommendations ---------------------------------------------------------------------------
General recommendations:
    MySQL was started within the last 24 hours: recommendations may be inaccurate
    Reduce your overall MySQL memory footprint for system stability
    Dedicate this server to your database for highest performance.
    Be careful, increasing innodb_log_file_size / innodb_log_files_in_group means higher crash recovery mean time
Variables to adjust:
  *** MySQL's maximum memory usage is dangerously high ***
  *** Add RAM before increasing MySQL buffer variables ***
    table_definition_cache (600) &gt; 792 or -1 (autosizing if supported)
    innodb_log_file_size should be (=32M) if possible, so InnoDB total log file size equals 25% of buffer pool size.
    innodb_log_buffer_size (&gt; 16M)
</pre>
<h2>Conclusão</h2>
<p>O <strong>MySQLTuner</strong> é uma boa ferramenta para avaliar possibilidades de melhoria no seu setup de banco de dados. O tutorial descreve uma forma de criar um container funcional para o <strong>MySQLTuner</strong>, e os passos para configurar sua conexão ao <strong>banco de dados</strong>.</p>
<p>Qualquer dúvida ou sugestão, basta informar nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-criar-docker-container-do-mysqltuner/">Tutorial criar docker container do MySQLTuner</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/docker/tutorial-criar-docker-container-do-mysqltuner/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial criar docker container moodle lms</title>
		<link>https://viniciuspaes.com/docker/tutorial-docker-container-moodle-lms/</link>
					<comments>https://viniciuspaes.com/docker/tutorial-docker-container-moodle-lms/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Thu, 12 Dec 2024 20:32:26 +0000</pubDate>
				<category><![CDATA[docker]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[docker compose]]></category>
		<category><![CDATA[moodle]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=3027</guid>

					<description><![CDATA[<p>Tutorial passo a passo ensinando a criar um docker container enxuto do Moodle LMS: com mariaDB, phpmyadmin, suporte a nome de domínio e certificado SSL.</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-docker-container-moodle-lms/">Tutorial criar docker container moodle lms</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>O objetivo deste tutorial é criar um container enxuto com a Ferramenta de Gerenciamento de Cursos <strong>Moodle</strong>. Este setup aborda a configuração de um domínio e suporte à conexão https (SSL). Este setup não utiliza o container oficial do moodle-hq, ao invés disso cria um ambiente mais enxuto e instala o <strong>Moodle</strong> do repositório oficial manualmente pelo Dockerfile.</p>
<h2>Considerações</h2>
<p>Alguns entusiastas do <strong>Moodle LMS</strong> (vide fórum de suporte do moodle) não recomendam utilizar o moodle em um container. O principal motivo levantando é que orquestrar o moodle em um container ocasiona um overhead de recursos do servidor, pois adiciona mais uma camada de processamento e complexidade. Esta justificativa pode parecer relevante para alguns casos onde os recursos são limitados e os cursos possuem altas demandas. Porém, se possuir uma infraestrutura de servidores corretamente dimensionadas (preferencialmente com interface web desacoplada do banco de dados), ou baixa demanda concorrente nos cursos, utilizar um container no docker é uma opção simples e eficaz.</p>
<h2>Condições de contorno</h2>
<p>Este tutorial foi testado tanto em ambiente x86/amd64 quando ARM64. Ou seja, você pode utilizar este setup tanto em um computador/servidor, quanto em um raspberry pi, por exemplo.</p>
<h2>Requisitos</h2>
<p>Alguns recursos são necessários para que você possa seguir este tutorial:</p>
<ul>
<li>Software docker e docker compose instalados e configurados</li>
<li>Conexão internet para realização dos downloads necessários</li>
<li>Capacidade de editar arquivos de configuração</li>
<li>Capacidade de executar comandos no servidor: preferencialmente via conexão ssh, caso servidor remoto</li>
</ul>
<p>Vamos fornecer passo a passo sobre quais arquivos precisam ser editados e como editar estes arquivos pela linha de comando.</p>
<h2>Passo a passo em como criar um container docker enxuto para o gerenciador de cursos Moodle LMS</h2>
<h3>Passo 1 &#8211; Conexão no servidor</h3>
<p>Caso tenha acesso físico ao servidor ou computador (com acesso com teclado/mouse/monitor), que vá instalar o moodle, não é necessário conexão SSH. Caso contrário, levando em consideração que seu servidor possua o IP: <span style="color: #ff0000;"><strong>192.168.1.100</strong></span>, será necessário realizar a conexão pelo prompt. Você também precisa saber qual seu usuário de conexão SSH e sua senha/certificado configurado. Para realizar a conexão, execute o comando:</p>
<pre>ssh <span style="color: #ff0000;"><strong>usuario</strong></span>@<span style="color: #ff0000;"><strong>192.168.1.100</strong></span></pre>
<h3>Passo 2 &#8211; Criar a pasta para o container</h3>
<p>É interessante ter uma pasta chamada &#8220;docker&#8221; para guardar os arquivos de configuração e os volumes dos seus containers criados. Pensando na <strong>pasta home</strong> do seu usuário, vamos criar então:</p>
<pre>mkdir ~/docker
mkdir ~/docker/moodle
cd ~/docker/moodle
</pre>
<h3>Passo 3 &#8211; Criar arquivos de configuração</h3>
<p>Neste setup não vamos utilizar a diretiva <strong>HTTP_X_FORWARDED_PROTO</strong>.  Então vamos configurar a imagem do container para acessar o certificado SSL externamente e habilitar suporte SSL dentro do container também, pela porta 443.</p>
<p>Os arquivos que precisam ser criados são:</p>
<ul>
<li><strong>.env</strong>: este arquivo descreve valores para variáveis que vamos utilizar no arquivo de configuração do docker-compose.yml. Por exemplo: nome de usuário do banco, senha do banco de dados, domínio, etc.</li>
<li><strong>Dockerfile</strong>: arquivo que descreve como o container do moodle deve ser criado.</li>
<li><strong>docker-compose.yml</strong>: descreve o conjunto de containers devem ser criados e suas características.</li>
<li><strong>default-ssl.conf</strong>: arquivo que descreve a configuração do virtualhost para ter suporte ssl (porta 443).</li>
<li><strong>000-default.conf</strong>: arquivo que descreve a configuração do virtualhost para acesso sem ssl (porta 80).</li>
<li><strong>create-moodle.sh</strong>: arquivo de shell que cria todos os arquivos acima, exceto o arquivo .env.</li>
</ul>
<p>Na prática, vamos ter que criar apenas 2 arquivos, o arquivo <strong>.env </strong>e o arquivo <strong>create-moodle.sh</strong>.</p>
<p>Estamos dentro da pasta <strong>~/docker/moodle</strong>, então já podemos criar o arquivo <strong>.env</strong> com o comando:</p>
<pre>nano .env</pre>
<p>Agora insira as informações:</p>
<pre>MYSQL_USER=<span style="color: #ff0000;"><strong>usuario_banco_dados</strong></span>
MYSQL_PASSWORD=<span style="color: #ff0000;"><strong>senha_banco_dados</strong></span>
MYSQL_DB=<span style="color: #ff0000;"><strong>nome_banco_dados</strong></span>
DOMAIN=<span style="color: #ff0000;"><strong>cursos.viniciuspaes.com</strong></span></pre>
<p>No arquivo acima, estamos utilizando um subdomínio &#8220;<span style="color: #ff0000;"><strong>cursos.viniciuspaes.com</strong></span>&#8221; como exemplo. Este nome de domínio (subdomínio) será atribuído também ao nome do container do moodle.</p>
<p>Vamos criar agora o arquivo <strong>create-moodle.sh</strong> com o comando:</p>
<pre>nano create-moodle.sh</pre>
<p>Agora cole o conteúdo abaixo dentro do arquivo:<br />
<script src="https://gist.github.com/viniciuspaes/1605467726566764f30c694b0c37f8f9.js"></script></p>
<p>Com o arquivo criado, é necessário conceder permissão de descrita:</p>
<pre>sudo chmod +x create-moodle.sh</pre>
<p>O arquivo <strong>create-moodle.sh</strong> irá criar todos os arquivos de configuração necessários (exceto <strong>.env</strong>), ira também verificar qual <strong>UID</strong> e <strong>GID</strong> do seu usuário e inserir essa informação no arquivo <strong>.env</strong>.</p>
<p>Para executar o arquivo, precisa utilizar o comando:</p>
<pre>./create-moodle.sh</pre>
<p>Ao executar esse comando, os arquivos abaixo serão criados:</p>
<ul>
<li>Dockerfile</li>
<li>docker-compose.yml</li>
<li>default-ssl.conf</li>
<li>000-default.conf</li>
</ul>
<h3>Passo 4 &#8211; Editar arquivo de configuração</h3>
<p>Agora precisamos editar o arquivo <strong>docker-compose.yml</strong> e verificar se as configurações estão corretas.</p>
<p>Neste arquivo, as portas foram mapeadas da seguinte forma:</p>
<ul>
<li><strong>Moodle</strong>: porta externa 8000 mapeada para porta interna 80</li>
<li><strong>Moodle</strong>: porta externa 8443 mapeada para porta interna 443</li>
<li><strong>Phpmyadmin</strong>: porta externa 8001 mapeada para porta interna 80</li>
</ul>
<p>Então, com o IP de exemplo sendo <span style="color: #ff0000;"><strong>192.168.1.100</strong></span>, os serviços ficarão disponíveis:</p>
<pre>http://192.168.1.100:8000
https://192.168.1.100:8443
http://192.168.1.100:8001</pre>
<p>O nome do container do moodle irá receber o nome do domínio definido no arquivo <strong>.env</strong>. Caso queira um nome diferente, basta alterar. Caso não tenha um nome de domínio definido no arquivo .env, será inserido o nome localhost.</p>
<p>Ainda no arquivo <strong>docker-compose.yml</strong>, é necessário confirmar o caminho para seu <strong>certificado SSL</strong>, caso tenha um configurado. Você pode solicitar um certificado pelo container do Nginx Proxy Manager ou diretamente pelo letsencrypt, mas é necessário saber onde o certificado ficou salvo. No docker compose de exemplo, temos as 4 linhas:</p>
<pre>- <span style="color: #ff0000;"><strong>/home/vinicius/docker/nginxproxymanager</strong><strong>/letsencrypt</strong></span>/live/npm-<span style="color: #ff0000;"><strong>XX</strong></span>/fullchain.pem:/etc/apache2/ssl-certs/server.crt
- <span style="color: #ff0000;"><strong>/home/vinicius/docker/nginxproxymanager</strong><strong>/letsencrypt</strong></span>/live/npm-<span style="color: #ff0000;"><strong>XX</strong></span>/privkey.pem:/etc/apache2/ssl-certs/server.key
# - /etc/letsencrypt/live/<span style="color: #ff0000;"><strong>${DOMAIN}</strong></span>/fullchain.pem:/etc/apache2/ssl-certs/server.crt
# - /etc/letsencrypt/live/<span style="color: #ff0000;"><strong>${DOMAIN}</strong></span>/privkey.pem:/etc/apache2/ssl-certs/server.key</pre>
<p>As 2 primeiras linhas acima, são um exemplo do caminho do certificado gerado pelo <strong>Nginx Proxy Manager</strong>, revisar qual o caminho da sua instalação e realizar as modificações. Caso utilize um container do letsencrypt ou tenha o certbot instalado sem o docker, o caminho do certificado será algo semelhante as 2 últimas linhas acima. O caractere # no começo da linha serve para transforma ela em um comentário, desabilitando sua funcionalidade. Então caso utilize o padrão do container do letsencrypt, insira o caractere # nas duas primeiras linhas, para desabilitá-las e remova das 2 linhas de baixo. Ou mesmo apague as linhas que não for utilizar.</p>
<h3>Passo 5 &#8211; Executar o docker compose e criar o container</h3>
<p>Com as configurações descritas acima realizadas, precisamos agora executar o arquivo <strong>docker-compose.yml</strong>. Ao executar o mesmo, o container do Moodle será criado/construído, o que irá levar alguns minutos dependendo da velocidade da sua internet e poder de processamento. O container do <strong>mariadb</strong> e <strong>phpmyadmin</strong> estão &#8220;prontos&#8221; e só será realizado o download e execução. Para iniciar o funcionamento, execute então:</p>
<pre>docker compose up -d</pre>
<p>Como mencionado, o processo pode demorar alguns minutos (certamente vai demorar pelo menos uns 5 minutos).</p>
<h3>Passo 6 &#8211; Conferir arquivos criados</h3>
<p>Após a execução de todos os passos acima, os seguintes arquivos e diretórios devem estar presentes dentro da pasta:</p>
<ul>
<li>.<strong>env</strong></li>
<li><strong>000-default.conf</strong></li>
<li><strong>Dockerfile</strong></li>
<li><strong>create-moodle.sh</strong></li>
<li><strong>db_data</strong> &#8211; diretório onde os arquivos do banco de dados ficam guardados</li>
<li><strong>default-ssl.conf</strong></li>
<li><strong>docker-compose.yml</strong></li>
<li><strong>logs</strong> &#8211; diretório onde os logs do apache ficam guardados</li>
<li><strong>moodle_data</strong> &#8211; diretório arquivos do moodle</li>
<li><strong>moodledata_data</strong> &#8211; diretório dos arquivos de cursos criados no moodle</li>
</ul>
<p>Nesta etapa é interessante conferir se o container conseguiu realizar o download dos arquivos do <strong>Moodle</strong> e inserir na pasta <strong>moodle_data</strong>.</p>
<p>Execute o comando para verificar o conteúdo da pasta:</p>
<pre>ls moodle_data</pre>
<p>Se os arquivos foram copiados com sucesso, irá ter como resultado algo semelhante a:</p>
<pre>CONTRIBUTING.md  blocks           course         help.php       my                   report
COPYING.txt      blog             customfield    help_ajax.php  notes                reportbuilder
Gruntfile.js     brokenfile.php   dataformat     index.php      npm-shrinkwrap.json  repository
INSTALL.txt      cache            draftfile.php  install        package.json         rss
README.md        calendar         editmode.php   install.php    payment              search
TRADEMARK.txt    cohort           enrol          iplookup       phpcs.xml.dist       security.txt
UPGRADING.md     comment          error          lang           phpunit.xml.dist     sms
admin            communication    favourites     lib            pix                  tag
ai               competency       file.php       local          plagiarism           theme
analytics        completion       files          login          pluginfile.php       tokenpluginfile.php
auth             composer.json    filter         media          portfolio            user
availability     composer.lock    githash.php    message        privacy              userpix
backup           config-dist.php  grade          mnet           question             version.php
badges           config.php       group          mod            r.php                webservice
behat.yml.dist   contentbank      h5p            moodlenet      rating
</pre>
<p><span style="color: #ff9900;"><strong>ATENÇÃO!</strong></span> Só realize esta etapa caso o diretório <strong>moodle_data</strong> estiver vazio, então realize o download manualmente:</p>
<pre>cd moodle_data
wget https://download.moodle.org/download.php/direct/stable<span style="color: #ff0000;"><strong>405</strong></span>/moodle-latest-<span style="color: #ff0000;"><strong>405</strong></span>.tgz
tar -zxvf moodle-latest-<span style="color: #ff0000;"><strong>405</strong></span>.tgz --strip-components=1
rm -R moodle-latest-<span style="color: #ff0000;"><strong>405</strong></span>.tgz
cd ..
chmod 0755 moodle_data -R</pre>
<h3>Passo 7 &#8211; Configurar domínio</h3>
<p>Caso tenha um domínio registrado, crie as entradas <strong>DNS</strong> do tipo <strong>A</strong> e <strong>CNAME</strong> para seu servidor.</p>
<p>Caso utilize o <strong>Nginx Proxy Manager, </strong>as informações necessárias são:</p>
<pre>Domains Names: <span style="color: #ff0000;"><strong>cursos.viniciuspaes.com</strong></span>
Scheme: https
Foward Hostname IP: <span style="color: #ff0000;"><strong>cursos.viniciuspaes.com</strong></span>
Foward Port: 443</pre>
<p>Na aba SSL solicite um certificado SSL e adicione o caminho do certificado corretamente no <strong>docker-compose.yml</strong>, caso ainda não tenha feito (como destacado no fim do passo 4). Como o <strong>Nginx Proxy Manager</strong> está na mesma rede do container do <strong>Moodle</strong>, utilizamos em &#8220;Foward Port&#8221; a porta interna (443) e no &#8220;Foward Hostname IP&#8221; utilizamos o nome do container (cursos.viniciuspaes.com), que por coincidência é o nome do domínio (subdomínio) utilizado para o website. Se não estiver utilizando o container na mesma rede do <strong>Nginx Proxy Manager</strong>, a configuração acima fica diferente. Sendo necessário configurar a porta externa (8443) e utilizar o IP do servidor no campo de Foward Hostname IP (<span style="color: #ff0000;"><strong>192.168.1.100</strong></span>).</p>
<h3>Passo 8 &#8211; Acessar moodle pela interface web e iniciar a instalação</h3>
<p>Neste passo é interessante acessar o servidor pelo nome do domínio, ao invés do IP + porta. Caso tenha algum erro ao acessar pelo nome de domínio, revise os passos anteriores.</p>
<p>Para acessar a instalação do <strong>moodle</strong>, basta acessar o site pelo nome do domínio, neste exemplo:</p>
<pre><strong><span style="color: #ff0000;">https://cursos.viniciuspaes.com</span></strong></pre>
<p>Caso abra corretamente o site do moodle, você será encaminhado por alguns passos para configurar o idioma da instalação e credenciais do banco de dados.</p>
<p>A última etapa antes da instalação é um checklist de todas as dependências necessárias para o funcionamento do moodle. Neste tutorial, o Dockerfile está preparado para fornecer todas as dependências necessárias para a versão 4.05 do <strong>Moodle</strong>. Caso instale uma versão mais atual, é possível que apareça alguma necessidade nova.</p>
<p><span style="color: #ff9900;"><strong>ATENÇÃO!</strong></span> É comum que apareça a necessidade &#8220;UNICODE&#8221; na instalação, na página de checklist. Essa referência é diante o banco de dados e costuma ser super simples de arrumar. Caso apareça, basta executar os comandos abaixo:</p>
<pre>cd ~/docker/moodle
cd moodle_data
nano config.php</pre>
<p>Dentro do arquivo <strong>config.php</strong>, encontre a linha que começa com <strong>&#8220;&#8216;dbcollation&#8217; =&gt;&#8221;</strong>, tenha certeza que ela fique da forma:</p>
<pre>'dbcollation' =&gt; 'utf8mb4_unicode_ci',</pre>
<p>Dê um refresh na página de instalação do <strong>Moodle</strong> e estará pronto para instalar.</p>
<h2>Conclusão</h2>
<p>A instalação do Moodle LMS não é algo trivial diante as dependências necessárias, porém este tutorial tenta minimizar todos estes esforços com um código em shell script para automatizar várias etapas. É interessante lembrar que há um container oficial do <strong>moodlq-hq</strong>, com um arquivo <strong>docker-compose</strong> para a configuração do moodle. Mas sinceramente, não gostei da documentação apresentada, tampouco da stack de containers que utilizam. Este tutorial visa simplificar ao máximo os passos, mantendo uma instalação enxuta e eficiente. Um upgrade interessante para este tutorial, seria habilitar a diretiva <strong>HTTP_X_FORWARDED_PROTO</strong> e minimizar o link de certificados SSL para dentro do container.</p>
<p>Qualquer dúvida ou sugestão, basta informas nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-docker-container-moodle-lms/">Tutorial criar docker container moodle lms</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/docker/tutorial-docker-container-moodle-lms/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial container Nginx Proxy Manager e WordPress com SSL</title>
		<link>https://viniciuspaes.com/docker/tutorial-container-nginx-proxy-manager-wordpress-ssl/</link>
					<comments>https://viniciuspaes.com/docker/tutorial-container-nginx-proxy-manager-wordpress-ssl/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Tue, 26 Nov 2024 22:19:34 +0000</pubDate>
				<category><![CDATA[docker]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[website]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[docker compose]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[nginx proxy manager]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2981</guid>

					<description><![CDATA[<p>Aprenda a criar um container enxuto com wordpress com suporte SSL utilizando Nginx como proxy reverso.</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-container-nginx-proxy-manager-wordpress-ssl/">Tutorial container Nginx Proxy Manager e WordPress com SSL</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Este tutorial tem como objetivo destacar os passos para criar um container <strong>WordPress</strong> com <strong>SSL</strong> utilizando um <strong>nome de domínio</strong> configurado no proxy reverso do container <strong>Nginx Proxy Manager</strong>.</p>
<ul>
<li>Forma mais simples de garantir suporte SSL ao container do <strong>wordpress</strong>, não é necessário realizar build para ativar porta 443 interna.</li>
<li>Utilizando suporte a <strong>HTTP_X_FORWARDED_PROTO</strong>, o SSL configurado pelo proxy reverso é redirecionado para dentro do container do WordPress, mesmo que este só tenha a porta 80 habilitada.</li>
</ul>
<h2>Requisitos</h2>
<ul>
<li>Se estiver utilizando um servidor caseiro (home lab) seu roteador precisa encaminhar (PORT FOWARD) as portas 80 (http) e 443 (https) para o seu servidor</li>
<li>O firewall do seu servidor precisa aceitar acesso na porta 80 e 443 (normalmente são abertas)</li>
<li>Garantir que não tenha outro serviço utilizando a porta 80 e 443, senão o container no NPM (<strong>Nginx Proxy Manager</strong>) não ficará funcional
<ul>
<li>Caso possua o apache instalado, basta executar:
<ul>
<li>sudo service apache2 stop</li>
<li>sudo update-rc.d apache2 disable</li>
</ul>
</li>
<li>Caso possua o nginx instalado, basta executar:
<ul>
<li>sudo service nginx stop</li>
<li>sudo update-rc.d -f nginx disable</li>
</ul>
</li>
</ul>
</li>
<li>Ter um nome de domínio configurado e apontado para seu servidor
<ul>
<li>Nesse tutorial vamos usar o nome de domínio <span style="color: #339966;"><strong>site1.com.br</strong></span> como exemplo</li>
</ul>
</li>
<li>Ter software docker e docker compose instalados e configurados</li>
</ul>
<h2>Passo a passo para criar containers wordpress com suporte SSL através de proxy reverso do Nginx Proxy Manager</h2>
<h3>Passo 1: Criar pasta para guardar arquivos</h3>
<pre>mkdir ~/docker
mkdir ~/docker/nginxproxymanager
mkdir ~/docker/site1.com.br</pre>
<h3>Passo 2: Criar uma rede para todos os container que utilizarem o proxy reverso</h3>
<p>Criar uma rede para os containers conseguirem conversar com o NPM:</p>
<pre>docker network create <span style="color: #339966;"><strong>rede_proxy_reverso</strong></span></pre>
<h3>Passo 3: Criar arquivo docker compose para nginx proxy manager</h3>
<pre>cd ~/docker/nginxproxymanager
nano docker-compose.yml</pre>
<p>Colar o conteúdo:</p>
<pre>services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx_proxy
    ports:
      - '80:80'
      - '<span style="color: #ff0000;"><strong>8081</strong></span>:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    restart: unless-stopped
    networks:
      - <span style="color: #339966;"><strong>rede_proxy_reverso</strong></span>
      - default

  db:
    image: mariadb:latest
    container_name: nginx_proxy_db
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DB}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    volumes:
      - ./db_data:/var/lib/mysql
    restart: unless-stopped
    networks:
      - default

networks:
  default:
    name: rede_npm
  <span style="color: #339966;"><strong>rede_proxy_reverso</strong></span>:
    external: true
</pre>
<h3>Passo 5: Criar arquivo .env para nginx proxy manager</h3>
<pre>cd ~/docker/nginxproxymanager
nano .env</pre>
<p>Colar o conteúdo abaixo dentro do arquivo:</p>
<pre>MYSQL_USER=<strong><span style="color: #ff0000;">nome_usuario_banco_npm</span></strong>
MYSQL_PASSWORD=<span style="color: #ff0000;"><strong>senha_banco_dados_npm</strong></span>
MYSQL_DB=<span style="color: #ff0000;"><strong>nome_banco_dados_npm</strong></span>
DOMAIN=nginx.proxy
USER=<span style="color: #ff0000;"><strong>1000</strong></span>
GROUP=<span style="color: #ff0000;"><strong>1000</strong></span></pre>
<h3>Passo 6: Criar arquivo docker compose para <strong>site1.com.br</strong> que é um container wordpress</h3>
<pre>cd ~/docker/<span style="color: #ff0000;"><strong>site1.com.br</strong></span>
nano docker-compose.yml</pre>
<p>Agora precisamos colar o conteúdo abaixo dentro do arquivo:</p>
<pre>services:

  <strong>db</strong>:
    image: mariadb:latest
    container_name: ${DOMAIN}_db
    command: '--default-authentication-plugin=mysql_native_password'
    volumes:
      - ./db_data:/var/lib/mysql
    restart: always
    env_file: <strong>.env</strong>
    environment:
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_DATABASE=${MYSQL_DB}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
      - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
    networks:
      - default

  <span style="color: #ff0000;"><strong>site1.com.br</strong></span>:
    image: wordpress:latest
    container_name: ${DOMAIN}_web
    env_file:
      - <strong>.env</strong>
    depends_on:
      - <strong>db</strong>
    volumes:
      - ./public_html:/var/www/html/
      - ./logs:/var/log/apache2
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
    ports:
      - "<span style="color: #ff0000;"><strong>9</strong><strong>080</strong></span>:80"
    restart: always
    environment:
      - WORDPRESS_DB_HOST=db:3306
      - WORDPRESS_DB_USER=${MYSQL_USER}
      - WORDPRESS_DB_PASSWORD=${MYSQL_PASSWORD}
      - WORDPRESS_DB_NAME=${MYSQL_DB}
      - WORDPRESS_TABLE_PREFIX=${WP_PREFIX}
    extra_hosts:
      - "${DOMAIN}:127.0.1.1"
    entrypoint:
      - /bin/sh
      - -c
      - |
        usermod -u $${USER} www-data
        groupmod -g $${GROUP} www-data
        /usr/local/bin/docker-entrypoint.sh apache2-foreground
    networks:
      - <strong><span style="color: #339966;">rede_proxy_reverso</span></strong>
      - default

  phpmyadmin:
    container_name: ${DOMAIN}-phpmyadmin
    image: linuxserver/phpmyadmin
    env_file: <strong>.env</strong>
    environment:
      PMA_HOST: <strong>db</strong> #nome do container que proverá recursos de banco de dados, neste caso o container chama db
      PMA_PORT: 3306
      MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
      UPLOAD_LIMIT: <span style="color: #ff0000;"><strong>64M</strong></span>
      MEMORY_LIMIT: <span style="color: #ff0000;"><strong>256M</strong></span>
      MAX_EXECUTION_TIME: <span style="color: #ff0000;"><strong>300</strong></span>
    ports:
      - "<span style="color: #ff0000;"><strong>9081</strong></span>:80"
    networks:
      - default

networks:
  default:
    name: rede_${DOMAIN}
  <strong><span style="color: #339966;">rede_proxy_reverso</span></strong>:
    external: true
</pre>
<h3>Passo 7: Criar arquivo .env para <strong>site1.com.br</strong> que é um container wordpress</h3>
<p>Precisamos agora criar o arquivo .env para o container wordpress do domínio site1.com.br:</p>
<pre>cd ~/docker/<span style="color: #ff0000;"><strong>site1.com.br</strong></span>
nano .env</pre>
<p>Cole o conteúdo abaixo dentro do arquivo:</p>
<pre>MYSQL_USER=<span style="color: #ff0000;"><strong>nome_usuario_banco_site1</strong></span>
MYSQL_PASSWORD=<span style="color: #ff0000;"><strong>senha_banco_dados_site1</strong></span>
MYSQL_DB=<span style="color: #ff0000;"><strong>nome_banco_dados_site1</strong></span>
DOMAIN=<span style="color: #ff0000;"><strong>site1.com.br</strong></span>
WP_PREFIX=wp<span style="color: #ff0000;"><strong>SITE1</strong></span>_
USER=<span style="color: #ff0000;"><strong>1000</strong></span>
GROUP=<span style="color: #ff0000;"><strong>1000</strong></span></pre>
<h3>Passo 8: Iniciar os containers</h3>
<p>Iniciar o container do Nginx Proxy Manager:</p>
<pre>cd ~/docker/nginxproxymanager
docker compose up -d</pre>
<p>Iniciar o container wordpress do site1.com.br:</p>
<pre>cd ~/docker/<span style="color: #ff0000;"><strong>site1.com.br</strong></span>
docker compose up -d</pre>
<h3>Passo 9: Testar funcionamento container wordpress</h3>
<p>Configuramos o site1.com.br que é o container wordpress e responder solicitação pela porta <span style="color: #ff0000;"><strong>9080</strong></span> do servidor. Levando em conta que nosso servidor está configurado com o IP <span style="color: #ff0000;"><strong>192.168.1.10</strong></span>,  vamos acessar o site com wordpress pelo browser:</p>
<pre><strong><span style="color: #ff0000;">http://192.168.1.10<span style="color: #000000;">:</span>9080</span></strong></pre>
<p>Se tentar acessar o a URL rapidamente, logo em seguida que criou o container, talvez receba mensagem de <strong>erro de conexão do banco de dados</strong>. O motivo é que o container do mysql demora um pouco para inicializar. Espere mais um pouco e tente acessar a URL novamente.</p>
<p>Se tudo ocorreu corretamente, vai aparecer a tela de configuração inicial do wordpress. <strong><span style="color: #ff6600;">Atenção!</span></strong> Não avance com a configuração, o ideal é realizar o processo já com o nome de domínio configurado.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3001" src="https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-wordpress-container-through-ip.png" alt="Nginx Proxy Manager - verificando funcionamento container wordpress" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-wordpress-container-through-ip.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-wordpress-container-through-ip-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 10 &#8211; Configurar o Nginx Proxy Manager</h3>
<p>Abra o navegador e digite o endereço do servidor juntamente com a porta. Neste exemplo nosso servidor está com endereço IP <span style="color: #ff0000;"><strong>192.168.1.10</strong></span> e porta <span style="color: #ff0000;"><strong>8081</strong></span>. Então:</p>
<pre>http://<span style="color: #ff0000;"><strong>192.168.1.10</strong></span>:<span style="color: #ff0000;"><strong>8081</strong></span></pre>
<p>Agora realize o primeiro login na plataforma:</p>
<pre>Login: <strong>admin@example.com</strong>
Senha: <strong>changeme</strong></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2893" src="https://viniciuspaes.com/wp-content/uploads/2024/10/nginx-proxy-manager-login.png" alt="Nginx Proxy Manager - tela de login" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/10/nginx-proxy-manager-login.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/10/nginx-proxy-manager-login-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora selecione a opção:</p>
<pre>Proxy Hosts</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2894" src="https://viniciuspaes.com/wp-content/uploads/2024/10/nginx-proxy-manager-dashboard.png" alt="Nginx Proxy Manager - ir dashboard proxy hosts" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/10/nginx-proxy-manager-dashboard.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/10/nginx-proxy-manager-dashboard-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Clique agora no botão:</p>
<pre>Add Proxy Host</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2895" src="https://viniciuspaes.com/wp-content/uploads/2024/10/nginx-proxy-manager-dashboard-proxy-hosts.png" alt="Nginx Proxy Manager - adicionar proxy hosts" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/10/nginx-proxy-manager-dashboard-proxy-hosts.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/10/nginx-proxy-manager-dashboard-proxy-hosts-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Vamos configurar agora o domínio <span style="color: #ff0000;"><strong>site1.com.br</strong></span>. Em <strong>Domain Names</strong>, insira o texto:</p>
<pre><span style="color: #ff0000;"><strong>site1.com.br</strong></span></pre>
<p>Em <strong>Scheme</strong>, escolha:</p>
<pre>http</pre>
<p>Em <strong>Foward Hostname / IP</strong>, escolha o IP do seu servidor (<span style="color: #ff0000;"><strong>192.168.1.10</strong></span>), ou o IP de loopback (<span style="color: #ff0000;"><strong>127.0.0.1</strong></span>) ou o nome do container que possui o wordpress instalado, neste caso:</p>
<pre>site1.com.br</pre>
<p>Em porta, vamos escolher a porta interna do container. Como temos uma rede dedicada para o proxy reverso (<strong><span style="color: #339966;">rede_proxy_reverso</span></strong>), o Nginx Proxy Manager consegue conversar pela rede interna compartilhada, não sendo nem mesmo necessário expor a porta do container. Caso não tenha a rede criada, ou vai utilizar o endereço IP, então precisa colocar a porta externa do container (9080). Então vamos escolher a porta:</p>
<pre>80</pre>
<p>Podemos também habilitar as opções:</p>
<pre>Block Common Exploits
Websockets Support</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2997" src="https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-add-proxy-host-site1.png" alt="Nginx Proxy Manager - configuração do domínio" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-add-proxy-host-site1.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-add-proxy-host-site1-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Nesta mesma tela, temos alguma opções no menu superior:</p>
<pre>Details | Custom locations | <strong>SSL</strong> | <strong>Advanced</strong></pre>
<p>Vamos solicitar o certificado SSL, então precisamos selecionar a aba:</p>
<pre>SSL</pre>
<p>Selecione agora a opção:</p>
<pre>Request a new SSL Certificate with Let's Encrypt</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2897" src="https://viniciuspaes.com/wp-content/uploads/2024/10/nginx-proxy-manager-request-certificate-ssl.png" alt="Nginx Proxy Manager - solicitar certificado SSL" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/10/nginx-proxy-manager-request-certificate-ssl.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/10/nginx-proxy-manager-request-certificate-ssl-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caminhe agora para a aba:</p>
<pre>Advanced</pre>
<p>Cole o seguinte texto:</p>
<pre>proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;</pre>
<p>Tudo pronto e configurado. Basta clicar no botão:</p>
<pre>Save</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2998" src="https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-add-proxy-host-advanced-x-fowarded-proto.png" alt="Nginx Proxy Manager - configuração do domínio - salvar configurações" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-add-proxy-host-advanced-x-fowarded-proto.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-add-proxy-host-advanced-x-fowarded-proto-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3003" src="https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-proxy-host-added.png" alt="Nginx Proxy Manager - domínio configurado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-proxy-host-added.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-proxy-host-added-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 11: Testar funcionamento</h3>
<p>As principais configurações estão prontas. Acesse agora o nome de domínio escolhido pelo browser, no caso deste exemplo:</p>
<pre>https://site1.com.br</pre>
<p>Caso as configurações tenham sido realizadas corretamente, você irá se deparar com a tela de instalação do wordpress. Pode serguir com a instalação normalmente.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2999" src="https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-wordpress-container-through-domain-name.png" alt="Nginx Proxy Manager - proxy reverso configurado - pronto para instalar wordpress" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-wordpress-container-through-domain-name.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/11/nginx-proxy-manager-wordpress-container-through-domain-name-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 12: Resumo de configurações</h3>
<p>Um breve resumo das configurações criadas:</p>
<p>Container Nginx Proxy Manager (NPM)</p>
<pre>Portas expostas: 80, 443 e <span style="color: #ff0000;"><strong>8081</strong></span>
Porta da interface web do NPM: <span style="color: #ff0000;"><strong>8081</strong></span></pre>
<p>Container WordPress para o site1.com.br</p>
<pre>Portas expostas: <span style="color: #ff0000;"><strong>9080 </strong></span>e <span style="color: #ff0000;"><strong>9081</strong></span>
Porta site wordpress: <span style="color: #ff0000;"><strong>9080</strong></span>
Porta interface phpmyadmin: <span style="color: #ff0000;"><strong>9081</strong></span></pre>
<p>IP de exemplo do servidor: <span style="color: #ff0000;"><strong>192.168.1.10</strong></span></p>
<p>Para acessar a interface do NPM: <span style="color: #ff0000;"><strong>http:192.168.1.10:8081</strong></span><br />
Para acessar o website pelo ip: <span style="color: #ff0000;"><strong>http://192.168.1.10:9080</strong></span><br />
Para acessar a interface do Phpmyadmin: <span style="color: #ff0000;"><strong>http://192.168.1.10:9081</strong></span><br />
Para acessar o website criado: <span style="color: #ff0000;"><strong>https://site1.com.br</strong></span></p>
<h2>Conclusão</h2>
<p>O setup do container do NPM + WordPress não é trivial, há pequenos detalhes diante a <span style="color: #339966;"><strong>rede compartilhada</strong></span> entre o <strong>proxy reverso</strong> e o container do <strong>wordpress</strong> que influencia na porta a ser utilizada: usualmente pensamos na porta exposta no container, mas a forma mais segura é a porta interna. Utilizar o nome do container (<strong>site1.com.br</strong>) como &#8220;<strong>Foward Hostname</strong>&#8221; dentro do NPM também é um setup que utiliza as vantagens do DNS interno do docker para simplificar a comunicação entre containers. Estas configurações não são triviais para aqueles que estão começando a utilizar o docker e podem causar problemas no setup.</p>
<p>Qualquer dúvida ou sugestão no setup acima, basta entrar em contato pela área de comentários! Feedback é sempre bem vindo!</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-container-nginx-proxy-manager-wordpress-ssl/">Tutorial container Nginx Proxy Manager e WordPress com SSL</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/docker/tutorial-container-nginx-proxy-manager-wordpress-ssl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como mudar o prefixo das tabelas do wordpress</title>
		<link>https://viniciuspaes.com/wordpress/tutorial-mudar-prefixo-tabelas-wordpress/</link>
					<comments>https://viniciuspaes.com/wordpress/tutorial-mudar-prefixo-tabelas-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Sun, 10 Nov 2024 20:32:15 +0000</pubDate>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[banco de dados]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2957</guid>

					<description><![CDATA[<p>Saiba como alterar o prefixo das tabelas de banco de dados de uma instalação do wordpress.</p>
<p>O post <a href="https://viniciuspaes.com/wordpress/tutorial-mudar-prefixo-tabelas-wordpress/">Tutorial como mudar o prefixo das tabelas do wordpress</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Alterar o <strong>prefixo</strong> das <strong>tabelas</strong> do <strong>wordpress</strong> em um <strong>banco de dados</strong> já existente.</p>
<h2>Requisitos</h2>
<p>Ter um banco de dados funcional do <strong>wordpress</strong> onde deseja alterar o <strong>prefixo</strong> das tabelas no <strong>banco de dados</strong>.</p>
<h2>Resumo</h2>
<p>Os passos para alterar o prefixo de um banco de dados do wordpress já existente são:</p>
<ol>
<li>Atualizar o arquivo <strong>wp-config.php</strong> e alterar a linha com o novo prefixo desejado: $table_prefix = &#8216;<strong>wp_</strong>&#8216;;</li>
<li>Caso tenha o <strong>phpmyadmin</strong> instalado, selecione as tabelas e clique na opção: &#8220;Replace table prefix&#8221; ou &#8220;<strong>Substituir o prefixo de tabelas</strong>&#8220;.</li>
<li>Agora é necessário atualizar as referências cruzadas das tabelas do banco, alterar o prefixo anterior (<strong>wp_</strong>) para o novo (<strong>wpNOVO_</strong>). Execute as query SQL (podem ser feitas dentro do phpmyadmin também):
<ul>
<li>update <strong><span style="color: #ff0000;">wpNOVO_</span></strong>usermeta set meta_key = &#8216;<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>capabilities&#8217; where meta_key = &#8216;<span style="color: #ff0000;"><strong>wp_</strong></span>capabilities&#8217;;</li>
<li>update <span style="color: #ff0000;"><strong>wpNOVO_</strong></span>usermeta set meta_key = &#8216;<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>user_level&#8217; where meta_key = &#8216;<span style="color: #ff0000;"><strong>wp_</strong></span>user_level&#8217;;</li>
<li>update <span style="color: #ff0000;"><strong>wpNOVO_</strong></span>usermeta set meta_key = &#8216;<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>autosave_draft_ids&#8217; where meta_key = &#8216;<span style="color: #ff0000;"><strong>wp_</strong></span>autosave_draft_ids&#8217;;</li>
<li>update <span style="color: #ff0000;"><strong>wpNOVO_</strong></span>options set option_name = &#8216;<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>user_roles&#8217; where option_name = &#8216;<span style="color: #ff0000;"><strong>wp_</strong></span>user_roles&#8217;;</li>
</ul>
</li>
</ol>
<p>Abaixo teremos um passo a passo descritivo de cada etapa.</p>
<h2>Passo a passo de como alterar o prefixo do banco de dados do WordPress</h2>
<h3>Passo 1 &#8211; Inserir o novo prefixo no arquivo wp-config.php</h3>
<p>Caso esteja no windows, basta abrir o arquivo <strong>wp-config.php</strong> no bloco de notas e alterar a linha:</p>
<pre>$table_prefix = 'wp<strong>_</strong>';</pre>
<p>Caso esteja realizando a atualização em <strong>linha de comando</strong> no linux ou mac os, caminhe até o diretório raiz da sua instalação do <strong>wordpress</strong> e edite o arquivo <strong>wp-config.php</strong>:</p>
<pre>nano wp-config.php</pre>
<p>Agora com o editor nano aberto, ande até encontrar a linha:</p>
<pre>$table_prefix = 'wp<strong>_</strong>';</pre>
<p>Esta linha indica que todas as tabelas do wordpress começam com o prefixo <strong>wp_</strong>.</p>
<p>Caso queira um prefixo novo chamado <strong>wpNOVO_</strong>, basta alterar essa linha para:</p>
<pre>$table_prefix = '<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>';</pre>
<h3>Passo 2 &#8211; Alterar o prefixo existente no banco de dados</h3>
<p>O próximo passo é alterar manualmente o prefixo existente nas tabelas do banco de dados.</p>
<h4><strong>Opção 1: Alterar prefixos utilizando phpmyadmin</strong></h4>
<p>Caso tenha o phpmyadmin instalado, basta clicar no banco de dados para que as tabelas apareçam ao lado direito.</p>
<p>Agora clique em:</p>
<pre>Marcar todos</pre>
<p>Ao lado de Marcar todos, clique em:</p>
<pre>Com marcados:</pre>
<p>E finalmente selecione:</p>
<pre>Substituir o prefixo de tabelas</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2963" src="https://viniciuspaes.com/wp-content/uploads/2024/11/wordpress-mudanca-prefixo-tabelas-selecionar-opcao.png" alt="Wordpress - alterar o prefixo de tabelas - selecionar tabelas pelo phpmyadmin" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/11/wordpress-mudanca-prefixo-tabelas-selecionar-opcao.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/11/wordpress-mudanca-prefixo-tabelas-selecionar-opcao-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Um modal irá abrir para você selecionar o prefixo antigo atual e o novo prefixo que deseja alterar. Do nosso exemplo o prefixo atual é o original:</p>
<pre><span style="color: #ff0000;"><strong>wp_</strong></span></pre>
<p>O novo prefixo desejado vai ser:</p>
<pre><span style="color: #ff0000;"><strong>wpNOVO_</strong></span></pre>
<p>Agora basta clicar em:</p>
<pre>Continuar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2964" src="https://viniciuspaes.com/wp-content/uploads/2024/11/wordpress-mudanca-prefixo-tabelas-prefixo-antigo-novo.png" alt="Wordpress - alterar o prefixo de tabelas - definir prefixo antigo e novo" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/11/wordpress-mudanca-prefixo-tabelas-prefixo-antigo-novo.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/11/wordpress-mudanca-prefixo-tabelas-prefixo-antigo-novo-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4><strong>Opção 2 &#8211; Alterar prefixos utilizando query SQL</strong></h4>
<p>Caso não tenha o <strong>phpmyadmin</strong> instalado, basta executar uma query <strong>SQL</strong> do tipo <strong>ALTER TABLE</strong> para cada tabela do banco de dados no wordpress. É muito comum que plugins criem tabelas adicionais no banco de dados do wordpress, mas para referência, as tabelas padrão de uma instalação do wordpress e suas respectivas alterações necessárias são:</p>
<pre>ALTER TABLE `<span style="color: #ff0000;"><strong>wp_</strong></span>commentmeta` RENAME `<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>commentmeta`;
ALTER TABLE `<span style="color: #ff0000;"><strong>wp_</strong></span>comments` RENAME `<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>comments`;
ALTER TABLE `<span style="color: #ff0000;"><strong>wp_</strong></span>links` RENAME `<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>links`;
ALTER TABLE `<span style="color: #ff0000;"><strong>wp_</strong></span>options` RENAME `<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>options`;
ALTER TABLE `<span style="color: #ff0000;"><strong>wp_</strong></span>postmeta` RENAME `<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>postmeta`;
ALTER TABLE `<span style="color: #ff0000;"><strong>wp_</strong></span>posts` RENAME `<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>posts`;
ALTER TABLE `<span style="color: #ff0000;"><strong>wp_</strong></span>termmeta` RENAME `<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>termmeta`;
ALTER TABLE `<span style="color: #ff0000;"><strong>wp_</strong></span>terms` RENAME `<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>terms`;
ALTER TABLE `<span style="color: #ff0000;"><strong>wp_</strong></span>term_relationships` RENAME `<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>term_relationships`;
ALTER TABLE `<span style="color: #ff0000;"><strong>wp_</strong></span>term_taxonomy` RENAME `<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>term_taxonomy`;
ALTER TABLE `<span style="color: #ff0000;"><strong>wp_</strong></span>usermeta` RENAME `<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>usermeta`;
ALTER TABLE `<span style="color: #ff0000;"><strong>wp_</strong></span>users` RENAME `<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>users`;</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2965" src="https://viniciuspaes.com/wp-content/uploads/2024/11/wordpress-mudanca-prefixo-tabelas-prefixo-antigo-novo-com-alter-table.png" alt="Wordpress - alterar o prefixo de tabelas - utilizar query sql para mudar prefixo" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/11/wordpress-mudanca-prefixo-tabelas-prefixo-antigo-novo-com-alter-table.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/11/wordpress-mudanca-prefixo-tabelas-prefixo-antigo-novo-com-alter-table-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>A figura acima ilustra uma query SQL executada que tem o mesmo resultado do Passo 2 e Opcão 1 apresentado. Ela pode ser realizada também pelo console do mysql.</p>
<h3>Passo 3 &#8211; Alterar referências entre tabelas existentes</h3>
<p>Por fim, existem também referências entre as tabelas que precisam ser atualizadas. Geralmente apenas as tabelas <strong>user_meta</strong> e <strong>options</strong> possuem estas referências. Caso utilize plugins específicos com tais referências ou alguma versão mais nova do <strong>wordpress</strong> é bom ficar atento.</p>
<p>Caso utilize o phpmyadmin, e caso tenha clicado no banco de dados no menu da esquerda, as seguintes opções irão aparecer no menu superior:</p>
<pre>Estrutura | <strong>SQL</strong> | Procurar | Consulta | Exportar | Importar | Operações | Rotinas | Eventos | Acionadores | Designer</pre>
<p>Clique na opção do menu superior chamada:</p>
<pre>SQL</pre>
<p>Agora insira o seguinte código dentro do campo:</p>
<pre>update <strong><span style="color: #ff0000;">wpNOVO_</span></strong>usermeta set meta_key = '<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>capabilities' where meta_key = '<span style="color: #ff0000;"><strong>wp_</strong></span>capabilities';
update <span style="color: #ff0000;"><strong>wpNOVO_</strong></span>usermeta set meta_key = '<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>user_level' where meta_key = '<span style="color: #ff0000;"><strong>wp_</strong></span>user_level';
update <span style="color: #ff0000;"><strong>wpNOVO_</strong></span>usermeta set meta_key = '<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>autosave_draft_ids' where meta_key = '<span style="color: #ff0000;"><strong>wp_</strong></span>autosave_draft_ids';
update <span style="color: #ff0000;"><strong>wpNOVO_</strong></span>options set option_name = '<span style="color: #ff0000;"><strong>wpNOVO_</strong></span>user_roles' where option_name = '<span style="color: #ff0000;"><strong>wp_</strong></span>user_roles';</pre>
<p>Agora clique em:</p>
<pre>Executar</pre>
<p>A <strong>query SQL</strong> que inseriu irá ser executada e irá buscar as referências do prefixo antigo nas tabelas e realizar a atualização.</p>
<p>Caso não tenha o phpmyadmin, basta executar a query acima no console do mysql que terá o mesmo resultado.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2966" src="https://viniciuspaes.com/wp-content/uploads/2024/11/wordpress-mudanca-prefixo-tabelas-referencias-entre-tabelas.png" alt="Wordpress - alterar o prefixo de tabelas - alterar referências entre tabelas com o novo prefixo" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/11/wordpress-mudanca-prefixo-tabelas-referencias-entre-tabelas.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/11/wordpress-mudanca-prefixo-tabelas-referencias-entre-tabelas-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Conclusão</h2>
<p>A mudança do prefixo, das tabelas do <strong>wordpress</strong>, pode ser necessária em diversas ocasiões: aumentar segurança da instalação, ter várias instâncias do wordpress no mesmo banco, adequar a uma necessidade da organização, etc. O processo é simples e realizado em 3 etapas: atualizar o novo prefixo no wp-config.php, mudar o prefixo no banco e atualizar as referências entre tabelas.</p>
<p>O post <a href="https://viniciuspaes.com/wordpress/tutorial-mudar-prefixo-tabelas-wordpress/">Tutorial como mudar o prefixo das tabelas do wordpress</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/wordpress/tutorial-mudar-prefixo-tabelas-wordpress/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial container docker open ssh server para acessar websites</title>
		<link>https://viniciuspaes.com/docker/tutorial-container-docker-open-ssh-server/</link>
					<comments>https://viniciuspaes.com/docker/tutorial-container-docker-open-ssh-server/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Sat, 09 Nov 2024 17:26:34 +0000</pubDate>
				<category><![CDATA[docker]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[website]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[chave ssh]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[Website]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2946</guid>

					<description><![CDATA[<p>Saiba como utilizar um container docker com Open SSH Server para gerenciar acesso por ssh em pastas distintas.</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-container-docker-open-ssh-server/">Tutorial container docker open ssh server para acessar websites</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Criar um container utilizando docker para prover o serviço de conexão por ssh, com o open-ssh server, para prover acesso a websites configurados no servidor. Uma forma elegante de configurar o acesso de um usuário a diversos websites que este tem acesso e de forma organizada.</p>
<h2>Requisitos</h2>
<ul>
<li>Docker e docker compose instalado e configurado no servidor</li>
<li>Pastas com arquivos de diferentes usuários que deseja organizar o acesso
<ul>
<li>Por exemplo: pastas de diversos websites que um webmaster tem privilégios de acesso</li>
</ul>
</li>
<li>Chave pública para acesso com certificado (opcional)
<ul>
<li>Possibilidade de acesso por nome de usuário/senha: menos seguro</li>
</ul>
</li>
</ul>
<h2>Passo a passo para criar e configurar um container com open ssh server</h2>
<h3>Passo 1 &#8211; Criar pasta para configuração do container</h3>
<pre>mkdir ~/docker
mkdir ~/docker/openssh
cd ~/docker/openssh</pre>
<p>Caso queira criar diversos containers com o openssh, pode criar pastas seguindo o modelo openssh-1, openssh2, &#8230;</p>
<h3>Passo 2 &#8211; Criar o arquivo de configuração</h3>
<p>Vamos então criar nosso arquivo docker-compose.yml:</p>
<pre>nano docker-compose.yml</pre>
<p>E agora copie o código abaixo dentro do arquivo:</p>
<pre>services:
  openssh-server:
    image: lscr.io/linuxserver/openssh-server:latest
    container_name:  openssh_server
#    hostname: openssh_server
    environment:
      - PUID=<strong><span style="color: #ff0000;">1000</span></strong>							#Importante para não ter erro de permissão de escrita
      - PGID=<strong><span style="color: #ff0000;">1000</span></strong>							#Importante para não ter erro de permissão de escrita
      - TZ=America/Sao_Paulo
      - PUBLIC_KEY_FILE=<span style="color: #ff0000;"><strong>/home/nomeusuario/.ssh/authorized_keys</strong></span> 		#opcional
#      - PUBLIC_KEY=<span style="color: #ff0000;"><strong>suachavepublicaporextenso</strong></span> 				#opcional
#      - PUBLIC_KEY_DIR=<span style="color: #ff0000;"><strong>/home/nomedousuario/apenas_chaves_publicas/</strong></span> 	#opcional
#      - PUBLIC_KEY_URL=<span style="color: #ff0000;"><strong>https://github.com/nomedousuario.keys</strong></span> 		#opcional
      - SUDO_ACCESS=false 						#opcional
      - PASSWORD_ACCESS=true 						#opcional
      - USER_NAME=<span style="color: #ff0000;"><strong>nomedousuario</strong> </span>					#opcional
      - USER_PASSWORD=<span style="color: #ff0000;"><strong>senhadousuario</strong></span> 					#opcional
#      - USER_PASSWORD_FILE=<span style="color: #ff0000;"><strong>/home/nomedousuario/senhaemarquivo.txt</strong></span> 	#opcional
#      - LOG_STDOUT= 							#optional
    volumes:
      - <span style="color: #ff0000;"><strong>/var/www/html/site1.com.br/public_html</strong></span>:/config/<span style="color: #ff0000;"><strong>site1.com.br</strong></span>
      - <span style="color: #ff0000;"><strong>/var/www/html/site2.com.br/public_html</strong></span>:/config/<span style="color: #ff0000;"><strong>site2.com.br</strong></span>
    ports:
      - <span style="color: #ff0000;"><strong>2222</strong></span>:2222
    restart: unless-stopped</pre>
<h3>Passo 3 &#8211; Iniciando o container</h3>
<p>Para iniciar o container, basta iniciar o comando:</p>
<pre>docker compose up -d</pre>
<h3>Passo 4 &#8211; Credenciais de acesso</h3>
<p>A forma mais simples de acessar é utilizando o software Filezilla, por possuir interface gráfica. Mas há quem prefere acessar diretamente pelo terminal também.</p>
<p>Do exemplo acima, as credenciais de acesso são:</p>
<pre>host: sftp://<strong><span style="color: #ff0000;">192.168.1.100</span></strong>
Username: <span style="color: #ff0000;"><strong>nomedousuario</strong></span>
Password: <span style="color: #ff0000;"><strong>senhadousuario</strong></span>
Port: <span style="color: #ff0000;"><strong>2222
</strong></span></pre>
<p>Lembrar de substituir o IP acima, pelo IP do seu servidor e não o IP do container. Se conectar pelo Filezilla, é necessário informar o prefixo <strong>sftp://</strong> para que ele entenda que está realizando uma conexão por ssh.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2951" src="https://viniciuspaes.com/wp-content/uploads/2024/11/conexao-ssh-filezilla-container-open-ssh-server.png" alt="Container Docker OpenSSH - conexão pelo filezilla com usuário e senha" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2024/11/conexao-ssh-filezilla-container-open-ssh-server.png 768w, https://viniciuspaes.com/wp-content/uploads/2024/11/conexao-ssh-filezilla-container-open-ssh-server-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Para conectar pelo terminal basta executar o comando e informar a senha:</p>
<pre>ssh <span style="color: #ff0000;"><strong>nomedousuario</strong></span>@<span style="color: #ff0000;"><strong>192.168.1.100</strong></span> -p <span style="color: #ff0000;"><strong>2222</strong></span></pre>
<h2>Conclusão</h2>
<p>A criação do container do OpenSSH server é bem simples, sendo possível escolher pela autenticação por chave pública ou usuário e senha. A conexão SSH é uma forma de acessar arquivos remotos de forma mais segura que o protocolo FTP. O setup acima é bem úteil também para organizar vários website ou pastas que podem ser acessar por determinado usuário.</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-container-docker-open-ssh-server/">Tutorial container docker open ssh server para acessar websites</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/docker/tutorial-container-docker-open-ssh-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial configurar WordPress para enviar email por SMTP</title>
		<link>https://viniciuspaes.com/wordpress/tutorial-configurar-wordpress-enviar-email-smtp/</link>
					<comments>https://viniciuspaes.com/wordpress/tutorial-configurar-wordpress-enviar-email-smtp/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Thu, 07 Nov 2024 17:32:05 +0000</pubDate>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[email autenticado]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[SMTP]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2932</guid>

					<description><![CDATA[<p>Passo a passo para configurar o envio de email autenticado por SMTP de forma extremamente simples no Wordpress.</p>
<p>O post <a href="https://viniciuspaes.com/wordpress/tutorial-configurar-wordpress-enviar-email-smtp/">Tutorial configurar WordPress para enviar email por SMTP</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Aprender a ter suporte de envio de emails pelo WordPress utilizando um servidor de emails externo e autenticado</li>
<li>Poder enviar email autenticado por uma caixa do gmail de forma simples ou outro servidor smtp</li>
<li>Poder utilizar o plugin <strong>Contact form 7</strong> em conjunto com envio de mensagens autenticadas por smtp</li>
<li>Ter funcionalidade de envio de email pelo wordpress, mesmo que este esteja instalado em um container com docker</li>
</ul>
<h2>Requisitos para seguir o tutorial</h2>
<ul>
<li>Saber encontrar os arquivos da sua instalação do wordpress</li>
<li>Saber editar arquivos da sua instalação do wordpress</li>
<li>Ter uma caixa de email criada (gmail ou outro provedor) e saber a senha
<ul>
<li>Caso utilize o gmail: <strong><a href="https://support.google.com/accounts/answer/185833?hl=pt-BR">criar uma senha de APP</a></strong>
<ul>
<li>É preciso ter autenticação em 2 etapas ativada na sua conta do gmail para a opção de criar senha de APP ficar disponível</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>Tutorial passo a passo para configurar envio de email autenticado pelo wordpress</h2>
<h3>Passo 1 &#8211; Configurar seu tema para suporte a envio de email por smtp</h3>
<p>Acesse a pasta do seu tema atual do wordpress, por exemplo:</p>
<pre>cd wp-content/themes/<span style="color: #ff0000;"><strong>TEMAqueESTAusando</strong></span>/</pre>
<p>Edite ou crie o arquivo functions.php dentro do seu tema atual:</p>
<pre>nano funcions.php</pre>
<p>Agora adicione o conteúdo:</p>
<pre>add_action( 'phpmailer_init', 'send_smtp_email' );
function send_smtp_email( $phpmailer ) {
    $phpmailer-&gt;isSMTP();
    $phpmailer-&gt;Host       = SMTP_HOST;
    $phpmailer-&gt;SMTPAuth   = SMTP_AUTH;
    $phpmailer-&gt;Port       = SMTP_PORT;
    $phpmailer-&gt;SMTPSecure = SMTP_SECURE;
    $phpmailer-&gt;Username   = SMTP_USERNAME;
    $phpmailer-&gt;Password   = SMTP_PASSWORD;
    $phpmailer-&gt;From       = SMTP_FROM;
    $phpmailer-&gt;FromName   = SMTP_FROMNAME;
}</pre>
<p>Lembrando que o código acima é da linguagem PHP, então precisa estar dentro das tags <strong>&lt;?php</strong> e <strong>?&gt;</strong>.</p>
<h3>Passo 2 &#8211; Configurar o wordpress para utilizar envio de email pelo servidor SMTP definido, ao invés do sendmail padrão</h3>
<p>Agora é necessário editar o arquivo <strong>wp-config.php</strong> que está na base da instalação do wordpress.</p>
<pre>nano wp-config.php</pre>
<p>É necessário adicionar o conteúdo:</p>
<pre>define( 'SMTP_HOST', 'smtp.gmail.com' );
define( 'SMTP_AUTH', true );
define( 'SMTP_PORT', '465' );
define( 'SMTP_SECURE', 'ssl' );
define( 'SMTP_USERNAME', '<span style="color: #ff0000;"><strong>seuemail@gmail.com</strong></span>' ); // Sua conta de email
define( 'SMTP_PASSWORD', '<span style="color: #ff0000;"><strong>suasenhatipoAPPpasswordgerada</strong></span>' ); // Sua senha de APP gerada no gmail (autenticação em 2 etapas precisa estar ativada para ter essa opção)
define( 'SMTP_FROM', '<span style="color: #ff0000;"><strong>seuemail@gmail.com</strong></span>' ); // Endereço de remetente, se quiser diferente do seu endereço de email
define( 'SMTP_FROMNAME', '<span style="color: #ff0000;"><strong>Nome Sobrenome</strong></span>' ); // Nome Remetente</pre>
<p>Caso utilize seu próprio servidor de email, também é possível utilizá-lo. Basta realizar as modificações para sua caixa de email do seu servidor e o endereço smtp. Então, seguindo o exemplo do <strong><a href="https://viniciuspaes.com/servidor/tutorial-criar-servidor-emails-ubuntu/">Tutorial para criar servidor de email</a></strong>, as configurações seriam muito semelhantes ao código abaixo:</p>
<pre>define( 'SMTP_HOST', '<span style="color: #ff0000;"><strong>mail.seudominio.com.br</strong></span>' );
define( 'SMTP_AUTH', true );
define( 'SMTP_PORT', '465' );
define( 'SMTP_SECURE', 'ssl' );
define( 'SMTP_USERNAME', '<span style="color: #ff0000;"><strong>seuemail@</strong><strong>seudominio.com.br</strong></span>' ); // Sua conta de email
define( 'SMTP_PASSWORD', '<span style="color: #ff0000;"><strong>suasenhatipoAPPpasswordgerada</strong></span>' ); // Sua senha da caixa de email
define( 'SMTP_FROM', '<span style="color: #ff0000;"><strong>seuemail@</strong><strong>seudominio.com.br</strong></span>' ); // Endereço de remetente, se quiser diferente do seu endereço de email
define( 'SMTP_FROMNAME', '<span style="color: #ff0000;"><strong>Nome Sobrenome</strong></span>' ); // Nome Remetente</pre>
<h2>Conclusão</h2>
<p>Esta é uma alternativa simples e objetiva para ter suporte a envio de emails autenticados com wordpress. Nativamente o wordpress irá tentar utilizar o método de envio de email padrão do servidor onde está configurado, usualmente o sendmail. Caso utilize seu wordpress em um container com <strong>docker</strong>, o envio autenticado é uma boa alternativa para garantir funcionalidades de envio de email, sem a necessidade de utilizar algum plugin mais complicado, como o WP MAIL SMTP.</p>
<p>O post <a href="https://viniciuspaes.com/wordpress/tutorial-configurar-wordpress-enviar-email-smtp/">Tutorial configurar WordPress para enviar email por SMTP</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/wordpress/tutorial-configurar-wordpress-enviar-email-smtp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial container httpd apache com docker compose e suporte SSL</title>
		<link>https://viniciuspaes.com/docker/tutorial-container-httpd-apache-docker-compose-ssl/</link>
					<comments>https://viniciuspaes.com/docker/tutorial-container-httpd-apache-docker-compose-ssl/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Thu, 31 Oct 2024 12:23:44 +0000</pubDate>
				<category><![CDATA[docker]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[website]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[Website]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2904</guid>

					<description><![CDATA[<p>Aprenda a criar um container para hospedar páginas html com o httpd (apache) e suporte SSL.</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-container-httpd-apache-docker-compose-ssl/">Tutorial container httpd apache com docker compose e suporte SSL</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Criar um container com servidor de páginas apache2 para prover suporte a páginas html somente. Configurações específicas por .htaccess ou virtualhost também suportados. Container com suporte tanto para acesso http ou <strong>ssl</strong> (https://).</p>
<h2>Requisitos</h2>
<ul>
<li>Capacidade de criação de containers com <strong>Docker</strong> e suporte a docker compose.</li>
<li>Conexão com internet para download da imagem do <strong>apache2</strong> (httpd).</li>
</ul>
<p>É possível configurar um domínio pra acesso ao seu container. Ou se preferir, pode acessá-lo diretamente pelo seu ip e porta definidos.</p>
<h2>Como instalar imagem do httpd (apache2) com docker compose tendo suporte a certificado SSL</h2>
<h3>Passo 1: Criação de arquivos para configurar o container do wordpress</h3>
<ul>
<li><strong>.env</strong> &#8211; este arquivo irá conter informações sobre variáveis que podemos definir previamente, para serem utilizadas no arquivo de configuração do container. Neste exemplo, vamos configurar o nome de domínio que queremos vincular ao servidor de páginas <strong>httpd</strong> e container</li>
<li><strong>docker-compose</strong> &#8211; arquivo principal de definição das configurações do container.</li>
<li><strong>my-http.conf</strong> &#8211; arquivo de configuração do apache onde vamos definir o virtualhost para acesso http e https.</li>
</ul>
<p>Nosso diretório base para o <strong>container</strong> será:</p>
<pre>~/docker/website</pre>
<p>Então vamos criar o diretório <strong>docker</strong> e <strong>website</strong>, caso ainda não estejam criados:</p>
<pre>mkdir ~/docker
mkdir ~/docker/website</pre>
<p>Agora vamos criar o arquivo .env:</p>
<pre>nano ~/docker/website/.env</pre>
<p>Precisamos colar o conteúdo:</p>
<pre>DOMAIN=<strong><span style="color: #ff0000;">dev.viniciuspaes.com</span></strong></pre>
<p>Neste exemplo, vamos definir o domínio/subdomínio <span style="color: #ff0000;"><strong>dev.viniciuspaes.com</strong></span> nesse container.</p>
<p>Vamos criar o arquivo do docker-compose.yml:</p>
<pre>nano ~/docker/website/docker-compose.yml</pre>
<p>Cole no seu conteúdo as informações abaixo:</p>
<pre>services:
  apache:
    container_name: ${DOMAIN}_web
    image: httpd:latest
    env_file:
      - .env
    volumes:
      - ./my-httpd.conf:/usr/local/apache2/conf/httpd.conf
      - ./logs:/var/log/apache2
      - ./public_html:/usr/local/apache2/htdocs
      - /etc/letsencrypt/live/<strong><span style="color: #ff0000;">${DOMAIN}</span></strong>/fullchain.pem:/usr/local/apache2/conf/server.crt
      - /etc/letsencrypt/live/<strong><span style="color: #ff0000;">${DOMAIN}</span></strong>/privkey.pem:/usr/local/apache2/conf/server.key
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
    ports:
      - "<span style="color: #ff0000;"><strong>8080</strong></span>:80"
      - "<span style="color: #ff0000;"><strong>8081</strong></span>:443"
    restart: always</pre>
<p>Por fim, precisamos fazer o download do arquivo <strong>httpd.conf</strong> do container do <strong>httpd:latest</strong>:</p>
<pre>cd ~/docker/website
docker run --rm httpd:latest cat /usr/local/apache2/conf/httpd.conf &gt; my-httpd.conf</pre>
<p>Com o comando acima, será feito o download do arquivo <strong>httpd.conf</strong> de dentro do repositório do httpd e será renomeado para <strong>my-httpd.conf</strong>.</p>
<h3>Passo 2: Editar o arquivo my-httpd.conf e configurar virtualhost</h3>
<p>Vamos editar o arquivo <strong>my-httpd.conf</strong>:</p>
<pre>nano my-httpd.conf</pre>
<p>Agora é necessário remover o caractere # do começo das seguintes linhas:</p>
<pre>#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf
#LoadModule rewrite_module modules/mod_rewrite.so</pre>
<p>As linhas acima estão em sequência no arquivo, é necessário encontrá-las. Após editadas, devem ficar como:</p>
<pre>LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
LoadModule rewrite_module modules/mod_rewrite.so</pre>
<p>Ainda na edição do <strong>my-httpd.conf</strong>, precisamos configurar o virtualhost e inserir o conteúdo no fim do arquivo:<br />
<script src="https://gist.github.com/viniciuspaes/a48dee4b41634a23a4683f208f13e933.js"></script></p>
<h3>Passo 3: Confirmar caminho para certificado SSL</h3>
<p>Neste tutorial estamos supondo que já possui um servidor de proxy reverso instalado e configurado e que o certificado SSL para o domínio que escolheu está presente no caminho:</p>
<pre>/etc/letsencrypt/live/<strong><span style="color: #ff0000;">dev.viniciuspaes.com</span></strong>/fullchain.pem
/etc/letsencrypt/live/<span style="color: #ff0000;"><strong>dev.viniciuspaes.com</strong></span>/privkey.pem</pre>
<p>Caso não vá utilizar um domínio configurado em seu container, ou não vai precisar de acesso SSL, é só comentar essas linhas no docker-compose.yml e remover o virtual host para porta 443 (SSL).</p>
<h3>Passo 4: Iniciar o Container</h3>
<p>Para iniciar o container, vamos utilizar o docker compose, mas lembre-se que precisa estar na mesma pasta onde o arquivo está configurado:</p>
<pre>cd ~/docker/website
docker compose up -d</pre>
<p>Se todos os passos foram executados com sucesso, vamos ter o container configurado com as portas:</p>
<ul>
<li><strong>8080</strong>: para acesso http</li>
<li><strong>8081</strong>: para acesso https (SSL)</li>
</ul>
<p>Basta acessar seu domínio pela URL configurada:</p>
<pre>dev.viniciuspaes.com</pre>
<p>Ou se optou por não configurar um domínio e SSL, basta acessar pelo endereço IP do seu servidor. Exemplo de um servidor configurado na porta <span style="color: #ff0000;"><strong>192.168.1.100</strong></span>:</p>
<ul>
<li>http://<span style="color: #ff0000;"><strong>192.168.1.100</strong></span>:<span style="color: #ff0000;"><strong>8080</strong></span></li>
<li>https://<span style="color: #ff0000;"><strong>192.168.1.100</strong></span>:<span style="color: #ff0000;"><strong>8081</strong></span></li>
</ul>
<h2>Conclusão</h2>
<p>O processo para criação do container com suporte a páginas html pelo httpd (apache) é bem simples. O docker compose permite uma estrutura bem legível das configurações do container, permitindo parametrizações de acordo com as necessidades. Com este container, podemos servir páginas html de forma bem intuitiva, inserindo os arquivos na pasta public_html.</p>
<p>&nbsp;</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-container-httpd-apache-docker-compose-ssl/">Tutorial container httpd apache com docker compose e suporte SSL</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/docker/tutorial-container-httpd-apache-docker-compose-ssl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial container wordpress com docker compose e suporte SSL e Apache</title>
		<link>https://viniciuspaes.com/docker/tutorial-instalar-container-wordpress-docker-ssl/</link>
					<comments>https://viniciuspaes.com/docker/tutorial-instalar-container-wordpress-docker-ssl/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Fri, 25 Oct 2024 20:52:14 +0000</pubDate>
				<category><![CDATA[docker]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[website]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[SSL]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2868</guid>

					<description><![CDATA[<p>Siga o passo a passo para instalar wordpress em um container no docker com suporte SSL e proxy reverso com Apache.</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-instalar-container-wordpress-docker-ssl/">Tutorial container wordpress com docker compose e suporte SSL e Apache</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Este tutorial tem o objetivo ensinar um passo a passo de como instalar o wordpress como um container utilizando docker, com suporte a um nome de domínio e acesso por http e https. Por padrão o container do wordpress não vem com suporte SSL, vamos ensinar como realizar modificação no container com Dockerfile para habilitar a porta 443. Vamos abordar a utilização do apache como proxy reverso.</p>
<p>Este tutorial também aborda a possibilidade de instalar vários containers do wordpress para diversos sites e domínios distintos. Desta forma, é interessante ressaltar que o tutorial aborda como iniciar suporte SSL dentro do container, ao invés de apenas  habilitar a diretiva HTTP_X_FORWARDED_PROTO.</p>
<p>Caso queira configurar o wordpress sem realizar modificações com Dockerfile (build) de forma enxuta e objetiva com o Nginx Proxy Manager e a diretiva HTTP_X_FOWARDED_PROTO, utilize este tutorial:</p>
<ul>
<li><strong><a href="https://viniciuspaes.com/docker/tutorial-container-nginx-proxy-manager-wordpress-ssl/">Tutorial container Nginx Proxy Manager e WordPress com SSL</a></strong></li>
</ul>
<h2>Requisitos</h2>
<ul>
<li>Software docker instalado e configurado no sistema operacional.</li>
<li>Docker compose instalado e configurado.</li>
<li>Conexão com internet para download da imagem do wordpress, mariadb (mysql), phpmyadmin, certificado SSL e proxy reverso (apache).</li>
<li>Configuração DNS em seu domínio, direcionando para seu servidor.
<ul>
<li>Caso utilize um domínio local, editar o arquivo /etc/hosts em seu computador e adicioná-lo apropriadamente.</li>
</ul>
</li>
<li>Se utilizar um servidor caseiro, garantir que seu roteador está redirecionando as portas 80 e 443 para seu servidor.</li>
<li>Garantir que seu firewall no servidor não está bloqueando as portas 80 e 443.</li>
</ul>
<h2>Observação</h2>
<p>Como temos desejo de configurar um domínio em nossa instalação do wordpress, é comum utilizarmos um proxy reverso, para gerenciar uma solicitação pela porta 80 ou 443 e encaminhar para a porta correspondente que estará mapeada no container. Vamos abordar o arquivo de configuração de proxy reverso no apache (apache2).</p>
<h2>Como instalar imagem do wordpress com docker compose tendo suporte a certificado SSL e nome de domínio</h2>
<h3>Passo 1: Configuração do Servidor de Páginas para proxy reverso</h3>
<p>Precisamos preparar nosso ambiente de hospedagem para gerenciar as solicitações http/https e redirecionar para os containers que queremos criar. Caso já tenha o apache instalado em seu servidor, independente de ser em um container ou não, a etapa principal é configurar corretamente o arquivo de virtualhost do domínio com o proxy reverso.</p>
<p>Neste exemplo, vamos supor que queremos instalar o wordpress para o subdomínio <strong>dev.viniciuspaes.com. </strong>Mas poderia ser para qualquer domínio ou subdomínio que escolher.</p>
<p>Agora vamos definir quais as portas que este container wordpress irá utilizar. Para esse domínio, vamos utilizar a porta <strong>9080</strong> para acesso http, a porta <strong>9081</strong> para acesso com SSL (https) e porta <strong>8082</strong> para acesso a interface do phpmyadmin.</p>
<p>É necessário 2 arquivos de configuração instalados no apache: um para acesso http e outro para acesso https.</p>
<p>Para acesso http, vamos criar o arquivo <strong><span style="color: #ff0000;">dev.viniciuspaes.com</span>.http.conf:</strong></p>
<pre>sudo nano /etc/apache2/sites-available/<strong><span style="color: #ff0000;">dev.viniciuspaes.com</span>.http.conf</strong></pre>
<p>Agora cole o conteúdo abaixo dentro do arquivo. Lembre-se de alterar o nome de domínio e a porta que irá utilizar:</p>
<pre>&lt;VirtualHost *:80&gt;
ServerName <span style="color: #ff0000;"><strong>dev.viniciuspaes.com</strong></span>
ServerAdmin postmaster@viniciuspaes.com

ProxyPass / http://127.0.0.1:<strong><span style="color: #ff0000;">9080</span></strong>/
ProxyPassReverse / http://127.0.0.1:<strong><span style="color: #ff0000;">9080</span></strong>/
ProxyPreserveHost On
ErrorLog ${APACHE_LOG_DIR}/<strong><span style="color: #ff0000;">dev.viniciuspaes.com</span></strong>.error.log
CustomLog ${APACHE_LOG_DIR}/<strong><span style="color: #ff0000;">dev.viniciuspaes.com</span></strong>.access.log combined

## Redirecionar tráfego HTTP para HTTPS, habilitar somente após configurar certificado SSL
# RewriteEngine on
# RewriteCond %{SERVER_NAME} =<strong><span style="color: #ff0000;">dev.viniciuspaes.com</span></strong>
# RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
&lt;/VirtualHost&gt;
</pre>
<p>No arquivo acima, escolhemos a porta <strong>9080</strong> para receber solicitações http no container que ainda vai ser criado.</p>
<p>Agora é necessário solicitar um certificado SSL do letsencrypt pelo certbot.<br />
Caso seu certbot não esteja em um container basta seguir os passos deste tutorial:</p>
<ul>
<li><strong><a href="https://viniciuspaes.com/linux/tutorial-instalar-certificado-ssl-gratis-ubuntu-servidor-apache/">Solicitar certificado SSL com letsencrypt com apache</a></strong></li>
</ul>
<p>Ao solicitar o certificado as chaves serão salvas no caminho:</p>
<ul>
<li>/etc/letsencrypt/live/<span style="color: #ff0000;"><strong>dev.viniciuspaes.com</strong></span>/fullchain.pem</li>
<li>/etc/letsencrypt/live/<span style="color: #ff0000;"><strong>dev.viniciuspaes.com</strong></span>/privkey.pem</li>
</ul>
<p>Um arquivo de configuração para o apache também será criado com o nome:</p>
<ul>
<li><strong><span style="color: #ff0000;">dev.viniciuspaes.com</span></strong>.http-le-ssl.conf</li>
</ul>
<p>Vamos agora editar este arquivo para adicionar as informações do proxy reverso:</p>
<pre>sudo nano /etc/apache2/sites-available/<strong><span style="color: #ff0000;">dev.viniciuspaes.com</span>.http-le-ssl.conf</strong></pre>
<p>O conteúdo do arquivo deverá ficar como:</p>
<pre>&lt;IfModule mod_ssl.c&gt;
&lt;VirtualHost *:443&gt;
ServerName <strong><span style="color: #ff0000;">dev.viniciuspaes.com</span></strong>

SSLProxyEngine on

&lt;Proxy *&gt;
Allow from all
&lt;/Proxy&gt;

ProxyPreserveHost On
ProxyRequests Off

ProxyPass / https://127.0.0.1:<strong><span style="color: #ff0000;">9081</span></strong>/
ProxyPassReverse / https://127.0.0.1:<span style="color: #ff0000;"><strong>9081</strong></span>/

ErrorLog ${APACHE_LOG_DIR}/<strong><span style="color: #ff0000;">dev.viniciuspaes.com</span></strong>.error.log
CustomLog ${APACHE_LOG_DIR}/<strong><span style="color: #ff0000;">dev.viniciuspaes.com</span></strong>.access.log combined

SSLCertificateFile /etc/letsencrypt/live/<span style="color: #ff0000;"><strong>dev.viniciuspaes.com</strong></span>/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<strong><span style="color: #ff0000;">dev.viniciuspaes.com</span></strong>/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

&lt;/VirtualHost&gt;
&lt;/IfModule&gt;</pre>
<p>Lembrando que no arquivo acima escolhemos a porta <strong>9081</strong> no container, para receber solicitação https (SSL).</p>
<pre></pre>
<h3>Passo 2: Criação de arquivos para configurar o container do wordpress</h3>
<p>Vamos supor o desejo de manter todos os arquivos do containers organizados em uma pasta chamada docker, que pode estar dentro da nossa pasta pessoal. Vamos criar então uma pasta para nosso container do wordpress:</p>
<pre>mkdir ~/docker/wordpress</pre>
<p>Agora precisamos criar 5 arquivos:</p>
<ul>
<li><strong>Dockerfile</strong> &#8211; este arquivo vai conter algumas tarefas que precisam ser utilizadas no momento de criação do container</li>
<li><strong>.env</strong> &#8211; este arquivo contém a definição de algumas variáveis importantes no processo de setup dos containers: nome de usuário, senha, nome de domínio, etc.</li>
<li><strong>000-default.conf</strong> &#8211; é o arquivo de configuração que o servidor apache que vem dentro do container do wordpress deve utilizar para acesso http</li>
<li><strong>default-ssl.conf</strong> &#8211; semelhante ao arquivo 000-default.conf, porém com as configurações de acesso por ssl</li>
<li><strong>docker-compose.yml</strong> &#8211; arquivo de configuração dos containers a serem criados</li>
</ul>
<p>Vamos caminhar até a pasta que criamos para guardar as informações deste container:</p>
<pre>cd ~/docker/wordpress</pre>
<p>Para criar o arquivo Dockerfile, usamos o comando:</p>
<pre>nano Dockerfile</pre>
<p>Dentro do arquivo vamos inserir o conteúdo:</p>
<pre>#Definir a imagem do container a ser utilizado como base
FROM wordpress:latest

#Habilitar arquivo php.ini de produção caso existente na imagem
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

#Aumentar o post_max_size de 8MB para 64MB
RUN sed -i -e "s/post_max_size \= 8M/post_max_size \= <span style="color: #ff0000;"><strong>64M</strong></span>/g" "$PHP_INI_DIR/php.ini"

#Aumentar o upload_max_filesize de 2M para 60MB
RUN sed -i -e "s/upload_max_filesize \= 2M/upload_max_filesize \= <span style="color: #ff0000;"><strong>60M</strong></span>/g" "$PHP_INI_DIR/php.ini"

#Aumentar o tempo da sessão de 1440s para 86400s
RUN sed -i -e "s/session.gc_maxlifetime \= 1440/session.gc_maxlifetime \= <strong><span style="color: #ff0000;">86400</span></strong>/g" "$PHP_INI_DIR/php.ini"

#Modificar o User ID e o Group ID do usuário www-data de dentro do container para seu usuário fora do container
RUN usermod -u <strong><span style="color: #ff0000;">1000</span></strong> www-data &amp;&amp; groupmod -g <strong><span style="color: #ff0000;">1000</span></strong> www-data

#Copiar o arquivo defaul-ssl.conf que criamos para dentro do container
ADD default-ssl.conf /etc/apache2/sites-available/default-ssl.conf

Copiar o arquivo 000-default.conf que criamos, para dentro do container
ADD 000-default.conf /etc/apache2/sites-available/000-default.conf

#Habiliar o virtualhost definido em default-ssl.conf
RUN a2ensite default-ssl.conf

#Habilitar o virtualhost definido em 000-default.conf
RUN a2ensite 000-default.conf

#Caso sua imagem não tenha mysqli instalado (php:8.3-apache por exemplo), descomente o comando abaixo
#RUN docker-php-ext-install mysqli &amp;&amp; docker-php-ext-enable mysqli

# Habilitar módulos rewrite, header, expires e ssl
RUN a2enmod rewrite &amp;&amp; a2enmod headers &amp;&amp; a2enmod expires &amp;&amp; a2enmod ssl

#Adicionar o Servername do seu nome de domínio no arquivo apache2.conf
RUN echo "ServerName <span style="color: #ff0000;"><strong>dev.viniciuspaes.com</strong></span>" &gt;&gt; /etc/apache2/apache2.conf</pre>
<p>Vamos criar o segundo arquivo da lista:</p>
<pre>nano .env</pre>
<p>Vamos colar o conteúdo abaixo dentro do arquivo:</p>
<pre>MYSQL_USER=<strong><span style="color: #ff0000;">nome_usuario_banco</span></strong>
MYSQL_PASSWORD=<span style="color: #ff0000;"><strong>senha_do_banco_mudar</strong></span>
MYSQL_DB=<span style="color: #ff0000;"><strong>nome_banco_dados</strong></span>
DOMAIN=<span style="color: #ff0000;"><strong>dev.viniciuspaes.com
</strong></span>WP_PREFIX=<span style="color: #ff0000;"><strong>wp_
</strong></span>USER=<strong><span style="color: #ff0000;">1000</span></strong>
GROUP=<span style="color: #ff0000;"><strong>1000</strong>
</span></pre>
<p>Para o terceiro arquivo necessário, vamos criá-lo com o comando:</p>
<pre>nano 000-default.conf</pre>
<p>Seu conteúdo deve ser equivalente ao código abaixo:</p>
<pre>&lt;VirtualHost *:80&gt;
       ServerAdmin webmaster@<span style="color: #ff0000;"><strong>localhost</strong></span>
       DocumentRoot /var/www/html
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
&lt;/VirtualHost&gt;
</pre>
<p>Para o quarto arquivo necessário, vamos criar o arquivo de configuração para acesso https:<br />
nano default-ssl.conf</p>
<p>Se conteúdo deve conter:</p>
<pre>&lt;IfModule mod_ssl.c&gt;
        &lt;VirtualHost _default_:443&gt;
                ServerAdmin webmaster@<span style="color: #ff0000;"><strong>localhost</strong></span>
                DocumentRoot /var/www/html
                Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"
                Header append X-FRAME-OPTIONS "SAMEORIGIN"
                Header set X-Content-Type-Options nosniff
                Header set X-XSS-Protection "1; mode=block"
                Header always set Referrer-Policy "no-referrer"

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                SSLEngine on
                #SSLCertificateFile     /etc/apache2/ssl-certs/cert-filename.cert
                #SSLCertificateKeyFile  /etc/apache2/ssl-certs/cert-filenamekey.key

                SSLCertificateFile      /etc/apache2/ssl-certs/server.crt
                SSLCertificateKeyFile  /etc/apache2/ssl-certs/server.key

                &lt;FilesMatch "\.(cgi|shtml|phtml|php)$"&gt;
                                SSLOptions +StdEnvVars
                &lt;/FilesMatch&gt;

                &lt;Directory /usr/lib/cgi-bin&gt;
                                SSLOptions +StdEnvVars
                &lt;/Directory&gt;

                BrowserMatch "MSIE [2-6]" \
                     nokeepalive ssl-unclean-shutdown \
                     downgrade-1.0 force-response-1.0
                
                BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
       &lt;/VirtualHost&gt;
&lt;/IfModule&gt;</pre>
<p>Por fim, vamos criar o arquivo docker-compose.yml:</p>
<pre>nano docker-compose.yml</pre>
<p>Cole o código abaixo dentro do arquivo:</p>
<pre>services:

  <strong>db</strong>:
    image: mariadb:latest
    container_name: ${DOMAIN}_db
    command: '--default-authentication-plugin=mysql_native_password'
    volumes:
      - ./db_data:/var/lib/mysql
    restart: always
    env_file: .env
    environment:
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_DATABASE=${MYSQL_DB}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
      - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
    networks:
      - default

  wordpress:
    container_name: ${DOMAIN}_web
    env_file:
      - .env
    depends_on:
      - db
    build: .
    volumes:
      - ./public_html:/var/www/html/
      - ./logs:/var/log/apache2
      - ./000-default.conf:/etc/apache2/sites-available/000-default.conf
      - ./default-ssl.conf:/etc/apache2/sites-available/default-ssl.conf
      - /etc/localtime:/etc/localtime:ro 
      - /etc/timezone:/etc/timezone:ro
      - <strong><span style="color: #ff0000;">/etc/letsencrypt/live/${DOMAIN}</span></strong>/fullchain.pem:/etc/apache2/ssl-certs/server.crt
      - <span style="color: #ff0000;"><strong>/etc/letsencrypt/live/${DOMAIN}</strong></span>/privkey.pem:/etc/apache2/ssl-certs/server.key
    ports:
      - "<span style="color: #ff0000;"><strong>9080</strong></span>:80"
      - "<span style="color: #ff0000;"><strong>9081</strong></span>:443"
    restart: always
    environment:
      - WORDPRESS_DB_HOST=<strong>db</strong>:3306 #nome do <strong>container</strong>:<strong>porta</strong> que proverá recursos de banco de dados, neste caso o container chama <strong>db</strong> e a porta padrão é a <strong>3306</strong>
      - WORDPRESS_DB_USER=${MYSQL_USER}
      - WORDPRESS_DB_PASSWORD=${MYSQL_PASSWORD}
      - WORDPRESS_DB_NAME=${MYSQL_DB}
      - WORDPRESS_TABLE_PREFIX=${WP_PREFIX}
    extra_hosts:
      - "${DOMAIN}:127.0.1.1"
    #user: ${USER}:${GROUP} #linha comentada, mas caso necessário configura UID e GID de permissão dos arquivos de acordo com definido no .env
    networks:
      - rede_proxy_reverso
      - default

  phpmyadmin:
    container_name: ${DOMAIN}-phpmyadmin
    image: linuxserver/phpmyadmin
    env_file: .env
    environment:
      PMA_HOST: <strong>db</strong> #nome do container que proverá recursos de banco de dados, neste caso o container chama <strong>db</strong>
      PMA_PORT: 3306
      MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
    ports:
      - "<span style="color: #ff0000;"><strong>9082</strong></span>:80"
    networks:
      - default

  networks:
    default:
      name: rede_${DOMAIN} #rede interna dessa stack, onde o phpmyadmin e o db ficam isolados da rede do proxy reverso, mas conseguem conversar com o wordpress
    rede_proxy_reverso:
      external: true

</pre>
<h3>Passo 3: Confirmar caminho de certificados SSL gerados no Passo 1</h3>
<p>Neste passo, é importante verificar qual a estratégia que utilizou para gerar o certificado SSL para seu domínio.</p>
<p>Se possui o certbot instalado no seu servidor, os certificados vão estar na pasta:</p>
<pre>/etc/letsencrypt/live/<span style="color: #ff0000;"><strong>nome_domínio</strong></span>/</pre>
<pre></pre>
<p>Caso tenha utilizado um container somente para o certbot, ele costuma utilizar a pasta:</p>
<pre>/etc/letsencrypt/live/<span style="color: #ff0000;"><strong>nome_domínio</strong></span>/</pre>
<p>Então é interessante verificar qual opção utilizou para gerar os certificados. Esta etapa é importante para atualizar o arquivo docker-compose.yml do passo anterior:</p>
<pre>    volumes:
      - ./public_html:/var/www/html/
      - <strong><span style="color: #ff0000;"><span style="color: #3366ff;">/etc/letsencrypt/live/</span>${DOMAIN}</span></strong>/fullchain.pem:/etc/apache2/ssl-certs/server.crt
      - <span style="color: #ff0000;"><strong><span style="color: #3366ff;">/etc/letsencrypt/live/</span>${DOMAIN}</strong></span>/privkey.pem:/etc/apache2/ssl-certs/server.key
</pre>
<p><strong><span style="color: #ff6600;">Observação!</span></strong> É possível que seus certificados estejam com o diretório criado com sufixo no nome, do tipo: -0001. Exemplo: /etc/letsencrypt/live/<strong>dev.viniciuspaes.com</strong><span style="color: #ff0000;"><strong>-0001</strong></span>/. Ficar atento a esta possibilidade, para definir o caminho correto para o domínio.</p>
<h3>Passo 4: Confirmar criação entradas DNS</h3>
<p>Neste exemplo vamos configurar um subdomínio para funcionar em um container com wordpress e com suporte SSL. Desta forma, em nossa registrar, precisamos ter uma entrada que converte um nome de domínio ou subdomínio para o ip do nosso servidor. Após criar a entrada, podemos verificar se a mesma está funcionar com o comando:</p>
<pre>dig dev.viniciuspaes.com</pre>
<p>Vamos ter como saída algo semelhante a:</p>
<pre>; &lt;&lt;&gt;&gt; DiG Ubuntu &lt;&lt;&gt;&gt; <strong>dev.viniciuspaes.com</strong>
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 30
;; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 4f06f2012983012830129120398124d58fd5aac75eded21cf (good)
;; QUESTION SECTION:
;<strong>dev.viniciuspaes.com.</strong> IN <strong>A</strong>

;; ANSWER SECTION:
<strong>dev.viniciuspaes.com.</strong> 120 IN <strong>A</strong> <strong>172.67.148.152
</strong></pre>
<p>Na saída do comando <strong>dig</strong> acima, podemos ver que exista uma entrada <strong>DNS</strong> do tipo <strong>A</strong> configurada, direcionando o nome do subdomínio para o IP do servidor.</p>
<h3>Passo 5: Executar o container</h3>
<p>Com os passos anteriores configurados corretamente, podemos iniciar nosso container wordpress com suporte tanto http, quanto SSL. Vamos caminhar novamente para a pasta onde está o arquivo docker compose:</p>
<p>cd ~/docker/wordpress</p>
<p>Vamos executar o container com o comando:</p>
<p>docker compose up -d</p>
<p>Lembrete sobre as portas utilizadas:</p>
<ul>
<li>Acesso website http: porta <strong>9080</strong></li>
<li>Acesso website https: porta <strong>9081</strong></li>
<li>Acesso interface phpmyadmin: porta <strong>9082</strong></li>
</ul>
<h3>Passo 6: Acessar website wordpress pelo nome de domínio</h3>
<p>Com o docker-compose.yml executado, é possível verificar se os containers do wordpress, mariadb (mysql) e phpmyadmin estão funcionando corretamente com o comando:</p>
<pre>docker ps</pre>
<p>Como saída do comando acima, vamos ter algo semelhante ao texto abaixo:</p>
<pre>CONTAINER ID   IMAGE            COMMAND                  CREATED          STATUS          PORTS                                 NAMES
e2yf533e       dev-wordpress    "docker-entrypoint.s…"   22 seconds ago   Up 20 seconds   9080-&gt;80/tcp, 9081-&gt;443/tcp,          dev.viniciuspaes.com_web
47g5b597       mariadb:latest   "docker-entrypoint.s…"   23 seconds ago   Up 21 seconds   3306/tcp                              dev.viniciuspaes.com_db
224907aa       phpmyadmin       "/init"                  23 seconds ago   Up 21 seconds   443/tcp, 9082-&gt;80/tcp, 9082-&gt;80/tcp   dev.viniciuspaes.com-phpmyadmin
</pre>
<p>Se na saída acima, na coluna de <strong>STATUS</strong> não receber nenhum tipo de erro. Aparentemente os containers estão funcionais.<br />
Abra agora o seu browser de internet e acesse o nome de domínio que atribuiu ao container. No caso desse exemplo, vamos acessar:</p>
<pre>https://dev.viniciuspaes.com</pre>
<p>Atenção, o container do <strong>banco de dados</strong> demora alguns segundos a mais para iniciar e ficar funcional, comparado ao container do <strong>wordpress</strong>. Se acessar rapidamente a url do seu nome de domínio, é comum receber o erro de conexão de banco de dados do wordpress. Só aguardar alguns segundos e recarregar a página.</p>
<h2>Conclusão</h2>
<p>Existem diversas abordagens para configurar o <strong>wodpress</strong> em formato de container no docker. O container padrão do wordpress vem com o servidor de páginas apache instalado, porém somente com a porta 80 configurada. Este tutorial abordou uma forma de ativar o virtualhost para ssl no container padrão do wordpress e definiu as configurações necessárias para correto funcionamento.</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-instalar-container-wordpress-docker-ssl/">Tutorial container wordpress com docker compose e suporte SSL e Apache</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/docker/tutorial-instalar-container-wordpress-docker-ssl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial instalar homer com docker compose</title>
		<link>https://viniciuspaes.com/docker/tutorial-instalar-homer-docker-compose/</link>
					<comments>https://viniciuspaes.com/docker/tutorial-instalar-homer-docker-compose/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Mon, 27 May 2024 21:23:49 +0000</pubDate>
				<category><![CDATA[docker]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[servidor]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2816</guid>

					<description><![CDATA[<p>Fique por dentro deste tutorial ensinando em como criar uma dashboard estática utilizando a imagem do container do Homer. Excelente ferramenta para seu homelab.</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-instalar-homer-docker-compose/">Tutorial instalar homer com docker compose</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Instalar imagem do homer em formato de container com o docker. O Homer é uma dashboard estática muito famosa para utilização em servidores em homelab.</p>
<h2>Requisitos</h2>
<ol>
<li>Software docker instalado e configurado no sistema operacional</li>
<li>Docker compose instalado e configurado</li>
<li>Conexão com internet para download da imagem do <strong><a href="https://github.com/bastienwirtz/homer" target="_blank" rel="noopener">homer dashboard</a></strong>.</li>
</ol>
<h2>Como instalar imagem do homer com docker</h2>
<h3>Passo 1: Ter uma pasta dedicada para gerenciar os containers</h3>
<p>Caso esteja configurando em linha de comando no linux:</p>
<pre>mkdir ~/docker
cd ~/docker
</pre>
<h3>Passo 2: Criar uma pasta para armazenar os arquivo de configuração do homer</h3>
<pre>mkdir ~/docker/homer</pre>
<h3>Passo 3: Descobrindo o UID e o GID do seu usuário no linux</h3>
<p>No terminal utilize o comando para descobrir o <strong>UID</strong> (user ID):</p>
<pre>id -u</pre>
<p>Para descobrir o <strong>GID</strong> (group ID):</p>
<pre>id -g</pre>
<p>No meu exemplo, meu <strong>UID</strong> e <strong>GID</strong> tiveram como resultado o número <span style="color: #ff6600;"><strong>1000</strong></span>.</p>
<h3>Passo 4: Criar o arquivo de docker compose para o homer</h3>
<p>Agora precisamos criar o arquivo <strong>docker-compose.yml</strong> dentro da pasta <strong>~/docker/filebrowser</strong> com o editor de texto conhecido como nano.</p>
<pre>nano ~/docker/homer/docker-compose.yml</pre>
<p>Dentro do <strong>docker-compose.yml</strong> é necessário inserir o conteúdo abaixo:</p>
<pre>---
version: "2"
services:
  homer:
    image: b4bz/homer
    container_name: homer
    volumes:
      - ~/docker/homer/data:/www/assets
    ports:
      - <span style="color: #ff9900;"><strong>8080</strong></span>:8080
    environment:
      - UID=<span style="color: #ff9900;"><strong>1000</strong></span>
      - GID=<span style="color: #ff9900;"><strong>1000</strong></span>
    restart: unless-stopped
</pre>
<p>Após inserir os dados acima dentro do arquivo docker-compose.yml pelo nano, lembre-se de salvar o arquivo e sair do editor.</p>
<h3>Passo 5: Inicializar o container</h3>
<p>Caso a imagem do container não esteja disponível (possivelmente não estará) o docker fará o download automaticamente.<br />
Para iniciar a imagem do container com o docker compose, utilize o comando:</p>
<pre>cd ~/docker/homer
docker compose up -d</pre>
<p>Caso esteja utilizando o homer em seu próprio computador, é possível acessá-lo pelo browser, pela url:</p>
<pre>http://localhost:<span style="color: #ff9900;"><strong>porta</strong></span></pre>
<p>Ou se estiver utilizando o mesmo em algum computador remoto ou servidor, basta acessar pelo ip:porta, exemplo:</p>
<pre>http://192.168.1.70:<span style="color: #ff9900;"><strong>8080</strong></span></pre>
<p>Caso já tenha algum serviço funcionando na porta 8080, é necessário editar o arquivo docker-compose.yml e alterar o mapeamento de portas, exemplo:</p>
<pre>    ports:
      - <span style="color: #ff9900;"><strong>8085</strong></span>:8080
</pre>
<p>Desta forma a dashboard do homer ficará disponível na porta <span style="color: #ff9900;"><strong>8085</strong></span>.</p>
<h3>Passo 6: Customização da dashboard</h3>
<p>Após a inicialização do container, terá uma dashboard com dados padrão recém criada.</p>
<p>Para customizar sua dashboard, edite o arquivo:</p>
<pre>~/docker/homer/data/config.yml</pre>
<p>Se atente que o arquivo é no formato yaml (.yml) e a identação é fundamental. Se não estiver familiarizado em como editar o arquivo, basta seguir o padrão já existente. Lembre-se de ter um backup do arquivo original de config, caso necessite reverter as mudanças.</p>
<p>É possível encontrar diversos ícones para a dashboard em 2 excelentes repositórios no github:</p>
<ul>
<li><strong><a href="https://github.com/NX211/homer-icons" target="_blank" rel="noopener">Homer Icons</a></strong></li>
<li><a href="https://github.com/walkxcode/dashboard-icons" target="_blank" rel="noopener"><strong>Dashboard Icons</strong></a></li>
</ul>
<h2>Conclusão</h2>
<p>A instalação do container de dashboard do homer é super fácil. Fique atento a qual porta deseja que a mesma funcione, para evitar conflitos com outros serviços.</p>
<p>Para demais comandos utilizando o docker em linha de comando, acesse o artigo: <a href="https://viniciuspaes.com/raspberry-pi/tutorial-como-instalar-docker-raspberry-pi/">https://viniciuspaes.com/raspberry-pi/tutorial-como-instalar-docker-raspberry-pi/</a></p>
<p>&nbsp;</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-instalar-homer-docker-compose/">Tutorial instalar homer com docker compose</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/docker/tutorial-instalar-homer-docker-compose/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial instalar portainer com docker compose</title>
		<link>https://viniciuspaes.com/docker/tutorial-instalar-portainer-docker-compose/</link>
					<comments>https://viniciuspaes.com/docker/tutorial-instalar-portainer-docker-compose/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Mon, 27 May 2024 19:52:32 +0000</pubDate>
				<category><![CDATA[docker]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[servidor]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2806</guid>

					<description><![CDATA[<p>Aprenda os passos para instalar o portainer em um container, utilizando o docker compose e tenha um poderoso software para gerenciar outros containers.</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-instalar-portainer-docker-compose/">Tutorial instalar portainer com docker compose</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Instalar imagem do portainer em formato de container com o docker, utilizando o docker compose.</p>
<h2>Requisitos</h2>
<ol>
<li>Software docker instalado e configurado no sistema operacional</li>
<li>Docker compose instalado e configurado</li>
<li>Conexão com internet para download da imagem do portainer</li>
</ol>
<h2>Como instalar imagem do portainer com docker</h2>
<h3>Passo 1: Ter uma pasta dedicada para gerenciar os containers</h3>
<p>Se estiver configurando o container em linha de comando, é interessante ter uma pasta para organizar os arquivos das imagens, como pasta de configuração, arquivo de texto da configuração do docker compose, etc.</p>
<pre>mkdir ~/docker
cd ~/docker
</pre>
<h3>Passo 2: Criar uma pasta para armazenar os arquivo de configuração do portainer</h3>
<pre>mkdir ~/docker/portainer</pre>
<h3>Passo 3: Criar o arquivo de docker compose para o portainer</h3>
<p>Agora precisamos criar o arquivo <strong>docker-compose.yml</strong> dentro da pasta <strong>~/docker/portainer</strong> com o editor de texto conhecido como nano.</p>
<pre>nano ~/docker/portainer/docker-compose.yml</pre>
<p>Dentro do <strong>docker-compose.yml</strong> é necessário inserir o conteúdo abaixo:</p>
<pre>services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./portainer-data:/data                             #Pasta onde os arquivos de configuração serão disponíveis no ambiente de host ~/docker/portainer/portainer-data/
    ports:
      - <span style="color: #ff9900;"><strong>9000</strong></span>:9000
</pre>
<p>Após inserir os dados acima dentro do arquivo docker-compose.yml pelo nano, lembre-se de salvar o arquivo e sair do editor.</p>
<h3>Passo 4: Inicializar o container</h3>
<p>Caso a imagem do container não esteja disponível (possivelmente não estará) o docker fará o download automaticamente.<br />
Para iniciar a imagem do container com o docker compose, utilize o comando:</p>
<pre>cd ~/docker/portainer
docker compose up -d</pre>
<p>Caso esteja utilizando o portainer em seu próprio computador, é possível acessá-lo pelo browser, pela url:</p>
<pre>http://localhost:<span style="color: #ff9900;"><strong>porta</strong></span></pre>
<p>Ou se estiver utilizando o mesmo em algum computador remoto ou servidor, basta acessar pelo ip:porta, exemplo:</p>
<pre>http://192.168.1.70:<span style="color: #ff9900;"><strong>9000</strong></span></pre>
<p>Caso já tenha algum serviço funcionando na porta 9000, é necessário editar o arquivo docker-compose.yml e alterar o mapeamento de portas, exemplo:</p>
<pre>    ports:
      - <span style="color: #ff9900;"><strong>9090</strong></span>:9000
</pre>
<p>Desta forma o serviço do filebrowser ficará disponível na porta <span style="color: #ff9900;"><strong>9090</strong></span>.</p>
<p>Após primeiro acesso web ao portainer, será necessário criar as credenciais de acesso com usuário e senha. Lembre de guardar as credenciais em um local seguro.</p>
<h2>Conclusão</h2>
<p>A instalação do portainer com docker é extremamente simples. O docker compose auxilia no setup do container por já ter uma receita de bolo das configurações desejadas.</p>
<p>Para demais comandos utilizando o docker em linha de comando, acesse o artigo: <a href="https://viniciuspaes.com/raspberry-pi/tutorial-como-instalar-docker-raspberry-pi/">https://viniciuspaes.com/raspberry-pi/tutorial-como-instalar-docker-raspberry-pi/</a></p>
<p>&nbsp;</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-instalar-portainer-docker-compose/">Tutorial instalar portainer com docker compose</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/docker/tutorial-instalar-portainer-docker-compose/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial instalar filebrowser com docker compose</title>
		<link>https://viniciuspaes.com/docker/tutorial-instalar-filebrowser-docker-compose/</link>
					<comments>https://viniciuspaes.com/docker/tutorial-instalar-filebrowser-docker-compose/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Fri, 24 May 2024 20:24:52 +0000</pubDate>
				<category><![CDATA[docker]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[servidor]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2786</guid>

					<description><![CDATA[<p>Passo a passo para instalação e configuração de um container do filebrowser em seu servidor, utilizando docker.</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-instalar-filebrowser-docker-compose/">Tutorial instalar filebrowser com docker compose</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Instalar imagem do filebrowser em formato de container com o docker. Neste exemplo vamos instalar em um ambiente linux, mas o setup é o mesmo para o windows.</p>
<h2>Requisitos</h2>
<ol>
<li>Software docker instalado e configurado no sistema operacional</li>
<li>Docker compose instalado e configurado</li>
<li>Conexão com internet para que seja possível realizar o download da imagem do filebrowser</li>
</ol>
<h2>Como instalar imagem do filebrowser com docker</h2>
<h3>Passo 1: Ter uma pasta dedicada para gerenciar os containers</h3>
<p>Caso esteja configurando em linha de comando no linux:</p>
<pre>mkdir ~/docker
cd ~/docker
</pre>
<h3>Passo 2: Criar uma pasta para armazenar os arquivo de configuração do filebrowser</h3>
<pre>mkdir ~/docker/filebrowser
</pre>
<h3>Passo 3: Criar arquivos de configuração em branco do filebrowser</h3>
<p>Na primeira execução/instalação do <strong>filebrowser,</strong> é necessário criar os arquivos de configuração em branco, para evitar problemas do container criar os mesmos como diretório.</p>
<p>Dentro da pasta <strong>~/docker/filebrowser</strong> vamos criar a pasta <strong>config/</strong> para armazenar os arquivos de configuração (que inicialmente vão estar em branco):</p>
<pre>mkdir ~/docker/filebrowser/config
touch ~/docker/filebrowser/config/filebrowser.db
touch ~/docker/filebrowser/config/filebrowser.json
</pre>
<h3>Passo 4: Descobrindo o UID e o GID do seu usuário no linux</h3>
<p>No terminal utilize o comando para descobrir o <strong>UID</strong> (user ID):</p>
<pre>id -u</pre>
<p>Para descobrir o <strong>GID</strong> (group ID):</p>
<pre>id -g</pre>
<p>No meu exemplo, meu <strong>UID</strong> e <strong>GID</strong> tiveram como resultado o número <span style="color: #ff6600;"><strong>1000</strong></span>.</p>
<h3>Passo 5: Definindo corretamente o proprietário dos arquivos de configuração do filebrowser</h3>
<p>É necessário que os arquivos filebrowser.db e filebrowser.json tenham como proprietário o <strong>usuário</strong> e o <strong>grupo de usuário</strong> corretos, no meu caso:</p>
<pre>sudo chown <span style="color: #ff6600;"><strong>vinicius</strong></span>:<span style="color: #ff6600;"><strong>vinicius</strong></span> ~/docker/filebrowser/config/filebrowser.*
</pre>
<p>É possível também utilizar o <strong>UID</strong> e o <strong>GID</strong> no lugar dos nomes do <strong>usuário</strong> e <strong>grupo de usuário</strong> acima, ou seja, <strong>1000</strong>:<strong>1000</strong> (ao invés de <span style="color: #ff9900;"><strong>vinicius</strong></span>:<span style="color: #ff9900;"><strong>vinicius</strong></span>).</p>
<h3>Passo 6: Criar o arquivo de docker compose para o filebrowser</h3>
<p>Agora precisamos criar o arquivo <strong>docker-compose.yml</strong> dentro da pasta <strong>~/docker/filebrowser</strong> com o editor de texto conhecido como nano.</p>
<pre>nano ~/docker/filebrowser/docker-compose.yml</pre>
<p>Dentro do <strong>docker-compose.yml</strong> é necessário inserir o conteúdo abaixo:</p>
<pre>---
version: "2"
services:
  filebrowser:
    image: filebrowser/filebrowser
    container_name: filebrowser
    volumes:
      - /home/<span style="color: #ff6600;"><strong>vinicius</strong></span>:/srv                                                            #Pasta onde deseja que os arquivos sejam acessados pelo filebrowser
      - /home/<span style="color: #ff6600;"><strong>vinicius</strong></span>/docker/filebrowser/config/filebrowser.db:/database.db
      - /home/<span style="color: #ff6600;"><strong>vinicius</strong></span>/docker/filebrowser/config/filebrowser.json:/filebrowser.json
    ports:
      - <span style="color: #ff9900;"><strong>80</strong></span>:80                                                                          #Mapeamento porta externa (servidor) : Porta interna (container)
    user: <strong><span style="color: #ff6600;">1000</span></strong>:<span style="color: #ff6600;"><strong>1000</strong></span>                                                                    #(Id do usuário) UID:GID (Id do grupo do usuário)
    restart: unless-stopped
</pre>
<p>Após inserir os dados acima dentro do arquivo docker-compose.yml pelo nano, lembre-se de salvar o arquivo e sair do editor.</p>
<h3>Passo 7: Inicializar o container</h3>
<p>Caso a imagem do container não esteja disponível (possivelmente não estará) o docker fará o download automaticamente.<br />
Para iniciar a imagem do container com o docker compose, utilize o comando:</p>
<pre>cd ~/docker/filebrowser
docker compose up -d</pre>
<p>Caso esteja utilizando o filebrowser em seu próprio computador, é possível acessá-lo pelo browser, pela url:</p>
<pre>http://localhost:<span style="color: #ff9900;"><strong>porta</strong></span></pre>
<p>Ou se estiver utilizando o mesmo em algum computador remoto ou servidor, basta acessar pelo ip:porta, exemplo:</p>
<pre>http://192.168.1.70:<span style="color: #ff9900;"><strong>80</strong></span></pre>
<p>Caso já tenha algum serviço funcionando na porta 80, é necessário editar o arquivo docker-compose.yml e alterar o mapeamento de portas, exemplo:</p>
<pre>    ports:
      - <span style="color: #ff9900;"><strong>8077</strong></span>:80
</pre>
<p>Desta forma o serviço do filebrowser ficará disponível na porta <span style="color: #ff9900;"><strong>8077</strong></span>.</p>
<h2>Conclusão</h2>
<p>Instalar o container do filebrowser é bastante simples. Necesário ter cuidado apenas na primeira vez que inicializar o container, pois é necessário ter os arquivos de configuração criados previamente, senão o container irá criar os mesmos como diretórios e causará erros de execução.</p>
<p>Para demais comandos utilizando o docker em linha de comando, acesse o artigo: <a href="https://viniciuspaes.com/raspberry-pi/tutorial-como-instalar-docker-raspberry-pi/">https://viniciuspaes.com/raspberry-pi/tutorial-como-instalar-docker-raspberry-pi/</a></p>
<p>&nbsp;</p>
<p>O post <a href="https://viniciuspaes.com/docker/tutorial-instalar-filebrowser-docker-compose/">Tutorial instalar filebrowser com docker compose</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/docker/tutorial-instalar-filebrowser-docker-compose/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor de Email Ubuntu: habilitar porta 465 SMTP para Outlook</title>
		<link>https://viniciuspaes.com/email/servidor-email-ubuntu-habilitar-465-smtp-outlook/</link>
					<comments>https://viniciuspaes.com/email/servidor-email-ubuntu-habilitar-465-smtp-outlook/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Mon, 15 Apr 2024 13:25:51 +0000</pubDate>
				<category><![CDATA[email]]></category>
		<category><![CDATA[email autenticado]]></category>
		<category><![CDATA[Servidor Email]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2779</guid>

					<description><![CDATA[<p>Saiba como habilitar a porta 465 no Postfix para envio de emails autenticados. Etapa necessária para funcionamento com cliente do Outlook.</p>
<p>O post <a href="https://viniciuspaes.com/email/servidor-email-ubuntu-habilitar-465-smtp-outlook/">Servidor de Email Ubuntu: habilitar porta 465 SMTP para Outlook</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<ul>
<li>Habilitar porta 465 para envio de email SMTPS no Postfix, para o sistema ficar compatível com o novo Outlook (cliente de email)</li>
</ul>
<h2>Passo a para para habilitar porta 465 no postfix para ser compatível com Outlook</h2>
<p>Caso tenha chego aqui pelo post de <a href="https://viniciuspaes.com/email/tutorial-criar-servidor-emails-ubuntu/" target="_blank" rel="noopener">Configurar um Servidor de Email Completo no Ubuntu</a>, com a atualização do aplicativo &#8220;Email&#8221; do Windows para Outlook, há problemas de autenticação e configuração para envio de emails. Este problema é mais evidente no Outlook, que só aceita enviar emails pela porta 465. Há outros clientes de email que podem ter a mesma característica.</p>
<h3>Passo 1 &#8211; Conexão SSH no servidor de emails</h3>
<p>Conecte no seu servidor por SSH, exemplo:</p>
<pre>ssh usuario@ip</pre>
<p>Ou caso utilize uma chave (padrão caso seu servidor esteja na Amazon AWS):</p>
<pre>ssh -i chave.pem usuario@IP</pre>
<h3>Passo 2 &#8211; Editar configuração Postfix</h3>
<p>Para adicionar envio de emails também pela porta 465, precisamos primeiramente habilitar a opção no postfix. Desta forma, é necessário alterar o arquivo master.cf:</p>
<pre>sudo nano /etc/postfix/master.cf

Após o arquivo aberto, precisamos inserir o conteúdo abaixo no fim do arquivo:

</pre>
<pre>smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
</pre>
<p>Após inserir o conteúdo, salve o arquivo antes de fechar o editor nano.</p>
<h3>Passo 3 &#8211; Reiniciar Postfix</h3>
<p>Para que as modificações realizadas fiquem persistentes, há necessidade de reiniciar o postfix. Execute então o comando abaixo:</p>
<pre>sudo service postfix restart</pre>
<h3>Passo 4 &#8211; Abrir porta 465 no firewall</h3>
<p>Caso tenha firewall UFW instalado e configurado, ou utilize o IPTABLES para bloquear portas no servidor, é necessário garantir acesso ao tráfego na porta 465.</p>
<h4>IPTABLES</h4>
<p>Para habilitar o tráfego da porta 465 pelo IPTABLES, utilize o comando:</p>
<pre>sudo iptables -A INPUT -p tcp --dport 465 -j ACCEPT</pre>
<h4>UFW</h4>
<p>Caso tenha o UFW configurado, execute o comando:</p>
<pre>sudo ufw allow 465/tcp</pre>
<h3>Passo 5 &#8211; Abrir porta 465 em provedor ou cloud</h3>
<p>Caso utilize alguma empresa de Cloud para hospedar seu servidor de email, é necessário acessar a interface da mesma e verificar a possibilidade de abrir a porta 465. Da mesma forma, caso hospede o servidor em seu provedor ou localmente, é necessário habilitar a comunicação da porta 465 no roteador.</p>
<h2>Conclusão</h2>
<p>Caso tenha seguido os passos do tutorial corretamente, seu postfix já está habilitado a enviar emails autenticados também pela porta 465. Alguns clientes de email precisam desta configuração para conseguirem enviar emails corretamente.</p>
<p>&nbsp;</p>
<p>O post <a href="https://viniciuspaes.com/email/servidor-email-ubuntu-habilitar-465-smtp-outlook/">Servidor de Email Ubuntu: habilitar porta 465 SMTP para Outlook</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/email/servidor-email-ubuntu-habilitar-465-smtp-outlook/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como migrar certificados SSL letsencrypt de um servidor antigo para o novo</title>
		<link>https://viniciuspaes.com/servidor/tutorial-como-migrar-certificados-letsencrypt-de-um-servidor-antigo-para-o-novo/</link>
					<comments>https://viniciuspaes.com/servidor/tutorial-como-migrar-certificados-letsencrypt-de-um-servidor-antigo-para-o-novo/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Tue, 12 Dec 2023 15:04:43 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[website]]></category>
		<category><![CDATA[SSL]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2716</guid>

					<description><![CDATA[<p>Passos necessários para migrar certificados SSL do letsencrypt (certbot) de um servidor para outro.</p>
<p>O post <a href="https://viniciuspaes.com/servidor/tutorial-como-migrar-certificados-letsencrypt-de-um-servidor-antigo-para-o-novo/">Tutorial como migrar certificados SSL letsencrypt de um servidor antigo para o novo</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Caso esteja migrando um servidor, sendo necessário também migrar os certificados SSL do letsencrypt (certbot), é possível seguir este tutorial para executar as tarefas necessárias.<br />
Desta forma temos 2 servidores em questão:</p>
<ul>
<li><strong><span style="color: #ff0000;">Servidor ANTIGO</span></strong></li>
<li><strong><span style="color: #339966;">Servidor NOVO</span></strong></li>
</ul>
<h2>Resumo de como migrar certificado SSL entre servidores</h2>
<p>Resumindo os passos necessários:</p>
<ol>
<li>Tenha o certbot instalado em ambos os servidores</li>
<li>Conecte no servidor antigo por SSH</li>
<li>Utilize o RSYNC para sincronizar as pastas do servidor antigo com o novo (faça backup de tudo antes para evitar que arquivos sejam sobreescritos)
<ol>
<li><strong>sudo rsync -avz /etc/letsencrypt/archive/       <span style="color: #3366ff;">root</span>@<span style="color: #339966;">ipservidornovo</span>:/etc/letsencrypt/archive/ </strong></li>
<li><strong>sudo rsync -avz &#8211;links /etc/letsencrypt/live/ <span style="color: #3366ff;">root</span>@<span style="color: #339966;">ipservidornovo</span>:/etc/letsencrypt/live/ </strong></li>
<li><strong>sudo rsync -avz /etc/letsencrypt/renewal/      <span style="color: #3366ff;">root</span>@<span style="color: #339966;">ipservidornovo</span>:/etc/letsencrypt/renewal/</strong></li>
</ol>
</li>
<li>No servidor novo, testar se os links lógicos foram preservados:
<ol>
<li><strong>sudo certbot update_symlinks</strong></li>
</ol>
</li>
<li>Testar se migração foi realizada com sucesso:
<ol>
<li><strong>sudo letsencrypt renew &#8211;dry-run</strong></li>
</ol>
</li>
<li>Migração concluída</li>
</ol>
<h2>Passo a passo para migrar certificados SSL de um servidor antigo para um novo</h2>
<h3>Passo 1 &#8211; Preparar o servidor novo para receber os certificados (instalar certbot)</h3>
<p>Abra um terminal ou utilize um software (putty) para conectar no <strong><span style="color: #339966;">Servidor NOVO</span></strong> para instalar o certbot:</p>
<pre>ssh <strong>usuario</strong>@<strong><span style="color: #339966;">ipservidornovo</span></strong></pre>
<p>Agora siga os passos descritos nesta URL pra instalar o certbot:</p>
<pre><a href="https://certbot.eff.org/" target="_blank" rel="noopener">https://certbot.eff.org/</a></pre>
<p>Caso já tenha o certbot instalado no novo servidor, interessante realizar um backup dos certificados para evitar que sejam sobreescritos pelo rsync no próximo passo.</p>
<h3>Passo 2 &#8211; Enviar os arquivos dos certificados para o novo servidor</h3>
<h4>Passo 2 &#8211; Opção 1 &#8211; Migrar os arquivos com RSYNC</h4>
<p>Abra <strong><u>uma nova janela</u></strong> do terminal ou utilize um software (putty) e conecte no <span style="color: #ff0000;"><strong>Servidor ANTIGO</strong></span> por ssh:</p>
<pre>ssh usuario@<span style="color: #ff0000;"><strong>ipservidorantigo</strong></span></pre>
<p>Caso tenha possibilidade de conexão no <span style="color: #339966;"><strong>Servidor NOVO</strong></span> por ssh à partir do <span style="color: #ff0000;"><strong>Servidor ANTIGO</strong></span>, é possível utilizar <strong>RSYNC</strong> (<span style="color: #ff6600;">Atenção!</span> Estas pastas são propriedades do usuário root, então para ter permissão de sincronizar, é necessário se conectar com usuário <strong>root</strong>, ou migrar para umas pasta temporária no <span style="color: #339966;"><strong>novo servidor</strong></span> e depois mover os arquivos):</p>
<pre>sudo rsync -avz         /etc/letsencrypt/archive/  <strong>usuario</strong>@<strong><span style="color: #339966;">ipservidornovo</span></strong>:/etc/letsencrypt/archive/
sudo rsync -avz --links /etc/letsencrypt/live/     <strong>usuario</strong>@<strong><span style="color: #339966;">ipservidornovo</span></strong>:/etc/letsencrypt/live/
sudo rsync -avz         /etc/letsencrypt/renewal/  <strong>usuario</strong>@<strong><span style="color: #339966;">ipservidornovo</span></strong>:/etc/letsencrypt/renewal/
</pre>
<p>Vá para o terminal do <span style="color: #339966;"><strong>Servidor NOVO</strong></span> que abriu, ou para a aba de conexão do Putty relacionada ao <strong><span style="color: #339966;">Servidor NOVO</span></strong>.<br />
Agora execute o comando para verificar que os links simbólicos da pasta /etc/letsencrypt/live/ foram migrados corretamente:</p>
<pre>sudo certbot update_symlinks</pre>
<p>Se tudo ocorreu corretamente, pode executar o certbot e testar reinstalar o certificado:<br />
Caso utilize nginx:</p>
<pre>sudo certbot --nginx</pre>
<p>Caso utilize apache:</p>
<pre>sudo certbot --apache</pre>
<p>Tudo Pronto! Certificados Migrados com Sucesso!</p>
<hr />
<h4>Passo 2 &#8211; Opção 2 &#8211; Migrar os arquivos com SCP</h4>
<p>Caso não tenha possibilidade de conexão por SSH de um servidor para o outro com permissão root e não quer utilizar uma pasta temporária, é possível compactar os arquivos e enviar para o outro servidor:<br />
Vá para sua pasta home:</p>
<pre>cd ~</pre>
<p>Agora execute o comando para criar um arquivo compactado dos certificados:</p>
<pre>sudo tar -chvzf letsencrypt-files.tar.gz /etc/letsencrypt/archive/ /etc/letsencrypt/renewal/</pre>
<p>Agora é preciso enviar o arquivo para o <span style="color: #339966;"><strong>Servidor NOVO</strong></span>.<br />
Caso possa conectar no servidor novo por SSH à partir do <span style="color: #ff0000;"><strong>Servidor ANTIGO</strong></span> com um usuário sem permissão root, é possível utilizar o comando scp:</p>
<pre>scp letsencrypt-files.tar.gz usuario@<span style="color: #339966;"><strong>ipservidornovo</strong></span>:</pre>
<p>No comando acima, o arquivo vai ser transferido para a pasta home do seu usuário, como exemplo: /home/usuario/</p>
<p>Se preferir, é possível realizar o download do arquivo criado para seu computador pessoal. Abra um terminal em seu computador e utilize o comando:<br />
Caso utilize windows:</p>
<pre>scp usuario@<span style="color: #ff0000;"><strong>ipservidorantigo</strong></span>:/home/usuario/letsencrypt-files.tar.gz "%userprofile%/Downloads"</pre>
<p>Se estiver utilizando Mac ou Linux:</p>
<pre>scp usuario@<span style="color: #ff0000;"><strong>ipservidorantigo</strong></span>:/home/usuario/letsencrypt-files.tar.gz ~/Downloads</pre>
<p>Com o arquivo <strong>letsencrypt-files.tar.gz</strong> já disponível no <span style="color: #339966;"><strong>Servidor NOVO</strong></span>, é necessário descompactar o mesmo e mover os certificados para a pasta /etc/letsecrypt. No comando abaixo vamos levar em consideração que o arquivo compactado está presente na pasta home do usuário.</p>
<pre>sudo tar -xvf ~/letsencrypt-files.tar.gz</pre>
<p>Agora copie os arquivos dos certificados que gostaria de instalar no novo servidor:</p>
<pre>sudo cp ~/etc/letsencrypt/archive/ /etc/letsencrypt/archive/ -R
sudo cp ~/etc/letsencrypt/renewal/ /etc/letsencrypt/renewal/ -R
</pre>
<p>Necessário agora recriar os links lógicos para a pasta &#8220;<strong>live</strong>&#8221; de cada domínio:</p>
<pre>sudo ln -s /etc/letsencrypt/archive/<strong>domonio1.com.br</strong>/cert<strong><span style="color: #ff6600;">1</span></strong>.pem      /etc/letsencrypt/live/<strong>domonio1.com.br</strong>/cert.pem
sudo ln -s /etc/letsencrypt/archive/<strong>domonio1.com.br</strong>/chain<strong><span style="color: #ff6600;">1</span></strong>.pem     /etc/letsencrypt/live/<strong>domonio1.com.br</strong>/chain.pem
sudo ln -s /etc/letsencrypt/archive/<strong>domonio1.com.br</strong>/fullchain<strong><span style="color: #ff6600;">1</span></strong>.pem /etc/letsencrypt/live/<strong>domonio1.com.br</strong>/fullchain.pem
sudo ln -s /etc/letsencrypt/archive/<strong>domonio1.com.br</strong>/privkey<strong><span style="color: #ff6600;">1</span></strong>.pem   /etc/letsencrypt/live/<strong>domonio1.com.br</strong>/privkey.pem
</pre>
<p><strong><span style="color: #ff6600;">Atenção!</span></strong> Lembrando que a pasta /archive/<strong>dominio1.com.br</strong>/ pode conter várias versões dos certificados, cert.pem, cert<strong><span style="color: #ff6600;">1</span></strong>.pem, cert<span style="color: #ff6600;"><strong>2</strong></span>.pem; chain.pem, chain<strong><span style="color: #ff6600;">1</span></strong>.pem, chain<span style="color: #ff6600;"><strong>2</strong></span>.pem, etc. Escolher a mesma versão utilizada no <span style="color: #ff0000;"><strong>Servidor ANTIGO</strong></span>.</p>
<p>Agora verifique se os links lógicos foram criados corretamente, senão, revise os passos anteriores:</p>
<pre>sudo certbot update_symlinks</pre>
<p>Lembrando que é comum receber erro nos links lógicos (symlinks), como o erro abaixo:</p>
<pre>Renewal configuration file /etc/letsencrypt/renewal/<strong>dominio1.com.br</strong>.conf is broken.
The error was: expected /etc/letsencrypt/live/<strong>dominio1.com.br</strong>/cert.pem to be a symlink
Skipping.
</pre>
<p>Caso receba a mensagem de erro acima, é necessário repetir o passo anterior (<em><strong>sudo ln -s &#8230;</strong></em>)  e verificar se criou os links lógicos corretamente.</p>
<p>Se tudo ocorreu corretamente, pode executar o <strong>certbot</strong> e testar reinstalar o certificado:<br />
Caso utilize nginx:</p>
<pre>sudo certbot --nginx</pre>
<p>Caso utilize apache:</p>
<pre>sudo certbot --apache</pre>
<p>Caso não receba nenhuma mensagem de erro, os certificados foram migrados com sucesso.</p>
<h2>Conclusão</h2>
<p>O processo de migração dos certificados do <strong>certbot</strong> (letsencrypt) é bastante simples. Basta saber quais os arquivos necessários e ter certeza que a estrutura de links lógicos (symlinks) foi preservada na migração.<br />
Caso tenha alguma dúvida ou sugestão, basta informar nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/servidor/tutorial-como-migrar-certificados-letsencrypt-de-um-servidor-antigo-para-o-novo/">Tutorial como migrar certificados SSL letsencrypt de um servidor antigo para o novo</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/servidor/tutorial-como-migrar-certificados-letsencrypt-de-um-servidor-antigo-para-o-novo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Raspberry Pi 5</title>
		<link>https://viniciuspaes.com/raspberry-pi/raspberry-pi-5/</link>
					<comments>https://viniciuspaes.com/raspberry-pi/raspberry-pi-5/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Thu, 28 Sep 2023 12:27:56 +0000</pubDate>
				<category><![CDATA[raspberry pi]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2636</guid>

					<description><![CDATA[<p>Conheça as especificações do Raspberry Pi 5 e os upgrades de hardware diante seu antecessor: suporte PCI-e 2.0 x1 e processador Arm Cortex-A76.</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/raspberry-pi-5/">Raspberry Pi 5</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2637" src="https://viniciuspaes.com/wp-content/uploads/2023/09/raspberry-pi-5.png" alt="Raspberry Pi 5" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/raspberry-pi-5.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/raspberry-pi-5-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Introdução</h2>
<p>A <strong>Raspberry Pi Foundation</strong> lança o quinto modelo da sua linha de mini computadores de placa única. O <strong>Raspberry Pi 5</strong> segue as mesmas especificações de tamanho, tendo sua largura e comprimento semelhantes à de um cartão de crédito.</p>
<p>Em uma análise superficial, os upgrades mais aparentes são referentes ao processador e suporte PCI-e.</p>
<p>De acordo com a fundação, o novo processador possui velocidade entre 2 ou 3x mais veloz que o modelo anterior (Raspberry Pi 4), e o clock base do novo processador é de 2,4 Ghz.</p>
<p>O segundo destaque é o suporte ao PCI-e 2.0 x1, mas que diferente dos seus concorrentes, precisa de um HAT (Hardware Attached on Top) específico para a conexão.</p>
<h2>Especificações Técnicas do Raspberry Pi 5</h2>
<p>O <strong>Raspberry Pi 5</strong> conta com diversos upgrades de hardware, mas nada muito expressivo diante o modelo 4 e seus concorrentes. Abaixo segue a especificação técnica do novo modelo:</p>
<ul>
<li>Processador: Broadcom BCM2712 com clock de 2.4GHz, 4 núcleos (quad-core) e 64-bits, da linha <strong>Arm Cortex-A76</strong>
<ul>
<li>Possui extensões de criptografia, Memória Cache L2 de 512KB por cada núclo e 2MB de memória cache L3 compartilhada</li>
</ul>
</li>
<li>Placa de Vídeo (GPU): Modelo <strong>VideoCore VII</strong>, com suporte OpenGL ES 3.1, Vulkan 1.2</li>
<li>Saída vídeo: 2 Saídas micro HDMI com suporte a 4K e 60 frames com suporte HDR e suporte a decodificação HEVC</li>
<li>Memória RAM: Utiliza memória ram de baixo consumo energético LP-DDR4 X-4267 SDRAM. É possível adquirir o <strong>Raspberry Pi 5</strong> com 4 ou 8GB de RAM.</li>
<li>Conexão Wi-fi: Modelo Dual-band 802.11ac (wifi-5)</li>
<li>Conexão Bluetooth: 5.0 (modelo de baixo consumo BLE)</li>
<li>Armazenamento: Slot para cartão microSD, agora com suporte ao <strong>modo SDR104 de alta velocidade</strong></li>
<li>Conexão USB:
<ul>
<li>2 portas × USB 3.0, suporte para largura de banda simultânea de 5Gbps</li>
<li>2 portas × USB 2.0, para conexão de periféricos</li>
</ul>
</li>
<li>Conexão Ethernet cabeada: Modelo Gigabit, com suporte Power Over Ethernet+ (mas precisa de um HAT PoE)</li>
<li>Interface MIPI: Suporte para 2 câmeras/dispositivos em largura de banda de 4-lanes (o dobro, comparado com o Raspberry Pi 4)</li>
<li>Interface PCIe 2.0 x1: permite conexão de periféricos, placas gráficas ou unidades de armazenamento (mas precisa de um HAT específico para esta finalidade)</li>
<li>Fonte de Alimentação: o modelo continua sendo alimentado por fonte de alimentação de 5V, mas necessita de uma corrente de 5 amperes. A conexão é USB-C, e agora possui suporte ao Power Delivery</li>
<li>GPIO: Continua com o mesmo suporte padrão do header de 40 pinos do Raspberry Pi</li>
<li>RTC: Suporte para Real-time clock (RTC), mas precisa de alimentação de uma bateria externa</li>
<li>Botão: Botão de liga e desliga</li>
<li>Ventoinha: suporte para ventoinhas PWM com conector dedicado (4 pinos) na placa mãe</li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2643" src="https://viniciuspaes.com/wp-content/uploads/2023/09/raspberry-pi-5-visao-superior.png" alt="Raspberry Pi 5 - zoom na placa mãe" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/raspberry-pi-5-visao-superior.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/raspberry-pi-5-visao-superior-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Preço do Raspberry Pi 5</h2>
<p>Os novos modelos do <strong>Raspberry Pi 5</strong> tiveram um aumento diante o modelo anterior, os novos valores são:</p>
<ul>
<li>Raspberry Pi 5 com <strong>4GB de ram</strong>: U$60 dólares</li>
<li>Raspberry Pi 5 com <strong>8GB de ram</strong>: U$80 dólares</li>
</ul>
<p>Ao observar os novos preços acima, notamos um aumento de U$5 dólares diante os modelos com a mesma configuração de RAM do Raspberry Pi 4.</p>
<h2>Lançamento do Raspberry Pi 5</h2>
<p>De acordo com a fundação mantenedora do Raspberry Pi o lançamento do Raspberry Pi 5 será em outubro de 2023. Caso tenha interesse no novo modelo, já é possível comprar em pré venda nos principais fornecedores internacionais.</p>
<ul>
<li><strong><a href="https://thepihut.com/products/raspberry-pi-5" target="_blank" rel="noopener">Pi Hut</a></strong></li>
<li><strong><a href="https://www.parallax.com/search-products/?swpengine=products&amp;swpquery=raspberry+pi+5" target="_blank" rel="noopener">Parallax</a></strong></li>
<li><strong><a href="https://shop.pimoroni.com/products/raspberry-pi-5?variant=41044580204627" target="_blank" rel="noopener">Pimorini</a></strong></li>
<li><strong><a href="https://www.cytron.io/p-raspberry-pi-5" target="_blank" rel="noopener">Cytron.io</a></strong></li>
</ul>
<h2>Considerações sobre o novo Raspberry Pi 5</h2>
<p>De forma geral, um problema comum no Raspberry Pi, é o IO. No modelo 5, o upgrade para suporte ao modo <strong> SDR104</strong> é interessante, porém de forma geral não garante desempenho e confiabilidade satisfatórios para armazenamento de longo prazo. O suporte para PCI-e 2.0 x1 é interessante, mas a banda de transferência também fica limitada a algo próximo a 500MB/s, então não temos grandes vantagens, comparadas a utilização de um SSD na porta USB 3.0.</p>
<p>Se compararmos os principais concorrentes do Raspberry Pi, é possível notar que já possuem suporte a unidade de armazenamento NVME nativamente, com o slot soldado na placa mãe. Acredito que a Pi Foundation segurou um pouco os upgrades nesta geração, como o RPi 5 chegou no fim do baile em 2023, esperava um hardware igual ou superior aos concorrentes.</p>
<p>O Raspberry ainda tem muitas vantagens diante os produtos concorrentes, mas a principal ainda é diante a comunidade de desenvolvedores em torno do Raspberry. Já tive produtos dos concorrentes, e me decepcionei pela falta de suporte ao longo do tempo. A pergunta é até que ponto a Raspberry vai conseguir segurar o pé no freio nos upgrades e se manter na liderança, a medida que as outras marcas vão desenvolvendo sua base de suporte e investindo pesado em hardware.</p>
<p>&nbsp;</p>
<p>E você, o que achou do Raspberry Pi 5? Uma grande evolução diante o modelo anterior? Eu particularmente não vejo nenhuma grande vantagem para realizar um <strong><em>tech refresh</em></strong> no meu Raspberry Pi 4. Mas vamos aguardar os testes de benchmark.</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/raspberry-pi-5/">Raspberry Pi 5</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/raspberry-pi/raspberry-pi-5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como restaurar e colorir fotos antigas com Inteligência Artificial (IA)</title>
		<link>https://viniciuspaes.com/ia/como-restaurar-fotos-antigas-inteligencia-artificial/</link>
					<comments>https://viniciuspaes.com/ia/como-restaurar-fotos-antigas-inteligencia-artificial/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Mon, 18 Sep 2023 14:09:03 +0000</pubDate>
				<category><![CDATA[IA]]></category>
		<category><![CDATA[fotografias]]></category>
		<category><![CDATA[fotos]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2523</guid>

					<description><![CDATA[<p>Lista de ferramentas de inteligência artificial para restaurar e/ou colorir fotos antigas.</p>
<p>O post <a href="https://viniciuspaes.com/ia/como-restaurar-fotos-antigas-inteligencia-artificial/">Como restaurar e colorir fotos antigas com Inteligência Artificial (IA)</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introdução</h2>
<p>As ferramentas de <strong>Inteligência Artificial</strong> são de grande valia no processo de <strong>restauração e colorização de fotografias antigas</strong> digitalizadas. Muitas vezes o processo de restauração era demorado, pois era necessário utilizar ferramentas de edição como o photoshop para manualmente ir corrigindo defeitos da fotografia e ajustando características da imagem.</p>
<p>As <strong>ferramentas de IA</strong> ainda não são perfeitas, principalmente se a foto possuir defeitos e ou desgastes do tempo. Porém, os resultados são bem satisfatórios. Nesta postagem, reuni as principais ferramentas de AI que ofertam recursos de colorização ou restauração de imagens. Fiz um teste com uma fotografia de um familiar e fiquei impressionado com o ganho de nitidez e profundidade em alguns testes. O melhor resultado que obtive foi corrigindo os defeitos da imagem com o photoshop e depois utilizando as ferramentas de Inteligência Artificial para ajustar os demais parâmetros.</p>
<p>Para fins de comparação, os testes que realizei foram em uma imagem 3&#215;4 do meu avô. Segue a imagem original ao lado da edição manual que fiz no photoshop:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2581" src="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop.png" alt="Restauração Fotos - Foto Original ao lado de Edição com Photoshop" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Lista de Ferramentas de Inteligência Artificial para restaurar e colorir fotos antigas</h2>
<p>A seguir a lista de ferramentas de IA para restaurar fotografias, lembrando que nem todas são gratuitas, mas é possível realizar um teste grátis com funções básicas, ou gerar uma foto com marca dágua.</p>
<h3>Hotpot.ai</h3>
<p>A Hotpot oferta diversas ferramentas em seu website, mas como o nosso objetivo é restaurar e colorir as fotos, as principais são:</p>
<ul>
<li><strong><a href="https://hotpot.ai/restore-picture" target="_blank" rel="noopener">Restauração de foto</a></strong></li>
<li><a href="https://hotpot.ai/colorize-picture" target="_blank" rel="noopener"><strong>Colorir foto antiga</strong></a></li>
</ul>
<p>Com o Hotpot não obtive resultados extraordinários com a fotografia, tive nitidez mais no rosto, porém as roupas e o fundo ficaram com muitos ruídos e algumas vezes com pouca nitidez. Sobre a etapa de colorir as fotos, elas mantinham aquele efeito de quadros antigos, que eram pintados a mão. Porém a ferramenta deixou gerar as imagens de forma gratuita.</p>
<p>Abaixo segue algumas comparações da utilização do Hotpot.ai com efeito de restauração com IA na foto original e na foto com photoshop:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2583" src="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore.png" alt="Restauração Fotos - Foto Original ao lado de Edição com Photoshop - Hotpot.ai Restore" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Como mencionei, o resultado da aplicação de IA na foto previamente editada com photoshop foi excelente. É possível verificar que a imagem ganhou mais nitidez e os ajustes de contraste geram um efeito de profundidade. Resultado fantástico.</p>
<p>Utilizando as opções de colorização do Hotpot.ai, obtive os seguintes resultados:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2589" src="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-25f.png" alt="Restauração de Fotos e Colorização - Resultado da ferramenta Hotpot.ai com 25 fatores de cor" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-25f.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-25f-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2590" src="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-12f.png" alt="Restauração de Fotos e Colorização - Resultado da ferramenta Hotpot.ai com 12 fatores de cor" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-12f.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-12f-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2591" src="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-15f.png" alt="Restauração de Fotos e Colorização - Resultado da ferramenta Hotpot.ai com 15 fatores de cor" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-15f.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-15f-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2592" src="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-18f.png" alt="Restauração de Fotos e Colorização - Resultado da ferramenta Hotpot.ai com 18 fatores de cor" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-18f.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-18f-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2593" src="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-20f.png" alt="Restauração de Fotos e Colorização - Resultado da ferramenta Hotpot.ai com 20 fatores de cor" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-20f.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-hotpot-ia-restore-cor-20f-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Das imagens acima, o melhor resultado que obtive foi com a opção de colorização com 15 fatores. Mas ao olhar as imagens, é possível notar alguns detalhes no queixo, mas estes problemas foram oriundos do software de compressão das imagens para web. Fiz essa compressão para postar a imagem aqui no website. Se conseguiu um resultado melhor com outra opção de fator de cor, me conta aí nos comentários!</p>
<h3>VanceAI.com</h3>
<p>Com a ferramenta de IA da VanceAI foi possível realizar modificações na foto diretamente pela página web. Sendo possível ajustar características de cor, contraste, nitidez, cortar a imagem, girar, etc. A capacidade de correção de defeitos da imagem é boa, achei melhor que a do Hotpot, que parecia utilizar um &#8220;blur&#8221; nos defeitos e suas proximidades.</p>
<p>O que mais me impressionou foi a nitidez do rosto das pessoas na foto e a textura de pele utilizada que superou e muito minhas expectativas. Porém alguns defeitos da fotografia a IA não conseguiu corrigir corretamente e algumas dobras do pescoço ficaram com riscos. Mas se fosse levar em conta somente o rosto, de longe foi a melhor ferramentas que utilizei. A desvantagem que a imagem gerada de forma gratuita possui marca dágua.</p>
<p>Quando removi os maiores defeitos da imagem com o photoshop e utilizei novamente a ferramenta, os resultados foram fantásticos. Basta acessar o link abaixo para ter acesso a ferramenta:</p>
<ul>
<li><strong><a href="https://vanceai.com/old-photo-restoration/" target="_blank" rel="noopener">Restauração e colorização de fotografias</a></strong></li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2597" src="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-vance-ia-restore.png" alt="Restauração de Fotos e Colorização - Resultado da ferramenta Vance.ia" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-vance-ia-restore.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-vance-ia-restore-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>ImageColorizer.com</h3>
<p>A Imagecolorizer possui diversas ferramentas presentes em seu website, diferente da VanceAI que possui tudo integrado, na Imagecolorizer é necessário realizar cada etapa por vez. No teste que realizei, peguei a foto original e solicitei o serviço de Reparação (AI Repair), o resultado foi bem abaixo do esperado. Os campos que possuem dobra da fotografia ficaram borrados ao invés de corrigidos igual a Vance realizou.</p>
<p>Optei por utilizar a foto que eu mesmo fiz as correções e reparos na fotografia e apliquei o serviço de &#8220;Retouch&#8221;, aumentando a nitidez, o resultado ficou fantástico, o melhor que consegui de todas as ferramentas.</p>
<p>Por fim, optei em colorir a imagem que realizei o retouch. O resultado ficou bem abaixo do esperado. Na questão de colorir, a VanceAI ainda é superior. Até mesmo o Hotpot teve um resultado melhor que a imagecolorizer. As ferramentas que utilizei da ImageColorizer foram:</p>
<ul>
<li><a href="https://imagecolorizer.com/repair" target="_blank" rel="noopener"><strong>AI Repair</strong></a></li>
<li><a href="https://imagecolorizer.com/face-retouch" target="_blank" rel="noopener"><strong>AI Retouch</strong></a> (a melhor solução de todas)</li>
<li><a href="https://imagecolorizer.com/colorize" target="_blank" rel="noopener"><strong>AI Colorize</strong></a> (resultado pouco satisfatório para o teste que realizei)</li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2599" src="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imagecolorizer-restore.png" alt="Restauração de Fotos e Colorização - Resultado da ferramenta ImageColorizer" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imagecolorizer-restore.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imagecolorizer-restore-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2601" src="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imagecolorizer-restore-cor.png" alt="Restauração de Fotos e Colorização - Resultado da ferramenta ImageColorizer + aplicação" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imagecolorizer-restore-cor.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imagecolorizer-restore-cor-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Remini.AI</h3>
<p>O Remini.AI possui uma solução all-in-one para restaurar e colorir as imagens. No teste que realizei os resultados foram fantásticos. De longe a melhor solução para nitidez e detalhes nos rostos da imagem e correção de contraste em regiões de contorno. A adição de profundidade na foto também é espetacular. A única desvantagem a opção gratuita apenas ofertas imagens com marca dágua.</p>
<p>É possível acessar a ferramenta pelo link:</p>
<ul>
<li><a href="https://remini.ai/" target="_blank" rel="noopener"><strong>Restauração e colorização de fotos</strong></a></li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2603" src="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-remini-ia-restore.png" alt="Restauração de Fotos e Colorização - Resultado da ferramenta Remini" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-remini-ia-restore.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-remini-ia-restore-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>A imagem acima não faz jus ao resultado. A foto ajustada com IA possui uma resolução muito maior e excelente nitidez. Antes de realizar um veredicto sobre a foto acima, lembre-se que a mesma teve resolução diminuída e foi comprimida para padrão web. Uma dica, se utilizar o aplicativo de celular da Remini é possível exportar a foto sem marca dágua.</p>
<h3>ImgKits.com</h3>
<p>O ImgKits.com também oferta diversos serviços de manipulação de imagens. Porém nem todas as opções são grátis, fiz testes com as opções de unblur, repair e colorização:</p>
<ul>
<li><b>Imgkits.com</b></li>
<li><a href="https://www.imgkits.com/photo-restoration/editor"><strong>Ferramenta unblur e colorização do Imgkits.com</strong></a></li>
<li><a href="https://www.imgkits.com/inpaint/editor"><strong>Ferramenta de remoção de defeitos na imagem do Imgkits.com</strong></a></li>
</ul>
<p>De todas as ferramentas de IA listadas o ImgKits é a que tive resultados menos otimizados:</p>
<ul>
<li>Utilizando uma imagem que já tinha restaurado (photoshop), não notei nenhum ganho expressivo, porém notei algumas correções de contraste em regiões de contorno, mas quase imperceptíveis. Em seguida optei por colorir a imagem, para ver se há algum ganho no processo ao utilizar uma imagem já restaurada. Novamente o resultado foi pífio.</li>
</ul>
<p>Porém, me surpreendi com o processo de restauração de imagem, você precisa indicar manualmente onde gostaria de realizar correções e o resultado é fantástico. De todas as ferramentas foi a que garantiu o melhor resultado nas correções de defeitos, realmente funciona! Somente as bordas da imagem que a ferramenta teve dificuldade de corrigir, então mantive o aspecto original.</p>
<p>Na primeira vez que utilizei o Imgkits.com tive uma impressão ruim no geral, mas entendi que cada fotografia precisa de ajustes diferentes. Como o imgkits deixa você livre pra escolher quais correções deseja utilizar, diferente das IA que já fazem a análise geral e correção, o resultado final depende muito do seu discernimento sobre qual ferramenta deve utilizar dentro do site.</p>
<p>Abaixo temos 3 sequências de comparação de imagens:</p>
<ol>
<li>Não gostei da ferramenta de unblur, porém quando comprimi a imagem para postar aqui no site, o resultado ficou satisfatório. Mas as outras opções de IA são melhores.</li>
<li>É aqui que o Imgkits brilha! Para remoção de feitos ela ganhou de todas as ferramentas.</li>
<li>Processo de aplicação de cor deixou a desejar.</li>
</ol>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2610" src="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imgkits-unblur.png" alt="Restauração de Fotos e Colorização - Resultado da ferramenta ImgKits com unblur" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imgkits-unblur.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imgkits-unblur-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2612" src="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imgkits-scratch-fix.png" alt="Restauração de Fotos e Colorização - Resultado da ferramenta ImgKits com scratch repair" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imgkits-scratch-fix.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imgkits-scratch-fix-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2611" src="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imgkits-unblur-cor.png" alt="Restauração de Fotos e Colorização - Resultado da ferramenta ImgKits com unblur e colorização" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imgkits-unblur-cor.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/restauracao-fotos-comparacao-foto-original-foto-editada-manualmente-photoshop-imgkits-unblur-cor-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Conclusões</h2>
<p>Analisando as ferramentas disponíveis, cheguei a algumas conclusões sobre o processo de restauração de fotografias utilizando IA. No meu caso específico, restaurando uma imagem 3&#215;4, o setup ideal foi:</p>
<p>Para a imagem original cheia de defeitos, segue os passos:</p>
<ol>
<li>Imgkits.com: Remover os defeitos da imagem, como riscos, dobra da fotografias, etc.</li>
<li>Imgkits.com: Remover o fundo da imagem (esta etapa faz sentido em imagens como a de foto 3&#215;4, que o fundo pode gerar ruídos)</li>
<li>ImageColorizer ou Remini.AI ou Vance.AI (empate técnico): Ajustar constraste, brilho, nitidez etc. Se utilizar a Remini.AI no app do celular gera a imagem sem marca dágua.</li>
<li>Hotpot.AI: Colorização na escala 15F. Se remover o fundo no passo 2, o resultado de cor fica muito bom.</li>
</ol>
<p>Para uma imagem sem defeitos, mas antiga, segue os passos:</p>
<ul>
<li>ImageColorizer ou Remini.AI ou Vance.AI (lembrando que a Remini.AI insere características de barba e bigode nas fotos para dar sensação de detalhes no rosto, mas não estão presentes naturalmente)</li>
<li>Hotpot.AI: Colorização na escala 15F. Lembrando que fiz o teste com foto 3X4, se sua foto for em outro estilo, é necessário pesquisar qual o resultado mais satisfatório.</li>
</ul>
<p>&nbsp;</p>
<p>Conseguiu resultados diferentes utilizando estas ferramentas? Conhece outras ferramentas de IA para restauração de fotos? Conta aí nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/ia/como-restaurar-fotos-antigas-inteligencia-artificial/">Como restaurar e colorir fotos antigas com Inteligência Artificial (IA)</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/ia/como-restaurar-fotos-antigas-inteligencia-artificial/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como criar servidor de Terraria no Raspberry Pi</title>
		<link>https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-de-terraria-no-raspberry-pi/</link>
					<comments>https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-de-terraria-no-raspberry-pi/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Fri, 15 Sep 2023 13:02:32 +0000</pubDate>
				<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[terraria]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2522</guid>

					<description><![CDATA[<p>Saiba como hospedar um servidor de Terraria no Raspberry Pi</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-de-terraria-no-raspberry-pi/">Tutorial como criar servidor de Terraria no Raspberry Pi</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Instalar suporte .NET Framework no Linux, com o Mono</li>
<li>Criar servidor de Terraria no Raspberry Pi</li>
</ul>
<h2>Considerações Iniciais</h2>
<p>Neste tutorial vamos levar em conta que já formatou um cartão de memória ou unidade de armazenamento USB no seu raspberry Pi com o Raspberry Pi Imager. No momento da formatação e escolha do sistema operacional (Raspberry Pi OS ou Ubuntu) você já habilitou suporte a conexão SSH e conexão wifi, caso não vá utilizar conexão de internet por cabo no Raspberry.</p>
<h2>Passo a passo para criar servidor de Terraria no Raspberry Pi</h2>
<h3>Passo 1 &#8211; Conexão SSH</h3>
<p>Como comentamos, já vamos considerar que instalou a imagem do Sistema Operacional no Raspberry com suporte a conexão SSH. Desta forma, levando em conta o usuário viniciuspaes e o IP sendo 192.168.1.55, vamos realizar o login com o comando:</p>
<pre>ssh viniciuspaes@192.168.1.55</pre>
<h3>Passo 2 &#8211; Update e Upgrade de softwares</h3>
<p>Vamos ter certeza que estamos com o sistema operacional e os softwares na versão mais atualizada. Vamos então executar o comando:</p>
<pre>sudo apt update &amp;&amp; sudo apt upgrade</pre>
<h3>Passo 3 &#8211; Download e instalação da versão mais atualizada do Mono</h3>
<p>Terraria utiliza o .NET Framework para funcionar, como estamos utilizando o sistema operacional Linux, precisamos então utilizar o software Mono. Nesta etapa precisamos acessar o site do Mono pelo link:</p>
<ul>
<li><strong><a href="https://www.mono-project.com/download/stable/#download-lin" target="_blank" rel="noopener">Página de Download da versão atualizada do Mono (.NET Framework para Linux)</a></strong></li>
</ul>
<p>Nesta tela temos 3 opções de sistema operacional:</p>
<ul>
<li>Ubuntu</li>
<li>Debian</li>
<li>Raspbian</li>
</ul>
<p>Neste exemplo, meu raspberry está com o Ubuntu instalado, mas caso você esteja utilizando o Debian ou Raspbian, só clicar na aba deles na página do Mono para verificar os comandos de instalação.</p>
<p>Seguindo as instruções da página do Mono para o Ubuntu, para realizar a instalação do Mono, precisamos executar os comandos (execute 1 linha por vez no terminal):</p>
<pre>sudo apt install ca-certificates gnupg
sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/mono-official-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb [signed-by=/usr/share/keyrings/mono-official-archive-keyring.gpg] https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update</pre>
<p>Vamos precisar do pacote do Mono completo, então para realizar a instalação, precisamos executar o comando:</p>
<pre>sudo apt install mono-complete</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2533" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-download-mono.png" alt="Servidor Terraria - Página de Download do Mono (.NET Framework para Linux)" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-download-mono.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-download-mono-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2534" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-1.png" alt="Servidor Terraria - inatalação mono - parte 1" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-1.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-1-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2535" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-2.png" alt="Servidor Terraria - inatalação mono - parte 2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2536" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-3.png" alt="Servidor Terraria - inatalação mono - parte 3" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2537" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-4.png" alt="Servidor Terraria - inatalação mono - parte 4" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2538" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-5.png" alt="Servidor Terraria - inatalação mono - parte 5" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-5.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-instrucao-instalacao-mono-5-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4 &#8211; Download da versão mais atualizada do Servidor de Terraria Oficial</h3>
<p>Para realizar o download da última versão do Servidor de Terraria, primeiro vá até a página oficial do jogo:</p>
<pre><strong><a href="https://terraria.org/" target="_blank" rel="noopener">Terraria.org</a></strong></pre>
<p>Navegue até o rodapé da página e procure pelo link:</p>
<pre>PC Dedicated Server</pre>
<p>Copie o link de download para que possa realizar o download diretamente no servidor.</p>
<p>Alternativamente, segue uma lista dos arquivos para download:</p>
<ul>
<li><strong><span style="color: #339966;"><a style="color: #339966;" href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1449.zip" target="_blank" rel="noopener">Terraria Server 1.4.4.9</a></span></strong></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-14481.zip" target="_blank" rel="noopener">Terraria Server 1.4.4.8.1</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1448.zip" target="_blank" rel="noopener">Terraria Server 1.4.4.8</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1447.zip" target="_blank" rel="noopener">Terraria Server 1.4.4.7</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1446-fixed.zip" target="_blank" rel="noopener">Terraria Server 1.4.4.6</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1445.zip" target="_blank" rel="noopener">Terraria Server 1.4.4.5</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1444.zip" target="_blank" rel="noopener">Terraria Server 1.4.4.4</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1443.zip" target="_blank" rel="noopener">Terraria Server 1.4.4.3</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1442.zip" target="_blank" rel="noopener">Terraria Server 1.4.4.2</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1441-fixed.zip" target="_blank" rel="noopener">Terraria Server 1.4.4.1</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-144.zip" target="_blank" rel="noopener">Terraria Server 1.4.4</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1436.zip" target="_blank" rel="noopener">Terraria Server 1.4.3.6</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1435.zip" target="_blank" rel="noopener">Terraria Server 1.4.3.5</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1434.zip" target="_blank" rel="noopener">Terraria Server 1.4.3.4</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1433.zip" target="_blank" rel="noopener">Terraria Server 1.4.3.3</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1432.zip" target="_blank" rel="noopener">Terraria Server 1.4.3.2</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1431.zip" target="_blank" rel="noopener">Terraria Server 1.4.3.1</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-143.zip" target="_blank" rel="noopener">Terraria Server 1.4.3</a></li>
<li><a href="https://terraria.org/api/download/pc-dedicated-server/terraria-server-1423.zip" target="_blank" rel="noopener">Terraria Server 1.4.2.3</a></li>
</ul>
<p>&nbsp;</p>
<p>Neste exemplo, a última versão disponível é a 1.4.4.9. Para navegar até a pasta do seu usário, utilize o comando:</p>
<pre>cd ~</pre>
<p>Para realizar o download do arquivo diretamente no servidor, utilizar o comando:</p>
<pre>wget https://terraria.org/api/download/pc-dedicated-server/terraria-server-1449.zip</pre>
<p>Repare então que vamos ter o arquivo no formato terraria-server-<strong><span style="color: #ff0000;">XXXX</span></strong>.zip na nossa pasta pessoal do usuário.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2540" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-download-terraria-server.png" alt="Terraria Server - Página Oficial de Terraria - foco no rodapé com link de download" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-download-terraria-server.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pagina-download-terraria-server-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2541" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-download-terraria-server-zip.png" alt="Terraria Server - download do arquivo de servidor do terraria" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-download-terraria-server-zip.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-download-terraria-server-zip-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5 &#8211; Descompactar arquivo de Servidor do Terraria</h3>
<p>Para descomprimir/descompactar o arquivo que acabamos de realizar o download, precisamos ter o software zip/unzip instalado. Desta forma, vamos utilizar o comando:</p>
<pre>sudo apt install zip unzip</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2543" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-instalar-zip-unzip.png" alt="Terraria Server - instalar zip e unzip" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-instalar-zip-unzip.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-instalar-zip-unzip-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Para descomprimir o arquivo .zip do servidor, utilize o comando:</p>
<pre>unzip terraria-server-1449.zip</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2544" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-descompactar-terraria-server-zip.png" alt="Terraria Server - descompactar arquivo do servidor de Terraria" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-descompactar-terraria-server-zip.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-descompactar-terraria-server-zip-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Para renomear a pasta da versão do terraria (1449) para terraria-server, utilize o comando:</p>
<pre>mv 1449 terraria-server</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2546" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-renomear-pasta-versao-terraria-server.png" alt="Terraria Server - renomear pasta do servidor" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-renomear-pasta-versao-terraria-server.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-renomear-pasta-versao-terraria-server-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6 &#8211; Primeira tentativa de execução do servidor de Terraria</h3>
<p>Agora os arquivos do servidor do terraria estão disponíveis dentro da sua pasta de usuário. A pasta do servidor possui 3 opções de sistema operacional:</p>
<ul>
<li>Linux</li>
<li>Windows</li>
<li>Mac Os</li>
</ul>
<p>Vamos acessar agora os arquivos do servidor de terraria disponíveis para linux (executar 1 linha de cada vez):</p>
<pre>cd ~
cd terraria-server
cd Linux</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2548" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-ir-pasta-servidor.png" alt="Terraria Server - caminhar até a pasta do servidor no diretório linux" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-ir-pasta-servidor.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-ir-pasta-servidor-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Para realizar a primeira tentativa de execução do servidor, vamos executar o comando:</p>
<pre>mono --server --gc=sgen -O=all ./TerrariaServer.exe</pre>
<p>É comum receber erros na primeira execução, como exemplo:</p>
<pre>Your mono runtime and class libraries are out of sync.</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2550" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-executar-servidor.png" alt="Terraria Server - comando para iniciar servidor terraria" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-executar-servidor.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-executar-servidor-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2551" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-executar-servidor-erro-bibliotecas-fora-sincronia.png" alt="Terraria Server - erro comum primeira inicialização do servidor com mono" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-executar-servidor-erro-bibliotecas-fora-sincronia.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-executar-servidor-erro-bibliotecas-fora-sincronia-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso receba este erro, basta remover alguns arquivos (execute uma linha de cada vez):</p>
<pre>rm monoconfig
rm mscorlib.dll
rm System*
rm Mono*
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2553" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-remover-arquivos-causam-conflitos.png" alt="Terraria Server - removendo arquivos que causam conflitos na execução do servidor" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-remover-arquivos-causam-conflitos.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-remover-arquivos-causam-conflitos-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7 &#8211; Execução do servidor de Terraria</h3>
<p>Se realizou todos os passos corretamente, agora o Raspberry Pi está apto a executar o servidor de Terraria. Execute então novamente o comando:</p>
<pre>mono --server --gc=sgen -O=all ./TerrariaServer.exe</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2550" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-executar-servidor.png" alt="Terraria Server - comando para iniciar servidor terraria" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-executar-servidor.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-executar-servidor-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Você pode adicionar um mundo que já possua no seu servidor do Raspberry. Os arquivos do seu mundo devem ficar dentro da pasta:</p>
<pre>~/.local/share/Terraria/Worlds</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2556" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pasta-arquivos-mundo.png" alt="Servidor Terraria - local onde os arquivos do mundo ficam guardados no servidor" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pasta-arquivos-mundo.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-pasta-arquivos-mundo-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8 &#8211; Criando um novo mundo e habilitando o mesmo no servidor</h3>
<p>Após executar o comando do passo anterior, você terá a opção de criar um novo mundo ou carregar um mundo existente, caso este esteja presente na pasta apropriada.</p>
<p>Caso opte por criar um novo mundo, as etapas são:</p>
<ul>
<li>Tamanho do mapa (pequeno, médio ou grande). Um mapa grande vai demorar bastante para ser criado, tenha certeza também que seu Raspberry tenha uma boa dissipação de calor nessa etapa. É comum acontecer erros na criação de mapas grandes por este motivo.</li>
<li>Dificuldade: Classic, Expert, Master e Journey.</li>
<li>Maldição do mundo: Corrupt ou Crimson</li>
<li>Nome para o novo mundo</li>
<li>Semente: é utilizada como variável para definir um mundo aleatório. Se tiver algum mapa que já gerou no passado, pode aproveitar a mesma semente e gerar novamente.</li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2558" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo.png" alt="Terraria Server - criando um novo mundo - parte 1" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2559" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-2.png" alt="Terraria Server - criando um novo mundo - parte 2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2560" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-3.png" alt="Terraria Server - criando um novo mundo - parte 3" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2561" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-4.png" alt="Terraria Server - criando um novo mundo - parte 4" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2562" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-5.png" alt="Terraria Server - criando um novo mundo - parte 5" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-5.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-5-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2563" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-6.png" alt="Terraria Server - criando um novo mundo - parte 6" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-6.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-novo-mundo-6-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2564" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-htop-criando-novo-mundo.png" alt="Terraria Server - htop durante criação do novo mundo" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-htop-criando-novo-mundo.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-htop-criando-novo-mundo-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Após criar um novo mundo, é possível selecioná-lo para execução no servidor. Em seguida deverá definir as opções:</p>
<ul>
<li>Número máximo de jogadores conectados.</li>
<li>Porta de conexão do servidor, o padrão é a porta 7777.</li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2566" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-iniciar-mundo.png" alt="Servidor Terraria - Habilitando um mundo no servidor - parte 1" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-iniciar-mundo.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-iniciar-mundo-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2567" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-iniciar-mundo-numero-maximo-jogadores.png" alt="Servidor Terraria - Habilitando um mundo no servidor - parte 2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-iniciar-mundo-numero-maximo-jogadores.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-iniciar-mundo-numero-maximo-jogadores-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2568" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-iniciar-mundo-porta-servidor.png" alt="Servidor Terraria - Habilitando um mundo no servidor - parte 3" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-iniciar-mundo-porta-servidor.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-iniciar-mundo-porta-servidor-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2569" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-iniciar-mundo-pronto-receber-jogadores.png" alt="Servidor Terraria - Habilitando um mundo no servidor - parte 4" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-iniciar-mundo-pronto-receber-jogadores.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-execucao-iniciar-mundo-pronto-receber-jogadores-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2570" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-htop-execucao-jogadores-online.png" alt="Servidor Terraria - htop servidor em execução com jogador online" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-htop-execucao-jogadores-online.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-htop-execucao-jogadores-online-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-jogador-online.png" alt="Servidor Terraria - 1 jogador online pela rede local" width="768" height="432" class="alignnone size-full wp-image-2573" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-jogador-online.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-jogador-online-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" />
</p>
<p>Neste exemplo então, para se conectar no servidor de terraria local, foi necessário apenas escolher o IP e a porta.</p>
<p>Caso queira deixar o servidor disponível externamente, você precisa abrir a porta 7777 no seu roteador e direcionar o tráfego para o IP do Raspberry Pi. Depois anote o seu IP público (IP externo de internet) e passe para que seus amigos possam se conectar.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2572" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-port-foward-7777-tcp-udp-roteador-jogadores-internet.png" alt="Servidor Terraria - Habilitando port foward no roteador para amigos se conectarem pela internet" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-port-foward-7777-tcp-udp-roteador-jogadores-internet.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-port-foward-7777-tcp-udp-roteador-jogadores-internet-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-jogadores-online-oriundos-da-internet.png" alt="Servidor Terraria - jogadores oriundos da internet se conectando no raspberry pi local" width="768" height="432" class="alignnone size-full wp-image-2575" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-jogadores-online-oriundos-da-internet.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-terraria-jogadores-online-oriundos-da-internet-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Considerações Finais</h3>
<p>O servidor de Terraria é bem leve, nos testes que realizei o Raspberry raramente passava de 1GB de ram, mesmo durante o processo de criação de um novo mundo. Não tive oportunidade de testar com muitos jogadores, mas com certeza é bem mais leve que o servidor de Minecraft e o Raspberry não terá grandes problemas de execução.</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-de-terraria-no-raspberry-pi/">Tutorial como criar servidor de Terraria no Raspberry Pi</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-de-terraria-no-raspberry-pi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como criar servidor de Minecraft no Raspberry Pi</title>
		<link>https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-minecraft-raspberry-pi/</link>
					<comments>https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-minecraft-raspberry-pi/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Mon, 11 Sep 2023 16:37:19 +0000</pubDate>
				<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[minecraft]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2481</guid>

					<description><![CDATA[<p>Aprenda como criar um servidor de Minecraft headless com o Raspberry Pi.</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-minecraft-raspberry-pi/">Tutorial como criar servidor de Minecraft no Raspberry Pi</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Passo a passo ensinando como criar um servidor de <strong>Minecraft</strong> no Raspberry Pi.</p>
<h2>Requisitos mínimos</h2>
<ul>
<li>Raspberry Pi 3</li>
<li>Fonte alimentação 2,5A</li>
<li>Cartão SD Class 10 &#8211; 16GB</li>
</ul>
<h2>Requisitos Recomendados</h2>
<ul>
<li>Raspberry Pi 4 &#8211; 4GB</li>
<li>Fonte alimentação 3A &#8211; 5,1V (evitar undervoltage)</li>
<li>SSD USB 3.0 &#8211; 32GB</li>
<li>Overclock para 2,2Ghz</li>
<li>Cooler com ventoinha</li>
</ul>
<h2>Considerações Iniciais</h2>
<p>Apesar do <strong>Minecraft</strong> ser um jogo aparentemente simples em questões gráficas, ele demanda bastante processamento em algumas ocasiões, que pode levar o Raspberry a trabalhar em seu limite. É comum então que receba mensagens como:</p>
<pre>Can't keep up! Is the server overloaded? Running 2171ms or 43 ticks behind</pre>
<p>Nos testes que realizei, mesmo recebendo eventualmente mensagens de atraso no servidor, não constatei nenhum problema na jogabilidade. Realizei overclock no limite do meu Raspberry (não consegui chegar nos prometidos 2,3Ghz), mas mesmo com 2250 Mhz as mensagens continuavam a aparecer, mas não eram frequentes. Acompanhei o servidor com uma janela rodando o htop e depois do jogo iniciado, não vi nenhum núcleo passando de 70% em nenhum momento. Memória ram também não pareceu ser um problema, o garbage collector parece funcionar de forma satisfatória. Rodei o servidor com 3, 4 e 7GB de ram e não senti diferença em desempenho. Provavelmente somente com um número maior de jogadores conectados seria possível realizar um teste mais aprofundado.</p>
<h2>Passo a passo como criar um servidor de Minecraft</h2>
<h3>Passo 1 &#8211; Conectar no servidor</h3>
<p>Neste exemplo, tenho o Raspberry Pi configurado com o IP 192.168.1.55 e o usuário principal é o viniciuspaes. Então para realizar o login por ssh, utilizo o seguinte comando pelo terminal:</p>
<pre>ssh viniciuspaes@192.168.1.55</pre>
<h3>Passo 2 &#8211; Verificar versões do OpenJDK disponíveis</h3>
<p>O servidor do Minecraft funciona com a tecnologia/linguagem de programação JAVA. Então precisamos do Java JDK e JRE disponíveis no raspberry. É uma boa prática sempre instalar a última versão disponível. Você pode verificar as versões disponíveis com o comando:</p>
<pre>sudo apt-cache search openjdk</pre>
<p>Nesta busca pelos pacote do OpenJDK, verificamos que a versão 19 está disponível.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2490" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-apt-cache-search-openjdk.png" alt="Servidor Minecraft - apt-cache search openjdk" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-apt-cache-search-openjdk.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-apt-cache-search-openjdk-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2491" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-apt-cache-search-openjdk-resultado.png" alt="Servidor Minecraft - apt-cache search openjdk - resultado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-apt-cache-search-openjdk-resultado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-apt-cache-search-openjdk-resultado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3 &#8211; Instalar OpenJDK (JDK e JRE)</h3>
<p>No passo anterior vimos que a versão 19 está disponível e como mencionamos, precisamos tanto do JDK quanto do JRE. Então vamos instalar estes pacotes com o comando:</p>
<pre>sudo apt install openjdk-19-jdk openjdk-19-jre</pre>
<p>Na minha instalação, o download dos softwares ficou próximo de 673MB.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2494" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-instalando-openjdk.png" alt="Servidor Minecraft - instalando openjdk development kit e runtime environment" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-instalando-openjdk.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-instalando-openjdk-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4 &#8211; Download do executável .jar do Minecraft Server</h3>
<p>Neste passo precisamos já preparar o local onde queremos guardar os arquivos do servidor de Minecraft. De forma simples, vou criar um diretório dentro da minha pasta de usuário mesmo, você também pode fazer o mesmo com os comandos:</p>
<p>Para caminhar para sua pasta de usuário:</p>
<pre>cd ~</pre>
<p>Para criar uma pasta para o servidor:</p>
<pre>mkdir minecraft-server</pre>
<p>Para entrar dentro da pasta do Minecraft</p>
<pre>cd minecraft-server</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2495" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-criar-pasta-arquivos.png" alt="Servidor Minecraft - criar pasta para arquivos do servidor" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-criar-pasta-arquivos.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-criar-pasta-arquivos-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora precisamos ir no site do desenvolvedor do minecraft e realizar o Download do arquivo executável do servidor. Então precisamos abrir a seguinte URL no browser:</p>
<ul>
<li><strong><a href="https://www.minecraft.net/pt-br/download/server" target="_blank" rel="noopener">Página Oficial de Download do executável do Servidor de Minecraft</a></strong></li>
</ul>
<p>Agora você precisa somente copiar o link de download para o clipboard (copy link address). Agora no sua janela de terminal, utilize o comando wget seguida do link de download, para realizar o download direto na pasta que já criamos. Dependendo do terminal que estiver utilizando você pode utilizar o control+v para colar o link de download (linux e mac), ou o botão direito do mouse (windows). Neste exemplo o link que utilizamos foi:</p>
<pre>wget https://piston-data.mojang.com/<span style="color: #ff0000;">v1/objects/84194a2f286ef7c14ed7ce0090dba59902951553</span>/server.jar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2496" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-download-minecraft-server-jar.png" alt="Servidor Minecraft - copiar link de download" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-download-minecraft-server-jar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-download-minecraft-server-jar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2497" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-wget-minecraft-server-jar.png" alt="Servidor Minecraft - wget link de download" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-wget-minecraft-server-jar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-wget-minecraft-server-jar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5 &#8211; Aceitar arquivo EULA</h3>
<p>Antes do servidor poder ser executado corretamente, precisamos aceitar o <strong>E</strong>nd <strong>U</strong>ser <strong>L</strong>icense <strong>A</strong>greement (<strong>EULA</strong>). Precisamos então rodar a primeira vez o servidor, para que o mesmo faça o download de todas as dependências e do arquivo de EULA. No comando abaixo vamos executar o servidor, repare nos prefixo &#8220;-Xmx&#8221; e &#8220;-Xms&#8221; eles definem a quantidade de memória ram que o servidor poderá utilizar. Uma boa prática é rodar o htop, ver a quantidade de memória ram que está utilizando e ver o quanto que poderia deixar disponível para o servidor.</p>
<p class="cimg"><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-htop.png" alt="Servidor Minecraft - executando htop" width="768" height="432" class="alignnone size-full wp-image-2516" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-htop.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-htop-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-htop-aberto.png" alt="Servidor Minecraft - executando htop - destaque para total de memória ram utilizada em idle" width="768" height="432" class="alignnone size-full wp-image-2517" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-htop-aberto.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-htop-aberto-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Se o seu Raspberry tiver bastante memória ram, a regra geral é deixar 1Gb pro sistema operacional e o restante para o minecraft. Então se tiver utilizando um Raspberry com 4Gb de ram, utilize 3GB para o servidor. Neste exemplo estou com um Raspberry de 8Gb, então vou alocar 6Gb para o servidor, pois está de bom tamanho:</p>
<pre>java -Xmx<strong><span style="color: #ff0000;">6G</span></strong> e -Xms<strong><span style="color: #ff0000;">6G</span></strong> -jar server.jar</pre>
<p>Irá aparecer uma mensagem de erro para ecitar o EULA. Então vamos utilizar o nano para editar o arquivo:</p>
<pre>nano eula.txt</pre>
<p>No arquivo temos:</p>
<pre>eula=false</pre>
<p>Precisamos alterar para:</p>
<pre>eula=true</pre>
<p>Aperta control+o para salvar as modificações e control+x para sair do editor nano.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2498" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-primeira-execucao.png" alt="Servidor Minecraft - primeira execução - criar estrutura de arquivos e gerar eula" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-primeira-execucao.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-primeira-execucao-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2499" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-primeira-execucao-erro-eula.png" alt="Servidor Minecraft - primeira execução - erro EULA" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-primeira-execucao-erro-eula.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-primeira-execucao-erro-eula-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2500" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-nano-eula-txt.png" alt="Servidor Minecraft - nano eula.txt" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-nano-eula-txt.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-nano-eula-txt-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2501" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-nano-eula-false.png" alt="Servidor Minecraft - nano eula.txt - eula-false (original)" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-nano-eula-false.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-nano-eula-false-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2502" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-nano-eula-true.png" alt="Servidor Minecraft - nano eula.txt - eula=true" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-nano-eula-true.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-nano-eula-true-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6 &#8211; Executar o servidor de Minecraft</h3>
<p>A configuração básica está pronta. Caso não tenha o desejo de instalar nenhum mod adicional ou otimização com o <strong>Fabric</strong> ou <strong>Lithium</strong>, basta executar o servidor. Como estamos com um servidor headless, podemos utilizar a opção <strong>nogui</strong> também. Lembre de alterar os campos &#8220;-Xmx&#8221; e &#8220;-Xms&#8221; para a quantidade de memória RAM que você tem disponível.</p>
<pre>java -Xmx<strong><span style="color: #ff0000;">6G</span></strong> e -Xms<span style="color: #ff0000;"><strong>6G</strong></span> -jar server.jar nogui</pre>
<p>Tudo pronto, servidor ativo e funcional.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2503" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-execucao.png" alt="Servidor Minecraft - Executando" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-execucao.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-execucao-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2504" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-execucao-servidor-ativo.png" alt="Servidor Minecraft - Servidor online!" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-execucao-servidor-ativo.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-execucao-servidor-ativo-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7 &#8211; Testar Servidor</h3>
<p>Para testar o servidor, utilizei o aplicativo do Xbox do Windows, e executei o Minecraft Launcher.</p>
<p>Selecionei a opção de um jogo multiplayer.</p>
<p>Em seguida escolhi a opção de adicionar um servidor (Add Server)</p>
<p>Deixei o nome padrão para o servidor &#8220;Minecraft Server&#8221;</p>
<p>E na opção de IP, inseri o IP do meu Raspberry Pi &#8220;192.168.1.55&#8221;.</p>
<p>Tudo Pronto, agora é só clicar no servidor e selecionar join.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2506" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-abrindo-jogo.png" alt="Servidor Minecraft - Iniciando o teste do servidor" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-abrindo-jogo.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-abrindo-jogo-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2507" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-selecionando-multiplayer.png" alt="Servidor Minecraft - Iniciando o teste do servidor - jogo multiplayer" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-selecionando-multiplayer.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-selecionando-multiplayer-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2508" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-selecionando-multiplayer-third-party-online-play.png" alt="Servidor Minecraft - Iniciando o teste do servidor - jogo multiplayer - agreement" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-selecionando-multiplayer-third-party-online-play.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-selecionando-multiplayer-third-party-online-play-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2509" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-add-server.png" alt="Servidor Minecraft - adicionar um servidor na lista" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-add-server.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-add-server-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2510" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-add-server-inserindo-dados.png" alt="Servidor Minecraft - adicionar um servidor na lista - preencher dados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-add-server-inserindo-dados.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-add-server-inserindo-dados-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2511" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-join-server.png" alt="Servidor Minecraft - servidor adicionado na lista - clicar em join" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-join-server.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-join-server-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2512" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-htop-com-servidor-jogadores-online.png" alt="Servidor Minecraft - servidor online e com jogadores online - destaque uso de RAM" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-htop-com-servidor-jogadores-online.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-htop-com-servidor-jogadores-online-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2513" src="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-online-jogando.png" alt="Servidor Minecraft - teste com jogador online" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-online-jogando.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/servidor-minecraft-teste-online-jogando-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-minecraft-raspberry-pi/">Tutorial como criar servidor de Minecraft no Raspberry Pi</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-minecraft-raspberry-pi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como definir IP estático no Ubuntu Server com netplan</title>
		<link>https://viniciuspaes.com/linux/tutorial-como-definir-ip-estatico-no-ubuntu-server-com-netplan/</link>
					<comments>https://viniciuspaes.com/linux/tutorial-como-definir-ip-estatico-no-ubuntu-server-com-netplan/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Fri, 08 Sep 2023 18:46:22 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[redes]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[netplan]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2451</guid>

					<description><![CDATA[<p>Confira como criar um novo arquivo de configuração com o netplan e definir estaticamente um endereço IP.</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-como-definir-ip-estatico-no-ubuntu-server-com-netplan/">Tutorial como definir IP estático no Ubuntu Server com netplan</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Em alguns casos específicos, definir um IP estático para seu computador ou servidor pode ser necessário para facilitar o acesso ao mesmo e garantir maior controle do seu equipamento pela rede.</p>
<p>Caso tenha um servidor local em sua residência, mapear portas abertas do seu roteador para o IP fixo do seu servidor local pode também ser necessário. Uma alternativa de definir o IP estático manualmente, é definir um <strong>IP estático</strong> por DHCP (static leases), baseado no MAC Address da placa de rede do seu servidor. Mas neste artigo, vamos abordar somente a configuração manual de IP estático configurado no Ubuntu Server. As configurações serão realizadas por linha de comando (CLI).</p>
<h2>Como funciona o IP estático e o DHCP?</h2>
<p>No DHCP (Dynamic Host Configuration Protocol), o seu computador (ou servidor) envia uma solicitação por broadcast na rede em que está conectado, solicitando configurações para sua placa de rede. Caso você tenha um servidor de DHCP instalado na sua rede, ou mesmo, caso seu roteador oferte serviço de DHCP, ao receber a solicitação de broadcast do computador, ele então responde a solicitação enviandos os dados de configuração (IP, máscara de subrede, servidor dns, gateway, etc).</p>
<p>Caso opte por utilizar a configuração manual, ou IP estático, você mesmo precisa saber quais as configurações da sua rede, e atribuir um IP estático para os computadores. Então temos 2 formas comuns de configuração: a forma estática e dinâmica.</p>
<p>Uma terceira forma que une vantagens dos 2 métodos é o IP estático fornecido dinamicamente. Basicamente você configura seu servidor DHCP para sempre fornecer o mesmo IP para um determinado computador.</p>
<h2>Passo a passo para configurar IP estático no Ubuntu com Netplan</h2>
<h3>Passo 1: Conexão com servidor</h3>
<p>Caso esteja conectado fisicamente ao servidor, basta pular para a próxima etapa. Caso esteja com um setup &#8220;headless&#8221; coencte no servidor por uma conexão ssh. Neste exemplo nosso servidor possui o IP  192.168.1.55 e o nosso nome de usuário é &#8220;viniciuspaes&#8221;, então o comando fica:</p>
<pre>ssh viniciuspaes@192.168.1.55</pre>
<h3>Passo 2: Verificar o nome da nossa interface de rede</h3>
<p>A interface pode receber nomes distintos durante o processo de instalação do sistema operacional. Desta forma, para configurar nosso IP estático, precisamos saber para qual interface queremos realizar o processo. Alguns nomes comuns: eth0, eth1, enp0s10, wlan, &#8230;</p>
<p>Para listar nossas interfaces, vamos utilizando o comando:</p>
<pre>ip -brief address show</pre>
<p>No meu exemplo, tenho 4 interfaces de rede configuradas:</p>
<ul>
<li>lo: identifica a interface de loop interno</li>
<li>eth0: é a minha interface de rede por cabo</li>
<li>wlan0: é a minha placa de rede wifi</li>
<li>docker0: é a minha interface de rede de bridge interna do docker</li>
</ul>
<p>Neste exemplo, vou configurar meu IP estático na minha placa de rede cabeada, que no caso será a eth0.</p>
<p class="cimg"><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-ver-interfces-disponiveis.png" alt="Ip estático no linux com netplan - ver as interfaces de rede disponíveis" width="768" height="432" class="alignnone size-full wp-image-2455" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-ver-interfces-disponiveis.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-ver-interfces-disponiveis-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3 &#8211; Criar arquivo de configuração de rede</h3>
<p>Vamos criar então nosso arquivo de configuração para o IP estático, vamos utilizar o editor nano no processo:</p>
<pre>sudo nano /etc/netplan/01-network-manager-all.yaml</pre>
<p>O arquivo de configuração utiliza o formato .yaml, então tome cuidado com o espaçamento/identação. No arquivo abaixo, vou definir as configurações para:</p>
<ul>
<li>Nome da Interface: <strong>eth0</strong></li>
<li>IP Estático: <strong>192.168.1.55</strong></li>
<li>Máscara da subrede: <strong>/24</strong> (24 bits traduz para: 255.255.255.0)</li>
<li>Gateway (endereço do roteador): <strong>192.168.1.1</strong></li>
<li>DNS (utilizo os do google): <strong>8.8.8.8</strong> e <strong>8.8.4.4</strong></li>
</ul>
<p>O arquivo fica então com o formato:</p>
<p><script src="https://gist.github.com/viniciuspaes/4157dd810192c24bcad31a61e6d81d8c.js"></script></p>
<p class="cimg"><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-editar-arquivo-configuracao.png" alt="Ip estático no linux com netplan - criar arquivo configuração" width="768" height="432" class="alignnone size-full wp-image-2456" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-editar-arquivo-configuracao.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-editar-arquivo-configuracao-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-editar-arquivo-configuracao-concluido.png" alt="Ip estático no linux com netplan - arquivo configuração criado" width="768" height="432" class="alignnone size-full wp-image-2457" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-editar-arquivo-configuracao-concluido.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-editar-arquivo-configuracao-concluido-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4 &#8211; Ativar novo arquivo de configuração</h3>
<p>Há duas formas de ativar o arquivo de configuração, podemos primeiro testar o mesmo para ativação com o comando:</p>
<pre>sudo netplan try</pre>
<p>Ou podemos aplicar as modificações diretamente:</p>
<pre>sudo netplan apply</pre>
<p>Para ver se a alteração ficou persistente utilize o comando (substitua eth0 pela sua interface):</p>
<pre>ip addr show eth0</pre>
<p class="cimg"><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-aplicar-nova-configuracao.png" alt="Ip estático no linux com netplan - aplicar nova configuração" width="768" height="432" class="alignnone size-full wp-image-2458" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-aplicar-nova-configuracao.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-aplicar-nova-configuracao-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-testar-nova-configuracao.png" alt="Ip estático no linux com netplan - testar nova configuração" width="768" height="432" class="alignnone size-full wp-image-2459" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-testar-nova-configuracao.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-testar-nova-configuracao-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-ver-novo-ip-estatico-aplicado.png" alt="Ip estático no linux com netplan - verificar novo IP estático" width="768" height="432" class="alignnone size-full wp-image-2461" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-ver-novo-ip-estatico-aplicado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/linux-ip-estatico-netplan-ver-novo-ip-estatico-aplicado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" />
</p>
<h3>Passo 5 &#8211; Verificar conflitos</h3>
<p>Caso tenha qualquer problema na configuração do IP do seu servidor, verifique se não há outros arquivos presentes na pasta /etc/netplan. Por padrão há o arquivo configurado com DHCP. Caso agora sua interface tenha 2 endereços IP, tente desabilitar o arquivo antigo de configuração e aplique novamente as modificações com sudo netplan apply.</p>
<h2>Conclusão</h2>
<p>O setup do IP estático no Ubuntu Server é bem simples. Caso o usuário saiba as configurações de sua rede, basta editar o arquivo de configuração e aplicar as modificações.</p>
<p>Caso tenha alguma dúvida ou dificuldade no processo, basta informar nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-como-definir-ip-estatico-no-ubuntu-server-com-netplan/">Tutorial como definir IP estático no Ubuntu Server com netplan</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/linux/tutorial-como-definir-ip-estatico-no-ubuntu-server-com-netplan/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como instalar Docker no Raspberry Pi</title>
		<link>https://viniciuspaes.com/raspberry-pi/tutorial-como-instalar-docker-raspberry-pi/</link>
					<comments>https://viniciuspaes.com/raspberry-pi/tutorial-como-instalar-docker-raspberry-pi/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Thu, 07 Sep 2023 17:22:14 +0000</pubDate>
				<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[docker]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2424</guid>

					<description><![CDATA[<p>Confira todas as etapas necessárias para instalar a última versão do Docker no Raspberry Pi e teste o funcionamento com a imagem de hello-world.</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-como-instalar-docker-raspberry-pi/">Tutorial como instalar Docker no Raspberry Pi</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Entender o que é o software Docker e sua proposta</li>
<li>Prover os passos necessários para instalar o Docker no Raspberry Pi</li>
</ul>
<h2>Setup</h2>
<p>Para que seja possível seguir este tutorial, é necessário que tenha os itens disponíveis:</p>
<ul>
<li>Raspberry Pi</li>
<li>Fonte de alimentação dimensionada com corrente mínima para seu Raspberry Pi</li>
<li>Unidade de armazenamento: cartão SD, pen drive, disco rígido USB ou SSD USB.</li>
<li>Conexão com internet (wi-fi ou cabeada)</li>
</ul>
<h2>O que é o software Docker?</h2>
<p>O <strong>Docker</strong> é também uma plataforma que facilita a criação, implantação e execução de aplicativos em <em>containers</em>. Um <em>container</em> é um encapsulamento leve e independente que pode conter todo o código e as bibliotecas necessárias para executar um aplicativo, incluindo o próprio aplicativo. Desta forma, o Docker permite empacotar um aplicativo juntamente com suas dependências em um <em>container</em>, garantindo que ele funcione consistentemente em outros ambientes, seja em um ambiente de desenvolvimento, teste ou produção. É interessante destacar que um <em>container</em> pode não funcionar em todos os ambientes, é necessário verificar a compatibilidade do software encapsulado com arquitetura x86 e arm, porém há formas de emular a compatibilidade.</p>
<p>Aqui estão algumas características e conceitos-chave relacionados ao Docker:</p>
<ol>
<li><strong><em>Containers</em>:</strong> Os <em>containers </em>são unidades isoladas que incluem o aplicativo, suas bibliotecas e dependências, tornando-os portáteis e independentes do ambiente em que são executados. Eles são mais leves que <strong>máquinas virtuais</strong> e compartilham o kernel do sistema operacional com o host, o que os torna mais eficientes.</li>
<li><strong>Imagens</strong>: As imagens do Docker são modelos somente leitura que contêm instruções para criar um <em>container</em>. Você pode pensar nelas como um plano de construção para um <em>container</em>. Imagens podem ser compartilhadas e versionadas, o que facilita a colaboração e a implantação consistente de aplicativos.</li>
<li><strong>Dockerfile</strong>: Um Dockerfile é um arquivo de configuração que define como uma imagem do Docker deve ser construída. Ele especifica quais bibliotecas e dependências devem ser instaladas no <em>container</em> e como o aplicativo deve ser configurado.</li>
<li><strong>Orquestração</strong>: O Docker pode ser usado em conjunto com ferramentas de orquestração, como o Kubernetes, para gerenciar a implantação e o dimensionamento de aplicativos em <em>containers</em> em ambientes de produção. Essas ferramentas permitem que você automatize tarefas como balanceamento de carga, escalabilidade automática e recuperação de falhas.</li>
<li><strong>Docker Hub</strong>: É um repositório público de imagens do Docker, onde você pode encontrar imagens prontas para uso em uma ampla variedade de aplicativos e serviços.</li>
<li><strong>Isolamento</strong>: Os contêineres Docker fornecem um alto grau de isolamento entre aplicativos, o que significa que eles não interferem uns nos outros e não afetam o sistema host.</li>
<li><strong>Portabilidade</strong>: Como os <em>containers</em> encapsulam todas as dependências necessárias, eles são altamente portáteis. Você pode criar um <em>container</em> em um ambiente de desenvolvimento e executá-lo em qualquer lugar que tenha o Docker instalado.</li>
</ol>
<p>Em resumo, o Docker simplifica o processo de desenvolvimento, implantação e gerenciamento de aplicativos, tornando-os mais eficientes, escaláveis e consistentes em diferentes ambientes. É amplamente utilizado na indústria de desenvolvimento de software para criar e distribuir aplicativos de forma confiável e rápida.</p>
<h2>Passo a passo de como instalar o Docker no Raspberry Pi</h2>
<h3>Passo 1 &#8211; Conexão no raspberry</h3>
<p>Caso esteja utilizando seu Raspberry de forma &#8220;headless&#8221;, basta conectar ao mesmo por SSH. É necessário saber o endereço IP do seu Raspberry, neste exemplo vamos adotar o usuário de login como &#8220;<span style="color: #339966;"><strong>viniciuspaes</strong></span>&#8221; e o IP sendo <span style="color: #339966;"><strong>192.168.1.100</strong></span>:</p>
<pre>ssh <span style="color: #339966;"><strong>viniciuspaes</strong></span>@<span style="color: #339966;"><strong>192.168.1.100</strong></span></pre>
<h3>Passo 2 &#8211; Atualização de software do Raspberry</h3>
<p>Utilize o comando abaixo para realizar update da lista de pacotes que podem ser atualizados e em seguida realizar o upgrade destes:</p>
<pre>sudo apt update &amp;&amp; sudo apt upgrade</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2431" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-atualizacao-sistema-operacional.png" alt="Instalar Docker no Raspberry Pi - atualizando primeiro o sistema operacional" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-atualizacao-sistema-operacional.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-atualizacao-sistema-operacional-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2432" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-atualizacao-sistema-operacional-completa.png" alt="Instalar Docker no Raspberry Pi - sistema operacional atualizado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-atualizacao-sistema-operacional-completa.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-atualizacao-sistema-operacional-completa-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3 &#8211; Remover softwares que podem gerar conflitos</h3>
<p>Caso tenha instalado o docker anteriormente pelo gerenciador de pacotes apt, é possível que cause conflitos de instalação. O recomendado é instalar diretamente pelo repositório oficial do Docker, para ter acesso as versões mais atuais. Com o comando abaixo, vamos procurar por diversos pacotes relacionados ao docker e solicitar a remoção, caso estejam instalados pelo apt:</p>
<pre>for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2434" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-remover-pacotes-antigos-apt.png" alt="Instalar Docker no Raspberry Pi - remover pacotes para evitar conflitos" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-remover-pacotes-antigos-apt.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-remover-pacotes-antigos-apt-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2435" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-remover-pacotes-antigos-apt-finalizado.png" alt="Instalar Docker no Raspberry Pi - remover pacotes para evitar conflitos - finalizado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-remover-pacotes-antigos-apt-finalizado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-remover-pacotes-antigos-apt-finalizado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4 &#8211; Download do script oficial de instalação do Docker e execução</h3>
<p>Neste passo, vamos utilizar o Curl para realizar o download do script de instalação do Docker:</p>
<pre>curl -fsSL https://get.docker.com -o get-docker.sh</pre>
<p>Agora precisamos executar o script com o comando:</p>
<pre>sudo sh get-docker.sh</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2436" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-download-script-instalacao.png" alt="Instalar Docker no Raspberry Pi - download script de instalação docker" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-download-script-instalacao.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-download-script-instalacao-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2437" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-executar-script-instalacao.png" alt="Instalar Docker no Raspberry Pi - execução script de instalação docker" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-executar-script-instalacao.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-executar-script-instalacao-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2438" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-executar-script-instalacao-finalizada.png" alt="Instalar Docker no Raspberry Pi - execução script de instalação docker - finalizado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-executar-script-instalacao-finalizada.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-executar-script-instalacao-finalizada-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5 &#8211; Adicionar usuário não privilegiado para ter permissão de execução do Docker.</h3>
<p>Neste exemplo, vou utilizar o usuário <strong><span style="color: #339966;">viniciuspaes</span></strong>, adicionando o mesmo no grupo do Docker, desta forma este usuário poderá executar o docker e gerenciar os containers.</p>
<pre>sudo usermod -aG docker <span style="color: #339966;"><strong>viniciuspaes</strong></span></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2439" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-adicionar-usuario-grupo-docker.png" alt="Instalar Docker no Raspberry Pi - adicionar usuário ao grupo do docker" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-adicionar-usuario-grupo-docker.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-adicionar-usuario-grupo-docker-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6 &#8211; Reiniciar Conexão ao Raspberry</h3>
<p>Uma etapa necessária é realizar o logout e posterior login no seu raspberry, para que as modificações de permissão do grupo do seu usuário tenham efeito. Caso tenha formatado o seu raspberry do zero para seguir este tutorial, provavelmente o sistema operacional também deve pedir para que realize a reinicialização. Então é recomendado que utilize o comando para reiniciar o raspberry pi:</p>
<pre>sudo reboot now</pre>
<h3>Passo 7 &#8211; Nova conexão e verificar versão do Docker instalado</h3>
<p>Realize novamente a conexão SSH ao seu raspberry após a reinicialização, caso esteja com um setup &#8220;headless&#8221;. Agora podemos ver a versão do Docker instalado com o comando:</p>
<pre>docker version</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2440" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-verificar-versao-docker.png" alt="Instalar Docker no Raspberry Pi - verificar versão do docker instalada" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-verificar-versao-docker.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-verificar-versao-docker-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2441" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-verificar-versao-docker-resultado.png" alt="Instalar Docker no Raspberry Pi - verificar versão do docker instalada - resultado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-verificar-versao-docker-resultado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-verificar-versao-docker-resultado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8 &#8211; Testar instalação do docker com execução da imagem de hello-world</h3>
<p>Para finalizar a instalação do Docker é interessante testar a mesma executando a imagem de hello-world. Vamos então utilizar o comando:</p>
<pre>docker run hello-world</pre>
<p>Tudo certo! Caso tenha sucesso na execução da imagem de hello-world o docker foi instalado e configurado corretamente. Caso tenha algum erro, interessante verificar se seu usuário tem privilégio de execução do Docker, igual configuramos no passo 5. Se ainda tiver dúvidas, você pode testar a execução do Docker com o comando &#8220;sudo&#8221;, para ter certeza que não é um problema de privilégio de execução.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2442" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-teste-docker-run-hello-world.png" alt="Instalar Docker no Raspberry Pi - executar imagem de teste hello-world do docker" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-teste-docker-run-hello-world.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-teste-docker-run-hello-world-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2443" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-teste-docker-run-hello-world-resultado.png" alt="Instalar Docker no Raspberry Pi - executar imagem de teste hello-world do docker - resultado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-teste-docker-run-hello-world-resultado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-rpi-teste-docker-run-hello-world-resultado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Lista de comandos úteis para utilização do Docker</h2>
<h3>Fazer o download de uma imagem de um container</h3>
<p>Você pode buscar por imagens prontas diretamente no site do docker hub. No exemplo do comando abaixo, vamos realizar somente o download da imagem oficial do nginx:</p>
<pre>docker pull nginx</pre>
<p class="cimg"><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-pull.png" alt="docker pull nginx" width="768" height="432" class="alignnone size-full wp-image-2465" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-pull.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-pull-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Criar um container a partir de uma imagem</h3>
<p>O comando docker run permite iniciar um container a partir de uma imagem. No exemplo do comando abaixo, vamos criar um container que contém a instalação do servidor de páginas nginx:</p>
<pre>docker run nginx</pre>
<p>Ao executar o comando, caso o docker não encontre a imagem localmente, ele irá buscar a mesma diretamente no docker hub e irá criar o container. Mas caso já tenha feito o download da imagem com o comando docker pull, o container é criado mais rapidamente, pois não precisa realizar o download da mesma.</p>
<p>O problema do comando acima, é que o terminal fica bloqueado na execução. Como opção, podemos passar por referência o prefixo -d, para que o container fique em funcionamento em segundo plano.</p>
<pre>docker run -d nginx</pre>
<p>O problema do comando acima é que não mapeamos a porta de execução do container. Como o nginx pode funcionar como um servidor de páginas, para que seja possível testar o funcionamento, é interessante que a porta http seja mapeada para o host. Podemos então mapear a porta do host para o container com o prefixo -p [portaHost]:[portaContainer]. Neste exemplo, vamos mapear a porta 8080 do host para ser redirecionada para a porta 80 do Container:</p>
<pre>docker run -d -p 8080:80 nginx</pre>
<p class="cimg"><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-run-nginx.png" alt="docker run nginx" width="768" height="432" class="alignnone size-full wp-image-2466" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-run-nginx.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-run-nginx-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-run-d-nginx.png" alt="docker run -d nginx" width="768" height="432" class="alignnone size-full wp-image-2467" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-run-d-nginx.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-run-d-nginx-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-run-d-p-8080-80-nginx.png" alt="docker run -p 8080:80 -d nginx" width="768" height="432" class="alignnone size-full wp-image-2468" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-run-d-p-8080-80-nginx.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-run-d-p-8080-80-nginx-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-browser-nginx-container.png" alt="Nginx Docker Container Running" width="768" height="432" class="alignnone size-full wp-image-2469" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-browser-nginx-container.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-browser-nginx-container-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Verificar os containers em funcionamento</h3>
<p>Para verificar quais container estão ativos, podemos utilizar o comando:</p>
<pre>docker ps</pre>
<p>Neste exemplo, verificamos 2 containers sendo executados. Ambos os containers utilizam a imagem oficial do nginx:</p>
<pre><strong>CONTAINER ID IMAGE COMMAND                CREATED       STATUS       PORTS                                 NAMES</strong>
58a23436fc0e nginx "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:8080-&gt;80/tcp, :::8080-&gt;80/tcp festive_cori
c46cd9b051a9 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp                                pensive_carson</pre>
<p class="cimg"><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-ps.png" alt="docker ps" width="768" height="432" class="alignnone size-full wp-image-2470" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-ps.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-ps-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Parar e remover um container</h3>
<p>Vamos remover o container da imagem do nginx que esquecemos de mapear a porta externa do host. Olhando a saída do Docker ps, temos o ID do container que queremos remover. Neste caso o ID é:</p>
<pre>c46cd9b051a9</pre>
<p>Não é possível remover um container que está em funcionamento, então primeiro precisamos parar o container com o comando:</p>
<pre>docker stop c46cd9b051a9</pre>
<p>Em seguida podemos proseguir com a remoção do container:</p>
<pre>docker rm c46cd9b051a9</pre>
<p class="cimg"><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-stop.png" alt="docker stop" width="768" height="432" class="alignnone size-full wp-image-2471" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-stop.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-stop-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-rm.png" alt="docker rm" width="768" height="432" class="alignnone size-full wp-image-2472" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-rm.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-rm-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Entrar dentro de um container e executar comandos</h3>
<p>Caso precise entrar dentro do container que possui ID &#8220;58a23436fc0e&#8221; para executar algum comando:</p>
<pre>docker exec -it 58a23436fc0e /bin/bash</pre>
<p>No comando acima, executamos o bash dentro do container. Se o comando acima não funcionar, é possível que a imagem que esteja utilizando não ter o bash. Para sair do container, lembre-se de digitar &#8220;exit&#8221;.</p>
<p class="cimg"><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-exec-it-bin-bash.png" alt="docker exec -it ID /bin/bash" width="768" height="432" class="alignnone size-full wp-image-2473" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-exec-it-bin-bash.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-exec-it-bin-bash-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Listar as imagens de containers que já fez download</h3>
<p>Caso queira verificar quais imagens de containers já fez download e estão disponíveis em seu computador, utilize o comando:</p>
<pre>docker images</pre>
<pre><strong>REPOSITORY  TAG    IMAGE ID     CREATED      SIZE</strong>
nginx       latest 91582cfffc2d 38 hours ago 192MB
hello-world latest b038788ddb22 4 months ago 9.14kB</pre>
<p class="cimg"><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-images.png" alt="docker images" width="768" height="432" class="alignnone size-full wp-image-2474" srcset="https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-images.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/09/como-instalar-docker-comando-docker-images-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Considerações Finais</h2>
<p>A instalação do Docker no Raspberry Pi é bem simples e pode ser realizada com poucos passos. É um excelente setup para começar a aprender a utilizar o docker e gerenciar aplicativos ou projetos pessoais na sua rede local. Os principais comandos de utilização do Docker também foram listados</p>
<p>Caso tenha dúvidas sobre a instalação ou execução do Docker, basta escrever aí nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-como-instalar-docker-raspberry-pi/">Tutorial como instalar Docker no Raspberry Pi</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/raspberry-pi/tutorial-como-instalar-docker-raspberry-pi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como habilitar TRIM com SSD USB no Raspberry Pi</title>
		<link>https://viniciuspaes.com/raspberry-pi/como-habilitar-trim-ssd-usb-raspberry-pi/</link>
					<comments>https://viniciuspaes.com/raspberry-pi/como-habilitar-trim-ssd-usb-raspberry-pi/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Sun, 13 Aug 2023 18:19:08 +0000</pubDate>
				<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[TRIM]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2392</guid>

					<description><![CDATA[<p>Entenda as vantagens de habilitar o TRIM no Raspberry Pi caso utilize SSD. Saiba também os riscos de habilitar o mesmo em uma unidade que não possui suporte.</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/como-habilitar-trim-ssd-usb-raspberry-pi/">Como habilitar TRIM com SSD USB no Raspberry Pi</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introdução</h2>
<p>Venho realizando testes com as melhores formas de realizar o boot no Raspberry Pi. Desde cartões SD de alto desempenho; SSD externo, ligado por USB e também memória eMMC (RPi 4 Compute Module).</p>
<p>Aproveitei a recente redução de preços de SSD SATA, e atualmente, é a melhor opção custo benefício para o Raspberry Pi 4. Como o Raspberry ainda possui muitas restrições de I/O, um SSD SATA atende as necessidades muito bem. Lembrando que a melhor performance ainda continua sendo um SSD Nvme.</p>
<p>Caso esteja utilizando um SSD, independente se for SATA ou NVME, é interessante saber que é possível otimizar a vida útil do mesmo habilitando a funcionalidade do &#8220;TRIM&#8221; no linux.</p>
<p>Tive sucesso em habilitar o TRIM no meu Raspberry Pi 4. No meu setup utilizei<span style="color: #ff0000;"><span style="color: #000000;"> um adaptador USB-SATA da UGREEN e um SSD Samsung EVO 850 de 500GB.</span></span></p>
<h2>Objetivos</h2>
<ul>
<li>Saber o que é o TRIM, e suas vantagens</li>
<li>Entender o <span style="color: #ff0000;"><strong>risco</strong></span> de tentar habilitar o TRIM em uma unidade que não ofereça suporte e causar danos irreversíveis no seu SSD</li>
<li>Passo a passo para habilitar o TRIM no raspberry pi em uma unidade de armazenamento que ofereça suporte</li>
</ul>
<p><strong><span style="color: #ff0000;">Aviso! Este tutorial pode causar danos na sua unidade. Continue por rua conta e risco!</span></strong></p>
<h2>O que é o TRIM?</h2>
<p>O termo &#8220;TRIM&#8221; é referente a uma operação que é realizada em dispositivos de armazenamento de estado sólido, como discos SSD e cartões de memória (SD). O TRIM é uma parte crucial para garantir um desempenho eficiente e uma vida útil prolongada desses dispositivos.</p>
<p>Especificamente, o TRIM é uma operação/comando para a interface ATA. Imagine você utilizando normalmente as informações em sua unidade de armazenamento: copiando novos arquivos e deletando arquivos antigos. Quando realiza estas operações, e diante a estrutura do SSD, é necessário que a unidade garanta que as informações &#8220;apagadas&#8221; sejam devidamente removidas e que haja espaço disponível para novas informações a serem gravadas. Desta forma, é a funcionalidade do TRIM informar ao seu SSD sobre quais dados podem ser apagados. Pode parecer intuitivo este processo, mas ele depende de suporte tanto do Sistema Operacional, quanto da unidade de armazenamento.</p>
<h3>Qual a vantagem do TRIM?</h3>
<p>De forma sucinta: o SSD sabe de antemão quais dados foram &#8220;removidos&#8221; e pode marcar os mesmos como &#8220;inválidos&#8221;, ou seja, ele não precisa remover os dados naquele momento, pode apenas marcar estes dados para serem apagados em um momento mais ocioso da unidade de armazenamento. Permite que o SSD gerencie de forma mais otimizada os dados, evitando também problemas de &#8220;write amplification&#8221;, que é uma particularidade da memória flash, pois os blocos/páginas precisam ser apagados antes de serem escritos.</p>
<p>Para fazer mais sentido, imagine que o SSD não saiba de antemão quais dados foram &#8220;apagados&#8221; pelo usuário. E no momento de escrita de novos arquivos, recebe também a notificação de que precisa sobrescrever certos blocos/páginas para que seja possível gravar todas as novas informações. Mas a memória flash precisa ser apagada, para que nova informação seja gravada, então a característica de sobrescrever nada mais é que um overhead de apagar e depois inserir novas informações: gerando múltiplas operações de leitura e escrita. Como o controlador precisa também trabalhar mais em curtos espaços de tempo, quando há estas operações, também é gerado mais calor. Todo este processo pode acarretar em problemas de desempenho e diminuir a vida útil da unidade.</p>
<p>Lembrando que o TRIM pode receber outros nomes ou agir de formas diferentes em outras interfaces ou diferentes sistemas operacionais. Mas de forma resumida, utilizamos o termo TRIM para exemplificar este processo de gestão ativa do sistema de arquivos. O TRIM trabalha com o Garbage Collector auxiliando no processo de organização, limpeza e otimização do SSD. Um ponto importante, o TRIM é opcional, os SSD também operam normalmente mesmo que o sistema operacional não ofereça suporte.</p>
<p><strong><span style="color: #ff0000;">Mas um aviso!</span></strong> Talvez sua unidade de armazenamento <strong>não tenha suporte ao TRIM</strong>. Tentar ativar o mesmo para uma unidade que não tenha suporte <span style="color: #ff0000;">pode causar problemas irreversíveis</span>. Tornando a unidade &#8220;somente leitura&#8221; ou mesmo transformando em um <strong><span style="color: #ff0000;">peso de papel</span></strong>.</p>
<h2>Passo a passo para habilitar suporte ao TRIM no Raspberry Pi</h2>
<h3>Passo 1 &#8211; Condições de Contorno</h3>
<p>Para executar este tutorial, é necessário que você tenha um SSD configurado em seu Raspberry Pi. O caso ideal é que você já esteja com o SSD configurado e seu boot é realizado diretamente nele. É interessante não ter outras unidades de armazenamento configuradas, pois pode se confundir durante o processo e tentar habilitar o TRIM em outra unidade, causando problemas.</p>
<p>Como mencionei inicialmente, no meu setup, utilizei:</p>
<ul>
<li>Adaptador USB-SATA da UGREEN</li>
<li>SSD SATA 500GB 850 EVO da Samsung</li>
</ul>
<p>Caso utilize outro equipamento, verificar se estes possuem suporte ao TRIM, para não danificar a unidade de armazenamento.</p>
<h3>Passo 2 &#8211; Riscos</h3>
<p>Estou sendo repetitivo, mas é por uma boa causa. Ficaria muito chateado se seguissem este tutorial e o mesmo causasse qualquer tipo de problema em seu equipamento. <span style="color: #ff0000;"><strong>Então por favor, se não possuem certeza caso seu equipamento tem suporte ao TRIM, não sigam o tutorial.</strong></span> Existem alguns passos para tentar verificar se o TRIM é suportado, mas não são 100% garantidos. Lembrem que tanto o adaptador USB-SATA, quanto o SSD precisam ter suporte. Se utilizam um SSD USB externo (all-in-one), cuidado em dobro.</p>
<p>Mesmo que utilizem o mesmo equipamento que utilizei, lembrem-se que as empresas podem realizar upgrades e mudanças no equipamento ao longo do tempo e mesmo assim manter o mesmo nome e modelo. Nunca é 100% garantido.</p>
<h3>Passo 3 &#8211; Verificar se o TRIM já está sendo utilizado</h3>
<p>No linux, podemos executar o comando abaixo para verificar se o TRIM está ativado e sendo utilizado:</p>
<pre>sudo fstrim -v /</pre>
<p>Se receber a mensagem &#8220;fstrim: /: the discard operation is not supported&#8221; como mostrado na imagem abaixo, então o TRIM não está habilitado.</p>
<p>&nbsp;</p>
<p>Agora vamos verificar como o SSD USB está sendo montado na unidade:</p>
<pre>sudo fdisk -l</pre>
<p>Na imagem abaixo, podemos verificar que meu SSD está montado como /dev/sda. Minha partição de boot é o /dev/sda1 e a minha partição do sistema de arquivos está em /dev/sda2.</p>
<p>Uma outra forma de verificar se o TRIM está habilitado no meu SSD, é verificar o valor da variável &#8220;DISK-MAX&#8221; do comando abaixo:</p>
<pre>lsblk -D</pre>
<p>No meu caso, tenho as partições do meu SSD com o valor &#8220;0B&#8221;, que indica que o TRIM não está ativado.</p>
<p>Lembrando que nesta etapa, estamos apenas verificando se o TRIM já está ativado e funcional. Como verificado nos passos acima, não há nenhuma evidência que o TRIM esteja ativado, mas isso não significa que o mesmo não esteja disponível. Dependendo do sistema operacional, o TRIM não vem configurado e ativado por padrão. Nos próximos passos, vamos verificar se meu Adaptador USB-SATA da UGREEN tem suporte ao TRIM com meu SSD.</p>
<h3>Passo 4 &#8211; Verificar se o dispositivo possui suporte ao TRIM</h3>
<p>Para esta etapa, vamos precisar de 2 softwares:</p>
<ul>
<li>sg3-utils</li>
<li>lsscsi</li>
</ul>
<p>Caso já não tenha eles instalados, instalar pelo apt:</p>
<pre>sudo apt install sg3-utils lsscsi</pre>
<p>Agora vamos precisar verificar o valor das variáveis:</p>
<ul>
<li><span style="color: #3366ff;"><strong>Maximum unmap LBA count</strong></span></li>
<li><strong><span style="color: #800080;">Unmap command supported (LBPU)</span></strong></li>
</ul>
<p>Para verificar o valor da variável &#8220;<span style="color: #3366ff;"><strong>Maximum unmap LBA count</strong></span>&#8220;, utilize o comando:</p>
<pre>sudo sg_vpd -p bl /dev/sda</pre>
<p>Na imagem abaixo, é possível observar que no meu caso, o valor é:</p>
<pre>Maximum unmap LBA count: <span style="color: #339966;"><strong>4194240</strong></span></pre>
<p>Para verificar o valor da variável &#8220;<strong><span style="color: #800080;">Unmap command supported (LBPU)</span></strong>&#8220;, vamos utilizar o comando:</p>
<pre>sudo sg_vpd -p lbpv /dev/sda</pre>
<p>Na imagem abaixo, é possível observar que no meu setup, as saídas:</p>
<pre>Unmap command supported (LBPU): <span style="color: #339966;"><strong>1</strong></span></pre>
<p>O que estas informações das variáveis querem dizer? Bom, caso o valor de &#8220;<span style="color: #3366ff;"><strong>Maximum unmap LBA count</strong></span>&#8221; seja maior que ZERO. E caso o valor da variável &#8220;<strong><span style="color: #800080;">Unmap command supported (LBPU)</span></strong>&#8221; seja exatamente igual a 1. Então há evidências que seu setup (Adaptador USB/SATA + SSD) tenha suporte ao TRIM.</p>
<p>Então, no meu caso:</p>
<ul>
<li><strong>Maximum unmap LBA count:</strong> <span style="color: #339966;"><strong>4194240 (maior que zero!)</strong></span></li>
<li><strong>Unmap command supported (LBPU):</strong> <span style="color: #339966;"><strong>1 (igual a 1!)</strong></span></li>
</ul>
<p>Nesta etapa então, verifiquei que há evidências sobre o suporte ao TRIM no meu setup. <strong>Assumi o risco pessoal de tentar habilitar o TRIM, sabendo das consequências negativas caso não tenha suporte.</strong></p>
<h3>Passo 5 &#8211; Habilitando o TRIM no SSD externo no Raspberry Pi</h3>
<p>Para habilitar o TRIM primeiro precisamos verificar o modo de provisionamento atualmente ativo. Precisamos então verificar o conteúdo do arquivo de provisionamento. Execute o comando abaixo:</p>
<pre>find /sys/ -name provisioning_mode -exec grep -H . {} + | sort</pre>
<p>Ao executar o comando, é feito uma busca pelo arquivo de provisionamento e seu conteúdo. No meu caso, a saída que recebi menciona que o método de provisionamento atual é &#8220;full&#8221;:</p>
<pre>/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb2/2-2/2-2:1.0/host0/target0:0:0/0:0:0:0/<strong>scsi_disk/<span style="color: #339966;">0:0:0:0</span>/provisioning_mode:<span style="color: #ff0000;">full</span></strong></pre>
<p>Como só tenho um SSD configurado, só recebi a saída em 1 linha. Caso tenha mais de uma unidade de armazenamento configurada, será necessário confirmar qual linha do exemplo acima é referente a qual unidade.</p>
<p>Caso tenha mais de uma saída, é possível identificar qual linha do exemplo acima é referente a cada unidade. Execute o comando abaixo:</p>
<pre>sudo lsscsi</pre>
<p>No meu caso, o comando acima resultou em:</p>
<pre><strong><span style="color: #339966;">[0:0:0:0]</span></strong>	disk	Samsung SSD 850 EVO 500G	0	/dev/sda</pre>
<p>Na saída do comando é possível verificar um identificador do disco &#8220;<span style="color: #339966;"><strong>[0:0:0:0]</strong></span>&#8221; referente ao SSD. Vimos no começo do tutorial, que o SSD está configurado em /dev/sda. Se repararmos na saída do comando para verificar o método de provisionamento, vemos que o meu SSD, identificado como &#8220;<span style="color: #339966;"><strong>[0:0:0:0]</strong></span>&#8220;, tem parte do caminho com o identificador:</p>
<pre>"[...]<strong>scsi_disk/<span style="color: #339966;">[0:0:0:0]</span>/provisioning_mode:<span style="color: #ff0000;">full</span></strong>"</pre>
<p>Confirmado qual o caminho do arquivo de provisionamento do SSD, agora precisamos alterar o método de provisionamento de &#8220;full&#8221; para &#8220;unmap&#8221;.</p>
<p>Quando executei o comando &#8220;find /sys/ -name provisioning_mode -exec grep -H . {} + | sort&#8221; tive como resposta o caminho do arquivo sendo (<strong>:<span style="color: #ff0000;">full</span></strong> é o conteúdo do arquivo e não faz parte do caminho):</p>
<pre>/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb2/2-2/2-2:1.0/host0/target0:0:0/0:0:0:0/<strong>scsi_disk/<span style="color: #339966;">0:0:0:0</span>/provisioning_mode</strong></pre>
<p>Para verificar o conteúdo deste arquivo, executo o comando:</p>
<pre>cat /sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb2/2-2/2-2:1.0/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/provisioning_mode</pre>
<p>Confirmando então, ele contém a string &#8220;<strong><span style="color: #ff0000;">full</span></strong>&#8220;, que precisamos alterar.</p>
<p>Preciso alterar o arquivo e substituir o seu conteúdo de full para unmap. Para isso, primeiro mude para usuário root:</p>
<pre>sudo su</pre>
<p>Agora execute o comando:</p>
<pre>echo unmap &gt; /sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb2/2-2/2-2:1.0/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/provisioning_mode</pre>
<p>Agora se verificar o conteúdo do arquivo, vai ver que o mesmo foi atualizado para &#8220;unmap&#8221;:</p>
<pre>cat /sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb2/2-2/2-2:1.0/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/provisioning_mode</pre>
<p>Agora é necessário calcular o valor para ser inserido na variável &#8220;discard_max_bytes&#8221;. Para seu cálculo vamos precisar das variáveis:</p>
<ul>
<li><span style="color: #3366ff;"><strong>Maximum unmap LBA count</strong></span></li>
<li><span style="color: #99cc00;"><strong>Logical block length</strong></span></li>
</ul>
<p>O valor de <span style="color: #3366ff;"><strong>Maximum unmap LBA count</strong> </span>é obtido executando o comando:</p>
<pre>sudo sg_vpd -p bl /dev/sda</pre>
<p>O valor de <span style="color: #99cc00;"><strong>Logical block length</strong></span> pode ser obtido com o comando:</p>
<pre>sudo sg_readcap -l /dev/sda</pre>
<p>Lembrando que ambos os comandos acima, <strong>/dev/sda</strong> é onde meu SSD está montado na unidade. Se o seu estiver com outro caminho, lembre-se de atualizar os comandos acima.</p>
<p>Neste setup, consegui os seguintes valores:</p>
<pre>Maximum unmap LBA count = <strong>4194240</strong>
Logical block length = <strong>512</strong> bytes</pre>
<p>A fórmula para a variável &#8220;discard_max_bytes&#8221; é:</p>
<pre>discard_max_bytes = "Maximum unmap LBA count" * "Logical block length"
discard_max_bytes = <strong>4194240 * 512</strong>
discard_max_bytes = <strong>2147450880</strong></pre>
<p>Caso faça as contas e consiga valores diferentes, não tem problema. Estes valores podem variar dependendo do seu setup.</p>
<p>Caso não esteja em modo super usuário, é necessário para alterar o arquivo.</p>
<pre>sudo su</pre>
<p>Execute o comando para atualizar o valor de discard_max_bytes:</p>
<pre>echo <strong>2147450880</strong> &gt; /sys/block/sda/queue/discard_max_bytes</pre>
<p>Vamos agora confirmar se o TRIM foi habilitado executando o comando:</p>
<pre>sudo fstrim -v /</pre>
<h3>Passo 6 &#8211; Ativando persistência no TRIM</h3>
<p>É necessário ativar persistência no TRIM, pois senão, caso reinicie o Raspberry, as modificações não serão mantidas.</p>
<p>A primeira etapa é identificar o seu SSD externo. No meu caso, é identificar meu adaptador SATA/USB. É necessário identificar 2 características:</p>
<ul>
<li>idVendor</li>
<li>idProduct</li>
</ul>
<p>Vamos executar o comando &#8220;lsusb&#8221; para identificar os dispositivos conectados na USB:</p>
<pre>lsusb</pre>
<p>Ao executar o inspecionar a saída, verifiquei que a seguinte linha era referente ao meu adaptador SATA/USB:</p>
<pre>Bus 002 Device 002: ID <span style="color: #ff0000;"><strong>174c</strong></span>:<span style="color: #ff0000;"><strong>1153</strong> </span>ASMedia Technology Inc. ASM1153 <strong>SATA 3Gb/s bridge</strong></pre>
<p>Da linha acima, temos os valores:</p>
<ul>
<li><span style="color: #ff0000;">174c</span> = idVendor</li>
<li><span style="color: #ff0000;">1153</span> = idProduct</li>
</ul>
<p>A segunda etapa então é adicionar uma regra no udev pra configuração automática do TRIM. Para isto, vamos criar e editar o arquivo com o nano:</p>
<pre>sudo nano /etc/udev/rules.d/10-trim.rules</pre>
<p>Agora é necessário inserir a linha abaixo dentro do nano, mas você precisa alterar o campo idVendor e idProduct com os dados do seu dispositivo. No meu caso, ficou:</p>
<pre>ACTION=="add|change", ATTRS{idVendor}=="<strong><span style="color: #ff0000;">174c</span></strong>", ATTRS{idProduct}=="<span style="color: #ff0000;"><strong>1153</strong></span>", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"</pre>
<h3>Passo 7 &#8211; Automatizando o processo de execução do TRIM</h3>
<p>Por padrão, após configurar e habilitar o TRIM em sua unidade de armazenamento, ele não é executado automaticamente. Então é preciso avisar o sistema operacional para que se encarregue deste processo. Senão, terá que chamar a função fstrim manualmente, toda hora que desejar realizar o trim.</p>
<p>Desta forma, para deixar o sistema operacional encarregado para gerenciar o trim, execute o comando:</p>
<pre>sudo systemctl enable fstrim.timer</pre>
<p>Tudo certo! Para testar se tudo ocorreu bem, reinicie o Raspberry e execute o comando:</p>
<pre>sudo fstrim -v /</pre>
<p>Caso seu dispositivo tenha suporte ao TRIM e tenha sido configurado corretamente, o TRIM está habilitado e funcional!</p>
<h2>Conclusão</h2>
<p>Neste tutorial foi possível verificar os passos para habilitar o TRIM utilizando um SSD externo no Raspberry Pi. O processo envolve poucas etapas, mas possui pequenos detalhes para identificação dos dispositivos que podem aumentar o tempo de implementação do tutorial. Caso possua um dispositivo que forneça suporte, o TRIM é uma excelente alternativa para aumentar a vida útil de unidades de armazenamento de estado sólido, como SSD e cartões de memória (SD).</p>
<p>Qualquer dúvida ou sugestão, basta informar nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/como-habilitar-trim-ssd-usb-raspberry-pi/">Como habilitar TRIM com SSD USB no Raspberry Pi</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/raspberry-pi/como-habilitar-trim-ssd-usb-raspberry-pi/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial desabilitar Wifi ou Bluetooth no Raspberry Pi com Ubuntu Server</title>
		<link>https://viniciuspaes.com/raspberry-pi/tutorial-desabilitar-wifi-bluetooth-raspberry-pi-ubuntu-server/</link>
					<comments>https://viniciuspaes.com/raspberry-pi/tutorial-desabilitar-wifi-bluetooth-raspberry-pi-ubuntu-server/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Thu, 10 Aug 2023 12:33:01 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[wifi]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2373</guid>

					<description><![CDATA[<p>Aprenda os passos para desabilitar o Wifi e Bluetooth do Raspberry Pi durante a sequência de boot, economizando energia e recursos.</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-desabilitar-wifi-bluetooth-raspberry-pi-ubuntu-server/">Tutorial desabilitar Wifi ou Bluetooth no Raspberry Pi com Ubuntu Server</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>O objetivo principal deste tutorial é uma forma de não inicializar (desabilitar) o wifi e/ou bluetooth do raspberry pi durante o boot. É muito útil para economia de energia durante um setup que não necessita destes recursos no <strong>raspberry pi</strong>, ou caso seja neurótico com emissão de rádio frequência perto de você.</p>
<h2>Condições de contorno</h2>
<p>Este setup foi testado no <strong>Ubuntu Server 22.04</strong>, mas também é funcional na versão 20.10. Neste exemplo, testei o procedimento no <strong>Raspberry Pi 4</strong>, mas verifiquei que também é funcional na versão do <strong>RPi 3</strong>. Lembrando que nesta versão, utilizo o ubuntu server na versão minimal, ou seja, somente por interface de linha de comando.</p>
<h2>Passo a passo para desligar wifi e/ou bluetooth no Raspberry Pi</h2>
<h3>Acesso ou Conexão com o Raspberry Pi</h3>
<ol>
<li>Caso esteja utilizando o Raspberry com teclado, mouse e monitor: faça login com seu usuário e senha.</li>
<li>Se o seu setup é &#8220;headless&#8221;, faça conexão no seu RPi por ssh (o nome de usuário padrão é pi, caso não tenha definido um usuário diferente). Substituir o IP abaixo pelo endereço IP do seu Raspberry.<br />
Exemplo:</p>
<pre>ssh pi@<span style="color: #ff0000;">192.168.1.99</span></pre>
</li>
</ol>
<h3>Editar arquivo de configuração no RPi</h3>
<ul>
<li>Se estiver utilizando o <span style="color: #339966;"><strong>RPi 3B ou 3B+</strong></span>, edite o arquivo:
<pre>sudo nano /boot/firmware/config.txt</pre>
</li>
<li>Se estiver utilizando o <span style="color: #339966;"><strong>RPi 4</strong></span>, o arquivo que precisa ser alterado é diferente:
<pre>sudo nano /boot/firmware/usercfg.txt</pre>
</li>
</ul>
<p>Para desabilitar o wifi, insira a linha no arquivo que está aberto para edição:</p>
<pre>dtoverlay=disable-wifi</pre>
<p>Para desabilitar o bluetooth, insira a linha:</p>
<pre>dtoverlay=disable-bt</pre>
<p>Caso tenha o desejo de desabilitar tanto o Wifi, quanto o bluetooth, o arquivo editado precisa conter ambas as linhas, como exemplo:</p>
<pre>dtoverlay=disable-wifi
dtoverlay=disable-bt</pre>
<p>Agora salve o arquivo e saia do editor nano.</p>
<h3>Reiniciar o Raspberry Pi</h3>
<p>Para reiniciar o RPi e verificar que o Wifi e/ou o Bluetooth foram desabilitados, execute o comando:</p>
<pre>sudo reboot now</pre>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-desabilitar-wifi-bluetooth-raspberry-pi-ubuntu-server/">Tutorial desabilitar Wifi ou Bluetooth no Raspberry Pi com Ubuntu Server</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/raspberry-pi/tutorial-desabilitar-wifi-bluetooth-raspberry-pi-ubuntu-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como verificar o Hash / Checksum de um arquivo no Mac, Linux ou Windows</title>
		<link>https://viniciuspaes.com/linux/tutorial-verificar-hash-checksum-arquivo-mac-linux-windows/</link>
					<comments>https://viniciuspaes.com/linux/tutorial-verificar-hash-checksum-arquivo-mac-linux-windows/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Tue, 08 Aug 2023 17:03:51 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mac osx]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[checksum]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[md5]]></category>
		<category><![CDATA[md5sum]]></category>
		<category><![CDATA[sha1]]></category>
		<category><![CDATA[sha256]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2357</guid>

					<description><![CDATA[<p>Confira o passo a passo para confirmar o checksum dos arquivos através de funções hash (md5, sha1 e sha256) no Windows, Linux e Mac OS</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-verificar-hash-checksum-arquivo-mac-linux-windows/">Tutorial como verificar o Hash / Checksum de um arquivo no Mac, Linux ou Windows</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>O principal objetivo é comparar se o download de um arquivo realizado pela internet manteve as características originais do mesmo, ou seja, o arquivo não foi corrompido. Este processo é bastante útil quando é necessário realizar alguma instalação de software sensível, como por exemplo, upgrade de firmware de equipamentos. Evitando problemas de &#8220;softbrick&#8221; causado por arquivo corrompido. Para realizar este procedimento de comparação, podemos utilizar as funções:</p>
<ul>
<li>Hash MD5</li>
<li>Hash SHA1</li>
<li>Hash SHA256</li>
</ul>
<h2>O que é o <strong>Hash</strong> e/ou <strong>Checksum</strong>?</h2>
<p>Um <strong>hash</strong> de arquivo, também conhecido como <strong>checksum</strong>, é uma sequência alfanumérica única e fixa gerada por meio de um algoritmo de hash a partir dos dados de um arquivo. Esse valor de hash é uma representação única do conteúdo do arquivo, e mesmo uma pequena alteração nos dados resultaria em um hash completamente diferente. Essa propriedade torna os hashes úteis para uma variedade de finalidades, incluindo segurança, integridade de dados e verificação de autenticidade.</p>
<h2>Como verificar o Hash (Checksum) de um arquivo utilizando o sistema operacional Windows?</h2>
<p>Quando for realizar o download do arquivo na internet, é comum que o site que oferta o arquivo, também mostre o <strong>checksum</strong> do mesmo para diferentes tipos de <strong>funções de hash</strong>.</p>
<p>No Sistema Operacional Windows, a forma mais simples de verificar o hash de um arquivo é através do prompt de comando, utilizando a função certutil e passando o prefixo de hashfile.</p>
<p>Então, o primeiro passo é abrir o prompt de comando. Por padrão, ao abrir o prompt de comando, você estará na pasta: C:\Users\NomeUsuario\</p>
<p>Levando em conta que nosso arquivo está dentro da pasta de Download, vamos caminhar até a pasta, utilizando o comando:</p>
<pre>cd Downloads</pre>
<p>Neste exemplo, o arquivo que queremos verificar o checksum, tem o nome:</p>
<pre><span style="color: #ff0000;">arquivo_de_exemplo.img</span></pre>
<p>Lembrando que o arquivo pode ter qualquer nome e qualquer extensão.</p>
<h3>Como verificar o hash com md5 no windows</h3>
<p>Para verificar o hash do arquivo &#8220;arquivo_de_exemplo.img&#8221; utilizando a função md5, digite o comando no prompt de comando:</p>
<pre><strong>certutil -hashfile</strong> <span style="color: #ff0000;">arquivo_de_exemplo.img</span> <strong>md5</strong></pre>
<h3>Como verificar o hash SHA1 no windows</h3>
<p>Seguindo o mesmo padrão para o hash md5, para utilização a função SHA1, basta utiliza o comando abaixo:</p>
<pre><strong>certutil -hashfile</strong> <span style="color: #ff0000;">arquivo_de_exemplo.img</span> <strong>sha1</strong></pre>
<h3>Como verificar o checksum com função hash SHA256 no windows</h3>
<p>Assim como realizado para os hash&#8217;s MD5 e SHA1, basta incluir qual função de Hash gostaria de utilizar, como exemplo, para o SHA256 basta utilizar o comando:</p>
<pre><strong>certutil -hashfile</strong> <span style="color: #ff0000;">arquivo_de_exemplo.img</span> <strong>sha256</strong></pre>
<h2>Como verificar o Hash (Checksum) de um arquivo no Mac OS ou Linux?</h2>
<p>O procedimento é bastante similar com o que é feito no Windows, a diferença que no Mac OS e no Linux, precisamos utilizar o aplicativo terminal, ao invés do prompt de comando. Neste exemplo vamos utilizar a função openssl, que é nativa no Mac e no Linux.</p>
<p>Primeiramente, vamos executar o aplicativo terminal. Após aberto, você estará na pasta pessoal do seu usuário. Vamos supor que o arquivo que você realizou o download e gostaria de verificar o checksum está na pasta Downloads, então precisamos executar o seguinte comando no terminal:</p>
<pre>cd Downloads</pre>
<p>Vamos imaginar que o arquivo tenha o nome de &#8220;arquivo_de_exemplo.img&#8221;. Importante ressaltar que o arquivo pode ter qualquer nome e possuir qualquer tipo de extensão. E arquivos muito grandes vão demorar mais tempo para ser calculado o hash.</p>
<h3>Como verificar o hash com md5 no Mac OS ou Linux</h3>
<p>No Linux e Mac OS o método mais fácil para verificar o checksum de um arquivo é utilizando a função openssl. No exemplo abaixo, temos o comando para verificar o hash md5 do arquivo de exemplo:</p>
<pre><strong>openssl md5</strong> <span style="color: #ff0000;">arquivo_de_exemplo.img</span></pre>
<h3>Como verificar o hash SHA1 no Mac OS e Linux</h3>
<p>A função utilizada para o hash sha1 é a mesma do md5, o que muda é o parâmetro de qual função de hash vamos utilizar. Segue o exemplo para verificar o checksum sha1 de um arquivo:</p>
<pre><strong>openssl sha1</strong> <span style="color: #ff0000;">arquivo_de_exemplo.img</span></pre>
<h3>Como verificar o checksum com função hash SHA256 no Linux e Mac OS</h3>
<p>Da mesma forma dos exemplos anteriores, o comando abaixo gera o checksum do arquivo de exemplo para a função hash sha256. Lembrar de alterar o &#8220;arquivo_de_exemplo.img&#8221;, pelo nome do arquivo que gostaria de calcular o hash.</p>
<pre><strong>openssl sha256</strong> <span style="color: #ff0000;">arquivo_de_exemplo.img</span></pre>
<h2>Conclusão</h2>
<p>O processo de realizar o checksum através de função hash é bem simples. Utilizar as funções nativas do sistema operacional garantem bastante agilidade no processo, pois não é necessário instalar nenhum software. Lembrando que após gerar o hash do arquivo, basta comparar com o hash fornecido pelo website, para que seja possível comparar os resultados. Caso obtenha um hash diferente, tente realizar o download novamente e confirmar que está testando o arquivo correto.</p>
<p>Se tiver qualquer dúvida ou sugestão, basta informar nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-verificar-hash-checksum-arquivo-mac-linux-windows/">Tutorial como verificar o Hash / Checksum de um arquivo no Mac, Linux ou Windows</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/linux/tutorial-verificar-hash-checksum-arquivo-mac-linux-windows/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como criar conta no Google Analytics</title>
		<link>https://viniciuspaes.com/ga/tutorial-basico-google-analytics/</link>
					<comments>https://viniciuspaes.com/ga/tutorial-basico-google-analytics/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Fri, 14 Jul 2023 21:39:53 +0000</pubDate>
				<category><![CDATA[ga]]></category>
		<category><![CDATA[google analytics]]></category>
		<guid isPermaLink="false">http://www.mundoseo.com.br/blog/?p=6</guid>

					<description><![CDATA[<p>Aprenda neste tutorial passo a passo as etapas para se registrar e configurar o Google Analytics em seu Website!</p>
<p>O post <a href="https://viniciuspaes.com/ga/tutorial-basico-google-analytics/">Tutorial como criar conta no Google Analytics</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2192" src="https://viniciuspaes.com/wp-content/uploads/2012/09/tutorial-basico-google-analytics.png" alt="Tutorial básico de Google Analytics" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/tutorial-basico-google-analytics.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/tutorial-basico-google-analytics-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Objetivos</h2>
<ul>
<li>Entender o que é e para que serve o Google Analytics</li>
<li>Aprender a criar uma conta no Google Analytics</li>
<li>Tutorial passo a passo ensinando a configurar um domínio com código de rastreio para gerar relatórios no Google Analytics</li>
</ul>
<h2>O que é o Google Analytics?</h2>
<p>O <strong>Google Analytics</strong> (GA) é uma plataforma que funciona como um serviço de coleta de dados de websites e aplicativos móveis para criar relatórios, provendo transformar dados em respostas úteis para seu negócio. Ou seja, você instala um código javascript (GA4 atualmente) do Google no seu website ou aplicativo e este código vai monitorar todos os acessos dos usuários. Desta forma, você poderá verificar estas informações em sua página pessoal no analytics.</p>
<p>O Google Analytics é muito útil, principalmente para identificar o perfil dos usuários que acessam seu website. É possível verificar os conteúdos mais buscados, os conteúdos que precisam de manutenção (baixa retenção), a origem do tráfego (mídias sociais, busca google, campanha paga, etc) entre outros.</p>
<p>Caso seu website possua propagandas (banners) do Adsense, é também possível gerar relatórios das páginas que mais convertem acesso de usuários por impressão de banners ou cliques.</p>
<p>Agora, se possui um site de e-commerce ou de serviços, é possível criar filtros no Google Analytics para verificar também quais produtos e serviços convertem mais em vendas por volume de acesso. É possível também verificar, caso possua campanhas pagas do Adwords, qual o comportamento do ROI.</p>
<p>O Google Analytics também permite verificar as palavras-chave (<a href="https://viniciuspaes.com/seo/conceitos-basicos-sobre-keywords/"><strong>keywords</strong></a>) veiculadas nas pesquisas que o destino final do usuário foi o acesso ao seu website. Estas métricas, juntamente com informações provenientes do google insights são ferramentas muito úteis para maximizar a experiência do usuário em seu website e focar no aumento de tráfego.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2193" src="https://viniciuspaes.com/wp-content/uploads/2012/09/tutorial-basico-google-analytics-2.png" alt="Analytics" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/tutorial-basico-google-analytics-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/tutorial-basico-google-analytics-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Tutorial passo a passo ensinando a configurar um domínio com código de rastreio para gerar relatórios no Google Analytics</h2>
<p>Um pequeno resumo sobre como utilizar o <strong>Google Analytics</strong> e configurar o mesmo em seu site:</p>
<ol>
<li>Faça login em sua <strong>conta do Google</strong></li>
<li>Se cadastre no Google Analytics, acessando a URL: <strong><a href="https://analytics.google.com" target="_blank" rel="noopener">https://analytics.google.com</a></strong></li>
<li>Configure sua conta, inserindo um <strong>domínio</strong> (ou <strong>app móvel</strong>) e qual objetivo para geração de relatórios (site tem foco em <strong>serviços</strong>, <strong>e-commerce</strong>, <strong>propagandas</strong>, etc)</li>
<li>Verifique o código de rastreio (javascript) gerado na sua conta:
<ul>
<li>Caso utilize wordpress, é possível utilizar plugins para inserir o código de rastreio em seu site</li>
<li>Outra opção é editar os arquivos html do seu site e inserir o <strong>código de rastreio (tag)</strong> manualmente</li>
</ul>
</li>
<li>Aguarde até 48h até que o <strong>Google Analytics</strong> comece a receber dados de visitantes do seu site e apresentar nos relatórios</li>
</ol>
<p>A seguir temos os passos descritos de forma mais detalhada, com imagens para auxiliar no processo.</p>
<p>&nbsp;</p>
<h3>Passo 1: Realizar login na conta do Google ou criar uma conta, caso ainda não tenha</h3>
<p>O primeiro passo para utilizar o google analytics é acessar a página oficial da plataforma:</p>
<pre><a href="https://analytics.google.com" target="_blank" rel="noopener">https://analytics.google.com</a></pre>
<p>Para que seja possível utilizar esta ferramenta é necessário ter uma conta do Google para iniciar o setup. Caso você tenha uma conta de email no gmail, você já tem uma conta do Google. Sendo necessário então realizar o login:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2166" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-login.png" alt="Google Analytics - Login" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-login.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-login-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2 &#8211; Iniciar o cadastro no Google Analytics</h3>
<p>Após realizar o login, será direcionado para a página inicial do Google Analytics. Se não tiver cadastro no Google Analytics ainda, será necessário clicar no botão:</p>
<pre>Começar a usar</pre>
<p>&nbsp;</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2167" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-comecar-usar.png" alt="Google Analytics - Começar a usar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-comecar-usar.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-comecar-usar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3 &#8211; Primeira etapa de cadastro &#8211; criando uma conta no GA</h3>
<p>Agora temos que realizar o cadastro na ferramenta. São 5 etapas simples onde fornecemos alguns dados básicos sobre como desejamos utilizar a ferramenta e para qual website ou aplicativo queremos vincular um código de rastreio.</p>
<p>Na primeira etapa, precisamos definir um nome para a conta. Como esta conta vai ser minha principal, vou escolher o nome de:</p>
<pre>Conta Principal</pre>
<p>Nesta página também há opções que podemos marcar nos checkbox, para compartilhamento de dados com o Google Analytics, e outras opções de suporte. Marque de acordo com suas necessidades.</p>
<p>Após preencher a informações, clique em:</p>
<pre>Próxima</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2168" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-crie-uma-conta.png" alt="Google Analytics - Etapa 1 Criação de Conta" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-crie-uma-conta.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-crie-uma-conta-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-crie-uma-conta-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4 &#8211; Criando uma propriedade &#8211; incluindo um domínio para gerar relatórios</h3>
<p>A próxima etapa é sobre criar uma propriedade. Basicamente, no caso deste exemplo, a propriedade será o Google Analytics vinculado em meu site pessoal, o viniciuspaes.com. Como estou no Brasil, defini meu fuso horário como GMT +3, com horário de São Paulo. Mas deixei selecionado a moeda como Dólar americano.</p>
<p>Após selecionar as configurações, clique em:</p>
<pre>Próximo</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2172" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-criar-uma-propriedade.png" alt="Google Analytics - Etapa 2 Criar uma propriedade" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-criar-uma-propriedade.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-criar-uma-propriedade-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-criar-uma-propriedade-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4 &#8211; Detalhes sobre sua equipe</h3>
<p>Nesta terceira etapa da página de cadastro, precisamos definir alguns dados sobre a empresa. Se você trabalha sozinho, ou é um blog pessoal, não tem problema. Basta selecionar o número de pessoas que trabalham junto com você.</p>
<p>No meu caso, como é um blog pessoal e trabalho sozinho, selecionei:</p>
<p><strong>Pequena:</strong> 1 a 10 funcionários</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2169" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-descreva-sua-empresa.png" alt="Google Analytics - Etapa 3 dados da empresa" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-descreva-sua-empresa.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-descreva-sua-empresa-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-descreva-sua-empresa-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5 &#8211; Objetivo para utilizar os relatórios do Google Analytics</h3>
<p>Agora precisamos selecionar quais nossos objetivos utilizando o Google Analytics. Selecione as opções que mais façam sentido para seu website. Estas opções ajudam o Google Analytics a definir mais ou menos a sua expectativa para a geração dos relatórios e pode fazer sugestões relacionadas.</p>
<p>Após definir as opções que mais e enquadram em seu perfil, clique em:</p>
<pre>Criar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2173" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-escolha-seus-objetivos-de-negocios.png" alt="Google Analytics - Etapa 4 escolha seus objetivos de negócio" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-escolha-seus-objetivos-de-negocios.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-escolha-seus-objetivos-de-negocios-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-escolha-seus-objetivos-de-negocios-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6 &#8211; Verificar os termos e serviços para utilização da ferramenta</h3>
<p>Antes da sua conta ser criada, será necessário aceitar os termos de serviços do Google Analytics. Caso concorde com todos os itens do termo, clique no botão:</p>
<pre>Aceito</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2174" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-contrato-termos-de-servico-google.png" alt="Google Analytics - Contrato de Termos e Serviços do Google Analytics" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-contrato-termos-de-servico-google.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-contrato-termos-de-servico-google-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-contrato-termos-de-servico-google-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7 &#8211; Definir as configurações para <strong>Coleta de Dados</strong></h3>
<p>Agora estamos na última etapa, na configuração de coleta de dados. Neste exemplo, estou configurando o Google Analytics em um website, então vou clicar na opção:</p>
<pre>Web</pre>
<p>Caso queira utilizar o GA em um aplicativo, basta selecionar a opção apropriada.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2175" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-comecar-coletar-dados.png" alt="Google Analytics - Etapa 5 Começar a coletar dados" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-comecar-coletar-dados.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-comecar-coletar-dados-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-comecar-coletar-dados-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8 &#8211; Coleta de Dados / <strong>Configurar fluxo de dados</strong></h3>
<p>Ao clicar no botão de &#8220;Web&#8221;, automaticamente uma aba lateral será aberta, para configurar o fluxo de dados. Neste exemplo eu configurei meu site com &#8220;<strong>https://</strong>&#8221; (pois tenho certificado SSL/TLS no meu domínio) e inseri a url:</p>
<pre>viniciuspaes.com</pre>
<p>Em seguida, para identificar este fluxo, inseri que seria relevante o meu blog pessoal, ou seja:</p>
<pre>Vinicius Paes</pre>
<p>Após preencher os dados acima, basta clicar no botão:</p>
<pre>Criar fluxo</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2176" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-configurar-fluxo-dados.png" alt="Google Analytics - Configurar fluxo de dados" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-configurar-fluxo-dados.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-configurar-fluxo-dados-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-configurar-fluxo-dados-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9 &#8211; Coleta de Dados / Configurar fluxo de dados / <strong>Métrica Otimizada</strong></h3>
<p>Após clicar no botão &#8220;Criar fluxo&#8221; uma outra aba de métrica otimizada vai abrir. Basta selecionar as opções que fazem sentido para você. Eu mantive todas as opções marcadas, que é o padrão.</p>
<p>Após selecionar as opções, clique em:</p>
<pre>Salvar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2177" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-configurar-fluxo-dados-metrica-otimizada.png" alt="Google Analytics - métrica otimizada" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-configurar-fluxo-dados-metrica-otimizada.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-configurar-fluxo-dados-metrica-otimizada-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-configurar-fluxo-dados-metrica-otimizada-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 10 &#8211; Coleta de Dados / Configurar fluxo de dados / Métrica Otimizada / <strong>Detalhes do fluxo da Web</strong></h3>
<p>Por fim, será encaminhado para a aba de resumo dos detalhes do fluxo web configurado.</p>
<p>Basta clicar no &#8220;X&#8221; no canto superior esquerdo e fechar a aba.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2178" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-detalhes-fluxo-web.png" alt="Google Analytics - Aba detalhes do fluxo web" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-detalhes-fluxo-web.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-detalhes-fluxo-web-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-detalhes-fluxo-web-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 11 &#8211; Etapa 5 do cadastro concluída &#8211; <strong>Coleta de Dados Configurada</strong></h3>
<p>Agora você estará de volta na página de &#8220;Começar a Coletar Dados&#8221;. Porém, com a configuração realizada.</p>
<p>Para continuar, clique no botão:</p>
<pre>Avançar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2179" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-configuracao-comecar-coletar-dados-realizada.png" alt="Google Analytics - Etapa 5 Começar a coletar dados - Etapa configurada" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-configuracao-comecar-coletar-dados-realizada.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-configuracao-comecar-coletar-dados-realizada-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-configuracao-comecar-coletar-dados-realizada-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 12 &#8211; Configuração inicial / cadastro realizado &#8211; Coleta de dados pendente &#8211; precisa inserir código de rastreio no site</h3>
<p>As 5 etapas iniciais de cadastro foram criadas com sucesso. Clique no botão:</p>
<pre>Ir para a página inicial</pre>
<p>Só um lembrete, nesta configuração inicial ainda não vinculamos o código de rastreio em nosso site. Então os dados não vão aparecer ainda. Vamos realizar esta etapa de adicionar uma &#8220;tag&#8221; do GA4 no site nos próximos passos.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2181" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-completo-ir-pagina-inicial.png" alt="Google Analytics - configuração inicial realizada" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-completo-ir-pagina-inicial.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-completo-ir-pagina-inicial-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-cadastro-completo-ir-pagina-inicial-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 13 &#8211; Configurar quais comunicados por email gostaria de receber</h3>
<p>Na primeira vez que realizar o login no Google Analytics, um modal irá aparecer com as opções de notificação que gostaria de receber por email. Marque as opções que melhor atende suas necessidades e clique no botão:</p>
<pre>Salvar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2185" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-comunicados-email.png" alt="Google Analytics - configuração comunicados por email" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-comunicados-email.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-comunicados-email-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-comunicados-email-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 14 &#8211; Primeiro acesso a Dashboard do Google Analytics</h3>
<p>Agora finalmente está na página principal após login no <strong>Google Analytics</strong>. Esta página também é conhecida como dashboard. Como só temos 1 único domínio configurado, estamos na dashboard deste domínio. No menu superior é possível observar:</p>
<pre>Todas as contas &gt; Conta Principal - viniciuspaes.com</pre>
<p>Como mencionado, algumas configurações iniciais já foram realizadas. Mas precisamos agora &#8220;instalar&#8221; o código javascript de rastreio do<strong> Google Analytics</strong> (GA4) em nosso website.  Este código também é conhecido como <strong>tag</strong>.</p>
<p>Na página de dashboard, tem um aviso que nenhum dado ainda foi recebido pelo seu site, <span style="color: #ff9900;">para verificar se possui uma tag instalada</span>. Mas é exatamente isso mesmo, acabamos de criar a conta e não instalamos o código de rastreio ainda. Então precisamos clicar no botão:</p>
<pre>Ver instruções para inclusão de tag</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2186" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio.png" alt="Google Analytics - dashboard do domínio - clicar no botão para verificar código da tag de rastreio" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 15 (1) &#8211; Instruções de instalação do código de rastreio (tag) utilizando plugins</h3>
<p>Nesta página, temos 2 opções para instalação do código de rastreio do analytics:</p>
<ol>
<li>Caso esteja utilizando WordPress em seu domínio ou outro gerenciador de conteúdo compatível, é possível instalar o código de rastreio através de plugins</li>
<li>Instalação do código de rastreio manualmente</li>
</ol>
<p>Se tiver acesso aos arquivos de instalação do seu website, o recomendado é instalar manualmente o código. Pois muitas vezes os plugins tem um gasto muito maior de I/O no servidor. Se não tiver acesso para alterar os arquivos do seu site, ou não tiver o conhecimento para realizar o procedimento, uma opção é utilizar um plugin.</p>
<p>O próprio <strong>Google Analytics</strong> indica 3 sugestões de plugin para o wordpress:</p>
<ul>
<li>MonsterInsights plugin</li>
<li>Site kit plugin</li>
<li>WooCommerce plugin</li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2187" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio-opcao-plugins.png" alt="Google Analytics - instalar código de rastreio através de plugins" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio-opcao-plugins.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio-opcao-plugins-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio-opcao-plugins-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 15 (2) &#8211; Instruções de instalação do código de rastreio (tag) manualmente (editando arquivo do site)</h3>
<p>Se optar por instalar manualmente o código de rastreio, lembre-se que o mesmo precisa estar presente em todas as páginas do seu site. Caso utilize um gerenciador de conteúdo (WordPress, Joomla, etc) é possível editar apenas 1 arquivo do seu template, adicionando o código, pois o mesmo é utilizado em todas as páginas. No wordpress o arquivo dentro da sua pasta de template chamado &#8220;header.php&#8221; tem esta função. Particularmente gosto de inserir o código de rastreio dentro das tags &lt;head&gt; &#8230; &lt;/head&gt; para garantir que o código seja executado logo no início da abertura da página.</p>
<p>No exemplo da imagem abaixo, é possível verificar o código de rastreio que precisa ser adicionado e na tela seguinte a edição do arquivo de header do site e inserção do código de rastreio:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2188" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio-opcao-inserir-codigo-manualmente.png" alt="Google Analytics - instalar código de rastreio manualmente" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio-opcao-inserir-codigo-manualmente.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio-opcao-inserir-codigo-manualmente-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio-opcao-inserir-codigo-manualmente-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2189" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio-opcao-inserir-codigo-manualmente-exemplo.png" alt="Google Analytics - código de rastreio configurado no arquivo header.php do template do wordpress" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio-opcao-inserir-codigo-manualmente-exemplo.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-como-inserir-codigo-rastreio-opcao-inserir-codigo-manualmente-exemplo-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 16 &#8211; Instalação e configuração concluída &#8211; só aguardar os dados!</h3>
<p>Tudo pronto! Ao seguir este tutorial foi possível verificar os passos para se cadastrar no Google Analytics e configurar um domínio para que seja analisado. O GA informa que os dados de rastreio podem demorar até 48h para começarem a aparecer, então agora é ter paciência para acessar os dados de relatórios disponíveis.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2190" src="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-pronto-receber-dados-do-site.png" alt="Google Analytics - Dashboard aguardando recebimento dos dados de relatório" width="768" height="1029" srcset="https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-pronto-receber-dados-do-site.png 768w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-pronto-receber-dados-do-site-224x300.png 224w, https://viniciuspaes.com/wp-content/uploads/2012/09/google-analytics-pronto-receber-dados-do-site-764x1024.png 764w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Conclusões</h2>
<p>O cadastro, configuração e instalação (rastreio) do Google Analytics é bastante simples. Algumas configurações iniciais de fluxo de informação podem ser um pouco complicadas na primeira vez que se depara com elas. Mas o verdadeiro desafio é depois de pronto. O Google Analytics fornece muitas informações, sendo possível criação de filtros e telas de relatórios personalizadas para atender a sua demanda. Mas é importante realizar o cadastro do seu site ou app o mais rápido possível e já deixar o GA coletando os dados, toda informação é valiosa!</p>
<p>Se seguiram este tutorial até aqui, tudo correu bem! Caso tenham alguma dúvida ou sugestão, basta informar nos comentários. Farei o possível para responder!</p>
<p>O post <a href="https://viniciuspaes.com/ga/tutorial-basico-google-analytics/">Tutorial como criar conta no Google Analytics</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/ga/tutorial-basico-google-analytics/feed/</wfw:commentRss>
			<slash:comments>80</slash:comments>
		
		
			</item>
		<item>
		<title>Como adicionar, alterar e excluir o acesso de usuários no Google Analytics</title>
		<link>https://viniciuspaes.com/ga/gerenciando-usuarios-google-analytics/</link>
					<comments>https://viniciuspaes.com/ga/gerenciando-usuarios-google-analytics/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Thu, 13 Jul 2023 20:37:42 +0000</pubDate>
				<category><![CDATA[ga]]></category>
		<category><![CDATA[google analytics]]></category>
		<guid isPermaLink="false">http://www.mundoseo.com.br/blog/?p=69</guid>

					<description><![CDATA[<p>Aprenda a criar, editar, excluir e alterar os dados e atribuições dos usuários da sua conta do Google Analytics no nosso tutorial de Google Analytics.</p>
<p>O post <a href="https://viniciuspaes.com/ga/gerenciando-usuarios-google-analytics/">Como adicionar, alterar e excluir o acesso de usuários no Google Analytics</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Aprender a <strong>adicionar acesso</strong> a um novo usuário a uma conta ou propriedade no <strong>Google Analytics</strong></li>
<li>Passo a passo para <strong>alterar permissão de acesso</strong> de um usuário existente no <strong>GA</strong></li>
<li>Como <strong>deletar acesso</strong> de usuário a uma conta ou propriedade (website) no <strong>Analytics</strong></li>
</ul>
<h2>Introdução</h2>
<p>Na gestão de acompanhamento e análise de crescimento de um website é importante ter uma equipe capacitada para gerenciar todas as atribuições existentes. É muito mais eficiente termos profissionais dedicados em cada área, do que apenas um funcionário dedicado a todas as análises e geração de relatórios. Para garantir de forma otimizada o acesso de todos os usuários desta equipe, podemos adicionar diferentes níveis de acesso ao <a href="https://viniciuspaes.com/seo/tutorial-basico-google-analytics/"><strong>Google Analytics</strong></a> e a cada website (propriedade) configurado na plataforma.</p>
<p>Lembrando que por motivos de segurança, essa gestão de acessos é importante também para garantir que apenas usuários administradores tenham permissão de excluir contas. Desta forma, é possível definir permissões somente leitura para determinados colaboradores, além de garantir permissões de customização dos relatórios para usuários editores. É possível garantir acesso de visualização para terceiros (agências de web marketing), entre outros.</p>
<p>No geral, há um conjunto de permissões (papéis) disponíveis na gestão de acesso de usuários no <strong>Google Analytics</strong>, sendo elas:</p>
<ul>
<li>Administrador</li>
<li>Editor</li>
<li>Profissional de Marketing</li>
<li>Analista</li>
<li>Leitor</li>
<li>Nenhum</li>
</ul>
<p>Além destes papéis, é possível também restringir dados sensíveis sobre o website, como as métricas de custo (<strong>adwords</strong>) e receita (<strong>adsense</strong>), caso seu <strong>Google Analytics</strong> tenha esses serviços vinculados.</p>
<h2>Passo a passo de como criar novo usuário com acesso no Google Analytics</h2>
<p>Caso queira criar um novo usuário para ter acesso a um website do seu Google Analytics, os passos são bem simples. De forma geral, em resumo, podemos destacar as etapas sendo como:</p>
<ol>
<li>Realizar login na sua conta do <strong>Google Analytics</strong></li>
<li>Acessar a página de Administrador (ícone de engrenagem)</li>
<li>Selecionar o tipo de acesso que deseja adicionar:
<ul>
<li>Criar um novo acesso a conta (todos os websites)</li>
<li>Criar um novo acesso a propriedade (apenas 1 site ou conjunto de sites da propriedade)</li>
</ul>
</li>
<li>Clicar no botão de &#8220;+&#8221; para adicionar acesso para um novo usuário (opção: adicionar usuários)</li>
<li>Inserir email do novo usuário e permissões</li>
<li>Tudo pronto! Acesso para novo usuário criado</li>
</ol>
<p>Abaixo é possível conferir o passo a passo de maneira explicativa, acompanhando cada passo por imagens.</p>
<h3>Passo 1 – Acessar página de administração</h3>
<p>Após realizar login no <strong>Google Analytics</strong>, é preciso localizar o ícone de engrenagem que é correspondente ao link para a páginas de administrador do Google Analytics. Usualmente este link fica disponível no canto inferior esquerdo da página principal do analytics, e faz parte do menu lateral.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2255" src="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-icone-pagina-administrador-conta.png" alt="Google Analytics - acessar página administrador da conta" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-icone-pagina-administrador-conta.png 768w, https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-icone-pagina-administrador-conta-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /> <img loading="lazy" decoding="async" class="alignnone size-full wp-image-2256" src="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-icone-pagina-administrador-conta-2.png" alt="Google Analytics - acessar página administrador da conta - link menu lateral esquerdo" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-icone-pagina-administrador-conta-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-icone-pagina-administrador-conta-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2 – Selecionar opção Gerenciamento de acesso à conta ou propriedade</h3>
<p>Agora estamos na página principal do administrador da conta. Temos diversas opções nesta página, mas nosso objetivo é gerenciar acessos. Desta forma, temos 2 opções:</p>
<ol>
<li>Gerenciar acesso à conta (engloba todos os websites configurados nesta conta)</li>
<li>Gerenciar acesso a propriedade (cada propriedade engloba usualmente 1 website, ou um conjunto de websites)</li>
</ol>
<p>Escolha a opção que faça mais sentido para suas necessidades. Usualmente garantimos acesso à propriedade, para que uma equipe ou empresa terceirizada cuide de um determinado website.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2257" src="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-pagina-administrador-conta-selecionar-gerenciamento-acesso-propriedade-ou-conta.png" alt="Google Analytics - Página de Administração - Selecionar adicionar usuário a conta ou propriedade" width="768" height="567" srcset="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-pagina-administrador-conta-selecionar-gerenciamento-acesso-propriedade-ou-conta.png 768w, https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-pagina-administrador-conta-selecionar-gerenciamento-acesso-propriedade-ou-conta-300x221.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3 – Clicar no botão “+” para habilitar opções de criação de novo usuário com acesso ao GA</h3>
<p>Agora estamos na tela que gerenciar os acessos. No canto superior direito temos um ícone com o símbolo de &#8220;+&#8221;. Ao clicar no botão, selecione a opção:</p>
<pre>Adicionar usuários</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2258" src="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-gerenciamento-acesso-a-propriedade.png" alt="Google Analytics - Adicionando acesso a novo usuário - clicar ícone de &quot;+&quot;" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-gerenciamento-acesso-a-propriedade.png 768w, https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-gerenciamento-acesso-a-propriedade-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /> <img loading="lazy" decoding="async" class="alignnone size-full wp-image-2259" src="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-gerenciamento-acesso-propriedade-adicionar-usuarios.png" alt="Google Analytics - Adicionando acesso a novo usuário - link adicionar usuários" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-gerenciamento-acesso-propriedade-adicionar-usuarios.png 768w, https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-gerenciamento-acesso-propriedade-adicionar-usuarios-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4 – Inserir dados pessoais do novo usuário, junto com seu papel e restrição</h3>
<p>Agora você estará na tela para configurar o acesso de novos usuários. Adicione o endereço de email de todos os usuários que deseja gerenciar o acesso. Em seguida, é necessário gerenciar os papéis (permissões) que estes novos usuários vão ter.</p>
<p>Caso tenha configurado o Adwords ou Adsense em sua conta do <strong>Google Analytics</strong>, será possível garantir permissão de acesso a estas métricas ou não.</p>
<p>Ao terminar de configurar o acesso dos novos usuários, clique no botão:</p>
<pre>Adicionar</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2260" src="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-configurando-acesso-novo-usuario.png" alt="Google Analytics - definindo email de novos usuários e permissões e papéis" width="768" height="1201" srcset="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-configurando-acesso-novo-usuario.png 768w, https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-configurando-acesso-novo-usuario-192x300.png 192w, https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-configurando-acesso-novo-usuario-655x1024.png 655w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2261" src="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-acesso-novo-usuario-criado.png" alt="Google Analytics - novo usuário com papel de editor criado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-acesso-novo-usuario-criado.png 768w, https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-acesso-novo-usuario-criado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Tudo Pronto! Acesso a um novo usuário configurado com sucesso!</p>
<h2>Editar papel e permissão de acesso usuário Google Analytics</h2>
<h3>Passo 1 – Vá para a página de administração</h3>
<p>A opção de edição de acesso de usuários também se encontra dentro da página de Administrador. Sendo necessária acessá-la.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2256" src="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-icone-pagina-administrador-conta-2.png" alt="Google Analytics - acessar página administrador da conta - link menu lateral esquerdo" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-icone-pagina-administrador-conta-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-icone-pagina-administrador-conta-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2 – Opção de Gerenciamento de acesso à conta ou propriedade</h3>
<p>Caso deseja alterar a permissão de acesso de um usuário com acesso à conta, selecione:</p>
<pre>Gerenciamento de acesso à conta</pre>
<p>Ou, caso tenha o desejo de alterar o acesso de um usuário a uma propriedade, selecione:</p>
<pre>Gerenciamento de acesso à propriedade</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2257" src="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-pagina-administrador-conta-selecionar-gerenciamento-acesso-propriedade-ou-conta.png" alt="Google Analytics - Página de Administração - Selecionar adicionar usuário a conta ou propriedade" width="768" height="567" srcset="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-pagina-administrador-conta-selecionar-gerenciamento-acesso-propriedade-ou-conta.png 768w, https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-pagina-administrador-conta-selecionar-gerenciamento-acesso-propriedade-ou-conta-300x221.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3 – Encontre o usuário que deseja realizar alteração de nível de acesso</h3>
<p>Selecione o ícone &#8220;&#8230;&#8221; para abrir a opção:</p>
<pre>Ver os detalhes da conta do usuário</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2262" src="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-editar-permissao-acesso-usuario-conta-ou-propriedade.png" alt="Google Analytics - como editar permissão de acesso de usuário" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-editar-permissao-acesso-usuario-conta-ou-propriedade.png 768w, https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-editar-permissao-acesso-usuario-conta-ou-propriedade-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4 – Edite o nível de acesso do usuário no Google Analytics</h3>
<p>Agora selecione o ícone de edição (lápis) para editar a permissão de acesso do usuário.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2263" src="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-editar-permissao-acesso-usuario-conta-ou-propriedade-2.png" alt="Google Analytics - Escolher novas permissões de acesso para o usuário que deseja alterar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-editar-permissao-acesso-usuario-conta-ou-propriedade-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-editar-permissao-acesso-usuario-conta-ou-propriedade-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Deletar acesso de usuário no Google Analytics</h2>
<p>Assim como na opção de criação e alteração da permissão de acesso de usuários no <strong>Google Analytics</strong>, precisamos caminhar até a página de gerenciamento de acesso (propriedade ou conta).</p>
<p>Encontre o usuário que queira excluir (remover) o acesso e selecione a opção:</p>
<pre>Remover acesso</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2264" src="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-remover-acesso-usuario-conta-ou-propriedade.png" alt="Google Analytics - Remover acesso de usuário da conta ou propriedade do Google Analytics" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-remover-acesso-usuario-conta-ou-propriedade.png 768w, https://viniciuspaes.com/wp-content/uploads/2008/07/google-analytics-remover-acesso-usuario-conta-ou-propriedade-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Conclusão</h2>
<p>Neste passo a passo cobrimos 3 opções possíveis na gestão de acesso no Google Analytics: criar, alterar e remover. Os passos são bem simples e intuitivos. Caso tenha alguma sugestão ou dúvida, basta informar nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/ga/gerenciando-usuarios-google-analytics/">Como adicionar, alterar e excluir o acesso de usuários no Google Analytics</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/ga/gerenciando-usuarios-google-analytics/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>How to create an SSH key pair to connect to gitlab or github on mac os, windows or linux</title>
		<link>https://viniciuspaes.com/linux/how-to-create-ssh-key-pair-connect-gitlab-github-mac-os-windows-linux/</link>
					<comments>https://viniciuspaes.com/linux/how-to-create-ssh-key-pair-connect-gitlab-github-mac-os-windows-linux/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Wed, 05 Jul 2023 19:16:29 +0000</pubDate>
				<category><![CDATA[english]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac osx]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[chave ssh]]></category>
		<category><![CDATA[ed25519]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[gitlab]]></category>
		<category><![CDATA[RSA]]></category>
		<category><![CDATA[ssh]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2136</guid>

					<description><![CDATA[<p>Learn how to create public and private SSH keys for git integration on Mac, Windows, and Linux.</p>
<p>O post <a href="https://viniciuspaes.com/linux/how-to-create-ssh-key-pair-connect-gitlab-github-mac-os-windows-linux/">How to create an SSH key pair to connect to gitlab or github on mac os, windows or linux</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Primary Goal</h2>
<p>Make automatic connections on gitlab or github with <strong>git pull</strong>, <strong>git push</strong>, <strong>git clone</strong> using <strong>SSH</strong> protocol without needing to enter credentials (password). Also useful for using a webhook that updates the software on the server whenever there is a commit on the master/main branch.</p>
<h2>Project Requirements</h2>
<ol>
<li>Terminal / Command Prompt access (command line)</li>
<li>A <strong>Gitlab</strong> or <strong>GitHub</strong> account</li>
</ol>
<h2>How to create SSH key for automatic authentication in github or gitlab?</h2>
<p>Basically the steps are very simple, whether for windows, mac or linux:</p>
<ol>
<li>Open terminal (linux and mac) or command prompt (windows)</li>
<li>To create SSH key with RSA encryption, use the command: <strong>ssh-keygen -t <span style="color: #339966;">rsa</span> -b 4096 -C &#8220;<span style="color: #ff0000;">myemail@email-example.com</span>&#8220;</strong></li>
<li>You will be asked 3 questions: where to save the SSH key pair, passphrase to access the key (optional), and to confirm the entered passphrase</li>
<li>To access the content of the created public <strong>SSH key</strong>:
<ul>
<li>On linux or mac, use the command: <strong>cat ~/.ssh/id_rsa.pub</strong></li>
<li>On windows: <strong>type &#8220;%userprofile%\.ssh\id_rsa.pub&#8221;</strong></li>
</ul>
</li>
<li>Copy the created public ssh key text (id_rsa.pub) and install/configure (paste the key text) in the github or gitlab ssh key configuration field</li>
<li>Do not let anyone access your private ssh key (id_rsa) and keep it safe at all times</li>
</ol>
<p>Below we will explain in detail the step by step and the how to create ssh key pair, with images and explanatory text.</p>
<h3>Step 1: Open command prompt or terminal application with desired user</h3>
<p>The first step is to open the command prompt if you are using Windows Operating System or the Terminal if you are using the Mac OS or Linux.</p>
<p>Make sure you are using the correct user that you want to authenticate (for creating the SSH key pair). Remember to avoid using the root user (if you use Linux).</p>
<h3>Step 2: Create a new ssh key pair</h3>
<p>With the prompt or terminal open, let&#8217;s use the ssh-keygen command to generate a key pair with 4096-bit RSA encryption and insert, together with the key, a text string informing the e-mail linked to the key (using the same e-mail address that you use in your githu, gitlab or bitbucket account is a good practice):</p>
<pre><strong>ssh-keygen -t rsa -b 4096 -C "<span style="color: #ff0000;">myemail@email-example.com</span>"</strong></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1866" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-gitlab-github-como-criar-par-chave-publica-privada-windows.gif" alt="Como criar chave SSH para utilizar no Git - Gitlab e Github - Exemplo no Windows" width="768" height="432" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1865" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-gitlab-github-como-criar-par-chave-publica-privada-mac.gif" alt="Como criar chave SSH para utilizar no Git - Gitlab e Github - Exemplo no Mac e Linux" width="768" height="432" /></p>
<p>After running the command, three questions will be prompted:</p>
<ol>
<li>The first is where you would like to save the created key. It is recommended to save in the default folder (leave it blank and press ENTER).</li>
<li>The second question is related to creating a password (passphrase) to access the key.</li>
<li>The third question is to confirm the chosen password.</li>
</ol>
<p>Regarding the <strong>first question</strong> after running ssh-keygen: Select the location where you want to save the ssh key. If you press enter (without writing anything), it will be saved in your home folder, which can be:</p>
<p>On <strong>Windows</strong>:</p>
<pre><strong>C:\Users\<span style="color: #ff0000;">yourusername</span>\.ssh\id_rsa.pub <span style="color: #339966;">or</span> "%userprofile%\.ssh\id_rsa.pub"</strong></pre>
<p>On <strong>Linux</strong> and <strong>MAC OS</strong>, the path is:</p>
<pre><strong>~/.ssh/id_rsa.pub</strong></pre>
<p>Regarding the <strong>second question</strong>: &#8211; So, do I need to setup a password/passphrase to access the ssh key or not? It is interesting to take into account some points:</p>
<ul>
<li>If you are strict about storing your keys securely, and don&#8217;t want to have to type your password every time you connect or commit, then it&#8217;s better not to set a password.<br />
If security is an extremely important variable, especially if you work with production servers, or private repositories with sensitive information, for security reasons, it is recommended that you configure a password/passphrase.</li>
</ul>
<p>Use case example:</p>
<ul>
<li>If you create your keypair without a linked password, the process of connecting to your server or repository is very quick, as there is no longer any need to enter login and password credentials. Its use is also very common in automated processes, if you have a cron job configured that needs to make an ssh connection.</li>
<li>Adding a password to your key can provide an extra layer of security. The reason is that if a hacker manages to access your key pair, he will not be able to connect directly to your server or repository; it will still need the password.</li>
</ul>
<p>The <strong>third question</strong> is related to confirmation of the chosen password.</p>
<p>A fingerprint of your computer/server (key fingerprint) will then be generated.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1868" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-gitlab-github-como-criar-par-chave-publica-privada-windows-exemplo.gif" alt="Criando chave ssh para utilizar no git - github e gitlab - Exemplo no Windows" width="768" height="432" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1872" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-gitlab-github-como-criar-par-chave-publica-privada-mac-exemplo.gif" alt="Criando chave ssh para utilizar no git - github e gitlab - Exemplo no Mac e Linux" width="768" height="432" /></p>
<h3>Step 3: Paste the public SSH key to your GitHub or Gitlab account</h3>
<p>In order to setup your <strong>SSH key</strong> on <strong>Gitlab,</strong> <strong>Github</strong> or <strong>Bitbucket</strong>, you need to access the content of the id_rsa.pub file (which is your public key). The bellow command will show your generated public key on the screen:</p>
<p>On <strong>Linux</strong> and <strong>MAC OS</strong>, the command is:</p>
<pre><strong>cat ~/.ssh/id_rsa.pub</strong></pre>
<p>On <strong>Windows</strong>:</p>
<pre><strong>type "%userprofile%\.ssh\id_rsa.pub"</strong></pre>
<p>The beginning of the key must start with <strong>ssh-rsa</strong> and end with your chosen <strong>email address</strong>. Now select you public key text and copy to the clipboard.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1870" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-gitlab-github-como-ver-chave-publica-criada-windows.gif" alt="Como copiar sua chave pública SSH id_rsa.pub para utilizar no git - github e gitlab - Exemplo no Windows" width="768" height="432" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1871" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-gitlab-github-como-ver-chave-publica-criada-mac.gif" alt="Como copiar sua chave pública SSH id_rsa.pub para utilizar no git - github e gitlab - Exemplo no Mac e Linux" width="768" height="432" /></p>
<h3>Step 4: Configure Github and Gitlab</h3>
<p>In the previous step we copied the contents of the id_rsa.pub file to the clipboard. In order to configure our SSH key authenticated access on <strong>Gitlab</strong> or <strong>Github</strong>, we need to &#8220;install&#8221;/configure this public ssh key on the platform.</p>
<p>If you want to use a key in the <strong>ed25519</strong> standard or instead of <strong>RSA</strong>, just generate it with the steps below:</p>
<h2>ed25519 algorithm</h2>
<p>An alternative to SSH key creation is to use the ed25519 encryption algorithm instead of RSA. To create the key pair with this algorithm, use the command:</p>
<pre><strong>ssh-keygen -t <span style="color: #339966;">ed25519</span> -C "<span style="color: #ff0000;">my-email@email-example.com</span>"</strong></pre>
<p>The path to the public key is the same, but now it has the name linked to the algorithm:<br />
On Linux and Mac OS:</p>
<pre><strong>~/.ssh/id_ed25519.pub</strong></pre>
<p>On Windows:</p>
<pre><strong>C:\Users\<span style="color: #ff0000;">yourusername</span>\.ssh\id_ed25519.pub <span style="color: #339966;">or</span> "%userprofile%\.ssh\id_ed25519.pub"</strong></pre>
<p>To view the contents of the public SSH key, use the command:</p>
<p>If you are using Linux or Mac OS:</p>
<pre><strong>cat ~/.ssh/id_ed25519.pub</strong></pre>
<p>Now if you are using Windows, use the command:</p>
<pre><strong>type "%userprofile%\.ssh\id_ed25519.pub"</strong></pre>
<p>If you have any questions or suggestions, write them in the comments! I will do my best to answer!</p>
<h2>Step by step on how to configure SSH key in Gitlab</h2>
<h3>Create a new repository in gitlab</h3>
<p>In this example, we will first show you how to create a new project, or new repository. On the <strong>Gitlab</strong> home screen, (after logging in), click on the option:</p>
<pre>Create a project</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2104" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-criar-projeto-gitlab.png" alt="Gitlab - como criar novo projeto repositório - passo 1 - clicar no botão create project" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-criar-projeto-gitlab.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-criar-projeto-gitlab-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Then choose the type of project you want to create. In this example we are going to create a blank repository, so let&#8217;s choose:</p>
<pre>Create a blank project</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2105" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-criar-projeto-gitlab-em-branco.png" alt="Gitlab - como criar novo projeto repositório - passo 2 - criar novo projeto em branco" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-criar-projeto-gitlab-em-branco.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-criar-projeto-gitlab-em-branco-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Now we are on the new repository configuration screen. In this example we will choose the name &#8220;<span style="color: #339966;"><strong>repo-gitlab</strong></span>&#8220;, in reference to a repository that we will configure in <strong>gitlab</strong>. The project slug is how the name of your project will appear in the url of the page, it is automatically generated according to the chosen name, but it is possible to change it. We&#8217;re not going to set up a deployment, so check:</p>
<pre>No deployment planned</pre>
<p>This repository will be private, so only the owner of the repository and whoever he grants access will be able to see its contents. We are already going to configure the repository with a README file automatically, because this way we can already make a clone on our computer and test it.</p>
<p>When everything is ready, click on the button:</p>
<pre>Create project</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2114" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-criar-projeto-gitlab-configuracao.png" alt="Gitlab - como criar novo projeto repositório - passo 3 - preencher dados do repositório" width="768" height="916" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-criar-projeto-gitlab-configuracao.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-criar-projeto-gitlab-configuracao-252x300.png 252w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>In this example, we have the project/repository created as in the image below:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2107" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-criado-gitlab.png" alt="Gitlab - como criar novo projeto repositório - passo 4 - novo repositório criado" width="768" height="916" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-criado-gitlab.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-criado-gitlab-252x300.png 252w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Add SSH key to gitlab</h3>
<p>One of the most important parts of configuring your repository&#8217;s integration into your development environment is configuring your public <strong>SSH key</strong> so that you can speed up the commit process. SSH key settings are within your personal profile menu. So first we need to click on our photo icon, as in the image below:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2108" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-criado-gitlab-menu-project-overview.png" alt="Gitlab - como adicionar nova chave SSH - passo 1 - acessar menu" width="768" height="916" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-criado-gitlab-menu-project-overview.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-criado-gitlab-menu-project-overview-252x300.png 252w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Now choose the option:</p>
<pre>Edit profile</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2109" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-criado-gitlab-menu-edit-profile.png" alt="Gitlab - como adicionar nova chave SSH - passo 2 - editar perfil" width="768" height="916" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-criado-gitlab-menu-edit-profile.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-criado-gitlab-menu-edit-profile-252x300.png 252w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Now we are inside our profile page. Notice that now the options in the left menu are different. Let&#8217;s choose the option:</p>
<pre>SSH Keys</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2110" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-criado-gitlab-menu-ssh-keys.png" alt="Gitlab - como adicionar nova chave SSH - passo 3 - clicar botão do menu de chave ssh" width="768" height="916" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-criado-gitlab-menu-ssh-keys.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-criado-gitlab-menu-ssh-keys-252x300.png 252w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>We are now on the <strong>public SSH key</strong> configuration screen. Copy your generated key (content of id_rsa.pub) on your personal computer and paste it in the text field, as shown in the image below. Then click on:</p>
<pre>Add Key</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2111" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-campo-inserir-chave-ssh-gitlab.png" alt="Gitlab - como adicionar nova chave SSH - passo 4 - adicionar sua chave ssh" width="768" height="916" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-campo-inserir-chave-ssh-gitlab.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-projeto-campo-inserir-chave-ssh-gitlab-252x300.png 252w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>All done! New public key configured successfully! You will have a confirmation image and a summary of your key data, as shown in the image below:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2112" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-chave-adicionada.png" alt="Gitlab - como adicionar nova chave SSH - passo 5 - chave adicionada" width="768" height="916" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-chave-adicionada.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-chave-adicionada-252x300.png 252w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Step by step on how to configure SSH key on Github</h2>
<p>As we showed in the example above, the process to add an SSH key in <strong>github</strong> is very similar to what was done in <strong>gitlab</strong>.<br />
If you already have a repository created, you can also try cloning it on your personal computer to perform commit tests.</p>
<h3>Add SSH key to gitlab</h3>
<p>The process to add your public ssh key on <strong>github</strong> is super simple. The first step is to click on your profile picture in the upper right corner. When clicked, the menu will appear.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2127" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-acessar-menu-perfil.png" alt="Github - passo a passo para configurar chave ssh - acessar menu perfil" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-acessar-menu-perfil.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-acessar-menu-perfil-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>In the menu, select the option:</p>
<pre>Settings</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2128" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-acessar-menu-configuracoes.png" alt="Github - passo a passo para configurar chave ssh - acessar menu configurações (settings)" width="768" height="648" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-acessar-menu-configuracoes.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-acessar-menu-configuracoes-300x253.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>In the settings page, select the bellow option available in the left menu bar:</p>
<pre>SSH and GPG keys</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2129" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-acessar-menu-ssh-and-gpg-keys.png" alt="Github - passo a passo para configurar chave ssh - acessar menu ssh and gpg keys" width="768" height="648" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-acessar-menu-ssh-and-gpg-keys.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-acessar-menu-ssh-and-gpg-keys-300x253.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Now just look for the &#8220;SSH Keys&#8221; session and click on the green button:</p>
<pre>New SSH Key</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2130" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-botao-new-ssh-key.png" alt="Github - passo a passo para configurar chave ssh - clicar no botão adicionar new ssh key" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-botao-new-ssh-key.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-botao-new-ssh-key-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Now choose a title for your key, which is basically a name, so you can remember the purpose or origin of that key. The key type in this example it will be:</p>
<pre>Authentication key</pre>
<p>Now we need to put the contents of our public ssh key into the &#8220;key&#8221; text field.<br />
To finish the key setup, click on:</p>
<pre>Add SSH key</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2131" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-adicionar-nova-chave-ssh-publica.png" alt="Github - passo a passo para configurar chave ssh - colar sua chave ssh pública" width="768" height="648" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-adicionar-nova-chave-ssh-publica.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-adicionar-nova-chave-ssh-publica-300x253.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>All set, new <strong>public ssh key</strong> successfully registered on <strong>github</strong>. The image below illustrates the registered example key:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2132" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-nova-chave-ssh-publica-adicionada.png" alt="Github - passo a passo para configurar chave ssh - nova chave ssh configurada com sucesso no github" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-nova-chave-ssh-publica-adicionada.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-github-nova-chave-ssh-publica-adicionada-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Configure Git personal computer/workstation</h2>
<p>So that we can set up our repository on our personal computer or workstation, it is first necessary to perform an initial configuration in <strong>git</strong>. If you don&#8217;t have git installed on your computer, just access the project&#8217;s official website to download and install it:</p>
<pre><a href="https://git-scm.com/downloads" target="_blank" rel="nofollow noopener">https://git-scm.com/downloads</a></pre>
<p>With <strong>git</strong> installed, we basically need to configure some personal data like <strong>email address</strong> and <strong>username</strong>.<br />
To configure the user&#8217;s <strong>email address</strong> in <strong>git</strong>, use the command from the prompt or terminal:</p>
<pre><strong>git config --global user.email "<span style="color: #ff0000;">myemail@email-example.com</span>"</strong></pre>
<p>To configure the <strong>username</strong>, use the command:</p>
<pre><strong>git config --global user.name "<span style="color: #ff0000;">Vinicius Paes</span>"</strong></pre>
<p>Remember to update the email and username in the examples above to your personal details.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2117" src="https://viniciuspaes.com/wp-content/uploads/2016/02/git-configuracao-global-computador.png" alt="Git - configuração usuário e email" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/git-configuracao-global-computador.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/git-configuracao-global-computador-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>How to clone a repository, add files, commit and push with ssh key authentication</h2>
<p>First, to clone a repository with <strong>SSH</strong>, we need its URL. In your repository page it is possible to extract this information. In our example, we created the repository called &#8220;<span style="color: #339966;"><strong>repo-gitlab</strong></span>&#8220;, and we are using the username <span style="color: #ff0000;"><strong>viniciuspaes</strong></span>. So our URL and command to clone looks like:</p>
<pre>git clone git@gitlab.com:<span style="color: #ff0000;">viniciuspaes</span>/<span style="color: #339966;">repo-gitlab</span>.git</pre>
<p>After cloning the directory, we can verify it with the command:</p>
<pre>dir</pre>
<p>To navigate into the repository, use the command:</p>
<pre>cd <span style="color: #339966;">repo-gitlab</span></pre>
<p>To test the commit/push functionality for the main branch, let&#8217;s create a &#8220;new.txt&#8221; file:</p>
<pre>type nul &gt; new.txt</pre>
<p>Now add the file to the commit list:</p>
<pre>git add .</pre>
<p>Now we need to add a message to our commit, so we use the command:</p>
<pre>git commit -m "add file new.txt"</pre>
<p>All done, we can use the push command to update the main branch with the new file created:</p>
<pre>git push origin main</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2123" src="https://viniciuspaes.com/wp-content/uploads/2016/02/git-clone-repositorio-gitlab.png" alt="GIT - comando git clone de um repositório" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/git-clone-repositorio-gitlab.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/git-clone-repositorio-gitlab-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2119" src="https://viniciuspaes.com/wp-content/uploads/2016/02/git-verificar-clone-repositorio-com-dir.png" alt="GIT - verificar o diretório clonado do repositório com o comando dir" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/git-verificar-clone-repositorio-com-dir.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/git-verificar-clone-repositorio-com-dir-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2120" src="https://viniciuspaes.com/wp-content/uploads/2016/02/git-entrar-diretorio-repositorio-clonado.png" alt="GIT - entrar no diretório clonado com o comando CD" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/git-entrar-diretorio-repositorio-clonado.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/git-entrar-diretorio-repositorio-clonado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2121" src="https://viniciuspaes.com/wp-content/uploads/2016/02/git-criar-arquivo-branco-adicionar-para-commit.png" alt="GIT - criar um novo arquivo vazio e adicionar o mesmo no respositório" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/git-criar-arquivo-branco-adicionar-para-commit.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/git-criar-arquivo-branco-adicionar-para-commit-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2122" src="https://viniciuspaes.com/wp-content/uploads/2016/02/git-commit-mensagem-push-origin-main.png" alt="GIT - git commit das modificações com a mensagem informativa e git push para adicionar as modificações na branch main" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/git-commit-mensagem-push-origin-main.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/git-commit-mensagem-push-origin-main-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>If everything went well, we can see in the <strong>gitlab</strong> interface that the new file has been added, as illustrated in the image below:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2113" src="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-commit-novo-arquivo-mostrado-interface.png" alt="Gitlab - arquivo que foi feito commit apareceu na interface" width="768" height="916" srcset="https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-commit-novo-arquivo-mostrado-interface.png 768w, https://viniciuspaes.com/wp-content/uploads/2016/02/chave-ssh-publica-privada-gitlab-commit-novo-arquivo-mostrado-interface-252x300.png 252w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>And everything is ready! SSH key pair created, <strong>git</strong> configured, <strong>gitlab</strong> configured, github configured, repository clone example done, add new file and commit/push performed via command line!</p>
<p>&nbsp;</p>
<p>Did you like this tutorial, was there any information missing or did you have any questions? Write it down in the comments!</p>
<p>O post <a href="https://viniciuspaes.com/linux/how-to-create-ssh-key-pair-connect-gitlab-github-mac-os-windows-linux/">How to create an SSH key pair to connect to gitlab or github on mac os, windows or linux</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/linux/how-to-create-ssh-key-pair-connect-gitlab-github-mac-os-windows-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial criar servidor OpenVPN e conectar com VPN grátis</title>
		<link>https://viniciuspaes.com/servidor/tutorial-criar-servidor-openvpn-conectar-vpn-gratis/</link>
					<comments>https://viniciuspaes.com/servidor/tutorial-criar-servidor-openvpn-conectar-vpn-gratis/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Sat, 24 Jun 2023 23:12:50 +0000</pubDate>
				<category><![CDATA[redes]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Amazon AWS]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[chave ssh]]></category>
		<category><![CDATA[compute engine]]></category>
		<category><![CDATA[google cloud]]></category>
		<category><![CDATA[openvpn]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[vpn]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=2024</guid>

					<description><![CDATA[<p>Aprenda a criar seu próprio servidor VPN de nível gratuito para realizar conexão VPN grátis com seus dispositivos.</p>
<p>O post <a href="https://viniciuspaes.com/servidor/tutorial-criar-servidor-openvpn-conectar-vpn-gratis/">Tutorial criar servidor OpenVPN e conectar com VPN grátis</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Saber o que é uma <strong>VPN</strong></li>
<li>Conhecer o software <strong>OpenVPN</strong></li>
<li>Criar um servidor nível gratuito configurado com OpenVPN para permitir conexão <strong>VPN grátis</strong> (vpn gratuita)</li>
</ul>
<h2>O que significa ou o que é uma VPN?</h2>
<p>A sigla <strong>VPN</strong> vem do inglês e significa &#8220;<strong>Virtual Private Network</strong>&#8220;, que pode ser traduzido como &#8220;<strong>Rede Virtual Privada</strong>&#8220;.</p>
<p>A utilização de uma <strong>conexão VPN</strong> permite encriptar e proteger seu tráfego de internet do seu dispositivo de origem até o seu <strong>servidor VPN</strong> de destino.<br />
Uma <strong>VPN</strong> é muito útil caso esteja utilizando uma rede pública para acesso a internet, pois a encriptação utilizada dificulta que hackers ou pessoas mal intencionadas rastreiem suas atividades e tentem roubar/interceptar dados pessoais.</p>
<p>Além do processo de proteção de navegação ponto a ponto (dispositivo origem até servidor VPN de destino), a <strong>VPN</strong> pode ser útil quando é necessário acessar websites que limitam tráfego para faixas de IP do seu próprio país.</p>
<p>Quando a NASA pousou um de seus robôs em marte, havia uma restrição no website para visualização das imagens disponibilizadas. A NASA utilizava possivelmente a faixa de IP para determinar quem tinha permissão de acesso. Um usuário no Brasil teria o acesso negado pra as imagens, por causa de seu IP de origem.</p>
<p>O site da GameStop também tinha, <strong>no passado</strong>, uma limitação de acesso por faixa de IP (testei atualmente e não verifiquei mais estas restrições). Quando acessado pelo Brasil, uma página de erro era mostrada.</p>
<p>Em uma conexão VPN, seu &#8220;IP&#8221; de origem passa a ser o IP do seu <strong>servidor VPN</strong>. Nos 2 exemplos acima, possivelmente não haveria uma restrição de acesso, caso o servidor VPN estivesse sediado nos Estados Unidos.</p>
<p>Em alguns países há restrição de acesso a determinados sites e aplicativos. Geralmente estas restrições são de nível nacional, aplicadas pelo Governo. Basicamente todo o tráfego de internet nacional é impedido de acessar determinados destinos. Porém, caso você tenha uma <strong>conexão VPN</strong> ativa, você consegue realizar uma &#8220;ponte&#8221; até o seu servidor e de lá acessar os sites e aplicativos que originalmente seriam bloqueados.</p>
<p>Em nível empresarial, algumas empresas possuem recursos que só podem ser acessados internamente, pela rede local. Agora imagine que novas filiais desta empresa foram criadas e estas também precisam de acesso aos recursos dentro desta rede centralizada. Uma opção é realizar uma conexão entre a matriz e as filiais por VPN. Ou até mesmo garantir acesso por VPN para usuários que precisam deste acesso &#8220;local&#8221;.</p>
<p>Em resumo, uma conexão VPN (caso corretamente configurada) faz um túnel seguro do seu dispositivo de origem (notebook, celular, desktop, etc) até seu <strong>servidor VPN</strong>. Todo seu &#8220;tráfego&#8221; tem uma nova porta de saída.</p>
<p>&nbsp;</p>
<h2>O que é o OpenVPN?</h2>
<p>Em uma <strong>conexão VPN</strong> usual, temos um dispositivo que quer se conectar (o cliente) e o computador configurado com software VPN que provê o serviço (servidor).<br />
Neste sentido, o software <strong>OpenVPN</strong> que provê as funcionalidades para que o computador funcione como um servidor VPN.</p>
<p>Interessante destacar que o <strong>OpenVPN</strong> é um software livre e de código aberto (open source). Além do exemplo acima de conexão virtual privada do tipo ponto a ponto, ele também permite no formato servidor para múltiplos clientes.</p>
<p>Esta conexão é configurada como um túnel criptografado, visando a segurança das informações trafegadas entre os computadores.</p>
<p>&nbsp;</p>
<h2>O que é uma VPN grátis?</h2>
<p>Basicamente é a possibilidade de se conectar de forma segura em um <strong>servidor VPN</strong> que provê o serviço de forma gratuita. Existem diversas empresas que prestam serviços de <strong>conexão VPN</strong> e em seus pacotes básicos, ofertam VPN grátis por um período de tempo ou por volume de dados trafegados.</p>
<p>Mas é interessante ter certeza que a empresa escolhida é confiável, senão o seu túnel seguro, pode ter esta brecha de segurança, e a própria empresa pode estar espiando seus dados.</p>
<p>Mas também é possível criar seu próprio <strong>servidor VPN</strong> de forma gratuita. Existem empresas que ofertam produtos em nuvem e possuem pacotes de nível gratuito. Uma opção é reservar um servidor gratuito (mesmo que por tempo limitado) e criar seu próprio servidor VPN. Que é a proposta deste passo a passo!</p>
<p>&nbsp;</p>
<h2>Passo a passo para criar servidor e conectar com VPN grátis</h2>
<p>Primeiramente, vamos mostrar as etapas necessárias de forma resumida:</p>
<ol>
<li>Criar um servidor de nível gratuito
<ul>
<li><strong><a href="https://viniciuspaes.com/linux/tutorial-setup-servidor-nivel-gratuito-amazon-aws/" target="_blank" rel="noopener">Servidor nível gratuito (Free Tier) na Amazon AWS</a></strong>; ou</li>
<li><strong><a href="https://viniciuspaes.com/servidor/tutorial-criar-servidor-nivel-gratuito-google-cloud-compute-engine/" target="_blank" rel="noopener">Servidor nível gratuito no Google Cloud Platform (VM no Compute Engine)</a></strong></li>
</ul>
</li>
<li>Instalar e configurar software <strong>OpenVPN</strong></li>
<li>Criar arquivo de conexão para cada cliente</li>
<li>Conectar dispositivo em sua <strong>VPN grátis</strong> com o OpenVPN Connect</li>
</ol>
<h3>Passo 1 &#8211; Criar servidor de nível gratuito</h3>
<p>Para garantir sua VPN grátis, o primeiro passo é o setup de um servidor de nível gratuito. Já abordamos em publicações anteriores o passo a passo para criar e configurar um servidor ofertado pela Amazon AWS e Google Cloud.</p>
<p>Desta forma, é necessário escolher em qual empresa deseja criar o servidor:</p>
<ul>
<li><strong><a href="https://viniciuspaes.com/linux/tutorial-setup-servidor-nivel-gratuito-amazon-aws/" target="_blank" rel="noopener">Como criar servidor nível gratuito Amazon AWS</a></strong>; ou</li>
<li><strong><a href="https://viniciuspaes.com/servidor/tutorial-criar-servidor-nivel-gratuito-google-cloud-compute-engine/" target="_blank" rel="noopener">Como criar servidor nível gratuito no Google Cloud</a></strong></li>
</ul>
<p>Neste passo a passo, utilizei o servidor configurado no Google Cloud Platform. Reservei a instância de VM no Compute Engine e escolhi os recursos dentro do nível gratuito, com uma instância do tipo e2-micro na região us-east1.</p>
<h3>Passo 2 &#8211; Conectar no servidor</h3>
<p>Com o servidor criado, é preciso então realizar a conexão SSH para que seja possível iniciar sua configuração. Neste primeiro exemplo, caso tenha o servidor no Google Cloud com IP externo <span style="color: #ff0000;"><strong>34.148.148.148</strong></span> e tenha já configurado sua chave SSH pública durante o setup com usuário/email da chave sendo <span style="color: #339966;"><strong>debian</strong></span>@exemplo.com (por exemplo, ao gerar sua chave SSH no seu computador pessoal, você informou que seu nome de usuário era <strong><span style="color: #339966;">debian</span></strong> e seu email era @exemplo.com, desta forma ao realizar o comando de ssh abaixo, utilize o seu nome de usuário que definiu na chave: neste exemplo seria <strong><span style="color: #339966;">debian</span></strong>), temos o comando para login:</p>
<pre>ssh <strong><span style="color: #339966;">debian</span></strong>@<span style="color: #ff0000;">34.148.148.148</span></pre>
<p>Caso tenha realizado o setup na <strong>Amazon AWS</strong> e gerado uma chave de conexão pela interface da <strong>AWS</strong>, sua conexão será similar a:</p>
<pre>ssh -i <span style="color: #ff0000;">ChaveVPCaws.pem</span> ubuntu@<span style="color: #ff0000;">34.148.148.148</span></pre>
<h3>Passo 3 &#8211; Instalar e configurar software <strong>OpenVPN</strong></h3>
<p>Como o propósito deste servidor é a funcionalidade de <strong>conexão VPN</strong>, precisamos de um software para prover o serviço. Como mencionado anteriormente, o <strong>OpenVPN</strong> é um software gratuito e de código aberto muito utilizado para prover o serviço de conexão VPN.</p>
<p>Um usuário criou um script automatizado muito útil para instalação e configuração semiautomática do <strong>OpenVPN</strong>. Para realizar o download do script diretamente do repositório, basta executar o comando:</p>
<pre>curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh</pre>
<p>Para garantir permissão de execução do script, é necessário executar o comando:</p>
<pre>chmod +x openvpn-install.sh</pre>
<p>Para executar o script é necessário utilizar o comando:</p>
<pre>sudo ./openvpn-install.sh</pre>
<p>Agora é necessário seguir as opções disponibilizadas pelo script.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2052" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica.png" alt="VPN grátis - executar o script instalação OpenVPN" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2053" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-2.png" alt="VPN grátis - executar o script instalação OpenVPN - endereço ip da rede interna, precisa trocar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2010" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-nova-vm-configurada-foco-ip-externo.png" alt="Servidor Google Cloud - dashboard da máquina virtual criada - foco no ip de conexão externo" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-nova-vm-configurada-foco-ip-externo.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-nova-vm-configurada-foco-ip-externo-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2054" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-3.png" alt="VPN grátis - executar o script instalação OpenVPN - endereço ip rede externa correto" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2055" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-4.png" alt="VPN grátis - executar o script instalação OpenVPN - habilitar suporte ipv6" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>A maioria das opções mostradas como padrão, são recomendadas para a maioria dos usuários. Lembrando que a porta padrão do <strong>OpenVPN</strong> é a:</p>
<pre>1194</pre>
<p>Você poderá alterar a porta para uma de sua escolha, ou até mesmo permitir que o script escolha uma porta aleatoriamente. Porém é importante anotar qual porta escolheu, pois vamos precisar abrir esta porta (regra do firewall) na interface do provedor (AWS ou Google Cloud), para permitir nossa conexão VPN (cliente-servidor).</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2056" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-5.png" alt="VPN grátis - executar o script instalação OpenVPN - escolher porta conexão" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-5.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-5-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2057" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-6.png" alt="VPN grátis - executar o script instalação OpenVPN - escolher protocolo de conexão: TCP UDP" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-6.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-6-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2058" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-7.png" alt="VPN grátis - executar o script instalação OpenVPN - escolher servidor DNS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-7.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-7-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Na escolha dos servidores DNS, por padrão o script aconselha utilizar os servidores do Adguard, que já possuem um filtro de bloqueio contra propagandas. Como prefiro ter a opção de habilitar e desabilitar o filtro contra propagandas (ads) e o servidor está configurado no backbone do Google Cloud, preferi utilizar por padrão os servidores do DNS do Google.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2059" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-8.png" alt="VPN grátis - executar o script instalação OpenVPN - habilitar compressão" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-8.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-8-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2060" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-9.png" alt="VPN grátis - executar o script instalação OpenVPN - customizar encriptação" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-9.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-9-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2061" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-10.png" alt="VPN grátis - executar o script instalação OpenVPN - finalizar instalação" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-10.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-10-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Neste momento o script já instalou e configurou o OpenVPN. No próximo passo será solicitado um nome para criação do primeiro cliente habilitado para conexão VPN. Neste exemplo, criei um cliente com o nome de &#8220;vinicius&#8221;.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2062" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-11.png" alt="VPN grátis - executar o script instalação OpenVPN - criar configuração de acesso para cliente" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-11.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-11-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2063" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-12.png" alt="VPN grátis - executar o script instalação OpenVPN - configurar senha no arquivo de conexão do cliente" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-12.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-12-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2064" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-13.png" alt="VPN grátis - executar o script instalação OpenVPN - instalação concluída" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-13.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-instalacao-semi-automatica-13-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Tudo pronto! OpenVPN criado e arquivo de configuração/acesso de cliente criado. Neste exemplo criei um cliente com o nome de &#8220;vinicius&#8221;, então o arquivo de configuração terá o nome:</p>
<pre>vinicius.ovpn</pre>
<p>Para criar novos arquivos de configuração para outros clientes, basta executar o script novamente. Quando o menu do script abrir, escolha a opção número 1:</p>
<p>Como mencionado, o nome escolhido para o cliente vai gerar um arquivo no formato:</p>
<pre><span style="color: #ff0000;">nomecliente</span>.ovpn</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2068" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-novamente-adicionar-novo-usuario-cliente.png" alt="VPN grátis - executar o script instalação configurar novo usuário cliente" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-novamente-adicionar-novo-usuario-cliente.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-executar-script-novamente-adicionar-novo-usuario-cliente-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4 &#8211; Copiar arquivo de configuração do cliente .ovpn para seu computador pessoal</h3>
<p>Com o OpenVPN instalado e configurado, assim como o arquivo de configuração do cliente, agora precisamos enviar este arquivo para nosso computador pessoal.</p>
<p>A opção mais simples é verificar o conteúdo do arquivo, copiar (control+c) e colar o conteúdo (control+v) em um arquivo do bloco de notas e salvar com a extensão .ovpn. Para verificar o conteúdo do arquivo de configuração, execute o comando:</p>
<pre>cat <span style="color: #ff0000;">nomecliente</span>.ovpn</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2045" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-verificar-arquivo-configuracao-vpn-cliente-criado.png" alt="VPN grátis - verificar conteúdo arquivo .ovpn de configuração de cliente criado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-verificar-arquivo-configuracao-vpn-cliente-criado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-verificar-arquivo-configuracao-vpn-cliente-criado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>A segunda opção é abrir outro prompt de comando no seu computador pessoal com sistema operacional Windows, e copiar o arquivo de configuração por SCP (ssh) do seu servidor para a pasta Downloads, utilizando o comando:</p>
<pre>scp <span style="color: #ff0000;">debian</span>@<span style="color: #ff0000;">34.148.148.148</span>:~/<span style="color: #ff0000;"><strong>nomecliente</strong></span>.ovpn "%userprofile%\Downloads"</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2047" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-transferir-arquivo-configuracao-ovpn-scp-windows.png" alt="VPN grátis - como transferir arquivo do servidor para o windows por scp" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-transferir-arquivo-configuracao-ovpn-scp-windows.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-transferir-arquivo-configuracao-ovpn-scp-windows-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso utilize linux ou Mac OS, abra o terminal e execute o comando (irá salvar o arquivo na pasta pessoal do seu usuário):</p>
<pre>scp <span style="color: #ff0000;">debian</span>@<span style="color: #ff0000;">34.148.148.148</span>:~/<span style="color: #ff0000;"><strong>nomecliente</strong></span>.ovpn ~/</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2050" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-transferir-arquivo-configuracao-ovpn-scp-mac.png" alt="VPN grátis - como transferir arquivo do servidor para o mac e linux por scp" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-transferir-arquivo-configuracao-ovpn-scp-mac.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-transferir-arquivo-configuracao-ovpn-scp-mac-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5 &#8211; Abrir a porta de conexão VPN no seu servidor</h3>
<p>No Google Cloud Platform, acesse a página de dashboard do Compute Engine / Instâncias de VM:</p>
<pre>https://console.cloud.google.com/compute/instances</pre>
<p>Nesta tela você irá ver uma linha com a instância da sua máquina virtual. No fim da linha haverá 3 pontos alinhados em pé. Ao clicar neles, um menu irá aparecer com algumas opções. Selecione a opção:</p>
<pre>Ver detalhes da rede</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2074" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-mais-opcoes.png" alt="Servidor Google Cloud - mais opções" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-mais-opcoes.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-mais-opcoes-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2073" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-mais-opcoes-ver-detalhes-de-rede.png" alt="Servidor Google Cloud - ver detalhes de rede" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-mais-opcoes-ver-detalhes-de-rede.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-mais-opcoes-ver-detalhes-de-rede-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Nesta nova página que abriu, haverá novas opções no menu lateral esquerdo. Clique na opção:</p>
<pre>Firewall</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2072" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-menu.png" alt="Servidor Google Cloud - detalhes de rede" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-menu.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-menu-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2071" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-menu-firewall.png" alt="Servidor Google Cloud - detalhes de rede - menu firewall" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-menu-firewall.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-menu-firewall-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora no menu superior, clique na opção:</p>
<pre>CRIAR REGRA DE FIREWALL</pre>
<p>As opções que precisa definir/selecionar:</p>
<ul>
<li>Nome: openvpn</li>
<li>Descrição: conexão vpn</li>
<li>Registros: desativado</li>
<li>Rede: default</li>
<li>Prioridade: 1000</li>
<li>Direção do tráfego: Entrada</li>
<li>Ação se houver correspondência: Allow (Permitir)</li>
<li>Destinos: <span style="color: #339966;"><strong>Todas as instâncias da rede</strong></span></li>
<li>Filtro de origem: Intervalos IPv4</li>
<li>Intervalos IPV4 de origem: <span style="color: #339966;"><strong>0.0.0.0/0</strong></span></li>
<li>Segundo filtro de origem: Nenhum</li>
<li>Filtro de destino: Nenhum</li>
<li>Protocolos e portas: Portas e protocolos especificados:
<ul>
<li>Selecione: <span style="color: #339966;"><strong>UDP</strong></span></li>
<li>Número porta: <strong><span style="color: #339966;">1194</span></strong></li>
</ul>
</li>
</ul>
<p>Agora basta clicar no botão:</p>
<pre>CRIAR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2081" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall.png" alt="Servidor Google Cloud - crir regra de firewall parte" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2080" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall-2.png" alt="Servidor Google Cloud - crir regra de firewall parte 2" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall-2-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2079" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall-3.png" alt="Servidor Google Cloud - crir regra de firewall parte 3" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall-3-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2078" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall-4.png" alt="Servidor Google Cloud - crir regra de firewall parte 4" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall-4-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2077" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall-5.png" alt="Servidor Google Cloud - crir regra de firewall parte 5 - criar regra" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall-5.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-detalhes-de-rede-criar-regra-firewall-5-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6 &#8211; Instalar e configurar o software OpenVPN Connect em seu dispositivo pessoal</h3>
<p>Para recapitular o que foi feito até o momento, já temos o servidor de nível gratuito configurado. Temos o <strong>OpenVPN</strong> corretamente instalado no servidor, já geramos o arquivo de configuração do cliente e criamos a regra de firewall para permitir a conexão pela porta <strong>1194</strong>. O próximo passo então é efetivamente realizar a <strong>conexão VPN</strong> do cliente até o servidor para verificar o funcionamento. Desta forma, vamos precisar do software &#8220;<strong>OpenVPN Connect</strong>&#8221; instalado no dispositivo &#8220;cliente&#8221;. Vamos importar neste software o arquivo de configuração (nomecliente.ovpn) para que possamos realizar a conexão.</p>
<p>Caso queira conectar um computador com Microsoft Windows na <strong>VPN</strong>, faça o Download:</p>
<ul>
<li><strong><a href="https://openvpn.net/client/client-connect-vpn-for-windows/" target="_blank" rel="nofollow noopener">Download OpenVPN Connect para Windows</a></strong></li>
</ul>
<p>Caso esteja em um computador configurado com o Mac OS na <strong>VPN</strong>, faça o Download:</p>
<ul>
<li><strong><a href="https://openvpn.net/client-connect-vpn-for-mac-os/" target="_blank" rel="nofollow noopener">Download OpenVPN Connect para Mac OS</a></strong></li>
</ul>
<p>Para o Sistema Operacional Linux conectado na <strong>VPN</strong>, faça o Download:</p>
<ul>
<li><a href="https://openvpn.net/cloud-docs/owner/connectors/connector-user-guides/openvpn-3-client-for-linux.html" target="_blank" rel="nofollow noopener"><strong>Download OpenVPN Connect para Linux</strong></a></li>
</ul>
<p>Caso queira utilizar a conexão <strong>VPN</strong> pelo celular ou tablet com <strong>Android</strong>, faça a instalação:</p>
<ul>
<li><a href="https://play.google.com/store/apps/details?id=net.openvpn.openvpn&amp;hl=en_US" target="_blank" rel="nofollow noopener"><strong>Download OpenVPN Connect Google Play &#8211; Celular e Tablet com Android</strong></a></li>
</ul>
<p>Caso queira utilizar a conexão <strong>VPN</strong> no <strong>iPhone</strong> ou <strong>ipad</strong>, acesse o aplicativo na apple store:</p>
<ul>
<li><strong><a href="https://apps.apple.com/br/app/openvpn-connect-openvpn-app/id590379981" target="_blank" rel="nofollow noopener">Download OpenVPN Connect Apple Store &#8211; Iphone e Ipad</a></strong></li>
</ul>
<p>&nbsp;</p>
<p>No exemplo abaixo, vou configurar a conexão do meu computador pessoal com Sistema Operacional Windows. Após instalar e executar o <strong>OpenVPN Connect</strong>, vamos ter uma tela semelhante a imagem abaixo. Como nossa configuração não é feita por URL e sim pelo arquivo <span style="color: #339966;"><strong>.ovpn</strong></span>, vamos clicar na opção:</p>
<pre>FILE</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2029" src="https://viniciuspaes.com/wp-content/uploads/2023/06/vpn-gratis-openvpn-connect-import-profile.png" alt="OpenVPN Connect - tela importar perfil - destaque para opção de importar por arquivo" width="400" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/vpn-gratis-openvpn-connect-import-profile.png 400w, https://viniciuspaes.com/wp-content/uploads/2023/06/vpn-gratis-openvpn-connect-import-profile-278x300.png 278w" sizes="auto, (max-width: 400px) 100vw, 400px" /></p>
<p>Agora estamos na aba de importação do perfil de configuração por arquivo. Você pode arrastar o arquivo <span style="color: #339966;"><strong>.ovpn</strong></span> gerado e soltar dentro do campo do file upload, ou selecionar o seu arquivo, clicando no botão:</p>
<pre>BROWSE</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2031" src="https://viniciuspaes.com/wp-content/uploads/2023/06/vpn-gratis-openvpn-connect-import-profile-upload-arquivo-configuracao.png" alt="OpenVPN Connect - tela importar perfil por arquivo ovpn" width="400" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/vpn-gratis-openvpn-connect-import-profile-upload-arquivo-configuracao.png 400w, https://viniciuspaes.com/wp-content/uploads/2023/06/vpn-gratis-openvpn-connect-import-profile-upload-arquivo-configuracao-278x300.png 278w" sizes="auto, (max-width: 400px) 100vw, 400px" /></p>
<p>Caso o arquivo de importação de perfil tenha sido carregado corretamente, você será redirecionado para a tela de perfis. Neste exemplo, temos o perfil <span style="color: #339966;"><strong>vinicius</strong> </span>configurado:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2033" src="https://viniciuspaes.com/wp-content/uploads/2023/06/vpn-gratis-openvpn-connect-perfil-configurado.png" alt="OpenVPN Connect - Novo perfil carregado" width="400" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/vpn-gratis-openvpn-connect-perfil-configurado.png 400w, https://viniciuspaes.com/wp-content/uploads/2023/06/vpn-gratis-openvpn-connect-perfil-configurado-278x300.png 278w" sizes="auto, (max-width: 400px) 100vw, 400px" /></p>
<h3>Passo 7 &#8211; Ativar o serviço de VPN Grátis configurado</h3>
<p>Nesta etapa já temos todo o setup configurado. Para habilitar uma conexão segura por <strong>VPN</strong> em seu dispositivo, basta clicar no botão ao lado do seu perfil. No exemplo abaixo, temos a <strong>conexão VPN</strong> estabelecida para o cliente &#8220;<span style="color: #339966;"><strong>vinicius</strong></span>&#8220;.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2034" src="https://viniciuspaes.com/wp-content/uploads/2023/06/vpn-gratis-openvpn-connect-perfil-configurado-conexao-ativa.png" alt="OpenVPN Connect - Conexão VPN grátis habilitada" width="400" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/vpn-gratis-openvpn-connect-perfil-configurado-conexao-ativa.png 400w, https://viniciuspaes.com/wp-content/uploads/2023/06/vpn-gratis-openvpn-connect-perfil-configurado-conexao-ativa-278x300.png 278w" sizes="auto, (max-width: 400px) 100vw, 400px" /></p>
<p><strong><span style="color: #ff9900;">Atenção!</span></strong> Caso receba algum problema de conexão, possivelmente não configurou corretamente a abertura da porta do OpenVPN no Firewall na interface do servidor, como descrito no Passo 5!</p>
<p>&nbsp;</p>
<p>Lembrando que a <strong>conexão VPN</strong> possivelmente será mais lenta que sua internet contratada, um dos fatores é o poder de processamento do servidor de <strong>vpn grátis</strong>. Neste exemplo, eu tenho um plano de internet de 500/250Mbps, que a provedora costuma entregar algo perto de 750/350Mbps. Minha latência varia entre 20-30ms (já não é lá muito boa). Segue abaixo os testes de velocidade executados com a conexão VPN ativa:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2036" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-speedtest-e2micro.png" alt="VPN grátis - teste velocidade openvpn google cloud e2-micro - speedtest" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-speedtest-e2micro.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-speedtest-e2micro-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /> <img loading="lazy" decoding="async" class="alignnone size-full wp-image-2038" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-speed-cloudflare-e2micro.png" alt="VPN grátis - teste velocidade openvpn google cloud e2-micro - speed cloudflare" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-speed-cloudflare-e2micro.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-speed-cloudflare-e2micro-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /> <img loading="lazy" decoding="async" class="alignnone size-full wp-image-2037" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-fast-test-e2micro.png" alt="VPN grátis - teste velocidade openvpn google cloud e2-micro - fast.com" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-fast-test-e2micro.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-openvpn-fast-test-e2micro-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Como é possível verificar nos testes acima, minha velocidade de conexão foi limitada, principalmente pelo poder de processamento do servidor, como era esperado. Minha latência também subiu para algo perto de 160ms, que faz sentido, pois a minha rota agora sai pelo servidor sediado nos Estados Unidos (mais longe geograficamente). Para termos de comparação, se executo um ping do meu computador para o servidor <strong>VPN</strong>, com a VPN desligada, tenho algo perto de 150ms de latência.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2044" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-ping-servidor-vpn-gratis.png" alt="VPN grátis - ping servidor vpn com a conexão vpn desligada" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-ping-servidor-vpn-gratis.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-ping-servidor-vpn-gratis-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Conclusão</h2>
<p>Com este tutorial foi possível criar de forma bem simples um servidor VPN de nível gratuito utilizando o software OpenVPN. É uma opção viável para se obter uma <strong>VPN grátis</strong> e segura. Existem diversas empresas que ofertam também os serviços de VPN e com muitos mais recursos, onde você pode mudar sua rota de saída para diferentes países e cidades. Os planos pagos geralmente ainda garantem conexões mais rápidas e para múltiplos clientes, sendo uma opção caso queira implantar uma <strong>VPN</strong> para todo seu tráfego da rede doméstica, configurando esta opção diretamente em seu roteador.</p>
<p>&nbsp;</p>
<p>Caso tenha alguma dúvida ou sugestão na implantação de uma VPN grátis, basta informar aí nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/servidor/tutorial-criar-servidor-openvpn-conectar-vpn-gratis/">Tutorial criar servidor OpenVPN e conectar com VPN grátis</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/servidor/tutorial-criar-servidor-openvpn-conectar-vpn-gratis/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial criar servidor nível gratuito no Google Cloud / Compute Engine</title>
		<link>https://viniciuspaes.com/servidor/tutorial-criar-servidor-nivel-gratuito-google-cloud-compute-engine/</link>
					<comments>https://viniciuspaes.com/servidor/tutorial-criar-servidor-nivel-gratuito-google-cloud-compute-engine/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Fri, 23 Jun 2023 16:57:24 +0000</pubDate>
				<category><![CDATA[servidor]]></category>
		<category><![CDATA[compute engine]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google cloud]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[máquina virtual]]></category>
		<category><![CDATA[VM]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=1972</guid>

					<description><![CDATA[<p>Confira o passo a passo para realizar o setup de nível gratuito de um servidor (VM) no Google Cloud Platform / Compute Engine</p>
<p>O post <a href="https://viniciuspaes.com/servidor/tutorial-criar-servidor-nivel-gratuito-google-cloud-compute-engine/">Tutorial criar servidor nível gratuito no Google Cloud / Compute Engine</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Conhecer o <strong>Google Cloud Platform</strong></li>
<li>Entender a diferença do <strong>nível gratuito</strong> e <strong>teste gratuito</strong> do <strong>Google Cloud</strong></li>
<li>Passo a passo para criar um servidor no nível gratuito no <strong>google cloud</strong> &#8211; <strong>máquina virtual</strong> do <strong>compute engine</strong></li>
</ul>
<h2>O que é o Google Cloud</h2>
<p>O Google Cloud é uma plataforma de serviços de computação em nuvem. Assim como a Amazon possui o AWS (Amazon Web Services) e a Microsoft possui o Azure, o Google possui o <strong>Google Cloud Platform</strong>.</p>
<p>O <strong>Google Cloud Platform</strong> foi criado em 2008, e oferta uma diversidade de ferramentas e recursos em nuvem, utilizando a mesma infraestrutura que o próprio Google utiliza em seus produtos e serviços.</p>
<h2>O que é o nível gratuito e o teste gratuito do Google Cloud Platform?</h2>
<p>Basicamente o <strong>nível gratuito</strong> fornece acesso gratuito, porém limitado, a alguns produtos e serviços do Google. O usuário precisa estar elegível para o nível gratuito, para não receber cobranças.</p>
<p>Na documentação do <strong>Google Cloud</strong> ele deixa claro que os usuários elegíveis não podem ter nenhum contrato de preços negociados com google, precisa estar no período de <strong>avaliação gratuita</strong> e precisa ter dados de faturamento configurados e em situação regular. Eles deixam claro que, se em algum momento o usuário deixar de cumprir as metas estabelecidas do nível gratuito, será cobrado pelos serviços.</p>
<p>&nbsp;</p>
<p>O <strong>teste gratuito</strong> é basicamente um programa do <strong>Google Cloud</strong> que fornece crédito gratuito para utilização da plataforma. A ideia do teste gratuito é fornecer, dentro de um período de tempo, créditos para que o usuário possa se familiarizar com a plataforma e aprender a utilizá-la.</p>
<p>Porém existem alguns critérios para o período de teste gratuito, o usuário não pode ter sido um cliente pagante anteriormente e ser a primeira vez que se inscreve no teste gratuito. Lembrando que também é necessário ter uma conta de faturamento configurada (com cartão de crédito cadastrado) para iniciar o <strong>período de teste gratuito</strong>.</p>
<h2>Passo a passo para criar uma máquina virtual (servidor) no nível gratuito no google cloud / compute engine</h2>
<p>Primeiramente vamos mostrar um resumo dos passos necessários:</p>
<ol>
<li>Acessar a url da plataforma do google Cloud: https://cloud.google.com/compute</li>
<li>Será possível então clicar no botão para realizar uma avaliação gratuita
<ul>
<li>Preencha os dados pessoais e de faturamento</li>
<li>Responda o pequeno questionário no primeiro acesso</li>
</ul>
</li>
<li>No menu, selecione a opção Compute Module, em seguida Instância de VM (Máquina Virtual)</li>
<li>Ao selecionar a região da Máquina Virtual, tenha cuidado para selecionar as regiões que o nível gratuito abrange para não ser cobrado
<ul>
<li>A instância de nível gratuito atualmente é a <strong>e2-micro</strong></li>
<li>As regiões disponíveis no nível gratuito (na data da escrita deste tutorial) são: Oregon: <strong>us-west1</strong>, Iowa: <strong>us-central1</strong>, Carolina do Sul: <strong>us-east1</strong></li>
</ul>
</li>
<li>Opcional: Informe sua chave pública do SSH</li>
<li>Será mostrado um valor estimado do custo da máquina virtual, mas como está no nível gratuito, não será cobrado se atender todas as exigências do programa.</li>
</ol>
<h3>Passo 1</h3>
<p>Neste primeiro passo, vamos supor que já possui uma conta no gmail, ou seja, já possui uma conta no Google. Em seguida, precisamos acessar a url do Google Cloud Platform:</p>
<pre>https://cloud.google.com/compute</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1980" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial.png" alt="Servidor Google Cloud - tela inicial nível gratuito compute engine" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Nesta página inicial já deve aparecer a opção para realizar um teste gratuito no Google Cloud. Dependendo na região que estiver acessando e da data, é possível que apareça também um cupom de U$300 para ser utilizado em até 3 meses. Neste tutorial vamos focar no nível gratuito (que é diferente do teste gratuito de 90 dias), então se realizar o setup do passo a passo, não será cobrado nada, e nem será descontado nenhum valor do seu cupom de U$300.</p>
<p>Clique na opção:</p>
<pre>Comece gratuitamente</pre>
<p>ou</p>
<pre>Faça uma avaliação gratuita do Compute Engine</pre>
<h3>Passo 2</h3>
<p>Neste primeiro acesso será necessário preencher algumas informações pessoais. Em seguida também será necessário informar algumas informações sobre faturamento. Sobre o faturamento, é basicamente informar os dados de um cartão de crédito válido.</p>
<p>Pode parecer estranho o google oferecer o serviço de teste grátis ou nível grátis e pedir para preencher dados de faturamento e informações sobre cartão de crédito. Mas a justificativa é para evitar fraudes. O Google garante que não irá fazer nenhuma cobrança, mesmo tendo o cartão registrado, e qualquer cobrança só será realizada caso o usuário faça um upgrade da conta e permita o faturamento.</p>
<p>Uma dica é criar um cartão virtual no Nubank ou outro banco digital somente para validar o faturamento, e após este processo, imediatamente bloquear o cartão. Desta forma evita qualquer dor de cabeça.</p>
<p>Após preencher todos os dados, clique no botão:</p>
<pre>INICIAR MEU TESTE GRATUITO</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1981" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta.png" alt="Servidor Google Cloud - informações pessoais e faturamento" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1982" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta-2.png" alt="Servidor Google Cloud - informações pessoais e faturamento - 2" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta-2-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1983" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta-3.png" alt="Servidor Google Cloud - informações pessoais e faturamento - 3" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta-3-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1984" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta-4.png" alt="Servidor Google Cloud - informações pessoais e faturamento - 4" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta-4-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1985" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta-5.png" alt="Servidor Google Cloud - informações pessoais e faturamento - 5" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta-5.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-tela-inicial-confirmar-informacoes-conta-5-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1987" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-faturamento.png" alt="Servidor Google Cloud - configurando faturamento" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-faturamento.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-faturamento-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3</h3>
<p>Após o passo anterior, caso seja seu primeiro acesso no Google Cloud e tenha ativado o teste gratuito, um pequeno formulário será apresentado.</p>
<p>Basicamente são perguntas para entender o seu perfil de usuário, suas necessidades e qual motivo principal está utilizando o Google Cloud.</p>
<p>Basta responder com o que mais se aproxima de suas necessidades, mesmo que esteja acessando o portal apenas por curiosidade, para verificar os serviços escolhidos.</p>
<p>Após responder todas as perguntas, clique em:</p>
<pre>CONCLUÍDO</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1988" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-primeiro-acesso.png" alt="Servidor Google Cloud - questionário inicial - primeiro acesso - parte 1" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-primeiro-acesso.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-primeiro-acesso-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1989" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-primeiro-acesso-2.png" alt="Servidor Google Cloud - questionário inicial - primeiro acesso - parte 2" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-primeiro-acesso-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-primeiro-acesso-2-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1990" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-primeiro-acesso-3.png" alt="Servidor Google Cloud - questionário inicial - primeiro acesso - parte 3" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-primeiro-acesso-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-primeiro-acesso-3-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4</h3>
<p>Se não tiver ativado a <strong>API do Compute Engine</strong> ainda (primeiro acesso), clique no botão:</p>
<pre>ATIVAR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1992" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-ativar-compute-engine.png" alt="Servidor Google Cloud - ativar compute engine API" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-ativar-compute-engine.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-ativar-compute-engine-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>Após executar todos os passos anteriores, você estará na página principal do <strong>Google Cloud</strong>, também conhecida como console.</p>
<p>Como o objetivo é criar um servidor de nível gratuito no Google Cloud, precisamos primeiramente acessar o menu no canto superior esquerdo.</p>
<p>No menu, primeiramente acesse a opção:</p>
<pre>Compute Engine</pre>
<p>Em seguida clique na opção de:</p>
<pre>Instâncias de VM</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1993" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-menu-compute-engine-instancias-vm.png" alt="Servidor Google Cloud - menu compute engine - instancias vm" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-menu-compute-engine-instancias-vm.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-menu-compute-engine-instancias-vm-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6</h3>
<p>Agora você está na tela principal das <strong>Instâncias de Máquina Virtual do Google Cloud</strong>. É uma tela resumo onde mostra informações das máquinas virtuais que possui.<br />
Como ainda não temos nenhuma configurada, vamos clicar na opção:</p>
<pre>CRIAR INSTÂNCIA</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1996" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-criar-instancias-vm.png" alt="Servidor Google Cloud - dashboard instâncias de máquina virtual" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-criar-instancias-vm.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-criar-instancias-vm-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7</h3>
<p>Estamos agora na página para criar uma nova instância de máquina virtual no <strong>compute engine</strong> do Google Cloud. A parte mais importante desta etapa é verificar os limites de recursos para ficar dentro do nível gratuito, caso seja seu interesse.</p>
<p>Na data da escrita deste tutorial, o Google ofertava 3 regiões diferentes para o nível gratuito, sendo elas:</p>
<ul>
<li>Região: <strong>us-west1 </strong>(zona a, b, c &#8211; Cidade de <strong>The Dalles</strong>, Estado do Oregon &#8211; Estados Unidos da América)</li>
<li>Região: <strong>us-central1 </strong>(zona a, b, c, f &#8211; Cidade de <strong>Council Bluffs</strong>, Estado de Iowa &#8211; Estados Unidos da América)</li>
<li>Região: <strong>us-east1</strong> (zona b, c, d &#8211; Cidade de <strong>Moncks Corner</strong>, Estado da Carolina do Sul &#8211; Estados Unidos da América)<strong><br />
</strong></li>
</ul>
<p>Interessante verificar a latência de cada região e zona comparado com seu local de origem, para verificar qual local atende melhor suas necessidades. Lembrando que geograficamente a cidade de <strong>Moncks Corner na região us-east1</strong>, é a mais próxima do Brasil, e possivelmente terá latência menor.</p>
<p>Outro ponto é garantir que sua instância (VM) tem os recursos que estão cobertos pelo nível gratuito, na data de criação deste tutorial, a instância do nível gratuito é a <strong>e2-micro</strong>. O nível gratuito garante também 30GB de espaço em disco.</p>
<p>Para ter certeza que está elegível para o nível gratuito, lembre-se de conferir na página oficial do google:</p>
<ul>
<li><strong><a href="https://cloud.google.com/free/docs/free-cloud-features?hl=pt-br" target="_blank" rel="nofollow noopener">Google Cloud Platform nível gratuito e teste gratuito</a>. </strong></li>
</ul>
<p>A necessidade de sempre conferir os recursos disponíveis do <strong>nível gratuito</strong> é que o Google costuma atualizar as diretrizes, então é bom ficar atento.</p>
<p>Nestas primeiras opções disponíveis na criação da instância, temos a opção de definir um nome de identificação para ela. No meu caso, optei por chamar a mesma de &#8220;vpn&#8221;, pois pretendo configurar o servidor (VM) com openvpn futuramente. Escolhi então a região que apresentou a menor latência:</p>
<pre><strong>us-east1</strong></pre>
<p>Para a definição de zona, escolhi a primeira opção disponível, que era a zona:</p>
<pre><strong>us-east1-b</strong></pre>
<p>Configurei a VM para ser de uso geral também, para atender a especificação de nível gratuito.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1997" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm.png" alt="Servidor Google Cloud - tela inicial criar nova instância" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1998" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-2.png" alt="Servidor Google Cloud - tela criar nova instância - parte 1" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-2-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>A próxima opção é definir a série da instância. Basicamente cada grupo desta série possui especificação de recursos distintos. A instância com menos recursos disponíveis é também a ofertada para o nível gratuito. No meu caso então, escolhi a série:</p>
<pre>E</pre>
<p>E no tipo da máquina, selecionei:</p>
<pre>e2-micro (2 vCPU, 1GB de memória)</pre>
<p>Vou utilizar o servidor em linha de comando, então não vou ativar dispositivo de exibição.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1999" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-3.png" alt="Servidor Google Cloud - tela criar nova instância - parte 2" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-3-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Não vou utilizar serviço de VM confidencial e nem vou implantar um contêiner. Então não vou alterar essas configurações.</p>
<p>A parte de Disco de inicialização fará um resumo da máquina virtual e imagem de Sistema Operacional instalado.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2000" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-4.png" alt="Servidor Google Cloud - tela criar nova instância - parte 3" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-4-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>A parte de contas de serviço vou deixar na configuração padrão.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2001" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-5.png" alt="Servidor Google Cloud - tela criar nova instância - parte 4" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-5.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-5-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Em escopos de acesso, deixei a opção:</p>
<pre>Permitir acesso padrão</pre>
<p>Em firewall, deixei habilitado acesso http e https. Basicamente será criado entradas no firewall para as portas 80 e 443. Mas você poderá criar manualmente depois. Se for utilizar o servidor como um servidor de páginas, fará sentido deixar estas portas abertas. Ou se for utilizar estas portas para outro tipo de tráfego, também vale a pena deixar habilitadas.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2002" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-6.png" alt="Servidor Google Cloud - tela criar nova instância - parte 5" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-6.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-6-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Como mencionei, pretendo futuramente testar o openvpn, então em nome de host eu escolhi vpn.server. Faça a escolha de acordo com suas necessidades. Em configuração de desempenho da rede, não fiz modificações. Em interface de rede, deixei as configurações padrão também.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2003" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-7.png" alt="Servidor Google Cloud - tela criar nova instância - parte 6" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-7.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-7-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Não realizei alterações na interface de rede e nem nos discos.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2004" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-8.png" alt="Servidor Google Cloud - tela criar nova instância - parte 7" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-8.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-8-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Nas opções de segurança, ativei todas as possíveis.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2005" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-9.png" alt="Servidor Google Cloud - tela criar nova instância - parte 8" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-9.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-9-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Recomendo já configurar uma chave SSH pública, para ter a liberdade de realizar conexão diretamente no servidor. Caso tenha dúvida em como gerar uma chave SSH, é só seguir os passos deste tutorial:</p>
<ul>
<li><strong><a href="https://viniciuspaes.com/linux/tutorial-criar-chave-ssh-key-gitlab-github-mac-osx-linux-ubuntu/" target="_blank" rel="noopener">Tutorial como criar chave SSH (pública e privada)</a></strong></li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2006" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-10.png" alt="Servidor Google Cloud - tela criar nova instância - parte 9" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-10.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-10-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Não vou realizar alterações nas próximas opções, então é possível ir até o fim da página e clicar no botão:</p>
<pre>Criar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2008" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-12.png" alt="Servidor Google Cloud - tela criar nova instância - parte 11" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-12.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-12-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2007" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-11.png" alt="Servidor Google Cloud - tela criar nova instância - parte 10" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-11.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-configurando-nova-vm-11-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Lembrando que é comum aparecer uma estimativa de custos para a criação do <strong>servidor</strong> (VM). Mas como estamos selecionando recursos dentro do nível gratuito, você não será cobrado. Mas lembre-se de confirmar se selecionou todas as opções elegíveis para o <strong>nível gratuito</strong>.</p>
<h3>Passo 8</h3>
<p>Após clicar no botão para criar a <strong>máquina virtual</strong>, você será redirecionado de volta para a tela de resumo das máquinas virtuais.</p>
<p>Será possível então perceber que agora a máquina virtual criada está disponível, sendo possível também verificar o status de funcionamento, o IP interno (conexão entre VM&#8217;s distintas) e o IP externo (para conexões externas).</p>
<p>Lembre-se que poderá abrir portas adicionais no firewall. Mas a porta 25 (smtp) é bloqueada por padrão, pois é a porta utilizada em servidores de email. Para evitar problemas em que usuários mal intencionados criam servidores de spam, por padrão esta funcionalidade é desativada no Google Cloud Platform.</p>
<p>Tudo pronto, <strong>servidor de nível gratuito</strong> criado e funcional! Caso tenha configurado uma chave SSH pública, basta conectar no servidor com seu usuário configurado na chave com o ip externo.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2009" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-nova-vm-configurada.png" alt="Servidor Google Cloud - dashboard da máquina virtual criada - servidor" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-nova-vm-configurada.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-nova-vm-configurada-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2010" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-nova-vm-configurada-foco-ip-externo.png" alt="Servidor Google Cloud - dashboard da máquina virtual criada - foco no ip de conexão externo" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-nova-vm-configurada-foco-ip-externo.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-nova-vm-configurada-foco-ip-externo-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Conclusão</h2>
<p>Neste passo a passo percebemos que o setup para um servidor (VM) no <strong>Google Cloud Platform</strong> é bem simples. Na data de criação deste tutorial, o Google ofertava um cupom de U$300 para ser utilizado dentro do período de teste gratuito. Mas como o objetivo do tutorial era o setup de uma VM de nível gratuito, verificamos na documentação quais eram os critérios e qual tipo de <strong>máquina virtual</strong> estava disponível. Uma dica para ter certeza que escolheu os recursos disponíveis no nível gratuito é verificar a página de faturamento.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2013" src="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-pagina-teste-gratuito.png" alt="Servidor Google Cloud - dashboard evidenciando os custos e créditos disponíveis" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-pagina-teste-gratuito.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/google-cloud-criar-maquina-virtual-gratuita-pagina-teste-gratuito-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Na imagem acima, podemos verificar que não consumimos nenhum crédito do teste gratuito (~U$300), pois selecionamos com êxito os recursos de nível gratuito.</p>
<p>&nbsp;</p>
<p>Espero que tenha gostado deste tutorial para realizar o setup de uma VM no Google Compute Engine. Caso tenha alguma dúvida ou sugestão, escreve aí nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/servidor/tutorial-criar-servidor-nivel-gratuito-google-cloud-compute-engine/">Tutorial criar servidor nível gratuito no Google Cloud / Compute Engine</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/servidor/tutorial-criar-servidor-nivel-gratuito-google-cloud-compute-engine/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como criar câmera de time lapse no Raspberry Pi</title>
		<link>https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-camera-time-lapse-raspberry-pi/</link>
					<comments>https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-camera-time-lapse-raspberry-pi/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Mon, 19 Jun 2023 14:35:18 +0000</pubDate>
				<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[time lapse]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=1879</guid>

					<description><![CDATA[<p>Aprenda o passo a passo para criar uma câmera de time lapse com o Raspberry Pi!</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-camera-time-lapse-raspberry-pi/">Tutorial como criar câmera de time lapse no Raspberry Pi</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<p>Configurar o <strong>Raspberry Pi</strong> para funcionar como uma câmera de time lapse.</p>
<p>Neste exemplo utilizei a câmera module v2, mas também é funcional com a versão v1 e câmeras USB compatíveis. Outras versões do Raspberry Pi também são funcionais, neste teste optei pela versão Zero W por ser mais compacta e o case já permitir o acoplamento do módulo da câmera.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1886" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-zero-w-com-case-oficial.jpg" alt="Raspberry Pi Zero W - Configurado como Câmera de Time Lapse" width="384" height="216" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-zero-w-com-case-oficial.jpg 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-zero-w-com-case-oficial-300x169.jpg 300w" sizes="auto, (max-width: 384px) 100vw, 384px" /></p>
<h2>O que é um time lapse?</h2>
<p>Neste contexto de utilizar o <strong>Raspberry Pi</strong> com uma câmera fotográfica, o time lapse é o processo de fotografar o mesmo local em janelas de tempo pré determinadas. Em seguida, é possível juntar estas imagens e formar um vídeo.</p>
<p>O efeito do time lapse é muito interessante, caso acople a câmera para captar uma paisagem, o vídeo gerado mostra evoluções ao longo do tempo. Existem vários vídeos interessantes de time lapse mostrando a evolução de uma paisagem diante as estações do ano. O time lapse também é utilizado para monitorar obras da construção civil e mostrar sua evolução. Na agricultura também pode ser utilizado acompanhando o crescimento da lavoura. O efeito é sempre o mesmo, captar toda a mudança que pode ter levado meses, em apenas alguns minutos.</p>
<h2>Requisitos para criar câmera de <strong>time lapse</strong> com o <strong>Raspberry Pi</strong></h2>
<p class="rimg"><img loading="lazy" decoding="async" class="alignnone wp-image-1889" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-zero-w-com-case-oficial-powerbank.jpg" alt="Raspberry Pi Zero W - Configurado como Câmera de Time Lapse e com suporte de energia por powerbank" width="324" height="436" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-zero-w-com-case-oficial-powerbank.jpg 432w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-zero-w-com-case-oficial-powerbank-223x300.jpg 223w" sizes="auto, (max-width: 324px) 100vw, 324px" /></p>
<p>Para seguir este tutorial, é necessário que tenha um <strong>Raspberry Pi</strong> e também um módulo de câmera fotográfica compatível. Lembrando que o Raspberry possui 3 módulos de câmeras oficiais o v1, v2 e v3 (além da HQ camera) disponíveis para serem adquiridos.</p>
<p>Também é possível utilizar câmeras, webcams e módulos de outros fabricantes (arducam, por exemplo).</p>
<p>Mas para seguir este passo a passo, estes módulos de câmera precisam ser compatíveis com o <strong>Raspberry Pi</strong> e com a biblioteca do raspistill.</p>
<div style="clear: both;"></div>
<h3>Tutorial passo a passo para configurar um <strong>raspberry pi</strong> como uma câmera fotográfica de time lapse</h3>
<p>Um resumo para configurar um raspberry como camera de time lapse:</p>
<ol>
<li>Instalar câmera no Raspberry</li>
<li>Se conectar no Raspberry Pi: com teclado e monitor ou por SSH</li>
<li>Executar o raspi-config e habilitar o módulo de câmera</li>
<li>Criar um shell scrip configurado com o raspistill e timestamp para realizar as fotografias e inserir os nomes numéricos corretamente</li>
<li>Criar um cron job para executar o shell script do item acima em intervalos de tempo pré-determinados (a cada 1 minutos por exemplo)</li>
</ol>
<h3>Passo 1 &#8211; Conexão ao <strong>Raspberry Pi</strong></h3>
<p>O primeiro passo é se conectar ao seu Raspberry por conexão SSH. Caso não tenha um nome de usuário e senha configurados, conecte pelo usuário padrão. Neste exemplo nosso raspberry está configurado no ip <span style="color: #ff0000;">192.168.1.52</span>. Então o comando para conexão será:</p>
<pre> ssh <span style="color: #339966;">pi</span>@<span style="color: #ff0000;">192.168.1.52</span></pre>
<p>A senha padrão do Raspbian recém instalado é:</p>
<pre>raspberry</pre>
<p>Um alerta, por padrão o raspberry não vem com o servidor SSH habilitado. Na hora de salvar a imagem do sistema operacional no cartão SD pelo <strong>Raspberry Pi</strong> Imager é possível solicitar que o servidor SSH fique habilitado já no primeiro boot.</p>
<h3><span style="color: #3366ff;">Passo 2</span> (Opcional) &#8211; Configurar servidor de arquivos</h3>
<p>Este é um passo opcional, mas garante grande facilidade na utilização do seu raspberry como uma câmera de <strong>time lapse</strong>. Configurando a pasta onde guarda as fotografias como uma pasta compartilhada pela rede, permite facilmente acessar suas imagens e movê-las para seu computador.</p>
<p>Caso tenha interesse nesta feature, basta seguir este tutorial opcional:</p>
<ul>
<li><strong><a href="https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-arquivos-nas-raspberry-pi-samba-afp/">Tutorial como criar um servidor de arquivos NAS com Raspberry Pi – SMB e AFP</a></strong></li>
</ul>
<h3>Passo 3 &#8211; Habilitar o módulo de câmera</h3>
<p>Caso esteja utilizando o Camera Module, é necessário verificar se o mesmo está ativado. Lembrando que estamos partindo do princípio que você já tem o sistema operacional Raspbian instalado no seu <strong>Raspberry Pi</strong>. Execute o comando para abrir o gerenciador do raspi-config:</p>
<pre>sudo raspi-config</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1919" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-raspi-config.png" alt="Raspberry Pi Time Lapse - Executar o raspi-config" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-raspi-config.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-raspi-config-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso o comando acima não seja encontrado, é possível que esteja utilizando uma outra imagem do sistema operacional no Raspberry e não o Raspbian. Caso esteja utilizando o Ubuntu, é possível instalar o raspi-config com o comando:</p>
<pre>sudo apt install raspi-config</pre>
<p>Quando o menu no raspi-config abrir, caminhe no menu até a opção:</p>
<pre>3 Interface Options</pre>
<p>Em seguida selecione o item:</p>
<pre>I1 Legacy Camera</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1920" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-raspi-config-interface-options.png" alt="Raspberry Pi Time Lapse - Executar o raspi-config - ir menu interface options" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-raspi-config-interface-options.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-raspi-config-interface-options-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1921" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-raspi-config-interface-options-enable-legacy-camera.png" alt="Raspberry Pi Time Lapse - Executar o raspi-config - habilitar legacy camera" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-raspi-config-interface-options-enable-legacy-camera.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-raspi-config-interface-options-enable-legacy-camera-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4 &#8211; Testar a câmera</h3>
<p>Após realizar os passos anteriores, é possível então realizar uma fotografia de teste.</p>
<p>Ao executar o comando abaixo, vamos solicitar que o Raspberry tire 1 fotografia e salve a mesma em arquivo. Se estiver conectado diretamente no raspberry (com teclado e monitor), sem ser por conexão SSH, a imagem da câmera irá aparecer na tela por alguns segundos.</p>
<pre>raspistill -o fotografia.jpg</pre>
<p>Para verificar se o arquivo foi criado, é possível pesquisar no diretório e verificar os arquivos presentes:</p>
<pre>ls -l</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1922" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-teste-camera.png" alt="Raspberry Pi Time Lapse - realizar uma fotografia para testar a camera" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-teste-camera.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-teste-camera-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso tenha configurado o servidor de arquivos em rede (NAS) no seu raspberry, como descrito no <span style="color: #3366ff;">Passo 2</span> deste tutorial, basta mover a imagem para sua pasta compartilhada, para que possa verificar a mesma em seu computador:</p>
<pre><span style="color: #3366ff;">mv fotografia.jpg /home/fileserver/shared</span></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1924" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-mover-fotografia-pasta-compartilhada-nas.png" alt="Raspberry Pi Time Lapse - Mover foto criada para pasta compartilhada do NAS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-mover-fotografia-pasta-compartilhada-nas.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-mover-fotografia-pasta-compartilhada-nas-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso não tenha o servidor de arquivo e gostaria de verificar a imagem criada em seu pc, é possível enviar a mesma por ssh (scp). Em seu computador pessoal (com Windows, Linux ou Mac) abre o prompt de comando (caso windows) ou o terminal (caso linux ou Mac). Neste exemplo vamos conectar no Raspberry com o usuário padrão “pi” e o mesmo está configurado no IP “192.168.1.52”. Lembre-se de atualizar estas informações para as definidas em seu raspberry.</p>
<p>Caso utilize o windows, abra o prompt e digite o comando:</p>
<pre>scp <span style="color: #339966;">pi</span>@<span style="color: #ff0000;">192.168.1.52</span>:/home/pi/fotografia.jpg "%userprofile%\Downloads"</pre>
<p>O comando acima vai conectar no Raspberry, acessar o arquivo da imagem e copiar ela para a pasta Downloads no seu computador configurado com Windows.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1926" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-windows-prompt-copiar-fotografia-do-raspberry-para-windows-ssh-scp.png" alt="Raspberry Pi Time Lapse - copiar foto do raspberry para windows utilizando ssh scp" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-windows-prompt-copiar-fotografia-do-raspberry-para-windows-ssh-scp.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-windows-prompt-copiar-fotografia-do-raspberry-para-windows-ssh-scp-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1927" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-windows-prompt-copiar-fotografia-do-raspberry-para-windows-ssh-scp-2.png" alt="Raspberry Pi Time Lapse - verificar a foto copiada do raspberry" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-windows-prompt-copiar-fotografia-do-raspberry-para-windows-ssh-scp-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-windows-prompt-copiar-fotografia-do-raspberry-para-windows-ssh-scp-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso utilize o Mac Os ou Linux, abra o terminal e digite o comando:</p>
<pre>scp <span style="color: #339966;">pi</span>@<span style="color: #ff0000;">192.168.1.52</span>:/home/pi/fotografia.jpg ~/</pre>
<p>O comando acima vai fazer uma cópia da fotografia na pasta pessoal do seu usuário.</p>
<h3>Passo 4 &#8211; Criar shell script para padronizar nome das fotos</h3>
<p>Como queremos criar um time lapse, é importante que as imagens estejam com nomes que indicam a sequência em que foram criadas. No bash, o código abaixo retorna a data no padrão: AAAA-MM-DD_HHMM</p>
<pre>$(date +"%Y-%m-%d_%H%M")</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1929" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-verificar-modelo-timestamp-nome-fotografias.png" alt="Raspberry Pi Time Lapse - padrão timestamp a ser adotado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-verificar-modelo-timestamp-nome-fotografias.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-verificar-modelo-timestamp-nome-fotografias-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Ou seja, vamos pegar o dia 17 de junho de 2023 como exemplo, e o horário sendo 18 horas e 4 minutos; o código acima vai gerar uma data no formato: 2023-06-17_1804. Se pensarmos então no nome da imagem, ela vai ter o nome de 2023-06-17_1804.jpg</p>
<p>Vamos então agora criar o arquivo de shell script que basicamente vai informar qual shell vamos utilizar e o caminho dele (bash), definir o formato do nome da imagem que queremos (AAAA-MM-DD_HHMM.jpg) e o comando para efetivamente fotografar com o módulo de câmera e salvar o arquivo em disco em um diretório escolhido.</p>
<p>Primeiro crie o arquivo e abra para edição com o comando:</p>
<pre>nano fotografar.sh</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1930" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-fotografar-raspberry.png" alt="Raspberry Pi Time Lapse - criar arquivo shell script fotografar.sh" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-fotografar-raspberry.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-fotografar-raspberry-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora copie o código abaixo para dentro do arquivo:</p>
<pre>#!/bin/bash
DATA=$(date +"%Y-%m-%d_%H%M")
raspistill -o /home/pi/$DATA.jpg
</pre>
<p>Caso queira salvar as imagens em outra pasta, basta editar a última linha definindo o caminho “/home/pi/$DATA.jpg”. Neste exemplo estamos salvando as imagens dentro da pasta home do usuário pi (/home/pi).</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1931" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-fotografar-raspberry-2.png" alt="Raspberry Pi Time Lapse - copiar código para dentro do arquivo" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-fotografar-raspberry-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-fotografar-raspberry-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso tenha seguido o <span style="color: #3366ff;">Passo 2</span> deste tutorial, você pode optar por salvar as imagens dentro da pasta compartilhada em rede do seu Raspberry (NAS). Mas primeiro crie uma pasta <strong>time lapse</strong>:</p>
<pre><span style="color: #3366ff;">mkdir /home/fileserver/shared/timelapse</span></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1933" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-pasta-timelapse-no-local-pasta-compartilhada-nas.png" alt="Raspberry Pi Time Lapse - criar pasta timelapse dentro da pasta compartilhada do NAS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-pasta-timelapse-no-local-pasta-compartilhada-nas.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-pasta-timelapse-no-local-pasta-compartilhada-nas-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>E deixe seu shell script com o caminho atualizado:</p>
<pre><span style="color: #3366ff;">#!/bin/bash
DATA=$(date +"%Y-%m-%d_%H%M")
raspistill -o /home/fileserver/shared/timelapse/$DATA.jpg
</span></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1934" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-fotografar-raspberry-modelo-para-nas.png" alt="Raspberry Pi Time Lapse - copiar código para dentro do arquivo caso tenha seguido o PASSO 2 e tenha configurado o NAS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-fotografar-raspberry-modelo-para-nas.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-fotografar-raspberry-modelo-para-nas-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora precisamos conceder permissão de execução para o shell script criado:</p>
<pre>sudo chmod +x fotografar.sh</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1935" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-permissao-execucao-shell-script-fotografar-raspberry.png" alt="Raspberry Pi Time Lapse - garantir permissão de execução ao arquivo de script criado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-permissao-execucao-shell-script-fotografar-raspberry.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-permissao-execucao-shell-script-fotografar-raspberry-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Para testar o shell script criado, é possível executá-lo uma vez com o comando:</p>
<pre>./fotografar.sh</pre>
<p>A fotografia será salva na pasta escolhida. Caso tenha algum erro, talvez tenha definido o nome da pasta incorretamente, ou a pasta não existe. Ou talvez não tenha permissão de escrita na pasta.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1937" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-executer-shell-script-fotografar-raspberry-resultado-arquivo-criado.png" alt="Raspberry Pi Time Lapse - executar o script fotografia.sh" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-executer-shell-script-fotografar-raspberry-resultado-arquivo-criado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-executer-shell-script-fotografar-raspberry-resultado-arquivo-criado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1938" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-executer-shell-script-fotografar-raspberry-modelo-para-nas.png" alt="Raspberry Pi Time Lapse - executar o script fotografia.sh e ver o resultado na pasta do NAS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-executer-shell-script-fotografar-raspberry-modelo-para-nas.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-executer-shell-script-fotografar-raspberry-modelo-para-nas-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5 &#8211; Criar um cron job para fotografar automaticamente em um intervalo de tempo definido (<strong>time lapse</strong>)</h3>
<p>No passo anterior criamos um shell script que a cada vez que é executado, fotografa apenas 1 vez. Mas queremos que o Raspberry fique fotografando automaticamente em um intervalo de tempo definido.</p>
<p>Uma possível solução é criar um cron job, e definir de quanto em quanto tempo ele deve executar o shell script fotografar.sh.</p>
<p>Neste exemplo, vamos criar um cron job para executar o script criado a cada minuto. Ou seja, nosso time lapse terá um intervalo de 1 minuto entre cada fotografia.</p>
<p>Para criar o cron job, execute o comando:</p>
<pre>sudo crontab -e</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1940" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-crontab-para-fotografar-automaticamente-intervalo-tempo-definido.png" alt="Raspberry Pi Time Lapse - criar crontab" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-crontab-para-fotografar-automaticamente-intervalo-tempo-definido.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-crontab-para-fotografar-automaticamente-intervalo-tempo-definido-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1943" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-crontab-para-fotografar-automaticamente-intervalo-tempo-definido-2.png" alt="Raspberry Pi Time Lapse - editar arquivo crontab" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-crontab-para-fotografar-automaticamente-intervalo-tempo-definido-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-crontab-para-fotografar-automaticamente-intervalo-tempo-definido-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso seja a primeira vez que está utilizando o crontab, o editor mais fácil de utilizar é o nano. Você será perguntado qual deseja escolher na primeira execução.</p>
<p>Agora caminhe até a última linha do arquivo e insira o código:</p>
<pre>* * * * * sh /home/pi/fotografar.sh 2&gt;&amp;1</pre>
<p>Agora salve e feche o arquivo (ctrl+o, Enter, Ctrl+x)</p>
<p>Repare o termo &#8220;2&gt;&amp;1&#8221; no fim da linha, esta parte do código indica para direcionar qualquer saída de erro que a execução possa ocasionar (stderr) para a saída padrão (stdout). Os caracteres “*” presente no início da linha são utilizados para definir a periodicidade de execução do código.</p>
<p>Caso queira uma periodicidade diferente de a cada minuto, basta verificar na documentação as variáveis que precisa substituir no local de “* * * * *”, para atender suas necessidades de time lapse.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1941" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-crontab-para-fotografar-automaticamente-intervalo-tempo-definido-3.png" alt="Raspberry Pi Time Lapse - editar arquivo crontab" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-crontab-para-fotografar-automaticamente-intervalo-tempo-definido-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-crontab-para-fotografar-automaticamente-intervalo-tempo-definido-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso esteja utilizando o raspberry como um NAS (<span style="color: #3366ff;">Passo 2</span>), lembre-se de atualizar o caminho do script no crontab:</p>
<pre><span style="color: #3366ff;">* * * * * sh /home/fileserver/shared/fotografar.sh 2&gt;&amp;1</span></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1946" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-crontab-para-fotografar-automaticamente-intervalo-tempo-definido-modelo-nas.png" alt="Raspberry Pi Time Lapse - editar arquivo crontab - modelo para setup como NAS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-crontab-para-fotografar-automaticamente-intervalo-tempo-definido-modelo-nas.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-crontab-para-fotografar-automaticamente-intervalo-tempo-definido-modelo-nas-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Se estiver utilizando o raspberry como NAS (<span style="color: #3366ff;">Passo 2</span>), mova seu arquivo fotografar.sh para dentro da pasta compartilhada:</p>
<pre><span style="color: #3366ff;">mv fotografar.sh /home/fileserver/shared/</span></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1947" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-mover-shell-script-forografar-pasta-compartilhada-nas.png" alt="Raspberry Pi Time Lapse - mover script de fotografar.sh para a pasta compartilhada do NAS para facilitar gerenciamento" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-mover-shell-script-forografar-pasta-compartilhada-nas.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-mover-shell-script-forografar-pasta-compartilhada-nas-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Ter um NAS configurado no <strong>Raspberry Pi</strong> é uma facilidade, pois para desligar a execução do <strong>time lapse</strong> é muito mais simples. Como o arquivo de shell (fotografar.sh) está dentro da pasta “/home/fileserver/shared”, caso queira desligar a criação das fotografias, basta comentar as linhas de código dentro do arquivo (inserir “#” no começo de cada linha). Desta forma não precisa conectar por SSH no Raspberry, acessar a crontab, e comentar a linha que executa o script.</p>
<p>Se chegou até aqui, tudo pronto! As fotos consecutivas foram criadas, mas como montar o time lapse em vídeo?</p>
<h2>Como criar <strong>time lapse</strong> em vídeo com fotos consecutivas utilizando ffmpeg</h2>
<h3>Passo 1 &#8211; Instalando ffmpeg no <strong>Raspberry Pi</strong></h3>
<p>Vamos utilizar o ffmpeg para criar o vídeo de <strong>time lapse</strong> no formato mpeg. Mas primeiro precisamos instalar o ffmpeg no <strong>Raspberry Pi</strong>:</p>
<pre>sudo apt install ffmpeg</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1948" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-instalar-ffmpeg-linux-raspberry.png" alt="Raspberry Pi Time Lapse - sudo apt install ffmpeg" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-instalar-ffmpeg-linux-raspberry.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-instalar-ffmpeg-linux-raspberry-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora vamos organizar as imagens, o ffmpeg é meio chato, e usa uma sistemática numerada e ordenada para acessar as imagens. Mas podemos também criar uma lista dos arquivos e passar por parâmetro para que o ffmpeg siga esta ordem.</p>
<p>Partindo do pressuposto que suas fotos do <strong>time lapse</strong> estão dentro da pasta:</p>
<pre><span style="color: #3366ff;">/home/fileserver/shared/timelapse/</span></pre>
<p>Vamos criar um shell script para criar a lista:</p>
<pre>nano criar_lista_arquivos_timelapse.sh</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1952" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-montar-lista-fotos-para-time-lapse.png" alt="Raspberry Pi Time Lapse - criar shell script que cria a lista de arquivos que farão parte do time lapse" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-montar-lista-fotos-para-time-lapse.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-montar-lista-fotos-para-time-lapse-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora insira o texto abaixo dentro do script:</p>
<pre>#!/bin/bash
\ls <span style="color: #3366ff;">/home/fileserver/shared/timelapse/</span>*.jpg | sed "s/^/file '/;s/$/'/" &gt; lista_timelapse.txt
</pre>
<p>Grave e feche o arquivo (ctrl +o, enter, ctrl+x).</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1949" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-montar-lista-fotos-para-time-lapse-2.png" alt="Raspberry Pi Time Lapse - critando shell script para criar lista de fotos para timelapse" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-montar-lista-fotos-para-time-lapse-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-montar-lista-fotos-para-time-lapse-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Garante permissão de execução para o shell:</p>
<pre>sudo chmod +x criar_lista_arquivos_timelapse.sh</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1951" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-permissao-execucao-shell-script-montar-lista-fotos-para-time-lapse.png" alt="Raspberry Pi Time Lapse - permitiar permissão de execução no arquivo de shell script" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-permissao-execucao-shell-script-montar-lista-fotos-para-time-lapse.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-permissao-execucao-shell-script-montar-lista-fotos-para-time-lapse-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora crie o arquivo de shell script para executar o ffmpeg, carregar a lista de arquivos e gerar o <strong>time lapse</strong>:</p>
<pre>nano criar_timelapse.sh</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1950" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-ffmpeg-criar-video-time-lapse.png" alt="Raspberry Pi Time Lapse - criar novo arquivo de shell script denominado criar_timelapse.sh" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-ffmpeg-criar-video-time-lapse.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-ffmpeg-criar-video-time-lapse-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Insira o código dentro do arquivo:</p>
<pre>#!/bin/bash
ffmpeg -f concat -safe 0 -i lista_timelapse.txt video_timelapse.mpeg
</pre>
<p>Grave e feche o nano (ctrl +o, enter, ctrl+x).</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1953" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-ffmpeg-criar-video-time-lapse-2.png" alt="Raspberry Pi Time Lapse - editando o arquivo de shell script que realiza a criação do time lapse de vídeo com ffmpeg" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-ffmpeg-criar-video-time-lapse-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criar-shell-script-ffmpeg-criar-video-time-lapse-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Garante permissão de execução para o shell:</p>
<pre>sudo chmod +x criar_timelapse.sh</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1954" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-permissao-execucao-shell-script-ffmpeg-criar-video-time-lapse.png" alt="Raspberry Pi Time Lapse - garantir permissão de execução script de criar time lapse" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-permissao-execucao-shell-script-ffmpeg-criar-video-time-lapse.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-permissao-execucao-shell-script-ffmpeg-criar-video-time-lapse-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Com tudo pronto, primeiro crie a lista de arquivos que vão gerar o vídeo de <strong>time lapse</strong> com o comando:</p>
<pre>./criar_lista_arquivos_timelapse.sh</pre>
<p>Você pode abrir o arquivo criado para conferir se a lista está correta.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1955" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-executar-script-criar-lista-fotos-para-time-lapse.png" alt="Raspberry Pi Time Lapse - criar lista de arquivos para o timelapse executando o script criado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-executar-script-criar-lista-fotos-para-time-lapse.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-executar-script-criar-lista-fotos-para-time-lapse-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>O próximo passo é executar o shell script para criar o vídeo de <strong>time lapse</strong>:</p>
<pre>./criar_timelapse.sh</pre>
<p>Dependendo da sua versão do raspberry e do número de imagens, o procedimento acima pode demorar bastante. Sugiro começar com um teste mais rápido, com uma gravação de 60 imagens (1h de <strong>time lapse</strong> = 1 foto por min = 60 imagens)</p>
<p>Executei o procedimento acima em um <strong>Raspberry Pi Zero W</strong>, com o câmera module V2 e demorou poucos minutos para o arquivo de vídeo ficar pronto.</p>
<p>Dependendo do programa player de vídeo que for executar, ele pode reclamar do formato do <strong>time lapse</strong> criado (mpeg). É possível alterar alguns parâmetros na execução do ffmpeg a fim de mitigar estes problemas também e aumentar a compatibilidade.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1956" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-executar-script-criar-time-lapse-video-ffmpeg.png" alt="Raspberry Pi Time Lapse - criar time lapse executando o script" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-executar-script-criar-time-lapse-video-ffmpeg.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-executar-script-criar-time-lapse-video-ffmpeg-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1961" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criado-com-ffmpeg.png" alt="Raspberry Pi Time Lapse - arquivo de time-lapse criado com sucesso!" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criado-com-ffmpeg.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-time-lapse-criado-com-ffmpeg-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Conclusões</h2>
<p>Neste passo a passo vimos como configurar o <strong>Raspberry Pi</strong> para que este funcione como uma câmera de <strong>time lapse</strong>. Foi possível também utilizar o próprio raspberry para gerar o vídeo de <strong>time lapse</strong> junto com o ffmpeg.</p>
<p>A etapa opcional de criar uma pasta compartilhada para transferência de arquivos (NAS) é muito útil, para gerenciar as imagens e vídeos criados, sendo uma etapa altamente recomendada.</p>
<p>O ffmpeg também permite customizações de formato de saída de vídeo, o que permite otimizar ainda mais o processo. É possível também desabilitar a criação do canal de áudio e aumentar a compatibilidade do arquivo para diversos players de vídeo.</p>
<p>Caso tenha alguma dúvida ou dificuldade em alguma etapa, basta informar nos comentários! Farei o possível para ajudar!</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-camera-time-lapse-raspberry-pi/">Tutorial como criar câmera de time lapse no Raspberry Pi</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-camera-time-lapse-raspberry-pi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como criar um servidor de arquivos NAS com Raspberry Pi &#8211; SMB e AFP</title>
		<link>https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-arquivos-nas-raspberry-pi-samba-afp/</link>
					<comments>https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-arquivos-nas-raspberry-pi-samba-afp/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Tue, 13 Jun 2023 23:23:53 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mac osx]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[afp]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[samba]]></category>
		<category><![CDATA[Servidor Arquivos]]></category>
		<category><![CDATA[smb]]></category>
		<category><![CDATA[time machine]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=1820</guid>

					<description><![CDATA[<p>Passo a passo para criar um NAS (Network Attached Storage) com seu Raspberry Pi.</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-arquivos-nas-raspberry-pi-samba-afp/">Tutorial como criar um servidor de arquivos NAS com Raspberry Pi &#8211; SMB e AFP</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Saber o que é um <strong>NAS</strong></li>
<li>Entender o que é um <strong>servidor de arquivos</strong></li>
<li>O que é o protocolo <strong>SMB</strong></li>
<li>O que é o protocolo <strong>AFP</strong></li>
<li>Passo a passo para configurar um <strong>Raspberry Pi</strong> como um servidor de arquivos / <strong>NAS</strong> com suporte a smb (<strong>samba</strong>) e afp (netatalk e avahi-daemon)</li>
</ul>
<h2>O que significa NAS?</h2>
<p>O termo <strong>NAS</strong> vem do inglês &#8220;<strong>Network Attached Storage</strong>&#8220;, que pode ser traduzido como uma unidade de armazenamento ligado à rede. De forma geral, funciona como um <strong>servidor de arquivos</strong>.</p>
<h2>Para que serve um servidor de arquivos?</h2>
<p>Um <strong>servidor de arquivos</strong> ligado em rede tem como objetivo facilitar o fluxo de informação. Pensando em uma rede doméstica ou empresarial, um servidor de arquivos permite que usuários tenham acesso rápido a arquivos de interesse comuns. Seja uma área de transferência temporária para troca de arquivos entre usuários; ou de forma estruturada, visando organizar informações importantes para acesso de longo prazo.</p>
<h2>O que é o software <strong>Samba</strong> e o protocolo <strong>SMB</strong>?</h2>
<p>Samba é um software que provê recursos para transferência de arquivos através do <strong>protocolo smb</strong>. Desta forma, é um software que provê os recursos de servidor de arquivos. Tem origem em 1992 e suporte aos sistemas operacionais DOS, Windows, OS/2, Linux etc.<br />
O samba também oferece recursos de servidor de impressão, para integrar diversos clientes a uma impressora.</p>
<h2>O que é o protocolo AFP?</h2>
<p>O termo <strong>AFP</strong> vem do inglês &#8220;<strong>Apple Filing Protocol</strong>&#8221; que antigamente era conhecido apenas como protocolo <strong>Appletalk</strong>. É um protocolo de rede proprietário desenvolvido pela Apple Inc.<br />
O <strong>protocolo AFP</strong> foi o protocolo padrão utilizado pelo Mac OS até antes do Mac OS Mavericks (Mac OS 10.9). Em seguida o protocolo smb foi definido como protocolo primário/padrão. A capacidade de autenticação por AFP ainda é mantida no sistema operacional da Apple na versão <strong>Ventura</strong>.</p>
<h2>Necessidades para realização desta tutorial</h2>
<p>Para que seja possível realizar este projeto, basta ter um <strong>Raspberry Pi</strong> disponível e computadores para testar a conexão. Todas as versões do Raspberry Pi são compatíveis, desde a primeira versão do <strong>Raspberry</strong>.</p>
<h3>Tutorial passo a passo para configurar um <strong>Raspberry Pi</strong> como um NAS</h3>
<h3>Passo 1 &#8211; Conexão ao <strong>Raspberry Pi</strong></h3>
<p>O primeiro passo é se conectar ao seu <strong>Raspberry</strong> por conexão SSH. Caso não tenha um nome de usuário e senha configurados, conecte pelo usuário padrão. Neste exemplo nosso raspberry está configurado no ip 192.168.1.52. Então o comando para conexão será:</p>
<pre> ssh pi@192.168.1.52</pre>
<p>A senha padrão do Raspbian recém instalado é:</p>
<pre>raspberry</pre>
<p>Um alerta, por padrão o raspberry <span style="color: #ff0000;">não vem com o servidor SSH habilitado</span>. Na hora de salvar a imagem do sistema operacional no cartão SD pelo <strong>Raspberry Pi</strong> Imager é possível solicitar que o servidor SSH fique habilitado já no primeiro boot.</p>
<h3>Passo 2 &#8211; Configuração da estrutura de arquivos</h3>
<p>Vamos criar agora um usuário com o nome <span style="color: #339966;">fileserver</span>. Um grupo com o nome <span style="color: #339966;">fileserver</span> será criado automaticamente junto com a criação deste usuário. Vamos também utilizar o comando <span style="color: #339966;">-m</span>, para que ao criar o usuário e o grupo a pasta <span style="color: #339966;">/home/fileserver</span> também seja criada:</p>
<pre>sudo useradd -m <span style="color: #339966;">fileserver</span></pre>
<p>Devemos agora definir uma pasta para ser compartilhada em nosso NAS. Esta pasta poderá receber acesso de vários usuários registrados. Então vamos chamar ela de “<span style="color: #339966;">shared</span>”. Vamos criar a pasta com o comando:</p>
<pre>sudo mkdir /home/<span style="color: #339966;">fileserver</span>/<span style="color: #339966;">shared</span></pre>
<p>Interessante configurar a pasta /home/<span style="color: #339966;">fileserver</span>/<span style="color: #339966;">shared</span> de forma que todos os arquivos criados dentro dela, mantenham o grupo <span style="color: #339966;">fileserver</span>. Execute então o comando abaixo para esta configuração:</p>
<pre>sudo chmod g+s /home/<span style="color: #339966;">fileserver</span> -R</pre>
<p>Pensando já nos próximos passos, é interessante que todos os usuários que pertençam ao grupo <span style="color: #339966;">fileserver</span>, possam ter permissão de leitura/escrita na pasta <span style="color: #339966;">shared</span>. Execute então o comando:</p>
<pre>sudo chmod 770 /home/<span style="color: #339966;">fileserver</span> -R</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1822" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-criar-novo-usuario.png" alt="Raspberry Pi NAS - criar novo usuário fileserver" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-criar-novo-usuario.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-criar-novo-usuario-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1821" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-criar-diretorio-compartilhamento-arquivos.png" alt="Raspberry Pi NAS - criar pasta compartilhada" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-criar-diretorio-compartilhamento-arquivos.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-criar-diretorio-compartilhamento-arquivos-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1823" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-definir-permissao-diretorio-fixo-grupo-servidor-arquivos.png" alt="Raspberry Pi NAS - permissão g+s habilitar bit para manter permissão de grupo fixo" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-definir-permissao-diretorio-fixo-grupo-servidor-arquivos.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-definir-permissao-diretorio-fixo-grupo-servidor-arquivos-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1828" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-definir-permissao-escrita-grupo-diretorio-servidor-arquivos.png" alt="Raspberry Pi NAS - chmod 770 permissão de escrita para grupos" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-definir-permissao-escrita-grupo-diretorio-servidor-arquivos.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-definir-permissao-escrita-grupo-diretorio-servidor-arquivos-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3 &#8211; Adicionando usuários ao grupo fileserver</h3>
<p>Caso tenha outros usuários configurados no raspberry pi e também deseja que eles tenham acesso a esta pasta compartilhada, precisamos adicioná-los ao grupo do <span style="color: #339966;">fileserver</span>.</p>
<p>Neste exemplo, vou adicionar o usuário viniciuspaes ao grupo fileserver. O comando será:</p>
<pre>sudo usermod -a -G <span style="color: #339966;">fileserver</span> <span style="color: #ff0000;">viniciuspaes</span></pre>
<p>Caso tenha mais usuários, utilize o exemplo do comando acima e adicione todos que deseja fornecer acesso a pasta.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1824" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-adicionar-usuario-pessoal-grupo-servidor-arquivos.png" alt="Raspberry Pi NAS - adicionar usuário pesoal ao grupo do servidor de arquivos para que possa escrever no diretório" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-adicionar-usuario-pessoal-grupo-servidor-arquivos.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-adicionar-usuario-pessoal-grupo-servidor-arquivos-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4 &#8211; Instalando o protocolo SMB e Configurando o Samba</h3>
<p>O protocolo smb é amplamente utilizado pelo windows para transferência de arquivos entre cliente e servidor. Instalando o conjunto de aplicativos do Samba temos suporte ao protocolo smb. Para instalar o samba, utilize o comando:</p>
<pre>sudo apt install samba samba-common-bin</pre>
<p>Agora vamos editar o arquivo de configuração com o comando:</p>
<pre>sudo nano /etc/samba/smb.conf</pre>
<p>Caminhe até o fim do arquivo e adicione as linhas:</p>
<pre>[<span style="color: #339966;">shared</span>]
path = /home/<span style="color: #339966;">fileserver</span>/<span style="color: #339966;">shared</span>
writable = Yes
create mask = 0770
directory mask = 0770
public = no
</pre>
<p>Com o comando acima, vamos criar o compartilhamento com o nome “<span style="color: #339966;">shared</span>”. A pasta onde os arquivos deste compartilhamento serão armazenados é a “/home/<span style="color: #339966;">fileserver</span>/<span style="color: #339966;">shared</span>”. A máscara de permissão dos diretórios e arquivos vai ser “<span style="color: #339966;">770</span>” para escrita de grupo. Este compartilhamento não é público, é necessário que o usuário informe login e senha para acesso.</p>
<p>O samba nesta configuração padrão, não utiliza os usuários do linux para autenticação, sendo necessário definir os usuários que podem se autenticar.</p>
<p>Desta forma, vamos adicionar o usuário “<span style="color: #ff0000;">viniciuspaes</span>” como um usuário que pode se autenticar no samba e acessar o compartilhamento “<span style="color: #339966;">shared</span>”:</p>
<pre>sudo smbpasswd -a <span style="color: #ff0000;">viniciuspaes</span></pre>
<p>Agora vamos reiniciar o daemon do samba com o comando:</p>
<pre>sudo systemctl restart smbd</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1835" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-instalar-protocolo-smb-samba.png" alt="Raspberry Pi NAS - sudo apt install samba samba-common-bin" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-instalar-protocolo-smb-samba.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-instalar-protocolo-smb-samba-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1834" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-smb-samba.png" alt="Raspberry Pi NAS - editar arquivo smb.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-smb-samba.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-smb-samba-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1833" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-smb-samba-2.png" alt="Raspberry Pi NAS - inicio do arquivo smb.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-smb-samba-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-smb-samba-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1832" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-smb-samba-3.png" alt="Raspberry Pi NAS - ir para fim do arquivo smb.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-smb-samba-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-smb-samba-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1831" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-smb-samba-4.png" alt="Raspberry Pi NAS - criar configurações no arquivo smbd" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-smb-samba-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-smb-samba-4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1830" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-criar-novo-usuario-acesso-samba.png" alt="Raspberry Pi NAS - smbdpasswd -a novousuario" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-criar-novo-usuario-acesso-samba.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-criar-novo-usuario-acesso-samba-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1829" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-reiniciar-daemon-samba-smb.png" alt="Raspberry Pi NAS - service smbd restart" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-reiniciar-daemon-samba-smb.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-reiniciar-daemon-samba-smb-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5 &#8211; Testando conexão Samba no Windows</h3>
<p>No windows, acesse o windows explorer, e no canto esquerdo localize o item:</p>
<pre>Rede (Network)</pre>
<p>Clique com botão direito em cima de “Rede” e escolha a opção:</p>
<pre>Mapear unidade de rede… (Map network drive…)</pre>
<p>Neste exemplo o raspberry pi está configurado no IP 192.168.1.52 e o nome do compartilhamento que criamos se chama “<span style="color: #339966;">shared</span>” ([<span style="color: #339966;">shared</span>]). Então no campo de Pasta (Folder) preencha com:</p>
<pre>\\<span style="color: #ff0000;">192.168.1.52</span>\<span style="color: #339966;">shared</span></pre>
<p>Caso queira que a pasta de rede se conecte automaticamente a cada vez que iniciar o windows, deixe marcado o campo:</p>
<pre>Reconectar ao realizar login (Reconnect at sign-in)</pre>
<p>Como minhas credenciais de login do windows são diferentes do servidor (login samba), vou marcar a caixa:</p>
<pre>Conectar utilizando credenciais diferentes (Connect using different credentials)</pre>
<p>Clique agora no botão:</p>
<pre>Terminar (Finish)</pre>
<p>Para testar se a conexão está funcional e temos permissão de escrita na pasta do servidor, vamos criar um arquivo chamado “teste.txt”. Caso tudo ocorra como planejado, o arquivo estará criado dentro da pasta do servidor e estará disponível.</p>
<p>No terminal do servidor, podemos verificar quais arquivos estão presentes na pasta “shared”, com o comando:</p>
<pre>ls -lah /home/<span style="color: #339966;">fileserver</span>/<span style="color: #339966;">shared</span>/</pre>
<p>Podemos verificar o arquivo teste.txt que criamos para testar a funcionalidade.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1843" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectar-nas-pelo-windows-samba.png" alt="Raspberry Pi NAS - configurar acesso servidor de arquivos pelo windows usando protocolo smb - samba" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectar-nas-pelo-windows-samba.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectar-nas-pelo-windows-samba-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1842" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectar-nas-pelo-windows-samba-2.png" alt="Raspberry Pi NAS - mapear unidade de rede" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectar-nas-pelo-windows-samba-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectar-nas-pelo-windows-samba-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1841" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectar-nas-pelo-windows-samba-3.png" alt="Raspberry Pi NAS - digitar endereço do servidor" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectar-nas-pelo-windows-samba-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectar-nas-pelo-windows-samba-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1840" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectar-nas-pelo-windows-samba-4.png" alt="Raspberry Pi NAS - conectado com sucesso ao servidor nad por smb" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectar-nas-pelo-windows-samba-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectar-nas-pelo-windows-samba-4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1839" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectado-samba-criar-arquivo.png" alt="Raspberry Pi NAS - criar um arquivo de teste na pasta compartilhada do NAS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectado-samba-criar-arquivo.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectado-samba-criar-arquivo-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1838" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectado-samba-novo-arquivo-criado.png" alt="Raspberry Pi NAS - arquivo de teste criado com sucesso" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectado-samba-novo-arquivo-criado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectado-samba-novo-arquivo-criado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1837" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectado-samba-novo-arquivo-criado-confirmado-por-linha-comando.png" alt="Raspberry Pi NAS - ls -lah na pasta compartilhada do servidor para verificar se o arquivo de teste foi criado corretamente" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectado-samba-novo-arquivo-criado-confirmado-por-linha-comando.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-conectado-samba-novo-arquivo-criado-confirmado-por-linha-comando-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5 &#8211; Instalando o protocolo AFP e Bonjour com pacote Netatalk e Avahi</h3>
<p>O sistema operacional Mac OS tem suporte tanto para samba, quanto para AFP nativos.<br />
Porém, desde o <strong>OS Mavericks</strong> a Apple adotou o protocolo smb como padrão. Mas como os usuários possam estar utilizando o protocolo AFP ou precisem utilizar este protocolo em versões mais antigas no Mac OS, é interessante também conceder este acesso ao nosso servidor de arquivos/<strong>NAS</strong>.</p>
<p>A configuração do Bonjour é realizada através do pacote avahi-daemon, garante descobrimento automático do servidor na rede, e também há suporte/anúncio para configuração de <strong>time machine</strong>.</p>
<p>Para ter suporte ao AFP e Bonjour, vamos instalar o pacote:</p>
<pre>sudo apt install netatalk</pre>
<p>Após a instalação podemos verificar um panorama geral do suporte do AFP, assim como características do local de instalação, versão do protocolo, etc. Execute o comando para verificar diversas informações sobre o suporte ao <strong>AFP</strong>:</p>
<pre>afpd -V</pre>
<p>Agora é necessário editar o arquivo de configuração do <strong>AFP</strong> e definir as formas de login, suporte ao time machine, caminho da pasta compartilhada, etc:</p>
<pre>sudo nano /etc/netatalk/afp.conf</pre>
<p>Agora caminhe até o final do arquivo e cole a configuração:</p>
<pre>[shared]
    path = /home/<span style="color: #339966;">fileserver</span>/<span style="color: #339966;">shared</span>
    time machine = yes
    vol size limit = 20000
    valid users = <span style="color: #ff0000;">viniciuspaes
</span></pre>
<p>Na configuração acima, lembre-se de adicionar os usuários que vão ter permissão de acessar a pasta compartilhada por AFP. No exemplo acima temos o usuário viniciuspaes com permissão de acesso, basta substituir por seu usuário e adicionar mais usuários na mesma linha separados por espaço.</p>
<h4>Lembrete</h4>
<p>A conexão do AFP será feita pelas credenciais de login e senha dos usuários já configurados no sistema operacional linux (<strong>raspberry pi</strong>). E lembrando que no Samba (SMB) é necessário adicionar cada usuário que tem permissão de login no serviço (smbpasswd -a ).</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1853" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-instalar-protocolo-afp-netatalk-avahi-bonjour.png" alt="Raspberry Pi NAS - sudo apt install netatalk" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-instalar-protocolo-afp-netatalk-avahi-bonjour.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-instalar-protocolo-afp-netatalk-avahi-bonjour-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1852" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-protocolo-afp-verificar-versao.png" alt="Raspberry Pi NAS - afpd -V" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-protocolo-afp-verificar-versao.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-protocolo-afp-verificar-versao-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1851" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-protocolo-afp-verificar-versao-2.png" alt="Raspberry Pi NAS - sudo apt install netatalk - resultado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-protocolo-afp-verificar-versao-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-protocolo-afp-verificar-versao-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1850" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour.png" alt="Raspberry Pi NAS - editar arquivo afp.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1849" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour-2.png" alt="Raspberry Pi NAS - início arquivo afp.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1848" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour-3.png" alt="Raspberry Pi NAS - adicionar configuração fim do arquivo afp.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1847" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour-4.png" alt="Raspberry Pi NAS - sudo service netatalk start" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour-4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1846" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour-5.png" alt="Raspberry Pi NAS - sudo service avahi-daemon start" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour-5.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-configurar-protocolo-afp-netatalk-avahi-bonjour-5-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6 &#8211; Testando conexão AFP no Mac OS (netatalk + avahi-daemon)</h3>
<p>No <strong>Mac OS</strong>, abra o aplicativo <strong>finder</strong>. No menu superior, clique na opção:</p>
<pre>Ir (Go)</pre>
<p>No submenu que vai abrir, escolha a opção:</p>
<pre>Conectar no servidor… (Connect to server…)</pre>
<p>A janela de conexões ao servidor vai abrir. Nesta janela podemos escolher qual protocolo queremos nos conectar. Lembrando que podemos nos conectar por samba também (<strong>smb://</strong>), mas neste exemplo vamos optar por conectar com <strong>AFP</strong>. No campo para digitar o endereço, preencha o protocolo de conexão (<strong>afp://</strong>) seguido do IP do servidor (<span style="color: #ff0000;">192.168.1.52</span>) juntamente com o nome da conexão que definimos no arquivo afp.conf ([<span style="color: #339966;">shared</span>]):</p>
<pre>afp://<span style="color: #ff0000;">192.168.1.52</span>/<span style="color: #339966;">shared</span></pre>
<p>Caso queira salvar este endereço na lista de favoritos para conexão, lembre de clicar no campo “+”. Clique agora no botão:</p>
<pre>Conectar (Connect)</pre>
<p>Uma janela solicitando as credenciais de conexão vai abrir. Digite o usuário e senha do seu usuário criado no raspberry. Caso queira armazenar as credenciais de login e senha, marque a opção para que elas fiquem salvas em seu keychain. Agora clique novamente no botão:</p>
<pre>Conectar (Connect)</pre>
<p>Ao se conectar no servidor, será possível que o hostname do servidor (<strong>raspberry</strong>) irá aparecer no menu lateral na parte de “Locations”. Você estará dentro da aba da conexão da pasta de rede “shared” e poderá ver o arquivo de teste.txt que criamos quando nos conectamos no samba no windows.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1855" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os.png" alt="Raspberry Pi NAS - conexão AFP no MAC OS, clicar em Ir/GO" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1856" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os-2.png" alt="Raspberry Pi NAS - conexão AFP no MAC OS, selecionar conectar no servidor" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1857" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os-3.png" alt="Raspberry Pi NAS - conexão AFP no MAC OS, inserir endereço do servidor e pasta compartilhada" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1858" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os-4.png" alt="Raspberry Pi NAS - conexão AFP no MAC OS, inserir endereço do servidor e pasta compartilhada" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os-4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1859" src="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os-5.png" alt="Raspberry Pi NAS - conexão AFP no MAC - conectado no servidor e arquivos compartilhados disponíveis" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os-5.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/06/raspberry-pi-nas-testando-conexao-afp-mac-os-5-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Conlusões</h2>
<p>Caso tenha seguido o tutorial acima, foi possível verificar o passo a passo para criar um <strong>NAS</strong> com o <strong>Raspberry Pi</strong>, tanto com suporte ao protocolo smb, quanto o afp. A configuração é bem simples e lembrando que este recurso também é uma comodidade caso utilize o raspberry em outros projetos que necessitam a troca de arquivos entre seu computador e o dispositivo.</p>
<p>Lembrando que até o modelo do Raspberry Pi 3 a porta ethernet é limitada a 100Mbps (100mbps/8 = ~12,5MB/s transferência). Porém nessas versões mais antigas, é possível utilizar um dongle USB/Ethernet de 1Gbps e aproveitar a banda de 480mbps da porta USB 2.0. Porém a conexão deve ficar algo próximo/máximo de 320mbps (~40MB/s transferência), por limitação da banda do controlador do USB 2.0 e o compartilhamento da velocidade com outros dispositivos.</p>
<p>Caso utilize um SSD como unidade de armazenamento, consegui velocidades próximas a 25Mb/s em escrita e leitura sequencial com testes realizados com o software DD do linux na porta USB 2.0.</p>
<p>Caso utilize muita troca de informações, lembre-se que estas transferências consomem processamento da CPU. O raspberry pi na versão 4 ou superior pode ser uma opção mais eficiente. Com a porta USB 3.0 e um SSD Sata, consegui velocidades próximas a 220MB/s com testes utilizando o DD.</p>
<p>No geral, percebo que o <strong>Raspberry</strong> ainda possui muitas limitações de IO perante seus concorrentes que já tem suporte a armazenamento em M.2 NVME e eMMC. Mas ainda é um gadget super recomendado, pois há extenso suporte ao dispositivo, desde sua primeira versão.<br />
Tenho por exemplo um <strong>ODROID-X2</strong> com recursos próximos a um <strong>Raspberry Pi 3</strong> e não há mais suporte oficial do fabricante, nem para o uboot, nem para o kernel e nem imagens atualizadas do linux. Desta forma, continuo recomendando o raspberry pelo suporte a longo prazo.</p>
<p>&nbsp;</p>
<p>Espero que tenham gostado deste passo a passo e qualquer dúvida ou sugestão, basta informar nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-arquivos-nas-raspberry-pi-samba-afp/">Tutorial como criar um servidor de arquivos NAS com Raspberry Pi &#8211; SMB e AFP</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/raspberry-pi/tutorial-como-criar-servidor-arquivos-nas-raspberry-pi-samba-afp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como substituir modem fibra FTTH do provedor pelo modem VSOL V2802RH</title>
		<link>https://viniciuspaes.com/redes/tutorial-substituir-modem-fibra-ftth-modem-vsol-v2802rh/</link>
					<comments>https://viniciuspaes.com/redes/tutorial-substituir-modem-fibra-ftth-modem-vsol-v2802rh/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Wed, 31 May 2023 17:22:26 +0000</pubDate>
				<category><![CDATA[redes]]></category>
		<category><![CDATA[fibra óptica]]></category>
		<category><![CDATA[FTTH]]></category>
		<category><![CDATA[hgu]]></category>
		<category><![CDATA[modem fibra]]></category>
		<category><![CDATA[OMCC]]></category>
		<category><![CDATA[OMCI]]></category>
		<category><![CDATA[ont]]></category>
		<category><![CDATA[onu]]></category>
		<category><![CDATA[VSOL]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=1727</guid>

					<description><![CDATA[<p>Passo a passo para trocar seu modem de fibra óptica FTTH pelo modem VSOL V2802RH que possui porta ethernet 2,5Gbps.</p>
<p>O post <a href="https://viniciuspaes.com/redes/tutorial-substituir-modem-fibra-ftth-modem-vsol-v2802rh/">Tutorial como substituir modem fibra FTTH do provedor pelo modem VSOL V2802RH</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>O objetivo principal é poder substituir o modem de fibra em comodato cedido pela sua provedora de internet por outro modelo. Neste tutorial vamos utilizar de exemplo a substituição de um Humax HP610 pelo modem VSOL V2802RH.</p>
<p>Este tutorial é baseado em histórias de sucesso deste <a href="https://forum.adrenaline.com.br/threads/topico-dedicado-eliminar-ou-trocar-onu-ont-hgu-da-operadora-provedor.699243/" target="_blank" rel="nofollow noopener">link</a>.</p>
<h2>Qual a vantagem em substituir o modem de fibra (ont, onu ou hgu)?</h2>
<p>Atualmente a principal vantagem é ter acesso a velocidades melhores em planos de 1Gbps+.</p>
<p>Por exemplo, o HUMAX Hp610 tem capacidade de receber banda de 2,5Gbps de download e 1,25Gbps de upload pela interface de fibra óptica (gpon). Porém, este só possui portas 1 Gbps. Ou seja, caso planos de 1Gbps+ estejam disponíveis, o aparelho irá limitar a velocidade máxima pela limitação da porta ethernet gigabit (a não ser que utilize mais de uma porta e faça balanceamento de carga).</p>
<p>O modem VSOL V2802RH por sua vez, possui uma porta ethernet de 2,5Gbps. Usuários já relataram velocidades melhores em planos 1Gbps utilizando este aparelho. Ou seja, as portas gigabit realmente estão limitando o potencial máximo de planos de 1 Gbps ou superiores. Isto ocorre, pois as operadoras costumam oferecer uma velocidade um pouco acima da contratada.</p>
<h2>Quais as desvantagens em tentar substituir o modem da fibra</h2>
<p>Caso seu modem de fibra óptica forneça outros serviços, como telefone voip, TV por assinatura, etc; será necessário verificar se o seu novo modem também tem esta disponibilidade. Caso contrário, só terá o funcionamento da internet.</p>
<h2>É possível substituir o modem de fibra de qualquer provedor/operadora?</h2>
<p>Depende muito do tipo de autenticação utilizada pelo provedor. Há diversos relatos de casos de sucesso, porém há também relatos onde não foi possível a mudança de forma alguma.</p>
<p>Como muitas vezes a substituição do modem não é algo que a provedora dê suporte, não vão ajudar no procedimento. Sendo necessário anotar informações do seu modem antigo e replicar as mesmas para seu novo modem. Em alguns casos, é necessário autenticação com login e senha (LOID) que não estão disponíveis para o usuário. Em outros casos, o novo modem pode não ter suporte para “clonar” dados (OMCI) do modem antigo. Em casos específicos, o novo aparelho precisa ser autorizado diretamente na OLT do provedor para receber sinal de internet.</p>
<h2>Passo a passo em como substituir modem fibra FTTH da provedora pelo modem VSOL V2802RH</h2>
<h3><span style="color: #ff0000;">Aviso importante antes de começar (disclaimer)</span></h3>
<p>Neste exemplo tive muita felicidade (sorte) na substituição do aparelho. Pois minha provedora só utilizava o<strong> pon serial</strong> e o <strong>vendor id</strong> para autenticar o modem. Então muita calma se quiser realizar o mesmo procedimento, há grandes chances de você <span style="color: #ff0000;"><strong>não conseguir o mesmo resultado</strong></span>. Não me responsabilizo caso ocorra qualquer problema. Lembrando que os comandos utilizados por telnet podem acarretar em um softbrick e seu novo modem pode virar um peso de papel. Utilize o tutorial por sua conta e risco.</p>
<h3>Passo 1 &#8211; Exemplo de configuração de Rede Doméstica</h3>
<p>Neste exemplo, vamos supor que temos o modem <strong>HUMAX HP610</strong> (pode ser outro modem de provedor) em modo bridge, com o IP:</p>
<pre>192.168.0.1</pre>
<p>Temos um roteador configurado na rede, que também provê acesso por WIFI e está configurado com o IP:</p>
<pre>192.168.1.1</pre>
<p>O roteador possui DHCP configurado, então automaticamente irá ofertar IP dentro da faixa:</p>
<pre>192.168.1.2 até 192.168.1.254</pre>
<p>Neste exemplo temos 4 aparelhos conectados no roteador: 2 computadores, 1 celular e 1 tablet.</p>
<p>A figura abaixo exemplifica o setup deste exemplo:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1728" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-setup-inicial.png" alt="Substituir modem fibra FTTH - setup inicial" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-setup-inicial.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-setup-inicial-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2 &#8211; Característica do modem de fibra óptica VSOL V2802RH</h3>
<p>O modem da VSOL vem de fábrica configurado com o IP estático:</p>
<pre>192.168.1.1</pre>
<p>Como pode perceber, se ligar o modem diretamente na minha rede do exemplo acima, vamos ter conflito de endereço IP com o roteador.</p>
<p>Vamos primeiro então, conectar o modem VSOL por cabo ethernet diretamente em um computador.</p>
<p>Segue o exemplo na figura abaixo, para exemplificar o processo:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1729" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-vsol-ip-fixo.png" alt="Substituir modem fibra FTTH - setup configuração VSOL" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-vsol-ip-fixo.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-vsol-ip-fixo-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3 &#8211; Garantir que estamos na mesma rede do modem VSOL</h3>
<p>Como fizemos uma ligação direta com o modem VSOL e não temos certeza se o mesmo está com o DHCP configurado, uma opção é definir um IP estático momentaneamente no computador pessoal, para realizar as configurações iniciais.</p>
<p>Caso esteja no Windows:</p>
<ul>
<li>Clique no ícone do antigo botão “iniciar”.</li>
<li>Agora clique no botão de engrenagem “configurações”.</li>
<li>Vá em “Rede e Internet”.</li>
<li>No menu à esquerda clique em: “Ethernet”.</li>
<li>No canto direito, clique no link de: “Mudar opções de adaptador”</li>
<li>Identifique o ícone da sua conexão de rede cabeada (ethernet), clique com o botão direito e selecione: “propriedades”.</li>
<li>Clique duplo em cima da opção: “Protocolo de Internet Versão 4 (TCP/IPv4)”</li>
</ul>
<p>Agora poderá selecionar seu IP estático e sua máscara de subrede e gateway. Como o VSOL está utilizando o IP 192.168.1.1, vamos definir o IP do nosso computador para:</p>
<pre>192.168.1.2</pre>
<p>Para máscara de subrede, vamos utilizar:</p>
<pre>255.255.255.255</pre>
<p>Para o gateway, podemos colocar o IP do modem VSOL:</p>
<pre>192.168.1.1</pre>
<p>Agora salve as mudanças e feche as opções de configuração.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1793" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-iniciar-e-painel-controle.png" alt="Substituir modem fibra FTTH - definir ip estático no computador - parte 1 e 2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-iniciar-e-painel-controle.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-iniciar-e-painel-controle-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1735" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-computador-network-status.png" alt="Substituir modem fibra FTTH - definir ip estático no computador - parte 3" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-computador-network-status.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-computador-network-status-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1733" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-computador-ethernet.png" alt="Substituir modem fibra FTTH - definir ip estático no computador - parte 4" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-computador-ethernet.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-computador-ethernet-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1731" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-computador-adaptador-rede-ethernet.png" alt="Substituir modem fibra FTTH - definir ip estático no computador - parte 5" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-computador-adaptador-rede-ethernet.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-computador-adaptador-rede-ethernet-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1794" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-computador-definir-ip-rede-dns.png" alt="Substituir modem fibra FTTH - definir ip estático no computador - parte 6 e 7" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-computador-definir-ip-rede-dns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-configurar-ip-estatico-computador-definir-ip-rede-dns-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4 &#8211; Confirmando acesso ao modem e primeiro acesso</h3>
<p>Se as configurações de rede foram realizadas corretamente, agora podemos acessar o VSOL pelo browser. Lembre-se que o modem é um pouco lento para iniciar, se acabou de ligar ele na tomada aguarde pelo menos 1 minuto e tente acessar pelo browser:</p>
<pre>192.168.1.1</pre>
<p>Será necessário inserir as credenciais de login da interface web:</p>
<pre>Login: admin
Senha: stdONUi0i (senha padrão de fábrica)
</pre>
<p>Neste primeiro acesso, a interface vai pedir que mude a senha. Lembre-se de anotar a nova senha escolhida em local seguro.</p>
<p>Este primeiro acesso é somente para confirmar que o modem está funcional e trocar a senha padrão de fábrica.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1740" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-login-vsol-V2802RH.png" alt="Substituir modem fibra FTTH - login VSOL V2802RH " width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-login-vsol-V2802RH.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-login-vsol-V2802RH-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1741" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-trocar-senha-padrao-fabrica.png" alt="Substituir modem fibra FTTH - trocar senha fábrica VSOL V2802RH " width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-trocar-senha-padrao-fabrica.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-trocar-senha-padrao-fabrica-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1742" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-logado.png" alt="Substituir modem fibra FTTH - logado na interface web da VSOL V2802RH " width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-logado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-logado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5 &#8211; Conexão por telnet e copiar configurações de fábrica</h3>
<p>Após confirmar o funcionamento do modem, o próximo passo é copiar todas as informações de fábrica do modem VSOL. Neste processo, precisamos conectar no aparelho por conexão telnet.</p>
<p>Você pode utilizar o programa Putty para realizar a conexão por telnet.<br />
No windows, é possível habilitar o telnet nativamente (Turn windows features on and off), mas é necessário reiniciar o computador após o procedimento. Caso esteja no Mac OS, poderá instalar o telnet pelo gerenciador de pacotes homebrew (brew). No linux basta instalar o pacote telnet pelo gerenciador de pacotes.</p>
<p>Vamos então conectar por telnet no modem VSOL V2802RH. Neste exemplo tenho o telnet instalado nativamente no windows, então no prompt de comando utilizo o comando:</p>
<pre>telnet 192.168.1.1</pre>
<p>Será necessário inserir as credenciais de login:</p>
<pre>Login: admin
Senha: (nova senha que definiu pela interface web)
</pre>
<p>Agora execute o comando:</p>
<pre>cfgmib all</pre>
<p>Copie a saída do comando acima e salve em um arquivo. Basicamente este arquivo é um backup das configurações do seu roteador.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1745" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-vsol-V2802RH.png" alt="Substituir modem fibra FTTH - terminal de login por telnet na VSOL V2802RH - inserir login e senha" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-vsol-V2802RH.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-vsol-V2802RH-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1744" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-vsol-V2802RH-login.png" alt="Substituir modem fibra FTTH - terminal de login por telnet na VSOL V2802RH " width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-vsol-V2802RH-login.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-vsol-V2802RH-login-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1786" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-cfgmib-all-backup-configuracao.png" alt="Substituir modem fibra FTTH - gerar backup modem em modo texto por telnet" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-cfgmib-all-backup-configuracao.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-cfgmib-all-backup-configuracao-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3 id="firmware">Passo 6 &#8211; Realizando upgrade de firmware (opcional)</h3>
<p>Antes de iniciar as configurações no modem é interessante ressaltar que até o firmware 1.1.3 há um bug onde o modem perde a persistência de dados do OMCI a cada reboot, caso estes sejam configurados pela interface web.</p>
<p>Interessante então verificar qual a versão de firmware do seu modem da VSOL. A partir da versão 1.1.4 o bug relatado acima foi corrigido. Caso não tenha intenção de realizar o upgrade de firmware, e esteja em uma versão afetada pelo bug, há possibilidade de configurar o OMCI por telnet e desta forma manter a persistência.</p>
<p>Segue o link para a versão 1.1.4 da VSOL V2802RH (<span style="color: #ff0000;"><strong>atualize por sua conta e risco</strong></span>, se possível utilize um nobreak para não arriscar com falta de energia elétrica durante o processo):</p>
<ul>
<li><span style="color: #339966;"><strong><a style="color: #339966;" href="https://viniciuspaes.com/wp-content/uploads/2023/05/V2802RH_V1.1.4_230518_S575.img">Download firmware 1.1.4 modem VSOL V2802RH (firmware oficial do fabricante)</a></strong></span></li>
</ul>
<pre>Firmware V2802RH_V1.1.4_230518_S575.img
Hash MD5 - 92ba3aa35e675a0dfbc87c9de7483bab
Hash SHA1 - 807f39a311ec6d01413ace7e1e3e44446bf9cd97
Hash SHA256 - 6667e54974ec199debe069a0802fe81909fc557130e4c777ec80b0f836f0fbb2</pre>
<ul>
<li><span style="color: #339966;"><strong><a style="color: #339966;" href="https://viniciuspaes.com/wp-content/uploads/2023/05/V2802RH_V1.1.4_230628_S632.img">Download firmware 1.1.4 modem VSOL V2802RH &#8211; build 230628 </a><a style="color: #339966;" href="https://viniciuspaes.com/wp-content/uploads/2023/05/V2802RH_V1.1.4_230518_S575.img">(firmware oficial do fabricante)</a></strong></span></li>
</ul>
<pre>Firmware V2802RH_V1.1.4_230628_S632.img
Hash MD5 - a0480945dfeaddb9f2abceca35a2033b
Hash SHA1 - bf176a1bcb911af623e2b98771d56e72f91221c4
Hash SHA256 - 6fcf99198372576b9ece7c76cc031b8d145a3f0653a9bbc6d2825affbbc67224
</pre>
<ul>
<li><span style="color: #339966;"><strong><a style="color: #339966;" href="https://viniciuspaes.com/wp-content/uploads/2023/05/V2802RH_V1.1.5_230706_S640.img">Download firmware 1.1.5 modem VSOL V2802RH &#8211; build 230706 </a><a style="color: #339966;" href="https://viniciuspaes.com/wp-content/uploads/2023/05/V2802RH_V1.1.4_230518_S575.img">(firmware oficial do fabricante)</a></strong></span></li>
</ul>
<pre>Firmware V2802RH_V1.1.5_230706_S640.img
Hash MD5 - a09754134e84d8d95e3359ae02ba895c
Hash SHA1 - 0497ceed63a38c3e9a42429cec932cd811a73bad
Hash SHA256 - 068af57bfe44cfcdffcdbbed191c6a76c7817cab8a9eb9c52b567888db91bc1a</pre>
<ul>
<li><span style="color: #339966;"><strong><a style="color: #339966;" href="https://viniciuspaes.com/wp-content/uploads/2023/05/V2802RH_V1.1.6_230801_S663.img">Download firmware 1.1.6 modem VSOL V2802RH &#8211; build 230801 </a><a style="color: #339966;" href="https://viniciuspaes.com/wp-content/uploads/2023/05/V2802RH_V1.1.4_230518_S575.img">(firmware oficial do fabricante)</a></strong></span></li>
</ul>
<pre>Firmware V2802RH_V1.1.6_230801_S663.img
Hash MD5 - 2b035109cb4558bd6dc04339939c0f49
Hash SHA1 - d4cfa19bbb968c2f05e7767e75dc49c2db60323b
Hash SHA256 - da4107febb6e50e8b249cbdbf8e229dc65f98264634df6d5ece70b645004e0aa</pre>
<ul>
<li><strong><span style="color: #339966;"><a style="color: #339966;" href="https://viniciuspaes.com/wp-content/uploads/2023/05/V2802RH_V1.1.6_230810_S670.img">Download firmware 1.1.6 modem VSOL V2802RH &#8211; build 230810 (firmware oficial do fabricante)</a></span></strong></li>
</ul>
<pre>Firmware V2802RH_V1.1.6_230810_S670.img
Hash MD5 - 727c7a679d679a2605b04a7899ff24aa
Hash SHA1 - d00c53bd562e06d7b5fb24226098928aff62c533
Hash SHA256 - 8b8883646a8efa7eb72b12f49b08f3dcb9785d220f9768ab10e928aa31b587a3</pre>
<ul>
<li><span style="color: #339966;"><strong><a style="color: #339966;" href="https://viniciuspaes.com/wp-content/uploads/2023/05/V2802RH_V1.1.7_230911_S693.img">Download firmware 1.1.7 modem VSOL V2802RH &#8211; build 230911 (firmware oficial do fabricante)</a></strong></span></li>
</ul>
<pre>Firmware V2802RH_V1.1.7_230911_S693.img
Hash MD5 - 9ba5ae8c94e792c0a8180a1df48e27ca
Hash SHA1 - 58d4ead49c50d1c6bdb3b7fccb9bc29b9b0b24df
Hash SHA256 - fccaf44cf32b6aef03cfd39b5081a384a3b9886640dd494dc42a248190d13cfb</pre>
<ul>
<li><span style="color: #339966;"><strong><a style="color: #339966;" href="https://viniciuspaes.com/wp-content/uploads/2023/05/V2802RH_V1.1.8_240507_S893.img">Download firmware 1.1.8 modem VSOL V2802RH &#8211; build 240507 (nova versão! &#8211; firmware oficial do fabricante)</a></strong></span></li>
</ul>
<pre>Firmware V2802RH_V1.1.7_240507_S893.img
Hash MD5 - 10321664c4dd7e8c657884e7d0433f34
Hash SHA1 - 3537cf428c33267bdfbda78db381b6b5032c6b43
Hash SHA256 - aeb1c563930848d00d300dd25335e9616ec89578d4aeda03451460d25ceb712b</pre>
<h3>Firmware Custom para VSOL V2802RH</h3>
<p>O site <strong><a href="https://www.tripleoxygen.net/wiki/ont/vsol/v2802rh">tripleoxygen.net</a></strong> trabalhou em um firmware custom (CFW) para a VSOL V2802RH. Alguns usuários tinham problemas com limitações em número de caracteres dos campos: SW Version, HW Version. Foi removido também o bloqueio do MAC Address por chave de autorização, agora qualquer endereço MAC pode ser utilizado. Estes firmwares são baseados no Firmware Oficial (OFW) da versão 1.1.6.</p>
<p>Utilize este firmware por sua conta e risco. Lembre-se que não é um firmware oficial do fabricante, <span style="color: #ff0000;">não me responsabilizo por qualquer problema</span>. Qualquer dúvida, podem entrar em contato direto com o autor do firmware no site:<strong> tripleoxygen.net/wiki/ont/vsol/v2802rh</strong></p>
<ul>
<li><span style="color: #339966;"><strong><a style="color: #339966;" href="https://viniciuspaes.com/wp-content/uploads/2023/05/V2802RH_V1.9.2_CFW.img">Download <span style="color: #ff0000;">custom</span> firmware 1.9.2 modem VSOL V2802RH &#8211;  (CFW baseado no firmware 1.1.6)</a></strong></span></li>
</ul>
<pre>Firmware V2802RH_V1.9.2_<strong><span style="color: #ff0000;">CFW</span></strong>.img
Hash MD5 - 7c265174548643bcda2fddfa0404cb38
Hash SHA1 - 1a149461e74cc105b90d72aef04cbb744dd03364
Hash SHA256 - 8a1c432223a6237616d10aea9926b028a34c240ed6fffc4cc9e59e8b401a6111</pre>
<h3>Como verificar o hash do arquivo</h3>
<p>Após realizar o download do arquivo de firmware é importante verificar se o hash está idêntico ao hash informado. Ou seja, no processo de download, pode haver algum tipo de interrupção e corromper o arquivo, se tentar atualizar seu equipamento com o arquivo corrompido o mesmo irá parar de funcionar (softbrick). Desta forma, utilize os comandos abaixo para confirmar o hash do arquivo em seu computador pessoal, utilize estes comandos no prompt de comando (windows) ou pelo terminal (mac os ou linux).</p>
<p>Se estiver utilizando o Windows:</p>
<pre>Para md5:    certutil -hashfile <span style="color: #339966;">V2802RH_V1.1.6_230810_S670.img</span> <strong>md5</strong>
Para SHA1:   certutil -hashfile <span style="color: #339966;">V2802RH_V1.1.6_230810_S670.img</span> <strong>sha1</strong>
Para SHA256: certutil -hashfile <span style="color: #339966;">V2802RH_V1.1.6_230810_S670.img</span> <strong>sha256
</strong></pre>
<p>Para testar o hash no Mac OS ou linux:</p>
<pre>Para md5:    openssl <strong>md5</strong> <span style="color: #339966;">V2802RH_V1.1.6_230810_S670.img</span>
Para SHA1:   openssl <strong>sha1</strong> <span style="color: #339966;">V2802RH_V1.1.6_230810_S670.img</span>
Para SHA256: openssl <strong>sha256</strong> <span style="color: #339966;">V2802RH_V1.1.6_230810_S670.img</span>
</pre>
<h3>Passo 7 &#8211; Configurando modem Fibra VSOL V2802RH &#8211; definindo acesso por ACL &#8211; Firewall</h3>
<p>Como neste setup vamos utilizar o modem em modo bridge na rede/IP 192.168.0.1. E nossos computadores vão estar na rede 192.168.1.x. É interessante realizar uma alteração no firewall para que permita este acesso oriundo de rede diferente do modem, para facilitar acesso futuro. Então no menu superior, vamos clicar na opção:</p>
<pre>Firewall</pre>
<p>Agora na página de firewall, novas opções vão aparecer no menu que fica na lateral esquerda. Vamos clicar na opção:</p>
<pre>ACL</pre>
<p>Podemos criar uma regra específica para definir qual rede tem acesso a interface. Mas para simplificar, podemos apenas selecionar a opção:</p>
<pre>LAN ACL Switch: Disable</pre>
<p>Em seguida, para que a modificação tenha efeito, clique em:</p>
<pre>Apply</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1747" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-firewall.png" alt="Substituir modem fibra FTTH - tela firewall VSOL V2802RH " width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-firewall.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-firewall-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1748" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-firewall-acl.png" alt="Substituir modem fibra FTTH - tela firewall e ACL VSOL V2802RH " width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-firewall-acl.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-firewall-acl-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8 &#8211; Configurando modem Fibra VSOL V2802RH &#8211; configurações GPON</h3>
<p>No menu superior, clique na opção:</p>
<pre>Setup</pre>
<p>Agora, no menu da lateral esquerda, selecione a opção:</p>
<pre>GPON Settings</pre>
<p>Nesta tela agora temos a opção de definir as seguintes características:</p>
<ul>
<li>LOID</li>
<li>LOID Password</li>
<li>PLOAM Password</li>
<li>OMCI OLT Mode</li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1753" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-gpon-dados-originais.png" alt="Substituir modem fibra FTTH - dados originais gpon" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-gpon-dados-originais.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-gpon-dados-originais-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>A minha provedora não utiliza os parâmetros de LOID e PLOAM, é possível deixar nos padrões de fábrica estas opções. Algumas provedoras utilizam os valores padrão:</p>
<pre>LOID: user
LOID Password: 1234567890
PLOAM Password: 1234567890
</pre>
<p>Nesta tela, para que seja possível configurações avançadas na página de OMCI Information, é preciso alterar o OMCI OLT MODE, para:</p>
<pre>Huawey OLT Mode</pre>
<p>É possível reparar que não é possível alterar o valor do Serial Number pela interface web e a maioria das provedoras utiliza autenticação por serial pon. A VSOL permite essa modificação, porém, apenas por telnet.</p>
<p>Para salvar as modificações realizadas, clique em:</p>
<pre>Apply Changes</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1758" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-gpon-serial-pon-original-demais-dados-atualizados.png" alt="Substituir modem fibra FTTH - pon serial original, mas atualizar demais dados gpon" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-gpon-serial-pon-original-demais-dados-atualizados.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-gpon-serial-pon-original-demais-dados-atualizados-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9 &#8211; Alterando Pon Serial Number por telnet</h3>
<p>Mantenha a interface web aberta e volte para a janela de conexão por telnet.</p>
<p>Nesta etapa vamos clonar o Serial Number do modem antigo (provedora) para o novo aparelho (modem VSOL). No meu caso, meu serial possui 12 caracteres, sendo que os 4 primeiros identificam o Vendor ID. Esta informação está presente tanto na interface web do meu modem antigo (provedora) quanto na etiqueta que veio colada nele. Na etiqueta essa informação vem com o nome “PON S/N”; e na interface web ela vem descrita como “PON serial”.<br />
Segue então o exemplo do serial PON do meu aparelho:</p>
<pre><strong>HUMA</strong>12345678</pre>
<p>Se o seu modem da provedora for da marca Huawei, seu serial deve começar como <strong>HWTC</strong>12345678. Pois o Vendor ID da Huawei é <strong>HWTC</strong>. Ficar atento a esta característica e peculiaridade de cada modem.</p>
<p>Após verificar corretamente o Serial PON do seu modem da provedora, execute o comando no console telnet:</p>
<pre>flash set GPON_SN <strong>HUMA</strong>12345678</pre>
<p>Lembrar de substituir <strong>HUMA</strong>12345678 acima, pelo seu PON Serial.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1763" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-vsol-V2802RH-flash-set-GPON_SN.png" alt="Substituir modem fibra FTTH - telnet flash set GPON_SN" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-vsol-V2802RH-flash-set-GPON_SN.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-vsol-V2802RH-flash-set-GPON_SN-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora volte para a interface web. Aperte F5 para dar refresh na tela de Setup -&gt; GPON Settings.</p>
<p>Se tudo correu bem, o campo “Serial Number” foi atualizado para:</p>
<pre><strong>HUMA</strong>12345678</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1756" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-gpon-serial-pon-atualizado-demais-dados-atualizados.png" alt="Substituir modem fibra FTTH - atualizar demais dados gpon" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-gpon-serial-pon-atualizado-demais-dados-atualizados.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-gpon-serial-pon-atualizado-demais-dados-atualizados-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 10 &#8211; Interface Web &#8211; OMCI Information</h3>
<p>Na interface Web, dentro da página de “Setup”, vamos agora acessar o menu lateral a opção:</p>
<pre>OMCI Information</pre>
<p>Nesta página podemos observar as informações:</p>
<ul>
<li>OMCI Vendor ID</li>
<li>OMCI software version 1</li>
<li>OMCI software version 2</li>
<li>OMCC version</li>
<li>Traffic Management option</li>
<li>CWMP Product Class</li>
<li>HW Version</li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1760" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-omci-dados-originais.png" alt="Substituir modem fibra FTTH - dados originais VSOL OMCI" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-omci-dados-originais.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-omci-dados-originais-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Nesta etapa é interessante lembrar que o VSOL tem um problema de não reter informações do OMCI após reboot, quando estas são feitas pela interface web e o firmware do modem está na <span style="color: #ff0000;"><strong>versão 1.1.3 ou anterior</strong></span>. Na <span style="color: #008000;"><strong>versão 1.1.4</strong></span> este bug já foi consertado, sendo possível realizar todas as atualizações pela interface web.</p>
<h3>Passo 11 &#8211; Alterar Vendor ID</h3>
<p>A minha provedora de internet utiliza apenas o Pon Serial e Vendor ID para autenticação, então são etapas iniciais importantes de já ficarem persistentes no modem da VSOL.</p>
<p>Lembrando que meu modem de fibra é um Humax HP610 e o meu PON Serial é semelhante a HUMA12345678. Ou seja, meu Vendor ID é <span style="color: #008000;"><strong>HUMA</strong></span> (4 primeiros caracteres).</p>
<p>Se estiver na versão do firmware 1.1.4, altere o campo “OMCI Vendor ID” para (no caso deste exemplo):</p>
<pre><span style="color: #008000;"><strong>HUMA</strong></span></pre>
<p>Se estiver na versão do <span style="color: #ff0000;">firmware 1.1.3</span> ou anterior, execute o comando por telnet (substitua HUMA pelo seu vendor id):</p>
<pre>flash set PON_VENDOR_ID <span style="color: #008000;"><strong>HUMA
</strong></span></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1765" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-vsol-V2802RH-flash-set-PON_VENDOR_ID.png" alt="Substituir modem fibra FTTH - telnet flash set PON_VENDOR_ID" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-vsol-V2802RH-flash-set-PON_VENDOR_ID.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-vsol-V2802RH-flash-set-PON_VENDOR_ID-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Vá no browser e aperte F5 (refresh) na página de OMCI Information. O campo OMCI Vendor ID irá aparecer atualizado após executar o comando acima.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1767" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-wan-atualizando-omci.png" alt="Substituir modem fibra FTTH - atualizando dados omci" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-wan-atualizando-omci.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-wan-atualizando-omci-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Algumas informações adicionais sobre OMCC Version</h4>
<p>O atributo OMCC version  identifica a versão do protocolo OMCC utilizado pela ONU. Este recurso permite a OLT gerenciar uma rede com diferentes tipos de ONU que suportam diferentes tipos de OMCC.<br />
As versões do OMCC suportadas são identificadas na forma ox8y e 0x9<strong>y</strong>, onde o <strong>y</strong> é um digito hexadecimal que varia de 0 até F.<br />
As demais versões do protocolo são definidas dentro da faixa 0xA<strong>y</strong> e 0xB<strong>y</strong>.<br />
Algumas características das versões do OMCC:</p>
<ul>
<li>0x80 ITU-T G.984.4 (junho/2004)  (esta versão também pode aparecer em ONUs que suportam versões posteriores do ITU-T G.984.4)</li>
<li>0x81 ITU-T G.984.4 Amd.1 (junho/2005)</li>
<li>0x82 ITU-T G.984.4 Amd.2 (março/2006)</li>
<li>0x83 ITU-T G.984.4 Amd.3 (dezembro/2006)</li>
<li>0x84 ITU-T G.984.4 2008 (fevereiro/2008)</li>
<li>0x85 ITU-T G.984.4 2009 Amd.1 (junho/2009)</li>
<li>0x86 ITU-T G.984.4 2009 Amd.2 (2009). Somente conjunto de mensagens básicas, sem a opção de conjunto de mensagens estendidas</li>
<li>0x96 ITU-T G.984.4 2009 Amd.2 (2009). Upgrade da versão anterior com suporte a mensagens estendidas</li>
<li>0xA0 ITU-T G.988 (2010). Somente conjunto de mensagens básicas, sem suporte para mensagens estendidas</li>
<li>0xA1 ITU-T G.988 Amd.1 (2011). Somente conjunto de mensagens básicas</li>
<li>0xB0 ITU-T G.988 (2010). Suporte de mensagem nível básico e estendido</li>
<li>0xB1 ITU-T G.988 Amd.1 (2011). Suporte  conjunto de mensagens nível básico e estendido (R) (obrigatório) (1 byte)</li>
</ul>
<p>Fonte: <a href="https://www.itu.int/rec/dologin_pub.asp?lang=f&amp;id=T-REC-G.988-201104-S!Amd1!PDF-E&amp;type=items" target="_blank" rel="nofollow noopener">itu.int</a></p>
<h3>Passo 12 &#8211; Configuração de VLAN de Internet</h3>
<p>Dependendo do seu modem de fibra óptica FTTH (ont/onu/hgu) ele pode oferecer serviços distintos em diferentes VLAN’s. Por exemplo: VLAN de Internet no ID 11, VLAN de VoIP no ID 12, Wifi para clientes da operadora na VLAN 14, acesso de interface de configuração na VLAN 10. Mas qual VLAN oferece qual serviço varia de cada provedora.</p>
<p>Caso não consiga verificar as configurações de VLAN no seu modem antigo, é possível tentar escutar o equipamento OLT e verificar quais VLAN’s estão sendo ofertadas.</p>
<p>Para poder executar este passo, é importante que seu modem da VSOL esteja conectado na fibra óptica. Execute então o comando abaixo por telnet:</p>
<pre>omcicli mib get 84</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1788" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-omcicli-mib-get-84-ver-vlans-ofertadas.png" alt="Substituir modem fibra FTTH - telnet ver vlans ofertadas pela olt" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-omcicli-mib-get-84-ver-vlans-ofertadas.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-telnet-omcicli-mib-get-84-ver-vlans-ofertadas-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso não obtenha nenhum resultado, confira primeiramente se está com conexão na fibra. Na página inicial do modem é possível também verificar a qualidade do sinal. Caso esteja tudo certo, preencha as demais informações do OMCI. Talvez seja necessário a OLT autenticar seu equipamento, antes de fornecer as VLAN’s disponíveis. Então ela precisa reconhecer o novo modem como se fosse o antigo, tente preencher os dados de OMCI baseado nos dados modem da provedora:</p>
<ul>
<li>OMCI software version 1: (pegar versão do seu modem antigo)</li>
<li>OMCI software version 2: (pegar versão do seu modem antigo, ou repetir a versão acima)</li>
<li>OMCC version: 0x80</li>
<li>Traffic Management option: (testar as opções &#8211; verificar velocidade e compatibilidade após ter conexão com internet)</li>
<li>CWMP Product Class: (pegar versão do seu modem antigo)</li>
<li>HW version: (pegar versão do seu modem antigo, VSOL tem limitação de 4 caracteres no firmware 1.1.4 e anteriores)</li>
</ul>
<p>Caso ainda tenha problemas de compatibilidade, ver este <a href="https://forum.adrenaline.com.br/threads/topico-dedicado-eliminar-ou-trocar-onu-ont-hgu-da-operadora-provedor.699243/post-1076577432" target="_blank" rel="nofollow noopener"><span style="color: #339966;"><strong>post</strong></span></a>.</p>
<p>Com a informação do ID da VLAN de internet disponível, acesse a opção no menu superior:</p>
<pre>Setup</pre>
<p>Em seguida, no menu esquerdo, escolha a opção:</p>
<pre>WAN</pre>
<p>Vamos então configurar a VLAN de internet nesta página. Em default Route Selection, escolha:</p>
<pre>Specified</pre>
<p>Em Channel Mode, para este exemplo, vamos deixar o modem da VSOL em modo Bridge. então escolha a opção:</p>
<pre>Bridge</pre>
<p>Na opção de “VLAN”, escolha:</p>
<pre>Enable</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1768" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-wan-settings-configuracao-vlan.png" alt="Substituir modem fibra FTTH - configurando VLAN" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-wan-settings-configuracao-vlan.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-wan-settings-configuracao-vlan-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora na opção VLAN ID, você deve informar qual a ID da VLAN de internet ofertada por sua operadora. Neste exemplo, a VLAN ID de Internet é a 11. Então na opção VLAN ID (1-4095) vou inserir:</p>
<pre>11</pre>
<p>Em VLAN Cos(0-7), vamos definir prioridade:</p>
<pre>0</pre>
<p>Na opção de MVLAN (Multicast VLAN ID(1-4095)) neste exemplo não vou deixar configurado. Então vou preencher com:</p>
<pre>0</pre>
<p>Em Application Mode, vamos deixar marcado como VLAN de internet:</p>
<pre>INTERNET</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1770" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-wan-settings-configuracao-vlan-2.png" alt="Substituir modem fibra FTTH - configurando VLAN - parte 2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-wan-settings-configuracao-vlan-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-wan-settings-configuracao-vlan-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Não vou configurar as opções de DNS manualmente, vou deixar que o modem pegue automaticamente da provedora.</p>
<p>Na opção de LAN, vou deixar marcado:</p>
<pre>LAN1 e LAN2</pre>
<p>Para que estas configurações fiquem salvas, clique no botão:</p>
<pre>Add</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1771" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-wan-settings-configuracao-vlan-3.png" alt="Substituir modem fibra FTTH - configurando VLAN - parte 3" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-wan-settings-configuracao-vlan-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-wan-settings-configuracao-vlan-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Solução de Problemas <span style="color: #ff0000;">VLAN 10</span> na VSOL V2802RH</h3>
<p>Caso recebe uma mensagem de erro ao definir sua VLAN de internet sendo 10, muito provavelmente é um bug do firmware da VSOL. Ela fala &#8220;<span style="color: #ff0000;">VLAN 10 is reserved&#8230;</span>&#8220;.</p>
<p>Existem 2 formas de contornar este problema.</p>
<ol>
<li>Ao invés de colocar a VLAN com o valor &#8220;10&#8221;, coloque o valor 10 seguido de uma vírgula:
<pre>10,</pre>
</li>
<li>Outra solução é realizar um comando por telnet. Eu particularmente não realizei o comando abaixo, foi um visitante aqui do site que recebeu esse fix pelo suporte da VSOL. Então avaliar com cautela, para evitar problemas de softbrick. <span style="color: #ff0000;">Não me responsabilizo</span> e não posso confirmar sua eficácia.
<pre>cfgmib set LAN_VLAN_ID2 0xfcb
restart</pre>
</li>
</ol>
<p>&nbsp;</p>
<h3>Passo 13 &#8211; Mudar IP do modem</h3>
<p>Como mencionei no começo do post, meu modem da provedora estava configurado na rede 192.168.0.x. Quero substituir o modem da provedora pelo VSOL para poder usufruir da porta 2,5Gbps e garantir o máximo de banda de internet que a interface gpon pode fornecer.</p>
<p>Então, neste passo vou alterar o IP estático do modem da VSOL para 192.168.0.1, para que não tenha conflito com meu roteador previamente configurado na minha rede.</p>
<p>No menu superior selecione a opção:</p>
<pre>Setup</pre>
<p>No menu lateral esquerdo, selecione a opção:</p>
<pre>LAN</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1776" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-lan-ip-modem-fibra.png" alt="Substituir modem fibra FTTH - mudar ip estático do modem de fibra" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-lan-ip-modem-fibra.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-lan-ip-modem-fibra-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Em IP Address, vou alterar o IP de 192.168.1.1, para:</p>
<pre>192.168.0.1</pre>
<p>Para gravar as modificações, basta clicar no botão:</p>
<pre>Apply Changes</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1777" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-lan-ip-modem-fibra-2.png" alt="Substituir modem fibra FTTH - mudar ip estático do modem de fibra - parte 2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-lan-ip-modem-fibra-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-vsol-setup-lan-ip-modem-fibra-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora é necessário remover o IP estático do seu computador pessoal.</p>
<p>Conecte o modem de fibra de volta em sua rede e conecte seu computador pessoal para pegar IP por DHCP novamente pelo roteador.</p>
<p>Caso sua provedora utilize autenticação somente por Pon Serial e Vendor ID você conseguirá Status 05 e conexão de internet seguindo os passos descritos.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1789" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-status-pon.png" alt="Substituir modem fibra FTTH - status 05 - novo modem fibra óptica configurado com sucesso" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-status-pon.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-tela-status-pon-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Opcional &#8211; Remover Captcha da tela de Login da VSOL</h2>
<p>Caso você acesse muitas vezes a interface administrativa web da VSOL, digitar o Captcha toda vez pode ser cansativo. Há a possibilidade de remover o captcha utilizando o seguinte comando por telnet:</p>
<pre>flash set VALIDATE_CODE_SWITCH 0</pre>
<p>Mas entenda que o captcha tem a função de inserir uma cada de proteção a interface para ataques de &#8220;brute force&#8221;. Se não estiver utilizando a VSOL em modo bridge e a mesma estiver acessível pela internet, é interessante rever as opções de segurança da sua rede.</p>
<p>&nbsp;</p>
<h2>Opcional &#8211; Remover limitação velocidade na porta 2.5Gbe da VSOL V2802RH</h2>
<p>Dependendo da versão de firmware que estiver utilizando, é possível que sua VSOL tenha o <em><strong>flow control</strong></em> limitando a velocidade na porta 2.5GbE.</p>
<p>Os comandos abaixo vão remover a limitação e poderá utilizar sua porta 2.5GbE na velocidade máxima suportada. A única desvantagem que este procedimento não fica persistente, então toda vez que reiniciar a VSOL, terá que utilizar novamente os comandos abaixo. É possível que este problema esteja resolvido em uma próxima revisão de firmware. Segue os passos:</p>
<ol>
<li>Conecte na VSOL utilizando telnet</li>
<li>Digite o comando:
<ul>
<li><strong>diag</strong></li>
</ul>
</li>
<li>Tecle enter</li>
<li>Agora digite o comando:
<ul>
<li><strong>port set auto-nego port 0 ability 2500f asy-flow-control</strong></li>
</ul>
</li>
<li>Tecle enter</li>
</ol>
<p>Faça um teste de velocidade para verificar se a limitação da porta foi resolvida.</p>
<h2>Conclusões</h2>
<p>Neste tutorial foi possível ver os principais comandos para realizar a substituição do modem de internet fibra FTTH por outro modelo de sua preferência. Neste caso específico, a escolha pelo novo aparelho foi o VSOL V2802RH. A grande vantagem do VSOL é ter possibilidade de customização OMCI para permitir maior compatibilidade e a porta ethernet 2.5Gbps.</p>
<p>O setup final proposto neste exemplo é mostrado na imagem abaixo:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1773" src="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-setup-final.png" alt="Substituir modem fibra FTTH - setup final" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-setup-final.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/substituir-modem-fibra-ftth-setup-final-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso tenha sucesso na troca do seu equipamento de fibra, conte aí nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/redes/tutorial-substituir-modem-fibra-ftth-modem-vsol-v2802rh/">Tutorial como substituir modem fibra FTTH do provedor pelo modem VSOL V2802RH</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/redes/tutorial-substituir-modem-fibra-ftth-modem-vsol-v2802rh/feed/</wfw:commentRss>
			<slash:comments>282</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como trocar o modem fibra da internet &#8211; onu, ont ou hgu</title>
		<link>https://viniciuspaes.com/redes/tutorial-como-trocar-modem-fibra-internet-onu-ont-ou-hgu/</link>
					<comments>https://viniciuspaes.com/redes/tutorial-como-trocar-modem-fibra-internet-onu-ont-ou-hgu/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Fri, 12 May 2023 21:18:03 +0000</pubDate>
				<category><![CDATA[redes]]></category>
		<category><![CDATA[10Gb]]></category>
		<category><![CDATA[2.5Gb]]></category>
		<category><![CDATA[fibra óptica]]></category>
		<category><![CDATA[FTTH]]></category>
		<category><![CDATA[hgu]]></category>
		<category><![CDATA[modem]]></category>
		<category><![CDATA[modem fibra]]></category>
		<category><![CDATA[ont]]></category>
		<category><![CDATA[onu]]></category>
		<category><![CDATA[PPPoE]]></category>
		<category><![CDATA[VLAN]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=1662</guid>

					<description><![CDATA[<p>Entenda a odisséia para realizar upgrade e trocar seu modem de fibra óptica e as diferentes opções de setup disponíveis!</p>
<p>O post <a href="https://viniciuspaes.com/redes/tutorial-como-trocar-modem-fibra-internet-onu-ont-ou-hgu/">Tutorial como trocar o modem fibra da internet &#8211; onu, ont ou hgu</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="rimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1672" src="https://viniciuspaes.com/wp-content/uploads/2023/05/humax-hp610-modem-fibra-optica-hgu.png" alt="Modem GPON Fibra Óptica - HUMAX HP610 - HGU" width="384" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/humax-hp610-modem-fibra-optica-hgu.png 384w, https://viniciuspaes.com/wp-content/uploads/2023/05/humax-hp610-modem-fibra-optica-hgu-267x300.png 267w" sizes="auto, (max-width: 384px) 100vw, 384px" /></p>
<p>Sempre tive o desejo de substituir meu modem de fibra oferecido pela minha prestadora de serviços de internet. No meu caso, utilizo o <strong>Humax HP610</strong> e quando estava em modo roteador + wifi tinha sérios problemas na rede. Vou relatar alguns problemas encontrados logo abaixo.</p>
<p>Com este aparelho tive problemas na configuração do port forward, em certo momento as configurações ficaram travadas e não conseguia editar as configurações existentes, adicionar e nem excluir. Quando tentava utilizar as 4 portas de switch que vinha junto no aparelho, sempre a última porta que eu conectava o cabo de rede parava de funcionar.</p>
<p>Eu perdi as contas de quantas vezes crimpei as pontas dos cabos de rede e desperdicei conectores cat6, até perceber que o problema era no aparelho. Meu troubleshoot começou reiniciando o dispositivo, retirando e conectando os cabos de rede, etc. Mas os problemas eram sempre em cima do último cabo conectado, então uma hora um dos computadores de casa parava de funcionar, outra hora o wifi; aquela intermitência. Só quando comprei um testador de cabos, percebi que os cabos de rede estavam funcionais.</p>
<p>A primeira opção que cogitei foi upgrade de firmware, mas não encontrei no site da operadora uma lista de firmware para download e nem mesmo no site do fabricante.</p>
<p>A segunda opção era realizar um reset do aparelho, reiniciando todas as configurações para o modo de fábrica. Talvez resolvesse o meu problema de port foward, mas fiquei na dúvida sobre a liberação das 4 portas de switch. E outra, já estava ruim, fiquei com medo do reset travar o modem e ainda por cima ficar sem internet.</p>
<p>Conversando com o atendente da operadora, a resposta padrão é sempre enviar o técnico e trocar o equipamento. Como na época o HUMAX era o melhor modem disponibilizado, fiquei com medo de trocarem por um aparelho inferior.</p>
<p>Pesquisei bastante na internet e percebi que estes aparelhos que possuem VLAN configurada para internet, voip, tv, (HGU); muitas vezes não tem recursos dimensionados para prover os serviços da melhor forma possível. São aparelhos “de entrada” e atendem muito bem a maioria da população, mas alguns usuários que demandam de uma estabilidade maior da rede, com QoS/SQM não terão acesso a estes recursos.</p>
<p>Continuando a pesquisa, vi vários relatos que a melhor forma de utilização dos aparelhos fornecidos pela operadora era remover a opção de roteamento e utilizar um aparelho dedicado para esta atribuição, ou seja, usar o modem em modo bridge.<br />
Outra vantagem desta abordagem era ter uma rede modular, com aparelhos distintos provendo serviço específico. A desvantagem era aumentar o número de aparelhos na rede, pois precisaria adicionar um roteador e caso este não tivesse wifi, ainda ia ser necessário adicionar um access point para prover internet sem fio.</p>
<p>Nesta mesma época, pensei em trocar o modem/roteador da operadora, pois sempre fiz isso quando tinha internet DSL/VDSL. Era um processo tranquilo, adicionava um produto superior e com configurações simples (VCI, VPI, PPoE) a rede já ficava funcional.</p>
<p class="rimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1674" src="https://viniciuspaes.com/wp-content/uploads/2023/05/ubiquiti-uf-loco-modem-fibra-optica-gpon-ont.png" alt="Ubiquiti UF-loco modem fibra optica gpon ont" width="192" height="108" /></p>
<p>Sempre gostei da marca Ubiquiti e na minha inocência, comprei um modem GPON UF-LOCO-BR na época (~2021). Conectei o mesmo na fibra, acessei a interface e me dei conta: parece que não vai rolar. Pois é, fiz uma pesquisa e vi que não era tão simples a substituição, mas felizmente conversei com o vendedor e consegui devolver o aparelho (hoje já é possível utilizar o UF-loco: <a href="https://github.com/Unifi-Tools/UFiber.Configurator" target="_blank" rel="nofollow noopener">link</a>).</p>
<p>Pelo jeito não era o único insatisfeito com este setup padrão da operadora. Olhando em fórum online, vários usuários também buscavam formas de substituir o modem. Alguns tiveram sucesso, mas utilizavam outra operadora.</p>
<p>Recentemente, pesquisando na internet, verifiquei que vários usuários já tinham conseguido realizar o procedimento e tinha bastante informação disponível. Compilei de forma geral as informações que encontrei e segue uma visão geral do processo, baseado em experiência de vários usuários. Caso o leitor tenha interesse, o link principal que pesquisei foi:</p>
<pre>https://forum.adrenaline.com.br/threads/topico-dedicado-eliminar-ou-trocar-onu-ont-hgu-da-operadora-provedor.699243/</pre>
<p>Para contextualizar toda experiência segue o artigo criado:</p>
<h2>Introdução</h2>
<p class="rimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1676" src="https://viniciuspaes.com/wp-content/uploads/2023/05/cabo-fibra-optica-multimodo.png" alt="Cabo fibra óptica multimodo" width="384" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/cabo-fibra-optica-multimodo.png 384w, https://viniciuspaes.com/wp-content/uploads/2023/05/cabo-fibra-optica-multimodo-267x300.png 267w" sizes="auto, (max-width: 384px) 100vw, 384px" /></p>
<p>Atualmente as provedoras de internet de fibra óptica fornecem um modem/roteador para os clientes. Muitas vezes estes aparelhos não são muito eficientes em suas atribuições de rede, ou possuem recursos escassos, não atendendo as necessidades.</p>
<p>Porém, sua substituição não é trivial, pois o mercado de fibra óptica não segue um padrão de compatibilidade bem definido e cada marca de equipamento tem suas particularidades de configuração.</p>
<p>Com a oferta de planos de 1Gbps ou superiores pelas provedoras de internet, muitas vezes os equipamentos oferecidos em comodato deixam a desejar. Pois o limite prático de transferência em uma porta 1Gbps é de ~944Mbps. Lembrando que a tecnologia GPON suporte até 2,5Gbps de Download e 1,25Gbps de upload.</p>
<p>Alguns usuários que realizaram o upgrade de seus equipamentos (portas 2,5Gbps), e que assinam planos de 1Gbps reportaram que conseguiram velocidades superiores ao contratado.</p>
<h2>Vantagens em utilizar um setup próprio em sua infraestrutura de fibra doméstica/empresarial</h2>
<p class="rimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1678" src="https://viniciuspaes.com/wp-content/uploads/2023/05/infraestrutura-rede-domestica-ubiquiti-rack.png" alt="Rack doméstico ubiquiti para infraestrutura de rede" width="384" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/infraestrutura-rede-domestica-ubiquiti-rack.png 384w, https://viniciuspaes.com/wp-content/uploads/2023/05/infraestrutura-rede-domestica-ubiquiti-rack-267x300.png 267w" sizes="auto, (max-width: 384px) 100vw, 384px" /></p>
<p>Em linhas gerais, ter o seu próprio equipamento para receber internet de fibra tem as seguintes vantagens:</p>
<ul>
<li>Maior controle da sua rede doméstica/empresarial</li>
<li>Atingir velocidades melhores de internet para planos de 1Gb+
<ul>
<li>Interessante utilizar equipamentos com suporte 2,5Gb ou superior</li>
</ul>
</li>
<li>Utilizar equipamentos mais confiáveis, com mais recursos, mais eficientes e com menos emissão de EMF</li>
<li>Integração com equipamentos da sua rede já existentes
<ul>
<li>Caso já tenha switch/roteador com porta SFP/SFP+ em seu setup</li>
</ul>
</li>
<li>Diminuir o número de equipamentos em sua rede
<ul>
<li>Existem roteadores com suporte SPF+ e portas 2,5GB com Wifi 6</li>
</ul>
</li>
</ul>
<h2>Quais os desafios para substituir o equipamento fornecido pela operadora?</h2>
<p>De forma geral, o principal problema é a compatibilidade e ter os equipamentos corretos.</p>
<p>Caso opte por uma interface gbic SFP GPON é necessário verificar:</p>
<p class="rimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1680" src="https://viniciuspaes.com/wp-content/uploads/2023/05/interface-gbic-sfp-gpon-xpon.png" alt="Interface SFP XPON" width="192" height="108" /></p>
<ul>
<li>Compatibilidade da Interface SFP GPON (ou XPON): especificação comprimento de onda, monomodo ou multimodo, etc. A interface ser destinada ao usuário final com rede GPON e não uma interface para OLT.</li>
<li>Possibilidade de configuração da interface: ser “unlocked”, podendo o usuário editar as configurações existentes do transceiver óptico (OMCI).</li>
<li>Lembrando que nem todas as portas SFP+ tem suporte para módulos GPON/XPON em 2.5Gbps, pesquisar bastante antes de comprar.</li>
</ul>
<p>Caso opte por outro modem ONU/ONT/HGU:</p>
<p class="rimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1682" src="https://viniciuspaes.com/wp-content/uploads/2023/05/tplink-XZ000-G3-modem-gpon.png" alt="Modem GPON tplink XZ000 G3" width="192" height="108" /></p>
<ul>
<li>Verificar se consegue alterar configurações do mesmo. Principalmente clonar características do seu modem anterior, para que não tenha problemas de compatibildiade, visto que algumas OLT são travadas para uso com ONU/ONT/HGU da mesma marca.</li>
</ul>
<p>Em relação ao seu modem da operadora, é necessário:</p>
<p class="rimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1684" src="https://viniciuspaes.com/wp-content/uploads/2023/05/modem-gpon-huawei-G8245Q2.png" alt="Modem GPON da marca Huawei, modelo HG8245Q2" width="192" height="108" /></p>
<ul>
<li>Ter possibilidade de extrair as informações de configuração, para que possam ser inseridas em sua nova interface, ou seja, copiar os dados para o novo modem GPON ou interface SFP GPON.</li>
<li>Compatibilidade da sua provedora com mudanças de equipamentos. Cada operadora realiza a autenticação de uma forma. Seja pela serial gpon do modem, pelo mac address, por LOID, etc. Consultando o fórum, a maioria dos usuários tiveram sucesso com utilização do serial e ID da VLAN de rede.</li>
</ul>
<h2>Objetivos</h2>
<p>Diante todo o contexto apresentado, os objetivos são:</p>
<ul>
<li>Entender quais equipamentos serão necessários para substituir o modem da operadora e a finalidade de cada um</li>
<li>Ver alguns casos de sucesso de usuários que conseguiram realizar a troca do equipamento</li>
</ul>
<h2>Mas quais equipamentos da operadora de fibra posso substituir?</h2>
<p>O objetivo é substituir a interface GPON, ONT, ou HGU; que conhecemos mais pelo nome de Modem de internet de fibra. As marcas e modelos que os usuários já tiveram sucesso em substituir, são:</p>
<ul>
<li>Askey RTF3505VW-N1</li>
<li>Askey RTF8115VW</li>
<li>Huawei HG8245Q2</li>
<li>Huawei HG8245W5-6T-V2</li>
<li>Humax HP610</li>
<li>Kaon PG2447</li>
<li>Mitrastar 2741-N1</li>
<li>Mitrastar 2741-N2</li>
<li>Mitrastar GPT-2741GNAC-N1</li>
<li>Mitrastar GPT-2741GNAC-N2</li>
<li>Nokia G-140W</li>
<li>Nokia G-1425G-A</li>
<li>Nokia G-240W-C</li>
<li>Technicolor TCG2232</li>
</ul>
<p>As principais informações do equipamento vêm anotadas na etiqueta de identificação: como serial, MAC ADDRESS, modelo, etc.</p>
<p>&nbsp;</p>
<h2>Quais equipamentos posso utilizar no lugar do modem de fibra?</h2>
<p>Vamos destacar aqui os setup’s possíveis, o conjunto de vantagens e desvantagens de cada um. O objetivo desta etapa é que o leitor consiga ver o universo de possibilidades, desde um setup preparado para velocidade de 10Gbps que possa a vir ser uma realidade futura, até mesmo opções de custo e benefício satisfatórias.</p>
<p>De forma geral, as fontes de informações de casos de sucesso podem ser encontradas em:</p>
<ul>
<li><strong><a href="https://forum.adrenaline.com.br/threads/topico-dedicado-eliminar-ou-trocar-onu-ont-hgu-da-operadora-provedor.699243/" target="_blank" rel="nofollow noopener">Fórum Adrenaline</a></strong></li>
<li><strong><a href="https://forum.lowyat.net/topic/4925452/all" target="_blank" rel="nofollow noopener">Fórum Lowyat (Malásia)</a></strong></li>
</ul>
<p>&nbsp;</p>
<h3>Substituir o modem de fibra da operadora por outro modem/terminal GPON</h3>
<p>Alguns usuários tiveram sucesso na substituição do modem da operadora, por outro modelo. Este setup não oferece grandes vantagens de forma geral, pois os terminais utilizados não dão suporte a 2,5Gbps cabeado (exceto <strong>VSOL V2802RH</strong>). Porém os usuários ficaram satisfeitos, principalmente por serem terminais menores, que ocupam menos espaço e equipamentos de boa qualidade. Um lembrete que ao substituir sua HGU (internet, voip, tv, etc) por um terminal/modem GPON você terá somente acesso a internet. Em alguns setup’s é necessário adicionar um roteador com suporte para configurar VLAN e PPoE. Lembre-se de pesquisar antes de decidir, para ter certeza qual setup é o ideal para você.</p>
<ul>
<li><a href="https://www.vsolcn.com/product/25gbe-1ge-ont-v2802rh" target="_blank" rel="nofollow noopener"><strong>VSOL V2802RH</strong></a> &#8211; Mais informações: <strong><a href="https://viniciuspaes.com/redes/tutorial-substituir-modem-fibra-ftth-modem-vsol-v2802rh/">Tutorial como substituir modem de fibra óptica pela VSOL V2802RH</a></strong></li>
<li><a href="https://store.ui.com/collections/operator-ufiber/products/ufiber-loco" target="_blank" rel="nofollow noopener"><strong>Ubiquiti UF LOCO</strong></a> &#8211; Mais informações: <strong><a href="https://forum.adrenaline.com.br/threads/banda-larga-tim-live-xdsl-vdsl-fibra-optica.447175/post-1076118604" target="_blank" rel="nofollow noopener">https://forum.adrenaline.com.br/threads/banda-larga-tim-live-xdsl-vdsl-fibra-optica.447175/post-1076118604</a> </strong>e também em: <strong><a href="https://github.com/Unifi-Tools/UFiber.Configurator" target="_blank" rel="nofollow noopener">https://github.com/Unifi-Tools/UFiber.Configurator</a></strong></li>
<li><a href="https://www.intelbras.com/pt-br/modem-optico-pon-lan-1p-onu-r1#beneficios" target="_blank" rel="nofollow noopener"><strong>Intelbras R1</strong></a> &#8211; Mais informações: <strong><a href="https://forum.adrenaline.com.br/threads/topico-dedicado-eliminar-ou-trocar-onu-ont-hgu-da-operadora-provedor.699243/post-1076514800" target="_blank" rel="nofollow noopener">https://forum.adrenaline.com.br/threads/topico-dedicado-eliminar-ou-trocar-onu-ont-hgu-da-operadora-provedor.699243/post-1076514800</a></strong></li>
<li><a href="https://www.tp-link.com/br/service-provider/dsl-router/xz000-g3/" target="_blank" rel="nofollow noopener"><strong>TP-Link XZ000-G3</strong></a> &#8211; Mais informações:<br />
<strong><a href="https://forum.adrenaline.com.br/threads/banda-larga-vivo-xdsl-vdsl-fibra-optica-hfc.594503/post-1076399107" target="_blank" rel="nofollow noopener">https://forum.adrenaline.com.br/threads/banda-larga-vivo-xdsl-vdsl-fibra-optica-hfc.594503/post-1076399107</a></strong></li>
</ul>
<p>Neste tipo de setup, tendo em vista apenas trocar o modem, o <a href="https://www.biostechconecta.com.br/produto/onu-gponepon-hibrida-25gbe1ge-v2802rh-xpon-upc.html" target="_blank" rel="nofollow noopener"><span style="color: #000000;"><strong>VSOL V2802RH</strong></span></a> é a <strong>opção mais recomendada</strong>, por ter uma porta ethernet de 2.5Gbps. Um destaque também para o modelo Ubiquiti <a href="https://store.ui.com/collections/operator-ufiber/products/ufiber-wifi6-gpon-cpe" target="_blank" rel="nofollow noopener"><strong>UF-WiFi6</strong></a>, que apesar das portas ethernet serem gigabit, poderá alcançar velocidades superiores pelo wifi (wifi6).</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1688" src="https://viniciuspaes.com/wp-content/uploads/2023/05/vsol-v2802rh-ubiquiti-fiber-wifi6.png" alt="Opções de modem para substituir o padrão da operadora, mas garantir velocidade superior pela ethernet ou wifi6" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/vsol-v2802rh-ubiquiti-fiber-wifi6.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/vsol-v2802rh-ubiquiti-fiber-wifi6-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>&nbsp;</p>
<h3>Substituir o modem de fibra da operadora por Interface Gbic SFP GPON/XPON</h3>
<p>É nesta configuração que podemos alcançar as verdadeiras vantagens de upgrade da rede. Quando utilizamos uma interface SFP GPON, temos uma variedade maior de equipamentos de rede de ponta, que podemos utilizar.</p>
<p>Damos um destaque especial para o módulo SPF:</p>
<pre><strong><a href="https://pt.aliexpress.com/item/1005003515662920.html" target="_blank" rel="nofollow noopener">ODI ONU STICK - DFP-34X-2C2</a></strong></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1697" src="https://viniciuspaes.com/wp-content/uploads/2023/05/ODI-XPON-STICK-ONU-DFP-34X-2C2.png" alt="GBIC GPON XPON da marca ODI, modelo DFP-34X-2C2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/ODI-XPON-STICK-ONU-DFP-34X-2C2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/ODI-XPON-STICK-ONU-DFP-34X-2C2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Esta Gbic GPON/XPON é bastante utilizada, o principal motivo é ser destravada (<em>unlocked)</em>, ter uma interface web, e muitos usuários terem sucesso de configuração da sua internet fibra com ela. Permite conexão telnet e ssh para configurações avançadas (OMCI).</p>
<p>Ela também possui velocidade máxima de download de 2.5Gbps e 1.25Gbps de upload. Mas aqui preciso dar um alerta sobre compatibilidade ao forçar a velocidade de 2.5Gbps. Ao conectar ela em um aparelho de rede com entrada SPF, seja roteador ou switch, é necessário verificar se o mesmo tem suporte aos protocolos:</p>
<pre><strong>2500base-X / Hi-SGMIII</strong></pre>
<p>Se forçar a negociação de velocidade no <strong>DFP-34X-2C2</strong> para <strong>2.5Gbps</strong> e o aparelho que ela estiver conectada não tiver o protocolo implementado, você não conseguirá acessar a interface para voltar a configuração normal (somente por UART). Mas se deixar no automático, irá conectar normalmente a 1Gbps.</p>
<p>Se for conectar a um roteador/switch, lembre-se de verificar então a compatibilidade para 2.5Gbps. Cuidado com portas SFP+ de 10Gbps pois muitas não possuem a implementação, como o <strong>Ubiquiti Dream Machine Pro/SE</strong>. Este caso é descrito aqui:</p>
<pre><strong>https://forum.lowyat.net/topic/4925452/all</strong></pre>
<p>&nbsp;</p>
<h4>Qual setup indicado para suporte 2.5Gbps e GPON SFP?</h4>
<p>Segue alguns exemplos, mas nem todos foram testados. Alguns usuários relatam aumento da latência (no caso o Mikrotik CRS305-1G-4S+IN) e ainda há dúvidas se é devido compatibilidade da operadora, ou problemas no GPON/porta SFP.</p>
<ul>
<li><strong><a href="https://pt.aliexpress.com/item/1005004340369253.html" target="_blank" rel="nofollow noopener">Conversor de mídia óptica de 2.5Gbps</a> (Optical Media Converter) + roteador de 2.5Gbps</strong>. Uma opção de roteador sem porta SFP para ser utilizado com este setup é o <strong><a href="https://www.friendlyelec.com/index.php?route=product/product&amp;product_id=289" target="_blank" rel="nofollow noopener">nanoPi R6S</a></strong>.</li>
<li><strong><a href="https://www.gowinfanless.com/products/network-device/r86s-firewall-router/gw-r86s-u-series" target="_blank" rel="nofollow noopener">R86S-U4</a>:</strong> é uma excelente solução como roteador/firewall. Possui 3 portas 2.5Gbps além de 2 portas SFP+ de 10Gbps. Há algumas ressalvas pela temperatura que o aparelho alcança. Alguns usuários optaram por utilizar refrigeração ativa por fora do case para mitigar qualquer problema. Possui também Wifi, eMMC de 128GB, entrada de cartão de memória micro SD e slot NVME PCI-e x3 (no teste que vi só alcançou 800MB/s). Além de possuir arquitetura x86 permitindo uso de Pfsense, OPNSense, Proxmox, etc. A placa PCI-e que dá suporte aos 2 módulos SFP+ não consegue negociar a 2.5Gbps com o ODI <strong>DFP-34X-2C2</strong>, necessário outra interface GPON/XPON com compatibilidade.</li>
<li><strong>Mikrotik <a href="https://mikrotik.com/product/rb5009ug_s_in" target="_blank" rel="nofollow noopener">RB5009 UG-S-IN</a> ou <a href="https://mikrotik.com/product/rb5009upr_s_in" target="_blank" rel="nofollow noopener">RB5009 UPR-S-IN</a>:</strong> possui porta SFP+ e 1 porta 2.5Gbps (além de outras portas 1Gbps). É um setup em que poderá realizar o uso máximo de sua internet fibra pela porta 2.5Gbps. Ficar atento novamente pela compatibilidade da porta SFP+ em 2.5Gbps.</li>
<li><strong><a href="https://mikrotik.com/product/ccr2004_1g_12s_2xs" target="_blank" rel="nofollow noopener">Mikrotik CCR2004-1G-12S+2XS</a>:</strong> é uma versão bem topo de linha. Lembrando que vai precisar de gbic ethernet junto com a gpon. Pois este roteador possui 1 porta Ethernet 1Gbps e 12 portas SFP+ (10Gbps) e 2 portas SFP28 (25Gbps). Utilizando módulos SFP de 2,5Gbps poderá utilizar a velocidade máxima da internet, sem gargalos da porta gigabit. Ficar atento novamente pela compatibilidade da porta SFP+ em 2.5Gbps.</li>
<li><strong>Glink Series:</strong> do mesmo fabricante do R86S, porém com upgrade de processador (N100). Ainda está em fase de desenvolvimento e deve ser lançado ainda em 2023.</li>
<li><strong><a href="https://wiki.banana-pi.org/Banana_Pi_BPI-R3" target="_blank" rel="nofollow noopener">Banana Pi R3</a>:</strong> é um setup com muitos recursos, 2 portas SFP e 5 portas gigabit. Para tirar o maior proveito tanto da GPON, quanto do roteador, é necessário uma interface SFP Ethernet de 2.5Gbps, compatível. Tem um usuário que relatou que a imagem do OpenWRT disponível ainda não está muito estável.</li>
<li><strong><a href="https://mikrotik.com/product/crs305_1g_4s_in" target="_blank" rel="nofollow noopener">Mikrotik CRS305-1G-4S+IN</a>:</strong> é um switch com 1 porta Gigabit e 4 portas SFP+. Necessário ligar uma interface SFP 2.5Gbps ethernet para utilizar a rede de internet em sua velocidade máxima. Ainda não vi usuários testarem o suporte 2500base-X/Hi-SGMIII, é preciso testar o funcionamento. Lembrando que também vai precisar de um roteador.</li>
</ul>
<p>Nas opções citadas acima, um destaque para o <strong>R86S-U4</strong>, por ser uma solução completa para ser utilizada com uma GPON SFP+ compatível; capaz de prover internet na velocidade máxima, ter portas 2.5Gbps, suporte wifi6, processamento suficiente para firewall, etc. Mas lembrando que até o momento não é possível negociar a interface SFP+ em 2.5Gbps. Alguns usuários optaram por substituir a interface SFP+, por uma mais atual. para conseguir utilizar o ODI <strong>DFP-34X-2C2. </strong>Lembrando que na opção padrão <span style="color: #ff0000;">não vai funcionar o ODI</span>.</p>
<p>Interessante também destacar a opção de utilizar o conversor de mídia óptica + SFP GPON, pois em termos de compatibilidade, é uma opção a ser considerada.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1695" src="https://viniciuspaes.com/wp-content/uploads/2023/05/R86S-U4-ODI-DFP-34X-2C2-conversor-optico-25gbps.png" alt="Embate de boas opções: R86S uma solução ALL-in-One e o conversor óptico de 2.5Gb que garante ampla compatibilidade" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/R86S-U4-ODI-DFP-34X-2C2-conversor-optico-25gbps.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/R86S-U4-ODI-DFP-34X-2C2-conversor-optico-25gbps-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>&nbsp;</p>
<h4>Quais outros setups SFP também podem ser utilizados, mesmo sem suporte a 2.5Gbps?</h4>
<ul>
<li><a href="https://br.store.ui.com/products/udm-pro" target="_blank" rel="noopener"><strong>Ubiquiti UDM Pro/SE</strong></a> &#8211; um excelente equipamento. Futuramente pode ter um upgrade de firmware para suportar 2500base-X/Hi-SGMIII, quem sabe. Mas para atingir velocidade gigabit da internet é suficiente. Olhando o fórum do fabricante é mencionado que não há possibilidade de negociação a 2,5GbE por limitação de hardware, quem sabe em uma nova revisão.</li>
<li><a href="https://mikrotik.com/product/hex_s" target="_blank" rel="noopener"><strong>Mikrotik hex S</strong></a> &#8211; um excelente roteador gigabit com porta SFP.</li>
<li><a href="https://store.ui.com/collections/operator-edgemax-routers/products/edgerouter-x-sfp" target="_blank" rel="noopener"><strong>Ubiquiti Edgerouter X SFP</strong></a> &#8211; um excelente roteador gigabit com porta SFP da ubiquiti.</li>
<li><a href="https://br.store.ui.com/products/unifi-switch-aggregation" target="_blank" rel="noopener"><strong>Ubiqui USW-Aggregation</strong></a>: é um switch, então além dele, vai ser necessário ter um roteador configurado. Lembrando que este aparelho só possui portas SFP+, então sendo necessário interface SFP Ethernet. Verificar se o mesmo possui suporte 2500base-X/Hi-SGMIII, para evitar problemas, utilizar a conexão com a GPON em configuração automática e não forçar 2.5Gbps para não correr risco de perder acesso a gbic.</li>
<li><a href="https://forum.lowyat.net/index.php?s=357ad447173375937400be00e939b0c9&amp;showtopic=4982695&amp;st=1980&amp;p=104286872&amp;#entry104286872" target="_blank" rel="nofollow noopener"><strong>Tplink AX</strong></a>: roteador wifi6 com suporte entrada SFP. Lembrando que a conexão por wifi6 permite utilizar sua internet GPON no limite máximo contratado. Não encontrei o modelo a venda (apenas no taobao na china), mas é possível verificar no fórum da Malásia o post.</li>
</ul>
<p>&nbsp;</p>
<h2>Os cabos/conectores de fibra são todos iguais, como verificar compatibilidade?</h2>
<p>Ficar bastante atento ao modelo do seu novo modem de fibra ou módulo GPON SFP. O modelo amplamente utilizado nos modems de fibra no Brasil é o SC/APC. É um conector de fibra na cor verde. Agora o módulo SFP GPON da ODI, o DFP-34X-2C2 utiliza o conecotor SC/UPC que tem a cor azul. O modem VSOL V2802RH também utiliza conector SC/UPC.</p>
<h3>O que fazer caso o conector da minha fibra seja o SC/APC (verde) e o novo aparelho utiliza o SC/APC (azul)?</h3>
<p>A melhor abordagem é utilizar um adaptador. Ou, caso na instalação da sua internet de fibra tenha uma caixinha de conexão (Roseta), onde se conecta o patch cable da fibra, basta comprar um patch cable/cord com terminais SC-APC de um lado e SC-UPC de outro. De forma mais objetiva, segue as opções:</p>
<ul>
<li><strong>Opção 1: <a href="https://pt.aliexpress.com/item/1005004771970854.html" target="_blank" rel="nofollow noopener">Adaptador UPC (macho) e APC (Fêmea)</a></strong></li>
<li><strong>Opção 2:</strong> Quem tem Roseta instalado, só precisa do: <strong><a href="https://www.biostechconecta.com.br/produto/patch-cord-sc-upc-sc-apc-single-mode-30mm-30cm.html" target="_blank" rel="nofollow noopener">patch cord SC-APC / SC-UPC</a></strong></li>
<li><strong>Opção 3:</strong> Quem não tem Roseta instalado: <strong><a href="https://www.biostechconecta.com.br/produto/adaptador-sc-apc-simplex.html" target="_blank" rel="nofollow noopener">Adaptador SC-APC Simplex</a></strong> + <strong><a href="https://www.biostechconecta.com.br/produto/patch-cord-sc-upc-sc-apc-single-mode-30mm-30cm.html" target="_blank" rel="nofollow noopener">patch cord SC-APC / SC-UPC</a></strong></li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1710" src="https://viniciuspaes.com/wp-content/uploads/2023/05/opcoes-adaptadores-apc-upc.png" alt="Opções de adaptadores de SC/APC para SC/UPC" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/opcoes-adaptadores-apc-upc.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/opcoes-adaptadores-apc-upc-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Qual a diferença entre os conectores APC e UPC?</h3>
<p>A principal diferença está no acabamento do fim da fibra, ou seja, onde há instalação dos conectores.<br />
Se repararmos no nome <strong>APC</strong> &#8211; <strong>Angled Physical Contact</strong>, este já destaca que o corte da fibra na ponta possui um ângulo, mais precisamente um ângulo de 8 graus.<br />
Para o conector <strong>UPC</strong> &#8211; <strong>Ultra Physical Contact</strong>, o corte no fim da fibra é reto.</p>
<p>&nbsp;</p>
<h4>Mas o que estas diferenças existentes nos conectores APC e UPC impactam de forma prática?</h4>
<p>Basicamente, com o <strong><span style="color: #3366ff;">conector UPC</span></strong> toda luz refletida tende a retornar de forma paralela a fonte de luz. Já no <span style="color: #008000;"><strong>conector APC</strong></span>, por causa do ângulo de 8 graus no corte do fim do cabo, a luz quando refletida, não retorna de forma paralela ao sinal de origem.<br />
Estas diferenças impactam a perda de retorno. Para entender o que isto significa, tente imaginar o ruído que esta luz refletida pode causar no sinal. Para fins comparativos, a faixa de tolerância para conector UPC é de -50dB ou superior (quanto mais próxima de zero melhor). Para o conector APC, o padrão é de -60dB ou superior, ou seja, quanto mais próxima de zero melhor, por se tratar de um valor negativo.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1709" src="https://viniciuspaes.com/wp-content/uploads/2023/05/diferencas-conectores-apc-upc.png" alt="Diferenças conectores UPC e APC" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/diferencas-conectores-apc-upc.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/diferencas-conectores-apc-upc-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>&nbsp;</p>
<h2>Após ter os equipamentos corretos, quais informações preciso do modem da provedora?</h2>
<p>Antes de iniciarmos a lista de variáveis necessárias, é importante ressaltar que cada provedora utilizar uma forma diferente para validar o aparelho na OLT e disponibilizar acesso a rede. De forma generalista então, vou listar todos dados que consegui acessar do meu modem Humax HP610.</p>
<ul>
<li><strong>Modelo do Aparelho:</strong> HP610</li>
<li><strong>Mac Address:</strong> 00:00:00:00:00:00</li>
<li><strong>Número de série do Modem:</strong> 12345678901234567890 (no meu aparelho o número de série tem 20 digitos)</li>
<li><strong>Versão do Hardware:</strong> HW1.1</li>
<li><strong>Versão Software:</strong> VER.1.2.34.AB</li>
<li><strong>Serial do PON:</strong> <strong>HUMA</strong>B1234A56</li>
<li><strong>Vendor ID (4 primeiras letras do Pon Serial):</strong> HUMA</li>
<li><strong>Número LOID:</strong> não tinha</li>
<li><strong>Senha LOID:</strong> não tinha</li>
</ul>
<h2>Estou com todos os dados necessários do meu modem antigo, como configurar o novo setup?</h2>
<p>A configuração é muito específica para cada aparelho, mas basicamente é inserir o máximo de informações possíveis do seu modem antigo para o novo, aumentando a compatibilidade. Se quiser utilizar a VSOL, já criei o tutorial: <strong><a href="https://viniciuspaes.com/redes/tutorial-substituir-modem-fibra-ftth-modem-vsol-v2802rh/">Tutorial como substituir modem de fibra óptica pela VSOL V2802RH</a></strong></p>
<p>Mas diversos usuários já conseguiram realizar o upgrade do aparelho da provedora e postaram os resultados no fórum. Uma forma mais rápida para verificar a configuração realizada pelos usuários é acessar:</p>
<ul>
<li><a href="https://forum.adrenaline.com.br/threads/topico-dedicado-eliminar-ou-trocar-onu-ont-hgu-da-operadora-provedor.699243/" target="_blank" rel="nofollow noopener">Casos de sucesso para upgrade modem de fibra</a></li>
</ul>
<h2>Conclusões</h2>
<p>Nesta publicação foi apresentado a idéia da possibilidade de trocar os equipamentos que a prestadora de serviços de internet fibra deixa em comodato na casa do cliente. Como é possível verificar existem uma infinidade de possibilidades, pois há grande variedade de quipamentos que podem ser utilizados.</p>
<p>A parte mais complicada é definir o que esperar do novo setup da rede: suporte 2.5Gbps, suporte 5Gbps, suporte 10Gbps?</p>
<p>Pensando na evolução/aumento de velocidade da internet contratada e da capacidade de transferência de 2.5Gbps de download máximo da GPON, um setup que garanta um mínimo de 2.5Gbps de <em>throughput</em> da rede parece interessante. Porém alguns usuários possuem demandas específicas, com utilização de NAS em sua rede local, onde um setup de 10Gbps será verdadeiramente útil.</p>
<p>De forma geral, podemos destacar 4 setup&#8217;s principais, que visam atender da melhor forma possível cada caso de uso:</p>
<ul>
<li>Garantir suporte ethernet 2.5Gbps no modem: <a href="https://www.vsolcn.com/product/25gbe-1ge-ont-v2802rh" target="_blank" rel="nofollow noopener"><strong>VSOL V2802RH</strong></a></li>
<li>Já tenho um roteador com porta SFP, quero me livrar do modem da operadora:  <strong><a href="https://pt.aliexpress.com/item/1005003515662920.html" target="_blank" rel="nofollow noopener">ODI ONU STICK &#8211; DFP-34X-2C2</a></strong></li>
<li>Utilizar o mínimo de equipamentos de rede possível, solução All-in-one: <strong><a href="https://www.gowinfanless.com/products/network-device/r86s-firewall-router/gw-r86s-u-series" target="_blank" rel="nofollow noopener">R86S-U4</a> </strong>(encontrar uma interface SFP/GPON compatível com SFP+ e 2,5GbE)</li>
<li>Não ligo para velocidade cabeada, quero suporte a velocidade acima de 1Gbps no wifi:
<ul>
<li>Ubiquiti <a href="https://store.ui.com/collections/operator-ufiber/products/ufiber-wifi6-gpon-cpe" target="_blank" rel="nofollow noopener"><strong>UF-WiFi6</strong></a> (ainda não testado pelos usuários)</li>
<li><a href="https://forum.lowyat.net/index.php?s=357ad447173375937400be00e939b0c9&amp;showtopic=4982695&amp;st=1980&amp;p=104286872&amp;#entry104286872" target="_blank" rel="nofollow noopener"><strong>Tplink AX</strong></a> + <strong><a href="https://pt.aliexpress.com/item/1005003515662920.html" target="_blank" rel="nofollow noopener">ODI ONU STICK &#8211; DFP-34X-2C2</a></strong></li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<p>Está pensando em trocar seu modem da operadora também? Confira o passo a passo que criei quando configurei o modem VSOL V2802RH na minha residência:</p>
<ul>
<li><span style="color: #339966;"><strong><a style="color: #339966;" href="https://viniciuspaes.com/redes/tutorial-substituir-modem-fibra-ftth-modem-vsol-v2802rh/">Tutorial como substituir modem fibra FTTH do provedor pelo modem VSOL V2802RH</a></strong></span></li>
</ul>
<p>O post <a href="https://viniciuspaes.com/redes/tutorial-como-trocar-modem-fibra-internet-onu-ont-ou-hgu/">Tutorial como trocar o modem fibra da internet &#8211; onu, ont ou hgu</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/redes/tutorial-como-trocar-modem-fibra-internet-onu-ont-ou-hgu/feed/</wfw:commentRss>
			<slash:comments>51</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como resolver problema de Bufferbloat com OpenWRT</title>
		<link>https://viniciuspaes.com/openwrt/tutorial-resolver-problema-bufferbloat-openwrt/</link>
					<comments>https://viniciuspaes.com/openwrt/tutorial-resolver-problema-bufferbloat-openwrt/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Sun, 07 May 2023 20:41:50 +0000</pubDate>
				<category><![CDATA[openwrt]]></category>
		<category><![CDATA[irqbalance]]></category>
		<category><![CDATA[OpenWRT]]></category>
		<category><![CDATA[packet steering]]></category>
		<category><![CDATA[QoS]]></category>
		<category><![CDATA[SQM]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=1608</guid>

					<description><![CDATA[<p>Aprenda a resolver problemas de bufferbloat em sua rede configurando o OpenWRT com SQM/QoS, IRQbalance e Packet Steering!</p>
<p>O post <a href="https://viniciuspaes.com/openwrt/tutorial-resolver-problema-bufferbloat-openwrt/">Tutorial como resolver problema de Bufferbloat com OpenWRT</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Entender o que é o <strong>BufferBloat</strong></li>
<li>Saber o significado de <strong>QoS</strong> e <strong>SQM</strong></li>
<li>Aprender sobre <strong>Packet Steering</strong> e <strong>IRQbalance</strong></li>
<li>Passo a passo para resolver problemas de <strong>BufferBloat</strong> do seu roteador configurado com <strong>OpenWRT</strong></li>
</ul>
<h2>O que <strong>BufferBloat</strong> causa?</h2>
<p>Uma maneira objetiva de explicar o <strong>bufferbloat</strong> é explicar o que este causa. Basicamente, o efeito principal do <strong>bufferbloat</strong> é o aumento da latência da rede. Pode influenciar no atraso/sincronia dos pacotes que causa jitter e até impactar de forma crônica a velocidade de transferência da rede.</p>
<h2>Em qual cenário o <strong>bufferbloat</strong> é mais evidente?</h2>
<p>É comum verificar seus efeitos em redes com muitos clientes e aplicações que exigem do throughput da rede: streaming e voip. Usuários que demandam da rede para jogos online também são afetados negativamente pelo <strong>bufferbloat</strong>. Os efeitos mais comuns que os usuários relatam é um ping mais alto com o servidor destino e efeitos de lag durante a partida online. Tais efeitos ficam mais evidentes em equipamentos de rede de entrada (equipamentos com poucos recursos).</p>
<h2>Na prática, o que é o <strong>Bufferbloat</strong>?</h2>
<p>De forma sucinta, é um efeito negativo de aumento de latência devido ao <strong>buffer</strong> dos equipamentos de rede, quando estes estão sob estresse. A grande demanda na rede pode ocasionar um aumento excessivo da utilização dos <strong>buffers</strong>, causando um efeito cascata de atraso de pacotes.</p>
<h2>O que significa <strong>QoS</strong>?</h2>
<p>O termo <strong>QoS</strong> é um acrônimo para &#8220;<strong>Quality of Service</strong>&#8221; ou <strong>Qualidade do Serviço</strong>. Pode ser explicado como um conjunto de prioridades especificamente definidas para o controle do tráfego da rede, garantindo prioridade para serviços/aplicações mais sensíveis/críticas racionalizando o uso da rede.</p>
<p>Lembrando que para um <strong>QoS</strong> real, seria necessário garantir a qualidade do serviço de ponta a ponta. Quando habilitamos o <strong>QoS</strong> em nosso roteador pessoal, vamos definir as prioridades do serviço somente em nossa rede local.</p>
<h2>O que significa <strong>SQM</strong>?</h2>
<p>O termo <strong>SQM</strong> é um acrônimo para &#8220;<strong>Smart Queue Management</strong>&#8221; ou <strong>Gerenciamento Inteligente de Filas</strong>. É utilizado para melhorar o fluxo de informação em redes de computadores, muito utilizado com as metodologias de Gerenciamento de Tamanho de Fila Ativa (<strong>AQM</strong>), <strong>QoS</strong>, limitação de banda e modelagem de tráfego.</p>
<h2>O que é Packet Steering?</h2>
<p>Alguns equipamentos de rede possuem implementação em hardware para trabalhar com múltiplos núcleos da CPU, para transmissão e recebimento de pacotes. Porém, nem todos os equipamentos possuem esta implementação, e trabalham apenas com uma fila para processamento dos pacotes, usualmente esta fila é processada por apenas um núcleo da CPU. Pensando na evolução dos processadores ao longo dos anos, é possível verificar o foco no aumento dos núcleos e na otimização de eficiência. Então faz sentido a implementação em software de um procedimento para paralelizar o fluxo da rede, para que o fluxo de informação (pacotes) possa ser processado por vários núcleos, otimizando o funcionamento do equipamento.</p>
<p>O termo “<strong>Packet Steering</strong>” ou “<strong>Receive Packet Sterring</strong>” (<strong>RPS</strong>) é uma técnica onde é criado um hash do número da porta e IP da requisição de rede, que é utilizado para determinar qual core da CPU será responsável pelo pacote, nesta implementação de fluxo paralelizado. Desta forma, ele também garante que um conjunto de pacotes de um mesmo fluxo de informação seja alocado no mesmo núcleo da CPU. Para um balanceamento do fluxo em todos os núcleos do processador o <strong>packet steering</strong> é utilizado junto com o daemon do <strong>irqbalance</strong>.</p>
<h2>Para que serve o <strong>IRQbalance</strong>?</h2>
<p>É uma implementação de um daemon para o sistema operacional Linux com a finalidade de reorganizar/distribuir pedidos de interrupções em vários núcleos do processador. É utilizado juntamente com o <strong>packet steering</strong>, para prover o serviço. Sua utilização pode resultar em um melhor desempenho da rede de forma geral.</p>
<p>Lembrando que caso seu roteador tenha recursos limitados/escassos, habilitar o <strong>packet steering+irqbalance</strong> pode piorar o desempenho da rede. Muitas vezes isto acontece pois a implementação em software destes recursos consome mais poder de processamento da CPU. Caso o processador não seja eficiente o suficiente, sendo um gargalo para o sistema, ou sofrer de throttling por causa do aumento da temperatura; o desempenho da rede pode piorar.</p>
<h2>Os requisitos para seguir este tutorial</h2>
<p>Este tutorial tem foco em resolver o problema de <strong>BufferBloat</strong> da sua rede doméstica/corporativa através de recursos de software presentes no repositório do <strong>OpenWRT</strong>. Desta forma é necessário que seu roteador tenha o <strong>OpenWRT</strong> instalado.</p>
<p>Lembrando que as variáveis controláveis deste processo estão dentro da nossa rede, vamos habilitar as funcionalidades do roteador para mitigar o <strong>bufferbloat</strong> da nossa rede particular/doméstica. Não temos como mitigar o <strong>bufferbloat</strong> externamente a nossa rede.</p>
<p>De forma geral, roteadores de marcas conceituadas no mercado, já possuem estas opções de <strong>QoS/SQM + Packet Steerring</strong> implementadas em seus respectivos sistemas embarcados. Antes de cogitar instalar <strong>OpenWRT</strong> em seu roteador ou comprar um roteador habilitado, verifique se já não possui esta funcionalidade no seu roteador atual.</p>
<h2>Passo a passo para resolver o problema de <strong>Bufferbloat</strong> com OpenWRT</h2>
<p>De forma geral, a metodologia utilizada, segue as etapas:</p>
<ol>
<li>Realizar teste de velocidade da rede em vários momentos do dia, para ter uma média de velocidade de download e upload</li>
<li>Realizar o teste de <strong>BufferBloat</strong> e verificar o estado da rede</li>
<li>Habilitar <strong>packet steering</strong>, <strong>qos</strong>/<strong>sqm</strong> e <strong>irqbalance</strong> no <strong>OpenWRT</strong></li>
<li>Configurar as métricas do <strong>QoS</strong>/<strong>SQM</strong></li>
<li>Testar novamente a rede para verificar o estado do Bufferbloat</li>
<li>Repetir os itens 4 e 5 (realizando um ajuste fino) até conseguir um resultado satisfatório</li>
</ol>
<p>Segue então os passos de forma detalhada, para resolver os problemas de <strong>bufferbloat</strong> de sua rede:</p>
<h3>Passo 1</h3>
<p>O primeiro passo é verificar a velocidade da internet. Mesmo se souber exatamente a velocidade contratada, é interessante realizar o teste, pois muitas operadoras oferecem uma banda de internet um pouco maior. O ideal é realizar testes ao longo do dia e ter uma média de velocidade. Alguns sites recomendados para realizar teste:</p>
<ul>
<li><a href="https://www.speedtest.net/pt" rel="nofollow">Speedtest</a></li>
<li><a href="https://fast.com/" rel="nofollow">Fast</a></li>
<li><a href="https://speed.cloudflare.com/" rel="nofollow">Speed Cloudflare</a></li>
</ul>
<p>Eu particularmente gosto do teste da cloudflare para testes reais de velocidade. O Speedtest muitas vezes mostra velocidades de pico da rede. Mas tive mais sucesso utilizando o speedtest para ajustes finos de velocidade junto ao <strong>QoS</strong> (vou explicar melhor nos próximos passos).</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1648" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-teste-speedtest-sem-qos-sqm-irqbalance-packet-steering.png" alt="Bufferbloat - speedtest sem ligar QoS QSM Packet Sterring e irqbalance" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-teste-speedtest-sem-qos-sqm-irqbalance-packet-steering.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-teste-speedtest-sem-qos-sqm-irqbalance-packet-steering-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2</h3>
<p>Agora precisamos verificar a qualidade da rede no quesito de teste de <strong>bufferbloat</strong>. Uma opção é acessar o site da Waveform e realizar o teste.</p>
<pre>https://www.waveform.com/tools/bufferbloat</pre>
<p>Para realizar este teste adequadamente, é interessante que sua rede doméstica esteja sem utilização. O teste consiste em comparar a latência da sua rede com fluxo baixo de requisições. Em seguida ele compara a latência com um fluxo alto de transferência. Se tiver outros usuários utilizando a rede, o teste pode perder um pouco a precisão.</p>
<p>O resultado do teste é baseado em métricas de qualidade, com notas baseadas em letras: <strong>A+</strong>, <strong>A</strong>, <strong>B</strong>, <strong>C</strong>, <strong>D</strong>…</p>
<p>Para conseguir um resultado excelente, é interessante que no teste o aumento de latência com fluxo alto de transferências seja muito baixo, próximo a zero. Desta forma, irá conseguir nota <strong>A+</strong>.</p>
<p>Lembrando que muitas vezes a rede da operadora pode estar mal dimensionada, dificultando mitigar os problemas de <strong>bufferbloat</strong> ponto a ponto. Mas pelo menos, dentro da sua rede doméstica, poderá otimizar da melhor forma possível.</p>
<p>Neste teste, repare no aumento da latência em download e upload, e sua nota. Se receber uma nota <strong>A</strong> ou <strong>B</strong>, provavelmente já possui um bom roteador, necessário apenas alguns ajustes. Se receber nota <strong>C</strong> ou pior, talvez sua rede tenha alta utilização, e seus equipamentos estejam subdimensionados.</p>
<p>Lembrando que o indicado é realizar este teste via cabo de rede, evitar as latências extras que o wifi pode adicionar na rede.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1646" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-teste-waveform-sem-qos-sqm-irqbalance-packet-steering.png" alt="Bufferbloat - Teste sem habilitar QoS QSM Packet Steering e irqbalance" width="768" height="785" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-teste-waveform-sem-qos-sqm-irqbalance-packet-steering.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-teste-waveform-sem-qos-sqm-irqbalance-packet-steering-294x300.png 294w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3</h3>
<p>Após realizar os testes acima e anotar os resultados, vamos para a etapa de configuração do roteador.</p>
<p>Conecte no seu roteador com <strong>OpenWRT</strong> instalado. Neste exemplo, o roteador está configurado no IP e será acessado pelo browser:</p>
<pre>192.168.1.1</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1502" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-tela-login-roteador.png" alt="OpenWRT - Tela de login" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-tela-login-roteador.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-tela-login-roteador-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4</h3>
<p>Agora vamos ativar a opção de <strong>Packet Sterring</strong>.</p>
<p>No menu, vá na aba “<strong>Network</strong>” e selecione a opção:</p>
<pre>Interfaces</pre>
<p>Na página de Interfaces, selecione a aba de:</p>
<pre>Global network options</pre>
<p>Agora marque o checkbox de:</p>
<pre>Packet Steering</pre>
<p>Clique na opção de:</p>
<pre>Save &amp; Apply</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1613" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-network-interface-menu.png" alt="OpenWRT - pagina network - interfaces" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-network-interface-menu.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-network-interface-menu-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1614" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-network-interfaces-pagina.png" alt="OpenWRT - pagina interfaces" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-network-interfaces-pagina.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-network-interfaces-pagina-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1615" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-network-interfaces-packet-steering.png" alt="OpenWRT - pagina network - interfaces - global network options" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-network-interfaces-packet-steering.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-network-interfaces-packet-steering-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>Vá novamente até o menu, selecione a aba “System” e clique na opção:</p>
<pre>Software</pre>
<p>Na página de instalação de softwares, clique no botão:</p>
<pre>Update lists…</pre>
<p>Agora está tudo pronto para buscar a instalar novos pacotes no roteador.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1616" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-system-software-menu.png" alt="OpenWRT - Menu para página system - software" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-system-software-menu.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-system-software-menu-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1617" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-software-pagina.png" alt="OpenWRT - Página instalação de softwares" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-software-pagina.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-software-pagina-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6 &#8211; Instalar suporte QoS/SQM no OpenWRT</h3>
<p>No textfield do campo Filter, busque pelo pacote:</p>
<pre>luci-app-sqm</pre>
<p>O pacote vai aparecer na lista abaixo, clique no botão:</p>
<pre>Install…</pre>
<p>Lembrando que ao instalar o luci-app-sqm, ele já vai instalar os demais pacotes de dependência, como o sqm-scripts, etc.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1619" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-software-luci-app-sqm.png" alt="OpenWRT - busca para instalar luci-app-sqm" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-software-luci-app-sqm.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-software-luci-app-sqm-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1618" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-software-luci-sqm-scripts.png" alt="OpenWRT - busca para instalar luci-sqm-scripts" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-software-luci-sqm-scripts.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-software-luci-sqm-scripts-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7 &#8211; Instalar, ativar, verificar funcionamento e testar o irqbalance</h3>
<h4>Instalar o irqbalance</h4>
<p>Agora vamos instalar o pacote do irqbalance.<br />
Novamente, vá até o textfield de Filter, mas agora busque pelo pacote:</p>
<pre>irqbalance</pre>
<p>O pacote irqbalance vai aparecer logo abaixo, clique no botão:</p>
<pre>Install…</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1622" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-software-irqbalance.png" alt="OpenWRT - Página de instalação de software, busca por irqbalance" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-software-irqbalance.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-software-irqbalance-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Verificar funcionamento irqbalance</h4>
<p>Lembrando que o pacote irqbalance não vem ativado por padrão. É necessário ir até a aba do menu “System” e clicar na opção:</p>
<pre>Startup</pre>
<p>É necessário habilitar (enable) o mesmo no início do sistema. Clique no botão</p>
<pre>Enable</pre>
<p>Em seguida, clique no botão:</p>
<pre>Restart</pre>
<p>Para ter certeza que o daemon está ativo, vá na aba do menu “Status” e clique na opção:</p>
<pre>Processes</pre>
<p>Se encontrar o processo do irqbalance, como mostrado na imagem, o daemon está em funcionamento. Mas é comum que o mesmo não inicie pela interface. Caso o seu não esteja habilitado, será necessário habilitar pela linha de comando.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1623" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-system-startup-menu.png" alt="OpenWRT - Menu System - Startup" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-system-startup-menu.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-system-startup-menu-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1624" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-system-startup-pagina.png" alt="OpenWRT - verificar os processos em startup do sistema" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-system-startup-pagina.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-system-startup-pagina-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1626" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-status-processes-menu.png" alt="OpenWRT - Menu System - Processes" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-status-processes-menu.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-status-processes-menu-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1625" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-status-processes-pagina-irqbalance.png" alt="OpenWRT - verificar os processos funcionamento - irqbalance" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-status-processes-pagina-irqbalance.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-status-processes-pagina-irqbalance-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Ativar irqbalance pela linha de comando</h4>
<p>Conecte no roteador por <strong>SSH</strong>, com usuário@IP. Neste exemplo, vamos conectar com o usuário root.</p>
<pre>ssh root@192.168.1.1</pre>
<p>Edite o arquivo de configuração do irqbalance (se utilizar o editor nano, precisa instalar o mesmo antes):</p>
<pre>nano /etc/config/irqbalance</pre>
<p>Na linha:</p>
<pre>option enable '0'</pre>
<p>Altere para:</p>
<pre>option enable '1'</pre>
<p>Salve as modificações e feche o modo edição do arquivo.</p>
<p>Necessário então ativar o serviço:</p>
<pre>service irqbalance start</pre>
<p>Para ver o funcionamento, execute o comando:</p>
<pre>service irqbalance status</pre>
<p>Se receber a mensagem de “running” o daemon está ativo.</p>
<h4>Testar irqbalance pela linha de comando</h4>
<p>Bom, se seguiu os passos anteriores corretamente, o daemon do irqbalance deve estar ativo. Porém é interessante verificar o funcionamento. Nesta etapa, precisamos verificar se o <strong>irqbalance</strong> está dividindo as requisições de rede entre todos os núcleos disponíveis da CPU. Vamos executar o comando abaixo e verificar se na interface eth0 (WAN no meu caso) as requisições estão sendo distribuídas:</p>
<pre>cat /proc/interrupts</pre>
<p>Vamos reparar na saída abaixo:</p>
<pre>root@OpenWrt:~# cat /proc/interrupts
	<strong>CPU0</strong>	<strong>CPU1</strong>	<strong>CPU2</strong>	<strong>CPU3</strong>
   3:	499	130	250	795	GICv2 30 Level arch_timer
 11:	971	0	0	0	GICv2 65 Level fe00b880.mailbox
 14:	2	0	0	0	GICv2 153 Level uart-pl011
 17:	31	0	0	0	GICv2 114 Level DMA IRQ
 24:	1	0	0	0	GICv2 66 Level VCHIQ doorbell
 25:	629	0	0	0	GICv2 158 Level mmc1, mmc0
<strong> 31:	<span style="color: #339966;">740</span>	<span style="color: #ff6600;">0</span>	<span style="color: #ff6600;">0</span>	<span style="color: #ff6600;">0</span>	GICv2 189 Level eth0
 32:	<span style="color: #339966;">141</span>	<span style="color: #ff6600;">0</span>	<span style="color: #ff6600;">0</span>	<span style="color: #ff6600;">0</span>	GICv2 190 Level eth0</strong>
 38:	0	0	0	0	GICv2 175 Level PCIe PME, aerdrv
 39:	781	0	0	0	BRCM STB PCIe MSI 524288 Edge eth1
IPI0:	248	546	1250	390	Rescheduling interrupts
IPI1:	30	45	34	68	Function call interrupts
IPI2:	0	0	0	0	CPU stop interrupts
IPI3:	0	0	0	0	CPU stop (for crash dump) interrupts
IPI4:	0	0	0	0	Timer broadcast interrupts
IPI5:	174	870	138	439	IRQ work interrupts
IPI6:	0	0	0	0	CPU wake-up interrupts
Err:	0
</pre>
<p>A primeira coluna do exemplo acima é destinada aos IRQ’s. Neste exemplo, estamos utilizando um <strong><a href="https://viniciuspaes.com/raspberry-pi/tutorial-roteador-raspberry-pi-openwrt/">Roteador com Raspberry Pi CM4</a></strong>, que possui 4 núcleos. Então as 4 colunas seguintes, após a coluna de IRQ diz respeito a cada núcleo. Repare nas linhas do IRQ 31 e 32, que dizem respeito a interface <strong>ETH0</strong> (<strong>wan</strong>). O ideal é que as requisições estivessem distribuídas entre os 4 núcleos e não concentradas apenas no primeiro número (<strong>CPU0</strong>).</p>
<p>Caso tenha problema no <strong>IRQ balance</strong>, é possível que sua internet fique mais lenta quando ativar o <strong>QoS/SQM</strong>, pois apenas um núcleo não irá conseguir processar toda a demanda. Verificando no fórum do <strong>OpenWRT</strong>, em uma das atualizações da versão 22.03 houve problemas de execução do <strong>irqbalance</strong> e uma issue foi aberta no github. Caso venha a ter problemas, o recomendado é atualizar todo o sistema para uma versão atualizada mais estável.</p>
<p>Caso não seja possível atualizar o sistema operacional de forma alguma, é possível definir manualmente qual núcleo cada interface deve utilizar. Ver a página do <strong><a href="https://openwrt.org/docs/guide-user/services/irqbalance" rel="nofollow">mantenedor no irqbalance</a></strong> para mais detalhes.</p>
<p>Atualizei o OpenWRT para a última versão disponível e o IRQbalance voltou a funcionar:</p>
<pre><strong>	 CPU0</strong>	 <strong>CPU1</strong>	 <strong>CPU2</strong>	 <strong>CPU3</strong>
 11:	10918	30975	23301	27570	GICv2 30 Level arch_timer
 18:	283	0	0	0	GICv2 65 Level fe00b880.mailbox
 21:	2	0	0	0	GICv2 153 Level	 uart-pl011
 24:	31	0	0	0	GICv2 114 Level	 DMA IRQ
 31:	133	0	0	0	GICv2 66 Level VCHIQ doorbell
 32:	9339	0	0	0	GICv2 158 Level	 mmc1, mmc0
 <strong><span style="color: #339966;">39:	568	10111	0	0	GICv2 189 Level eth0</span>
 <span style="color: #339966;">40:	136	0	0	65735	GICv2 190 Level eth0</span></strong>
 46:	0	0	0	0	GICv2 175 Level PCIe PME, aerdrv
 47:	14371	0	0	0	BRCM STB PCIe MSI 524288 Edge eth1
IPI0:	2032	2198	2114	2137	Rescheduling interrupts
IPI1:	20282	17235	41603	32947	Function call interrupts
IPI2:	0	0	0	0	CPU stop interrupts
IPI3:	0	0	0	0	CPU stop (for crash dump) interrupts
IPI4:	0	0	0	0	Timer broadcast interrupts
IPI5:	7550	9874	3154	7590	IRQ work interrupts
IPI6:	0	0	0	0	CPU wake-up interrupts
Err:	0
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1627" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-ssh-irqbalance.png" alt="OpenWRT - ssh roteador openwrt" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-ssh-irqbalance.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-ssh-irqbalance-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1628" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-ssh-irqbalance-logged-in.png" alt="OpenWRT - ssh roteador openwrt - logado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-ssh-irqbalance-logged-in.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-ssh-irqbalance-logged-in-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1629" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-edit-config.png" alt="OpenWRT - editar arquivo de configuração irqbalance" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-edit-config.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-edit-config-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1630" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-edit-config-enable-daemon.png" alt="OpenWRT - arquivo de configuração irqbalance editado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-edit-config-enable-daemon.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-edit-config-enable-daemon-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1634" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-start.png" alt="OpenWRT - start irqbalance service" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-start.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-start-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1631" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-start-daemon.png" alt="OpenWRT - iniciar serviço irqbalance" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-start-daemon.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-start-daemon-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1654" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-funcionando.png" alt="Bufferbloat - IRQbalance em funcionamento: cat /proc/interrupts" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-funcionando.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-irqbalance-funcionando-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8</h3>
<p>Com todos os softwares instalados, é possível agora ativar o <strong>QoS</strong>/<strong>SQM</strong>.</p>
<p>Acesse a aba do menu “Network” e selecione a opção:</p>
<pre>SQM QoS</pre>
<p>Agora marque a caixa com o escrito:</p>
<pre>Enable this SQM instance.</pre>
<p>Em interface name, precisamos selecionar nossa <strong>interface WAN</strong>. No meu exemplo, minha WAN está em <strong>eth0</strong>. Então vou selecionar:</p>
<pre>eth0</pre>
<p>Agora precisamos configurar o “ingress” e “egress” shaping. Basicamente é definir as velocidades da nossa internet. É aqui que precisamos realizar os ajustes finos, por exemplo, se minha internet possui 750Mbps de Download, uma boa janela para definir o “ingress shaping” (download) é algo em torno de 80 a 95% da velocidade média. Vamos começar com algo próximo a 95% da minha velocidade total, então vou configurar o “ingress shaping” para:</p>
<pre>700000</pre>
<p>Para o “egress” shaping (upload), vou seguir com a mesma metodologia. Tenho em média 370Mbps de velocidade de download. Então vou colocar algo próximo de 95% da mesma. Vou colocar meu “egress shaping” com o valor de:</p>
<pre>350000</pre>
<p>Agora precisamos verificar as configurações na aba:</p>
<pre>Queue Discipline</pre>
<p>Por padrão, o Queueing discipline vem selecionado com o <strong>algoritmo cake</strong>. Não vamos realizar modificações, pois o <strong>Raspberry Pi 4</strong> tem processamento suficiente para este algoritmo, com esta banda de internet.</p>
<p>Também vamos deixar o queue setup script com o “<strong>piece_of_cake.qos</strong>”. Que é o padrão da instalação.</p>
<p>É interessante você verificar o algoritmo que atenda melhor sua demanda, caminhamos por estas opções apenas para evidenciar as escolhas.</p>
<p>Vamos agora selecionar a aba:</p>
<pre>Link Layer Adaptation</pre>
<p>Na primeira opção, devemos selecionar a tecnologia de link layer que vamos utilizar. Vou utilizar a opção:</p>
<pre>Ethernet with overhead…</pre>
<p>No campo de textfield de <strong>Per Packed Overhead (bytes)</strong> para minha internet de fibra, vou selecionar o valor de:</p>
<pre>44</pre>
<p>Agora vamos clicar no botão:</p>
<pre>Salvar e Aplicar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1635" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-menu.png" alt="OpenWRT - Menu SQM/QoS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-menu.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-menu-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1636" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-enable-interface-name.png" alt="OpenWRT - Página QoS SQM - definir wan e habilitar qos/sqm" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-enable-interface-name.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-enable-interface-name-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1637" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-ingress-egress.png" alt="OpenWRT - Página QoS SQM - definir velocidade da rede e ingress egress shaping" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-ingress-egress.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-ingress-egress-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1638" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-queueing-cake.png" alt="OpenWRT - Página QoS SQM - algoritmo cake utilizado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-queueing-cake.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-queueing-cake-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1639" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-queue-script-piece-of-cake.png" alt="OpenWRT - Página QoS SQM - script piece of cake utilizado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-queue-script-piece-of-cake.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-queue-script-piece-of-cake-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1640" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-link-layer-overhead.png" alt="OpenWRT - Página QoS SQM -definir link layer e packet overhead" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-link-layer-overhead.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-link-layer-overhead-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1641" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-save-apply.png" alt="OpenWRT - Página QoS SQM -salvar e aplicar as mudanças" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-save-apply.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-network-sqm-qos-pagina-save-apply-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9</h3>
<p>Tudo pronto, agora precisamos verificar os resultados e realizar o setup fino.<br />
Acesse novamente a página de teste de bufferbloat:</p>
<pre>https://www.waveform.com/tools/bufferbloat</pre>
<p>Realize o teste e verifique qual a latência atingida em “Download Active” e “Upload Active”. O ideal é ficar com algo próximo de 0 de latência, para conseguir nota A+. Caso ainda tenha recebido latência, não tem problema, será necessário realizar ajustes finos.</p>
<p>O ajuste fino nada mais é que ir na página “Network”-&gt;”SQM QoS” e realizar mudanças no “ingress” e “egress shaping”. Vá diminuindo os valores e realizando testes até conseguir uma latência em “Download” e “Upload Active” igual a zero. Lembre-se de salvar e aplicar as mudanças, toda vez que alterar os valores.</p>
<p>Se sua internet sofrer muitas variações de velocidade durante o dia, é recomendado colocar o ingress e egress shaping na casa dos 80% da velocidade média.</p>
<p>Tudo certo! Problemas de bufferbloat foram mitigados em nossa rede!</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1650" src="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-teste-waveform-com-qos-sqm-irqbalance-packet-steering.png" alt="OpenWRT - Bubberbloat resolvido utilizando QoS QSM Packet Steering e IRQbalance" width="768" height="785" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-teste-waveform-com-qos-sqm-irqbalance-packet-steering.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/bufferbloat-openwrt-teste-waveform-com-qos-sqm-irqbalance-packet-steering-294x300.png 294w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Conlusões</h2>
<p>Este tutorial abordou uma forma de resolver problemas de <strong>bufferbloat</strong> que podem afetar uma rede doméstica. Existem diversas outras parametrizações que podem ser realizadas, a fim de maximizar o potencial da rede, além de outros algoritmos de <strong>SQM/QoS</strong> que podem ser utilizados. Mas as configurações padrão são também eficientes de forma geral.</p>
<p>Espero que tenham gostado deste passo a passo! Qualquer dúvida ou sugestão, basta escrever nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/openwrt/tutorial-resolver-problema-bufferbloat-openwrt/">Tutorial como resolver problema de Bufferbloat com OpenWRT</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/openwrt/tutorial-resolver-problema-bufferbloat-openwrt/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial configurar DNS Dinâmico (DDNS) no OpenWRT exemplo com Google Domains</title>
		<link>https://viniciuspaes.com/openwrt/tutorial-configurar-dns-dinamico-ddns-openwrt-google-domains/</link>
					<comments>https://viniciuspaes.com/openwrt/tutorial-configurar-dns-dinamico-ddns-openwrt-google-domains/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Wed, 03 May 2023 17:57:29 +0000</pubDate>
				<category><![CDATA[openwrt]]></category>
		<category><![CDATA[DDNS]]></category>
		<category><![CDATA[DNS Dinâmico]]></category>
		<category><![CDATA[OpenWRT]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=1533</guid>

					<description><![CDATA[<p>Saiba como instalar e configurar o DNS Dinâmico (DDNS) no OpenWRT. Veja um exemplo prático de configuração com o Google Domains.</p>
<p>O post <a href="https://viniciuspaes.com/openwrt/tutorial-configurar-dns-dinamico-ddns-openwrt-google-domains/">Tutorial configurar DNS Dinâmico (DDNS) no OpenWRT exemplo com Google Domains</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>O objetivo deste tutorial é habilitar a opção de configuração de DNS Dinâmico pela interface do OpenWRT. Vamos detalhar todos os softwares necessários e demonstrar um exemplo de configuração de um domínio no Google Domains para receber um IP dinâmico da nossa rede.</p>
<h2>Visão geral de utilização de DNS dinâmico</h2>
<h3>Mas afinal, para que serve o DNS dinâmico?</h3>
<p>Um exemplo prático, é ter uma forma de acessar sua rede local, mesmo quando estiver fora da sua casa.</p>
<h3>Qual a dinâmica que se faz necessário utilizar DDNS</h3>
<p>Alguns provedores de internet fornecem IP real para seus clientes, ou seja, um IP que pode ser acessado de rede externa (internet). Mas este IP muitas vezes não é fixo, eventualmente quando o equipamento de rede de sua provedora sofre alguma manutenção, ele pode reiniciar o DHCP delegando IP’s diferentes aos clientes.</p>
<p>Uma alternativa é configurar <strong>DDNS</strong>, este serviço avisa a mudança do seu IP da sua residência para serviço de terceiros.</p>
<h3>Quais as principais empresas que fornecem o serviço de DDNS?</h3>
<p>De forma geral, as empresas abaixo oferecem o serviço de <strong>DNS dinâmico</strong>. Elas vinculam o seu IP a um endereço de subdomínio, desta forma, acessando aquele subdomínio, você sempre é direcionado ao IP da sua casa:</p>
<ul>
<li>No-ip</li>
<li>FreeDNS</li>
<li>ClouDNS</li>
<li>Dynu</li>
<li>Duck DNS</li>
<li>DynDNS</li>
<li>Digital Ocean</li>
<li>Google Domains</li>
<li>Cloudflare</li>
<li>CNkuai</li>
<li>Gandi</li>
<li>Godaddy</li>
<li>Amazon AWS Route 53</li>
</ul>
<p>Mas lembrando que você precisa ter um software em sua residência que avise esta mudança do seu IP de internet, então neste exemplo, o software <strong>OpenWRT</strong> instalado em nosso roteador fará esta comunicação.</p>
<h3>Mas como pode ser útil o acesso através de DDNS?</h3>
<p>Imagina que você possui um sistema de câmeras de vigilância em sua residência que possuem uma interface web de acompanhamento. Quando você está conectado na sua rede local, você consegue acessar esta interface tranquilamente e ver as câmeras.</p>
<p>Mas e quando você está fora da sua residência, muitas vezes conectado pela interface 4G/5G do seu celular, como ter acesso a sua rede local para ver as câmeras? Uma opção é conectar ao IP da sua residência e caso o roteador esteja configurado para redirecionar as requisições da porta 80/443 para a interface das suas câmeras, você conseguirá este acesso externo facilmente. Com um serviço de DDNS ativado, você sempre terá um nome de domínio/subdomínio vinculado ao IP da sua residência, facilitando este processo. Só um lembrete, os novos serviços de câmeras de vigilância muitas vezes possuem um pacote de serviços que contemplam este acesso externo, este exemplo é só para exemplificar como poderia ser útil.<br />
Um outro exemplo prático. Imagina que possui um servidor local na sua residência, onde guarda arquivos, fotos da família, etc. O <strong>DDNS</strong> fornece uma forma prática de acessar sua rede, mesmo quando está fora de casa e não lembra seu IP.</p>
<h2>Requisitos Necessários</h2>
<ul>
<li>Seu roteador de internet possui <strong>OpenWRT</strong> instalado</li>
<li>Sua provedora de internet fornece IP com acesso externo (IP real)</li>
</ul>
<p>Para testar se seu IP tem visibilidade externa, descubra qual seu ip de internet (uma rápida pesquisa no google já encontra uma solução). Depois no seu celular, desligue a conexão wifi e habilite 4G/5G. Digite seu IP no browser e verifique se você se conecta ao seu roteador/modem da provedora.</p>
<p>Caso não tenha conexão, pode ser que seu roteador/modem esteja bloqueando login vindo da internet. Tente realizar conexão com seu modem/roteador pela rede local, habilite opção de conexão pela rede externa (wan) e tente novamente.</p>
<p>Caso seja possível a conexão, então você tem um IP real. Lembrando que o IP real pode não ser fixo, que é a proposta de habilitar o DDNS.</p>
<h2>Tutorial configurar DNS Dinâmico (DDNS) no OpenWRT, exemplo prático com o Google Domains</h2>
<h3>Passo 1</h3>
<p>Faça login no seu roteador, acessando o IP do mesmo pela interface web. Neste exemplo, o roteador está configurado com o ip:</p>
<pre>192.168.1.1</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1502" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-tela-login-roteador.png" alt="OpenWRT - Tela de login" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-tela-login-roteador.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-tela-login-roteador-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2</h3>
<p>No menu superior, acesse a aba de:</p>
<pre>System</pre>
<p>Em seguida, clique no link com a opção:</p>
<pre>Software</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1538" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-menu-system-software.png" alt="OpenWRT - visão do menu e da opção de System e Software" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-menu-system-software.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-menu-system-software-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3</h3>
<p>Dentro da página de Software, clique no botão:</p>
<pre>Update lists…</pre>
<p>Aguarde até o package manager terminar a execução.<br />
Quando finalizar, um log do processo será apresentado, clique no botão:</p>
<pre>Dismiss</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1539" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-update-lists-button.png" alt="OpenWRT - update lists" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-update-lists-button.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-update-lists-button-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1540" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-updating-lists.png" alt="OpenWRT - updating lists" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-updating-lists.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-updating-lists-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1541" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-updating-lists-output.png" alt="OpenWRT - update lists process - verbose output" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-updating-lists-output.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-updating-lists-output-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1542" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-updating-lists-output-dismiss.png" alt="OpenWRT - update lists process - verbose output 2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-updating-lists-output-dismiss.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-updating-lists-output-dismiss-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4</h3>
<p>Ainda na tela da página de Software, vá até o text box de busca que tem o nome “Filter” e digite o nome do pacote a ser instalado:</p>
<pre>ddns-scripts</pre>
<p>Logo abaixo será apresentado dados sobre o pacote e um botão para iniciar a instalação. Clique então em:</p>
<pre>Install…</pre>
<p>Será aberto um modal com mais dados sobre a instalação, as dependências do pacote, etc. Esta é uma tela de confirmação, caso esteja de acordo, clique no botão:</p>
<pre>Install</pre>
<p>Será apresentado o log de instalação do package manager. Clique no botão:</p>
<pre>Dismiss</pre>
<p>Você voltará novamente para a página de Software e poderá ser possível que o pacote ddns-script aparece com o botão escrito “Installed”.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1545" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ddns-scripts.png" alt="OpenWRT - busca por ddns-scripts" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ddns-scripts.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ddns-scripts-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1546" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ddns-scripts-confirmar.png" alt="OpenWRT - instalar ddns-scripts" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ddns-scripts-confirmar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ddns-scripts-confirmar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1547" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ddns-scripts-dismiss.png" alt="OpenWRT - package manager verbose ddns-scripts" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ddns-scripts-dismiss.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ddns-scripts-dismiss-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1544" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-ddns-scripts.png" alt="OpenWRT - ddns-scripts instalado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-ddns-scripts.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-ddns-scripts-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>Repita os passos de instalação do passo 4 para o pacotes:</p>
<ul>
<li><strong>luci-app-ddns</strong></li>
<li><strong>ca-certificates</strong></li>
<li><strong>ca-bundle</strong></li>
<li><strong>curl</strong></li>
<li><strong>wget-ssl</strong> (não instale o wget-no-ssl, quando instalei aqui todos os downloads que realizava pelo sistema pararam de funcionar)</li>
<li><strong>luci-i18n-ddns-<span style="color: #ff6600;">en</span></strong> (caso queira tradução da interface em outro idioma substitua &#8220;<span style="color: #ff6600;"><strong>en</strong></span>&#8221; pela sigla do idioma desejado)</li>
</ul>
<p>Abaixo segue as imagens da instalação de todos os pacotes citados acima:</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1551" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-apps-ddns.png" alt="OpenWRT - luci-app-ddns buscar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-apps-ddns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-apps-ddns-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1552" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-apps-ddns-confirmar.png" alt="OpenWRT - luci-app-ddns instalar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-apps-ddns-confirmar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-apps-ddns-confirmar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1553" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-apps-ddns-dismiss.png" alt="OpenWRT - luci-app-ddns log verbose" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-apps-ddns-dismiss.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-apps-ddns-dismiss-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1550" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-luci-apps-ddns.png" alt="OpenWRT - luci-app-ddns instalado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-luci-apps-ddns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-luci-apps-ddns-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1556" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-certificates.png" alt="OpenWRT - ca-certificates buscar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-certificates.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-certificates-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1557" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-certificates-confirmar.png" alt="OpenWRT - ca-certificates instalar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-certificates-confirmar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-certificates-confirmar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1558" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-certificates-dismiss.png" alt="OpenWRT - ca-certificates package manager verbose install" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-certificates-dismiss.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-certificates-dismiss-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1555" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-ca-certificates.png" alt="OpenWRT - ca-certificates instalado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-ca-certificates.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-ca-certificates-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1561" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-bundle.png" alt="OpenWRT - ca-bundle buscar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-bundle.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-bundle-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1562" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-bundle-confirmar.png" alt="OpenWRT - ca-bundle instalar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-bundle-confirmar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-bundle-confirmar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1563" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-bundle-dismiss.png" alt="OpenWRT - ca-bundle package manager verbose install" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-bundle-dismiss.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-ca-bundle-dismiss-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1560" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-ca-bundle.png" alt="OpenWRT - ca-bundle instalado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-ca-bundle.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-ca-bundle-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1566" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-curl.png" alt="OpenWRT - curl buscar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-curl.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-curl-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1567" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-curl-confirmar.png" alt="OpenWRT - curl instalar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-curl-confirmar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-curl-confirmar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1568" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-curl-dismiss.png" alt="OpenWRT - curl package manager verbose" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-curl-dismiss.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-curl-dismiss-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1565" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-curl.png" alt="OpenWRT - curl instalado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-curl.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-curl-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1571" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-wget-ssl.png" alt="OpenWRT - wget-ssl buscar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-wget-ssl.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-wget-ssl-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1572" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-wget-ssl-confirmar.png" alt="OpenWRT - wget-ssl instalar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-wget-ssl-confirmar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-wget-ssl-confirmar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1573" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-wget-ssl-dismiss.png" alt="OpenWRT - wget-ssl package manager verbose" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-wget-ssl-dismiss.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-wget-ssl-dismiss-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1570" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-wget-ssl.png" alt="OpenWRT - wget-ssl instalado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-wget-ssl.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-wget-ssl-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1575" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-i18n-ddns-en.png" alt="OpenWRT - luci-i18n-ddns-en buscar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-i18n-ddns-en.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-i18n-ddns-en-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1576" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-i18n-ddns-en-confirmar.png" alt="OpenWRT - luci-i18n-ddns-en instalar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-i18n-ddns-en-confirmar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-i18n-ddns-en-confirmar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1577" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-i18n-ddns-en-dismiss.png" alt="OpenWRT - luci-i18n-ddns-en package manager verbose" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-i18n-ddns-en-dismiss.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalar-luci-i18n-ddns-en-dismiss-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1574" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-luci-i18n-ddns-en.png" alt="OpenWRT - luci-i18n-ddns-en instalado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-luci-i18n-ddns-en.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-instalado-luci-i18n-ddns-en-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6</h3>
<p>Ainda na página de “Software” é necessário recarregar a página para que os softwares instalados apareçam no menu. No windows a tecla de refresh é o F5.</p>
<p>Agora vá no menu superior, na aba:</p>
<pre>Services</pre>
<p>E clique na opção de:</p>
<pre>Dynamic DNS</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1579" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-refresh-page-f5.png" alt="OpenWRT - refresh/reload dynamic dns page" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-refresh-page-f5.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-software-refresh-page-f5-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1578" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-menu-services-dynamic-dns.png" alt="OpenWRT - menu Serviços - DYnamic DNS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-menu-services-dynamic-dns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-menu-services-dynamic-dns-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7</h3>
<p>Na página de “Dynamic DNS” temos a opção de configurar IPv4 ou IPv6. Neste exemplo, vou configurar IPv4 para um subdomínio de teste que tenho no Google Domains.</p>
<p>Na linha de serviço myddns_ipv4, clique no botão:</p>
<pre>Edit</pre>
<p>Em “lookup hostname” vou colocar o nome do subdomínio que vou configurar, no caso, vai ser:</p>
<pre><span style="color: #ff6600;">teste.viniciuspaes.com</span></pre>
<p>Em “IP address version”, vou manter:</p>
<pre>IPv4-Address</pre>
<p>Em “DDNS service provider”, vou escolher:</p>
<pre>Google.com</pre>
<p>Lembre que no campo DDNS Service Provider você deve escolher a empresa que irá configurar o DNS Dinâmico. No meu caso vou configurar pelo Google Domains.</p>
<p>No fim da página é preciso confirmar a mudança de serviço “Really switch service?”, clique então no botão:</p>
<pre>Switch service</pre>
<p>Ao clicar no botão, 3 novos campos vão aparecer, estes são os campos de autenticação no DDNS do Google Domains.</p>
<p>Por enquanto deixe esta página aberta e vamos abrir uma nova aba para acessar o Google Domains.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1581" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns.png" alt="OpenWRT - Página Dynamic DNS - scroll para fim da página" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1582" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4.png" alt="OpenWRT - Página Dynamic DNS - scroll para fim da página - editar myddns_ipv4" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1583" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-1.png" alt="OpenWRT - Página Dynamic DNS - campos a serem atualizados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-1.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-1-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1584" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-2.png" alt="OpenWRT - Página Dynamic DNS - campos atualizados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1585" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-3.png" alt="OpenWRT - Página Dynamic DNS - switch service" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1586" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-4.png" alt="OpenWRT - Página Dynamic DNS - switch service - preencher campos com credenciais" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8</h3>
<p>Faça login no Google Domains, selecione o domínio em que vai configurar o <strong>DDNS</strong> e selecione a opção do menu “DNS”.</p>
<p>No fim da página clique na opção:</p>
<pre>Mostrar configurações avançadas</pre>
<p>Vai aparecer o campo de “DNS Dinâmico”, clique no link:</p>
<pre>Gerenciar DNS dinâmico</pre>
<p>Neste exemplo vou criar uma entrada do tipo A. Vou habilitar o <strong>DDNS</strong> para o subdomínio:</p>
<pre><span style="color: #ff6600;">teste.viniciuspaes.com</span></pre>
<p>Em seguida clico em:</p>
<pre>Salvar</pre>
<p>Agora desça para o fim da página e na configuração do DNS Dinâmico agora vai aparecer um link:</p>
<pre>Ver credenciais</pre>
<p>Clique no link descrito acima e exiba as informações das credenciais. Anote as credenciais de:</p>
<pre>Nome de usuário
Senha</pre>
<p>Agora volte para a aba que deixamos aberto o OpenWRT.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1588" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-5-google-domains-configuracoes-avancadas-dns.png" alt="OpenWRT - Configuração Google Domains DDNS 1" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-5-google-domains-configuracoes-avancadas-dns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-5-google-domains-configuracoes-avancadas-dns-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1589" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-6-google-domains-gerenciar-dns-dinamico.png" alt="OpenWRT - Configuração Google Domains DDNS 2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-6-google-domains-gerenciar-dns-dinamico.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-6-google-domains-gerenciar-dns-dinamico-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1590" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-7-google-domains-criar-entrada-A-dns-dinamico.png" alt="OpenWRT - Configuração Google Domains DDNS 3" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-7-google-domains-criar-entrada-A-dns-dinamico.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-7-google-domains-criar-entrada-A-dns-dinamico-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1591" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-8-google-domains-criar-entrada-A-dns-dinamico-ir-fim-pagina.png" alt="OpenWRT - Configuração Google Domains DDNS 4" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-8-google-domains-criar-entrada-A-dns-dinamico-ir-fim-pagina.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-8-google-domains-criar-entrada-A-dns-dinamico-ir-fim-pagina-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1592" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-9-google-domains-ver-credenciais-ddns.png" alt="OpenWRT - Configuração Google Domains DDNS 5" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-9-google-domains-ver-credenciais-ddns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-9-google-domains-ver-credenciais-ddns-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1593" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-10-google-domains-copiar-credenciais-ddns.png" alt="OpenWRT - Configuração Google Domains DDNS 6" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-10-google-domains-copiar-credenciais-ddns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-10-google-domains-copiar-credenciais-ddns-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9</h3>
<p>De volta na tela de edição da configuração myddns_ipv4, preenchemos os 3 campos:</p>
<ul>
<li><strong>Domain:</strong> teste.viniciuspaes.com</li>
<li><strong>Username:</strong> (copiar a informação da tela de credenciais do DDNS do google domains)</li>
<li><strong>Password:</strong> (copiar a informação da tela de credenciais do DDNS do google domains)</li>
</ul>
<p>Logo abaixo vamos selecionar o checkbok:</p>
<pre>Use HTTP Secure</pre>
<p>Ao selecionar o checkbok irá aparecer um textfield com o nome de “Path to CA Certificate”, insira o texto:</p>
<pre>/etc/ssl/certs</pre>
<p>Tudo pronto nesta etapa, agora clique no botão:</p>
<pre>SAVE</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1595" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-11-colar-credenciais-ddns-google-domains.png" alt="OpenWRT - colar dados credenciais DDNS copiadas do Google Domains" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-11-colar-credenciais-ddns-google-domains.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-11-colar-credenciais-ddns-google-domains-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1596" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-12-habilitar-https.png" alt="OpenWRT - Habilitar https" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-12-habilitar-https.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-12-habilitar-https-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1597" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-13-digitar-caminho-pasta-certificados.png" alt="OpenWRT - colocar caminho para os certificados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-13-digitar-caminho-pasta-certificados.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-13-digitar-caminho-pasta-certificados-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 10</h3>
<p>Ainda na página de Dynamic DNS, clique no botão:</p>
<pre>Save &amp; Apply</pre>
<p>Ainda na mesma página, na linha d myddns_ipv4, clique no botão:</p>
<pre>Reload</pre>
<p>Agora vá para a página principal do <strong>OpenWRT</strong>. Clique no logo escrito OpenWRT no canto superior esquerdo, ou pelo menu selecione Status -&gt; Overview.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1599" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-14-salvar-aplicar-mudancas.png" alt="OpenWRT - Save &amp; Apply mudanças DDNS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-14-salvar-aplicar-mudancas.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-edit-ipv4-14-salvar-aplicar-mudancas-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1600" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-reload-ipv4.png" alt="OpenWRT - reload ddns_ipv4 service" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-reload-ipv4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-dynamic-dns-reload-ipv4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 11</h3>
<p>Na página inicial do <strong>OpenWRT</strong> use a barra de rolagem e caminhe até o fim.</p>
<p>Agora terá uma sessão nova sobre o DNS dinâmico. Como configuramos o <strong>DDNS</strong> para o ipv4 com o Google Domains, ele agora aparecerá também nesta tela principal. As informações do ip da WAN atribuída e o intervalo de atualização da entrada DNS também vão aparecer.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1601" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-pagina-inicial-apos-login.png" alt="OpenWRT - página inicial openwrt - usar barra de rolagem e caminhar até o fim da página" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-pagina-inicial-apos-login.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-pagina-inicial-apos-login-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1602" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-pagina-inicial-apos-login-verificar-fim-pagina-dynamic-dns.png" alt="OpenWRT - serviço DDNS funcionando - ver se atualizou o Google Domains" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-pagina-inicial-apos-login-verificar-fim-pagina-dynamic-dns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-pagina-inicial-apos-login-verificar-fim-pagina-dynamic-dns-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 12</h3>
<p>Vá agora na aba de <strong>DNS Dinâmico</strong> do Google Domains. É possível verificar que o IP da WAN do roteador foi atualizado e o tutorial para configurar o <strong>DDNS</strong> está completo.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1603" src="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-google-domains-ver-dns-dinamico-adquirido.png" alt="OpenWRT - Google Domains IP atualizado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-google-domains-ver-dns-dinamico-adquirido.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/05/openwrt-google-domains-ver-dns-dinamico-adquirido-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Conclusão</h2>
<p>Este passo a passo ensinou quais os pacotes/softwares necessários para habilitar o <strong>DDNS</strong> no <strong>OpenWRT</strong>. Neste exemplo, utilizamos a configuração para um subdomínio hospedado no Google Domains e a configuração foi super simples.<br />
O processo é semelhante caso queira configurar o <strong>DDNS</strong> para outra empresa, sem ser o <strong>Google Domains</strong>.</p>
<p>Gostou deste passo a passo? Tem alguma dúvida ou sugestão? Conta aí nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/openwrt/tutorial-configurar-dns-dinamico-ddns-openwrt-google-domains/">Tutorial configurar DNS Dinâmico (DDNS) no OpenWRT exemplo com Google Domains</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/openwrt/tutorial-configurar-dns-dinamico-ddns-openwrt-google-domains/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial acessar modem em bridge pela rede do roteador com OpenWRT</title>
		<link>https://viniciuspaes.com/openwrt/tutorial-acessar-modem-bridge-rede-roteador-openwrt/</link>
					<comments>https://viniciuspaes.com/openwrt/tutorial-acessar-modem-bridge-rede-roteador-openwrt/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Sun, 30 Apr 2023 00:55:47 +0000</pubDate>
				<category><![CDATA[openwrt]]></category>
		<category><![CDATA[bridge]]></category>
		<category><![CDATA[modem]]></category>
		<category><![CDATA[OpenWRT]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=1496</guid>

					<description><![CDATA[<p>Possui um modem capenga de internet do provedor e colocou ele em modo bridge? Aprenda o passo a passo para criar uma interface de ponte da rede do roteador para a rede do modem, facilitando o acesso. Não precisa mais desconectar o cabo do pc do roteador e conectar no modem quando quiser fazer alguma alteração.</p>
<p>O post <a href="https://viniciuspaes.com/openwrt/tutorial-acessar-modem-bridge-rede-roteador-openwrt/">Tutorial acessar modem em bridge pela rede do roteador com OpenWRT</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Configurar uma interface de ponte (bridge) entre a rede do roteador e a do modem. Facilitando o acesso a interface de login do seu modem pelo browser, quando conectado pela rede do roteador.</p>
<p class="cimg"><img loading="lazy" decoding="async" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-setup-modem-bridge-acesso-redes-diferentes-sumario-grafico.png" alt="OpenWRT - Sumário Gráfico criar interface de ponte da rede do roteador para a rede do modem" width="768" height="432" class="alignnone size-full wp-image-1523" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-setup-modem-bridge-acesso-redes-diferentes-sumario-grafico.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-setup-modem-bridge-acesso-redes-diferentes-sumario-grafico-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Mas na prática, para que preciso desta configuração?</h2>
<p>Geralmente o roteador fornecido pela empresa provedora de internet não é da melhor qualidade. Seja por baixo poder de processamento, pouca memória ram, ou ele recebe uma carga muito alta de demanda de IO onde o equipamento não consegue dar conta.</p>
<p>Caso não esteja conseguindo utilizar toda sua internet contratada, pode ser que seu roteador da provedora não esteja dando conta do throughput da rede. Uma alternativa é mudar a configuração do seu roteador da provedora para modo bridge (o que diminui a demanda de processamento do mesmo).</p>
<p>Porém, caso tenha mais dispositivos na sua rede, é interessante e necessário que tenha um equipamento para roteamento. Ou seja, você precisa de um roteador, este que agora ficará dedicado a esta atribuição.</p>
<p>Mas nessa configuração, por exemplo, o modem fica acessível pelo IP 192.168.<strong>0</strong>.1<br />
Já o roteador, está em outra rede, e seu IP é 192.168.<strong>1</strong>.1</p>
<p>Se estiver conectado na rede do roteador, e digitar o IP do modem no browser, não vai conseguir acessá-lo. Normalmente, os usuários, desconectam o computador da rede do roteador e conectam por cabo diretamente no modem, quando querem acessá-lo, para mudar alguma configuração. Não sendo nada prático.</p>
<p>Uma alternativa é criar uma ponte da rede 192.168.<strong>0</strong>.x para a rede 192.168.<strong>1</strong>.x (do exemplo acima). Desta forma, se está conectado na rede do roteador, consegue acessar a interface do modem, e vice-versa. Facilita muito o processo de manutenção e acesso a interface dos dispositivos.</p>
<p>O objetivo deste tutorial é exatamente ensinar os passos para configurar essa interface de bridge entre as 2 redes, utilizando o OpenWRT.</p>
<h2>Requisitos Necessários</h2>
<ul>
<li>Seu roteador/modem de internet fornecido pelo provedor está em modo bridge</li>
<li>Seu roteador principal possui OpenWRT instalado</li>
</ul>
<h2>Tutorial passo a passo de como configurar acesso ao modem em bridge através da rede do roteador que possui OpenWRT instalado</h2>
<h3>Passo 1</h3>
<p>Faça login no seu roteador principal, digitando o ip do mesmo pelo browser. Neste exemplo, o roteador está configurado com o IP:</p>
<pre>192.168.1.1</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1502" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-tela-login-roteador.png" alt="OpenWRT - Tela de login" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-tela-login-roteador.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-tela-login-roteador-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1503" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-logado.png" alt="OpenWRT - login realizado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-logado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-logado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2</h3>
<p>Após realizar login com usuário e senha, no menu superior, acesse a aba:</p>
<pre>Network</pre>
<p>Em seguida, acesse a opção do menu:</p>
<pre>Interfaces</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1504" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-menu-ir-interfaces.png" alt="OpenWRT - Acessar o menu e ir para a opção interfaces" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-menu-ir-interfaces.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-menu-ir-interfaces-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4</h3>
<p>No canto inferior esquerda desta página, tem a opção:</p>
<pre>Add new interface…</pre>
<p>Clique na opção acima.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1505" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces.png" alt="OpenWRT - página de interfaces" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1506" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface.png" alt="OpenWRT - página de interfaces - clicar no botão para adicionar nova interface" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>Agora há 3 campos a serem preenchidos, o primeiro é o nome que você vai dar para essa interface. Eu particularmente chamo essa interface de:</p>
<pre>MODEM</pre>
<p>Para o protocolo, vamos utilizar:</p>
<pre>Static address</pre>
<p>Para device, devemos escolher a porta WAN do nosso roteador.<br />
No meu roteador a porta WAN é configurada pela “eth0”, então no meu exemplo fica:</p>
<pre>Ethernet Adapter: “eth0” (wan)</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1508" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-2.png" alt="OpenWRT - Página adicionar nova interface" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6</h3>
<p>Nesta nova tela que abriu, você estará na primeira aba (General Settings), agora precisamos definir o IP que teremos nessa interface de ponte. Como o meu modem está com IP 192.168.0.1, vou colocar a interface de ponte com o IPv4 estático:</p>
<pre>192.168.0.2</pre>
<p>A máscara de rede que vou utilizar (Ipv4 Netmask) será:</p>
<pre>255.255.255.0</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1509" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-3.png" alt="OpenWRT - Página configuração nova interface (General Settings)" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1510" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-4.png" alt="OpenWRT - Página configuração nova interface (General Settings) - adicionar IP e máscara de rede" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1511" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-5.png" alt="OpenWRT - Página configuração nova interface (General Settings) - IP e máscara adicionados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-5.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-5-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7</h3>
<p>Como mencionei, estamos na aba “General Settings”, agora vamos clicar para ir na aba:</p>
<pre>Firewall Settings</pre>
<p>Nesta aba, vamos definir no campo “Create / Assign firewall-zone” a mesma política de firewall atribuída para nossa interface wan. Então vamos selecionar a opção:</p>
<pre>wan</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1512" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-6.png" alt="OpenWRT - Página configuração nova interface , ir para a aba firewall" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-6.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-6-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1515" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-7.png" alt="OpenWRT - tela de configuração de política de firewall para nova interface" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-7.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-7-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1514" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-8.png" alt="OpenWRT - tela de configuração de política de firewall para nova interface - selecionar a mesma política da interface wan" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-8.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-adicionar-nova-interface-8-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7</h3>
<p>Agora salve todas as modificações. E clique na opção:</p>
<pre>Save &amp; Apply</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1517" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-interface-modem-criada.png" alt="OpenWRT - nova interface criada, necessário salvar e aplicar mudanças" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-interface-modem-criada.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-interface-modem-criada-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1518" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-salvar-aplicar.png" alt="OpenWRT - nova interface criada. Clicar no botão para salvar e aplicar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-salvar-aplicar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-salvar-aplicar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1516" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-interface-biridge-funcionando.png" alt="OpenWRT - Nova interface de bridge da rede do roteador para a rede do modem criada e funcional" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-interface-biridge-funcionando.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-pagina-interfaces-interface-biridge-funcionando-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8</h3>
<p>Agora digite o endereço IP do seu modem no browser e poderá acessá-lo diretamente.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1519" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-tela-login-modem-funcionando-por-bridge-redes.png" alt="OpenWRT - testando acesso aou modem pelo browser estando na rede do roteador" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-tela-login-modem-funcionando-por-bridge-redes.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-tela-login-modem-funcionando-por-bridge-redes-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Conclusão</h2>
<p>O passo a passo para configurar o acesso ao modem pela rede do roteador é bem tranquilo. Só ficar atento ao IP que está configurado na sua rede e seguir o mesmo padrão.</p>
<p>Ficou com alguma dúvida sobre os passos acima? Ou tem alguma sugestão? Escreve aí nos comentários, que farei o possível para responder!</p>
<p>O post <a href="https://viniciuspaes.com/openwrt/tutorial-acessar-modem-bridge-rede-roteador-openwrt/">Tutorial acessar modem em bridge pela rede do roteador com OpenWRT</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/openwrt/tutorial-acessar-modem-bridge-rede-roteador-openwrt/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>How to build a custom OpenWRT image for Raspberry Pi Router</title>
		<link>https://viniciuspaes.com/raspberry-pi/how-to-build-custom-openwrt-image-raspberry-pi-router/</link>
					<comments>https://viniciuspaes.com/raspberry-pi/how-to-build-custom-openwrt-image-raspberry-pi-router/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Wed, 19 Apr 2023 17:05:07 +0000</pubDate>
				<category><![CDATA[english]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[OpenWRT]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=1457</guid>

					<description><![CDATA[<p>Step by step tutorial to create a custom image with the latest version of OpenWRT for your Raspberry Pi router.</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/how-to-build-custom-openwrt-image-raspberry-pi-router/">How to build a custom OpenWRT image for Raspberry Pi Router</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Primary Goal</h2>
<p>Build a custom OpenWRT image to be installed on the SD card or eMMC on the Raspberry Pi, so that it works as an network router.</p>
<h2>Project Requirements</h2>
<ul>
<li>Raspberry Pi</li>
<li>USB to Ethernet dongle (regular Raspberry Pi) or <a href="https://viniciuspaes.com/raspberry-pi/tutorial-roteador-raspberry-pi-openwrt/"><strong>DFRobot Router Board for Raspberry Pi CM4</strong></a></li>
<li>USB Power Supply</li>
<li>2 RJ45 cables &#8211; one to connect the raspberry to the modem and other to connect <strong>raspberry router</strong> to the computer or network switch</li>
<li>Micro SD card if using a Raspberry Pi without eMMC</li>
</ul>
<h2>Initial considerations</h2>
<p>The objective of this tutorial is to build a custom OpenWRT image ready to run on a Raspberry Pi. This tutorial works for any Raspberry model, but be aware of the need for additional drivers depending on the USB-Ethernet dongle you are using.</p>
<p>This walkthrough also serves to create OpenWRT images for Odroid, Nvidia Jester, ZimaBoard, and other tinker boards. However, in the configuration step, it is necessary to select the appropriate drivers.</p>
<p>For transparency purposes, I&#8217;m going to configure a Raspberry Pi CM4 to act as a router. If you are using a <a href="https://www.dfrobot.com/product-2242.html?tracking=hBk5hVPSoWhS2C3T8AOIu6Hnjoub8S7HXB1isdWozZE1HKb4pQzYXQr0YqLX0EYg" target="_blank" rel="nofollow noopener"><strong>Raspberry Pi CM4 Router Board from DFRobot</strong></a>, just follow this step by step.</p>
<h2>Host Setup</h2>
<p>This step-by-step needs to be performed on a Linux operating system, with good processing power, to speed up the compilation process. If you don&#8217;t use Linux operating system, no problem, just install a virtual machine on your computer with Mac OS or Windows.</p>
<p>If you have questions on how to create a virtual machine, access this tutorial: <a href="https://viniciuspaes.com/linux/tutorial-setup-servidor-linux-ubuntu-local-virtualbox/"><strong>Create Virtual Machine Tutorial with Virtualbox</strong></a></p>
<p>If you are going to use a virtual machine, I recommend the setup:<br />
<strong>Processing:</strong> at least 4 cores<br />
<strong>Storage:</strong> 25GB (minimum)<br />
<strong>RAM:</strong> at least 2GB</p>
<p>After creating the virtual machine and later creating 4 OpenWRT images (2 complete images and 2 for upgrade), the virtual machine had only <strong>1.1GB</strong> of available disk space. So the minimum size of 25GB for disk space is adequate (pictured below).</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1455" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-espaco-em-disco-apos-instalacoes.png" alt="OpenWRT - espaço livre em máquina virtual de 25GB após compilação de imagem do openwrt" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-espaco-em-disco-apos-instalacoes.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-espaco-em-disco-apos-instalacoes-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Step by step tutorial to create OpenWRT image for Raspberry Pi to act as a network router</h2>
<h3>Step 1</h3>
<p>The first step is to package update and upgrade. So, we need to update the system software, using the commands:</p>
<pre>sudo apt update
sudo apt upgrade
</pre>
<h3>Step 2</h3>
<p>Now you need to install the necessary software for the openwrt image creation environment:</p>
<pre>sudo apt install build-essential clang flex bison g++ gawk gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev file wget</pre>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-1411 size-full" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-instalar-pacotes-para-criar-imagem.png" alt="Openwrt - criando um ambiente de compilação do código fonte" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-instalar-pacotes-para-criar-imagem.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-instalar-pacotes-para-criar-imagem-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 3</h3>
<p>Now it is necessary to download openwrt source code directly from its github repository. I usually do this download inside my user folder (cd ~). Let&#8217;s clone the project with the command:</p>
<pre>git clone https://git.openwrt.org/openwrt/openwrt.git</pre>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-1412 size-full" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-clone-codigo-fonte-download-realizado.png" alt="OpenWRT - realizar download do repositório com git clone" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-clone-codigo-fonte-download-realizado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-clone-codigo-fonte-download-realizado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 4</h3>
<p>After downloading the source code, we need to enter (cd) the created folder:</p>
<pre>cd openwrt</pre>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-1413 size-full" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-entrar-pasta-projeto-git.png" alt="OpenWRT - entrar na pasta do projeto" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-entrar-pasta-projeto-git.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-entrar-pasta-projeto-git-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 5</h3>
<p>Let&#8217;s now check the available branches. Remembering that the main branch (master) is not a stable version of openwrt.</p>
<pre>git branch -a</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1414" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-comando-verificar-branch-disponivel.png" alt="OpenWRT - verificar as branchs disponíveis" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-comando-verificar-branch-disponivel.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-comando-verificar-branch-disponivel-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1418" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-verificar-branch-disponivel.png" alt="OpenWRT - git branch -a, resultado de branchs disponíveis" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-verificar-branch-disponivel.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-verificar-branch-disponivel-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 6</h3>
<p>Let&#8217;s see the available versions with the command:</p>
<pre>git tag</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1415" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-tag.png" alt="OpenWRT - git tag - verificar versões disponíveis" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-tag.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-tag-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1416" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-tag-verificar-todas-versoes-disponiveis.png" alt="OpenWRT - git tag - verificar versões disponíveis - resultados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-tag-verificar-todas-versoes-disponiveis.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-tag-verificar-todas-versoes-disponiveis-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 7</h3>
<p>The latest stable version available as of the date of this tutorial is <strong>v22.03.4</strong>. So let&#8217;s choose it to create our OpenWRT image.</p>
<pre>git checkout v22.03.4</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1419" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-checkout-versao-escolhida-selecionada.png" alt="OpenWRT - git checkout, selecionando a branch e versão a ser utilizada" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-checkout-versao-escolhida-selecionada.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-checkout-versao-escolhida-selecionada-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 8</h3>
<p>Now we can use the command to update the dependencies for this version of openwrt:</p>
<pre>./scripts/feeds update -a</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1420" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-update-dependencias-download.png" alt="OpenWRT - realizando a solicitação para verificar updates necessários para as dependências do projeto da versão do openwrt escolhida" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-update-dependencias-download.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-update-dependencias-download-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 9</h3>
<p>Next, we now need to install the required software and dependencies for this selected version of openwrt:</p>
<pre>./scripts/feeds install -a</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1421" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-instalar-dependencias.png" alt="OpenWRT - instalar dependências necessárias do projeto" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-instalar-dependencias.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-instalar-dependencias-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1422" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-instalar-dependencias-download-finalizado.png" alt="OpenWRT - instalar dependências necessárias do projeto - etapa finalizada" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-instalar-dependencias-download-finalizado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-instalar-dependencias-download-finalizado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 10</h3>
<p>Now let&#8217;s move on to settings performed by menuconfig. Run the command to open the menu:</p>
<pre>make menuconfig</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1424" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-make-menuconfig.png" alt="OpenWRT - make menuconfig" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-make-menuconfig.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-make-menuconfig-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 11</h3>
<p>Within the menu, it is necessary to define the Target System. Use the keyboard arrows and press ENTER over the option:</p>
<pre>Target System  (...) ---&gt;</pre>
<p>Now choose Broadcom&#8217;s 27xx processor family option:</p>
<pre>BROADCOM BCM27xx</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1425" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes.png" alt="OpenWRT - tela inicial menuconfig" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1426" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-target-system-escolher-bcm27xx.png" alt="OpenWRT - selecionar target" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-target-system-escolher-bcm27xx.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-target-system-escolher-bcm27xx-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 12</h3>
<p>After selecting the Target System, you will be returned to the main menu. Now it is necessary to define the exact processor of the BCM27xx family in subtarget. Navigate through the menu and select the option:</p>
<pre>Subtarget (...) ---&gt;</pre>
<p>Within the Subtarget menu, select the option:</p>
<pre>BCM2711 boards (64 bit)</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1428" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-subtarget-escolhido.png" alt="OpenWRT - selecionar subtarget" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-subtarget-escolhido.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-subtarget-escolhido-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1427" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-tela-subtarget-selecionar-bcm2711.png" alt="OpenWRT - tela subtarget selecionar BCM2711" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-tela-subtarget-selecionar-bcm2711.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-tela-subtarget-selecionar-bcm2711-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 13</h3>
<p>After selecting the Subtarget, you will be redirected back to the initial screen of the menu. Now we need to define aspects of the openwrt image to be created. The file system type and size of partitions. Select option:</p>
<pre>Target Images ---&gt;</pre>
<p>In the target images menu you have several options. For the purpose of this example, I will create custom images for ext4 and squashfs filesystem and also compress them with gzip.<br />
I don&#8217;t recommend changing the default kernel partition size unless you know what you&#8217;re doing.<br />
If you know the exact size of your memory card or eMMC, you can change the root partition size so that you don&#8217;t have to perform file system expansion after installation. Remember to discount the size of the root partition so that the calculation is precise.</p>
<p>After configuring the Target Images settings, use the keyboard arrow and select the EXIT option to return to the main Menu screen.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1429" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-tela-target-images.png" alt="OpenWRT - Menu Target Images" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-tela-target-images.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-tela-target-images-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 14</h3>
<p>In these next steps, we need to install 3 main drivers:</p>
<ul>
<li>kmod-r8169</li>
<li>kmod-usb-dwc2</li>
<li>bcm27xx-userland</li>
</ul>
<p>However, there are several submenu divisions and it can be difficult to find out which submenu is the option to install the necessary packages. But menuconfig has a search tool that can be activated using the hotkey:</p>
<pre>/</pre>
<p>This hotkey is similar to the VI or VIM text editor search option.<br />
If you need to install additional packages to enable your USB dongle, ethernet, or USB ports, etc; this search option is recommended (it informs the path within the menu to the driver you search for, if found/available).</p>
<p>You don&#8217;t need to perform any search at this time, you can close the search field and follow the steps from the main menu.<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1430" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-procurar-pacotes-menu.png" alt="OpenWRT - utilizar opção de busca (search) de pacotes" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-procurar-pacotes-menu.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-procurar-pacotes-menu-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 15</h3>
<p>To install the kmod-r8169 driver, we need to navigate through the submenu:</p>
<pre>Kernel Modules</pre>
<p>Then go to the submenu:</p>
<pre>Network Devices</pre>
<p>Find the option:</p>
<pre>kmod-r8169 (Realtek RTL-8169 PCI Gigabit Ethernet kernel support)</pre>
<p>To be able to select this option, press the <strong>SPACE</strong> key twice. It will be selected when an asterisk &lt;*&gt; appears inside the brackets.</p>
<p>Use the keyboard arrows and select the <strong>EXIT</strong> option to return to the Kernel Modules submenu.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1431" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-kernel-modules.png" alt="OpenWRT - menu kernel modules" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-kernel-modules.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-kernel-modules-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1433" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-kernel-modules-selecionar-network-devices.png" alt="OpenWRT - selecionar menu Network Devices" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-kernel-modules-selecionar-network-devices.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-kernel-modules-selecionar-network-devices-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1432" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-network-devices-selecionar-kmod-r8169.png" alt="OpenWRT - selecionar para instalar kmod-r8169" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-network-devices-selecionar-kmod-r8169.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-network-devices-selecionar-kmod-r8169-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 16</h3>
<p>Still inside the Kernel Modules submenu, go to the option:</p>
<pre>USB Support ---&gt;</pre>
<p>Find the option:</p>
<pre>kmod-usb-dwc2 DWC2 USB controller drive</pre>
<p>To be able to select this option, press the <strong>SPACE</strong> key twice. It will be selected when an asterisk &lt;*&gt; appears inside the brackets.</p>
<p>Use the keyboard arrows and select the <strong>EXIT</strong> option to return to the Kernel Modules submenu. Select <strong>EXIT</strong> again, to return do the main menu.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1435" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-kernel-modules-selecionar-usb-support.png" alt="OpenWRT - menu USB Support" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-kernel-modules-selecionar-usb-support.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-kernel-modules-selecionar-usb-support-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1434" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-usb-support-selecionar-kmod-usb-dwc2.png" alt="OpenWRT - selecionar pacote kmod-usb-dwc2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-usb-support-selecionar-kmod-usb-dwc2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-usb-support-selecionar-kmod-usb-dwc2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 17</h3>
<p>Now we need to install the bcm27xx-userland driver to support the Broadcom BCM27xx family of processors. Select submenu option:</p>
<pre>Utilities ---&gt;</pre>
<p>Find the option:</p>
<pre>bcm27xx-userland BCM27xx userland tool</pre>
<p>To be able to select this option, press the SPACE key twice. It will be selected when an asterisk &lt;*&gt; appears inside the brackets.</p>
<p>Then select <strong>EXIT</strong> to return to the main menu.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1436" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-utilities.png" alt="OpenWRT - menu utilities" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-utilities.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-utilities-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1437" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-utilities-selecionar-bcm27xx-userland.png" alt="" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-utilities-selecionar-bcm27xx-userland.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-utilities-selecionar-bcm27xx-userland-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 18</h3>
<p>From the main menu, search for and select the option:</p>
<pre>LuCI ---&gt;</pre>
<p>Within the LuCI menu, find and activate the 2 options below:</p>
<pre>luci          LuCI interface with Uhttpd as Webserver (default)
luci-ssl      LuCI with HTTPS support (WolfSSL as SSL backend)
</pre>
<p>To be able to select this option, press the <strong>SPACE</strong> key twice. It will be selected when an asterisk &lt;*&gt; appears inside the brackets.</p>
<p>Then select <strong>EXIT</strong> to return to the main menu.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1440" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-luci.png" alt="OpenWRT - selecionar o menu LuCI" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-luci.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-luci-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1439" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-luci-selecionar-luci-luci-ssl.png" alt="OpenWRT - selecionar pacote luci e luci-ssl" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-luci-selecionar-luci-luci-ssl.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-luci-selecionar-luci-luci-ssl-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 19</h3>
<p>If you are not going to install any more drivers of your choice, select <strong>EXIT</strong> again to close the menuconfig.</p>
<p>The option to save the selected settings will appear. Select:</p>
<pre>&lt; YES &gt;</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1441" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-sair-e-salvar.png" alt="OpenWRT - sair do menuconfig e salvar modificações" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-sair-e-salvar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-sair-e-salvar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 20</h3>
<p>If an error appears when closing the menuconfig, try to identify which package or software has a problem. In my specific case, an error appeared in the apinger package. An unusual error as I didn&#8217;t select to install it.</p>
<p>To solve this error, I just deleted the file:</p>
<pre>rm openwrt/package/feeds/luci/luci-app-apinger</pre>
<p>Probably when you run this tutorial, the above error will be corrected already in the repository, as other users opened an <strong>ISSUE </strong>in github.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1442" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-sair-pode-aparecer-erro.png" alt="OpenWRT - saindo do menuconfig, apareceu erro inesperado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-sair-pode-aparecer-erro.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-sair-pode-aparecer-erro-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1450" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-deletar-luci-app-apinger-evitar-erro-ao-compilar.png" alt="OpenWRT - erro pacote apinger não encontrado, necessário deletar o arquivo para evitar erro de compilação" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-deletar-luci-app-apinger-evitar-erro-ao-compilar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-deletar-luci-app-apinger-evitar-erro-ao-compilar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 21 &#8211; Optional Settings</h3>
<p>Now let&#8217;s introduce some optional settings:</p>
<h4>Change login banner</h4>
<p>If you want to make cosmetic changes, just edit the file:</p>
<pre>nano package/base-files/files/etc/banner</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1448" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-editar-banner-login-ssh-imagem.png" alt="OpenWRT - comando para editar o arquivo de banner" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-editar-banner-login-ssh-imagem.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-editar-banner-login-ssh-imagem-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1444" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-edicao-banner-login-ssh-imagem.png" alt="OpenWRT - Banner de login" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-edicao-banner-login-ssh-imagem.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-edicao-banner-login-ssh-imagem-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1443" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-banner-login-ssh-imagem-editado.png" alt="OpenWRT - Banner de login alterado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-banner-login-ssh-imagem-editado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-banner-login-ssh-imagem-editado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Enable UART</h4>
<p>The UART is disabled by default, to enable it, just edit the file:</p>
<pre>nano target/linux/bcm27xx/image/config.txt</pre>
<p>Just below the field “Place your custom settings here.”, insert the text:</p>
<pre>enable_uart=1</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1446" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-editar-config-habilitar-uart.png" alt="OpenWRT - editar arquivo para habilitar UART" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-editar-config-habilitar-uart.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-editar-config-habilitar-uart-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1445" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-tela-edicao-config-habilitar-uart.png" alt="OpenWRT - editar arquivo para habilitar UART - arquivo padrao" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-tela-edicao-config-habilitar-uart.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-tela-edicao-config-habilitar-uart-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1447" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-tela-config-uart-habilitado.png" alt="OpenWRT - UART habilitado no config.txt" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-tela-config-uart-habilitado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-tela-config-uart-habilitado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Load configuration files about login, network, firewall, dhcp, etc</h4>
<p>This step is <span style="color: #ff6600;"><strong>NOT RECOMMENDED</strong></span> for general use. The best option is to let openwrt generate the files and later perform the modifications manually. One justification is that openwrt can undergo updates that change the layout of these files, which can cause installation problems. But for the purposes of automating the generation of images, it is certainly an interesting option.</p>
<p>If you want to perform this step, you need to create the directory structure:</p>
<pre>mkdir files
mkdir files/etc
mkdir files/etc/config
</pre>
<p>Now edit the configuration files and fill in with the settings you have. A tip for this step is to already have openwrt configured on another router and copy and paste your settings. In any case, the main files to edit are:</p>
<pre>nano files/etc/config/dhcp
nano files/etc/config/firewall
nano files/etc/config/network
nano files/etc/config/wireless
nano files/etc/passwd
nano files/etc/shadow
</pre>
<h3>Step 22 &#8211; Compile</h3>
<p>With all the desired changes already made, let&#8217;s now run the make command to start compiling the source code. Remembering that the -j option defines the number of cores to be used. As I have 4 cores, I use -j4, to speed up the process. Use the command to start compilation:</p>
<pre>make -j4</pre>
<p>The compilation process may take lot of time, please wait with patience.<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1452" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-make.png" alt="Openwrt - realizar make para compilar código fonte" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-make.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-make-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1451" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-criada-fim-compilacao-com-make.png" alt="Openwrt - código fonte compilado sem erros" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-criada-fim-compilacao-com-make.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-criada-fim-compilacao-com-make-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Step 23 &#8211; Image files created</h3>
<p>After the build process is finished, you can check the created files in the folder:</p>
<pre>ls bin/targets/bcm27xx/bcm2711</pre>
<p>In this example, 4 files were created, based on OpenWRT v22.03.4, they are also available to download from my google drive:</p>
<ul>
<li><strong><a href="https://drive.google.com/file/d/15MD1ryWUPpgUkxQBJF5tCjnmHA9IBRcA/view?usp=sharing" rel="nofollow">openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz (full version with ext4)</a></strong></li>
<li><a href="https://drive.google.com/file/d/1_YDzE6x6cli0lQ2xQwXRnOF8DNrCAQ0v/view?usp=sharing" rel="nofollow"><strong>openwrt-bcm27xx-bcm2711-rpi-4-ext4-sysupgrade.img.gz (upgrade version for ext4)</strong></a></li>
<li><a href="https://drive.google.com/file/d/1g8ree-AVzerh1JniZRrUAv1mIDw8z-Ke/view?usp=sharing" rel="nofollow"><strong>openwrt-bcm27xx-bcm2711-rpi-4-squashfs-factory.img.gz (full version with squashfs)</strong></a></li>
<li><a href="https://drive.google.com/file/d/1GeMsjm7y0fsSqgzG3pMhdpqct1DRgwz1/view?usp=sharing" rel="nofollow"><strong>openwrt-bcm27xx-bcm2711-rpi-4-squashfs-sysupgrade.img.gz (upgrade version for squashfs)</strong></a></li>
</ul>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1453" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-listagens-arquivos-imagem-criados-ext4-squashhfs.png" alt="OpenWRT - arquivos de imagem de instalação criados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-listagens-arquivos-imagem-criados-ext4-squashhfs.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-listagens-arquivos-imagem-criados-ext4-squashhfs-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Remembering that you must choose which file system you want to use on your raspberry. I use ext4 for the general case, when I install other packages on the raspberry (LAMP server). If the raspberry is dedicated to work as a router, the squashfs partition is the recommended option, as it preserves the file system to the factory default after boot.</p>
<p>If you have any questions or suggestions about the process of creating a custom OpenWRT image, please write them in the comments! I will do my best to answer!</p>
<p>&nbsp;</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/how-to-build-custom-openwrt-image-raspberry-pi-router/">How to build a custom OpenWRT image for Raspberry Pi Router</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/raspberry-pi/how-to-build-custom-openwrt-image-raspberry-pi-router/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial criar imagem OpenWRT para roteador com Raspberry Pi</title>
		<link>https://viniciuspaes.com/raspberry-pi/tutorial-criar-imagem-openwrt-roteador-raspberry-pi/</link>
					<comments>https://viniciuspaes.com/raspberry-pi/tutorial-criar-imagem-openwrt-roteador-raspberry-pi/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Wed, 19 Apr 2023 15:54:52 +0000</pubDate>
				<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[OpenWRT]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=1191</guid>

					<description><![CDATA[<p>Passo a passo para criar uma imagem com a última versão do OpenWRT para seu roteador com Raspberry Pi.</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-criar-imagem-openwrt-roteador-raspberry-pi/">Tutorial criar imagem OpenWRT para roteador com Raspberry Pi</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Criar uma imagem de sistema operacional OpenWRT para ser instalado no cartão SD ou memória eMMC no Raspberry Pi, para que funcione como um roteador de rede de internet.</p>
<h2>Requisitos Necessários</h2>
<ul>
<li>Raspberry Pi</li>
<li>Adaptador USB para Ethernet no caso de Raspberry Pi comum ou Placa Router Board da DFRobot para<strong> <a href="https://viniciuspaes.com/raspberry-pi/tutorial-roteador-raspberry-pi-openwrt/">Roteador com Raspberry Pi CM4</a></strong></li>
<li>Fonte de Alimentação USB</li>
<li>2 cabos RJ45 &#8211; um para ligar o raspberry no modem e outro para ligar o raspberry no computador ou switch de rede</li>
<li>Cartão micro SD caso utilize um Raspberry Pi sem eMMC</li>
</ul>
<h2>Considerações Iniciais</h2>
<p>O objetivo deste tutorial é criar uma imagem de sistema operacional com OpenWRT preparada para funcionar em um Raspberry Pi. Este tutorial serve para qualquer modelo do Raspberry, lembrando de ficar atento à necessidade de drivers adicionas dependendo do dongle USB-Ethernet que estiver utilizando.</p>
<p>Este passo a passo serve também para criar imagens do OpenWRT para Odroid, Nvidia Jester, ZimaBoard, e demais tinker boards. Porém, na etapa de configuração, é necessário selecionar os drivers apropriados.</p>
<p>Para fins de transparência, vou configurar um Raspberry Pi CM4 para funcionar como roteador. Se estiver utilizando um Raspberry Pi CM4 junto com uma placa <a href="https://www.dfrobot.com/product-2242.html?tracking=hBk5hVPSoWhS2C3T8AOIu6Hnjoub8S7HXB1isdWozZE1HKb4pQzYXQr0YqLX0EYg" target="_blank" rel="nofollow noopener"><strong>Router Board da DFRobot</strong></a>, basta seguir a risca este passo a passo.</p>
<h2>Necessidades para o setup</h2>
<p>Este passo a passo precisa ser realizado em um <strong>Sistema Operacional Linux</strong>, com um bom poder de processamento, para agilizar o processo de compilação.</p>
<p>Caso não utilize sistema operacional linux, não tem problema, basta instalar uma máquina virtual em seu computador com <strong>Mac OS</strong> ou <strong>Windows</strong>. Caso utilize o Windows, também é possível utilizar o <strong>WSL</strong>, mas necessário remover o <strong>compartilhamento de PATH</strong>.</p>
<h3>Informações gerais caso utilize Máquina Virtual</h3>
<p>Se tiver dúvidas em como criar uma máquina virtual, acesse o tutorial: <a href="https://viniciuspaes.com/linux/tutorial-setup-servidor-linux-ubuntu-local-virtualbox/"><strong>Tutorial Criar Máquina Virtual com Virtualbox</strong></a></p>
<p>Caso vá utilizar uma máquina virtual, recomendo o setup:<br />
<strong>Processamento:</strong> pelo menos 4 cores<br />
<strong>Armazenamento:</strong> 25GB<br />
<strong>Memória RAM:</strong> pelo menos 2GB</p>
<p>Para fins de curiosidade, após a criação da máquina virtual e posteriormente criação de 4 imagens do OpenWRT (2 completas e 2 para upgrade), a máquina virtual ficou com apenas 1,1GB de espaço em disco disponível. Então o tamanho mínimo de 25GB para espaço em disco é adequado (foto abaixo).<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1455" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-espaco-em-disco-apos-instalacoes.png" alt="OpenWRT - espaço livre em máquina virtual de 25GB após compilação de imagem do openwrt" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-espaco-em-disco-apos-instalacoes.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-espaco-em-disco-apos-instalacoes-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Considerações necessárias caso utilize Windows WSL</h3>
<p>Durante o processo de compilação, o compartilhamento da variável PATH entre o windows e o WSL pode causar problemas. Desta forma precisamos editar o arquivo /etc/wsl.conf. Dentro do prompt do WSL, execute o comando:</p>
<pre>sudo nano /etc/wsl.conf</pre>
<p>Agora é necessário inserir o texto no fim do arquivo:</p>
<pre>[interop]
appendWindowsPath = false</pre>
<p>Agora abra o Windows Power Shell e execute o comando para reiniciar a instância do WSL:</p>
<pre>wsl --shutdown</pre>
<p>Abra novamente o WSL e digite o comando:</p>
<pre>echo $PATH</pre>
<p>Terá como saída algo similar ao conteúdo abaixo, o que varia para cada distribuição do linux:</p>
<pre>/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib</pre>
<h2>Tutorial passo a passo para criar imagem do OpenWRT para Raspberry Pi funcionar como roteador</h2>
<h3>Passo 1</h3>
<p>O primeiro passo é estar com seu computador ou máquina virtual com Sistema Operacional Linux em funcionamento. Assim, precisamos atualizar os softwares do sistema, utilizando os comandos:</p>
<pre>sudo apt update
sudo apt upgrade
</pre>
<h3>Passo 2</h3>
<p>Agora necessário instalar os softwares necessários para o ambiente de criação da imagem do openwrt:</p>
<pre>sudo apt install build-essential clang flex bison g++ gawk gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev file wget</pre>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-1411 size-full" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-instalar-pacotes-para-criar-imagem.png" alt="Openwrt - criando um ambiente de compilação do código fonte" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-instalar-pacotes-para-criar-imagem.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-instalar-pacotes-para-criar-imagem-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3</h3>
<p>Precisamos agora fazer o download do openwrt direto do seu repositório do github. Costumo fazer este download dentro da minha pasta de usuário (cd ~). Vamos realizar o clone do projeto com o comando:</p>
<pre>git clone https://git.openwrt.org/openwrt/openwrt.git</pre>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-1412 size-full" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-clone-codigo-fonte-download-realizado.png" alt="OpenWRT - realizar download do repositório com git clone" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-clone-codigo-fonte-download-realizado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-clone-codigo-fonte-download-realizado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4</h3>
<p>Após o download do projeto, precisamos entrar na pasta criada:</p>
<pre>cd openwrt</pre>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-1413 size-full" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-entrar-pasta-projeto-git.png" alt="OpenWRT - entrar na pasta do projeto" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-entrar-pasta-projeto-git.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-entrar-pasta-projeto-git-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>Vamos agora verificar as branch’s disponíveis. Lembrando que a branch principal (master) não é uma versão estável do openwrt.</p>
<pre>git branch -a</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1414" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-comando-verificar-branch-disponivel.png" alt="OpenWRT - verificar as branchs disponíveis" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-comando-verificar-branch-disponivel.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-comando-verificar-branch-disponivel-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1418" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-verificar-branch-disponivel.png" alt="OpenWRT - git branch -a, resultado de branchs disponíveis" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-verificar-branch-disponivel.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-verificar-branch-disponivel-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6</h3>
<p>Vamos ver as versões disponíveis com o comando:</p>
<pre>git tag</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1415" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-tag.png" alt="OpenWRT - git tag - verificar versões disponíveis" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-tag.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-tag-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1416" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-tag-verificar-todas-versoes-disponiveis.png" alt="OpenWRT - git tag - verificar versões disponíveis - resultados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-tag-verificar-todas-versoes-disponiveis.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-tag-verificar-todas-versoes-disponiveis-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7</h3>
<p>A última versão estável disponível na data deste tutorial é a <strong>v22.03.4</strong>. Então vamos escolher ela para criar nossa imagem do OpenWRT.</p>
<pre>git checkout v22.03.4</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1419" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-checkout-versao-escolhida-selecionada.png" alt="OpenWRT - git checkout, selecionando a branch e versão a ser utilizada" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-checkout-versao-escolhida-selecionada.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-git-checkout-versao-escolhida-selecionada-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8</h3>
<p>Agora podemos utilizar o comando para realizar o update das dependências e necessidades desta versão do openwrt:</p>
<pre>./scripts/feeds update -a</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1420" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-update-dependencias-download.png" alt="OpenWRT - realizando a solicitação para verificar updates necessários para as dependências do projeto da versão do openwrt escolhida" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-update-dependencias-download.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-update-dependencias-download-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9</h3>
<p>Em seguida, precisamos agora instalar os softwares e dependências necessários para esta versão selecionada do openwrt:</p>
<pre>./scripts/feeds install -a</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1421" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-instalar-dependencias.png" alt="OpenWRT - instalar dependências necessárias do projeto" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-instalar-dependencias.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-instalar-dependencias-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1422" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-instalar-dependencias-download-finalizado.png" alt="OpenWRT - instalar dependências necessárias do projeto - etapa finalizada" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-instalar-dependencias-download-finalizado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-executar-script-instalar-dependencias-download-finalizado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 10</h3>
<p>Agora vamos seguir para configurações realizadas pelo menuconfig. Execute o comando para abrir o menu:</p>
<pre>make menuconfig</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1424" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-make-menuconfig.png" alt="OpenWRT - make menuconfig" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-make-menuconfig.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-make-menuconfig-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 11</h3>
<p>Dentro do menu, é necessário definir o Target System. Utilize as setas do teclado e aperte ENTER em cima da opção:</p>
<pre>Target System  (...) ---&gt;</pre>
<p>Agora escolha a opção da família de processador 27xx da Broadcom:</p>
<pre>BROADCOM BCM27xx</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1425" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes.png" alt="OpenWRT - tela inicial menuconfig" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1426" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-target-system-escolher-bcm27xx.png" alt="OpenWRT - selecionar target" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-target-system-escolher-bcm27xx.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-target-system-escolher-bcm27xx-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 12</h3>
<p>Após selecionar o Target System, você irá voltar para o menu principal. Agora precisamos definir o processador exato da família BCM27xx pelo subtarget. Navegue pelo menu e selecione primeiro a opção:</p>
<pre>Subtarget (...) ---&gt;
Dentro do menu do Subtarget, selecione a opção:</pre>
<pre>BCM2711 boards (64 bit)</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1428" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-subtarget-escolhido.png" alt="OpenWRT - selecionar subtarget" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-subtarget-escolhido.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-subtarget-escolhido-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1427" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-tela-subtarget-selecionar-bcm2711.png" alt="OpenWRT - tela subtarget selecionar BCM2711" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-tela-subtarget-selecionar-bcm2711.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-tela-subtarget-selecionar-bcm2711-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 13</h3>
<p>Após selecionar o Subtarget, você será redirecionado novamente para tela inicial do menu. Agora precisamos definir aspectos da imagem do openwrt a ser criada. O tipo do sistema de arquivos e o tamanho das partições. Selecione a opção:</p>
<pre>Target Images ---&gt;</pre>
<p>No menu de target images você tem diversas opções. Para fins deste exemplo, vou criar imagem do tipo ext4 e squashfs e a opção de compactar com gzip as imagens.<br />
Não recomendo alterar o tamanho padrão da partição de kernel, a não ser que saiba o que está fazendo.<br />
Se souber o tamanho exato do seu cartão de memória ou memória eMMC, você pode alterar o tamanho da partição de root para que não precise executar a expansão do sistema de arquivos após a instalação. Lembre-se de descontar o tamanho da partição de root, para que o cálculo fique correto.</p>
<p>Após definir as configurações do Target Images, utilize a seta do teclado e selecione a opção EXIT para voltar para tela principal do Menu.<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1429" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-tela-target-images.png" alt="OpenWRT - Menu Target Images" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-tela-target-images.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-configuracoes-tela-target-images-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 14</h3>
<p>Nestes próximos passos, precisamos instalar 3 drivers principais para o funcionamento:<br />
kmod-r8169<br />
kmod-usb-dwc2<br />
bcm27xx-userland</p>
<p>Porém, há diversas divisões de submenu e pode ficar complicado descobrir em qual submenu está a opção de instalação dos pacotes necessários. O menu tem uma ferramenta de pesquisa que pode ser acionada utilizando a tecla:</p>
<pre>/</pre>
<p>Esta tecla é semelhante à opção de pesquisa do editor de texto VI ou VIM.<br />
Caso precise instalar pacotes adicionais para habilitar seu dongle USB, ethernet, ou portas USB, etc; esta opção de busca é recomendada (ela informa o caminho dentro do menu até o driver que buscar, caso encontrado).</p>
<p>Não precisa realizar nenhuma busca neste momento, pode fechar o campo de busca e siga com os passos pelo menu principal.<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1430" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-procurar-pacotes-menu.png" alt="OpenWRT - utilizar opção de busca (search) de pacotes" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-procurar-pacotes-menu.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-procurar-pacotes-menu-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 15</h3>
<p>Para instalar o driver kmod-r8169, precisamos navegar pelo submenu:</p>
<pre>Kernel Modules</pre>
<p>Em seguida para o submenu:</p>
<pre>Network Devices</pre>
<p>Encontre a opção:</p>
<pre>kmod-r8169 (Realtek RTL-8169 PCI Gigabit Ethernet kernel support)</pre>
<p>Para conseguir selecionar esta opção, aperte a tecla de <strong>ESPAÇO</strong> por 2 vezes. Ela estará selecionada, quando aparecer um asterisco &lt;*&gt; dentro da opção.</p>
<p>Utilize as setas do teclado e selecione a opção <strong>EXIT</strong> para voltar para o submenu de Kernel Modules.<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1431" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-kernel-modules.png" alt="OpenWRT - menu kernel modules" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-kernel-modules.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-kernel-modules-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1433" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-kernel-modules-selecionar-network-devices.png" alt="OpenWRT - selecionar menu Network Devices" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-kernel-modules-selecionar-network-devices.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-kernel-modules-selecionar-network-devices-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1432" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-network-devices-selecionar-kmod-r8169.png" alt="OpenWRT - selecionar para instalar kmod-r8169" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-network-devices-selecionar-kmod-r8169.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-network-devices-selecionar-kmod-r8169-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 16</h3>
<p>Ainda dentro do submenu de Kernel Modules, vá na opção:</p>
<pre>USB Support ---&gt;</pre>
<p>Encontre a opção:</p>
<pre>kmod-usb-dwc2 DWC2 USB controller drive</pre>
<p>Para conseguir selecionar esta opção, aperte a tecla de <strong>ESPAÇO</strong> por 2 vezes. Ela estará selecionada, quando aparecer um asterisco &lt;*&gt; dentro da opção.</p>
<p>Utilize as setas do teclado e selecione a opção <strong>EXIT</strong> para voltar para o submenu de Kernel Modules. Depois selecione novamente <strong>EXIT</strong> para voltar para o menu principal.<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1435" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-kernel-modules-selecionar-usb-support.png" alt="OpenWRT - menu USB Support" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-kernel-modules-selecionar-usb-support.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-kernel-modules-selecionar-usb-support-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1434" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-usb-support-selecionar-kmod-usb-dwc2.png" alt="OpenWRT - selecionar pacote kmod-usb-dwc2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-usb-support-selecionar-kmod-usb-dwc2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-usb-support-selecionar-kmod-usb-dwc2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 17</h3>
<p>Agora precisamos instalar o driver bcm27xx-userland, para ter suporte a família de processadores da Broadcom BCM27xx. Selecione a opção de submenu:</p>
<pre>Utilities ---&gt;</pre>
<p>Encontre a opção:</p>
<pre>bcm27xx-userland BCM27xx userland tool</pre>
<p>Para conseguir selecionar esta opção, aperte a tecla de ESPAÇO por 2 vezes. Ela estará selecionada, quando aparecer um asterisco &lt;*&gt; dentro da opção.</p>
<p>Depois selecione novamente para voltar para o menu principal.<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1436" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-utilities.png" alt="OpenWRT - menu utilities" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-utilities.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-utilities-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1437" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-utilities-selecionar-bcm27xx-userland.png" alt="" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-utilities-selecionar-bcm27xx-userland.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-utilities-selecionar-bcm27xx-userland-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 18</h3>
<p>No menu principal, procure e selecione a opção:</p>
<pre>LuCI ---&gt;</pre>
<p>Dentro do menu de LuCI, encontre e ative as 2 opções abaixo:</p>
<pre>luci          LuCI interface with Uhttpd as Webserver (default)
luci-ssl      LuCI with HTTPS support (WolfSSL as SSL backend)
</pre>
<p>Para conseguir selecionar estas opções, aperte a tecla de <strong>ESPAÇO</strong> por 2 vezes em cada uma. Ela estará selecionada, quando aparecer um asterisco &lt;*&gt; dentro de cada opção.</p>
<p>Com as setas do teclado caminhe até a opção <strong>EXIT</strong> para voltar para o menu principal.<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1440" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-luci.png" alt="OpenWRT - selecionar o menu LuCI" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-luci.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-selecionar-luci-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1439" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-luci-selecionar-luci-luci-ssl.png" alt="OpenWRT - selecionar pacote luci e luci-ssl" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-luci-selecionar-luci-luci-ssl.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-luci-selecionar-luci-luci-ssl-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 19</h3>
<p>Caso não vá instalar mais nenhum driver de sua preferência, selecione novamente <strong>EXIT</strong> para fechar o menuconfig.</p>
<p>Irá aparecer a opção de salvar as configurações selecionadas. Selecione a opção:</p>
<pre>&lt; YES &gt;</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1441" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-sair-e-salvar.png" alt="OpenWRT - sair do menuconfig e salvar modificações" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-sair-e-salvar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-sair-e-salvar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 20</h3>
<p>Caso apareça algum erro ao fechar o menuconfig, tente identificar qual pacote ou software está com problema. No meu caso específico, apareceu erro no pacote apinger. Um erro incomum, pois não selecionei para instalar o mesmo.</p>
<p>Para resolver este erro, apenas apaguei o arquivo do mesmo:</p>
<pre>rm openwrt/package/feeds/luci/luci-app-apinger</pre>
<p>Provavelmente quando executar este tutorial o erro acima <strong>já estará corrigido no repositório</strong>, pois verifiquei a <strong>ISSUE</strong> aberta no github para solucionar o problema.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1442" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-sair-pode-aparecer-erro.png" alt="OpenWRT - saindo do menuconfig, apareceu erro inesperado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-sair-pode-aparecer-erro.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-menu-sair-pode-aparecer-erro-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1450" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-deletar-luci-app-apinger-evitar-erro-ao-compilar.png" alt="OpenWRT - erro pacote apinger não encontrado, necessário deletar o arquivo para evitar erro de compilação" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-deletar-luci-app-apinger-evitar-erro-ao-compilar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-deletar-luci-app-apinger-evitar-erro-ao-compilar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 21 &#8211; Configurações Opcionais</h3>
<p>Agora vamos apresentar algumas configurações opcionais:</p>
<h4>Alterar banner de login</h4>
<p>Caso queira realizar modificações cosméticas, basta alterar o arquivo:</p>
<pre>nano package/base-files/files/etc/banner</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1448" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-editar-banner-login-ssh-imagem.png" alt="OpenWRT - comando para editar o arquivo de banner" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-editar-banner-login-ssh-imagem.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-editar-banner-login-ssh-imagem-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1444" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-edicao-banner-login-ssh-imagem.png" alt="OpenWRT - Banner de login" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-edicao-banner-login-ssh-imagem.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-edicao-banner-login-ssh-imagem-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1443" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-banner-login-ssh-imagem-editado.png" alt="OpenWRT - Banner de login alterado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-banner-login-ssh-imagem-editado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-banner-login-ssh-imagem-editado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Habilitar UART</h4>
<p>O UART vem desabilitado por padrão, para habilitar, basta editar o arquivo:</p>
<pre>nano target/linux/bcm27xx/image/config.txt</pre>
<p>E inserir o texto, logo abaixo do campo “Place your custom settings here.”</p>
<pre>enable_uart=1</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1446" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-editar-config-habilitar-uart.png" alt="OpenWRT - editar arquivo para habilitar UART" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-editar-config-habilitar-uart.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-editar-config-habilitar-uart-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1445" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-tela-edicao-config-habilitar-uart.png" alt="OpenWRT - editar arquivo para habilitar UART - arquivo padrao" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-tela-edicao-config-habilitar-uart.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-tela-edicao-config-habilitar-uart-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1447" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-tela-config-uart-habilitado.png" alt="OpenWRT - UART habilitado no config.txt" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-tela-config-uart-habilitado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-tela-config-uart-habilitado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Carregar arquivos de configuração sobre login, rede, firewall, dhcp, etc</h4>
<p>Esta etapa <span style="color: #ff6600;"><strong>NÃO É RECOMENDADA</strong></span> para uso geral. O ideal é deixar o openwrt gerar os arquivos e posteriormente realizar as modificações manualmente. Uma justificativa, é que o openwrt pode sofrer atualizações que alterem o layout destes arquivos, o que pode causar problemas na instalação. Mas para fins de automação da geração das imagens, com certeza é uma opção interessante.</p>
<p>Caso queira realizar esta etapa, é necessário criar a estrutura de diretórios:</p>
<pre>mkdir files
mkdir files/etc
mkdir files/etc/config
</pre>
<p>Agora edite os arquivos de configuração e preencha com as configurações que possui. Uma dica para esta etapa é já ter o openwrt configurado em outro roteador e copiar e colar suas configurações. Em todo caso, os principais arquivos para editar são:</p>
<pre>nano files/etc/config/dhcp
nano files/etc/config/firewall
nano files/etc/config/network
nano files/etc/config/wireless
nano files/etc/passwd
nano files/etc/shadow
</pre>
<h3>Passo 22 &#8211; Compilar</h3>
<p>Com todas as modificações desejadas já realizadas, vamos agora executar o comando make para iniciar a compilação do código fonte.</p>
<p>O comando <strong>make defconfig</strong> é útil pare verificar dependências faltantes. O comando <strong>make download</strong> irá realizar o download de todas as dependências antes de inicializar a compilação.</p>
<p>Lembrando que a opção -j (do comando make -j4) define o número de cores a serem utilizadas no processo. Como estou com 4 cores, utilizo -j4, para agilizar o processo. Utilize os comandos para iniciar o processo de compilação:</p>
<pre>make defconfig
make download
make -j4</pre>
<p>O processo é bem demorado, aguarde de forma paciente.<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1452" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-make.png" alt="Openwrt - realizar make para compilar código fonte" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-make.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-criar-imagem-make-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1451" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-criada-fim-compilacao-com-make.png" alt="Openwrt - código fonte compilado sem erros" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-criada-fim-compilacao-com-make.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-imagem-criada-fim-compilacao-com-make-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso tenha erros durante a compilação, é possível utilizar as opção V=s ou V=sc junto com o make -j4.</p>
<h3>Passo 23 &#8211; Arquivos de imagem criados</h3>
<p>Após o término do processo de compilação, é possível verificar os arquivos criados na pasta:</p>
<pre>ls bin/targets/bcm27xx/bcm2711</pre>
<p>Neste exemplo foram criados 4 arquivos, baseados no OpenWRT v22.03.4.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1453" src="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-listagens-arquivos-imagem-criados-ext4-squashhfs.png" alt="OpenWRT - arquivos de imagem de instalação criados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-listagens-arquivos-imagem-criados-ext4-squashhfs.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/04/openwrt-listagens-arquivos-imagem-criados-ext4-squashhfs-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Downloads &#8211; Arquivos de firmware para download Openwrt Raspberry Pi 4</h2>
<h3>Download firmware baseado na versão OpenWRT <span style="color: #339966;"><strong>v22.03.4</strong></span></h3>
<p>Versão configurada exatamente igual os passos do tutorial.</p>
<ul>
<li><strong><a href="https://drive.google.com/file/d/15MD1ryWUPpgUkxQBJF5tCjnmHA9IBRcA/view?usp=sharing" rel="nofollow">openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz (full version with ext4)</a></strong></li>
<li><a href="https://drive.google.com/file/d/1_YDzE6x6cli0lQ2xQwXRnOF8DNrCAQ0v/view?usp=sharing" rel="nofollow"><strong>openwrt-bcm27xx-bcm2711-rpi-4-ext4-sysupgrade.img.gz (upgrade version for ext4)</strong></a></li>
<li><a href="https://drive.google.com/file/d/1g8ree-AVzerh1JniZRrUAv1mIDw8z-Ke/view?usp=sharing" rel="nofollow"><strong>openwrt-bcm27xx-bcm2711-rpi-4-squashfs-factory.img.gz (full version with squashfs)</strong></a></li>
<li><a href="https://drive.google.com/file/d/1GeMsjm7y0fsSqgzG3pMhdpqct1DRgwz1/view?usp=sharing" rel="nofollow"><strong>openwrt-bcm27xx-bcm2711-rpi-4-squashfs-sysupgrade.img.gz (upgrade version for squashfs)</strong></a></li>
</ul>
<h3>Download firmware baseado na versão OpenWRT <span style="color: #339966;"><strong>v23.05.4</strong></span></h3>
<p>Nesta versão o diretório /var  é definido como persistente.</p>
<ul>
<li><strong><a href="https://drive.google.com/file/d/12ps9oqaeRySn-lgWq_yMoMsT5jVipwv2/view?usp=sharing" rel="nofollow">openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz (full version with ext4)</a></strong></li>
<li><a href="https://drive.google.com/file/d/1Z7vsMZKBdsyEO23is_YWBAVTr_lclkkk/view?usp=sharing" rel="nofollow"><strong>openwrt-bcm27xx-bcm2711-rpi-4-ext4-sysupgrade.img.gz (upgrade version for ext4)</strong></a></li>
<li><a href="https://drive.google.com/file/d/1DlKY4lfr_85FmyR1yt4T3w7qI4suJpKX/view?usp=sharing" rel="nofollow"><strong>openwrt-bcm27xx-bcm2711-rpi-4-squashfs-factory.img.gz (full version with squashfs)</strong></a></li>
<li><a href="https://drive.google.com/file/d/1eDiogqql-1JjC9z1ZHDMZmGzIG1G8gMz/view?usp=sharing" rel="nofollow"><strong>openwrt-bcm27xx-bcm2711-rpi-4-squashfs-sysupgrade.img.gz (upgrade version for squashfs)</strong></a></li>
</ul>
<p>Lembrando que você deve escolher qual sistema de arquivos quer utilizar em seu raspberry. Utilizo o ext4 para caso geral, quando instalo outros pacotes no raspberry (servidor LAMP). Se o raspberry for dedicado para funcionar como um roteador, a partição squashfs é a opção recomendada, por preservar sistema de arquivos para o padrão de fábrica após reset/boot.</p>
<p>&nbsp;</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-criar-imagem-openwrt-roteador-raspberry-pi/">Tutorial criar imagem OpenWRT para roteador com Raspberry Pi</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/raspberry-pi/tutorial-criar-imagem-openwrt-roteador-raspberry-pi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Data Science &#8211; Tutorial Extração, Limpeza e Unificação dos Dados Abertos do Prouni com R</title>
		<link>https://viniciuspaes.com/data-science/data-science-tutorial-extracao-limpeza-unificacao-ciencia-dados-prouni-r/</link>
					<comments>https://viniciuspaes.com/data-science/data-science-tutorial-extracao-limpeza-unificacao-ciencia-dados-prouni-r/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Mon, 03 Apr 2023 20:56:20 +0000</pubDate>
				<category><![CDATA[data science]]></category>
		<category><![CDATA[ciência de dados]]></category>
		<category><![CDATA[Data Science]]></category>
		<category><![CDATA[prouni]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=1178</guid>

					<description><![CDATA[<p>Confira o tutorial ensinando a extrair, manipular, limpar e organizar os dados de todos os anos do Prouni em um único dataset, ideal para análises de ciência de dados.</p>
<p>O post <a href="https://viniciuspaes.com/data-science/data-science-tutorial-extracao-limpeza-unificacao-ciencia-dados-prouni-r/">Data Science &#8211; Tutorial Extração, Limpeza e Unificação dos Dados Abertos do Prouni com R</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Entender o que é o Programa Universidade para Todos (Prouni)</li>
<li>Saber onde acessar e extrair os dados abertos do Prouni</li>
<li>Aprender a realizar manipulação e limpeza de dados</li>
<li>Passo a passo para extrair, manipular, limpar e unificar o dataset do Prouni disponibilizado pelo Ministério da Educação (MEC)</li>
</ul>
<h2>O que é o Prouni?</h2>
<p>É um programa social criado pelo governo federal, através do Ministério da Educação (MEC). Criado efetivamente em 2004 e já com bolsas disponíveis para o ano seguinte.<br />
O Prouni visa conceder bolsas de estudos complementares (25%), parciais (50%) e integrais (100%) em instituições de ensino superior particulares.</p>
<p>As bolsas complementares (25%) foram uma iniciativa presente em 2008, onde estudantes poderiam solicitar o FIES e complementar 25% do valor com o Prouni.</p>
<p>Existem diversos critérios para que o aluno possa solicitar o Prouni, estes que podem ser verificados diretamente no site oficial do programa.</p>
<h2>Dataset (dados) disponíveis do Prouni</h2>
<p>Os dados disponíveis do Prouni são os presentes no site de dados abertos do governo federal:</p>
<pre>https://dadosabertos.mec.gov.br/prouni</pre>
<p>No momento da escrita deste tutorial, somente os dados referentes aos anos de 2005 até 2020 estavam disponíveis.<br />
Para fins de replicabilidade, segue os arquivos que encontramos no site dos dados abertos e o hash. Desta forma, é possível comparar se estamos utilizando versões diferentes do dataset, caso o leitor deste artigo tenha resultados diferentes do esperado.</p>
<pre>arquivo	md5	sha1
pda-prouni-2005.csv	8ca2170765eca8944366c3b58c81eeaf	cb579982eba8ce9c303af4db4349c165df4e7284
pda-prouni-2006.csv	e2c7255913e4d06a3f2e3eea7689af6b	b39ae6d21ec796fe3db0f80581e0f77f8f4e0fe8
pda-prouni-2007.csv	8a9e9491228a9c3663d154e975b471df	343d94483bd49fc586506b8a5e4affabe54ebde8
pda-prouni-2008.csv	57d72a8be0fd81a947d73dcdac0c3778	9ef571d484aa6455e1588bbb5643cc964779fa2f
pda-prouni-2009.csv	b48443ae129fb1128f39db925822b02a	70a3dcd403bd1bbb0a52202b23baee7cce169967
pda-prouni-2010.csv	439c1e8437282599878b861b7d11ac43	0380949a5e408ac7e5ba8d073b49cbe9e746df81
pda-prouni-2011.csv	8ecaf8c2a602471122d2d60fb426cfbd	de26faf06149245412e1455c7492e6df7416d238
pda-prouni-2012.csv	093c02c6b44fb4f5d8750e9bccde54ae	cda0697d521777f63bc5d6b5260652609311f571
pda-prouni-2013.csv	2560c46e70ff393123a7bed6ab1a27c8	9b605bbf583f04ffe68fc7fde7e3ed09dc48c301
pda-prouni-2014.csv	bf7faaae1e11b7966dd8d18f5534c199	843bb60219a1b0a60d0e95b24b527d5019009f9f
pda-prouni-2015.csv	8fb5b3ab276c0a0f8533308a839dbb02	002c0bff3c831d29c7ccc69ffe4b65574a546244
pda-prouni-2016.csv	6ba774bb2e703e8417f2a13dfa4ce39d	b40b80e347753c1b649c4feaa5ce27e58adacc7a
pda-prouni-2017.csv	c9a1062ac6b1f6571f4d24750c1a5772	849beb6715a696fb7288b5e13f60d911a81600c7
pda-prouni-2018.csv	c4f385b284056af95f16073cc216d74b	c2d7c795a212142c7648e7781648c23a2f06cc88
pda-prouni-2019.csv	a4bee519238a59fc0eb513016d11ffef	bcefd063f2d76667ebf32986310bfe16b78f7286
pda-prouni-2020.csv	f81f0ec21dcc6d09dd37abdb13732e9a	50f1df4292820e760c1cb17f13211420bcd6b40a
</pre>
<p>Na lista acima, alteramos o nome dos arquivos para que ficassem no mesmo formato, facilitando a leitura dos arquivos no R. Também tive o cuidado de salvar estes datasets no google drive e disponibilizar para download neste link:<strong> <a href="https://drive.google.com/file/d/1_z4PFq84VGNzB9QFqgsQWN2OrVS0EO_Q/view?usp=sharing" target="_blank" rel="noopener">Dataset Original dados abertos Prouni anos 2005 até 2020 separados por ano em formato csv</a></strong></p>
<h2>Pré-processamento dos dados</h2>
<p>O código completo que vamos utilizar está organizado no fim desta publicação. Mas vamos caminhando e explicando cada etapa. Se só tiver interesse no código pronto, basta ir para o fim do artigo.</p>
<p>Vamos utilizar 2 bibliotecas para leitura e manipulação dos dados:</p>
<pre>library(data.table) <strong>#para utilizar o fwrite e estrutura data.table</strong>
library(cli) <strong>#para utilizar hash
</strong></pre>
<p>Neste passo a passo, vamos levar em conta que já realizou o download dos arquivos do site dos dados abertos. Ao criar um projeto ou script no R, é interessante que defina o seu “working directory” para o projeto, desta forma evita necessidade de referenciar o caminho completo para acessar os dados.</p>
<pre>setwd("c:/prouni/")</pre>
<p>Vamos criar agora um vetor com todos os anos do Prouni que queremos manipular (isso facilita caso queira acessar só alguns anos):</p>
<pre>anos  = c(2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020)</pre>
<p>Agora vamos criar uma variável para armazenar o nome dos arquivos que temos disponíveis e verificar o hash MD5 e SHA1:</p>
<pre>md5 = sha1 = arquivo = NULL
for (x in anos[1]:anos[length(anos)]) {
  arquivo = append(arquivo, paste("pda-prouni-",x,".csv",sep=""))
  md5     = append(md5,     hash_md5(paste("pda-prouni-",x,".csv",sep="")))
  sha1    = append(sha1,    hash_sha1(paste("pda-prouni-",x,".csv",sep="")))
}
hash = data.frame(arquivo, md5, sha1)
</pre>
<p>Se digitarmos o nome da variável no console, vamos ter:</p>
<pre>               arquivo                              md5                                     sha1
1  pda-prouni-2005.csv 8ca2170765eca8944366c3b58c81eeaf cb579982eba8ce9c303af4db4349c165df4e7284
2  pda-prouni-2006.csv e2c7255913e4d06a3f2e3eea7689af6b b39ae6d21ec796fe3db0f80581e0f77f8f4e0fe8
3  pda-prouni-2007.csv 8a9e9491228a9c3663d154e975b471df 343d94483bd49fc586506b8a5e4affabe54ebde8
4  pda-prouni-2008.csv 57d72a8be0fd81a947d73dcdac0c3778 9ef571d484aa6455e1588bbb5643cc964779fa2f
5  pda-prouni-2009.csv b48443ae129fb1128f39db925822b02a 70a3dcd403bd1bbb0a52202b23baee7cce169967
6  pda-prouni-2010.csv 439c1e8437282599878b861b7d11ac43 0380949a5e408ac7e5ba8d073b49cbe9e746df81
7  pda-prouni-2011.csv 8ecaf8c2a602471122d2d60fb426cfbd de26faf06149245412e1455c7492e6df7416d238
8  pda-prouni-2012.csv 093c02c6b44fb4f5d8750e9bccde54ae cda0697d521777f63bc5d6b5260652609311f571
9  pda-prouni-2013.csv 2560c46e70ff393123a7bed6ab1a27c8 9b605bbf583f04ffe68fc7fde7e3ed09dc48c301
10 pda-prouni-2014.csv bf7faaae1e11b7966dd8d18f5534c199 843bb60219a1b0a60d0e95b24b527d5019009f9f
11 pda-prouni-2015.csv 8fb5b3ab276c0a0f8533308a839dbb02 002c0bff3c831d29c7ccc69ffe4b65574a546244
12 pda-prouni-2016.csv 6ba774bb2e703e8417f2a13dfa4ce39d b40b80e347753c1b649c4feaa5ce27e58adacc7a
13 pda-prouni-2017.csv c9a1062ac6b1f6571f4d24750c1a5772 849beb6715a696fb7288b5e13f60d911a81600c7
14 pda-prouni-2018.csv c4f385b284056af95f16073cc216d74b c2d7c795a212142c7648e7781648c23a2f06cc88
15 pda-prouni-2019.csv a4bee519238a59fc0eb513016d11ffef bcefd063f2d76667ebf32986310bfe16b78f7286
16 pda-prouni-2020.csv f81f0ec21dcc6d09dd37abdb13732e9a 50f1df4292820e760c1cb17f13211420bcd6b40a
</pre>
<p>Desta forma você poderá confirmar se está utilizando um dataset na mesma versão deste tutorial ou uma versão atualizada pelo governo federal.</p>
<p>Precisamos também definir a normalização dos nomes de cada coluna do Dataset. Já adianto que os anos de 2005 até 2019 possuem 15 variáveis e no ano de 2020 foram adicionadas mais 2.<br />
Vamos primeiramente definir como base os 15 nomes das colunas, criando o seguinte vetor:</p>
<pre>nome_colunas = c("ANO_CONCESSAO_BOLSA","CODIGO_EMEC_IES_BOLSA","NOME_IES_BOLSA","TIPO_BOLSA","MODALIDADE_ENSINO_BOLSA","NOME_CURSO_BOLSA","NOME_TURNO_CURSO_BOLSA","CPF_BENEFICIARIO_BOLSA","SEXO_BENEFICIARIO_BOLSA","RACA_BENEFICIARIO_BOLSA","DATA_NASCIMENTO","BENEFICIARIO_DEFICIENTE_FISICO","REGIAO_BENEFICIARIO_BOLSA","SIGLA_UF_BENEFICIARIO_BOLSA","MUNICIPIO_BENEFICIARIO_BOLSA")
</pre>
<h2>Leitura e processamento de arquivos do dataset do Prouni</h2>
<p>Para a leitura do dataset, vamos utilizar a função read_delim. Existem diversas outras funções para esta tarefa, a mais rápida testada foi a fread() do pacote data.tables. Porém tive dificuldade para carregar o correto encoding dos arquivos, desta forma tinha problemas com acentuação.</p>
<p>Pelos testes que realizei os datasets do Prouni de 2005-2016 e o 2020 possuem codificação ISO-8859-1. Os datasets de 2017-2019 são UTF-8. A primeira vez que tive contato com estes datasets o ano de 2020 não era compatível com nenhuma codificação que tinha testado. Entrei em contato com o Fala.br e solicitei informação sobre qual codificação utilizar, posteriormente, com o arquivo atualizado, consegui acessar os arquivos com a codificação ISO-8859-1.</p>
<p>Fui informado pelo MEC que os datasets podem ser gerados por equipes distintas, à medida que há mudanças no governo. Isso explicaria a falta de padrão nos arquivos.</p>
<p>Para acessar os arquivos, utilizei então as 2 formas:</p>
<pre>#(x &lt; 2017 || x &gt;= 2020)
temp = read_delim(paste("pda-prouni-",x,".csv",sep=""), delim = ";", na = c("", "NA"), escape_double = FALSE, trim_ws = TRUE, col_types = cols(), locale = locale(encoding = "ISO-8859-1"))

#(x &gt; 2017 ||  x &lt; 2020)
temp = read_delim(paste("pda-prouni-",x,".csv",sep=""), delim = ";", na = c("", "NA"), escape_double = FALSE, trim_ws = TRUE, col_types = cols(), locale = locale(encoding = "UTF-8"))
</pre>
<p>Tendo disponível a data de nascimento do aluno, seria interessante utilizar esse dado para criar posteriormente a faixa-etária dos alunos bolsistas. Pensando nessa possibilidade, já criei uma coluna “ANOS_VIDA”. Porém, tive que ajustar os datasets anteriores a 2017, pois o padrão da data vinha no formato dd-mm-AAAA e o restante do dataset no padrão dd/mm/AAAA.</p>
<pre>  if ( x &lt; 2017){
    temp$DATA_NASCIMENTO = as.Date(temp$DATA_NASCIMENTO,"%d-%m-%Y")
    temp$DATA_NASCIMENTO = format(temp$DATA_NASCIMENTO ,"%d/%m/%Y")
  }
</pre>
<p>Como mencionei o dataset de 2020 veio em outro padrão. Possui 2 colunas a mais “MUNICIPIO” e “CAMPUS”. Como já queria criar uma coluna de ANOS_VIDA, já aproveitei para realizar tudo de uma vez:</p>
<pre>  if (x == 2020){
    temp[,"ANOS_VIDA"] = NA <strong>#adicionando coluna ANOS_VIDA</strong>
    temp = select(temp, 1:3,6:18,4,5) <strong>#ordenando colunas</strong>
    nome_colunas_2020 = append(nome_colunas, c("ANOS_VIDA","MUNICIPIO","CAMPUS"))
    colnames(temp) = nome_colunas_2020
    <strong>#Vamos criar a coluna MUNICIPIO e CAMPUS na variável dados, para poder executar o rbind na mesma proporção de número de colunas</strong>
    dados[,"MUNICIPIO"] = NA
    dados[,"CAMPUS"] = NA
  }
  else{
    <strong>#Normalizando o nome das colunas dos outros anos</strong>
    colnames(temp) = nome_colunas
  }
</pre>
<p>Com a coluna ANOS_VIDA criada e a variável de nascimento no mesmo padrão, podemos popular a coluna de ANOS_VIDA. Criamos também uma variável data_relativa_idade, pois precisamos calcular a idade do aluno no ano do Prouni. Assim vamos saber a idade do aluno contando com o aniversário que ele fará naquele ano, e não a idade no dia de inscrição do Prouni. Mas caso deseje alterar a data relativa, basta alterar esta variável. Repare que também altero idades inválidas para NA.</p>
<pre>data_relativa_idade = as.Date(paste(x,"12","31", sep="/"))
temp$ANOS_VIDA = as.integer(as.numeric(difftime(data_relativa_idade, as.Date(temp$DATA_NASCIMENTO,"%d/%m/%Y"), units = "days"))/365)
temp$ANOS_VIDA[temp$ANOS_VIDA&lt;0] &lt;- NA
</pre>
<p>Com as mudanças acima, podemos concatenar com uma estrutura de repetição do tipo FOR, todos os datasets de todos os anos em um único data.table (ou data.frame) utilizando o rbind.<br />
Então o código destacado acima ficaria dentro de uma estrutura:</p>
<pre>for (x in anos[1]:anos[length(anos)]) {
…

dados = rbind(dados,temp)
}
</pre>
<h2>Limpeza e organização do dataset do Prouni</h2>
<p>O dataset não possui muitos dados faltantes, as maiores incoerências encontradas são na data de nascimento dos alunos. Desconfio que talvez na hora que o MEC exportou a data possa ter acontecido algum problema. Ou o aluno tenha inserido sua data de nascimento incorreta, sendo um problema no processo de coleta de dados.</p>
<p>Para eliminar as linhas faltantes, podemos utilizar o comando:</p>
<pre>dados = dados[rowSums(is.na(dados)) != ncol(dados), ]</pre>
<p>O comando acima só irá remover as linhas em que todos os campos forem ausentes. Verifiquei que algumas linhas em branco foram adicionadas durante o processo de junção dos datasets em um único arquivo. Mas o comando acima corrige este problema.</p>
<p>Outro processo importante é a organização dos dados, a fim de normalizar nomes distintos que correspondem à mesma informação. É interessante que as colunas abaixo sejam definidas com o tipo factor (fator) e níveis definidos:</p>
<ul>
<li>TIPO_BOLSA</li>
<li>MODALIDADE_ENSINO_BOLSA</li>
<li>NOME_TURNO_CURSO_BOLSA</li>
<li>SEXO_BENEFICIARIO_BOLSA</li>
<li>BENEFICIARIO_DEFICIENTE_FISICO</li>
<li>REGIAO_BENEFICIARIO_BOLSA</li>
</ul>
<p>Caso não tenha realizado essa mudança no momento que carregou o dataset, não tem problema, vamos realizar o processo abaixo. Repare que também já vamos modificar nomes distintos que definem a mesma informação:</p>
<pre><strong>#Normalizar variável TIPO_BOLSA</strong>
dados$TIPO_BOLSA = as.factor(dados$TIPO_BOLSA)
levels(dados$TIPO_BOLSA)[levels(dados$TIPO_BOLSA)=="BOLSA INTEGRAL"] &lt;- "INTEGRAL"
levels(dados$TIPO_BOLSA)[levels(dados$TIPO_BOLSA)=="BOLSA PARCIAL 50%"] &lt;- "PARCIAL"
levels(dados$TIPO_BOLSA)[levels(dados$TIPO_BOLSA)=="BOLSA COMPLEMENTAR 25%"] &lt;- "COMPLEMENTAR" #ano de 2008

<strong>#Normalizar variável MODALIDADE_ENSINO_BOLSA</strong>
dados$MODALIDADE_ENSINO_BOLSA = as.factor(dados$MODALIDADE_ENSINO_BOLSA)
levels(dados$MODALIDADE_ENSINO_BOLSA)[levels(dados$MODALIDADE_ENSINO_BOLSA)=="EDUCAÇÃO A DIST NCIA"] &lt;- "EAD"
levels(dados$MODALIDADE_ENSINO_BOLSA)[levels(dados$MODALIDADE_ENSINO_BOLSA)=="Presencial"] &lt;- "PRESENCIAL"

<strong>#Normalizar variável NOME_TURNO_CURSO_BOLSA</strong>
dados$NOME_TURNO_CURSO_BOLSA = as.factor(dados$NOME_TURNO_CURSO_BOLSA)
levels(dados$NOME_TURNO_CURSO_BOLSA)[levels(dados$NOME_TURNO_CURSO_BOLSA)=="CURSO A DIST NCIA"] &lt;- "EAD"
levels(dados$NOME_TURNO_CURSO_BOLSA)[levels(dados$NOME_TURNO_CURSO_BOLSA)=="Curso a distância"] &lt;- "EAD"
levels(dados$NOME_TURNO_CURSO_BOLSA)[levels(dados$NOME_TURNO_CURSO_BOLSA)=="Integral"] &lt;- "INTEGRAL"
levels(dados$NOME_TURNO_CURSO_BOLSA)[levels(dados$NOME_TURNO_CURSO_BOLSA)=="Matutino"] &lt;- "MATUTINO"
levels(dados$NOME_TURNO_CURSO_BOLSA)[levels(dados$NOME_TURNO_CURSO_BOLSA)=="Noturno"] &lt;- "NOTURNO"
levels(dados$NOME_TURNO_CURSO_BOLSA)[levels(dados$NOME_TURNO_CURSO_BOLSA)=="Vespertino"] &lt;- "VESPERTINO"

<strong>#Normalizar variável SEXO_BENEFICIARIO_BOLSA</strong>
dados$SEXO_BENEFICIARIO_BOLSA = as.factor(dados$SEXO_BENEFICIARIO_BOLSA)
levels(dados$SEXO_BENEFICIARIO_BOLSA)[levels(dados$SEXO_BENEFICIARIO_BOLSA)=="Feminino"] &lt;- "F"
levels(dados$SEXO_BENEFICIARIO_BOLSA)[levels(dados$SEXO_BENEFICIARIO_BOLSA)=="Masculino"] &lt;- "M"

<strong>#Normalizar variável BENEFICIARIO_DEFICIENTE_FISICO</strong>
dados$BENEFICIARIO_DEFICIENTE_FISICO = as.factor(dados$BENEFICIARIO_DEFICIENTE_FISICO)
levels(dados$BENEFICIARIO_DEFICIENTE_FISICO)[levels(dados$BENEFICIARIO_DEFICIENTE_FISICO)=="SIM"] &lt;- "S"
levels(dados$BENEFICIARIO_DEFICIENTE_FISICO)[levels(dados$BENEFICIARIO_DEFICIENTE_FISICO)=="NÃO"] &lt;- "N"

<strong>#Normalizar variável REGIAO_BENEFICIARIO_BOLSA</strong>
dados$REGIAO_BENEFICIARIO_BOLSA = as.factor(dados$REGIAO_BENEFICIARIO_BOLSA)
levels(dados$REGIAO_BENEFICIARIO_BOLSA)[levels(dados$REGIAO_BENEFICIARIO_BOLSA)=="Centro-Oeste"] &lt;- "CENTRO-OESTE"
levels(dados$REGIAO_BENEFICIARIO_BOLSA)[levels(dados$REGIAO_BENEFICIARIO_BOLSA)=="Nordeste"] &lt;- "NORDESTE"
levels(dados$REGIAO_BENEFICIARIO_BOLSA)[levels(dados$REGIAO_BENEFICIARIO_BOLSA)=="Norte"] &lt;- "NORTE"
levels(dados$REGIAO_BENEFICIARIO_BOLSA)[levels(dados$REGIAO_BENEFICIARIO_BOLSA)=="Sudeste"] &lt;- "SUDESTE"
levels(dados$REGIAO_BENEFICIARIO_BOLSA)[levels(dados$REGIAO_BENEFICIARIO_BOLSA)=="Sul"] &lt;- "SUL"
</pre>
<p>Com os comandos acima a base de dados já estará unificada e organizada. É interessante então gerar um novo arquivo unificado, vamos chamar de pda-prouni-2005-2020.csv. Vamos criar um hash deste novo arquivo e juntar com o hash dos arquivos de dataset de origem e também salvar em disco com o nome hash-datasets.txt. Este passo é importante para fins de reprodutibilidade posteriormente.</p>
<pre><strong>#Salvar o arquivo gerado em disco</strong>
dataset_saida = "pda-prouni-2005-2020.csv"
fwrite(dados, dataset_saida)

<strong>#Criar o hash para o arquivo de dataset unificado que acabamos de criar</strong>
hash = rbind(hash, data.frame(arquivo=dataset_saida, md5=hash_md5(dataset_saida), sha1=hash_sha1(dataset_saida)))
fwrite(hash, "hash-datasets.txt", sep = " \t ")
</pre>
<p>Com o passo acima temos uma base uniforme do <strong>Prouni</strong> referente aos anos de <strong>2005-2020</strong>, facilitando o processo de análise e ciência de dados. O código também está disponível abaixo, de forma organizada:<br />
<script src="https://gist.github.com/viniciuspaes/427b6625769aa5e82671a13f07669a31.js"></script></p>
<p>Ao executar o código acima, gerei um dataset unificado. Deixo ele disponível para download neste link: <strong><a href="https://drive.google.com/file/d/1u8gt1JW1iQWW9h52Z3t_oLsX9r9_rSjE/view?usp=sharing" target="_blank" rel="noopener">Dataset completo Prouni 2005 até 2020 &#8211; Portal dados Abertos</a></strong></p>
<p>Gostou do conteúdo? Tem alguma sugestão para melhorar o código acima? Quer mais funcionalidades presentes? Deixa sua mensagem aí nos comentários, que farei o possível para responder!</p>
<p>O post <a href="https://viniciuspaes.com/data-science/data-science-tutorial-extracao-limpeza-unificacao-ciencia-dados-prouni-r/">Data Science &#8211; Tutorial Extração, Limpeza e Unificação dos Dados Abertos do Prouni com R</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/data-science/data-science-tutorial-extracao-limpeza-unificacao-ciencia-dados-prouni-r/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial configurar pool PHP-FPM distinta para cada website</title>
		<link>https://viniciuspaes.com/servidor/tutorial-configurar-pool-php-fpm-website/</link>
					<comments>https://viniciuspaes.com/servidor/tutorial-configurar-pool-php-fpm-website/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Thu, 23 Mar 2023 22:50:10 +0000</pubDate>
				<category><![CDATA[servidor]]></category>
		<category><![CDATA[mod_php]]></category>
		<category><![CDATA[permissão arquivos]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-fpm]]></category>
		<category><![CDATA[pool]]></category>
		<category><![CDATA[suphp]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=1158</guid>

					<description><![CDATA[<p>Aprenda o passo a passo para criar pools do PHP-FPM para cada domínio do servidor para um melhor gerenciamento de arquivos e recursos.</p>
<p>O post <a href="https://viniciuspaes.com/servidor/tutorial-configurar-pool-php-fpm-website/">Tutorial configurar pool PHP-FPM distinta para cada website</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Entender o que é o PHP-FPM</li>
<li>Quais casos é interessante configurar uma pool distinta para cada site ou conjunto de sites</li>
<li>As necessidades para seguir este tutorial</li>
<li>Passo a passo para criar uma pool independente para cada site com o PHP-FPM</li>
</ul>
<h2>O que é o PHP-FPM</h2>
<p>A sigla <strong>FPM</strong> do PHP-FPM vem do inglês “<strong>FastCGI Process Manager</strong>” sendo uma alternativa ao Apache 2.0 handler <strong>mod_php</strong> e <strong>SUPHP</strong> baseados no método CGI tradicional.</p>
<p>Uma característica do PHP-FPM é que sua implementação possui um desempenho superior e a possibilidade de parametrização com propósito de otimizar o uso de recursos disponíveis no servidor.</p>
<p>O PHP-FPM já vem como padrão no Servidor Http Nginx, mas se estiver utilizando o <strong>Servidor HTTP Apache</strong>, é necessário instalar e configurar o mesmo.</p>
<h2>Quais casos é interessante configurar uma pool distinta para cada site ou conjunto de sites</h2>
<ul>
<li><strong>CASE 1:</strong><br />
Servidor de páginas precisa ser dividido para 2 empresas. É necessário que o usuário e grupo de execução do PHP seja diferente para cada conjunto de websites. Ou seja, cada empresa precisa ter sua própria pool do php-fpm configurada desta forma.</li>
<li><strong>CASE 2:</strong><br />
Servidor dividido para 2 empresas novamente, mas agora cada empresa deseja utilizar uma versão diferente do PHP para seus websites. Novamente, basta instalar a versão do php-fpm que cada empresa deseja utilizar e configurar uma pool definindo qual versão do php cada empresa vai utilizar.</li>
<li><strong>CASE 3:</strong><br />
Servidor dividido para 2 ou mais empresas, mas cada empresa tem preferência distinta para uso dos recursos do servidor na execução de arquivo php. Necessário então configurar pools diferentes para cada conjunto de websites, para que cada empresa tenha os recursos acordados.</li>
<li><strong>CASE 4:</strong><br />
Servidor dividido para um grupo de 10 amigos, mas cada um gerencia seu próprio website no servidor. Desta forma, para garantir uma melhor gestão de permissão de arquivos, é necessário criar uma pool para cada pessoa/website e configurar o usuário de cada um para ser o responsável de executar o php no seu website.</li>
</ul>
<h2>Os requisitos para seguir este tutorial</h2>
<p>Este tutorial leva em conta que já possui o PHP-FPM instalado no seu servidor. Caso ainda não tenha, basta verificar este tutorial e verificar os passos da instalação: <strong><a href="https://viniciuspaes.com/linux/tutorial-instalar-configurar-servidor-web-http-ubuntu-apache-mysql-php-ftp-tls-php-fpm/">Tutorial instalar e configurar servidor web (HTTP) com PHP-FPM</a></strong><br />
Caso esteja utilizando o servidor Nginx, você já possui o PHP-FPM instalado.</p>
<h2>Passo a passo para criar uma pool independente para cada site com o PHP-FPM</h2>
<h3>Passo 1</h3>
<p>Primeiro passo é verificar qual versão do PHP-FPM possui instalado, ou quais versões, pois pode ter mais de uma instalada.</p>
<pre>grep "php-fpm: master process"</pre>
<p>Aqui no meu exemplo tenho a saída:</p>
<pre>root       74015  0.0  1.4 242116 14332 ?        Ss   Mar21   0:12 php-fpm: master process (/etc/php/<strong><span style="color: #ff0000;">8.1</span></strong>/fpm/php-fpm.conf)</pre>
<p>Verificando a saída acima, vemos que o <strong>php-fpm</strong> que temos em funcionamento é o da <strong>versão <span style="color: #ff0000;">8.1</span></strong>.</p>
<p>Então, as Pool’s da versão instalada do PHP-FPM são configuradas na pasta:</p>
<pre>etc/php/<strong><span style="color: #ff0000;">8.1</span></strong>/fpm/pool.d/</pre>
<h3>Passo 2</h3>
<p>Agora vamos pensar no seguinte setup de utilização do servidor:</p>
<p>Temos 2 usuários que são webmasters e precisam mexer em websites distintos. Vamos supor então que eles possuem o nome de usuário de login:</p>
<ul>
<li><span style="color: #339966;"><strong>webmaster1</strong></span></li>
<li><span style="color: #99cc00;"><strong>webmaster2</strong></span></li>
</ul>
<p>Eles podem ser responsáveis por um conjunto de websites distintos. Mas neste exemplo, vamos supor de forma resumida, que cada um possui acesso a 1 website distinto apenas, então estes websites são:</p>
<ul>
<li><span style="color: #339966;"><strong>website1</strong></span></li>
<li><span style="color: #99cc00;"><strong>website2</strong></span></li>
</ul>
<h3>Passo 3</h3>
<p>Precisamos então criar uma pool para cada usuário, e esta pool eles vão utilizar no conjunto de websites que tiverem acesso. Neste exemplo porém, cada 1 terá apenas acesso a 1 website.</p>
<p>Então vamos utilizar a pool padrão como modelo e fazer uma cópia alterando o nome:</p>
<pre>sudo cp /etc/php/<strong><span style="color: #ff0000;">8.1</span></strong>/fpm/pool.d/www.conf /etc/php/<span style="color: #ff0000;"><strong>8.1</strong></span>/fpm/pool.d/<span style="color: #339966;"><strong>webmaster1.conf</strong></span>
sudo cp /etc/php/<strong><span style="color: #ff0000;">8.1</span></strong>/fpm/pool.d/www.conf /etc/php/<span style="color: #ff0000;"><strong>8.1</strong></span>/fpm/pool.d/<span style="color: #99cc00;"><strong>webmaster2.conf
</strong></span></pre>
<h3>Passo 4</h3>
<p>Agora vamos alterar a pool do webmaster1.</p>
<pre>sudo nano /etc/php/<span style="color: #ff0000;"><strong>8.1</strong></span>/fpm/pool.d/<span style="color: #339966;"><strong>webmaster1</strong></span>.conf</pre>
<p>Encontre a linha que define o nome da pool “[www]” e altere para:</p>
<pre>[<span style="color: #339966;"><strong>webmaster1</strong></span>]</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1172" src="https://viniciuspaes.com/wp-content/uploads/2023/03/php-fpm-nome-pool.png" alt="PHP-FPM - criando uma nova pool e definindo seu nome" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/php-fpm-nome-pool.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/php-fpm-nome-pool-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Encontre a linha “user = www-data” e altere para:</p>
<pre>user = <span style="color: #339966;"><strong>webmaster1</strong></span></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1173" src="https://viniciuspaes.com/wp-content/uploads/2023/03/php-fpm-definir-usuario.png" alt="PHP-FPM - definindo usuário responsável por execução de arquivos php nesta pool" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/php-fpm-definir-usuario.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/php-fpm-definir-usuario-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Encontre a linha:</p>
<pre>listen = /run/php/php<span style="color: #ff0000;"><strong>8.1</strong></span>-fpm.sock</pre>
<p>Altere para:</p>
<pre>listen = /run/php/php<span style="color: #ff0000;"><strong>8.1</strong></span>-fpm<span style="color: #339966;"><strong>-webmaster1</strong></span>.sock</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1174" src="https://viniciuspaes.com/wp-content/uploads/2023/03/php-fpm-nome-socket.png" alt="PHP-FPM - definindo o nome do socket pra funcionamento do php-fpm" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/php-fpm-nome-socket.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/php-fpm-nome-socket-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>Agora vamos alterar a pool do webmaster2.</p>
<pre>sudo nano /etc/php/<span style="color: #ff0000;"><strong>8.1</strong></span>/fpm/pool.d/<span style="color: #99cc00;"><strong>webmaster2</strong></span>.conf</pre>
<p>Encontre a linha que define o nome da pool “[www]” e altere para:</p>
<pre>[<span style="color: #99cc00;"><strong>webmaster2</strong></span>]</pre>
<p>Encontre a linha “user = www-data” e altere para:</p>
<pre>user = <strong><span style="color: #99cc00;">webmaster2</span></strong></pre>
<p>Encontre a linha:</p>
<pre>listen = /run/php/php<span style="color: #ff0000;"><strong>8.1</strong></span>-fpm.sock</pre>
<p>Altere para:</p>
<pre>listen = /run/php/php<span style="color: #ff0000;"><strong>8.1</strong></span>-fpm<span style="color: #99cc00;"><strong>-webmaster2</strong></span>.sock</pre>
<h3>Passo 6</h3>
<p>Agora em cada arquivo de configuração de um domínio, precisamos informar qual pool deverá ser utilizado para execução do php-fpm.</p>
<p>Costumo ter 3 arquivos de configuração por domínio, um para acesso http, um para acesso ssl, e outro para acesso ssl com subdomínio www. Se no seu setup utiliza de outra forma, não tem problema.</p>
<h4>Configuração do Website1</h4>
<p>Mas para fim de exemplo, para o website1, vou editar estes 3 arquivos (exemplo utilizando servidor <strong>apache</strong>):</p>
<pre>sudo nano /etc/apache2/sites-available/<span style="color: #339966;"><strong>website1.com.br</strong></span>.http.conf
sudo nano /etc/apache2/sites-available/<span style="color: #339966;"><strong>website1.com.br</strong></span>.ssl.conf
sudo nano /etc/apache2/sites-available/<span style="color: #339966;"><strong>website1.com.br</strong></span>.ssl.www.conf
</pre>
<p>Dentro da diretiva de virtualhost, é necessário inserir o seguinte texto:</p>
<pre> &lt;FilesMatch \.php$&gt;
  SetHandler "proxy:unix:/run/php/php<span style="color: #ff0000;"><strong>8.1</strong></span>-fpm<span style="color: #339966;"><strong>-website1</strong></span>.sock|fcgi://localhost"
 &lt;/FilesMatch&gt;
</pre>
<p>Segue o exemplo abaixo de como ficaria dentro do arquivo de configuração:<br />
<script src="https://gist.github.com/viniciuspaes/b2b8dd24024f40a79a9170e62d01795d.js"></script><br />
<script src="https://gist.github.com/viniciuspaes/000a8ca2943777e38d0c2977bd97bdaf.js"></script><br />
<script src="https://gist.github.com/viniciuspaes/034ceeed77c1170d0f43a4fe6ac896c9.js"></script></p>
<h4>Configuração do Website2</h4>
<p>Da mesma forma, para o website2, temos os arquivos:</p>
<pre>sudo nano /etc/apache2/sites-available/<span style="color: #99cc00;"><strong>website2.com.br</strong></span>.http.conf
sudo nano /etc/apache2/sites-available/<span style="color: #99cc00;"><strong>website2.com.br</strong></span>.ssl.conf
sudo nano /etc/apache2/sites-available/<span style="color: #99cc00;"><strong>website2.com.br</strong></span>.ssl.www.conf
</pre>
<p>E precisamos inserir dentro da diretiva de virtualhost o texto:</p>
<pre> &lt;FilesMatch \.php$&gt;
  SetHandler "proxy:unix:/run/php/php<span style="color: #ff0000;"><strong>8.1</strong></span>-fpm<span style="color: #99cc00;"><strong>-website2</strong></span>.sock|fcgi://localhost"
 &lt;/FilesMatch&gt;
</pre>
<p>As mesmas modificações precisam ser realizadas, como já destacamos os exemplos do website1, não vamos repetir aqui, mas é o mesmo processo.</p>
<h3>Passo 7</h3>
<p>Um passo opcional é desligar a pool padrão “[www]”. Eu particularmente deixo a mesma ligada, para utilização quando acesso algum site do servidor pelo IP. Mas, caso não seja seu caso, é possível desligar a pool padrão mudando seu nome:</p>
<pre>sudo mv /etc/php/<strong><span style="color: #ff0000;">8.1</span></strong>/fpm/pool.d/www.conf /etc/php/<strong><span style="color: #ff0000;">8.1</span></strong>/fpm/pool.d/www.conf-desligada</pre>
<h3>Passo 8</h3>
<p>Agora, para que as modificações que realizamos tenham efeito, é preciso reiniciar tanto o servidor apache, quanto o PHP-FPM.</p>
<p>Ao reiniciar o PHP-FPM, ele vai verificar os novos arquivos de configuração das pool’s dentro do diretório e irá criar as mesmas, assim como os arquivos .sock. Tenho preferência em reiniciar o PHP-FPM primeiro e em seguida o servidor apache (executar os comandos abaixo um de cada vez).</p>
<pre>sudo service php<span style="color: #ff0000;"><strong>8.1</strong></span>-fpm restart
sudo service apache2 restart
</pre>
<h2>Considerações Finais</h2>
<p>O processo de setup das pools é bem simples. Lembrando que para ter um desempenho otimizado, é possível ainda realizar algumas modificações nos arquivos de configuração, visando as necessidades da sua aplicação php. É possível configurar mais workers, etc.</p>
<p>Tem alguma dúvida ou sugestão? Escreve aí nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/servidor/tutorial-configurar-pool-php-fpm-website/">Tutorial configurar pool PHP-FPM distinta para cada website</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/servidor/tutorial-configurar-pool-php-fpm-website/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como criar Servidor de Emails completo no Ubuntu</title>
		<link>https://viniciuspaes.com/email/tutorial-criar-servidor-emails-ubuntu/</link>
					<comments>https://viniciuspaes.com/email/tutorial-criar-servidor-emails-ubuntu/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Thu, 16 Mar 2023 23:43:11 +0000</pubDate>
				<category><![CDATA[email]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[DKIM]]></category>
		<category><![CDATA[DMARC]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Dovecot]]></category>
		<category><![CDATA[IMAP]]></category>
		<category><![CDATA[LAMP]]></category>
		<category><![CDATA[LMTP]]></category>
		<category><![CDATA[maildir]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[mbox]]></category>
		<category><![CDATA[Milter]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[OpenDKIM]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-fpm]]></category>
		<category><![CDATA[POP3]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[Postfixadmin]]></category>
		<category><![CDATA[Roundcube]]></category>
		<category><![CDATA[Servidor Email]]></category>
		<category><![CDATA[Sieve]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[SPF]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=901</guid>

					<description><![CDATA[<p>Aprenda o passo a passo para criar um servidor de emails funcional no Ubuntu.</p>
<p>O post <a href="https://viniciuspaes.com/email/tutorial-criar-servidor-emails-ubuntu/">Tutorial como criar Servidor de Emails completo no Ubuntu</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Entender o que é um servidor</li>
<li>Saber as atribuições de um servidor de email</li>
<li>As necessidades para criar um servidor de email</li>
<li>Passo a passo para criar um servidor de email completo no Ubuntu</li>
</ul>
<h2>O que é um servidor</h2>
<p>Dentro do contexto de computação, rede, internet e serviços, um servidor possui duas características principais:<br />
Do ponto de vista de hardware (equipamento necessário), um servidor é um computador, e possui a maioria das características que um computador possui: placa mãe, processador, memória ram, dispositivo de armazenamento, etc.<br />
Na visão de software, um servidor pode ser definido como um conjunto de programas de computador que visam prestar um serviço.</p>
<h2>Quais as atribuições de um servidor de email?</h2>
<p>Como vimos a definição generalista para o conceito de servidor, agora podemos especificar de uma forma mais sucinta o que é um servidor de emails.<br />
Uma explicação bastante simplificada define um servidor de emails como um computador configurado com softwares que visam realizar tarefas relacionadas ao envio e recebimento de emails.<br />
Este servidor pode ser configurado em uma rede local, sem acesso a internet, provendo envio e recebimento de emails de forma restrita dentro de uma empresa, por exemplo. Ou pode ser configurado com acesso a internet, provendo serviço de envio e recebimento de email de forma ampla, para domínios externos.</p>
<h2>Quais as necessidades para criar um servidor de emails</h2>
<p>O primeiro passo é ter um computador disponível.</p>
<p>Caso pense em um projeto didático, pode criar um servidor localmente em sua casa. Se sua empresa de fornecimento de internet disponibilizar um IP real, é possível abrir as portas necessárias no seu roteador, para dar acesso a envio e recebimento de emails na internet para o seu servidor, a única ressalva é que geralmente não poderá configurar facilmente uma entrada DNS do tipo PTR, mas não é um problema tão grande inicialmente.</p>
<p>Lembrando que é necessário ter um sistema operacional instalado. Você pode realizar esta etapa manualmente ou utilizar uma imagem pronta do sistema operacional para seu setup. Por exemplo, se optar por um Raspberry Pi, pode utilizar uma imagem pronta do Ubuntu Server, poupando a etapa de instalação do sistema operacional.</p>
<p>Caso opte por utilizar uma máquina virtual, também existem imagens do Sistema Operacional já prontas.</p>
<p>Agora, se tiver um computador antigo em casa e precise instalar o sistema operacional, basta seguir os passos do <a href="https://viniciuspaes.com/servidor/tutorial-setup-servidor-linux-ubuntu-local-virtualbox/">Tutorial setup Servidor Linux Ubuntu Local</a>, lembre de começar a partir do passo 9 (e você precisa de um pen drive com a imagem de um SO para dar boot no instalador).</p>
<p>Uma opção mais funcional é alugar um servidor do tipo VPS (Virtual Private Server), ele funciona como um computador já ligado na internet, com IP real configurado e geralmente é possível configurar a entrada DNS do tipo PTR sem problemas. Este servidor já vem com sistema operacional instalado, poupando esta etapa de configuração.</p>
<p>Uma visão ampla do processo envolve várias etapas, mas podemos citar:</p>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Escolha de um domínio/subdomínio para o servidor</li>
<li><strong>Setup de Hardware</strong>
<ul>
<li>Escolha do equipamento: computador pessoal ou raspberry pi, ou um VPS, etc.</li>
</ul>
</li>
<li><strong>Setup de Software</strong>
<ul>
<li>Instalação do Sistema Operacional</li>
<li>Configuração DNS</li>
<li>Configuração do domínio/subdomínio no servidor</li>
<li>Instalação servidor http (Apache ou Nginx) &#8211; para dar suporte administrativo (PostfixAdmin) e cliente web para acesso aos emails (Roundcube)</li>
<li>Instalação de banco de dados (MySQL/MariaDB ou Postgresql) &#8211; para gerenciar armazenamento de emails</li>
<li>Instalação de certificados SSL (TLS) para o domínio e subdomínio</li>
<li>Instalação do Postfix para gerenciar processo de envio e recebimento de emails</li>
<li>Instalação e configuração PostfixAdmin (acesso web para criar novas caixas de email)</li>
<li>Verificar portas abertas no servidor (firewall) e abrir portas, caso necessário</li>
<li>Instalação do OpenDKIM</li>
<li>Configurar suporte SPF, DKIM e DMARC no DNS do domínio do servidor de email</li>
<li>Integrar DKIM e DMARC no Postfix</li>
<li>Instalação e configuração Dovecot para suporte de conexão IMAP para clientes de email</li>
<li>Mudar o escopo de armazenamento de emails do tipo sistema de arquivos para banco de dados</li>
<li>Mudar o escopo de caixas de email vinculadas aos usuários do linux, para caixas de email virtuais (gerenciadas pelos usuários cadastrados no banco de dados pelo postfixadmin &#8211; virtual mail box)</li>
<li>Instalação e configuração Roundcube (acesso web para ler e enviar emails)</li>
<li>Suporte para configuração de vários domínios no servidor de email: neste setup, configuramos que o servidor só pode enviar email e criar caixas para o dominio1.com.br, por exemplo; Com esta etapa, permite configurar domínios adicionais: dominio2.com.br, dominio3.com.br, onomededominioqueeuquiser.com.br, etc.</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>Passo a para criar servidor de email completo no Ubuntu</h2>
<p>Vamos começar partindo do princípio que você já tem um computador com sistema operacional instalado, ou um VPS.<br />
Neste exemplo, vou criar o servidor baseado no domínio <span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>. Lembre-se de <span style="color: #ff0000;"><strong>alterar este domínio</strong></span>, para seu domínio escolhido. Lembre-se que você precisa ser o dono do domínio escolhido, ou seja, tenha realizado o processo de registro do domínio que deseja utilizar. Caso tenha dúvida em como fazer, acesse o <a href="https://viniciuspaes.com/website/tutorial-como-registrar-dominio-internet-registrobr-google-domains/">Tutorial de como registrar domínio na internet</a>. Lembrando que domínio com final .br só pode ser registrado pelo site do Registro.br.</p>
<h3>Passo 1</h3>
<p>Conecte no seu servidor por SSH, exemplo:</p>
<pre>ssh usuario@ip</pre>
<p>Ou caso utilize uma chave:</p>
<pre>ssh -i chave.pem usuario@IP</pre>
<h3>Passo 2</h3>
<p>Verificar o hostname do servidor, digite:</p>
<pre>hostname</pre>
<p>O ideal é termos o hostname configurado corretamente. Por exemplo, caso meu domínio escolhido seja o<span style="color: #ff6600;"> <strong>viniciuspaes.com</strong></span>, quero configurar o meu servidor de email em um subdomínio chamado <strong>mail.<span style="color: #ff6600;">viniciuspaes.com</span></strong>. O ideal é ter então o hostname configurado para <strong>mail.<span style="color: #ff6600;">viniciuspaes.com</span></strong>.<br />
Podemos editar o arquivo:</p>
<pre>sudo nano /etc/hostname</pre>
<p>E alterar seu conteúdo para:</p>
<pre>mail.<span style="color: #ff6600;">viniciuspaes.com</span></pre>
<p>Outra opção é utilizando o comando:</p>
<pre>sudo hostnamectl set-hostname mail.<span style="color: #ff6600;">viniciuspaes.com</span></pre>
<p>É comum o hostname não ficar persistente após reiniciar o servidor, para garantir que não ocorra, esta etapa opcional pode resolver o problema:<br />
Edite o arquivo:</p>
<pre>sudo nano /etc/cloud/cloud.cfg</pre>
<p>Procure a linha que começa com:</p>
<pre>preserve_hostname</pre>
<p>Precisamos que ela fique ativada, se ela tiver com a opção “false”, então altere a linha toda para:</p>
<pre>preserve_hostname: true</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-925" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-preserve-hostname.png" alt="Servidor Emails - Preserve Hostname" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-preserve-hostname.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-preserve-hostname-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora faça um teste, reinicie o servidor:</p>
<pre>sudo reboot now</pre>
<p>Agora conecte novamente por SSH no servidor após ele terminar o boot (pode demorar alguns minutos).<br />
Verifique novamente o hostname, para verificar se ficou persistente:</p>
<pre>hostname</pre>
<h3>Passo 3</h3>
<p>Agora é necessário realizar algumas alterações nas entradas DNS do seu domínio. O que eu faço para facilitar o processo, é redirecionar meus domínios do Registro.BR para a DigitalOcean gerenciar o DNS. Pois a considero o serviço de gerenciar o DNS do Registro.BR um pouco lento. Então, se utilizar um domínio com final .BR é uma opção a ser considerada. É possível utilizar também outra empresa para gerenciar o DNS, como o Route66 da Amazon AWS.<br />
Neste exemplo utilizo um domínio .com, registrado no Google Domains; local também onde gerencio o DNS. A interface do Google Domains é satisfatória, então não vou redirecionar meu DNS do Google Domains para outra empresa gerenciar.</p>
<p>Neste passo, precisamos inserir entradas DNS. Primeiramente precisamos informar qual servidor irá gerenciar os emails para o domínio. Isto é feito pela entrada do tipo MX.<br />
Então vou criar uma entrada MX com as informações:</p>
<pre>Nome do host: <span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>
Tipo: MX
TTL: 3600
Prioridade: 0
Dados: mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong>
</span></pre>
<p>No exemplo acima, algumas empresas optam por separar o campo de prioridade do servidor de email, no caso do Google Domains, ele aparece no campo Dados, separando a prioridade com um espaço do nome do subdomínio.</p>
<p>Com a criação desta entrada DNS quando alguém enviar um email para qualquercaixa@<span style="color: #ff6600;">viniciuspaes.com</span>, ele vai entender que o servidor de email está configurado no subdomínio mail.<span style="color: #ff6600;">viniciuspaes.com</span>, pois foi o que configuramos no exemplo acima.</p>
<p>Mas agora precisamos informar em qual IP o servidor de email está configurado. Então, para esta etapa, precisamos criar uma entrada do tipo A, que direciona um nome de domínio (ou subdomínio) para um IP, ou seja, o <strong>mail</strong>.<span style="color: #ff6600;">viniciuspaes.com</span> vai para qual IP?<br />
Então, vamos criar uma entrada DNS do tipo A:</p>
<pre>Nome do host: <strong>mail.<span style="color: #ff6600;">viniciuspaes.com</span></strong>
Tipo: A
TTL: 1800
Dados: (digite o endereço IP do seu servidor)
</pre>
<h3>Passo 4</h3>
<p>Vamos instalar agora o principal software do servidor de emails. Este que gerencia o processo de envio e recebimento de emails. Digite o comando abaixo para instalar o Postfix:</p>
<pre>sudo apt install postfix</pre>
<p>No processo de instalação quando perguntarem “General type of mail configuration”, selecione:</p>
<pre>Internet Site</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-921" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-tela-postfix-configuration.png" alt="Servidor de Emails - tela instalação postfix - Internet Site" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-tela-postfix-configuration.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-tela-postfix-configuration-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Quando perguntarem “System mail name”, selecione o seu domínio principal, <strong>não</strong> insira o subdomínio:</p>
<pre><span style="color: #ff6600;">viniciuspaes.com</span></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-923" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-tela-postfix-configuration-system-mail-name.png" alt="Servidor de Email - definir domínio principal" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-tela-postfix-configuration-system-mail-name.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-tela-postfix-configuration-system-mail-name-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora é interessante verificar se a porta 25 (smtp) responsável por enviar emails está aberta e funcional, acesse o site do link abaixo e insira seu IP e a porta 25 e clique para realizar o teste:</p>
<pre>https://www.yougetsignal.com/tools/open-ports/</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-929" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-testar-porta-25-aberta-yougetsignal.png" alt="Servidor Email - testando porta 25 aberta com site yougetsignal" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-testar-porta-25-aberta-yougetsignal.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-testar-porta-25-aberta-yougetsignal-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso a porta esteja fechada, teste se o seu IP do servidor realmente está correto. Se utilizar o endereço do subdomínio (mail.<span style="color: #ff6600;">viniciuspaes.com</span>) tenha certeza que o endereço está com o DNS correto direcionando para o IP do servidor. Caso esteja tudo certo, tente abrir a porta 25 no firewall do Ubuntu (caso o firewall realmente esteja instalado):</p>
<pre>sudo ufw allow 25/tcp</pre>
<p>Caso ainda tenha algum erro, é possível verificar quais portas o Postfix está escutando, digite o comando:</p>
<pre>sudo ss -lnpt | grep master</pre>
<p>No comando acima, é possível verificar algo parecido como:</p>
<pre>LISTEN 0      100          0.0.0.0:25        0.0.0.0:*    users:(("master",pid=1610,fd=13))</pre>
<p>O resultado acima mostra que o processo mestre do Postfix está utilizando a porta 25 (0.0.0.0:25)</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-931" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-testar-porta-25-aberta-grep-master.png" alt="Servidor de emails - verificar servidor escutando porta 25" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-testar-porta-25-aberta-grep-master.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-testar-porta-25-aberta-grep-master-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Uma outra forma de testar, é se conectar ao servidor de email do google por telnet. Vamos instalar telnet com o comando:</p>
<pre>sudo apt install telnet</pre>
<p>Agora vamos tentar realizar uma conexão, utilizando o comando:</p>
<pre>telnet gmail-smtp-in.l.google.com 25</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-933" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-conectar-telnet-porta-25-gmail.png" alt="Servidor Emails - conectar telnet no gmail para testar" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-conectar-telnet-porta-25-gmail.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-conectar-telnet-porta-25-gmail-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso consiga realizar a conexão nas etapas acima, tudo certo!<br />
Caso negativo, será necessário entrar em contato com a empresa onde contratou o VPS e pedir para abrirem as portas de envio e recebimento de emails para você. Caso seu servidor seja local, em sua residência, será necessário abrir as portas de envio e recebimento de email, e realizar um port foward para o IP local do seu servidor.</p>
<h3>Passo 5</h3>
<p>Tecnicamente já temos o servidor de email pronto para enviar email. Porém não possui autenticação TLS e nem entradas DNS para proteção contra spoof, spam e outros. Mas já podemos realizar um teste, enviando email pela linha de comando. Já adianto que o email será recusado, pois ainda não temos SPF, DKIM e DMARC configurados, mas vamos lá:</p>
<pre>echo "teste envio de email por linha de comando" | sendmail <span style="color: #ff0000;">seuemail@gmail.com</span></pre>
<p>No comando acima, lembre-se de trocar <span style="color: #ff0000;"><strong>seuemail@gmail.com</strong></span> por uma caixa de email que você tenha acesso.</p>
<p>Agora é interessante olhar o log de email, para ver se o email foi enviado, ou se aconteceu algum problema:</p>
<pre>cat /var/log/mail.log</pre>
<p>Fiz um teste de envio para uma conta que tenho no gmail.com e outra no icloud.com, em ambos os casos o email foi recusado. Segue um exemplo de erro que pode aparecer:</p>
<pre><strong>GMAIL</strong>:
&lt;seuemail@gmail.com&gt;: host gmail-smtp-in.l.google.com[142.250.0.26] said: 550-5.7.1 [100.100.100.100] 
The IP you're using to send mail is not authorized to 550-5.7.1 send email directly to our servers. 
Please use the SMTP relay at your 550-5.7.1 service provider instead. Learn more at 550 5.7.1  
https://support.google.com/mail/?p=NotAuthorizedError .157 - gsmtp (in reply to end of DATA command)


<strong>ICLOUD</strong>:
&lt;seuemail@icloud.com&gt;: host mx02.mail.icloud.com[17.57.156.30] said: 550 5.7.1 Mail from IP 100.100.100.100 
was rejected due to listing in Spamhaus PBL. For details please see http://www.spamhaus.org/query/bl?ip=100.100.100.100 (in reply to RCPT TO command)
</pre>
<p>Na sua conta de email externa (gmail, icloud, outlook, etc) tente enviar um email para você. Por exemplo, se o seu login no Ubuntu é ubuntu e o seu domínio é <span style="color: #ff6600;">viniciuspaes.com</span>, automaticamente sua conta de usuário do Linux também é uma caixa de email. Ou seja, tente enviar um email para <span style="color: #ff0000;">ubuntu</span>@<span style="color: #ff6600;">viniciuspaes.com</span>.</p>
<p>As caixas de email baseadas em usuário do linux ficam armazenadas no diretório /var/mail.<br />
Para olhar as caixas já criadas, utilize o comando:</p>
<pre>ls /var/mail</pre>
<p>Neste exemplo temos o usuário ubuntu criado. Podemos editar o arquivo para ver o email:</p>
<pre>sudo nano /var/mail/viniciuspaes</pre>
<p>Ou apenas mostrar seu conteudo:</p>
<pre>sudo cat /var/mail/viniciuspaes</pre>
<p>Caso o email tenha chego corretamente, o arquivo irá contar com bastante texto, boa parte sendo o header (cabeçalho) do email. Estas informações de cabeçalho normalmente são ocultas quando olhamos o email em um cliente com interface gráfica.</p>
<p>Um upgrade para visualizar o email em linha de comando é instalar o pacote mailutils:</p>
<pre>sudo apt install mailutils</pre>
<p>Faça outro teste e envie um novo email para seu usuário do servidor, utilizando uma caixa de email externa (por exemplo, vá no seu gmail e mande um email para <span style="color: #ff0000;">ubuntu</span>@<span style="color: #ff6600;">viniciuspaes.com</span>, não esqueça de trocar <span style="color: #ff6600;">viniciuspaes.com</span> pelo nome do seu domínio e <span style="color: #ff0000;">ubuntu</span> pelo seu nome de usuário de login).</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-937" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-enviando-email-do-gmail-para-o-servidor-configurado.png" alt="Servidor Emails - envie um email do gmail para seu servidor" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-enviando-email-do-gmail-para-o-servidor-configurado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-enviando-email-do-gmail-para-o-servidor-configurado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Com o <strong>mailutils</strong> instalado, você pode checar a caixa de email com o comando:</p>
<pre>mail</pre>
<p>Se tudo correr bem, você vai entrar no aplicativo em linha de comando chamado <strong>mail</strong>. Se tiver emails em sua caixa de entrada, cada email vai ter um ID numérico: 1, 2, 3 …, n.<br />
Para ler o email, basta digitar o ID do mesmo para abrí-lo.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-939" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-email-recebido-vindo-gmail.png" alt="Servidor Email - email oriundo do gmail recebido" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-email-recebido-vindo-gmail.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-email-recebido-vindo-gmail-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>O email será apresentado por pedaços, pois geralmente seu cabeçalho é muito grande. Tecle ENTER ou seta para baixo para ir mostrando o email aos poucos. Ao terminar de ler, aperte a tecla “x” para fechar.</p>
<p>Não precisa se preocupar muito em aprender a utilizar o programa <strong>mail</strong> (linha de comando) futuramente vamos instalar interface gráfica com <strong>roundcube</strong>. Estes passos são somente para testes iniciais no servidor. Mas em todo caso, segue um resumo das principais funções (teclas de execução/atalho) do software:</p>
<ul>
<li>h &#8211; acessar o header de um email</li>
<li>z &#8211; ir para o fim do email</li>
<li>n &#8211; ir para o próximo email</li>
<li>r &#8211; responder um email que está lendo</li>
<li>r 1 &#8211; (dentro do menu inicial) responder o email com ID = 1</li>
<li>d 1 &#8211; (dentro do menu inicial) excluir o email com ID = 1</li>
<li>d 1 3 4 6 &#8211; (dentro do menu inicial) excluir os emails com ID&#8217;s = 1 3 4 6</li>
<li>d 1-15 &#8211; (dentro do menu inicial) excluir os emails com ID&#8217;s = 1-15</li>
<li>q &#8211; sair e arquivar o email lido na pasta /home/usuario/mbox</li>
<li>x &#8211; sair sem arquivar emails lidos</li>
</ul>
<p>Se quiser saber mais sobre o mailutils, pode acessar a man page ou a url:</p>
<pre>https://mailutils.org/manual/mailutils.html</pre>
<p>Caso tenha lido emails e saído do programa utilizando a tecla “q”, os emails lidos serão arquivados na pasta pessoal do usuário. Então, o usuário com nome ubuntu, terá seus emails arquivados na pasta &#8220;/home/ubuntu/mbox&#8221;.</p>
<p>Caso queira acessar estes emails arquivados, basta acessar o arquivo:</p>
<pre>sudo nano /home/ubuntu/mbox</pre>
<p>Resumindo, os emails que chegam ficam disponíveis na pasta &#8220;/var/mail/usuario/&#8221;, e os emails que foram lidos e arquivados são movidos para a pasta &#8220;/home/usuario/mbox&#8221;. Levando em conta que a pasta padrão dos usuários fique dentro de /home.</p>
<h3>Passo 6 &#8211; Configurações iniciais no Postfix</h3>
<p>Agora é importante realizar algumas configurações iniciais no Postfix.</p>
<p>Vamos verificar qual o tamanho definido para cada caixa de email do usuário, de forma geral:</p>
<pre>postconf | grep mailbox_size_limit</pre>
<p>No comando acima, utilizamos o postconf para verificar no arquivo de configuração do postfix (/etc/postfix/main.cf) o valor da variável mailbox_size_limit. Lembrando que a saída será em bytes. Caso retorne o valor “0” (zero) quer dizer que a caixa de email não possui nenhum limite de tamanho, o que é perigoso, pois se receber um bombardeio de spam nesta fase inicial de configuração, pode encher todo o dispositivo de armazenamento (HD/SSD/SD, etc) e ter problema no boot do sistema operacional.</p>
<p>Vamos definir então um tamanho máximo de 250MB para cada caixa de email criada:</p>
<pre>sudo postconf -e mailbox_size_limit=256000000</pre>
<p>Lembrando que 1024 bytes = 1KB, logo, 256000000/1024 = 250MB</p>
<p>Agora vamos verificar qual o tamanho máximo que uma mensagem pode ter, contando com anexo. Costumo utilizar o limite adotado pelo gmail, que é de 25MB, sendo também 10% do tamanho total da caixa. Mas fique livre para escolher os valores que funcionam melhor para o seu setup. Utilizando o comando abaixo vamos verificar como está configurado:</p>
<pre>postconf | grep message_size_limit</pre>
<p>Geralmente o Postfix vem com o tamanho padrão de 10240000. Que é equivalente a 10.240.000 Bytes = 10240 Kbytes = 1024 * 10 Kbytes = 1 * 10 MB = 10MB.<br />
Caso queira aumentar o limite para 25MB, utilize o comando:</p>
<pre>sudo postconf -e message_size_limit=25600000</pre>
<p>Outro ponto importante é verificar se o hostname do servidor está corretamente configurado no Postfix. Como comentamos em um passo anterior, ter o hostname corretamente configurado no servidor é uma etapa importante. Uma alternativa, é definir o hostname manualmente no postfix também. Vamos então editar manualmente o arquivo de configuração para verificar como o mesmo está configurado:</p>
<pre>sudo nano /etc/postfix/main.cf</pre>
<p>Na linha que começa com a variável “<strong>myhostname</strong>”, certifique-se de alterar para que apareça somente o subdomínio escolhido pro servidor de email, no meu caso ficaria como:</p>
<pre>myhostname = mail.<span style="color: #ff6600;">viniciuspaes.com</span></pre>
<p class="cimg&quot;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-941" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configurar-hostname-postfix.png" alt="Servidor Email - configurar hostname no postfix" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configurar-hostname-postfix.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configurar-hostname-postfix-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>É importante também verificar se o seu servidor tem suporte tanto para IPv4, quanto para IPv6. O Postfix possui suporte para ambos os casos, mas caso só tenha suporte para IPv4, ou tenha o desejo de utilizar somente o IPv4 com o Postfix, é possível alterar com o comando:</p>
<pre>sudo postconf -e "inet_protocols = ipv4"</pre>
<p>Para que todas as mudanças realizadas no arquivo de configuração do postfix tenham efeito, basta reiniciar o serviço:</p>
<pre>sudo service postfix restart</pre>
<h3>Passo 7 &#8211; Lembrete ao realizar upgrade no sistema com apt</h3>
<p>Esta etapa é apenas para lembrar que caso faça o upgrade do Postfix pelo apt (sudo apt upgrade) e no momento do upgrade apareça a opção de reconfigurar o Postfix, recuse (no configuration). Caso realize novamente a configuração, será necessário realizar o passo anterior novamente, pois a modificações que acabamos de realizar podem ser reescritas pelo arquivo padrão de configuração do postfix.</p>
<h3>Passo 8 &#8211; Como configurar Alias por linha de comando</h3>
<p>Posteriormente neste tutorial vamos instalar o PostfixAdmin, configurar maildir, dovecot e virtual mail boxes (vmail). O processo de configurar o Alias que será mostrado neste passo não ficará funcional e sim o Alias criado pelo PostfixAdmin. Então se pretende seguir este tutorial até o fim, não se preocupe tanto com esta etapa. Esta etapa é mais didática, para mostrar como seria a configuração.</p>
<p>Como dito acima, nesta etapa inicial de configuração do servidor em modo de linha de comando, é possível também criar redirecionamento de caixas de email. Ou seja, se receber um email em webmaster@<span style="color: #ff6600;">viniciuspaes.com</span>, você pode redirecionar para a caixa de um outro usuário, como exemplo, para ubuntu@<span style="color: #ff6600;">viniciuspaes.com</span>. Este redirecionamento é conhecido como Alias, ou seja, um pseudônimo.<br />
Uma característica de um <strong>Alias</strong>, é que a caixa “webmaster@<span style="color: #ff6600;">viniciuspaes.com</span>” não existe, os emails que forem enviados para ela serão direcionados para “ubuntu@<span style="color: #ff6600;">viniciuspaes.com</span>”. Em contrapartida, em um redirecionamento de caixas, as 2 caixas iriam existir, e o email enviado para a primeira seria replicado para a outra, mas estaria presente nas 2 caixas.<br />
Então vamos lá, para criar um <strong>alias</strong>, edite o arquivo:</p>
<pre>sudo nano /etc/aliases</pre>
<p>A lógica dentro do arquivo de alias é a seguinte: “origem: destino”<br />
Então como só temos 1 domínio configurado no servidor, podemos realizar o exemplo citado acima como:</p>
<pre>webmaster: ubuntu</pre>
<p>Que seria o mesmo que:</p>
<pre>webmaster@viniciuspaes.com: ubuntu@viniciuspaes.com</pre>
<p>Agora é uma boa hora para criar os <strong>Alias</strong> que desejar, algumas sugestões:</p>
<pre>postmaster: <span style="color: #ff0000;">ubuntu</span>@<span style="color: #ff6600;">viniciuspaes.com</span>
hostmaster: <span style="color: #ff0000;">ubuntu</span>@<span style="color: #ff6600;">viniciuspaes.com</span>
webmaster: <span style="color: #ff0000;">ubuntu</span>@<span style="color: #ff6600;">viniciuspaes.com</span>
dmarc: <span style="color: #ff0000;">ubuntu</span>@<span style="color: #ff6600;">viniciuspaes.com
</span></pre>
<p>Importante! Toda vez que editar o arquivo de alias (/etc/aliases) é necessário recriar o banco de dados de redirecionamentos do sistema. Utilize o comando:</p>
<pre>sudo newaliases</pre>
<h3>Passo 9 &#8211; Configurando SPF</h3>
<p>Como mostramos em um dos passos anteriores, os emails que estamos enviando pelo servidor estão sendo recusados. A maioria das grandes empresas de servidor de email costumam recusar as mensagens que não contenham o mínimo de segurança e autenticidade do remetente. Para suprir esta necessidade, neste passo vamos ensinar como configurar o SPF (Sender Policy Framework).<br />
O SPF é configurado primeiramente pelo DNS, sendo um registro do tipo TXT. Uma tradução para seu acrônimo seria “Estrutura da Política do Remetente”.<br />
O SPF pode ser utilizado para definir quais servidores são autorizados para enviar emails do domínio. Uma finalidade conhecida do SPF é a proteção dos seus emails contra técnicas em que um servidor malicioso tenta se passar pelo seu servidor (técnica conhecida como spoofing) enviando emails de SPAM e muitas vezes realizando Phishing.</p>
<p>Então faça login na empresa que utiliza para gerenciar as entradas DNS do seu servidor. Precisamos então criar uma nova entrada DNS.</p>
<p>A configuração da entrada DNS  deve ser:</p>
<pre>Nome do host: <strong>@</strong> (dependendo da sua empresa de registro, deixe em branco ou insira seu nome de domínio)
Tipo: TXT
TTL: 3600
Dados: v=spf1 mx ~all
</pre>
<p>Da configuração acima, estamos definindo o SPF como:</p>
<ul>
<li><strong>v=spf1</strong>: indica a versão, no caso, versão spf1</li>
<li><strong>mx</strong>: indica que apenas os servidores destacados na entrada mx estão autorizados a enviar email deste domínio</li>
<li><strong>~all</strong>: emails oriundos deste domínio só devem ter como origem os servidores definidos pelo SPF</li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-946" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-spf.png" alt="Servidor Email - criando registro DNS do tipo TXT para SPF" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-spf.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-spf-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>A propagação do DNS pode demorar alguns minutos ou até muitas horas. Mas no meu caso, quando faço alterações no Google Domains, as mudanças são quase que instantâneas. Em todo caso, utilize o comando abaixo para verificar se a entrada TXT criada já está funcional (já foi propagada):</p>
<pre>dig viniciuspaes.com txt</pre>
<p>Terá uma resposta parecida com os dados abaixo:</p>
<pre>;; ANSWER SECTION:
viniciuspaes.com.       3563    IN      TXT     "v=spf1 mx ~all"
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-948" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-spf-dig.png" alt="Servidor Email - verificando registro SPF" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-spf-dig.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-spf-dig-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora precisamos instalar e configurar o agente de políticas SPF que irá trabalhar juntamente com o Postfix. Instale com o comando:</p>
<pre>sudo apt install postfix-policyd-spf-python</pre>
<p>Agora precisamos configurar o agente de políticas SPF. Primeiramente, vamos configurar para que o mesmo seja iniciado junto com o postfix. Então, vamos editar o arquivo:</p>
<pre>sudo nano /etc/postfix/master.cf</pre>
<p>Agora vá até o fim do arquivo e insira o texto abaixo:</p>
<pre>policyd-spf  unix  -       n       n       -       0       spawn 
  user=policyd-spf argv=/usr/bin/policyd-spf
</pre>
<p>No texto acima, fique atento que a <strong>segunda linha tem 2 caracteres de espaço</strong>. Ela fica assim para frente da primeira linha. Isso indica que a linha abaixo é uma continuação do comando.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-950" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-masrter-cf-politica-spf.png" alt="Servidor Email - editar arquivo master.cf para inserir as políticas SPF" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-masrter-cf-politica-spf.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-masrter-cf-politica-spf-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora vamos editar outro arquivo de configuração:</p>
<pre>sudo nano /etc/postfix/main.cf</pre>
<p>Nesta etapa, vamos definir o timeout para o agente SPF, caso aconteça algum problema de execução. Vamos também definir uma regra para rejeitar emails que não atendam as regras do SPF:</p>
<pre>policyd-spf_time_limit = 3600
smtpd_recipient_restrictions =
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_unauth_destination,
   check_policy_service unix:private/policyd-spf
</pre>
<p>Na inserção acima, atenção novamente no espaçamento e indentação, como explicado anteriormente.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-952" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-restricao-remetentes-spf.png" alt="Servidor Emails - Habilitar restrição de remetentes que não possuem autenticação SPF no postfix" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-restricao-remetentes-spf.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-restricao-remetentes-spf-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora precisamos reiniciar o Postfix, para que as configurações do SPF tenham efeito:</p>
<pre>sudo service postfix restart</pre>
<h3>Passo 10 &#8211; Configurando DKIM com OPENDKIM</h3>
<p>Continuando com o processo para garantir confiabilidade ao nosso novo servidor de email e das mensagens enviadas por ele, precisamos também configurar o DKIM. O DKIM vem do termo em inglês “DomainKeys Identified Mail”. Basicamente é um protocolo que permite assinar os emails digitalmente em um processo que o destinatário consiga confirmar a veracidade sobre o remetente da mensagem por autenticação criptografada.</p>
<p>Para dar suporte ao DKIM no servidor, vamos instalar o pacote opendkim e o opendkim-tools:</p>
<pre>sudo apt install opendkim opendkim-tools</pre>
<p>Ao instalar o opendkim, automaticamente um usuário e grupo com o nome opendkim será criado. Como o opendkim e o postfix irão precisar acessar alguns arquivos em comum, é interessante já adicionar o usuário postfix ao grupo do opendkim para facilitar o gerenciamento de acesso de arquivos e suas permissões:</p>
<pre>sudo gpasswd -a postfix opendkim</pre>
<p>Precisamos realizar agora algumas configurações no opendkim, para isso vamos editar o arquivo de configuração:</p>
<pre>sudo nano /etc/opendkim.conf</pre>
<p>Encontre a linha “#LogWhy no”, precisamos habilitar a mesma. O caracter “#” no começo da linha transforma a linha em um comentário. Precisamos descomentar a linha e habilitar o LogWhy, altere então a linha para:</p>
<pre>LogWhy	yes</pre>
<p>Precisamos agora garantir que a linha que começa com “Mode” e a linha que começa com “SubDomains” estejam descomentadas. Então estas linhas devem ficar como:</p>
<pre>Mode			sv
SubDomains		no
</pre>
<p>Agora encontre a linha “OversignHeader From”, precisamos inserir as informações abaixo desta linha:</p>
<pre>AutoRestart			yes
AutoRestartRate		        10/1M
Background			yes
DNSTimeout			5
SignatureAlgorithm		rsa-sha256
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-953" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configuracao-opendkim.png" alt="Servidor Email - configurações opendkim" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configuracao-opendkim.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configuracao-opendkim-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caminhe agora para o fim do arquivo e insira estas linhas:</p>
<pre>KeyTable		refile:/etc/opendkim/key.table
SigningTable		refile:/etc/opendkim/signing.table
ExternalIgnoreList	/etc/opendkim/trusted.hosts
InternalHosts		/etc/opendkim/trusted.hosts
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-954" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configuracao-opendkim-continuacao.png" alt="Servidor Email - configurações opendkim" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configuracao-opendkim-continuacao.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configuracao-opendkim-continuacao-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Precisamos definir uma estrutura de arquivos e diretórios para armazenar as chaves para o opendkim e definir as permissões de acesso. Execute as linhas abaixo 1 de cada vez no terminal, não copie tudo e cole no terminal, senão somente a primeira linha será executada:</p>
<pre>sudo mkdir /etc/opendkim
sudo mkdir /etc/opendkim/keys
sudo chown -R opendkim:opendkim /etc/opendkim
sudo chmod go-rw /etc/opendkim/keys
</pre>
<p>Vamos criar e editar agora o arquivo de tabela de assinaturas:</p>
<pre>sudo nano /etc/opendkim/signing.table</pre>
<p>Insira o conteúdo abaixo dentro do arquivo, lembre-se de trocar o domínio viniciuspaes.com pelo seu domínio configurado:<br />
*@<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span> default._domainkey.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span><br />
*@*.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span> default._domainkey.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span></p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-958" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-tabela-assinaturas-dkim.png" alt="Servidor Email - Tabela de assinaturas dkim" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-tabela-assinaturas-dkim.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-tabela-assinaturas-dkim-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Seguimos agora criando e editando o arquivo de chaves de assinaturas:</p>
<pre>sudo nano /etc/opendkim/key.table</pre>
<p>Insira o texto no arquivo:</p>
<pre>default._domainkey.<strong><span style="color: #ff6600;">viniciuspaes.com</span></strong>     <span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>:default:/etc/opendkim/keys/<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>/default.private</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-956" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-tabela-chaves-dkim.png" alt="Servidor Email - tabela de chaves DKIM" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-tabela-chaves-dkim.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-tabela-chaves-dkim-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora crie e edite o arquivo para servidores confiáveis, para que internamente os emails oriundos destes endereços não precisem passar pela verificação do OpenDKIM:<br />
sudo nano /etc/opendkim/trusted.hosts</p>
<p>Insira o texto dentro do arquivo (lembre de trocar <span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span> pelo seu domínio escolhido):</p>
<pre>127.0.0.1
localhost

.<span style="color: #ff6600;"><strong>viniciuspaes.com
</strong></span></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-960" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-hosts-confiaveis.png" alt="Servidor Email - hosts confiaveis" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-hosts-confiaveis.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-hosts-confiaveis-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caminhamos agora para a etapa final de configuração do OpenDKIM. Vamos criar a pasta onde o par de chave público/privada será armazenado:</p>
<pre>sudo mkdir /etc/opendkim/keys/<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span></pre>
<p>Vamos gerar o par de chaves do domínio viniciuspaes.com dentro do diretório acima criado, com o comando:</p>
<pre>sudo opendkim-genkey -b 2048 -d <span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span> -D /etc/opendkim/keys/<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span> -s default -v</pre>
<p>Precisamos agora corrigir as permissões de arquivos (lembre de executar uma linha de cada vez, não cope e cole as 2 linhas no terminal, senão somente o comando da primeira linha será executado):</p>
<pre>sudo chown opendkim:opendkim /etc/opendkim/keys/<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>/default.private
sudo chmod 600 /etc/opendkim/keys/<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>/default.private
</pre>
<p>Vamos reiniciar o OpenDKIM para ter certeza que as mudanças realizadas surtiram efeito:</p>
<pre>sudo service opendkim restart</pre>
<p>Agora podemos verificar a chave pública DKIM criada com o comando:</p>
<pre>sudo cat /etc/opendkim/keys/<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>/default.txt</pre>
<p>O comando acima irá gerar uma saída parecida com:</p>
<pre>default._domainkey      IN      TXT     ( "v=DKIM1; h=sha256; k=rsa; "
          "p=MIIBIjANBgkqhkiG9w0BAQEXW0SRvQxj+8SuWEAzsJ/qbYmaH6lFAAOCAQ8HLCJ+C1QT7PAM"
            "XbFC2PrMmh+XJUKdOvj4z0jBr2ITMDNqpDOuOKWqME5MWslr6xEk6l/A8vydHvyeikS8" )  
; ----- DKIM key default for viniciuspaes.com
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-962" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-chave-dkim-publica.png" alt="Servidor Email - chave dkim pública" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-chave-dkim-publica.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-chave-dkim-publica-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Repare que na saída acima temos 4 campos de variáveis:</p>
<ul>
<li>v=DKIM1;</li>
<li>h=sha256;</li>
<li>k=rsa;</li>
<li>p=(uma chave grande dividida em 2 partes)</li>
</ul>
<p>No caso da variável p=, ela está dividida em 2 partes, estas 2 partes são divididas com aspas duplas. Dependendo da empresa que gerencia seu DNS, ela aceitará a variável p= separada em 2 partes. Mas o ideal é juntar esta variável removendo as aspas duplas e espaçamento que pode haver entre elas.</p>
<p>Então no exemplo acima, precisamos dos dados desta forma:</p>
<ul>
<li>v=DKIM1;</li>
<li>h=sha256;</li>
<li>k=rsa;</li>
<li>p=MIIBIjANBgkqhkiG9w0BAQEXW0SRvQxj+8SuWEAzsJ/qbYmaH6lFAAOCAQ8HLCJ+C1QT7PAM<br />
IIBCgKCAQsksk3a9Y1ymBZvgXY5bnTyy1w5wK5BG/7UtDUKKSD2ggtIgPNDLaGJGEvxjJiHieRRp<br />
NeJ2zyOuTJmw1MKcRiJ3pEfT0oBHZl5HZLE1iljXFX58R0/qLp3IdQGvT4/pwKI/ZeBKwBe<br />
pa80mQ8Es+xGn2Bh7PB7e4j1VDIfrpcXbFC2PrMmh+XJUKdOvj4z0jBr2ITMDNqpDOu<br />
OKWqME5MWslr6xEk6l/A8vydHvyeikS8s8yntmN473Twca0rGvbdrcfOoZG9VkH7YPC<br />
iv4ucdf6+btY2moibxqzpeEHswnt+43SQIDAQAB</li>
</ul>
<p>Estamos prontos então para criar uma entrada DNS do tipo TXT para configurar assinatura DKIM. Lembrando que os dados acima devem ser inseridos neste formado:</p>
<pre>v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEXW0SRvQxj+8SuWEAzsJ/qbYmaH6lFAAOCAQ8HLCJ+C1QT7PAM
IIBCgKCAQsksk3a9Y1ymBZvgXY5bnTyy1w5wK5BG/7UtDUKKSD2ggtIgPNDLaGJGEvxjJiHieRRpNeJ2zyOuTJmw1MKcRiJ3pEfT0oBH
Zl5HZLE1iljXFX58R0/qLp3IdQGvT4/pwKI/ZeBKwBepa80mQ8Es+xGn2Bh7PB7e4j1VDIfrpcXbFC2PrMmh+XJUKdOvj4z0jBr2IT
MDNqpDOuOKWqME5MWslr6xEk6l/A8vydHvyeikS8s8yntmN473Twca0rGvbdrcfOoZG9VkH7YPCiv4ucdf6+btY2moibxqzpeEHswnt+43SQIDAQAB
</pre>
<p>Então, na empresa que gerencia seu DNS, insira os dados da nova entrada (lembre de trocar a chave p= do exemplo abaixo por sua chave gerada):</p>
<pre>Nome do host: default._domainkey
Tipo: TXT
TTL: 3600
Dados: v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEXW0SRvQxj+8SuWEAzsJ/qbYmaH6lFAAOCAQ8HLCJ+C1QT7PAMIIBCgKCAQsksk3a9Y1ymBZvgXY5bnTyy1w5wK5BG/7UtDUKKSD2ggtIgPNDLaGJGEvxjJiHieRRpNeJ2zyOuTJmw1MKcRiJ3pEfT0oBHZl5HZLE1iljXFX58R0/qLp3IdQGvT4/pwKI/ZeBKwBepa80mQ8Es+xGn2Bh7PB7e4j1VDIfrpcXbFC2PrMmh+XJUKdOvj4z0jBr2ITMDNqpDOuOKWqME5MWslr6xEk6l/A8vydHvyeikS8s8yntmN473Twca0rGvbdrcfOoZG9VkH7YPCiv4ucdf6+btY2moibxqzpeEHswnt+43SQIDAQAB
</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-964" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-configuracao-dkim.png" alt="Servidor Email - configuração DKIM no DNS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-configuracao-dkim.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-configuracao-dkim-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Após a alteração no DNS podemos testar se a chave DKIM está funcionando corretamente. De volta no servidor, execute o comando:</p>
<pre>sudo opendkim-testkey -d <span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span> -s default -vvv</pre>
<p>Ao executar o comando acima, receberá uma saída semelhante com:</p>
<pre>opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key 'default._domainkey.<strong><span style="color: #ff6600;">viniciuspaes.com</span></strong>'
opendkim-testkey: key secure
opendkim-testkey: key OK
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-965" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-configuracao-dkim-testkey.png" alt="Servidor Email - Configuração DKIM testkey" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-configuracao-dkim-testkey.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-configuracao-dkim-testkey-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Quando faço o teste acima com meus domínios contratados pelo Google Domains sempre recebo notificação de chave segura (key secure). Já meus domínios do Registro.br sempre aparecem como chave insegura (key not secure). Se receberem esse aviso, não se preocupem, pelo que pesquisei é devido ao DNSSEC e nem todas as empresas de registro de domínios possuem ele implementado ainda.</p>
<p>Lembrando que toda vez que alterar os registros DNS de seu domínio, é necessário esperar alguns minutos até que as mudanças sejam propagadas. Então é bom aguardar um pouco, caso esteja recebendo algum erro nesta etapa.</p>
<p>Uma observação pertinente, verifiquei alguns usuários relatando erro sobre “query timed out”. Particularmente quando configurei no Ubuntu 22.04 não percebi problema algum com a autenticação DKIM. Mas caso aconteça com você, basta editar o arquivo “sudo nano /etc/opendkim.conf” e descomentar a linha que começa com “#TrustAnchorFile” e reiniciar o opendkim (sudo service opendkim restart).</p>
<p>Agora é necessário realizar a integração do OpenDKIM com o Postfix. Primeiro vamos criar um diretório para armazenar os arquivos .socket:</p>
<pre>sudo mkdir /var/spool/postfix/opendkim</pre>
<p>Definir a permissão correta para o diretório criado:</p>
<pre>sudo chown opendkim:postfix /var/spool/postfix/opendkim</pre>
<p>Agora vamos editar o arquivo de configuração:</p>
<pre>sudo nano /etc/opendkim.conf</pre>
<p>Agora é necessário encontrar a linha “Socket local:/run/opendkim/opendkim.sock”, vai ser necessário alterar esta linha para o caminho do novo diretório criado:</p>
<pre>Socket    local:/var/spool/postfix/opendkim/opendkim.sock</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-967" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dkim-configuracao-socket.png" alt="Servidor Email - atualizar caminho socket opendkim" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dkim-configuracao-socket.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dkim-configuracao-socket-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Necessário também editar outro arquivo de configuração:</p>
<pre>sudo nano /etc/default/opendkim</pre>
<p>Encontre a linha “SOCKET=local:$RUNDIR/opendkim.sock”, será necessário alterar ela para o novo caminho também:</p>
<pre>SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock"</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-968" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dkim-configuracao-socket-2.png" alt="Servidor Email - configuração caminho opendkim" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dkim-configuracao-socket-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dkim-configuracao-socket-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Por fim, precisamos editar o último arquivo para ter o OpenDKIM integrado:</p>
<pre>sudo nano /etc/postfix/main.cf</pre>
<p>Adicionar este texto no fim do arquivo para habilitar o mail filter (milter protocol):</p>
<pre># Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-969" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dkim-configuracao-milter.png" alt="Servidor Email - configuração milter opendkim" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dkim-configuracao-milter.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dkim-configuracao-milter-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Integração OpenDKIM e Postfix finalizada, agora precisamos reiniciar os serviços (execute uma linha de cada vez):</p>
<pre>sudo service opendkim restart
sudo service postfix restart
</pre>
<p>Pronto, se tudo correu corretamente, seu servidor de email já tem autenticação DKIM configurada.</p>
<h3>Passo 11</h3>
<p>Continuando com o processo de garantir confiabilidade e autenticação para o servidor de email que estamos criando, precisamos também habilitar o DMARC (Domain-based Message Authentication, Reporting, and Conformance).</p>
<p>O primeiro passo para seguir com a configuração do DMARC é ter certeza que o SPF e DKIM já estão funcionando corretamente. Nesta etapa do tutorial, já é possível enviar um email para uma caixa do GMAIL sem que ele seja recusado. Então vamos realizar o teste:</p>
<pre>echo "teste dkim e spf" | sendmail <span style="color: #ff0000;">pessoa@gmail.com</span></pre>
<p>Lembre-se de substituir no comando acima, adicionando uma caixa de email do gmail que tenha acesso.</p>
<p>Agora vá no seu gmail e procure pelo email que acabou de enviar. Seja humilde, procure na pasta de SPAM também. Ao encontrar o email, clique para verificar seu conteúdo.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-971" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-email-recebido-gmail-dkim-spf-funcionando.png" alt="Servidor Email - Email recebido no gmail" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-email-recebido-gmail-dkim-spf-funcionando.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-email-recebido-gmail-dkim-spf-funcionando-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Com o email aberto, no canto superior direito da mensagem, há 3 pontos na vertical, sendo um menu sobre a mensagem. Clique para abrir as opções deste menu e selecione:</p>
<pre>Mostrar original</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-973" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-email-recebido-gmail-mostrar-original.png" alt="Servidor Email - Como mostrar original da mensagem no gmail" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-email-recebido-gmail-mostrar-original.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-email-recebido-gmail-mostrar-original-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>A mensagem em formato texto plano será exibida e é possível verificar no alto, algumas considerações que o gmail faz:</p>
<pre>SPF:	PASS com o IP 100.100.100.100
DKIM:	'PASS' com o domínio <span style="color: #ff0000;"><strong>viniciuspaes.com
</strong></span></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-975" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mostrar-mensagem-original-gmail.png" alt="Servidor Email - mostrar mensagem original no gmail" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mostrar-mensagem-original-gmail.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mostrar-mensagem-original-gmail-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Desta forma conseguimos também confirmar que configuramos corretamente o SPF e o DKIM, pois o gmail está reconhecendo a autenticação. Só para confirmar se está tudo correto, podemos também confirmar se há um alinhamento dos identificadores, ou seja, configuramos corretamente o hostname e o domínio (FQDN). Então no texto plano da mensagem de email, procure as linhas que contenham as informações abaixo:</p>
<ul>
<li>Return-Path: &lt;email@<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>&gt;</li>
<li>DKIM-Signature: (&#8230;) d=<strong><span style="color: #ff6600;">viniciuspaes.com</span></strong></li>
<li>From: &lt;email@<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>&gt;</li>
</ul>
<p>No exemplo acima, podemos ver que os 3 campos contém o mesmo domínio, então é dito que os identificadores estão alinhados. Sendo um sinal verde, para podermos configurar o DMARC.</p>
<p>Caso não tenha uma caixa de email no gmail, uma excelente opção é acessar o site:</p>
<pre>https://www.learndmarc.com/</pre>
<p>Ao acessar o site, ele irá informar para enviar um email para um destinatário (este destinatário muda a cada acesso, anote o seu!):</p>
<pre>Send an email to this address to get started:
<span style="color: #ff0000;">ld-123456</span>@learndmarc.com
</pre>
<p>Basta executar o comando de envio de email por linha de comando e o website após receber o email, irá fazer os testes baseado na mensagem recebida. Então envie um email para eles:</p>
<p>echo &#8220;teste&#8221; | sendmail <span style="color: #ff0000;">ld-123456@learndmarc.com</span></p>
<p>No comando acima, troque o remetente pelo remetente que o website irá te informar.</p>
<p>Lembrando que neste teste, só precisamos do SPF e DKIM funcionais, caso positivo, podemos continuar.</p>
<p>Vamos então criar a entrada DNS do tipo TXT para configurar o DMARC:</p>
<pre>Nome do host: _dmarc
Tipo: TXT
TTL: 300
Dados: v=DMARC1; p=none; pct=100; fo=1; rua=mailto:<span style="color: #ff0000;">dmarc</span>@<span style="color: #ff6600;">viniciuspaes.com</span>; ruf=mailto:<span style="color: #ff0000;">dmarc</span>@<span style="color: #ff6600;">viniciuspaes.com</span>;
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-976" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-configurar-dmarc.png" alt="Servidor Email - Configurar entrada TXT no DNS para o DMARC" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-configurar-dmarc.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-configurar-dmarc-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Um breve resumo sobre o que estamos fazendo na configuração acima:</p>
<ul>
<li>v=DMARC1, estamos utilizando a versão do protocolo DMARC1</li>
<li>p=none, a política do nosso servidor é nenhuma.</li>
<li>pct=100, a porcentagem dos emails deste domínio que o DMARC deve ser aplicado</li>
<li>fo=1, gerar relatórios caso qualquer mecanismo de segurança apresente falha (SPF, DKIM e DMARC).</li>
<li>rua=<span style="color: #ff0000;">email@domínio.com</span>, para qual endereço de email os relatórios agregados do DMARC devem ser enviados</li>
<li>ruf=<span style="color: #ff0000;">email@domínio.com</span>, para qual endereço de email os relatórios forense de emails que falharam DMARC devem ser enviados</li>
</ul>
<p>É interessante alterar a política (p=none) futuramente. Mas inicialmente é prudente analisar todos os emails que chegam, para verificar se existem emails legítimos que não utilizam o DMARC. A medida que for dando manutenção no servidor e verificando os logs dos remetentes, percebendo que todos estão cumprindo com a política DMARC, é possível então atualizar para:</p>
<ul>
<li><strong>quarantine</strong>, os emails que não atendem ao DMARC ficam retidos para o administrador verificar sua legitimidade</li>
<li><strong>reject</strong>, rejeitar todos os emails que não atendem os critérios do DMARC</li>
</ul>
<p>Próximo passo é verificar o registro TXT para o DMARC criado no seu DNS:</p>
<pre>dig txt +short _dmarc.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span></pre>
<p>A saída do comando acima será exatamente a entrada que criou, no caso do nosso exemplo, vamos ter:</p>
<pre>"v=DMARC1; p=none; pct=100; fo=1; rua=mailto:<span style="color: #ff0000;">dmarc</span>@<span style="color: #ff6600;">viniciuspaes.com</span>; ruf=mailto:<span style="color: #ff0000;">dmarc</span>@<span style="color: #ff6600;">viniciuspaes.com</span>;"</pre>
<p>Vamos agora repetir o teste que realizamos no início deste email. Mas enviar um email do servidor até uma caixa do gmail e verificar se agora o gmail reconhece o DMARC configurado:</p>
<pre>echo "email de teste DMARC" | sendmail <span style="color: #ff0000;">pessoa@gmail.com</span></pre>
<p>Vá novamente na sua caixa do gmail e procure pelo email que acabou de enviar. Tem chance de ainda aparecer na caixa de SPAM, é normal para um servidor de email novo, sem reputação reconhecida.<br />
Com o email aberto, vá nas opções e selecione:</p>
<pre>Mostrar original</pre>
<p>Agora será possível verificar uma saída semelhante com:</p>
<pre>SPF:	PASS com o IP 100.100.100.100
DKIM:	'PASS' com o domínio <span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>
DMARC:	'PASS'
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-978" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-spf-dkim-dmarc-pass.png" alt="Servidor Email - Mensagem original - spf, dkim e dmarc PASS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-spf-dkim-dmarc-pass.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dns-spf-dkim-dmarc-pass-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Se todas as etapas forem executadas com êxito o DMARC deverá estar configurado e funcional no servidor!</p>
<h3>Passo 12</h3>
<p>Esta etapa é exclusiva para preparar o servidor para os próximos passos.<br />
Primeiro, vamos aproveitar e habilitar as portas de acesso web (80 e 443), caso estejam bloqueadas:.</p>
<pre>sudo ufw allow 80,443/tcp</pre>
<p>Precisamos habilitar certificado SSL para o subdomínio “mail.<strong><span style="color: #ff6600;">viniciuspaes.com</span></strong>”. Mas antes precisamos instalar um software de servidor http (apache, nginx, etc), depois criar o arquivo de configuração para o subdomínio com acesso http e https. Instalar o certbot e solicitar o certificado.</p>
<p>Você pode optar por qual servidor http deseja utilizar. Nginx é uma ótima opção, com um excelente desempenho. No geral, as próximas etapas do tutorial não são muito influenciadas por qual servidor de páginas escolher. O que muda é a modificação do arquivo de configuração e pacotes de integração com o banco de dados. Mas para efeito deste tutorial, vamos utilizar o apache:</p>
<pre>sudo apt install apache2</pre>
<p>Agora vamos criar o primeiro arquivo de configuração:</p>
<pre>sudo nano /etc/apache2/sites-available/mail.<strong><span style="color: #ff6600;">viniciuspaes.com</span></strong>.http.conf</pre>
<p><script src="https://gist.github.com/viniciuspaes/8d79f1a34b4ba579de51f2815ee69745.js"></script></p>
<p>Agora vamos criar o arquivo de configuração para acesso com SSL (TLS):</p>
<pre>sudo nano /etc/apache2/sites-available/mail.<strong><span style="color: #ff6600;">viniciuspaes.com</span></strong>.ssl.conf</pre>
<p><script src="https://gist.github.com/viniciuspaes/bd363e37c576bb4c7d04493faa388638.js"></script></p>
<p>Agora precisamos ativar os 2 arquivos de configuração (executar uma linha por vez):</p>
<pre>a2ensite mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>.http.conf
a2ensite mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>.ssl.conf
</pre>
<p>Reiniciando o apache para que as modificações tenham efeito:</p>
<pre>sudo service apache2 restart</pre>
<p>Vamos atualizar o gerenciador de pacotes snap para a última versão:</p>
<pre>sudo snap install core; sudo snap refresh core</pre>
<p>Agora precisamos instalar o certbot, que irá gerenciar a instalação e configuração dos certificados SSL do Let&#8217;s Encrypt no servidor:</p>
<pre>sudo snap install --classic certbot</pre>
<p>Precisamos criar um link lógico da pasta do certbot para correto funcionamento:</p>
<pre>sudo ln -s /snap/bin/certbot /usr/bin/certbot</pre>
<p>como estamos utilizando o apache neste tutorial, vamos executar o Certbot com o comando:</p>
<pre>sudo certbot <strong>--apache</strong></pre>
<p>Nesta primeira execução do certbot, será necessário &#8220;criar uma conta&#8221;, informando seu email e suas preferências para compartilhar seu endereço de email com terceiros.<br />
Após este processo, aparecerá a opção para escolher para qual domínio deseja solicitar o certificado SSL.<br />
Neste exemplo, utilizamos o domínio viniciuspaes.com, então o subdomínio escolhido/configurado para o servidor de emails:</p>
<pre>mail.<strong><span style="color: #ff6600;">viniciuspaes.com</span></strong></pre>
<p>Esta primeira etapa de configuração do certificado SSL para o servidor de emails está pronta.<br />
Uma curiosidade é que, caso siga este tutorial até o fim, vamos configurar o Roundcube para funcionar nesta URL do subdomínio, então os arquivos de configuração acima terão uma pequena mudança.</p>
<h3>Passo 13</h3>
<p>Um recurso interessante para o servidor de email é permitir que clientes de email se conectem e acessem as mensagens dos usuários. Os clientes de email são softwares/aplicativos presentes nos computadores, celulares e tablets que permitem essa integração com o servidor de email. Ou seja, ao invés de ter que utilizar um navegador de internet, se conectar ao seu servidor, o seu servidor ter um cliente de email web configurado (gmail é um exemplo de cliente web de email), você pode ter um aplicativo que faça todo esse processo de acessar sua conta de email de forma mais prática.</p>
<p>Para ter este suporte, utilizamos o software chamado Dovecot, para dar suporte IMAP e POP3 para clientes de email.</p>
<p>Pensando em todo este processo, o primeiro passo é verificar se o Firewall do Ubuntu conhecido como UFW está bloqueando as portas necessárias para este funcionamento.<br />
Então, para abrir as portas de acesso para IMAP:</p>
<pre>sudo ufw allow 587,465,143,993/tcp</pre>
<p>Se desejar dar suporte para POP3, precisamos também abrir as portas:</p>
<pre>sudo ufw allow 110,995/tcp</pre>
<p>Para permitir a conexão de cliente de email no nosso servidor de email, precisamos habilitar o suporte para “Submission Service”. Então vamos editar o arquivo:</p>
<pre>sudo nano /etc/postfix/master.cf</pre>
<p>Adicione as linhas abaixo no arquivo (lembrete para manter os 2 caracteres de espaço da segunda linha em diante, manter este padrão de identação):</p>
<pre>submission     inet     n    -    y    -    -    smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_tls_wrappermode=no
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth

#Microsoft Outlook Support
smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
</pre>
<p class=""><img loading="lazy" decoding="async" class="alignnone size-full wp-image-980" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-submission-service-configuracao-1.png" alt="Servidor Emails - configuração submission service postfix 1" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-submission-service-configuracao-1.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-submission-service-configuracao-1-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-981" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-submission-service-configuracao-2.png" alt="Servidor Emails - configuração submission service postfix 2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-submission-service-configuracao-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-submission-service-configuracao-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora, vamos continuar a configuração editando o arquivo:</p>
<pre>sudo nano /etc/postfix/main.cf</pre>
<p>Dentro do modo de edição é necessário encontrar as linhas abaixo e inserir o caractere “#” no início delas. Com isso vamos “comentar” a linha e desabilitar sua funcionalidade, precisamos então que fiquem desta forma:</p>
<pre>#smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#smtpd_tls_security_level=may
#smtp_tls_security_level=may
#smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-983" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-submission-service-configuracao-3.png" alt="Servidor Emails - configuração submission service postfix 3" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-submission-service-configuracao-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-submission-service-configuracao-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Ainda com o editor aberto, é necessário inserir as seguintes linhas no fim do arquivo:</p>
<pre>#Enable TLS Encryption when Postfix receives incoming emails
smtpd_tls_cert_file=/etc/letsencrypt/live/<strong><span style="color: #ff6600;">mail.viniciuspaes.com</span></strong>/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/<span style="color: #ff6600;"><strong>mail.viniciuspaes.com</strong></span>/privkey.pem
smtpd_tls_security_level=may 
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

#Enable TLS Encryption when Postfix sends outgoing emails
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

#Enforce TLSv1.3 or TLSv1.2
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-984" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-submission-service-configuracao-4.png" alt="Servidor Emails - configuração submission service postfix 4" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-submission-service-configuracao-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-submission-service-configuracao-4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Para que as alterações que fizemos nos arquivos de configuração acima tenham efeito, precisamos reiniciar o postfix:</p>
<pre>sudo service postfix restart</pre>
<p>Um passo importante agora é verificar quais portas o postfix está escutando. Especificamente a porta 465 e 587 (a 25 também). Vamos utilizar o seguinte comando:</p>
<pre>sudo ss -lnpt | grep master</pre>
<p>A saída do comando acima irá mostrar algo parecido com:</p>
<pre>LISTEN 0	100	0.0.0.0:587	0.0.0.0:*	users:(("master",pid=13,fd=57))                                                                                                                  
LISTEN 0	100	0.0.0.0:465	0.0.0.0:*	users:(("master",pid=13,fd=60))                                                                                                                  
LISTEN 0	100	0.0.0.0:25	0.0.0.0:*	users:(("master",pid=13,fd=53))
</pre>
<p>Ou seja, na saída acima temos as portas 587 (0.0.0.0:587), 465 (0.0.0.0:465) e 25 (0.0.0.0:25) sendo utilizadas pelo postfix. Como deveriam realmente estar, então podemos prosseguir.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-986" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-portas-sendo-escutadas.png" alt="Servidor Emails - Portas abertas no servidor em modo escuta" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-portas-sendo-escutadas.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-portas-sendo-escutadas-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora vamos seguir instalando o Dovecot com suporte IMAP:</p>
<pre>sudo apt install dovecot-core dovecot-imapd</pre>
<p>Caso queira também suporte POP3, instale:</p>
<pre>sudo apt install dovecot-pop3d</pre>
<p>Importante verificar a versão do dovecot atualmente instalada, para ver se está em uma versão muito mais atual do que a que vamos cobrir neste tutorial:</p>
<pre>dovecot --version</pre>
<p>Neste servidor de exemplo, estou utilizando o Dovecot na versão:</p>
<pre>2.3.16 (7e2e900c1a)</pre>
<p>Agora edite o arquivo de configuração do Dovecot:</p>
<pre>sudo nano /etc/dovecot/dovecot.conf</pre>
<p>Dentro do editor, procure pela linha “# Enable installed protocols”, precisamos inserir este texto logo abaixo dela (caso não use pop3 no seu servidor, não é necessário inserir o protocolo):</p>
<pre>protocols = imap pop3</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-988" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-suporte-protocolos.png" alt="Servidor Email - habilitar protocolos dovecot" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-suporte-protocolos.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-suporte-protocolos-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Uma etapa importante é verificar o padrão do caminho onde os emails ficam salvos.<br />
Vamos confirmar este padrão utilizando o comando:</p>
<pre>postconf mail_spool_directory</pre>
<p>Como acabamos de instalar o servidor e não realizamos modificação nesta etapa, a saída do comando acima será ainda:</p>
<pre>/var/mail</pre>
<p>É interessante adotarmos o padrão Maildir ao invés do padrão mbox, é uma forma mais robusta de organizar os usuários, suas caixas de email e as mensagens. É mais robusta, pois estamos atualmente utilizando a estrutura de sistema de arquivos para as mensagens, ao invés de estrutura de banco de dados.<br />
Vamos editar então o seguinte arquivo:</p>
<pre>sudo nano /etc/dovecot/conf.d/10-mail.conf</pre>
<p>Encontre a linha “mail_location = mbox:~/mail:INBOX=/var/mail/%u”, ela precisa ser substituída por:</p>
<pre>mail_location = maildir:~/Maildir</pre>
<p>E abaixo da linha acima, adicione:</p>
<pre>mail_privileged_group = mail</pre>
<p class=""><img loading="lazy" decoding="async" class="alignnone size-full wp-image-990" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-padrao-caixas-maildir.png" alt="Servidor Emails - mudar caixa de email de mbox para maildir" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-padrao-caixas-maildir.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-padrao-caixas-maildir-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Neste ponto agora, vamos instalar o suporte ao protocolo lmtp. Ele é interessante para que o postfix e o dovecot conversem entre si.</p>
<pre>sudo apt install dovecot-lmtpd</pre>
<p>Precisamos agora adicionar o protoclo lmtpd na lista de protocolos que o Dovecot tem suporte. Vamos editar o arquivo:</p>
<pre>sudo nano /etc/dovecot/dovecot.conf</pre>
<p>Agora vá novamente na linha “protocols = imap pop3” e adicione o protocolo lmtpd, a linha deve ficar como:</p>
<pre>protocols = imap pop3 lmtp</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-992" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-suporte-protocolos-habilitar-lmtp.png" alt="Servidor Email - habilitar protocolo lmtp" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-suporte-protocolos-habilitar-lmtp.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-suporte-protocolos-habilitar-lmtp-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Continuando com o processo, precisamos agora editar o arquivo:</p>
<pre>sudo nano /etc/dovecot/conf.d/10-master.conf</pre>
<p>Dentro do modo de edição, procure pela linha “service lmtp { … }“, esta linha define o funcionamento do serviço lmtp. É preciso que edite as linhas que compõem o serviço lmtpd para ficarem desta forma:</p>
<pre>service lmtp {
 unix_listener /var/spool/postfix/private/dovecot-lmtp {
   mode = 0600
   user = postfix
   group = postfix
  }
}
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-994" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configurar-servico-lmtp.png" alt="Servidor Emails - configurar serviço lmtp" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configurar-servico-lmtp.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configurar-servico-lmtp-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora vá até o arquivo de configuração do postfix e abra para edição:</p>
<pre>sudo nano /etc/postfix/main.cf</pre>
<p>Adicione as seguintes linhas no fim do arquivo:</p>
<pre>mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtputf8_enable = no
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-996" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configurar-servico-lmtp-2.png" alt="Servidor Emails - mailbox transport dovecot lmtp" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configurar-servico-lmtp-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configurar-servico-lmtp-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>De volta agora editando o arquivo de configuração do dovecot:</p>
<pre>sudo nano /etc/dovecot/conf.d/10-auth.conf</pre>
<p>Encontre a linha “#disable_plaintext_auth = yes”, é preciso descomentá-la. Então a mesma deve ficar como:</p>
<pre>disable_plaintext_auth = yes</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-997" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-disable-plain-text-auth.png" alt="Servidor Email - desabilitar autenticação de texto plano" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-disable-plain-text-auth.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-disable-plain-text-auth-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Encontre a linha “#auth_username_format = %Lu” é preciso que esta linha seja descomentada e alterada para:</p>
<pre>auth_username_format = %n</pre>
<p>&nbsp;</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1001" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-auth-username-format.png" alt="Servidor Email - Formato de Autenticação de Usuário" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-auth-username-format.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-auth-username-format-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Encontre a linha “auth_mechanisms = plain” e altere para:</p>
<pre>auth_mechanisms = plain login</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-998" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-auth-mechanisms-plain-login.png" alt="Servidor email - Mecanismos de autenticação pleno e email" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-auth-mechanisms-plain-login.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-auth-mechanisms-plain-login-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora vamos configurar o processo de conexão e encriptação. Edite o arquivo:</p>
<pre>sudo nano /etc/dovecot/conf.d/10-ssl.conf</pre>
<p>Encontre a linha “ssl = yes” e altere para:</p>
<pre>ssl = required</pre>
<p>Encontre as linhas:</p>
<pre>ssl_cert = &lt;/etc/dovecot/private/dovecot.pem
ssl_key = &lt;/etc/dovecot/private/dovecot.key
</pre>
<p>Altere as linhas acima para:</p>
<pre>ssl_cert = &lt;/etc/letsencrypt/live/mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>/fullchain.pem
ssl_key = &lt;/etc/letsencrypt/live/mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>/privkey.pem
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1003" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configuracoes-ssl.png" alt="Servidor Email - Dovecot, configurações SSL" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configuracoes-ssl.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configuracoes-ssl-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Encontre a linha “#ssl_prefer_server_ciphers = no”, é necessário descomentá-la e alterar para:</p>
<pre>ssl_prefer_server_ciphers = yes
ssl_min_protocol = TLSv1.2
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1005" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configuracoes-ssl-2.png" alt="Servidor Email - Dovecot, configurações SSL 2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configuracoes-ssl-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configuracoes-ssl-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora edite o arquivo:</p>
<pre>sudo nano /etc/ssl/openssl.cnf</pre>
<p>Procure pela linha “providers = provider_sect”, é necessário comentá-la. Então esta linha ficará como:</p>
<pre>#providers = provider_sect</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1006" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-openssl-provider-sect.png" alt="Servidor Email - OpenSSL, comentar providers_sect" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-openssl-provider-sect.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-openssl-provider-sect-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Edite o arquivo:</p>
<pre>sudo nano /etc/dovecot/conf.d/10-master.conf</pre>
<p>Dentro do modo de edição, procure pela linha “service auth { … }“ este serviço engloba uma grande quantidade de linhas. É necessário inserir dentro dele o seguinte texto:</p>
<pre>unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1008" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-unix-listener-postfix.png" alt="Servidor Email - Postfix Unix Listener" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-unix-listener-postfix.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-unix-listener-postfix-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora vamos editar o arquivo de configuração para criar automaticamente as pastas de emails enviados e a pasta de emails na lixeira. Para isso, vamos editar o arquivo de configuração:</p>
<pre>sudo nano /etc/dovecot/conf.d/15-mailboxes.conf</pre>
<p>Agora procure pelas caixas de “Trash” e “Sent”, insira a linha “auto create” para que tenham suporte a criá-las automaticamente no momento que uma caixa de email é criada. Estas linhas devem ficar como:</p>
<pre>mailbox Trash {
  <strong>auto = create</strong>
  special_use = \Trash
}

mailbox Sent {
  <strong>auto = create</strong>
  special_use = \Sent
}
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1010" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-habilitar-auto-create-mailbox.png" alt="Servidor Email - Habilitar opção de autocriar caixa de emails enviados e lixo" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-habilitar-auto-create-mailbox.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-habilitar-auto-create-mailbox-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Após todas estas modificações acima, vamo reiniciar em conjunto o postfix e o dovecot:</p>
<pre>sudo systemctl restart postfix dovecot</pre>
<p>Agora vamos criar uma pasta para salvar o arquivo de configuração do daemon do dovecot:</p>
<pre>sudo mkdir -p /etc/systemd/system/dovecot.service.d/</pre>
<p>Vamos criar e editar o arquivo no diretório criado acima:</p>
<pre>sudo nano /etc/systemd/system/dovecot.service.d/restart.conf</pre>
<p>Inserir o texto abaixo dentro do arquivo:</p>
<pre>[Service]
Restart=always
RestartSec=5s
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1012" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configurar-autorestart.png" alt="Servidor Email - Configurar autorestart Dovecot" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configurar-autorestart.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configurar-autorestart-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora reinicie o daemon do dovecot o comando abaixo:</p>
<pre>sudo systemctl daemon-reload</pre>
<p>Verifique se o serviço do Dovecot está funcionando:</p>
<pre>sudo service dovecot status</pre>
<p>Caso encontre algum erro nesta etapa, é provável que tenha inserido ou editado algum arquivo incorretamente. Na maioria das vezes é este o problema. Uma palavra fora de lugar, uma indentação errada, um caractere incorreto inserido.</p>
<p>Vamos agora testar o serviço de reiniciar o dovecot automaticamente. Vamos matar o processo e verificar se o daemon vai reiniciá-lo, da forma que configuramos acima:</p>
<pre>sudo pkill dovecot</pre>
<p>Verificar novamente o status do serviço:</p>
<pre>sudo service dovecot status</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1014" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-service-status.png" alt="Servidor Email - sudo service dovecot status" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-service-status.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-service-status-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Se o Dovecot estiver ativo (running) o processo foi executado corretamente e o Dovecot está instalado e funcional! Você também já pode utilizar um cliente de email para se conectar ao servidor. Mas continue seguindo este tutorial, pois a mudança de estrutura de arquivos para banco de dados é indicada e vamos abordar no próximo passo!</p>
<h3>Passo 14</h3>
<p>Este passo é um divisor de águas. Agora será feita a mudança da estrutura de arquivos para armazenar e-mail, para a estrutura de banco de dados. Após a finalização desta etapa as caixas de email só poderão ser criadas pelo PostfixAdmin, assim como os Alias das caixas de email e domínios. Então é interessante deixar bem claro para você leitor. Caso o setup até o passo anterior esteja satisfatório para as suas necessidades, avalie bem continuar. Porém, recomendo fortemente os próximos passos, para ter um servidor de email completo.</p>
<p>Como mencionei, vamos precisar de um banco de dados instalado. Para este tutorial, optei por utilizar o MariaDB (continuação melhorada da branch do MySQL). Se ainda não instalou o banco de dados, instale agora com o comando:</p>
<pre>sudo apt install mariadb-server mariadb-client</pre>
<p>Pode não parecer usual, mas é importante verificar se o servidor de banco de dados que acabamos de instalar está funcionando. Execute então o comando abaixo para verificar o funcionamento:</p>
<pre>sudo service mariadb status</pre>
<p>Para garantir que o servidor será iniciado juntamente com o boot do servidor, pode utilizar o comando abaixo:</p>
<pre>sudo systemctl enable mariadb</pre>
<p>Por padrão, quando instalamos o MariaDB (ou MySQL) ele vem com uma configuração padrão que não é nada segura. Como é muito utilizado localmente de forma didática para aprendizado sobre Banco de Dados em diversos locais, este setup de fábrica pode fazer sentido para facilitar a vida de quem está começando. Mas para um ambiente de produção igual o servidor de emails que estamos configurando, é necessário utilizar o comando abaixo, para dar os primeiros passos de segurança ao servidor de banco de dados em um ambiente de produção:</p>
<pre>sudo mysql_secure_installation</pre>
<p>Quando utilizando o comando acima, diversas perguntas vão aparecer. Basicamente você precisa criar uma senha para o usuário root, desabilitar usuário e banco de dados de teste e recarregar a tabela de privilégios para que as mudanças tenham efeito. Dependendo da versão da sua instalação, também será perguntado se deseja ativar o módulo de segurança de senha. Este módulo é do capiroto, não recomendo que seja ativado, a não ser que você realmente saiba o que está fazendo.</p>
<p>Vou deixar aqui um aviso. Nesta etapa foi criada a <strong>senha de login root no banco de dados</strong>. É necessário que você tenha um controle pessoal das senhas. Anote em um papel, na agenda, ou qualquer outra forma.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1016" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mariadb-secure-installation.png" alt="Servidor Email - MariaDB secure installation" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mariadb-secure-installation.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mariadb-secure-installation-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1017" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mariadb-secure-installation-2.png" alt="Servidor Email - MariaDB secure installation" width="768" height="432" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1018" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mariadb-secure-installation-3.png" alt="Servidor Email - MariaDB secure installation" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mariadb-secure-installation-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mariadb-secure-installation-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1019" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mariadb-secure-installation-4.png" alt="Servidor Email - MariaDB secure installation" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mariadb-secure-installation-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mariadb-secure-installation-4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora precisamos instalar o PostfixAdmin, temos 2 opções. Instalar pelo repositório do apt ou baixar a última versão no github do mantenedor.<br />
A primeira vez que instalei meu servidor de emails, tive muito problema com o PostfixAdmin, tanto que achei que não seria uma boa opção. O principal problema que tive era as senhas de admin não funcionarem. Refazia a instalação do zero e ele funcionava bem por alguns dias, mas volta ou outra parava de funcionar. Investigando mais a fundo, percebi que havia problema no certificado SSL e no log verificava erro de contexto do certificado. Também tinha problema do postfixadmin não abrir e recebia uma página em branco. Depois de sofrer bastante com ele, e pesquisando em fórum e outros tutoriais online, deram a dica que era melhor instalar manualmente o postfixadmin. A vantagem é você ter o controle de quando atualizar e poder realizar o backup dos arquivos de configuração para verificar o que mudou, caso recebesse algum erro. Em resumo, pelo apt é um pouco de loteria, melhor ter um pouco mais de trabalho e instalar manualmente para evitar dor de cabeça quando for atualizar o servidor.</p>
<p>Primeiro passo é ir no github do mantenedor e verificar a última versão disponível:</p>
<pre>https://github.com/postfixadmin/postfixadmin/releases</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1021" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-github-ultima-versao.png" alt="Servidor Email - Postfixadmin - download última versão no github" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-github-ultima-versao.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-github-ultima-versao-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Na data de criação deste tutorial, a última versão era a 3.3.13. Caso venha do futuro ler este tutorial, recomendo sempre pegar a última versão disponível.<br />
Caminhe até a pasta de home do seu usuário:</p>
<pre>cd ~</pre>
<p>Agora vamos executar o comando wget para fazer o download do postfix admin (mude a versão do arquivo caso necessário):</p>
<pre>wget https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-<span style="color: #ff0000;"><strong>3.3.13</strong></span>.tar.gz</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1022" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-wget-ultima-versao-download.png" alt="Servidor Email - download última versão postfixadmin com wget" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-wget-ultima-versao-download.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-wget-ultima-versao-download-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>O download do arquivo veio no formato compactado “.tar.gz”. Com o comando abaixo, vamos descompactar já na pasta de destino “/var/www”.</p>
<pre>sudo tar xvf postfixadmin-<span style="color: #ff0000;">3.3.13</span>.tar.gz -C /var/www/</pre>
<p>Agora vamos mudar o nome da pasta do postfixadmin:</p>
<pre>sudo mv /var/www/postfixadmin-postfixadmin-<span style="color: #ff0000;"><strong>3.3.13</strong></span>/ /var/www/postfixadmin</pre>
<p>Precisamos criar uma pasta para os templates:</p>
<pre>sudo mkdir -p /var/www/postfixadmin/templates_c</pre>
<p>Para gerenciar as permissões de arquivos e diretórios por aqui em diante, vamos optar em utilizar o pacote ACL. Então vamos aproveitar para instalar o mesmo:</p>
<pre>sudo apt install acl</pre>
<p>Agora vamos definir as permissões da pasta template:</p>
<pre>sudo setfacl -R -m u:www-data:rwx /var/www/postfixadmin/templates_c/</pre>
<p>Definir permissões da pasta onde os certificados são armazenados:</p>
<pre>sudo setfacl -R -m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/</pre>
<p>Agora precisamos entrar no console do MySQL para criar o banco de dados e o usuário para o postfixadmin:</p>
<pre>sudo mysql -u root
ou
sudo mysql -u root -p
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1024" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-console-mariadb.png" alt="Servidor Email - console mariadb" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-console-mariadb.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-console-mariadb-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Dentro do console do MySQL, precisamos executar os comandos a seguir. Mas fique atento, evite utilizar control+c + control+v de todos os comando de uma vez, copie e cole um de cada vez e evite copiar espaços em branco de final de linha (lembre-se de trocar a senha <span style="color: #ff0000;">@@@mudar123</span> por uma senha de sua preferência).</p>
<pre>create database postfixadmin;
create user 'postfixadmin'@'localhost' identified by '<span style="color: #ff0000;"><strong>@@@mudar123</strong></span>';
grant all privileges on postfixadmin.* to 'postfixadmin'@'localhost';
flush privileges;
exit;
</pre>
<p>Vou deixar aqui um aviso. Nesta etapa foi criada a <strong>senha de login do postfixadmin no banco de dados</strong>. É necessário que você tenha um controle pessoal das senhas. Anote em um papel, na agenda, ou qualquer outra forma.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1026" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-console-mariadb-criar-banco-e-usuario.png" alt="Servidor Email - Console MariaDB - Criar banco de dados e usuário" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-console-mariadb-criar-banco-e-usuario.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-console-mariadb-criar-banco-e-usuario-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1025" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-console-mariadb-permissao-usuario-banco-recarregar-privilegios-e-sair.png" alt="Servidor Email - Console MariaDB - permitir acesso usuário ao banco, recarregar privilégios e sair" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-console-mariadb-permissao-usuario-banco-recarregar-privilegios-e-sair.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-console-mariadb-permissao-usuario-banco-recarregar-privilegios-e-sair-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora vamos inserir as credenciais de acesso ao banco de dados no arquivo de configuração do postfixadmin:</p>
<pre>sudo nano /var/www/postfixadmin/config.local.php</pre>
<p>Agora é necessário inserir as configurações do fim do arquivo (lembre de alterar o campo senha pela senha de login do postfixadmin no banco de dados &#8211; $CONF[&#8216;database_password&#8217;] = &#8216;<span style="color: #ff0000;">@@@mudar123</span>&#8216;:<br />
<script src="https://gist.github.com/viniciuspaes/92b7e32dfc72799ad6fc648f7c6358b9.js"></script></p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1028" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-admin-configuracao-acesso-banco.png" alt="Servidor Email - PostfixAdmin - arquivo de configuração de conexão ao banco de dados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-admin-configuracao-acesso-banco.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-admin-configuracao-acesso-banco-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora é importante ter um subdomínio configurado para acessar o postfixadmin. Para fins didáticos, vamos utilizar o “postfixadmin.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>”. É possível utilizar outro nome de subdomínio se preferir.</p>
<p>Vamos criar o seguinte arquivo de configuração para o apache:</p>
<pre>sudo nano /etc/apache2/sites-available/postfixadmin.conf</pre>
<p>E dentro do arquivo vamos colar a configuração abaixo (lembrar de realizar as alterações de nome de domínio):</p>
<p><script src="https://gist.github.com/viniciuspaes/5a43090ab060f9ee4e1017e5a19e47db.js"></script></p>
<p>O arquivo acima é para acesso a url sem SSL, agora precisamos criar o arquivo de configuração com certificado SSL:</p>
<pre>sudo nano /etc/apache2/sites-available/postfixadmin-ssl.conf</pre>
<p>Dentro do arquivo cole a configuração abaixo, lembre-se de atualizar o arquivo abaixo com os dados do seu domínio:</p>
<p><script src="https://gist.github.com/viniciuspaes/16b5b612e9b2fc2e59ffe9da7777e55a.js"></script></p>
<p>Com os arquivos criados, precisamos ativá-los (execute uma linha de cada vez):</p>
<pre>sudo a2ensite postfixadmin.conf
sudo a2ensite postfixadmin-ssl.conf
</pre>
<p>Agora reinicie o servidor Apache:</p>
<pre>sudo service apache2 restart</pre>
<p>Com a configuração no servidor http finalizada, precisamos agora criar a entrada DNS.</p>
<pre>Nome do host: postfixadmin
Tipo: A
TTL: 1 hora (ou 3600 segundos, no caso, a DigitalOcean expressa o tempo em segundos)
Dados: (coloque o IP do seu servidor)
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1032" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configurar-entrada-dns-subdominio-postfixadmin-entrada-a.png" alt="Servidor Email - Configurar subdomínio postfixadmin com entrada A" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configurar-entrada-dns-subdominio-postfixadmin-entrada-a.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configurar-entrada-dns-subdominio-postfixadmin-entrada-a-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso o PHP ainda não esteja instalado, vamos realizar a instalação:</p>
<pre>sudo apt install php8.1-fpm php8.1-imap php8.1-mbstring php8.1-mysql php8.1-curl php8.1-zip php8.1-xml php8.1-bz2 php8.1-intl php8.1-gmp php8.1-redis libapache2-mod-php</pre>
<p>Agora reinicie o servidor Apache para ter a integração do php finalizada:</p>
<pre>sudo service apache2 restart</pre>
<p>Vamos solicitar agora um certificado para o subdomínio postfix.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>:</p>
<pre>sudo certbot --apache</pre>
<p>No menu do certbot, escolha o subdomínio que configuramos para o postfix:</p>
<pre>postfix.<strong><span style="color: #ff6600;">viniciuspaes.com</span></strong></pre>
<p>Continuamos agora, realizando modificações no arquivo de configuração do Dovecot, para habilitar estatísticas e permissão para usuário www-data:</p>
<pre>sudo nano /etc/dovecot/conf.d/10-master.conf</pre>
<p>Insira o conteúdo no arquivo:</p>
<pre>service stats {
    unix_listener stats-reader {
    user = www-data
    group = www-data
    mode = 0660
}

unix_listener stats-writer {
    user = www-data
    group = www-data
    mode = 0660
  }
}
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1033" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configurar-servico-estatisticas.png" alt="Servidor Email - Dovecot configurar serviço de estatísticas" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configurar-servico-estatisticas.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-configurar-servico-estatisticas-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora precisamos adicionar o usuário do servidor web (www-data) ao grupo do dovecot:</p>
<pre>sudo gpasswd -a www-data dovecot</pre>
<p>Reiniciar o dovecot:</p>
<pre>sudo service dovecot restart</pre>
<p>Prover permissões para o usuário www-data:</p>
<pre>sudo setfacl -R -m u:www-data:rwx /var/run/dovecot/stats-reader /var/run/dovecot/stats-writer</pre>
<p>Agora precisamos terminar parte do processo de setup do PostfixAdmin pela interface web. Acesse então a url:</p>
<pre>https://postfixadmin.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>/setup.php</pre>
<pre>Escolha uma senha, repita a mesma e depois clique para gerar seu hash</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1034" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-password.png" alt="Servidor Email - PostfixAdmin criar senha de setup" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-password.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-password-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1035" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-password-hash-created.png" alt="Servidor Email - PostfixAdmin senha de setup criada" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-password-hash-created.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-password-hash-created-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Vou deixar aqui um aviso. Nesta etapa foi criada a <strong>senha de setup do postfixadmin</strong>. É necessário que você tenha um controle pessoal das senhas. Anote em um papel, na agenda, ou qualquer outra forma.</p>
<p>Será então gerada uma linha que começa com “$CONF[&#8216;setup_password&#8217;]”. Copie esta linha inteira, pois vamos precisar inserir ela no arquivo de configuração.<br />
Edite então o arquivo:</p>
<pre>sudo nano /var/www/postfixadmin/config.local.php</pre>
<p>Agora copie a linha do hash da senha no fim do arquivo:</p>
<pre>$CONF['setup_password'] = '(seu hash aqui)';</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1036" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-setup-password-hash-configurado.png" alt="Servidor Email - copiar senha hash de setup para arquivo de configuração" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-setup-password-hash-configurado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-setup-password-hash-configurado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora acesse novamente a url:</p>
<pre>https://postfixadmin.viniciuspaes.com/setup.php</pre>
<p>Agora preencha os dados:</p>
<pre>Senha de setup (senha de setup do postfixadmin) criada na etapa anterior (senha normal, não é o hash)
Email do administrador (utilize um email do seu próprio domínio - evite caixas externas no gmail, outlook, etc)
Definir nova senha para o usuário administrador
Confirmar a senha criada
</pre>
<p>Vou deixar aqui um aviso. Nesta etapa foi criada a <strong>senha de login do usuário administrador do postfixadmin</strong>. É necessário que você tenha um controle pessoal das senhas. Anote em um papel, na agenda, ou qualquer outra forma.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1038" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-login-com-setup-password.png" alt="Servidor de Email - login com senha de setup" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-login-com-setup-password.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-login-com-setup-password-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1039" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-logado-com-setup-password.png" alt="Servidor de Email - login com senha de setup realizado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-logado-com-setup-password.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-logado-com-setup-password-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1040" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-logado-criar-senha-administrador.png" alt="Servidor de Email - criar senha de administrador" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-logado-criar-senha-administrador.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-logado-criar-senha-administrador-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Após estes passos, receberá confirmação de login de administrador criado.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1041" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-logado-senha-administrador-criada.png" alt="Servidor de Email - login e senha de administrador criado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-logado-senha-administrador-criada.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-web-setup-logado-senha-administrador-criada-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Vamos continuar agora com a integração do postfix com o banco de dados, instalando o pacote de suporte a banco do postfix:</p>
<pre>sudo apt install postfix-mysql</pre>
<p>Necessário agora editar o arquivo de configuração:</p>
<pre>sudo nano /etc/postfix/main.cf</pre>
<p>Copiar o texto no fim do arquivo, cuidado especial com o espaçamento/identação:</p>
<pre>virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_mailbox_maps =
   proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
virtual_alias_maps =
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

virtual_transport = lmtp:unix:private/dovecot-lmtp
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1043" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-virtual-mail-box.png" alt="Servidor de Email - configuração virtual mail box postfix" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-virtual-mail-box.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-virtual-mail-box-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Vamos criar então o diretório para armazenar os arquivos necessários para integração:</p>
<pre>sudo mkdir /etc/postfix/sql/</pre>
<p>Agora com foco nos domínios virtuais, precisamos criar o arquivo que mapeia as consultas sql:</p>
<pre>sudo nano /etc/postfix/sql/mysql_virtual_domains_maps.cf</pre>
<p>Inserir o texto abaixo no arquivo (mudar a senha abaixo para a senha de login do postfixadmin no banco de dados):</p>
<pre>user = postfixadmin
password = <strong><span style="color: #ff0000;">@@@mudar123</span></strong>
hosts = localhost
dbname = postfixadmin
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1045" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-domains-maps.png" alt="Servidor email - Mysql Virtual Domains Maps - arquivo de configuração" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-domains-maps.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-domains-maps-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora com foco para as caixas de email virtuais:</p>
<pre>sudo nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf</pre>
<p>Inserir o texto no arquivo (mudar a senha destacada abaixo para a senha de login do postfixadmin no banco de dados):</p>
<pre>user = postfixadmin
password = <span style="color: #ff0000;"><strong>@@@mudar123</strong></span>
hosts = localhost
dbname = postfixadmin
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1046" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-mailbox-maps.png" alt="Servidor email - Mysql Virtual Mailbox Maps - arquivo de configuração" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-mailbox-maps.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-mailbox-maps-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora com foco nos Alias de domínio:</p>
<pre>sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf</pre>
<p>Colocar o texto abaixo dentro do arquivo (mudar a senha destacada abaixo para a senha de login do postfixadmin no banco de dados):</p>
<pre>user = postfixadmin
password = <span style="color: #ff0000;"><strong>@@@mudar123</strong></span>
hosts = localhost
dbname = postfixadmin
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1047" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-alias-domain-mailbox-maps.png" alt="Servidor email - Mysql Virtual Alias Domain Mailbox Maps - arquivo de configuração" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-alias-domain-mailbox-maps.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-alias-domain-mailbox-maps-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora com foco em Alias de caixa de domínio, precisamos criar o arquivo:</p>
<pre>sudo nano /etc/postfix/sql/mysql_virtual_alias_maps.cf</pre>
<p>Dentro do arquivo criado, precisamos inserir a configuração (mudar a senha destacada abaixo para a senha de login do postfixadmin no banco de dados):</p>
<pre>user = postfixadmin
password = <span style="color: #ff0000;"><strong>@@@mudar123</strong></span>
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1048" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-alias-maps.png" alt="Servidor email - Mysql Virtual Alias Maps - arquivo de configuração" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-alias-maps.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-alias-maps-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Seguindo, arquivo para mapear alias em domínio:</p>
<pre>sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf</pre>
<p>E no arquivo, necessário inserir o texto (mudar a senha destacada abaixo para a senha de login do postfixadmin no banco de dados):</p>
<pre>user = postfixadmin
password = <span style="color: #ff0000;"><strong>@@@mudar123</strong></span>
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1049" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-alias-domain-maps.png" alt="Servidor email - Mysql Virtual Alias Domain Maps - arquivo de configuração" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-alias-domain-maps.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-alias-domain-maps-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora para fail safe, vamos criar um mapeamento do tipo catch all, criando o arquivo:</p>
<pre>sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf</pre>
<p>E dentro do arquivo, vamos inserir (mudar a senha destacada abaixo para a senha de login do postfixadmin no banco de dados):</p>
<pre>user = postfixadmin
password = <span style="color: #ff0000;"><strong>@@@mudar123</strong></span>
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1050" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-alias-domain-catchall-maps.png" alt="Servidor email - Mysql Virtual Alias Domain Catch All Maps - arquivo de configuração" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-alias-domain-catchall-maps.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-mysql-virtual-alias-domain-catchall-maps-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora vamos acertar as permissões dos arquivos criados. Lembre de executar um comando abaixo de cada vez:</p>
<pre>sudo chmod 0640 /etc/postfix/sql/*
sudo setfacl -R -m u:postfix:rx /etc/postfix/sql/
</pre>
<p>Lembra no começo do tutorial que alteramos a variável hostname para incluir somente o subdomínio principal do servidor de email? Então, agora como vamos utilizar suporte a domínios/caixas virtuais, será necessário realizar a alteração:</p>
<pre>sudo postconf -e "mydestination = \$myhostname, localhost.\$mydomain, localhost"</pre>
<p>Seguindo para configurar o virtual mailbox, precisamos editar o arquivo:</p>
<pre>sudo nano /etc/postfix/main.cf</pre>
<p>Insira o texto abaixo dentro do arquivo:</p>
<pre>virtual_mailbox_base = /var/vmail
virtual_minimum_uid = 2000
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1052" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configuracao-virtual-mailbox-path-uid.png" alt="Servidor Email - Postfix configuração virtual mail box path e UID" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configuracao-virtual-mailbox-path-uid.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configuracao-virtual-mailbox-path-uid-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Vamos reiniciar o postfix:</p>
<pre>sudo service postfix restart</pre>
<p>Criar agora o usuário chamado de vmail, definir um número de id=2000, desabilitar login e não criar pasta home do usuário:</p>
<pre>sudo adduser vmail --system --group --uid 2000 --disabled-login --no-create-home</pre>
<p>Criar a pasta de suporte para armazenamento de dados do email:</p>
<pre>sudo mkdir /var/vmail/</pre>
<p>Definir a permissão da pasta para o usuário vmail que acabamos de criar:</p>
<pre>sudo chown vmail:vmail /var/vmail/ -R</pre>
<p>Seguindo agora com a integração do Dovecot com o banco de dados MySQL:</p>
<pre>sudo apt install dovecot-mysql</pre>
<p>Vamos editar o arquivo:</p>
<pre>sudo nano /etc/dovecot/conf.d/10-mail.conf</pre>
<p>Encontre a variável &#8220;mail_location&#8221; e insiria logo abaixo a variável “mail_home”, para que fique desta forma:</p>
<pre>mail_home = /var/vmail/%d/%n/</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1053" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configuracao-virtual-mailbox-mail-home.png" alt="Servidor de Email - Postfix configuração virtual mail box mail_home" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configuracao-virtual-mailbox-mail-home.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configuracao-virtual-mailbox-mail-home-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora precisamos alterar novamente como é o formato de autenticação de usuário. Antes utilizávamos os usuários do linux para usuários do email. Então a opção “%n” removia a necessidade de <strong>@dominio.com</strong> na hora do login. Mas como agora vamos utilizar as caixas de email oriundas do banco, precisamos do caminho completo, então vamos utilizar o formato “%u”. Encontre e altere a variável “auth_username_format” para:</p>
<pre>auth_username_format = %u</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1054" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configuracao-virtual-mailbox-mudar-auth-username-format-novamente.png" alt="Servidor de Email - Postfix configuração virtual mail box mudar auth username format novamente" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configuracao-virtual-mailbox-mudar-auth-username-format-novamente.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configuracao-virtual-mailbox-mudar-auth-username-format-novamente-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Ainda dentro do arquivo, encontre a linha “#auth_default_realm =”, precisamos que ela seja descomentada e alterada para:</p>
<pre>auth_default_realm = <span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1055" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configuracao-virtual-mailbox-adicionar-auth-default-realm.png" alt="Servidor Email - Definir domínio principal para autenticação - auth_default_realm" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configuracao-virtual-mailbox-adicionar-auth-default-realm.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configuracao-virtual-mailbox-adicionar-auth-default-realm-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>O que a linha acima quer dizer? Bom, caso realize o login e esqueça de inserir <strong>@dominio.com.br</strong>, automaticamente o sistema irá concatenar o domínio principal, que é o <strong><span style="color: #ff6600;">viniciuspaes.com</span></strong>.</p>
<p>Ainda no mesmo arquivo, precisamos buscar a linha “#!include auth-sql.conf.ext” e descomentá-la, alterando ela para:</p>
<pre>!include auth-sql.conf.ext</pre>
<p>Esta alteração acima é para que o dovecot busque informação no banco de dados com solicitações do tipo sql.</p>
<p>Ainda dentro do modo de edição do arquivo, encontre a linha “!include auth-system.conf.ext”. Ela precisa ser comentada (desabilitada), pois agora não vamos mais realizar login com usuário do sistema linux:</p>
<pre>#!include auth-system.conf.ext</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1056" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-desabilitar-login-usuario-sistema-habilitar-por-sql.png" alt="Servidor Email - Postfix desabilitar login com usuário sistema e habilitar por sql" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-desabilitar-login-usuario-sistema-habilitar-por-sql.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-desabilitar-login-usuario-sistema-habilitar-por-sql-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Continuando com a edição do mesmo arquivo, insira estas informações no fim dele:</p>
<pre>auth_debug = yes
auth_debug_passwords = yes
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1057" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-habilitar-auth-debug-passwords.png" alt="Servidor Email - Postfix habilitar auth_debug_passwords" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-habilitar-auth-debug-passwords.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-habilitar-auth-debug-passwords-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Seguindo com as configurações no Dovecot, vamos editar o arquivo:</p>
<pre>sudo nano /etc/dovecot/dovecot-sql.conf.ext</pre>
<p>Insira o texto abaixo no fim do arquivo (lembre de alterar a senha abaixo pela senha de conexão do postfixadmin ao banco de dados):</p>
<pre>driver = mysql
connect = host=localhost dbname=postfixadmin user=postfixadmin password=<span style="color: #ff0000;"><strong>@@@mudar123</strong></span>
default_pass_scheme = ARGON2I
password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1'
user_query = SELECT maildir, 2000 AS uid, 2000 AS gid FROM mailbox WHERE username = '%u' AND active='1'
iterate_query = SELECT username AS user FROM mailbox
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1058" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-conexao-sql.png" alt="Servidor Email - configuração conexão sql dovecot" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-conexao-sql.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-conexao-sql-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Vamos reiniciar o dovecot novamente:</p>
<pre>sudo service dovecot restart</pre>
<p>Agora vamos realizar a configuração pela interface web do postfixadmin, acesse a url:</p>
<pre>https://postfixadmin.viniciuspaes.com/login.php</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1075" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-tela-login-administrador.png" alt="Servidor email - Página de login de administrador do postfixadmin" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-tela-login-administrador.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-tela-login-administrador-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Lembrar que utilizar o login e senha de administrador que criou anteriormente para o postfixadmin, para conseguir realizar o login acima.</p>
<p>No menu, acesse a opção domínios, e em seguida a opção de:</p>
<pre>Criar domínio</pre>
<p>Agora cadastre seu domínio principal. Ou seja, no meu caso o domínio principal é <span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1061" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-dominio.png" alt="Servidor Email - Cadastrar Domínio" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-dominio.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-dominio-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1059" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-dominio-colocar-nome-dominio-principal.png" alt="Servidor Email - Cadastrar Domínio Principal do Servidor" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-dominio-colocar-nome-dominio-principal.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-dominio-colocar-nome-dominio-principal-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1067" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-dominio-clicar-botao.png" alt="Servidor Email - finalizar criação/cadastro do domínio principal" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-dominio-clicar-botao.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-dominio-clicar-botao-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1060" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-dominio-confirmacao.png" alt="Servidor Email - Confirmação de domínio cadastrado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-dominio-confirmacao.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-dominio-confirmacao-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Ainda dentro da interface do postfixadmin, clique na opção “Virtual” e em seguida clique em:</p>
<pre>Criar conta de email</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1063" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-conta-de-email.png" alt="Servidor Email - Criar nova caixa de email" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-conta-de-email.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-conta-de-email-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1072" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-nova-caixa-email.png" alt="Servidor Email - criar nova caixa de email" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-nova-caixa-email.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-nova-caixa-email-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1073" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-nova-caixa-email-2.png" alt="Servidor Email - criar nova caixa de email - preencher os dados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-nova-caixa-email-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-nova-caixa-email-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1071" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-nova-caixa-email-3.png" alt="Servidor Email - criar nova caixa de email - clicar no botão para criar caixa de email" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-nova-caixa-email-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfixadmin-criar-nova-caixa-email-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Para configurar sua caixa de email em um cliente de email como o Thunderbird, Outlook, Mail, etc, utilize as configurações:</p>
<pre>Login (usuário@domínio.com.br)
Senha (a senha que escolheu ao criar conta de email pelo postfixadmin)
Serviço de chegada de email (POP3/IMAP) - Porta 143 para IMAP (993 também habilitada)
Serviço de saída de email (SMTP) - Porta 587 para SMTP (465 também habilitada)
Hostname para POP3/IMAP/SMTP - mail.viniciuspaes.com
Criptografia ativada (SSL/TLS - STARTTLS) para IMAP e SMTP
</pre>
<p>Pensando agora na manutenção do servidor de emails, podemos configurar um cron job para limpar mensagens na lixeira:</p>
<p>Entrar no modo de edição da crontab:</p>
<pre>sudo crontab -e</pre>
<p>Agora insira o texto abaixo no arquivo:</p>
<pre>@daily doveadm expunge -A mailbox Trash savedbefore 2w
@daily setfacl -R -m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/
MAILTO="<span style="color: #ff0000;">seuemail</span>@<span style="color: #ff6600;">seudominio.com</span>"
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1064" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-crontab-limpar-lixeira-corrigir-permissao-arquivos-certificado.png" alt="Servidor Email - crontab para limpar lixeira depois de 2 semanas e corrigir permissões de arquivo do certificado ssl" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-crontab-limpar-lixeira-corrigir-permissao-arquivos-certificado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-crontab-limpar-lixeira-corrigir-permissao-arquivos-certificado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>No comando acima usei como o padrão que a pasta de lixo chama “Trash”, caso utilize o padrão “Junk”, basta realizar as modificações.</p>
<p>Um passo final e importante nesta etapa é restringir quais usuários do sistema do linux podem enviar email. Neste caso, vamos deixar somente o usuário root, www-data e vmail.</p>
<p>Edite então o arquivo:</p>
<pre>sudo nano /etc/postfix/main.cf</pre>
<p>Adicione o texto no fim do arquivo:</p>
<pre>authorized_submit_users = root,www-data,vmail</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1065" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-remetentes-autorizados-linux.png" alt="Servidor Email - Postfix configurar remetentes autorizados pelo linux" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-remetentes-autorizados-linux.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-remetentes-autorizados-linux-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Reinicie o postfix:</p>
<pre>sudo service postfix restart</pre>
<h3>Passo 15 &#8211; Como instalar e configurar o RoundCube Web Cliente</h3>
<p>Um passo interessante na hora de configurar um servidor de email é permitir a usuários que possam acessar seus emails, sem a necessidade de ter aplicativo cliente de email instalado e configurado no seu computador pessoal, ou seja, ter a possibilidade de acessar os emails diante uma interface web.</p>
<p>Esta etapa é dita como opcional, pois não é necessária para o funcionamento do servidor de emails. Mas caso queira disponibilizar um setup completo para sua equipe, ou até mesmo fornecer serviço de gestão de emails para clientes, com certeza é uma etapa primordial.</p>
<p>Existem diversos clientes de email disponíveis no mercado, para este tutorial vamos utilizar o <strong>RoundCube</strong>.</p>
<p>O primeiro passo para instalação do roundcube é verificar a última versão disponível para download:</p>
<pre>https://roundcube.net/download/</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1077" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-download-page.png" alt="Servidor Email - Página de Downloads disponíveis roundcube" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-download-page.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-download-page-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Na tela acima, podemos verificar as opções de download do RoundCube. Neste tutorial vamos utilizar o link da versão completa. Então clique com botão direito do mouse no link de Download e copie a URL de download.</p>
<p>De volta no servidor, tenha certeza que está na sua pasta home:</p>
<pre>cd ~</pre>
<p>Agora vamos realizar o download da última versão do RoundCube. Neste exemplo, a última versão disponível é a versão 1.6.1. Então o comando de download juntamente com a url copiada ficam desta forma:</p>
<pre>wget https://github.com/roundcube/roundcubemail/releases/download/1.6.1/roundcubemail-<span style="color: #ff0000;">1.6.1</span>-complete.tar.gz</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1079" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-download-com-wget.png" alt="Servidor Email - download código fonte completo roundcube mail com wget" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-download-com-wget.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-download-com-wget-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Para descompactar o arquivo, utilize o comando:</p>
<pre>tar xvf roundcubemail-<span style="color: #ff0000;">1.6.1</span>-complete.tar.gz</pre>
<p>Agora é necessário mover a pasta descompactada do roundcube para a pasta de produção do webserver:</p>
<pre>sudo mv roundcubemail-<span style="color: #ff0000;">1.6.1</span> /var/www/roundcube</pre>
<p>Definir as permissões de arquivo da pasta temp e logs (executar um comando por vez):</p>
<pre>sudo chown www-data:www-data /var/www/roundcube/temp/ -R
sudo chown www-data:www-data /var/www/roundcube/logs/ -R
</pre>
<p>Nesta instalação de exemplo, a versão disponível do php é a <span style="color: #ff0000;">8.1</span>. Abaixo segue o comando para instalar os pacotes adicionais do php que vamos precisar para o funcionamento do RoundCube. Pode reparar que alguns pacotes estão vinculados a versão <span style="color: #ff0000;">8.1</span> do php. Caso seu PHP instalado esteja em outra versão, lembre-se de atualizar a versão dos pacotes abaixo também:</p>
<pre>sudo apt install php-net-ldap2 php-net-ldap3 php-imagick php<span style="color: #ff0000;">8.1</span>-common php<span style="color: #ff0000;">8.1</span>-gd php<span style="color: #ff0000;">8.1</span>-imap php<span style="color: #ff0000;">8.1</span>-mysql php<span style="color: #ff0000;">8.1</span>-curl php<span style="color: #ff0000;">8.1</span>-zip php<span style="color: #ff0000;">8.1</span>-xml php<span style="color: #ff0000;">8.1</span>-mbstring php<span style="color: #ff0000;">8.1</span>-bz2 php<span style="color: #ff0000;">8.1</span>-intl php<span style="color: #ff0000;">8.1</span>-gmp php<span style="color: #ff0000;">8.1</span>-redis</pre>
<p>Agora precisamos também criar um usuário e tabela de banco de dados para o funcionamento do RoundCube.<br />
O primeiro passo é o login no banco de dados:</p>
<pre>sudo mysql -u root</pre>
<p>Dentro do prompt do MySQL (ou MariaDB) precisamos então criar o banco de dados. Vamos utilizar o comando abaixo:</p>
<pre>CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;</pre>
<p>Agora precisamos criar o usuário roundcube no banco de dados e permitir que ele tenha acesso a tabela de banco de dados chamada roundcubemail. No comando abaixo também é necessário definir uma senha para o login deste usuário. É uma boa prática de segurança que a senha de exemplo abaixo (<strong><span style="color: #ff0000;">@@@mudar123</span></strong>) seja alterada:</p>
<pre>CREATE USER roundcube@localhost IDENTIFIED BY '<span style="color: #ff0000;"><strong>@@@mudar123</strong></span>';</pre>
<p>Necessário permitir que o usuário criado tenha permissão de acesso ao banco de dados criado:</p>
<pre>GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost;</pre>
<p>Recarregar a tabela de privilégios para que as modificações acima tenham efeito:</p>
<pre>flush privileges;</pre>
<p>Sair do prompt do MySQL:</p>
<pre>exit;</pre>
<p>Vou deixar aqui um aviso. Nesta etapa foi criada a <strong>senha de login do usuário roundcube para o banco de dados roundcubemail</strong>. É necessário que você tenha um controle pessoal das senhas. Anote em um papel, na agenda, ou qualquer outra forma.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1080" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-criar-banco-de-dados-e-usuario.png" alt="Servidor Email - Criar banco de dados e usuário para roundcube" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-criar-banco-de-dados-e-usuario.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-criar-banco-de-dados-e-usuario-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1081" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-permitir-acesso-usuario-banco-recarregar-privilegios-e-sair.png" alt="Servidor Email - Garantir permissão do usuário ao banco, recarregar privilégios e sair; roundcube mail mysql" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-permitir-acesso-usuario-banco-recarregar-privilegios-e-sair.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-permitir-acesso-usuario-banco-recarregar-privilegios-e-sair-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>O RoundCube possui um arquivo SQL com as configurações iniciais do seu banco de dados. Podemos então carregar o arquivo SQL com o comando:</p>
<pre>sudo mysql roundcubemail &lt; /var/www/roundcube/SQL/mysql.initial.sql</pre>
<p>Pensando no acesso dos usuários ao <strong>RoundCube</strong> podemos definir qual URL desejamos que isso ocorra. Particularmente acho interessante utilizar o subdomínio mail.<strong><span style="color: #ff6600;">viniciuspaes.com</span></strong>. Mas fique a vontade de escolher a melhor forma de acesso que desejar. Vamos então preparar 2 arquivos de configuração do apache para o acesso com e sem SSL.</p>
<p>Agora precisamos editar o arquivo de configuração com acesso http:</p>
<pre>sudo nano /etc/apache2/sites-available/mail.<strong>viniciuspaes.com</strong>.http.conf</pre>
<p>Trocar o conteúdo por:<br />
<script src="https://gist.github.com/viniciuspaes/87ccbc2ecf4c91409df28b8b760564fa.js"></script></p>
<p>Seguindo, vamos criar/editar o arquivo de configuração para acesso com SSL no roundcube:</p>
<pre>sudo nano /etc/apache2/sites-available/mail.<strong>viniciuspaes.com</strong>.ssl.conf</pre>
<p>E trocar o conteúdo para:<br />
<script src="https://gist.github.com/viniciuspaes/3530625fb952b67bf4adf3bb4cd21851.js"></script></p>
<p>Vamos agora editar o arquivo /etc/hosts para adicionar query local para o subdomínio que o roundcube está instalado:</p>
<pre>sudo nano /etc/host</pre>
<p>Procure a linha que começa com o IP de loopback (127.0.0.1), altere a mesma para que fique desta forma:</p>
<pre>127.0.0.1 localhost mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1082" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-editar-arquivo-etc-hosts-relay-interno-emails.png" alt="Servidor Email - inserindo subdomínio para responder solicitações localhost para roteamento interno de emails" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-editar-arquivo-etc-hosts-relay-interno-emails.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-editar-arquivo-etc-hosts-relay-interno-emails-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Seguindo com a configuração do RoundCube vamos fazer uma cópia do arquivo de configuração de exemplo, para que possamos realizar as alterações:</p>
<pre>sudo cp /var/www/roundcube/config/config.inc.php.sample /var/www/roundcube/config/config.inc.php</pre>
<p>Agora vamos editar o arquivo criado:</p>
<pre>sudo nano /var/www/roundcube/config/config.inc.php</pre>
<p>Encontre a linha que começa com “$config[&#8216;db_dsnw&#8217;] =” ela precisa ser substituída por:</p>
<pre>$config['db_dsnw'] = 'mysql://roundcube:<strong><span style="color: #ff0000;">%40%40%40mudar123</span></strong>@localhost/roundcubemail';</pre>
<p>Repare que no campo acima, ao invés de utilizarmos nossa senha padrão de exemplo “<span style="color: #ff0000;"><strong>@@@mudar123</strong></span>” estamos utilizando “<span style="color: #ff0000;"><strong>%40%40%40mudar123</strong></span>”. Isto ocorre pois não podemos utilizar caracteres especiais livremente na senha, eles precisam ser convertidos para o padrão “<strong>Percent Encode</strong>”. Desta forma, o caractere <strong>@</strong> é convertido para <strong>%40</strong>. Se sua senha escolhida possuir caracteres especiais, como os destacados na lista abaixo, lembre-se de realizar a alteração.</p>
<ul>
<li>: deve ser substituído por %3A</li>
<li>/ deve ser substituído por %2F</li>
<li>? deve ser substituído por %3F</li>
<li># deve ser substituído por %23</li>
<li>[ deve ser substituído por %5B</li>
<li>] deve ser substituído por %5D</li>
<li>@ deve ser substituído por %40</li>
<li>! deve ser substituído por %21</li>
<li>$ deve ser substituído por %24</li>
<li>&amp; deve ser substituído por %26</li>
<li>&#8220;&#8221; deve ser substituído por %27</li>
<li>( deve ser substituído por %28</li>
<li>) deve ser substituído por %29</li>
<li>* deve ser substituído por %2A</li>
<li>+ deve ser substituído por %2B</li>
<li>, deve ser substituído por %2C</li>
<li>; deve ser substituído por %3B</li>
<li>= deve ser substituído por %3D</li>
<li>% deve ser substituído por %25</li>
<li>(espaço) deve ser substituído por %20 ou +</li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1083" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-conexao-banco-dados.png" alt="Servidor Email - Configurar conexão do roudcube ao banco de dados mysql - atenção ao formato percent encode da senha" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-conexao-banco-dados.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-conexao-banco-dados-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Ainda dentro do arquivo “sudo nano /var/www/roundcube/config/config.inc.php” precisamos realizar mais alterações.<br />
Encontrar as linhas:</p>
<pre>$config['imap_host'] = 'localhost:143';
$config['smtp_host'] = 'localhost:587';
</pre>
<p>E substituir por:</p>
<pre>$config['imap_host'] = 'tls://mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>:143';
$config['smtp_host'] = 'tls://mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>:587';
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1084" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-conexao-imap-smtp-com-ssl.png" alt="Servidor Email - configurando conexões imap e tls roundcube" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-conexao-imap-smtp-com-ssl.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-conexao-imap-smtp-com-ssl-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora encontre a linha que começa com “$config[&#8216;des_key&#8217;]”, ela precisa ser alterada. Substitua o valor da variável da chave  <span style="color: #008000;">por 24 caracteres aleatórios <span style="color: #000000;">(lembre de substituir a chave de exemplo abaixo)</span></span>. Esta linha deve ficar semelhante a:</p>
<pre>$config['des_key'] = '<span style="color: #ff0000;">ASl95U9Ioepsh*k-@ahGjUIk</span>';</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1085" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-configurar-nova-des-key.png" alt="Servidor Email - configurar des-key roundcube" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-configurar-nova-des-key.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-configurar-nova-des-key-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Ainda dentro do arquivo, precisamos encontrar a linha que define os plugins instalados. Procure a linha que comça com “$config[&#8216;plugins&#8217;] =”.<br />
Este vetor vem por padrão com apenas 2 plugins:</p>
<pre>$config['plugins'] = [
    'archive',
    'zipdownload',
];
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1086" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-plugins-habilitados.png" alt="Servidor Email - plugins habilitados roundcube" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-plugins-habilitados.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-plugins-habilitados-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>É preciso habilitar diversos outros plugins para que o RoundCube funcione com toda sua glória. Substitua então o texto acima por:</p>
<pre>$config['plugins'] = [
        'acl',
        'additional_message_headers',
        'archive',
        'attachment_reminder',
        'autologon',
        'debug_logger',
        'emoticons',
        'enigma',
        <strong>'filesystem_attachments'</strong>,
        'help',
        'hide_blockquote',
        'http_authentication',
        'identicon',
        'identity_select',
        'jqueryui',
        'krb_authentication',
        'managesieve',
        'markasjunk',
        'new_user_dialog',
        'new_user_identity',
        'newmail_notifier',
        'password',
        'reconnect',
        'show_additional_headers',
        'squirrelmail_usercopy',
        'subscriptions_option',
        'userinfo',
        'vcard_attachments',
        'virtuser_file',
        'virtuser_query',
        'zipdownload'
];
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1087" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-novos-plugins-habilitados.png" alt="Servidor Email - Plugins adicionais habilitados no roundcube" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-novos-plugins-habilitados.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-novos-plugins-habilitados-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Ainda na edição, insira o texto no fim do arquivo:</p>
<pre>$config['enable_spellcheck'] = true;</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1088" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-enable-spellcheck.png" alt="Servidor Email - habilitar verificação de ortografia no roundcube" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-enable-spellcheck.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-enable-spellcheck-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora acesse a URL onde configurou o RoundCube, neste exemplo:</p>
<pre>https://mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1089" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-login-page.png" alt="Servidor Email - tela de login do roundcube" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-login-page.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-login-page-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Caso tenha uma caixa de email configurada, digite seu nome de usuário e senha e a configuração inicial do <strong>RoundCube</strong> está completa!</p>
<p>No primeiro acesso a sua caixa de email, o <strong>RoundCube</strong> irá perguntar alguns dados básicos, como o Nome do Remetente para aparecer na conta, se deseja adicionar uma assinatura nos emails, etc.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1090" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-primeiro-login-inserir-informacoes.png" alt="Servidor Email - primeiro login caixa no roundcube - informações adicionais solicitadas" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-primeiro-login-inserir-informacoes.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-primeiro-login-inserir-informacoes-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Por motivos de segurança, é recomendado remover a pasta de instalação do <strong>RoundCube</strong>:</p>
<pre>sudo rm /var/www/roundcube/installer/ -r</pre>
<p>Uma etapa recomendada é também instalar o serviço de filtro de mensagens Sieve. Ele dá permissões avançadas de integração que permite que os usuários façam configurações adicionais pelo Roundcube, alguns exemplos:</p>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Permite que os usuários criem pastas dentro do RoundCube para organizar as mensagens de email</li>
<li>Permite que usuários do RoundCube criem filtros para os emails</li>
<li>Dá suporte para que os usuários possam alterar os endereços de email pela interface do RoundCube</li>
</ul>
</li>
</ul>
<p>O primeiro passo é instalar o sieve e pacotes auxiliares:</p>
<pre>sudo apt install dovecot-sieve dovecot-managesieved dovecot-lmtpd</pre>
<p>Editar o arquivo de configuração do dovecot:</p>
<pre>sudo nano /etc/dovecot/dovecot.conf</pre>
<p>Encontrar a linha “protocols = “. É necessário adicionar o protocolo sieve. A linha deve ficar como (pop3 é opcional, apenas se estiver utilizando):</p>
<pre>protocols = imap pop3 lmtp sieve</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1093" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-habilitando-protocolo-sieve-para-roundcube.png" alt="Servidor Email - habilitar suporte ao protocolo sieve no dovecot" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-habilitando-protocolo-sieve-para-roundcube.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-habilitando-protocolo-sieve-para-roundcube-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Editar agora o arquivo de configuração do postfix:</p>
<pre>sudo nano /etc/postfix/main.cf</pre>
<p>Adicione estas linhas no fim do arquivo:</p>
<pre>mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtputf8_enable = no
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1095" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configurando-integracao-lmtp-dovecot.png" alt="Servidor Email - configurando integração postfix e dovecot com lmtp" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configurando-integracao-lmtp-dovecot.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configurando-integracao-lmtp-dovecot-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora vamos editar este outro arquivo do Dovecot:</p>
<pre>sudo nano /etc/dovecot/conf.d/15-lda.conf</pre>
<p>Agora pesquise pela linha “mail_plugins =” que estará dentro do protocolo lda. Esta linha está comentada, será necessário descomentá-la e alterar para:</p>
<pre>mail_plugins = $mail_plugins sieve</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1096" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-habilitando-sieve-mail-plugins.png" alt="Servidor Email - dovecot, habilitando sieve mail plugins" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-habilitando-sieve-mail-plugins.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-habilitando-sieve-mail-plugins-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora vamos editar o arquivo:</p>
<pre>sudo nano /etc/dovecot/conf.d/20-lmtp.conf</pre>
<p>Procure agora sobre o protocolo lmtp, temos que habilitar o sieve por lá também, ele deve ficar desta forma:</p>
<pre>protocol lmtp {
      mail_plugins = quota sieve
}
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1097" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-habilitando-sieve-no-protocolo-lmtp.png" alt="Servidor Email - habilitando sieve no protocolo lmtp" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-habilitando-sieve-no-protocolo-lmtp.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-dovecot-habilitando-sieve-no-protocolo-lmtp-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Vamos reiniciar o postfix e o dovecot:</p>
<pre>sudo service dovecot restart
sudo service postfix restart
</pre>
<p>Ao fim desta parte, já podemos criar em uma mensagem de email dentro do roundcube e verificar no botão de “mais” as opções de filtros habilitadas.<br />
Uma etapa de segurança interessante é remover do header do email, para que o destinatário não saiba que você está utilizando o <strong>RoundCube</strong>.<br />
Crie e edite o arquivo:</p>
<pre>sudo nano /etc/postfix/smtp_header_checks</pre>
<p>Agora insira o conteúdo abaixo dentro do arquivo:</p>
<pre>/^User-Agent.*Roundcube Webmail/            IGNORE</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1098" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-removendo-header-roundcube.png" alt="Servidor Email - configuração para excluir header do roundcube dos emails" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-removendo-header-roundcube.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-removendo-header-roundcube-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Precisamos editar o arquivo de segurança do postfix para habilitar o smtp_header_check que criamos:</p>
<pre>sudo nano /etc/postfix/main.cf</pre>
<p>Insira o texto abaixo no fim do arquivo:</p>
<pre>smtp_header_checks = regexp:/etc/postfix/smtp_header_checks</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1099" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configurando-para-remover-header-roundcube.png" alt="Servidor Email - postfix - configurando arquivo para remover header do roundcube" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configurando-para-remover-header-roundcube.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-configurando-para-remover-header-roundcube-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora execute o comando abaixo para recriar a tabela de hash:</p>
<pre>sudo postmap /etc/postfix/smtp_header_checks</pre>
<p>Reinicie o postfix para que a alteração que realizamos tenha efeito e o <strong>User-Agent do Rounducbe</strong> senha removido das mensagens enviadas:</p>
<pre>sudo service postfix restart</pre>
<p>Seguindo com as configurações extras no <strong>RoundCube</strong>, vamos realizar modificações para permitir que os usuários possam alterar as próprias senhas diretamente pela interface do Roundcube.</p>
<p>Faça uma cópia do arquivo de exemplo, para que possamos realizar as alterações:</p>
<pre>sudo cp /var/www/roundcube/plugins/password/config.inc.php.dist /var/www/roundcube/plugins/password/config.inc.php</pre>
<p>Agora edite o arquivo criado:</p>
<pre>sudo nano /var/www/roundcube/plugins/password/config.inc.php</pre>
<p>Encontre a linha “$config[&#8216;password_db_dsn&#8217;] =”, agora é encessário alterar ela para:</p>
<pre>$config['password_db_dsn'] = 'mysql://postfixadmin:<span style="color: #ff0000;"><strong>%40%40%40mudar123</strong></span>@127.0.0.1/postfixadmin';</pre>
<p>Lembrando que é necessário alterar a senha padrão acima (<span style="color: #ff0000;"><strong>%40%40%40mudar123</strong></span>) para a senha que escolheu a conexão do postfixadmin ao banco de dados. Lembrando também que deverá utilizar a senha no padrão “Percent Encode”, trocando os caracteres especiais pelo seu código correspondente. Então novamente, do exemplo acima, a senha <span style="color: #ff0000;"><strong>@@@mudar123</strong></span>, traduzida para o formato Percent Encode, fica <span style="color: #ff0000;"><strong>%40%40%40mudar123</strong></span>.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1100" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-habilitar-usuario-mudar-propria-senha-conexao-bd.png" alt="Servidor Email - Roundcube, iserindo dados de login mysql para que usuário consiga mudar a própria senha" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-habilitar-usuario-mudar-propria-senha-conexao-bd.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-habilitar-usuario-mudar-propria-senha-conexao-bd-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora no mesmo arquivo, encontre a linha “$config[&#8216;password_query&#8217;] = &#8216;SELECT update_passwd(%c, %u)&#8217;;” e altere para:</p>
<pre>$config['password_query'] = 'UPDATE mailbox SET password=%P,modified=NOW() WHERE username=%u';</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1102" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-query-senha.png" alt="Servidor Email - Query SQL para usuário mudr a própria senha" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-query-senha.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-query-senha-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Encontre a linha “$config[&#8216;password_strength_driver&#8217;] = null;” e altere para:</p>
<pre>$config['password_strength_driver'] = 'zxcvbn';</pre>
<p>Adicione abaixo da linha acima o seguinte texto:</p>
<pre>$config['password_zxcvbn_min_score'] = 5;</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1103" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-forca-senha.png" alt="Servidor Email - Roundcube algoritmo de força de senha" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-forca-senha.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-forca-senha-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Encontre a linha “$config[&#8216;password_minimum_length&#8217;]” e defina o tamanho mínimo para a senha, recomendamos pelo menos 8 caracteres:</p>
<pre>$config['password_minimum_length'] = 8;</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1104" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-tamanho-minimo-senha.png" alt="Servidor Email - Roundcube tamanho mínimo de senha" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-tamanho-minimo-senha.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-tamanho-minimo-senha-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora encontre a linha “$config[&#8216;password_algorithm&#8217;] = &#8216;clear&#8217;;” e altere para:</p>
<p>$config[&#8216;password_algorithm&#8217;] = &#8216;dovecot&#8217;;</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1105" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-algoritmo-senha-dovecot.png" alt="Servidor Email - update algoritmo de senha dovecot" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-algoritmo-senha-dovecot.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-algoritmo-senha-dovecot-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Encontre a linha “$config[&#8216;password_dovecotpw&#8217;] = &#8216;/usr/local/sbin/dovecotpw&#8217;;” e altere para:</p>
<pre>$config['password_dovecotpw'] = '/usr/bin/doveadm pw -r 5';</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1106" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-password-dovecotpw.png" alt="Servidor Email - Roundcube update password dovecotpw" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-password-dovecotpw.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-password-dovecotpw-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Encontre a linha “$config[&#8216;password_dovecotpw_method&#8217;] = &#8216;CRAM-MD5&#8217;;” e altere para:</p>
<pre>$config['password_dovecotpw_method'] = 'ARGON2I';</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1107" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-algoritmo-encriptacao-senha-argon2i.png" alt="Servidor Email - roundcube update algoritmo encriptação argon2i" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-algoritmo-encriptacao-senha-argon2i.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-algoritmo-encriptacao-senha-argon2i-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Encontre a linha “$config[&#8216;password_dovecotpw_with_method&#8217;] = false;” e altere para:</p>
<pre>$config['password_dovecotpw_with_method'] = true;</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1108" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-habilitar-senha-com-algoritmo.png" alt="Servidor Email - Roundcube habilitar suporte mudança de senha com método de encriptação" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-habilitar-senha-com-algoritmo.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-roundcube-update-habilitar-senha-com-algoritmo-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora altere as permissões dos arquivos (execute um comando de cada vez):</p>
<pre>sudo chown www-data:www-data /var/www/roundcube/plugins/password/config.inc.php
sudo chmod 600 /var/www/roundcube/plugins/password/config.inc.php
</pre>
<p>Agora precisamos alterar o arquivo de configuração do php, lembrando que estamos utilizando a versão <span style="color: #ff0000;">8.1</span> com o php-fpm habilitado no apache, se estiver em uma versão diferente, ou utilizando o apache handler, altere o caminho até o arquivo:</p>
<pre>sudo nano /etc/php/<span style="color: #ff0000;">8.1</span>/<span style="color: #ff0000;">fpm</span>/php.ini</pre>
<p>Encontre a linha “upload_max_filesize =” e altere para habilitar upload de até 25MB:</p>
<pre>upload_max_filesize = 25M</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1109" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-php-fpm-tamanho-maximo-upload.png" alt="Servidor Email - Definir novo tamanho máximo de upload" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-php-fpm-tamanho-maximo-upload.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-php-fpm-tamanho-maximo-upload-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Encontre a linha “post_max_size = 8M” e altere para poder permitir que o upload de até 25MB funcione:</p>
<pre>post_max_size = 25M</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1110" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-php-fpm-tamanho-maximo-post.png" alt="Servidor Email - definir limite máximo de post, precisa ser compatível como tamanho máximo de upload para que ambos funcionem corretamente" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-php-fpm-tamanho-maximo-post.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-php-fpm-tamanho-maximo-post-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora é necessário reiniciar o apache e o php (php <span style="color: #ff0000;">8.1</span> com fpm habilitado):</p>
<pre>sudo service apache2 restart
sudo service php8.1-fpm restart
</pre>
<p>Tudo certo! Roundcube instalado e plugins extras configurados corretamente!</p>
<h3>Passo 16 &#8211; Preparar o servidor para dar suporte a vários domínios</h3>
<p>O setup do servidor de emails está completo. Com as configurações realizadas nos passos anteriores toda a proposta que definimos nos objetivos está implementada. Porém, para apenas 1 domínio. Neste exemplo, configuramos o servidor de email para funcionar no domínio <strong><span style="color: #ff6600;">viniciuspaes.com</span></strong>.</p>
<p>Mas é possível prover este suporte para mais domínios? Pensando em uma empresa que presta serviços de criação de caixas de email personalizadas para cada cliente do tipo <strong>seunome@seudominio.com.br</strong>, seria necessário 1 servidor para cada domínio? Não necessariamente, é possível realizar algumas modificações neste setup, para habilitar suporte para diversos domínios distintos.</p>
<p>A forma mais elegante é deixar os certificados SSL de cada domínio independentes e utilizar o mapeamento SNI MAPS para vincular cada domínio ao seu certificado.<br />
Há também a possibilidade de gerar os certificados agrupados junto ao certificado do domínio principal; não fica muito elegante, porém é mais fácil e a compatibilidade com clientes de email é maior.</p>
<p>Neste exemplo vou utilizar o mapeamento SNI (sni_maps), para deixar os certificados independentes.</p>
<p>Primeiro passo é habilitar a função sni-maps:<br />
Edite o arquivo do postfix:</p>
<pre>sudo nano /etc/postfix/main.cf</pre>
<p>Cole o seguinte texto no fim do arquivo:</p>
<pre>tls_server_sni_maps = hash:/etc/postfix/sni_maps</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1111" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-habilitar-mapeamento-sni.png" alt="Servidor Email - habilitar suporte mapeamento sni para certificados ssl/tls de domínios" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-habilitar-mapeamento-sni.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-habilitar-mapeamento-sni-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora crie o arquivo para o mapeamento:</p>
<pre>sudo nano /etc/postfix/sni_maps</pre>
<p>Insira o conteúdo que mapeia o primeiro domínio (domínio principal):</p>
<pre>mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>   /etc/letsencrypt/live/mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>/privkey.pem    /etc/letsencrypt/live/mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>/fullchain.pem</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1112" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-criar-entrada-sni-dominio-principal.png" alt="Servidor Email - criar entrada mapeamento SNI para domínio principal" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-criar-entrada-sni-dominio-principal.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-postfix-criar-entrada-sni-dominio-principal-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Agora precisamos recriar o hash da tabela de mapeamento sni:</p>
<pre>sudo postmap -F /etc/postfix/sni_maps</pre>
<p>Agora é necessário reiniciar o Postfix:</p>
<pre>sudo service postfix restart</pre>
<p>Uma etapa importante é realizar o hash da tabela de mapeamento sni automaticamente com um cronjob. Quando o certificado dos subdomínios é renovado, é necessário realizar um novo hash. Então fica interessante automatizar este processo para evitar erros. Edite a crontab com o comando:</p>
<pre>sudo crontab -e</pre>
<p>Agora adicione a seguinte linha:</p>
<pre>@daily certbot renew --quiet; /usr/sbin/postmap -F /etc/postfix/sni_maps; systemctl reload postfix dovecot httpd</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1114" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-adicionar-hash-mapeamento-sni-crontab-atualizar-certificados.png" alt="Servidor Email - editar crontab para adicionar hash automático para sni e renew de certificados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-adicionar-hash-mapeamento-sni-crontab-atualizar-certificados.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-adicionar-hash-mapeamento-sni-crontab-atualizar-certificados-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Pronto, o servidor já tem suporte para gerenciar email de vários domínios de forma independente. Agora siga o próximo passo a cada vez que precisar adicionar um novo domínio.</p>
<h3>Passo 17 &#8211; Como adicionar um novo domínio no servidor de Email</h3>
<p>Para configurar um novo domínio no servidor, vamos chamar este novo domínio de <strong><span style="color: #ff0000;">dominio2.com</span></strong> (mas pode configurar um domínio com a extensão que quiser).</p>
<h4>Etapa 1 &#8211; Configurar DNS, SPF, DMARC e DKIM</h4>
<p>Crie uma entrada do tipo DNS do MX:</p>
<pre>Nome do host: @ (ou deixe em branco)
Tipo: A
TTL: 3600
Prioridade: 0
Dados: mail.<span style="color: #ff0000;"><strong>dominio2.com
</strong></span></pre>
<p>Crie entrada DNS do tipo A</p>
<pre>Nome do host: mail
Tipo: A
TTL: 1 hora (ou 3600 segundos, no caso, a DigitalOcean expressa o tempo em segundos)
Dados: (coloque o IP do seu servidor)
</pre>
<p>Crie entrada DNS do tipo TXT para o SPF</p>
<pre>Nome do host: @
Tipo: TXT
TTL: 3600
Dados: v=spf1 mx ~all
</pre>
<p>Crie entrada DNS do tipo TXT para o DMARC</p>
<pre>Nome do host: _dmarc
Tipo: TXT
TTL: 3600
Dados: v=DMARC1; p=none; pct=100; fo=1; rua=mailto:dmarc@<span style="color: #ff0000;"><strong>dominio2.com</strong></span>; ruf=mailto:dmarc@<span style="color: #ff0000;"><strong>dominio2.com</strong></span>;
</pre>
<p>Configurar o DKIM para poder adicionar o DNS dele:</p>
<pre>sudo nano /etc/opendkim/signing.table</pre>
<p>Adicione a linha do novo domínio no fim do arquivo:</p>
<pre>*@<span style="color: #ff0000;"><strong>dominio2.com</strong></span>	     default._domainkey.<span style="color: #ff0000;"><strong>dominio2.com</strong></span></pre>
<p>Editar o arquivo de tabela de chaves do DKIM:</p>
<pre>sudo nano /etc/opendkim/key.table</pre>
<p>Inserir no fim do arquivo:</p>
<pre>default._domainkey.<strong><span style="color: #ff0000;">dominio2.com</span></strong>	 <span style="color: #ff0000;"><strong>dominio2.com</strong></span>:default:/etc/opendkim/keys/<span style="color: #ff0000;"><strong>dominio2.com</strong></span>/default.private</pre>
<p>Editar o arquivo de host confiável:</p>
<pre>sudo nano /etc/opendkim/trusted.hosts</pre>
<p>Inserir no fim do arquivo:</p>
<pre>.<span style="color: #ff0000;"><strong>dominio2.com</strong></span></pre>
<p>Criar a pasta para o par de chaves do DKIM:</p>
<pre>sudo mkdir /etc/opendkim/keys/<span style="color: #ff0000;"><strong>dominio2.com</strong></span></pre>
<p>Gerar o par de chaves dentro da pasta criada:</p>
<pre>sudo opendkim-genkey -b 2048 -d <span style="color: #ff0000;"><strong>dominio2.com</strong></span> -D /etc/opendkim/keys/<span style="color: #ff0000;"><strong>dominio2.com</strong></span> -s default -v</pre>
<p>Definir permissão para a chave criada:</p>
<pre>sudo chown opendkim:opendkim /etc/opendkim/keys/<span style="color: #ff0000;"><strong>dominio2.com</strong></span>/default.private</pre>
<p>Ver qual conteúdo da chave pública criada:</p>
<pre>sudo cat /etc/opendkim/keys/<span style="color: #ff0000;"><strong>dominio2.com</strong></span>/default.txt</pre>
<p>Criar o Registro DNS do tipo TXT com este padrão, utilizando os dados da sua chave pública (p=)</p>
<pre>Nome do host: default._domainkey
Tipo: TXT
TTL: 3600
Dados: v=DKIM1; h=sha256; k=rsa; p=(cole aqui a sua chave, retire as aspas duplas e espaços em branco, pois ela é dividida em 2 partes)
</pre>
<p>Verificar DNS do DKIM foi configurado corretamente:</p>
<pre>dig TXT default._domainkey.<span style="color: #ff0000;"><strong>dominio2.com</strong></span></pre>
<p>Arrumar permissões da chave e testar a chave do DKIM configurada:</p>
<pre>sudo chown opendkim:opendkim /etc/opendkim/keys/<span style="color: #ff0000;"><strong>dominio2.com</strong></span>/default.private
sudo chmod 600 /etc/opendkim/keys/<span style="color: #ff0000;"><strong>dominio2.com</strong></span>/default.private
sudo opendkim-testkey -d <span style="color: #ff0000;"><strong>dominio2.com</strong></span> -s default -vvv</pre>
<p>Reiniciar o serviço opendkim:</p>
<pre>sudo service opendkim restart</pre>
<h4>Configurar novo subdomínio no servidor de página e solicitar certificado SSL</h4>
<p>Criar arquivo de configuração para acesso http no domínio:</p>
<pre>sudo nano /etc/apache2/sites-available/mail.<span style="color: #ff0000;"><strong>dominio2.com</strong></span>.http.conf</pre>
<p>Inserir o conteúdo no arquivo:<br />
<script src="https://gist.github.com/viniciuspaes/dbf88a1ac24d9162bd3d2d293e15f7a8.js"></script></p>
<p>Criar o arquivo de configuração para acesso https no domínio:</p>
<pre>sudo nano /etc/apache2/sites-available/mail.dominio2.com.ssl.conf</pre>
<p>Insira o conteúdo no arquivo:<br />
<script src="https://gist.github.com/viniciuspaes/6cf57fcd769ffe9ea0d4493e38e9e267.js"></script></p>
<p>Ativar os arquivos de configuração criados (execute 1 linha de cada vez):</p>
<pre>sudo a2ensite mail.<span style="color: #ff0000;"><strong>dominio2.com</strong></span>.http.conf
sudo a2ensite mail.<span style="color: #ff0000;"><strong>dominio2.com</strong></span>.ssl.conf
</pre>
<p>Agora reinicie o servidor apache:</p>
<pre>sudo service apache2 restart</pre>
<p>Agora solicite o certificado do novo subdomínio pelo certbot:</p>
<pre>sudo certbot --apache</pre>
<p>Escolha o subdomínio onde deseja pedir o certificado, no caso deste exemplo:</p>
<pre>mail.<span style="color: #ff0000;"><strong>dominio2.com</strong></span></pre>
<h4>Configurar novo domínio no Postfix e Dovecot</h4>
<p>Criar a entrada sni do novo domínio, informando o caminho do certificado:</p>
<pre>sudo nano /etc/postfix/sni_maps</pre>
<p>Adicionar no fim do arquivo:</p>
<pre>mail.<span style="color: #ff0000;"><strong>dominio2.com</strong></span>   /etc/letsencrypt/live/mail.<span style="color: #ff0000;"><strong>dominio2.com</strong></span>/privkey.pem     /etc/letsencrypt/live/mail.<span style="color: #ff0000;"><strong>dominio2.com</strong></span>/fullchain.pem</pre>
<p>Recriar hash da tabela SNI:</p>
<pre>sudo postmap -F /etc/postfix/sni_maps</pre>
<p>Editar o arquivo abaixo para inserir o caminho do certificado do novo domínio no padrão sni:</p>
<pre>sudo nano /etc/dovecot/conf.d/10-ssl.conf</pre>
<p>Encontre a linha dos certificados do domínio principal:</p>
<pre>ssl_cert =&lt;/etc/letsencrypt/live/mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>/fullchain.pem 
ssl_key =&lt;/etc/letsencrypt/live/mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>/privkey.pem
</pre>
<p>Adicione o novos domínios, neste padrão:</p>
<pre>ssl_cert =&lt;/etc/letsencrypt/live/mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>/fullchain.pem 
ssl_key =&lt;/etc/letsencrypt/live/mail.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span>/privkey.pem

#entrada modelo sni para subdomínio mail.<strong><span style="color: #ff0000;">dominio2.com</span></strong>
local_name mail.<span style="color: #ff0000;"><strong>dominio2.com</strong></span> {
ssl_cert =&lt;/etc/letsencrypt/live/mail.<span style="color: #ff0000;"><strong>dominio2.com</strong></span>/fullchain.pem
ssl_key =&lt;/etc/letsencrypt/live/mail.<span style="color: #ff0000;"><strong>dominio2.com</strong></span>/privkey.pem
}</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1118" src="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configuracao-mapeamento-sni-segundo-dominio.png" alt="Servidor Email - como adicionar dominios adicionais e certificados padrão de mapeamento SNI" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configuracao-mapeamento-sni-segundo-dominio.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/03/servidor-emails-configuracao-mapeamento-sni-segundo-dominio-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>&nbsp;</p>
<p>Reinicie todos os serviços (execute 1 linha de cada vez):</p>
<pre>sudo service apache2 restart
sudo service postfix restart
sudo service dovecot restart
</pre>
<h4>Configurar novo domínio e nova caixa de email no PostfixAdmin</h4>
<p>Acesse a URL do postfixadmin:</p>
<pre>https://postfixadmin.<span style="color: #ff6600;"><strong>viniciuspaes.com</strong></span></pre>
<p>Clique no menu:</p>
<pre>Domínios</pre>
<p>Em seguida em:</p>
<pre>Criar novo domínio</pre>
<p>E configure o novo domínio desejado.</p>
<p>Clique no menu:</p>
<pre>Virtual</pre>
<p>Em seguida em:</p>
<pre>Criar conta de email</pre>
<p>E configure sua nova caixa de email no novo domínio configurado.</p>
<p>Agora acesse sua nova caixa de email pelo roundcube:</p>
<pre>https://mail.<strong><span style="color: #ff0000;">dominio2.com</span></strong></pre>
<p>Ou configure um cliente de email com os dados da sua nova caixa:</p>
<pre>IMAP
Recebimento de email
Host: mail.<span style="color: #ff0000;"><strong>dominio2.com</strong></span>
Porta: 143
SSL: Sim (STARTSSL)

SMTP
Envio de email
Host: mail.<span style="color: #ff0000;"><strong>dominio2.com</strong></span>
Porta: 587
SSL: Sim (STARTSSL)
</pre>
<p>Tudo certo, novo domínio configurado! siga este passo novamente quantas vezes for necessário para configurar novos domínios!</p>
<h2>Considerações Finais</h2>
<p>Lembrando que neste setup não foi configurado/abordado um software anti spam, primordial para um bom funcionamento do servidor; mas será abordado em uma próxima publicação.</p>
<p>A entrada DNS do tipo PTR também não foi abordada. Meu provedor de serviço VPS (Digital Ocean) configura automaticamente a entrada PTR para meu servidor contratado a partir do nome do servidor/hostname configurado. Se tiver um servidor em casa, é muito provável que não consiga configurar a entrada PTR, ela atrapalha um pouco a autoridade do seu servidor, mas no geral terá um funcionamento satisfatório.</p>
<p>Este tutorial é bastante extenso, se tiver algum erro em algum arquivo de configuração é interessante checar caso não tenha inserido alguma informação incorreta, ou algum caracter fora de lugar. Na maioria das vezes que configurei um servidor de email tive estes problemas, é algo comum de acontecer.</p>
<p>No geral, é sempre uma boa prática acompanhar o log do servidor, para verificar problemas:</p>
<pre>nano /etc/log/mail.log</pre>
<p>Para enviar emails para domínio @icloud.com é necessário entrar em contato com a Spamhaus e remover seu IP da lista de SPAM deles. É um processo bastante rápido, basta alterar a URL e inserir o endereço IP do seu servidor. Ao acessar o link, será necessário confirmar propriedade do servidor para liberação:</p>
<pre>http://www.spamhaus.org/query/bl?ip=<span style="color: #ff0000;">100.100.100.100</span></pre>
<p>&nbsp;</p>
<p>Caso tenha alguma dúvida ou sugestão, basta informar nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/email/tutorial-criar-servidor-emails-ubuntu/">Tutorial como criar Servidor de Emails completo no Ubuntu</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/email/tutorial-criar-servidor-emails-ubuntu/feed/</wfw:commentRss>
			<slash:comments>63</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial Roteador com Raspberry Pi e OpenWRT</title>
		<link>https://viniciuspaes.com/raspberry-pi/tutorial-roteador-raspberry-pi-openwrt/</link>
					<comments>https://viniciuspaes.com/raspberry-pi/tutorial-roteador-raspberry-pi-openwrt/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Sun, 05 Feb 2023 22:35:44 +0000</pubDate>
				<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[Adguardhome]]></category>
		<category><![CDATA[CM4]]></category>
		<category><![CDATA[DDNS]]></category>
		<category><![CDATA[OpenWRT]]></category>
		<category><![CDATA[roteador]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=866</guid>

					<description><![CDATA[<p>Aprenda a criar um roteador ethernet com o Raspberry Pi e OpenWRT!</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-roteador-raspberry-pi-openwrt/">Tutorial Roteador com Raspberry Pi e OpenWRT</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivo</h2>
<p>Utilizar o Raspberry Pi Compute Module 4 (CM4) e a placa Router Board da DFRobot para criar um roteador de internet.</p>
<h2>Requisitos Necessários</h2>
<ul>
<li>Raspberry Pi CM4 (Compute Module 4)</li>
<li><strong><a href="https://www.dfrobot.com/product-2242.html?tracking=hBk5hVPSoWhS2C3T8AOIu6Hnjoub8S7HXB1isdWozZE1HKb4pQzYXQr0YqLX0EYg">Placa Router Board da DFRobot</a> </strong>(caso compre a placa por este link, vou ganhar umas moedinhas de comissão)</li>
<li>Fonte de Alimentação USB-C: 5 Volts, com disponibilidade de 3 Amperes de corrente</li>
<li>2 cabos RJ45 &#8211; para ligar roteador no computador e ligar o roteador no Modem de internet</li>
<li>Cabo USB-C (caso sua versão do CM4 tiver eMMC)</li>
<li>Cartão micro SD (caso sua versão do CM4 for a Lite (sem eMMC)</li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-883" src="https://viniciuspaes.com/wp-content/uploads/2023/02/dfrobot-raspberry-pi-carrier-board.png" alt="Raspberry Pi CM4 + DFRobot Router Carrier Board" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/dfrobot-raspberry-pi-carrier-board.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/dfrobot-raspberry-pi-carrier-board-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Considerações Iniciais</h2>
<p>Você poderá optar por qualquer versão do Raspberry PI CM4. Pelos testes realizados, utilizando a imagem do OpenWRT o consumo de memória RAM é extremamente baixo, 1GB é mais que o suficiente (normalmente utiliza algo em torno de 120MB de ram). O espaço em disco utiliza perto de 100MB também.</p>
<p>Lembrando que se pegar o modelo com eMMC, o slot de cartão micro SD fica desabilitado, sendo necessário utilizar somente o eMMC como memória principal. O processo de espelho da imagem do sistema operacional com o OpenWRT é um pouco mais complicado no eMMC, porém o eMMC é mais estável e mais rápido.</p>
<p>A rede wireless não é muito veloz, sendo necessário também comprar a extensão de antena externa, pois o dissipador de calor do Raspberry e o case podem atrapalhar no sinal (caso opte pela versão do CM4 que vem com wireless).</p>
<p>A vantagem da versão CM4 Lite é utilizar cartões de memória micro SD com mais espaço disponível, visto que a versão top de linha do eMMC suporta no máximo 32GB. A desvantagem é que os cartões SD tendem a falhar com o tempo, necessário serem substituídos. Mas também pode ser vantagem, caso o eMMC apresente falha, será necessário soldar um novo no local, algo que não é prático.</p>
<p>Expandir o sistema de arquivos também é mais simples na versão lite, você tem a comodidade de plugar o cartão SD no seu computador e estender o tamanho da partição para o tamanho real do cartão micro SD. Como utilizamos uma imagem pronta, mesmo que seu cartão ou eMMC tenha 4GB ou mais de espaço, o sistema operacional vai reconhecer algo perto de 100MB. Pois a imagem é feita para sistemas embarcados e já vem em um tamanho bem enxuto. Mas expandindo o seu cartão de memória ou eMMC você consegue utilizar o tamanho real deles.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-877" src="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-utilizacao-memoria-ram.png" alt="Raspberry Pi - uso total de memória ram do roteador RPi com CM4" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-utilizacao-memoria-ram.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-utilizacao-memoria-ram-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-878" src="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-utilizacao-espaco-em-disco.png" alt="Raspberry Pi - espaço em disco disponível após instalação openWRT" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-utilizacao-espaco-em-disco.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-utilizacao-espaco-em-disco-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Recomendação para Raspberry Pi Compute Module 4 para projeto de roteador</h2>
<p>Para este projeto específico, o melhor custo benefício será com a versão CM4 Lite de 1GB de ram, que vem sem eMMC.<br />
O módulo wifi não é muito veloz, mas se morar em uma residência pequena e utilizar o wifi somente para os aparelhos celulares, e o resto dos computadores conectados por cabo, é uma opção. Como a diferença de preço é pequena para a versão com wifi, tem que ver se faz sentido para você pegar esta versão. Lembrando que se pegar a versão sem wifi, ainda é possível ligar um Access Point wifi no CM4 via cabo RJ45 e ter uma rede wifi disponível.</p>
<p>O modelo lite é mais prático, só clonar a imagem do OpenWRT no cartão micro SD e plugar no Router Board. O modelo com eMMC é necessário desmontar o case, mudar o pino de boot do eMMC, ligar cabo USB, montar o eMMC como disco no computador e realizar o clone da imagem para o eMMC.</p>
<p>Porém, neste projeto específico, vou utilizar o modelo do CM4 de 8GB de ram, com 32GB de eMMC e wifi. Já tinha este modelo do CM4 disponível de outro projeto, mas sigam minha recomendação para economizar. Vou abordar a instalação das 2 formas, pelo SD e eMMC.</p>
<h2>Características do Raspberry Pi Compute Module + Router Carrier Board DFRobot</h2>
<p>A grande vantagem deste setup é ter 2 portas gigabit reais disponíveis. Com uma das portas gerenciada pelo barramento PCI-e (RTL8111) e a outra pela placa de rede interna da Broadcom gigabit NIC.</p>
<p>O poder de processamento do BCM2711 Cortex-A72 de 4 cores e 1.5GHz e o suporte da comunidade é imprescindível para ser uma escolha sólida para projetos de entusiastas com tecnologia. A relação de poder de processamento e eficiência energética também é um ponto forte do setup.</p>
<p>Este projeto também conta com uma porta USB-C limitada a USB 2.0 para dados e 26 pinos GPIO disponíveis; além de uma porta USB-C para alimentação de energia.<br />
A Router Carrier Board também conta com jumper de proteção contra gravação da EEPROM que pode ser ativada e desativada, muito útil para upgrades no bootloader do CM4.</p>
<p>Conectando a porta rj-45 de lan ETH1 em um switch gigabit também é uma excelente opção para estender a conexão ethernet cabeada para todos os computadores de sua residência. Em testes práticos para internet de até 1000Mbps (Gigabit) este roteador consegue entregar toda a banda.</p>
<p>Mas uma das funcionalidades mais importantes deste router é o software OpenWRT que juntamente ao grande espaço em disco disponível, a grande quantidade de memória ram e o poder de processamento, permite a instalação de diversos outros softwares para garantir ainda mais funcionalidades ao seu roteador.</p>
<p>No meu setup em casa, utilizo o Adguardhome para bloquear todas as propagandas, removem até mesmo os banners de propaganda no youtube. Só não conseguem remover as propagandas embutidas nos vídeos.</p>
<p>É possível utilizar também o serviço de DNS dinâmico neste roteador, permitindo acesso externo para acessar câmeras de segurança em sua residência e até mesmo um servidor local.</p>
<p>Há diversos outros softwares que podem ser instalados de acordo com suas necessidades.</p>
<h2>Tutorial criar Roteador com Raspberry Pi CM4 e Dfrobots Router Carrier Board</h2>
<h3>Downloads Necessários Instalação Raspberry Pi CM4 Router com OpenWRT</h3>
<p>O primeiro passo é realizar o download de todos os softwares necessários:</p>
<ul>
<li>Software para descompactar o download da imagem do OpenWRT: <strong><a href="https://www.rarlab.com/download.htm">Winrar </a></strong>(7zip, winzip,&#8230; utilize o de sua preferência)</li>
<li>Software para espelhar a imagem do OpenWRT para cartão micro SD ou eMMC: <strong><a href="https://rufus.ie/">Rufus</a></strong></li>
<li>Software para caso seu Raspberry Pi CM4 seja a versão com eMMC (reconhecer eMMC como disco pela USB): <strong><a href="https://github.com/raspberrypi/usbboot/raw/master/win32/rpiboot_setup.exe">RpiBoot eMMC</a></strong></li>
<li>Arquivo de imagem do Sistema Operacional com OpenWRT:
<ul>
<li>Versão DFRobot (21.02.3) já com os drivers configurados: <a href="https://drive.google.com/file/d/1pQ5MjJvfMhqo8FlLPc2_Svacu_dEIeYd/view?usp=sharing"><strong>Espelho de download da versão do Wiki da DFRobot</strong></a></li>
<li>Versão DFRobot já com os drivers configurados (opção recomendada): <a href="https://wiki.dfrobot.com/Compute_Module_4_IoT_Router_Board_Mini_SKU_DFR0767#openwrt-images-download"><strong>Wiki DFRobot sessão de downloads</strong></a></li>
<li>Versão Repositório Oficial OpenWRT (necessário instalar os drivers e realizar as configurações): <strong><a href="https://openwrt.org/toh/raspberry_pi_foundation/raspberry_pi#installation">Página Oficial OpenWRT Raspberry Pi</a></strong> (área de download)</li>
</ul>
</li>
</ul>
<p>Lembrando que o recomendado para a imagem do OpenWRT é a disponibilizada no wiki da DFRobot, pois já vem previamente configurada (mas na versão que testei é necessário configurar o driver do wifi manualmente, pois ele vem incorreto, caso sua CM4 tenha wifi).<br />
A versão da imagem do DFRobot vem com sistema de arquivos ext4, tem algumas vantagens no processo de estender o sistema de arquivos. No repositório oficial é possível realizar o download da imagem tanto com etx4, quanto squashfs. Mesmo que o link para as duas versões não esteja disponível, basta reparar na url de download e mudar o squashfs para ext4, por exemplo.</p>
<p>Só é necessário realizar o download o RpiBoot eMMC caso sua versão do Raspberry CM4 tiver eMMC soldado na placa. Se estiver na dúvida, basta olhar na imagem abaixo. Cuidado para não confundir o eMMC com o wifi.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-875" src="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-wiki-page.png" alt="Raspberry pi - página de wiki do DFRobot com imagem previamente configurada está disponível para Download" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-wiki-page.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-wiki-page-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-880" src="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-arquivo-imagem-openwrt-descomprimido.png" alt="Raspberry Pi - imagem openWRT disponibilizada pela DFRobot - arquivo já descomprimido" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-arquivo-imagem-openwrt-descomprimido.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-arquivo-imagem-openwrt-descomprimido-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-886" src="https://viniciuspaes.com/wp-content/uploads/2023/02/raspbery-pi-cm4-emmc-wifi.png" alt="Raspberry Pi CM4 - versão com eMMC e wifi" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/raspbery-pi-cm4-emmc-wifi.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/raspbery-pi-cm4-emmc-wifi-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Rasberry Pi CM4 Versão Lite</h3>
<h4>Passo 1</h4>
<p>No seu computador pessoal, plugue o cartão micro SD, e espere até que o mesmo fique disponível no gerenciador de arquivos.</p>
<h4>Passo 2</h4>
<p>No seu computador pessoal, execute o software Rufus.</p>
<p>Em device, escolha o cartão micro SD do passo anterior. Confirme que selecionou o dispositivo correto, pois o mesmo será formatado (legal olhar se o tamanho do dispositivo é o mesmo do cartão e a letra da unidade também).</p>
<p>Em Boot selection, escolha a imagem do OpenWRT descompactada (.img) que fez download do site da DFRobot, exemplo:</p>
<pre>openwrt-21.02.3-bcm27xx-bcm2711-rpi-4-ext4-factory.img</pre>
<p>Seu nome de arquivo deve ser algo semelhante ao descrito acima, o que pode mudar é possivelmente a versão e o sistema de arquivos.</p>
<p>Clique em START e aguarde até o término do processo de clonar a imagem para o cartão micro SD.</p>
<p>Agora lembre-se de ir no sistema operacional e clicar para remover (ejetar) o seu cartão SD com segurança.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-889" src="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-clonando-imagem-openwrt-cartao-micro-sd.png" alt="Raspberry pi clonando imagem openwrt cartao sd" width="474" height="538" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-clonando-imagem-openwrt-cartao-micro-sd.png 474w, https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-clonando-imagem-openwrt-cartao-micro-sd-264x300.png 264w" sizes="auto, (max-width: 474px) 100vw, 474px" /></p>
<h4>Passo 3</h4>
<p>Remova o seu cartão SD do computador e insira na sua placa DFRobot Router Carrier Board.</p>
<p>Se ainda não plugou a DFRobot Router Carrier Board no CM4, é o momento.</p>
<h3>Rasberry Pi CM4 (versão com eMMC)</h3>
<h4>Passo 1</h4>
<p>O primeiro passo é conectar o Raspberry Pi CM4 na placa de Router Carrier Board da DFRobot.</p>
<h4>Passo 2</h4>
<p>Repare que na placa do roteador, há duas chaves. Há o escrito EEPROM_WP (Write Protection &#8211; Proteção Gravação EEPROM) na chave de cima, e RPIBOOT na chave de baixo (habilita o acesso do eMMC como dispositivo de armazenamento USB).</p>
<p>Então mude somente a chave do RPIBOOT para 1.</p>
<h4>Passo 3</h4>
<p>Repare que a placa Router Carrier Board tem 2 entradas USB-C. Na entrada lateral que vem escrito USB, conecte o cabo USB-C e conecte a outra ponta no seu computador.</p>
<h4>Passo 4</h4>
<p>Na outra porta USB-C da placa de roteador, que vem escrito “POWER”, conecte a fonte de alimentação.</p>
<h4>Passo 5</h4>
<p>No seu computador, execute o software RPiBOOT eMMC.<br />
A memória eMMC do seu Raspberry CM4 irá aparecer no gerenciador de arquivos como um dispositivo de armazenamento.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-896" src="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-executando-rpiboot-emmc.png" alt="Raspberry Pi - executando RPiBoot para acessar memória eMMC" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-executando-rpiboot-emmc.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-executando-rpiboot-emmc-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 6</h4>
<p>Ainda no seu computador, execute o software Rufus.</p>
<p>Em device (dispositivo), escolha o drive do seu eMMC que foi montado como um dispositivo de armazenamento. Verifique se o tamanho do dispositivo é o mesmo do seu eMMC e se a letra da unidade está correta.</p>
<p>Em Boot Selection, escolha o arquivo de imagem do OpenWRT descompactada (.img) que fez download do site da wiki do DFRobot:</p>
<pre>openwrt-21.02.3-bcm27xx-bcm2711-rpi-4-ext4-factory.img</pre>
<p>A sua versão do arquivo pode ser diferente, pois a DFRobot sempre atualiza eventualmente para as versões mais recentes do OpenWRT.</p>
<p>Confira novamente se está tudo correto, pois o processo irá formatar a unidade que selecionou, tenha certeza que é o eMMC.<br />
Clique no botão de START e aguarde até o término do processo de clonar a imagem para o eMMC do CM4.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-890" src="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-clonando-imagem-openwrt-emmc.png" alt="Raspberry pi clonando imagem eMMC" width="474" height="538" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-clonando-imagem-openwrt-emmc.png 474w, https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-clonando-imagem-openwrt-emmc-264x300.png 264w" sizes="auto, (max-width: 474px) 100vw, 474px" /></p>
<h4>Passo 7</h4>
<p>Ainda no seu computador, após o fim do processo de clonagem para o eMMC. Ejete o dispositivo com segurança, igual faz com um pen drive.</p>
<h4>Passo 8</h4>
<p>Feche o software RPiBOOT eMMC.</p>
<h4>Passo 9</h4>
<p>Desconecte o cabo de força do Router Board. Desconecte também o cabo de dados (a outra porta USB-C).</p>
<h4>Passo 10</h4>
<p>Mude a chave RPiBOOT novamente para a opção 0.</p>
<h2>Funcionamento do Roteador (Primeiro boot)</h2>
<p>O primeiro passo agora é ligar os cabos de rede na sua placa.</p>
<p>Ligue a porta ETH0 com cabo RJ-45 no seu modem de internet. A porta ETH1 você também utiliza um cabo RJ-45, mas agora para ligar em seu computador pessoal ou em um switch ethernet para distribuir a internet para várias portas.</p>
<p>Agora conecte o cabo de força USB-C na sua placa, e o sistema operacional deve iniciar o boot normalmente.</p>
<p>No seu computador plugado na rede do roteador, acesse o seu browser e digite o endereço:</p>
<pre>192.168.1.1</pre>
<p>Você agora acabou de acessar a interface web do roteador, essa interface tem o nome de LuCI, sendo a interface do OpenWRT.</p>
<p>Caso solicitado, já defina uma nova senha de login.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-873" src="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-luci-login-page.png" alt="Raspberry Pi - tela login LuCI Openwrt no Raspberry Pi configurado como roteador" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-luci-login-page.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-luci-login-page-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-874" src="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-openwrt-luci-pagina-sistema.png" alt="Raspberry Pi - tela inicial openwrt após login, utilizando cm4 como roteador" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-openwrt-luci-pagina-sistema.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-dfrobot-router-carrier-board-openwrt-luci-pagina-sistema-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Considerações Finais</h2>
<p>O setup do roteador é bem simples e prático para o modelo lite (cartão SD). Para a versão do eMMC, alguns passos adicionais são necessários, sendo bem menos prático, principalmente se atualizar periodicamente o sistema pela Flash nova do OpenWRT pela USB.</p>
<h2>Conclusões</h2>
<p>Este setup com o Raspberry Pi CM4 e placa de roteamento superou minhas expectativas. O desempenho é bem acima da média dos roteadores que tive oportunidade de utilizar. Quem já sofreu com roteadores de segunda mão, que esquentam, travam, não dão conta do throughput da rede, vai perceber as vantagens.<br />
Ao colocar meu modem da internet em modo bridge (utilizo o Humax HP610 da claro) consegui velocidades superiores de internet. Meu modem da Claro conseguia chegar em 350Mbps com dificuldades em modo roteador (testes via cabo) e eventualmente tinha burst de 500Mbps. Após deixá-lo em modo bridge, consegui velocidade estáveis em 500MBps e burst de 770Mbps.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-892" src="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-teste-velocidade-roteador-modem-modo-bridge-download.png" alt="Raspberry pi - teste velocidade com modem em modo bridge e roteador RPi CM4" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-teste-velocidade-roteador-modem-modo-bridge-download.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/raspberry-pi-teste-velocidade-roteador-modem-modo-bridge-download-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<p>Com certeza irá conseguir desempenho similar colocando seu modem em modo bridge, essa velocidade não é benefício deste setup de roteador especificamente. Existem vários outros roteadores que você pode utilizar da mesma forma e irão garantir bons resultados. O grande diferencial é desafogar o modem da sua empresa de internet da responsabilidade de roteamento e delegar para outro dispositivo.</p>
<p>Mas o grande diferencial deste setup é a liberdade de poder instalar vários softwares pelo gerenciador de pacotes do OpenWRT (opkg). Praticamente não ter limitação de espaço em disco, ter memória ram e poder de processamento de sobra.</p>
<p>Recomendo também acessar o próximo tutorial e aprender a adicionar uma nova interface de bridge para wan, para conseguir acessar o endereço de rede do seu modem, pela rede do roteador. Assim vai conseguir acessar tanto seu roteador, quanto seu modem pelo browser, mesmo eles estando em redes diferentes: <strong><a href="https://viniciuspaes.com/openwrt/tutorial-acessar-modem-bridge-rede-roteador-openwrt/">Tutorial acessar modem em bridge pela rede do roteador com OpenWRT</a></strong></p>
<p>Uma recomendação é a instalação de um filtro de propaganda por DNS. O PiHole e o Adguardhome são boas opções. O Adguardhome tem suporte pelo OpenWRT e pode ser instalado diretamente pela interface.</p>
<p>Gostou deste projeto de roteador com o Raspberry Pi? Ficou com dúvida em alguma etapa? Alguma sugestão? Conte para mim nos comentários, farei o possível para ajudar!</p>
<p>O post <a href="https://viniciuspaes.com/raspberry-pi/tutorial-roteador-raspberry-pi-openwrt/">Tutorial Roteador com Raspberry Pi e OpenWRT</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/raspberry-pi/tutorial-roteador-raspberry-pi-openwrt/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial instalar certificado SSL grátis no Ubuntu com servidor Apache</title>
		<link>https://viniciuspaes.com/linux/tutorial-instalar-certificado-ssl-gratis-ubuntu-servidor-apache/</link>
					<comments>https://viniciuspaes.com/linux/tutorial-instalar-certificado-ssl-gratis-ubuntu-servidor-apache/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Wed, 01 Feb 2023 16:16:54 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[website]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[domínio]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Website]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=841</guid>

					<description><![CDATA[<p>Saiba como instalar certificado SSL grátis do Let's Encrypt em seu website!</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-instalar-certificado-ssl-gratis-ubuntu-servidor-apache/">Tutorial instalar certificado SSL grátis no Ubuntu com servidor Apache</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Entender o que é um <strong>certificado SSL</strong></li>
<li>Saber o que é o Ubuntu</li>
<li>Saber o que é o servidor Apache</li>
<li>Passo a passo para instalar <strong>certificados SSL Let’s Encrypt</strong> (grátis) no Sistema Operacional Ubuntu com servidor Apache</li>
</ul>
<h2>O que é um <strong>certificado SSL</strong>?</h2>
<p>A sigla <strong>SSL</strong> vem do inglês &#8220;Secure Sockets Layer&#8221;, que pode ser traduzido para algo como &#8220;camada de soquete segura&#8221;.<br />
Assim, o certificado SSL, na prática tem como objetivo ser uma camada de segurança entre o acesso do usuário pelo browser a um servidor web (website).<br />
Com certeza todos nós já acessamos um site com certificado SSL ativo e válido, principalmente ao comprar online, ou acessando internet banking.<br />
Uma forma de verificar se o site que está acessando utiliza certificado SSL é verificar se a URL começa com https://, tendo o caracter &#8216;s&#8217; depois de http.<br />
Uma curiosidade, atualmente é utilizado TLS &#8211; Transport Layer Security para garantir essa segurança ponta a ponta. Visto que desde a criação do protocolo SSL, vários problemas de brechas de segurança foram aparecendo e existindo então a necessidade de atualizações. Mas como o nome SSL ficou tão popular, ele ainda é utilizado para especificar a segurança entre as conexões com TLS.</p>
<h2>O que é Ubuntu?</h2>
<p>O Ubuntu descrito neste tutorial é a distribuição do Sistema Operacional Linux instalada no servidor. Porém o software Certbot utilizado para gerenciar os <strong>certificados SSL</strong> tem suporte a diversos sistemas operacionais. Caso utilize outro sistema operacional, basta acessar o site oficial do Certbot e verificar as recomendações de instalação.</p>
<h2>O que é o servidor Apache?</h2>
<p>O Apache (apache2) é o software utilizado para o servidor prover páginas web. Ou seja, é o software de servidor http utilizado. Existem diversos disponíveis no mercado, mas este tutorial irá descrever o passo a passo utilizando o Apache.</p>
<h2>Requisitos para seguir o tutorial</h2>
<p>Para ser possível seguir este tutorial à risca, é necessário que você já tenha registrado um nome de domínio. Além de registrar o nome de domínio, é necessário ter configurado corretamente o DNS deste nome de domínio para seu servidor. No seu servidor, é necessário já ter configurado os arquivos de configuração virtualhost do apache. Estamos realizando esta configuração em um servidor Ubuntu com Apache, então é recomendado que também utilize o mesmo sistema operacional (ou distribuição equivalente baseada em Debian).<br />
Já abordamos todas as necessidades acima com um passo a passo em publicações anteriores:</p>
<ol>
<li>Servidor:
<ul>
<li><a href="https://viniciuspaes.com/servidor/tutorial-setup-servidor-linux-ubuntu-local-virtualbox/">Tutorial setup Servidor Linux Ubuntu Local com VirtualBox</a></li>
<li><a href="https://viniciuspaes.com/linux/tutorial-setup-servidor-nivel-gratuito-amazon-aws/">Tutorial setup Servidor Nível Gratuito na Amazon AWS</a></li>
<li><a href="https://viniciuspaes.com/linux/tutorial-instalar-configurar-servidor-web-http-ubuntu-apache-mysql-php-ftp-tls-php-fpm/">Tutorial configurar servidor HTTP no Ubuntu com Apache, MySQL, PHP (configuração LAMP)</a></li>
</ul>
</li>
<li><a href="https://viniciuspaes.com/website/tutorial-como-registrar-dominio-internet-registrobr-google-domains/">Tutorial para registrar um domínio: Registro.BR e Google Domains</a></li>
<li><a href="https://viniciuspaes.com/website/tutorial-apontar-dns-dominio-para-servidor-registrobr-google-domains/">Tutorial configurar DNS de domínio: Registro.BR e Google Domains</a></li>
<li><a href="https://viniciuspaes.com/website/tutorial-configurar-dominio-ubuntu-servidor-apache/">Tutorial configurar domínio no Ubuntu com servidor Apache</a></li>
</ol>
<p>Um detalhe da lista acima. No item 1 (Servidor) o primeiro item ensina a criar uma máquina virtual no seu computador local para funcionar como servidor; a segunda opção é semelhante a primeira, mas o servidor fica online na amazon (Free Tier grátis por 1 ano); o terceiro item é a configuração do servidor com os softwares necessários para seu funcionamento. Então se estiver começando do zero, você pode optar por ter o servidor no seu computador pessoal ou na nuvem, em seguida é necessário configurar ele com o terceiro item (configuração LAMP). As opções 2, 3 e 4 referentes ao domínio são necessárias também.</p>
<h2>Tutorial instalar certificados SSL grátis no Ubuntu com servidor Apache</h2>
<h3>Passo 1</h3>
<p>Primeiro passo é se conectar ao servidor por SSH. Neste tutorial realizamos a conexão através do prompt do Sistema Operacional. Estamos utilizando um servidor na Amazon AWS e vamos conectar por SSH utilizando a chave que configuramos:</p>
<pre>ssh -i ChaveVPCaws.pem ubuntu@15.229.47.227</pre>
<p>Lembrando que você deve se conectar ao seu servidor com suas próprias credenciais. É possível também se conectar com usuário@IP do servidor, sem necessidade de chave, caso seu servidor esteja configurado desta maneira:</p>
<pre>ssh ubuntu@15.229.47.227</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-810" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-login-ssh-chave-publica-privada.png" alt="Ubuntu - Conectar no servidor por ssh utilizando chave de acesso" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-login-ssh-chave-publica-privada.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-login-ssh-chave-publica-privada-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2</h3>
<p>Agora é interessante verificar qual a versão do sistema operacional ubuntu está utilizando:</p>
<pre>lsb_release -a</pre>
<p>Neste exemplo, nosso servidor utiliza a Versão 22.04.1 LTS da distribuição Ubuntu do Linux.<br />
Caso utilize outra distribuição, é possível ir no site do Certbot e verificar o passo a passo recomendado para seu setup. Mas no geral, caso utilize o Ubuntu, mesmo que em outra versão, o setup é praticamente o mesmo.<br />
Caso queira saber mais sobre o Certbot, que é o software que vamos utilizar para automatizar o processo de instalação e configuração do certificado, é possível acessar o site do mantenedor:</p>
<pre>https://certbot.eff.org/</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-858" src="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-verificar-versao-sistema-operacional-cli.png" alt="Ubuntu - verificar versão do sistema operacional ubuntu" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-verificar-versao-sistema-operacional-cli.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-verificar-versao-sistema-operacional-cli-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-844" src="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-certbot-website.png" alt="Website oficial certbot" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-certbot-website.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-certbot-website-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3</h3>
<p>Para iniciar a instalação, o primeiro passo é instalar o gerenciador de pacotes snap. As últimas versões do Ubuntu já vem com o gerenciador de pacotes instalado, então não é preciso realizar esta etapa.</p>
<h3>Passo 4</h3>
<p>Para garantir que vamos instalar o Certbot na última versão, é interessante realizar o update e upgrade do snap:</p>
<pre>sudo snap install core; sudo snap refresh core</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-846" src="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-atualizar-snapd-ultima-versao-certbot.png" alt="Ubuntu - atualizar snap para ultima versão e atualizar pacotes" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-atualizar-snapd-ultima-versao-certbot.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-atualizar-snapd-ultima-versao-certbot-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>Um passo importante é garantir que você <strong>não possui</strong> o Certbot instalado por outro gerenciador de pacotes, como exemplo, o apt. Então nesta etapa vamos tentar desinstalar o Certbot pelo apt. Caso ele não esteja instalado, não tem problema algum, vai receber somente a informação que o pacote não está instalado pelo apt:</p>
<pre>sudo apt-get remove certbot</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-847" src="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-ter-certeza-certbot-nao-foi-instalado-apt.png" alt="Ubuntu - desinstalar o certbot pelo apt" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-ter-certeza-certbot-nao-foi-instalado-apt.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-ter-certeza-certbot-nao-foi-instalado-apt-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6</h3>
<p>Agora vamos finalmente <strong>instalar o Certbot</strong> com o gerenciador de pacotes snap, utilizando o seguinte comando:</p>
<pre>sudo snap install --classic certbot</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-848" src="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-instalar-certbot-snapd.png" alt="Ubuntu - instalar o certbot" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-instalar-certbot-snapd.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-instalar-certbot-snapd-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7</h3>
<p>Precisamos agora criar um link logico do <strong>snap</strong> para a pasta usr:</p>
<pre>sudo ln -s /snap/bin/certbot /usr/bin/certbot</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-849" src="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-criar-link-logico-pasta-certbot-snap-usr.png" alt="Ubuntu - criar link logico snap certbot" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-criar-link-logico-pasta-certbot-snap-usr.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-criar-link-logico-pasta-certbot-snap-usr-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8</h3>
<p>Agora precisamos recordar que no <a href="https://viniciuspaes.com/website/tutorial-configurar-dominio-ubuntu-servidor-apache/">tutorial de configuração do domínio no servidor apache</a>, criamos 3 arquivos de configuração para o domínio, mas só ativamos um. No nosso exemplo, estávamos configurando o domínio viniciuspaes.com.br e criamos os 3 arquivos abaixo:</p>
<ul>
<li>viniciuspaes.com.br.http.conf (<strong>ativado</strong>)</li>
<li>viniciuspaes.com.br.ssl.conf (<strong>desativado</strong>)</li>
<li>viniciuspaes.com.br.www.ssl.conf (<strong>desativado</strong>)</li>
</ul>
<p>Vamos caminhar até o diretório onde ficam os arquivos de configurações dos websites disponíveis:</p>
<pre>cd /etc/apache2/sites-available</pre>
<p>Com o comando abaixo, listamos os arquivos já previamente configurados no diretório:</p>
<pre>ls -lah</pre>
<p>Como podemos verificar, os 3 arquivos de configuração do domínio viniciuspaes.com.br estão presentes.</p>
<p>Agora que já temos o Certbot instalado para gerenciar os certificados grátis da Let’s Encript, podemos ativar os arquivos de configuração relativos ao SSL:</p>
<pre>sudo a2ensite viniciuspaes.com.br.ssl.conf
sudo a2ensite viniciuspaes.com.br.www.ssl.conf
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-856" src="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-ir-pasta-sites-disponiveis-apache.png" alt="Ubuntu - ir até a pasta onde os arquivos de configuração de sites disponíveis do apache ficam armazenadas" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-ir-pasta-sites-disponiveis-apache.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-ir-pasta-sites-disponiveis-apache-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-857" src="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-lista-arquivos-sites-disponiveis-apache.png" alt="Ubuntu - listar arquivos de sites disponíveis no apache" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-lista-arquivos-sites-disponiveis-apache.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-lista-arquivos-sites-disponiveis-apache-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-850" src="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-exemplo-habilitar-arquivo-conf-sites-apache-com-ssl.png" alt="Ubuntu - ativar arquivo de configuração domínio com ssl" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-exemplo-habilitar-arquivo-conf-sites-apache-com-ssl.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-exemplo-habilitar-arquivo-conf-sites-apache-com-ssl-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-851" src="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-exemplo-habilitar-arquivo-conf-sites-apache-com-ssl-e-www.png" alt="Ubuntu - ativar arquivo de configuração domínio com ssl e www" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-exemplo-habilitar-arquivo-conf-sites-apache-com-ssl-e-www.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-exemplo-habilitar-arquivo-conf-sites-apache-com-ssl-e-www-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9</h3>
<p>Necessário agora reiniciar o apache, para que os arquivos de configuração do SSL fiquem ativos:</p>
<pre>sudo service apache2 restart</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-852" src="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-reiniciar-servico-apache.png" alt="Ubuntu - reiniciar serviço Apache2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-reiniciar-servico-apache.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-reiniciar-servico-apache-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 10</h3>
<p>Tudo pronto agora para executar o certbot para solicitar e instalar os certificados grátis pelo Let’s Encript. Execute então o comando:</p>
<pre>sudo certbot --apache</pre>
<p>Na primeira execução, será necessário “criar uma conta”. Deverá cadastrar seu endereço de email (será enviado periodicamente o status dos seus certificados e algum problema caso não consigam renovar automaticamente). Em seguida vão apresentar os termos e condições de uso. E a terceira pergunta será pedindo permissão para compartilhar seu endereço de email de cadastro com terceiros. No nosso exemplo, inseri meu email, aceitei os termos e não tive o desejo de compartilhar meu email com terceiros.</p>
<p>Após estas etapas, no nosso exemplo, temos a opção de criar certificado para o domínio do exemplo (viniciuspaes.com.br) e para o subdomínio (www.viniciuspaes.com.br). Neste caso, o www é visto como um subdomínio.</p>
<p>Você então pode digitar o número de cada opção e teclar enter para ir instalando e configurando individualmente cada certificado, ou deixar em branco e teclar enter, para instalar todas as opções disponíveis.</p>
<p>Será perguntado se deseja criar o redirecionamento para forçar o acesso do usuário sempre por SSL (https). É uma ótima opção.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-853" src="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-instalar-certbot-apache.png" alt="Ubuntu - executar o certbot para instalar certificados SSL" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-instalar-certbot-apache.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-instalar-certbot-apache-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-854" src="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-instalar-certbot-nao-compartilhar-email-com-terceiros.png" alt="Ubuntu - criando conta certbot" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-instalar-certbot-nao-compartilhar-email-com-terceiros.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-instalar-certbot-nao-compartilhar-email-com-terceiros-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-855" src="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-instalar-certificados-certbot-escolher-dominios.png" alt="Ubuntu - Certbot, escolher domínio para instalar SSL" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-instalar-certificados-certbot-escolher-dominios.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/02/ubuntu-instalar-certificados-certbot-escolher-dominios-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 11</h3>
<p>Tudo pronto! Seu website já possui acesso com certificado SSL.</p>
<p>Abaixo segue algumas curiosidades do que o Certbot alterou automaticamente em seu arquivo de configuração.</p>
<h2>Curiosidades</h2>
<h3>O que o Certbot alterou no arquivo de configuração para acesso http?</h3>
<p>Para fins de curiosidade, as alterações realizadas automaticamente pelo Certbot no arquivo viniciuspaes.com.br.http.conf foi a inserção destas linhas:</p>
<p>RewriteEngine on<br />
RewriteCond %{SERVER_NAME} =www.viniciuspaes.com.br [OR]<br />
RewriteCond %{SERVER_NAME} =viniciuspaes.com.br<br />
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]</p>
<p>Esta opção habilita o mod_rewrite, testa se o acesso ao website está sendo realizado pelo alias (www.viniciuspaes.com.br) ou pelo domínio principal (viniciuspaes.com.br), em seguida insere a regra de acesso com redirecionamento permanente. Se reparar, na regra o acesso é sempre com https (forçando o uso do SSL).</p>
<h3>O que o Certbot alterou no arquivo de configuração para acesso ssl?</h3>
<p>Para fins de curiosidade também, no arquivo de configuração SSL do domínio principal (viniciuspaes.com.br.ssl.conf), o Certbot inseriu estas linhas:</p>
<p>SSLCertificateFile /etc/letsencrypt/live/viniciuspaes.com.br/fullchain.pem<br />
SSLCertificateKeyFile /etc/letsencrypt/live/viniciuspaes.com.br/privkey.pem<br />
Include /etc/letsencrypt/options-ssl-apache.conf</p>
<p>Basicamente ele informa no arquivo de configuração o caminho do arquivo do certificado, o caminho da chave do certificado e inclui o arquivo de configuração das opções de SSL.</p>
<h3>O que o Certbot alterou no arquivo de configuração para acesso ssl com www?</h3>
<p>Basicamente a mesma coisa do item anterior, só que para o arquivo viniciuspaes.com.br.www.ssl.conf. Os arquivos de certificado e chave são diferentes. Pois ele entende que www é um subdomínio , então gera um certificado próprio para este acesso também:</p>
<p>SSLCertificateFile /etc/letsencrypt/live/www.viniciuspaes.com.br/fullchain.pem<br />
SSLCertificateKeyFile /etc/letsencrypt/live/www.viniciuspaes.com.br/privkey.pem<br />
Include /etc/letsencrypt/options-ssl-apache.conf</p>
<h2>Considerações Finais</h2>
<p>O processo de instalação de certificados SSL é bem simples. Isto ocorre pois já deixamos os arquivos de configuração prontos quando configuramos o domínio no servidor. A criação destes arquivos pode parecer um pouco exagerada ou confusa, mas foi a maneira que funcionou melhor com o Certbot. Quando utilizava ServerAlias com WWW juntamente no arquivo de configuração com SSL, o Certbot se confundia na criação dos certificados e não atualizava corretamente os arquivos. Quando você tiver mais experiência em gerenciar os arquivos de configuração, é possível unificar todos os vhost em um arquivo e deixar o mais organizado possível. Mas se seguir o tutorial a risca, não terá problemas.</p>
<h2>Conclusões</h2>
<p>A utilização de <strong>encriptação SSL (TLS)</strong> em seu servidor é um passo importante, visto que os mecanismos de busca já sinalizaram que a segurança da troca de informações é relevante no ranking. Caso vislumbre utilizar e-commerce em seu website, é imprescindível ter o certificado instalado e configurado corretamente. Muitos gateways de pagamento exigem essa funcionalidade.</p>
<p>Teve algum problema no processo de instalar o certificado SSL em seu website? Não conseguiu executar alguma etapa deste tutorial? Deixa sua dúvida nos comentários e farei o possível para ajudar!</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-instalar-certificado-ssl-gratis-ubuntu-servidor-apache/">Tutorial instalar certificado SSL grátis no Ubuntu com servidor Apache</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/linux/tutorial-instalar-certificado-ssl-gratis-ubuntu-servidor-apache/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial configurar domínio no Ubuntu com servidor Apache</title>
		<link>https://viniciuspaes.com/linux/tutorial-configurar-dominio-ubuntu-servidor-apache/</link>
					<comments>https://viniciuspaes.com/linux/tutorial-configurar-dominio-ubuntu-servidor-apache/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Sat, 28 Jan 2023 01:18:25 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[website]]></category>
		<category><![CDATA[domínio]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Website]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=800</guid>

					<description><![CDATA[<p>Tutorial com passo a passo para configurar um novo domínio no servidor Apache!</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-configurar-dominio-ubuntu-servidor-apache/">Tutorial configurar domínio no Ubuntu com servidor Apache</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Entender o que é um domínio</li>
<li>Saber o que é o servidor Apache</li>
<li>Passo a passo para aprender a criar um arquivo de configuração para um novo domínio no servidor apache e Ubuntu</li>
</ul>
<h2>O que é um domínio?</h2>
<p>Do ponto de vista prático, o domínio ou nome de domínio, muitas vezes é sua marca na internet. É um nome que direciona o usuário ao website correspondente.</p>
<p>Por trás deste processo, temos o nome de domínio como um apontador. Ele direciona o tráfego de usuário para um endereço IP do servidor onde o website está hospedado.</p>
<p>O servidor por sua vez, fica encarregado em disponibilizar as páginas do website para serem exibidas no navegador.</p>
<h2>O que é o servidor Apache?</h2>
<p>Genericamente definimos um servidor de internet como o responsável por exibir as páginas de um website. Mas no geral, um servidor é responsável por servir. Ele pode ser configurado para servir páginas de websites (servidor http), servir emails (servidor de emails), etc.</p>
<p>Temos então o aspecto físico do servidor, sendo o hardware: o computador propriamente dito. E o aspecto de software, que é o responsável por realizar sistematicamente as tarefas programadas.</p>
<p>Assim, o servidor Apache (Apache2), citado neste tutorial, é o software de servidor web, ou servidor http. Este mesmo serviço de servir páginas poderia ser realizado por outros softwares, como o lighttpd, nginx, etc.</p>
<h2>Requisitos para seguir o tutorial</h2>
<p>É esperado que já tenha um domínio registrado e que já tenha realizado as configurações DNS, apontando o domínio para o servidor. É esperado também que já tenha um servidor http configurado, neste caso, o Apache.<br />
Então, neste tutorial, será ensinado como criar o arquivo de configuração deste domínio: especificando o local dos arquivos do website, as permissões de escrita de url, o local dos arquivos de log, etc. Com o arquivo de configuração criado e configurado corretamente, é possível então ter o domínio funcional no servidor.</p>
<h2>Tutorial para aprender configurar um novo domínio no servidor web Apache com sistema operacional Ubuntu</h2>
<h3>Passo 1</h3>
<p>Primeiro passo é se conectar no servidor. Caso não utilize uma chave de acesso, é possível se conectar com usuário@IP pelo prompt. Neste exemplo, nos conectamos no servidor que possui o IP 15.229.47.227, utilizando o nome de usuário <strong>ubuntu</strong>.</p>
<pre>ssh ubuntu@15.229.47.227</pre>
<p>Caso utilize uma chave de conexão, como as que geralmente são criadas na Amazon AWS para os servidores EC2, tenha certeza que você está no mesmo diretório da sua chave e utilize o comando:</p>
<pre>ssh -i ChaveVPCaws.pem ubuntu@15.229.47.227</pre>
<p>No exemplo acima, nossa chave tem o nome de ChaveVPCaws.pem, utilizamos nome de usuário ubuntu e nos conectamos no servidor que possui o IP 15.229.47.227.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-810" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-login-ssh-chave-publica-privada.png" alt="Ubuntu - Conectar no servidor por ssh utilizando chave de acesso" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-login-ssh-chave-publica-privada.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-login-ssh-chave-publica-privada-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2</h3>
<p>Com o login no servidor realizado com sucesso, vamos caminhar até a pasta de produção de páginas do servidor web:</p>
<pre>cd /var/www/html</pre>
<p>Vamos dar uma olhada em quais arquivos já existem, e quais diretórios:</p>
<pre>ls -lah</pre>
<p>Neste exemplo temos um servidor recém criado. Não possui nenhum arquivo configurado na pasta de produção de páginas web. O arquivo de index.html, é o padrão do apache.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-813" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-ir-pasta-public-html.png" alt="Ubuntu - ir para a pasta /var/www/html" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-ir-pasta-public-html.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-ir-pasta-public-html-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-812" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-ls-pasta-public-html.png" alt="Ubuntu - mostrar arquivos dentro da pasta /var/www/html" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-ls-pasta-public-html.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-ls-pasta-public-html-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3</h3>
<p>É interessante neste momento criar o diretório para o novo domínio. Lembre-se de trocar o nome novodominio.com.br abaixo, pelo o nome do seu novo domínio:</p>
<pre>sudo mkdir <strong>novodominio.com.br</strong></pre>
<p>Gosto de utilizar o próprio nome do domínio como nome do diretório, para que fique tudo muito bem organizado.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-815" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-criar-diretorio-para-novo-website.png" alt="Ubuntu - como criar uma pasta para hospedar novo website" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-criar-diretorio-para-novo-website.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-criar-diretorio-para-novo-website-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4</h3>
<p>Pensando agora nos responsáveis em gerenciar o website, é interessante ter um usuário independente para este processo. Vamos criar então um novo usuário chamado webmaster1:</p>
<pre>sudo useradd -m webmaster1</pre>
<p>Aproveitamos e criamos uma senha para o novo usuário:</p>
<pre>sudo passwd webmaster1</pre>
<p>Lembre-se de anotar o nome de usuário e sua senha em um local seguro.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-816" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-criar-novo-usuario-webmaster-gerenciar-sites.png" alt="Ubuntu - como criar um novo usuário para gerenciar um website" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-criar-novo-usuario-webmaster-gerenciar-sites.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-criar-novo-usuario-webmaster-gerenciar-sites-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>Agora vamos dar permissão de “dono” para o diretório que criamos para o novo usuário. E a permissão de grupo para o servidor apache (www-data):</p>
<pre>sudo chown webmaster1:www-data /var/www/html/<strong>nomedominio.com.br</strong> -R</pre>
<p>Lembre de alterar o comando acima, substituindo o nomedominio.com.br pelo seu novo domínio.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-817" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-definir-dono-grupo-correto-diretorio-public-html.png" alt="Ubuntu - definir usuário e grupo responsável por pastas e arquivos de um website" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-definir-dono-grupo-correto-diretorio-public-html.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-definir-dono-grupo-correto-diretorio-public-html-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6</h3>
<p>Importante também definir a permissão geral do diretório raiz do website, com o comando chmod.</p>
<pre>sudo chmod 755 /var/www/html/<strong>nomedominio.com.br</strong></pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-818" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-definir-correta-permissao-chmod-pasta-public-html.png" alt="Ubuntu - definir permissão de acesso a pastas de um website" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-definir-correta-permissao-chmod-pasta-public-html.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-definir-correta-permissao-chmod-pasta-public-html-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7</h3>
<p>Com o diretório de produção do site criado e configurado, juntamente com o usuário responsável, vamos agora verificar os arquivos de configuração do apache para domínios existentes no servidor:</p>
<pre>cd /etc/apache2/sites-available</pre>
<p>E agora verificar os arquivos existentes:</p>
<pre>ls -lah</pre>
<p>Como podem observar, há apenas 2 arquivos existentes, pois o servidor é recém criado. Estes são os arquivos base de configuração para o acesso ao servidor.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-820" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-ir-pasta-sites-available-apache.png" alt="Ubuntu - ir para a pasta sites-available do Apache para verificar os arquivos de configuração existentes" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-ir-pasta-sites-available-apache.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-ir-pasta-sites-available-apache-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-819" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-ls-pasta-sites-available-apache.png" alt="Ubuntu - mostrar arquivos dentro da pasta sites-available do apache" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-ls-pasta-sites-available-apache.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-ls-pasta-sites-available-apache-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8</h3>
<p>Um passo interessante e muito útil, é a criação de 3 templates de arquivos de configuração para cada domínio. Desta forma, fica mais fácil a configuração de novos domínios, pois já teremos um modelo pronto.</p>
<h4><strong>Template 1:</strong> Acesso ao domínio por HTTP e alias WWW (sem SSL)</h4>
<p>Vamos criar então o primeiro arquivo de template:</p>
<pre>sudo nano nomedominio.com.br.http.template</pre>
<p>Agora precisamos copiar para dentro deste arquivo o seguinte modelo de configuração:</p>
<p><script src="https://gist.github.com/viniciuspaes/c3bd41a16524967e9961add8a64ea62c.js"></script></p>
<p>Repare na linha de Redirect 301, ela serve para redirecionar automaticamente o acesso com www., para o acesso sem este prefixo. Se não quiser esta opção, lembre de remover esta linha.</p>
<p>Salve e feche o editor nano.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-837" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-template-arquivo-configuracao-apache-dominio-http-com-alias-www.png" alt="Ubuntu - template arquivo configuração domínio sites-available apache com acesso http e alias www" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-template-arquivo-configuracao-apache-dominio-http-com-alias-www.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-template-arquivo-configuracao-apache-dominio-http-com-alias-www-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4><strong>Template 2:</strong> Acesso ao domínio por HTTPS (SSL) (sem WWW)</h4>
<p>Vamos criar então o segundo arquivo de template:</p>
<pre>sudo nano nomedominio.com.br.ssl.template</pre>
<p>Agora precisamos copiar o seguinte modelo de configuração para dentro do arquivo:</p>
<p><script src="https://gist.github.com/viniciuspaes/e1ca3287cc7ad84796ee3f466348a185.js"></script></p>
<p>Perceba que este modelo não utiliza a diretiva de ServerAlias.<br />
Lembre de salvar e fechar o editor nano.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-823" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-template-arquivo-configuracao-apache-dominio-ssl.png" alt="Ubuntu - template arquivo configuração domínio sites-available apache com acesso https e sem alias www" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-template-arquivo-configuracao-apache-dominio-ssl.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-template-arquivo-configuracao-apache-dominio-ssl-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4><strong>Template 3:</strong> Acesso ao domínio por HTTPS (SSL) e com WWW (www é visto como um subdomínio)</h4>
<p>Vamos criar então o terceiro arquivo de template, para que seja possível acessar o domínio com o prefixo www. e com SSL:</p>
<pre>sudo nano nomedominio.com.br.www.ssl.template</pre>
<p>Repetimos o processo de copiar as informações abaixo para dentro do arquivo no nano:</p>
<p><script src="https://gist.github.com/viniciuspaes/90026971f35eefdeeb72b5266373f453.js"></script></p>
<p>Ainda dentro do editor nano, lembre-se de salvar e fechar.</p>
<p>Repare que este modelo acima é muito parecido com o modelo do template 2. A única mudança é a inserção do prefixo www no ServerName. Uma explicação rápida: o prefixo www é visto como um subdomínio, e então se for gerar um certificado para acesso com prefixo, é melhor ter um arquivo de configuração independente. Repare que os demais campos nomedominio.com.br não são alterados (não precisa inserir o www), pois o www é canônico para o acesso do usuário ao site: vai mostrar as mesmas páginas do site, no mesmo diretório, ter o mesmo arquivo de log, etc…</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-824" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-template-arquivo-configuracao-apache-dominio-www-ssl.png" alt="Ubuntu - template arquivo configuração domínio sites-available apache com acesso https e www" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-template-arquivo-configuracao-apache-dominio-www-ssl.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-template-arquivo-configuracao-apache-dominio-www-ssl-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9</h3>
<p>Com os arquivos de template prontos, vamos seguir com o exemplo da configuração de um novo domínio no servidor. Supondo então um novo domínio com o nome de:</p>
<pre>viniciuspaes.com.br</pre>
<p>Precisamos agora criar os arquivos de configuração para este novo domínio. Vamos fazer uma cópia dos arquivos de template alterando o nome e a extensão para .conf</p>
<pre>sudo cp nomedominio.com.br.http.template    viniciuspaes.com.br.http.conf
sudo cp nomedominio.com.br.ssl.template     viniciuspaes.com.br.ssl.conf
sudo cp nomedominio.com.br.www.ssl.template viniciuspaes.com.br.www.ssl.conf
</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-825" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-copiar-template-em-formato-conf-apache.png" alt="Ubuntu - fazendo cópia dos arquivos de template para os nomes de domínio" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-copiar-template-em-formato-conf-apache.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-copiar-template-em-formato-conf-apache-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 10</h3>
<p>Precisamos agora editar os 3 arquivos de configuração criados, alterando o nome de domínio base (nomedominio.com.br) para o novo domínio a ser configurado (viniciuspaes.com.br).</p>
<h4>Arquivo de Configuração 1: Acesso ao domínio por HTTP e alias WWW (sem SSL)</h4>
<p>Necessário então abrir o arquivo com o editor nano para realizar as modificações:</p>
<pre>sudo nano viniciuspaes.com.br.http.conf</pre>
<p>Atualizar os campos de nomedominio.com.br para viniciuspaes.com.br:</p>
<p><script src="https://gist.github.com/viniciuspaes/26d22d224ac69b4639520748175be3d2.js"></script></p>
<p>Lembrando novamente que a linha do comando &#8220;Redirect 301&#8221; serve para redirecionar o acesso com www para sem o www de prefixo. Particularmente prefiro o acesso sem www, para deixar a url a mais curta possível (ou seja, mantenho esta linha do jeito que está). Agora grave as alterações (salvar) e feche o editor nano.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-838" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-exemplo-arquivo-configuracao-dominio-http-conf.png" alt="Ubuntu - arquivo de configuração para um novo domínio e website no apache" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-exemplo-arquivo-configuracao-dominio-http-conf.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-exemplo-arquivo-configuracao-dominio-http-conf-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Arquivo de Configuração 2: Acesso ao domínio por HTTPS (SSL) (sem WWW)</h4>
<p>Necessário então abrir o arquivo com o editor nano para realizar as modificações:</p>
<pre>sudo nano viniciuspaes.com.br.ssl.conf</pre>
<p>Atualizar os campos de nomedominio.com.br para viniciuspaes.com.br:</p>
<p><script src="https://gist.github.com/viniciuspaes/579266c3eba010f478ea88cb7a69d653.js"></script></p>
<p>Agora grave as alterações (salvar) e feche o editor nano.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-828" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-exemplo-arquivo-configuracao-dominio-ssl-conf.png" alt="Ubuntu - arquivo de configuração para um novo domínio e website no apache com SSL" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-exemplo-arquivo-configuracao-dominio-ssl-conf.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-exemplo-arquivo-configuracao-dominio-ssl-conf-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Arquivo de Configuração 3: Acesso ao domínio por HTTPS (SSL) e com WWW (www é visto como um subdomínio)</h4>
<p>Necessário então abrir o arquivo com o editor nano para realizar as modificações:</p>
<pre>sudo nano viniciuspaes.com.br.www.ssl.conf</pre>
<p>Atualizar os campos de nomedominio.com.br para viniciuspaes.com.br. Ficar atento que somente o campo ServerName deve conter o prefixo www.</p>
<p><script src="https://gist.github.com/viniciuspaes/78164919a7ce3de70b7d4474f5f411c6.js"></script></p>
<p>Agora grave as alterações (salvar) e feche o editor nano.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-829" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-exemplo-arquivo-configuracao-dominio-www-ssl-conf.png" alt="Ubuntu - arquivo de configuração para um novo subdomínio canônico no apache com SSL" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-exemplo-arquivo-configuracao-dominio-www-ssl-conf.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-exemplo-arquivo-configuracao-dominio-www-ssl-conf-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 11</h3>
<p>É importante ressaltar que já deixamos preparados 3 arquivos de configuração para o domínio, mas estes arquivos precisam ser ativados. Neste tutorial não vamos abordar a instalação de certificados SSL. Então só vamos ativar o arquivo de configuração do acesso ao domínio por HTTP com o alias www (arquivo de configuração 1).<br />
Utilizamos então o comando abaixo para ativar o arquivo de configuração para o domínio viniciuspaes.com.br:</p>
<pre>a2ensite viniciuspaes.com.br.http.conf</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-831" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-habilitar-arquivo-configuracao-apache-novo-dominio-http.png" alt="Ubuntu - ativando um novo domínio e website no apache" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-habilitar-arquivo-configuracao-apache-novo-dominio-http.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-habilitar-arquivo-configuracao-apache-novo-dominio-http-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 12</h3>
<p>A etapa final deste tutorial é reiniciar o servidor apache, para que ele carregue o novo arquivo de configuração do domínio que ativamos. Utilizamos o seguinte comando:</p>
<pre>sudo service apache2 restart</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-832" src="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-reiniciar-apache-modificacoes-dominio-tenham-efeito.png" alt="Ubuntu - reiniciando o servidor apache para que as modificações tenham efeito" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-reiniciar-apache-modificacoes-dominio-tenham-efeito.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/ubuntu-reiniciar-apache-modificacoes-dominio-tenham-efeito-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Considerações Finais</h2>
<p>Como vimos, este tutorial abordou a criação de arquivos de template para facilitar a configuração de novos domínios no servidor. Pode parecer um esforço exagerado, mas pense que vá adicionar novos domínios ao longo do tempo, ter arquivos de template já prontos, facilita bastante o processo.<br />
O acesso ao domínio com o prefixo www é entendido como se www fosse um subdomínio. Para facilitar então a gestão de certificados SSL no futuro, evitamos utilizar o campo ServerAlias no arquivo de configuração com SSL. Desta forma, ao gerar os certificados no futuro, o próprio processo de automação tem maior facilidade em editar os arquivos de configuração quando estes estão separados.</p>
<h2>Conclusão</h2>
<p>O processo de criar arquivos de configuração para novos domínios é bastante simples. Tomamos um cuidado extra em já deixar pronto os arquivos de configuração para acesso ao domínio com certificado SSL. Em um próximo tutorial, vamos ensinar como instalar certificados SSL no servidor e o processo será extremamente simples com esta dinâmica adotada.<br />
Ficou com alguma dúvida neste tutorial? Deixe sua mensagem nos comentários que farei o possível para responder!</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-configurar-dominio-ubuntu-servidor-apache/">Tutorial configurar domínio no Ubuntu com servidor Apache</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/linux/tutorial-configurar-dominio-ubuntu-servidor-apache/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial apontar DNS de domínio para servidor: Registro.BR e Google Domains</title>
		<link>https://viniciuspaes.com/website/tutorial-apontar-dns-dominio-para-servidor-registrobr-google-domains/</link>
					<comments>https://viniciuspaes.com/website/tutorial-apontar-dns-dominio-para-servidor-registrobr-google-domains/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Wed, 18 Jan 2023 21:04:59 +0000</pubDate>
				<category><![CDATA[website]]></category>
		<category><![CDATA[domínio]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Website]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=762</guid>

					<description><![CDATA[<p>Tutorial passo a passo ensinando a configurar o DNS de um domínio registrado tanto no Registro.BR quanto no Google Domains!</p>
<p>O post <a href="https://viniciuspaes.com/website/tutorial-apontar-dns-dominio-para-servidor-registrobr-google-domains/">Tutorial apontar DNS de domínio para servidor: Registro.BR e Google Domains</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Entender o que é o DNS</li>
<li>Conhecer as principais entradas DNS</li>
<li>Passo a passo para aprender a apontar DNS de um domínio para um servidor na internet: exemplo com Registro.BR e Google Domains</li>
</ul>
<h2>O que significa DNS?</h2>
<p>A sigla <strong>DNS</strong> é o acrônimo para Domain Name System. Traduzindo seria algo como Sistema de Nomes de Domínio.</p>
<h2>Qual a serventia de um DNS?</h2>
<p>A principal vantagem do DNS é ser um sistema que traduz nomes para endereços.<br />
Um exemplo prático:</p>
<ol>
<li>Um website usualmente está hospedado em um servidor de páginas (servidor web ou http).</li>
<li>Se este servidor estiver acessível, podemos se conectar a ele através de seu endereço IP.</li>
<li>Ao digitar este IP no navegador web, e se o servidor estiver configurado como servidor de páginas e tiver uma página web disponível para apresentá-la, o navegador web irá apresentar o website.</li>
</ol>
<p>Porém, não é um processo fácil decorar e digitar um endereço IP no navegador no dia a dia. Um endereço no formato IPv4 é até possível, mas pouco prático. Porém, um endereço IPv6 é muito extenso, seria bastante inviável este processo.</p>
<p>A vantagem então do DNS é gerenciar essa “tradução” de nome para endereço. Através então do DNS é possível digitar o nome de domínio no navegador de internet e este nome ser direcionado ao servidor onde o website está hospedado. Uma forma bastante prática para gerenciar o acesso aos websites.</p>
<h2>O que é um registro DNS e quais as principais entradas de registro?</h2>
<p>Uma entrada DNS ou um registro DNS pode ser entendido como um registro das informações de DNS de um domínio em um banco de dados, que é utilizado para mapear um nome de domínio para um endereço IP. Os registros de DNS são armazenados em servidores de DNS, que conversam entre si e se atualizam.<br />
Desta forma, o termo “a propagação do DNS pode levar até 72h para ser efetivada”, nada mais é que o tempo máximo esperado que qualquer atualização que seja feito no registro DNS do seu domínio se propague por todos os servidores DNS.</p>
<p>As entradas DNS mais comuns são:</p>
<ul>
<li><strong>A</strong> &#8211; a entrada A, vem do termo “address”, ou endereço. É a entrada que define para qual endereço IP o domínio deve ser direcionado.</li>
<li><strong>AAAA</strong> &#8211; a entrada AAAA, também deriva do termo &#8220;address&#8221; ou &#8221; quad A&#8221;, referente ao endereço IP do padrão IPv6. É a mesma função da entrada A, o que difere é que esta entrada utiliza o IP no padrão IPv6 ao invés do padrão IPv4.</li>
<li><strong>CNAME</strong> &#8211; a entrada CNAME, vem do termo “canonical name”, ou endereço canônico. É muito utilizada para definir subdomínios e direcionar para uma entrada do tipo A.</li>
<li><strong>TXT</strong> &#8211; a entrada TXT, vem do termo “text record”, ou entrada de texto. É basicamente uma entrada de texto, é a entrada mais versátil. Pode ser utilizada de diversas formas, tanto para provar que é o detentor do domínio em serviços de terceiros (inserir um texto, para que serviços de terceiros confirmem que você pode realizar alterações), como configurar o DKIM para servidores de email, entre outros.</li>
<li><strong>NS</strong> &#8211; a entrada NS, vem do termo “name server”, ou servidor de nome. Esta entrada é utilizada para definir qual o servidor de nomes está utilizando para propagar seu registro DNS.</li>
<li><strong>MX</strong> &#8211; a entrada MX, vem do termo “mail exchange”, que pode ser entendida como envio e recebimento de email. Esta entrada define para qual servidor as mensagens de email remetidas ao seu domínio devem ser direcionadas.</li>
<li><strong>PTR</strong> &#8211; a entrada PTR, vem do termo “pointer”, ou apontador. Ela é o oposto da entrada A. Desta forma, se a entrada <strong>A</strong> aponta o domínio para um endereço IP, a entrada PTR aponta um IP para um domínio.</li>
<li><strong>SPF</strong> &#8211; a entrada SPF vem do termo “sender policy framework”, que pode ser entendida como uma estrutura de política do remetente. É utilizada para definir a estrutura de servidores autorizados para enviar emails daquele domínio. É bastante útil para proteger seu domínio de técnicas em que um servidor malicioso tenta se passar por remetente autorizado (spoofing) enviando emails de SPAM e realizando Phishing.</li>
<li><strong>SOA</strong> &#8211; a entrada SOA vem do termo “start of authority”, ou início da autoridade. É uma entrada de registro que inclui informações administrativas sobre sua zona (DNS).</li>
</ul>
<h2>Requisitos para seguir o tutorial</h2>
<p>Este tutorial ensina como configurar as entradas DNS em seu domínio. Então é necessário que você tenha um domínio registrado, e que possa realizar alterações nas entradas DNS. Este tutorial aborda o passo a passo para alterar as entradas DNS de um domínio tanto no Registro.BR, como no Google Domains. Então é recomendado que tenha um domínio registrado em uma destas plataformas. Mas em linhas gerais, as entradas DNS abordadas aqui são as mesmas para qualquer empresa de registro de domínio, só fique atento se a empresa em que registrou seu domínio permite configurações manuais no DNS.</p>
<h2>Tutorial para aprender a apontar DNS de um domínio para um servidor na internet: exemplo com Registro.BR e Google Domains</h2>
<h2>Criando entradas DNS de um domínio pelo Registro.br</h2>
<p>Nesta etapa vamos realizar o passo a passo no Registro.br para habilitar manualmente as entradas DNS de um domínio registrado na plataforma. Em linhas gerais, vamos optar por utilizar o servidor de DNS do Registro.BR, ir em modo avançado, e configurar manualmente as entradas.</p>
<h3>Passo 1</h3>
<p>Primeiro passo é acessar o site do Registro.BR:</p>
<pre>https://registro.br</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-732" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-pagina-inicial.png" alt="Página inicial Registro.BR" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-pagina-inicial.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-pagina-inicial-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2</h3>
<p>Agora clique em:</p>
<pre>ACESSAR CONTA</pre>
<p>Entre com suas credenciais de login.</p>
<h3>Passo 3</h3>
<p>Após o login, clique no nome de domínio já previamente registrado, onde deseja realizar as alterações de DNS.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-766" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-tela-apos-login.png" alt="Registro.br - tela após login - lista de domínios registrados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-tela-apos-login.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-tela-apos-login-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4</h3>
<p>Na tela do domínio selecionado, use a barra de rolagem se necessário, até encontrar a opção:</p>
<pre>Alterar servidores DNS</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-767" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-tela-dominios.png" alt="Registro.br - tela do domínio selecionado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-tela-dominios.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-tela-dominios-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-768" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-tela-dominios-opcao-alterar-dns.png" alt="Registro.br - tela do domínio selecionado - opção alterar DNS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-tela-dominios-opcao-alterar-dns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-tela-dominios-opcao-alterar-dns-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>No modal que abrir, procure a opção:</p>
<pre>UTILIZAR DNS DO REGISTRO.BR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-769" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br.png" alt="Registro.br - utilizar servidor DNS do registro.br" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6</h3>
<p>Agora é necessário selecionar a opção de:</p>
<pre>Configurar endereçamento</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-770" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-enderecamento.png" alt="Registro.BR - opção configurar endereçamento" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-enderecamento.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-enderecamento-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7</h3>
<p>No modal que abrir, use a barra de rolagem se necessário, e clique no botão:</p>
<pre>MODO AVANÇADO</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-771" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-enderecamento-ativado.png" alt="Registro.BR - usar DNS registro BR ir para modo avançado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-enderecamento-ativado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-enderecamento-ativado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-772" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-enderecamento-modo-avancado.png" alt="Registro.BR - usar DNS registro BR botao modo avançado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-enderecamento-modo-avancado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-enderecamento-modo-avancado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8</h3>
<p>É necessário então confirmar a utilização do modo avançado, clique em:</p>
<pre>CONFIRMAR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-774" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-enderecamento-modo-avancado-confirmar.png" alt="Registro.br - confirmar modo avaçado do endereçamento de DNS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-enderecamento-modo-avancado-confirmar.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-enderecamento-modo-avancado-confirmar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9</h3>
<p>Agora já estamos utilizando os servidores do Registro.br. Precisamos então configurar as entradas de registro do DNS. Vamos clicar em:</p>
<pre>Configurar Zona DNS</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-775" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-zona-dns.png" alt="Registro.br - configurar zona DNS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-zona-dns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-configurar-zona-dns-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 10</h3>
<p>Agora temos a opção de criar as entradas do DNS. Clique em:</p>
<pre>NOVA ENTRADA</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-776" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-nova-entrada-zona-dns.png" alt="Registro.br - nova entrada DNS" width="768" height="978" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-nova-entrada-zona-dns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-nova-entrada-zona-dns-236x300.png 236w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 11</h3>
<p>A primeira entrada que vamos utilizar é a entrada do tipo A (address), onde vamos definir para qual endereço IP do servidor o nome de domínio deve ser apontado. Neste exemplo, nosso servidor utiliza IP do tipo IPv4. Caso utilize IPv6 em seu servidor, utilizar a entrada AAAA.<br />
Clique então em tipo e selecione:</p>
<pre>A</pre>
<p>Na opção de nome não é preciso inserir informação, ele vai utilizar o nome do domínio.<br />
Na opção do endereço IPv4, insira o IP do seu servidor. Neste exemplo, tenho um servidor configurado no IP 159.89.93.68. Não utilize este IP do exemplo, use o IP do seu servidor!! Ao terminar de preencher a entrada do tipo A, clique em:</p>
<pre>ADICIONAR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-777" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-nova-entrada-zona-dns-definir-tipo.png" alt="Registro.br - tela para nova entrada de DNS" width="768" height="978" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-nova-entrada-zona-dns-definir-tipo.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-nova-entrada-zona-dns-definir-tipo-236x300.png 236w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-778" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-nova-entrada-zona-dns-tipo-A-ipv4.png" alt="Registro.br - tela para nova entrada de DNS - selecionando entrada tipo A" width="768" height="978" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-nova-entrada-zona-dns-tipo-A-ipv4.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-nova-entrada-zona-dns-tipo-A-ipv4-236x300.png 236w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 12</h3>
<p>Agora vamos configurar uma nova entrada, mas do tipo CNAME. Vamos criar um nome canônico para acessar o website. Neste exemplo, vamos configurar o acesso ao site com o prefixo www. (que pode ser entendido como um subdomínio).<br />
Então, na opção de tipo, escolha:</p>
<pre>CNAME</pre>
<p>Na opção de nome, digite:</p>
<pre>www</pre>
<p>Na opção de nome de servidor, digite o próprio nome do domínio. Por exemplo, estou editando as entradas do domínio viniciuspaes.com.br, então repito este nome de domínio na opção nome de servidor.<br />
Após preencher todos os campos do CNAME, clique em:</p>
<pre>ADICIONAR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-779" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-nova-entrada-zona-dns-tipo-CNAME-subdominio.png" alt="Registro.br - nova entrada DNS - escolher tipo CNAME" width="768" height="978" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-nova-entrada-zona-dns-tipo-CNAME-subdominio.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-nova-entrada-zona-dns-tipo-CNAME-subdominio-236x300.png 236w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 13</h3>
<p>Confira os dados das entradas DNS que configurou, caso estejam corretas, clique em:</p>
<pre>SALVAR ALTERAÇÕES</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-780" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-salvar-alteracoes-zona-dns.png" alt="Registro.br - confirmar novas entradas DNS - salvar" width="768" height="978" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-salvar-alteracoes-zona-dns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-salvar-alteracoes-zona-dns-236x300.png 236w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 14</h3>
<p>Ao fim das edições, verá a confirmação: “Zona DNS atualizada com sucesso.”</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-781" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-zona-dns-atualizada-com-sucesso.png" alt="Registro.br - entradas DNS manuais inseridas com sucesso!" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-zona-dns-atualizada-com-sucesso.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro.br-usar-dns-registro-br-zona-dns-atualizada-com-sucesso-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Considerações Finais para alteração do DNS de Domínio no Registro.BR</h2>
<p>Por experiência, a propagação do DNS pelo Registro.br é bastante lenta. Se precisar realizar muitas alterações no DNS periodicamente, talvez seja interessante encaminhar o DNS do Registro.BR para a empresa onde você aluga seu servidor (Amazon, Vultr, Digital Ocean, …).<br />
Caso precise criar entradas MX para configurar o gmail em seu domínio, basta inserir as entradas do tipo MX, de acordo como o Gmail (Google Workspace) pedir, o processo é bem parecido com o que foi feito nos passos acima.</p>
<h2>Criando entradas DNS de um domínio pelo Google Domains</h2>
<h3>Passo 1</h3>
<p>Primeiro passo é acessar o site do Google Domains pela URL:</p>
<pre>https://domains.google.com/</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-746" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-inicial.png" alt="Google Domains - página inicial" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-inicial.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-inicial-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2</h3>
<p>Realize o login na sua conta do Google. Para chegar no campo de login, caso precise, abra o menu lateral esquerdo, e clique em:</p>
<pre>Meus domínios</pre>
<p>Agora clique no botão superior direito:</p>
<pre>Fazer login</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-747" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-inicial-menu.png" alt="Google Domains - menu lateral - meus domínios" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-inicial-menu.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-inicial-menu-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-748" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-fazer-login.png" alt="Google Domains - fazer login" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-fazer-login.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-fazer-login-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3</h3>
<p>Nesta etapa de login, insira seu endereço de email.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-749" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-login.png" alt="Google domains - inserir email de login" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-login.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-login-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4</h3>
<p>Agora insira sua senha da sua conta do Google.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-750" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-senha.png" alt="Google Domains - inserir senha de login" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-senha.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-senha-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>Encontre o domínio que deseja realizar as alterações de DNS. Neste exemplo vou alterar o domínio viniciuspaes.com<br />
Clique no nome do domínio.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-785" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-selecionar-dominio.png" alt="Google Domains - selecionar domínio para alterar o DNS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-selecionar-dominio.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-selecionar-dominio-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6</h3>
<p>Agora acesse o menu lateral esquerdo. Clique na opção de:</p>
<pre>DNS</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-786" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-acessar-menu.png" alt="Google Domains - Acessar Menu lateral" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-acessar-menu.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-acessar-menu-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-787" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-acessar-menu-selecionar-dns.png" alt="Google Domains - Acessar Menu lateral - opção DNS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-acessar-menu-selecionar-dns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-acessar-menu-selecionar-dns-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7</h3>
<p>Você será direcionado para a página de configurações de DNS do domínio. Use a barra de rolagem da página caso necessário e encontre a opção:</p>
<pre>Registros personalizados</pre>
<p>Ao clicar na opção acima, o campo irá se expandir. Clique então no link que irá aparecer:</p>
<pre>Gerenciar registros personalizados</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-789" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-dns.png" alt="Google Domains - Página de DNS do domínio" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-dns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-dns-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-788" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-gerenciar-registros-personalizados.png" alt="Google Domains - clicar em gerenciar registros personalizados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-gerenciar-registros-personalizados.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-gerenciar-registros-personalizados-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8</h3>
<p>Agora você está com as opções de inserir os registros DNS manualmente para seu domínio.<br />
Neste exemplo, vamos configurar o domínio viniciuspaes.com com o endereço IPv4 157.230.208.13<br />
Então, criamos uma entrada DNS do TIPO <strong>A</strong>, em que o campo nome do host podemos deixar em branco, pois será automaticamente preenchido pelo nome do domínio. E no campo dados, inserimos o endereço IP de exemplo.<br />
Será necessário também criar uma entrada DNS do TIPO <strong>CNAME</strong> para realizar um endereço canônico de todos os subdomínios para o domínio principal. Então no nome do host vamos preencher com <strong>*</strong> que também é conhecido como Wild Card (o Registro.BR não permite essa opção). No campo de dados vamos preencher com o nome do domínio seguido de ponto final, no meu exemplo fica: viniciuspaes.com.<br />
Em ambas entradas vamos deixar a opção padrão de TTL (time to live) de 1800 segundos (30 minutos).<br />
Ao finalizar a criação dos registros, clique em:</p>
<pre>SALVAR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-790" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-definir-entradas-dns.png" alt="Google Domains - definir entradas DNS" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-definir-entradas-dns.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-definir-entradas-dns-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9</h3>
<p>Você então voltará para a página de DNS do seu domínio e poderá verificar os registros personalizados criados. Agora é só esperar a propagação das mudanças do DNS e seu domínio estará sendo direcionado para o IP do servidor escolhido.<br />
É importante lembrar que é preciso também configurar seu servidor, para que ele esteja preparado para identificar requisições vindas deste domínio e direcionar internamente para as páginas do website que você deseja configurar. Temos um tutorial ensinando a configurar seu domínio em um servidor web.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-791" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-entradas-dns-configuradas.png" alt="Google Domains - entradas DNS personalizadas criadas com sucesso" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-entradas-dns-configuradas.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-entradas-dns-configuradas-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Considerações Finais para alteração do DNS de Domínio no Google Domains</h2>
<p>As alterações de DNS personalizadas são extremamente fáceis de serem realizadas pela interface do Google Domains. A propagação também é feita de forma bastante ágil. É uma das minhas plataformas preferidas para registro de domínio gTLD.</p>
<h2>Conclusões sobre processo de apontar DNS de um domínio para um servidor web</h2>
<p>As entradas DNS necessárias para o funcionamento básico de um website são bem simples. A maior dificuldade é navegar pelas interfaces das plataformas para a configuração. Neste ponto, o Google Domains tem usabilidade muito superior ao Registro.BR, além de desempenho superior na propagação do DNS.<br />
Mas como cada plataforma de registro possui sua restrição de registro de nome de domínio (extensão), caso precise registrar um domínio .br, é necessário utilizar o Registro.BR. Para a maioria das demais extensões de domínio, o Google Domains é uma ótima plataforma para registrar e configurar o DNS.</p>
<p>Lembrando novamente, caso tenha um servidor dedicado e deseja utilizar este domínio no seu servidor. É preciso também configurar seu servidor com um arquivo de configuração, definindo que este novo domínio irá acessar as páginas web que estão em um diretório pré definido, etc. Temos um tutorial passo a passo também explicando este processo de configurar um novo domínio em um servidor web configurado com linux na distribuição ubuntu.</p>
<p>&nbsp;</p>
<p>Caso tenha uma dúvida ou sugestão, diga aí nos comentários!</p>
<p>O post <a href="https://viniciuspaes.com/website/tutorial-apontar-dns-dominio-para-servidor-registrobr-google-domains/">Tutorial apontar DNS de domínio para servidor: Registro.BR e Google Domains</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/website/tutorial-apontar-dns-dominio-para-servidor-registrobr-google-domains/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial como registrar um domínio na internet: Registro.BR e Google Domains</title>
		<link>https://viniciuspaes.com/website/tutorial-como-registrar-dominio-internet-registrobr-google-domains/</link>
					<comments>https://viniciuspaes.com/website/tutorial-como-registrar-dominio-internet-registrobr-google-domains/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Fri, 13 Jan 2023 14:53:03 +0000</pubDate>
				<category><![CDATA[website]]></category>
		<category><![CDATA[domínio]]></category>
		<category><![CDATA[Google Domains]]></category>
		<category><![CDATA[Registro.br]]></category>
		<category><![CDATA[Website]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=730</guid>

					<description><![CDATA[<p>Passo a passo ensinando a registrar um nome de domínio no Registro.br e no Google Domains</p>
<p>O post <a href="https://viniciuspaes.com/website/tutorial-como-registrar-dominio-internet-registrobr-google-domains/">Tutorial como registrar um domínio na internet: Registro.BR e Google Domains</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Entender o que é um domínio de internet</li>
<li>Conhecer 2 dos principais órgãos/empresas de registro de domínio</li>
<li>Passo a passo para realizar o registro de um domínio tanto no Registro.BR, tanto no Google Domains</li>
</ul>
<h2>O que é um nome de domínio de um site?</h2>
<p>Para entender o que é um <strong>domínio</strong>, é interessante entender como funciona o acesso a um website. Usualmente um website está hospedado em um servidor de páginas, ou servidor http (web). Este servidor, por sua vez, possui um endereço IP. Uma forma então de acessar um website, seria digitando o endereço IP no navegador. Porém, não é algo intuitivo anotar um endereço de IP, ele pode ser extenso e difícil de lembrar.<br />
Uma alternativa então é associar um nome a um endereço IP. Então podemos registrar este nome, ou <strong>nome de domínio</strong>, e apontar este nome para um servidor (IP do servidor). O servidor então configurado, entende que aquele domínio é correspondente ao website que o usuário deseja acessar. Simplifica também a possibilidade de hospedar diversos websites no mesmo servidor, de forma organizada.</p>
<h2>Quais as principais empresas em que posso registrar um domínio de um website?</h2>
<p>Existem diversas empresas que prestam o serviço para registro de domínio. No Brasil, a principal é o Registro.br e a única autorizada a registrar domínios .br. Neste tutorial, vamos abordar também o google domínios (<strong>google domains</strong>). O Google Domains permite o registro de diversas extensões de domínios, com interface simples e intuitiva. Outra vantagem, caso já tenha uma conta no google, como a do gmail por exemplo, não é necessário criar um novo login. É possível também usar sua wallet (carteira) do google para realizar os pagamentos. Mas vale ressaltar que existem outras empresas que fornecem o serviço de registro de domínios, e oferecem serviços adicionais no “pacote” com preços interessantes.<br />
O registro do domínio geralmente é feito por 1 ano, podendo ser renovado a cada ano seguinte. É possível também, pelo <strong>Registro.br</strong>, já realizar pagamento por períodos superiores a 1 ano, com desconto.</p>
<h2>Requisitos para seguir o tutorial</h2>
<p>Este tutorial não tem nenhum pré-requisito, mas é interessante que você tenha um propósito para o <strong>registro do domínio</strong>. Ou que vá utilizá-lo em seu website, ou pretende registrar para “guardar” o nome de domínio para uma utilização futura.<br />
Temos mais 2 outros tutoriais ensinando a configurar o DNS do seu <strong>novo domínio</strong> criado e também ensinando a como configurar o seu novo domínio em seu servidor de páginas.</p>
<h2>Tutorial passo a passo para registrar um domínio na internet</h2>
<h2>Registrando um domínio pelo Registro.br</h2>
<p>Pelo Registro.br é possível <strong>registrar domínios</strong> com a extensão .br., alguns exemplos:<br />
.com.br, .net.br, .dev.br, .ong.br, .app.br, …<br />
É possível utilizar outras empresas que farão a intermediação do registro, pelo <strong>Registro.br</strong>. Por exemplo o UOLHOST, hostgator, etc. Eles oferecem algumas vantagens, como desconto no registro do domínio se assinar o plano de hospedagem por 1 ano, etc. Particularmente não gosto de terceirizar o registro, prefiro realizar todo o processo diretamente no site do Registro.br. Mas, se para você for vantagem, é uma opção a ser considerada.</p>
<h3>Passo 1</h3>
<p>O primeiro passo é acessar a página do registro.br, acessando o endereço:</p>
<pre>https://registro.br/</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-732" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-pagina-inicial.png" alt="Página inicial Registro.BR" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-pagina-inicial.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-pagina-inicial-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2</h3>
<p>Caso já tenha credenciais de login no site do registro.br, faça o login, clicando em:</p>
<pre>ACESSAR CONTA</pre>
<p>Caso ainda não tenha, é necessário criar uma conta no site, então clique em:</p>
<pre>REGISTRE</pre>
<p>É recomendado utilizar autenticação em 2 fatores no seu login do Registro.BR, para manter sua conta e domínios seguros, mas lembre-se de anotar os códigos de recuperação, caso perca o celular, formate o mesmo ou qualquer outra desventura. É MUITO IMPORTANTE ANOTAR ESTES CÓDIGOS E MANTER EM LOCAL SEGURO.</p>
<h3>Passo 3</h3>
<p>Após realizar o login no site, volte para a página inicial, para poder realizar o processo de <strong>busca de um domínio para registro</strong>.</p>
<h3>Passo 4</h3>
<p>Na página inicial, então, digite o <strong>nome de domínio</strong> que gostaria de registrar e realize a busca. Neste exemplo, vou buscar a disponibilidade de registro do site viniciuspaes.com.br</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-734" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-pagina-inicial-pesquisar-dominio-para-registro-ja-logado.png" alt="Após login, busque por um nome de domínio" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-pagina-inicial-pesquisar-dominio-para-registro-ja-logado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-pagina-inicial-pesquisar-dominio-para-registro-ja-logado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>O resultado da busca mostra que o domínio está disponível, e mostra as opções de pagamento por período. Caso tenha interesse em registrar o domínio, clique em:</p>
<pre>REGISTRAR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-735" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-pagina-inicial-pesquisar-dominio-disponivel-registro-ja-logado.png" alt="Domínio disponível para registro no registro.br" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-pagina-inicial-pesquisar-dominio-disponivel-registro-ja-logado.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-pagina-inicial-pesquisar-dominio-disponivel-registro-ja-logado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6</h3>
<p>Neste passo, é necessário informar o CPF ou o CNPJ responsável pelo registro. Você pode optar por <strong>registrar o domínio</strong> como pessoa física, ou caso tenha uma empresa, e tem o desejo de registrar no nome da empresa, também é possível, inserindo o CNPJ.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-736" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-cpf-ou-cnpj.png" alt="Registrar um domínio no Registro.BR, selecionar cpf ou cnpj" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-cpf-ou-cnpj.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-cpf-ou-cnpj-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7</h3>
<p>Nesta etapa é necessário informar os dados do administrador da conta (seus dados pessoais).</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-737" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-dados-admin-conta.png" alt="Registro.BR - dados administrador da conta" width="768" height="1071" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-dados-admin-conta.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-dados-admin-conta-215x300.png 215w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-dados-admin-conta-734x1024.png 734w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8</h3>
<p>Agora é necessário inserir os dados do titular do domínio, caso o titular seja diferente do administrador da conta. Ou seja, caso você esteja <strong>registrando um domínio</strong> para alguém, utilizando sua conta. No meu caso, os dados do titular e administrador serão os mesmos, pois estou registrando o domínio para mim mesmo.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-738" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-dados-titular-dominio.png" alt="Registro.br - dados titular de domínio" width="768" height="1071" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-dados-titular-dominio.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-dados-titular-dominio-215x300.png 215w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-dados-titular-dominio-734x1024.png 734w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9</h3>
<p>Esta etapa é <strong>opcional</strong> no momento do registro, que é a opção de definir os servidores DNS responsáveis pelo domínio. Após o registro é possível alterar estes dados, então não se preocupe com eles neste momento. Mas caso já tenha um servidor em uma empresa de hospedagem (tipo Amazon AWS, Vultr ou Digital Ocean) é possível já inserir os servidores de nome para adiantar o processo. Caso não tenha ou não saiba o Name Server da empresa de hospedagem, deixe os campos em branco.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-739" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-dados-dns-dominio.png" alt="Registro.br - etapa opcional de registro de domínio - selecionar NS DNS" width="768" height="1071" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-dados-dns-dominio.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-dados-dns-dominio-215x300.png 215w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-dados-dns-dominio-734x1024.png 734w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 10</h3>
<p>Necessário então verificar os termos e condições do registro, juntamente com o contrato. Caso concorde com os termos, marque a caixa de seleção. E clique em:</p>
<pre>REGISTRAR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-740" src="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-termos-condicoes.png" alt="Registro.BR - aceitar ou não os termos e condicoes de registro de domínio" width="768" height="1071" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-termos-condicoes.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-termos-condicoes-215x300.png 215w, https://viniciuspaes.com/wp-content/uploads/2023/01/registro-br-registrar-dominio-termos-condicoes-734x1024.png 734w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 11</h3>
<p>Nesta última etapa, será necessário informar a forma de pagamento e o período que deseja para o registro. Lembrando que há descontos para períodos maiores. Não se preocupe em escolher o período mínimo de 1 ano, pois você poderá renovar o domínio a cada ano, o Registro.BR envia avisos para você realizar as renovações e manter o domínio.</p>
<h2>Considerações Finais para Registro de Domínio no Registro.BR</h2>
<p>Como vimos, o passo a passo é bem simples para realizar o registro do domínio web. Ao finalizar o processo de pagamento, você receberá um email com a confirmação do registro na caixa de email do seu login do site.</p>
<h2>Registrando um domínio pelo Google Domains (ou google domínios)</h2>
<p>O Google Domains é uma excelente plataforma para registrar domínios em geral. Infelizmente não permite registro de extensões .br, porém, para as diversas outras extensões é uma das melhores formas de <strong>registrar um domínio</strong>. Lembrando que há diversas outras empresas que oferecem o mesmo serviço e até muitas vezes com preços mais competitivos, mas no geral, o Google Domains é uma forma muito prática para registro. Um exemplo de algumas extensões de domínio disponíveis pelo Google domains: .com, .org, .net, .dev, .app, .info, .co, .me, &#8230;</p>
<h3>Passo 1</h3>
<p>A primeira etapa para o <strong>registro de domínio</strong> no google domains é acessar o site da empresa:</p>
<pre>https://domains.google.com/</pre>
<h3>Passo 2</h3>
<p>Agora é necessário realizar o login com sua conta do Google (pode ser a mesma do seu gmail). Na página do google domains, você pode acessar o menu lateral e mesmo sem estar com login realizado, clicar em:</p>
<pre>Meus domínios</pre>
<p>Agora no canto superior direito da página, clique em:</p>
<pre>Fazer Login</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-746" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-inicial.png" alt="Google Domains - página inicial" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-inicial.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-inicial-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-747" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-inicial-menu.png" alt="Google Domains - menu lateral - meus domínios" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-inicial-menu.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-pagina-inicial-menu-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-748" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-fazer-login.png" alt="Google Domains - fazer login" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-fazer-login.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-fazer-login-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3</h3>
<p>Insira seu endereço de email da sua conta do Google.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-749" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-login.png" alt="Google domains - inserir email de login" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-login.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-login-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4</h3>
<p>Digite a sua senha da sua conta do Google.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-750" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-senha.png" alt="Google Domains - inserir senha de login" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-senha.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-senha-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>Com login realizado, você pode acessar novamente o menu lateral esquerdo, e selecionar:</p>
<pre>Achar um novo domínio</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-751" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-logado-achar-novo-dominio.png" alt="Google Domains - menu achar novo domínios" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-logado-achar-novo-dominio.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-logado-achar-novo-dominio-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-752" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-logado-pesquisar-novo-dominio.png" alt="Google domains - campo para busca de novo domínio" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-logado-pesquisar-novo-dominio.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-logado-pesquisar-novo-dominio-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6</h3>
<p>Vamos então digitar o <strong>nome de domínio</strong> que gostaria de registrar e realizar a busca. Neste exemplo vou buscar por viniciuspaes.net.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-753" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-logado-pesquisar-novo-dominio-viniciuspaes.png" alt="Google Domains - busca por nome de domínio" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-logado-pesquisar-novo-dominio-viniciuspaes.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-logado-pesquisar-novo-dominio-viniciuspaes-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7</h3>
<p>O resultado da busca mostra que o domínio está disponível e mostra também o preço anual de <strong>registro do domínio</strong>, neste exemplo, a extensão .net tem o custo de R$50 ao ano. Cada extensão de domínio pode apresentar um valor distinto, lembre-se disso.<br />
Mas fique atento! Caso o domínio que você está buscando não esteja disponível, o google vai te mostrar opções similares, então é importante ver se o domínio buscado está realmente disponível.<br />
Caso tenha interesse no <strong>registro do domínio</strong>, basta clicar no ícone do carrinho de compras (o ícone que possui um símbolo de +).</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-754" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-logado-resultado-pesquisa-novo-dominio.png" alt="Google Domains - resultado busca de domínio" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-logado-resultado-pesquisa-novo-dominio.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-logado-resultado-pesquisa-novo-dominio-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8</h3>
<p>O domínio buscado estará então no seu carrinho de compras. Clique agora no outro ícone do carrinho de compras, este que fica no alto da página, no canto superior direito.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-755" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-dominio-no-carrinho-de-compras.png" alt="Google Domains - domínio no carrinho de compras" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-dominio-no-carrinho-de-compras.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-dominio-no-carrinho-de-compras-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9</h3>
<p>Dentro do seu carrinho, agora é possível revisar os dados do domínio, o tempo que deseja realizar o registro, etc.<br />
É interessante ligar a proteção de privacidade, seus dados pessoais não ficam disponíveis caso alguém faça uma busca de WHOIS no seu domínio.<br />
Costumo marcar também a renovação automática, para todo ano ser cobrado de forma automática.<br />
Não costumo assinar o google workspace para ter opção de email junto ao domínio, prefiro utilizar a opção de encaminhar todos os emails enviados a este domínio para meu email pessoal do gmail. Mas se tiver o desejo, fique atento que o custo do google workspace é mensal!<br />
Caso esteja tudo certo, clique então em:</p>
<pre>Finalizar compra</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-756" src="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-finalizar-compra-dominio.png" alt="Google Domains - resumo do pedido de registro de novo domínio" width="768" height="1080" srcset="https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-finalizar-compra-dominio.png 768w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-finalizar-compra-dominio-213x300.png 213w, https://viniciuspaes.com/wp-content/uploads/2023/01/google-domains-finalizar-compra-dominio-728x1024.png 728w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Considerações Finais para Registro de Domínio no Google Domains</h2>
<p>Processo de registro extremamente fácil e rápido. O google domains oferece uma gama de extensões de domínio em sua plataforma (conhecidos também como gTLD). A grande vantagem é utilizar a sua própria conta do google, não sendo necessário um novo registro em outra plataforma. O google domains também oferece opções de configuração do seu DNS, encaminhamento de email, etc. É uma das minhas opções preferidas para registro.</p>
<h2>Conclusões sobre processo de registro de domínio de website</h2>
<p>Como vimos, o processo de registro é bem simples, tanto no Registro.BR, quanto no Google Domains. Só ficar atento quando é necessário uma extensão de domínio .BR é necessário utilizar o Registro.br e no geral, as demais extensões estão disponíveis pelo Google Domains.<br />
Mas atenção, este passo é só para registrar o domínio. É necessário outros 2 passos para que o nome de domínio fique disponível/funcional no seu servidor/website:</p>
<ol>
<li>Configurar o DNS do seu domínio, para apontar ele para seu servidor ou serviço de hospedagem.</li>
<li>Configurar o seu servidor ou serviço de hospedagem para que o mesmo entenda que aquele domínio está sendo direcionado para ele.</li>
</ol>
<p>Confira os demais tutoriais passo a passo disponíveis no site, para entender como configurar as demais etapas necessárias.<br />
Ficou com alguma dúvida em alguma parte do processo de registro de domínio? Basta escrever aí nos comentários, que farei o possível para ajudar!</p>
<p>O post <a href="https://viniciuspaes.com/website/tutorial-como-registrar-dominio-internet-registrobr-google-domains/">Tutorial como registrar um domínio na internet: Registro.BR e Google Domains</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/website/tutorial-como-registrar-dominio-internet-registrobr-google-domains/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial configurar WordPress para enviar email pelo GMAIL</title>
		<link>https://viniciuspaes.com/wordpress/tutorial-configurar-wordpress-para-enviar-email-pelo-gmail/</link>
					<comments>https://viniciuspaes.com/wordpress/tutorial-configurar-wordpress-para-enviar-email-pelo-gmail/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Thu, 08 Dec 2022 22:09:22 +0000</pubDate>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[email autenticado]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[WP MAIL SMTP]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=663</guid>

					<description><![CDATA[<p>Confira este tutorial passo a passo ensinando a configurar o envio de email autenticado do Wordpress pelo GMAIL.</p>
<p>O post <a href="https://viniciuspaes.com/wordpress/tutorial-configurar-wordpress-para-enviar-email-pelo-gmail/">Tutorial configurar WordPress para enviar email pelo GMAIL</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Saber o que é o WordPress</li>
<li>Verificar os requisitos para seguir o tutorial</li>
<li>Passo a passo para configurar envio de email autenticado no WordPress com o Gmail API e Google Cloud Platform</li>
</ul>
<p>Existe uma maneira mais simples sem utilizar o plugin WP MAIL SMTP, confira:</p>
<ul>
<li><span style="color: #3366ff;"><strong><a style="color: #3366ff;" href="https://viniciuspaes.com/wordpress/tutorial-configurar-wordpress-enviar-email-smtp/">Forma simples de enviar email autenticado pelo gmail ou outro provedor de email</a></strong></span></li>
</ul>
<h2>O que é o WordPress?</h2>
<p>O wordpress é o gerenciador de conteúdo mais famoso e utilizado da atualidade. Conta com mais de 40% da fatia de mercado de todos os sites da internet. Ou seja, mais de 40% de todos os sites da internet utilizam o wordpress como forma de gerenciar o conteúdo.<br />
O wordpress garante grande facilidade para inserção de conteúdo em websites, mesmo para os responsáveis que não possuem conhecimento técnico em programação e desenvolvimento web.</p>
<h2>Requisitos para seguir o tutorial</h2>
<p>Para seguir este tutorial é necessário que você tenha um website com o wordpress instalado e configurado. É necessário também que você possa instalar plugins no seu wordpress, pois vamos precisar instalar o plugin WP MAIL SMTP.</p>
<h2>Tutorial passo a passo para configurar envio de email autenticado pelo wordpress através do plugin WP MAIL SMTP e pelo GMAIL</h2>
<h3>Passo 1</h3>
<p>O primeiro passo é realizar login na interface administrativa do wordpress. No caso deste exemplo, vamos acessar nosso site pelo IP do nosso servidor (192.168.1.104), pois não temos domínio configurado. O site se chama site1 e está dentro da pasta site1. Desta forma, o caminho deste exemplo para acessar a interface administrativa é:</p>
<pre>http://192.168.1.104/site1/wp-admin</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-667" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-login.png" alt="Login interface administrativa do wordpress" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-login.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-login-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2</h3>
<p>Após o login, no menu lateral direito, clique em:</p>
<pre>Plugins</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-668" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-painel.png" alt="Área administrativa do wordpress, foco no menu lateral: plugins" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-painel.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-painel-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3</h3>
<p>Dentro da página de plugins, clique no botão:</p>
<pre>Adicionar novo</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-669" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-pagina-plugins.png" alt="Página de plugins do wordpress, foco em adicionar novo plugin" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-pagina-plugins.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-pagina-plugins-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4</h3>
<p>Na página de instalação de plugins, procure pela search box.<br />
Agora busque por:</p>
<pre>WP MAIL SMTP</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-670" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-instalar-plugins.png" alt="Página de adicionar plugins do wordpres, foco em buscar novo plugin" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-instalar-plugins.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-instalar-plugins-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-671" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-buscar-wp-mail-smtp-plugin.png" alt="Página de busca de plugins do wordpress, buscando por wp mail smtp" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-buscar-wp-mail-smtp-plugin.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-buscar-wp-mail-smtp-plugin-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>Agora o plugin deve aparecer logo abaixo da search box. Clique em:</p>
<pre>Instalar agora</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-672" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-instalar-wp-mail-smtp-plugin.png" alt="Instalar plugin wp mail smtp no wordpress" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-instalar-wp-mail-smtp-plugin.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-instalar-wp-mail-smtp-plugin-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6</h3>
<p>Agora acesse novamente a página de plugins, utilizando o link pelo menu lateral.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-668" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-painel.png" alt="Área administrativa do wordpress, foco no menu lateral: plugins" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-painel.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-painel-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7</h3>
<p>Nesta etapa vamos ativar o plugin. Encontre o plugin WP MAIL SMTP e clique em:</p>
<pre>ATIVAR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-673" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-ativar-plugin-wp-mail-smtp.png" alt="Página de plugins do wordpress, foco na opção de ativar o plugin" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-ativar-plugin-wp-mail-smtp.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-ativar-plugin-wp-mail-smtp-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8</h3>
<p>Você será então direcionado para a página de instalação do plugin.<br />
Nesta primeira página, clique em:</p>
<pre>Vamos começar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-674" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar.png" alt="Página de instalação do wp mail smtp no wordpress" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9</h3>
<p>Nesta etapa o plugin te dará diversas opções para o envio de email. Neste tutorial vamos abordar o envio de email pelo Gmail. Então selecione:</p>
<pre>Google / Gmail</pre>
<p>Agora continue para a próxima página.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-675" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail.png" alt="Página de instalação do wp mail smtp - escolhendo forma de envio de emails" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 10</h3>
<p>O plugin agora informa as limitações de se utilizar do gmail. Clique em:</p>
<pre>Entendo, continuar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-676" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-continuar.png" alt="Página de instalação do wp mail smtp - confirmar uso do gmail" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-continuar.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-continuar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 11</h3>
<p>Nesta tela, o plugin precisa que informe seu ID de cliente e senha. Mas o que isto significa? Bom, é preciso primeiro entrar na interface do Google Cloud Platform, utilizando seu próprio login do gmail. Depois você precisa criar um “aplicativo” que será responsável por gerenciar o envio de email por terceiros. Ou seja, você precisa criar um aplicativo com a API do Gmail para que seu wordpress se conecte nele, e consiga enviar os emails. Então por enquanto, deixe esta aba aberta, pois vamos primeiro criar o aplicativo no cloud platform para poder ter um ID e senha de acesso.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-677" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-setup-id-segredo.png" alt="Página de instalação do wp mail smtp - página para inserir id e senha" width="768" height="1068" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-setup-id-segredo.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-setup-id-segredo-216x300.png 216w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-setup-id-segredo-736x1024.png 736w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Criando Projeto e Aplicativo no Google Cloud Platform para gerenciar envio de emails do WordPress pela Gmail API</h2>
<h3>Passo 12</h3>
<p>Agora em outra aba, faça login no Google Cloud Platform (pode utilizar seu próprio login e senha do gmail).</p>
<pre>https://console.cloud.google.com/home/dashboard</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-678" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform.png" alt="Realizar login no google cloud platform" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 13</h3>
<p>Se for seu primeiro acesso, talvez o Google Cloud Platform pergunte seu país de origem, idioma e mais algumas informações.</p>
<h3>Passo 14</h3>
<p>Ao lado do logo do Google Cloud Platform, tem uma select box para selecionar um projeto. Caso não tenha nenhum projeto criado no Google Cloud Platform, clique em:</p>
<pre>Selecione um projeto</pre>
<p>Em seguida, um modal vai abrir, no canto superior direito deste modal, terá uma opção para criação de novos projetos, então clique em:</p>
<pre>NOVO PROJETO</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-680" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-dashboard.png" alt="Dashboard do Google Cloud Platform - foco em selecionar projetos" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-dashboard.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-dashboard-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-679" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-dashboard-novo-projeto.png" alt="Dashboard do Google Cloud Platform - foco em criar novo projeto" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-dashboard-novo-projeto.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-dashboard-novo-projeto-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 15</h3>
<p>Nesta etapa, temos que inserir os dados do novo projeto, neste exemplo escolhi o seguinte nome para o projeto:</p>
<pre>WordPress-send-email</pre>
<p>Estou na minha conta do gmail pessoal, então não tenho nenhum “Local” configurado, desta forma minha única opção foi:</p>
<pre>Sem organização</pre>
<p>Após inserir os dados acima, clique em:</p>
<pre>Criar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-681" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-dashboard-criar-projeto.png" alt="Google Cloud Platform - criar novo projeto - selecionar nome e local" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-dashboard-criar-projeto.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-dashboard-criar-projeto-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 16</h3>
<p>Após criar o projeto, você será direcionado para a página principal do Google Cloud Platform, conhecida também como dashboard. Nesta tela deve aparecer notificação que seu novo projeto foi criado. No select box do lado do ícone do Google Cloud platform, deve aparecer também o nome do seu novo projeto criado.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-682" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-dashboard-projeto-criado.png" alt="Google Cloud Platform - novo projeto criado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-dashboard-projeto-criado.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-dashboard-projeto-criado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 17</h3>
<p>Agora precisamos acessar o menu lateral esquerdo do Google Cloud Platform. Selecionar a opção:</p>
<pre>APIs e serviços</pre>
<p>Em seguida, selecione:</p>
<pre>Biblioteca</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-683" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-menu-api-biblioteca.png" alt="Google Cloud Platform - menu lateral - APIs e serviços - Biblioteca" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-menu-api-biblioteca.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-menu-api-biblioteca-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 18</h3>
<p>Na página de biblioteca de APIs precisamos buscar pela API do Gmail. Então dentro do campo de busca, digite:</p>
<pre>gmail</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-685" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api.png" alt="Google Cloud Platform - biblioteca de API" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-684" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api-buscar-gmail.png" alt="Google Cloud Platform - biblioteca de API - busca por gmail" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api-buscar-gmail.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api-buscar-gmail-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 19</h3>
<p>Na página de resultado das buscas, selecione:</p>
<pre>Gmail API</pre>
<p>Na tela seguinte, clique em:</p>
<pre>ATIVAR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-687" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api-gmail-buscada.png" alt="Google Cloud Platform - biblioteca de API - pagina de resultado de busca - Gmail API" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api-gmail-buscada.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api-gmail-buscada-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-686" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api-gmail-ativar.png" alt="Google Cloud Platform - biblioteca de API - pagina de resultado de busca - Gmail API - ativar API" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api-gmail-ativar.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api-gmail-ativar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 20</h3>
<p>Após ativar a API do GMAIL, na tela seguinte irá aparecer um aviso que talvez você precise criar credenciais para utilizar a API. Então, clique em:</p>
<pre>Criar credenciais</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-689" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api-gmail-ativada-criar-credenciais.png" alt="Google Cloud Platform - API Gmail criada - criar credenciais" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api-gmail-ativada-criar-credenciais.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-biblioteca-api-gmail-ativada-criar-credenciais-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 21</h3>
<p>Cuidado nesta etapa, <strong>não</strong> clique em CONCLUIR.<br />
Selecione a API:</p>
<pre>GMAIL API</pre>
<p>E selecione que você usará:</p>
<pre>Dados do usuário</pre>
<p>Após preencher os dados acima, clique em:</p>
<pre>PRÓXIMA</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-690" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-api.png" alt="Google Cloud Platform - criar credencial gmail api" width="768" height="885" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-api.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-api-260x300.png 260w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 22</h3>
<p>Agora vamos definir o nome para o aplicativo. Neste exemplo vamos utilizar um nome parecido com o nome do projeto:</p>
<pre>WordPress-send-email-app</pre>
<p>Agora precisamos inserir um email de suporte ao usuário:</p>
<pre>(pode ser o mesmo email da sua conta do gmail)</pre>
<p>Não é obrigatório ter um logotipo do aplicativo, pode deixar esta etapa em branco.<br />
Precisamos inserir um email de contato do desenvolvedor:</p>
<pre>(pode ser o mesmo email da sua conta do gmail)</pre>
<p>Após preencher os dados acima, clique em:</p>
<pre>SALVAR E CONTINUAR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-691" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-oauth.png" alt="Google Cloud Platform - tela de permissão oauth" width="768" height="885" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-oauth.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-oauth-260x300.png 260w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 23</h3>
<p>Não precisamos definir escopos. Clique em:</p>
<pre>SALVAR E CONTINUAR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-692" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-escopos.png" alt="Google Cloud Platform - definir escopos" width="768" height="885" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-escopos.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-escopos-260x300.png 260w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 24</h3>
<p>Na etapa do ID do cliente de OAUTH precisamos definir o tipo do aplicativo, seu nome e sua URI de redirecionamento autorizado.<br />
O tipo de aplicativo será:</p>
<pre>Aplicativo da Web</pre>
<p>O nome do cliente oauth você pode escolher o que achar melhor, neste exemplo vamos manter o nome padrão:</p>
<pre>Cliente Web 1</pre>
<p>Agora em URI de redirecionamento autorizado precisamos clicar no botão:</p>
<pre>ADICIONAR URI</pre>
<p>No campo de URI1 que apareceu, insira a url:</p>
<pre>https://connect.wpmailsmtp.com/google/</pre>
<p>Para finalizar este passo, clique em:</p>
<pre>CRIAR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-694" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-oauth-id.png" alt="Google Cloud Platform - id cliente oauth dados" width="768" height="885" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-oauth-id.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-oauth-id-260x300.png 260w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-693" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-oauth-uri-redir.png" alt="Google Cloud Platform - id do cliente oauth" width="768" height="885" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-oauth-uri-redir.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-oauth-uri-redir-260x300.png 260w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 25</h3>
<p>Temos a opção agora de copiar a credencial de ID e realizar o download do arquivo JSON que é composto do ID e senha. Não se preocupe em copiar neste momento, nos próximos passos vamos ensinar aonde buscar estes dados. Clique então em:</p>
<pre>CONCLUIR</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-695" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-download.png" alt="Google Cloud Platform - opcao download json credenciais e copiar ID" width="768" height="885" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-download.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-criar-credencial-download-260x300.png 260w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 26</h3>
<p>Agora acesse o menu lateral novamente. Clique em:</p>
<pre>APIs e serviços</pre>
<p>Agora escolha:</p>
<pre>Tela de permissão OAUTH</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-696" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform-menu-api-tela-oauth.png" alt="Google Cloud Platform - menu APIs e serviços - tela de permissão oauth" width="768" height="885" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform-menu-api-tela-oauth.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform-menu-api-tela-oauth-260x300.png 260w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 27</h3>
<p>Nesta etapa temos que publicar nosso aplicativo, mudando de teste para produção. E garantir que sua visibilidade seja <strong>EXTERNA </strong>. Neste exemplo, a visibilidade apareceu EXTERNA por padrão, mas caso o seu não apareça, lembre-se de mudá-la. Clique então em:</p>
<pre>PUBLICAR APLICATIVO</pre>
<p>Um modal será aberto para que você confirme a publicação. Clique em:</p>
<pre>CONFIRMAR</pre>
<p>Agora seu aplicativo vai aparecer como publicado e visibilidade externa.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-697" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-publicar-app.png" alt="Google Cloud Platform - tela de permissão OAUTH - publicar app" width="768" height="885" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-publicar-app.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-publicar-app-260x300.png 260w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-698" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-enviar-producao.png" alt="Google Cloud Platform - tela de permissão OAUTH - enviar para produção" width="768" height="885" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-enviar-producao.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-enviar-producao-260x300.png 260w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-699" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-app-publicado-externo.png" alt="Google Cloud Platform - tela de permissão OAUTH - app publicado em produção" width="768" height="885" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-app-publicado-externo.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-google-cloud-console-app-publicado-externo-260x300.png 260w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 28</h3>
<p>Agora vamos rever as credenciais para serem inseridas no wordpress. Vamos novamente acessar o menu lateral do Google cloud Platform. Selecione:</p>
<pre>APIs e serviços</pre>
<p>Agora escolha:</p>
<pre>Credenciais</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-700" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform-menu-api-credenciais.png" alt="Google Cloud Platform - menu APIs e serviços - credenciais" width="768" height="885" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform-menu-api-credenciais.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform-menu-api-credenciais-260x300.png 260w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 29</h3>
<p>Nesta tela, localize o nome do cliente OAUTH criado, no caso do nosso exemplo, o Cliente Web 1. Agora clique em:</p>
<pre>ícone do lápis (editar)</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-701" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform-ver-id-senha-credenciais.png" alt="Google Cloud Platform - pagina de credenciais" width="768" height="885" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform-ver-id-senha-credenciais.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform-ver-id-senha-credenciais-260x300.png 260w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 30</h3>
<p>Agora você está na página de credenciais do aplicativo criado no Google Cloud Platform. Copie os dados do <strong>ID do cliente</strong> e da <strong>Chave secreta do cliente</strong>.</p>
<h2>Finalizando configuração do Plugin WP MAIL SMTP</h2>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-702" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform-copiar-id-senha-credenciais.png" alt="Google Cloud Platform - pagina credenciais - ver credenciais" width="768" height="885" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform-copiar-id-senha-credenciais.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-wp-mail-smtp-login-conta-google-cloud-platform-copiar-id-senha-credenciais-260x300.png 260w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 31</h3>
<p>Volte agora para a aba de instalação do WP MAIl SMTP que deixamos aberta. Cole a ID do cliente e a Chave secreta do cliente do passo anterior na tela de configuração do plugin.<br />
Agora clique no botão:</p>
<pre>Conecte-se a Google</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-719" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-inserir-id-segredo.png" alt="Wordpress - WP MAIL SMTP - id e senha colados, agora é vincular gmail ao plugin" width="768" height="1068" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-inserir-id-segredo.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-inserir-id-segredo-216x300.png 216w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-inserir-id-segredo-736x1024.png 736w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 32</h3>
<p>Você será direcionado a uma página de login do Google. Realize o login, para iniciar o processo de vincular o WP MAIL SMTP a seu aplicativo do Google Cloud Platform.<br />
Após o login o Google irá mostrar uma advertência que não verificou o APP. Clique em:</p>
<pre>Avançado</pre>
<p>Agora clique na opção que apareceu:</p>
<pre>Acessar wpmailsmtp.com</pre>
<p>Em seguida o google pede novamente para confirmar que o app é seguro, clique em:</p>
<pre>Continuar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-703" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google.png" alt="Wordpress - WP MAIL SMTP - vincular aplicatico ao plugin" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-704" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google-nao-verificou-app.png" alt="Wordpress - WP MAIL SMTP - vincular app ao plugin - google nao verificou esse app" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google-nao-verificou-app.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google-nao-verificou-app-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-705" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google-nao-verificou-app-avancado.png" alt="Wordpress - WP MAIL SMTP - vincular app ao plugin - google nao verificou esse app - avançado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google-nao-verificou-app-avancado.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google-nao-verificou-app-avancado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-706" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google-confirmar.png" alt="Wordpress - WP MAIL SMTP - vincular app ao plugin - confirmar app confiavel" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google-confirmar.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google-confirmar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 33</h3>
<p>Agora você voltou para o wordpress com o aviso que a autorização foi realizada com sucesso.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-707" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google-autorizado.png" alt="Wordpress - WP MAIL SMTP - gmail vinculado ao plugin com sucesso" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google-autorizado.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectando-google-autorizado-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 34</h3>
<p>Role a página para baixo, confirme o nome do Remetente. Neste exemplo deixamos como:</p>
<pre>Site 1</pre>
<p>Agora confirme o email do remetente, neste exemplo, utilizamos nosso email do Gmail. Clique em:</p>
<pre>Salvar e continuar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-708" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectado-salvar-continuar.png" alt="Wordpress - WP MAIL SMTP - gmail vinculado ao plugin - proxima etapa" width="768" height="1068" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectado-salvar-continuar.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectado-salvar-continuar-216x300.png 216w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-conectado-salvar-continuar-736x1024.png 736w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 35</h3>
<p>Neste passo, deixamos marcados as opções grátis do plugin e clicamos em:</p>
<pre>Salvar e continuar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-709" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-recursos-salvar-continuar.png" alt="Wordpress - WP MAIL SMTP - recursos" width="768" height="1068" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-recursos-salvar-continuar.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-recursos-salvar-continuar-216x300.png 216w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-recursos-salvar-continuar-736x1024.png 736w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 36</h3>
<p>Nesta etapa é opcional deixar marcado seu email para receber notificações. Você pode optar por pular ou cadastrar seu email. Neste exemplo utilizamos:</p>
<pre>Salvar e continuar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-710" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-email-salvar-continuar.png" alt="Wordpress - WP MAIL SMTP - receber notificações" width="768" height="1068" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-email-salvar-continuar.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-email-salvar-continuar-216x300.png 216w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-email-salvar-continuar-736x1024.png 736w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 37</h3>
<p>Estamos utilizando a versão gratuita do plugin, então vamos escolher:</p>
<pre>Pular esta etapa</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-711" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-chave-pular-esta-etapa.png" alt="Wordpress - WP MAIL SMTP - inserir chave pra quem comprou licença" width="768" height="1068" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-chave-pular-esta-etapa.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-chave-pular-esta-etapa-216x300.png 216w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-chave-pular-esta-etapa-736x1024.png 736w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 38</h3>
<p>Neste último passo de configuração do plugin, não precisamos instalar nenhum outro plugin oferecido, pode ir direto e clicar em:</p>
<pre>Concluir configuração</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-712" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-concluir-configuracao.png" alt="Wordpress - WP MAIL SMTP - finalizar instalação" width="768" height="1068" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-concluir-configuracao.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-concluir-configuracao-216x300.png 216w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configurar-smtp-gmail-concluir-configuracao-736x1024.png 736w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 39</h3>
<p>Um passo interessante é testar se o plugin está funcional. Para isso, vá até o menu lateral e selecione:</p>
<pre>WP MAIL SMTP</pre>
<p>Em seguida clique em:</p>
<pre>Configurações</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-713" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-menu-configuracoes.png" alt="Wordpress - WP MAIL SMTP - acessar menu de configurações" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-menu-configuracoes.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-menu-configuracoes-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 40</h3>
<p>Nesta página de configurações, acesse o menu superior e clique em:</p>
<pre>Email de teste</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-714" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configuracoes-email-teste.png" alt="Wordpress - WP MAIL SMTP - página de configurações - foco no email de teste" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configuracoes-email-teste.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-configuracoes-email-teste-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 41</h3>
<p>Na página de email de teste, selecione o e-mail destinatário e clique em:</p>
<pre>Enviar e-mail</pre>
<p>Se os passos foram executados corretamente, receberá uma informação que o email foi enviado corretamente.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-715" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-enviar-email-teste.png" alt="Wordpress - WP MAIL SMTP - enviar email de teste" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-enviar-email-teste.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-enviar-email-teste-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-716" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-email-teste-enviado-com-sucesso.png" alt="Wordpress - WP MAIL SMTP - email de teste enviado com sucesso" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-email-teste-enviado-com-sucesso.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-email-teste-enviado-com-sucesso-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 42</h3>
<p>Agora acesse sua caixa de email e verifique se recebeu o email corretamente. Caso positivo, o plugin foi instalado e configurado corretamente. Seu site wordpress agora envia e-mails autenticados pela sua caixa do Gmail.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-717" src="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-email-teste-recebido.png" alt="Gmail - email de teste recebido com sucesso" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-email-teste-recebido.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/wordpress-plugin-wp-mail-smtp-email-teste-recebido-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Considerações Finais</h2>
<p>É importante ressaltar que o Gmail tem um limite <strong>diário</strong> de envio de emails, que varia um pouco diante do tipo da sua conta, mas em uma conta pessoal, esse limite é de 500 destinatários <strong>por dia</strong> (exemplo: algo entre 500 emails para 1 destinatário, ou 1 email para 500 destinatários).<br />
Caso tenha uma demanda de envio de emails superior ao limite do Google, há possibilidade de contratar outros provedores para gerenciar o processo de envio de emails, o próprio plugin WP MAIL SMTP provê diversos serviços de integração. Agora, se deseja você mesmo gerenciar o processo de envio de emails, confira nosso tutorial para configurar um servidor de envio de emails autenticados com o sendmail.</p>
<h2>Conlusão</h2>
<p>Neste tutorial vimos um passo a passo de como configurar o envio de email do wordpress pelo Gmail. Mas o que isto significa? Bom, quando o WordPress quando precisa enviar um email, ele conecta na conta do gmail que foi conectada ao plugin WP MAIL SMTP, e envia o email como se fosse o usuário do gmail.<br />
A grande vantagem é ter um servidor de envio de emails confiável, no caso o Gmail do Google / Google Workspace (antigo G Suite). Sendo assim, as chances do email enviado pelo wordpress ser marcado como spam são minimizadas, garantindo maior confiabilidade no processo de envio e recebimento de emails.<br />
Espero que este tutorial passo a passo tenha te auxiliado no processo de envio de emails do seu site com wordpress. Caso tenha tido algum erro em qualquer etapa, basta informar nos comentários, que farei o possível para responder!</p>
<p>O post <a href="https://viniciuspaes.com/wordpress/tutorial-configurar-wordpress-para-enviar-email-pelo-gmail/">Tutorial configurar WordPress para enviar email pelo GMAIL</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/wordpress/tutorial-configurar-wordpress-para-enviar-email-pelo-gmail/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial setup Servidor Nível Gratuito na Amazon AWS</title>
		<link>https://viniciuspaes.com/linux/tutorial-setup-servidor-nivel-gratuito-amazon-aws/</link>
					<comments>https://viniciuspaes.com/linux/tutorial-setup-servidor-nivel-gratuito-amazon-aws/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Fri, 02 Dec 2022 16:54:47 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Amazon AWS]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[gratuito]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=625</guid>

					<description><![CDATA[<p>Tutorial com passo a passo para criar um servidor EC2 de nível gratuito na Amazon Web Service (Amazon AWS).</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-setup-servidor-nivel-gratuito-amazon-aws/">Tutorial setup Servidor Nível Gratuito na Amazon AWS</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Saber o que é a Amazon Web Services</li>
<li>Entender o que é um servidor de nível gratuito</li>
<li>Passo a passo para configurar um servidor nível gratuito na Amazon AWS</li>
</ul>
<h2>O que significa Amazon Web Services?</h2>
<p>A AWS ou Amazon Web Services é uma empresa do mesmo grupo da Amazon focada em serviços de tecnologia. A própria AWS se intitula como sendo a plataforma em nuvem mais abrangente e mais adotada do mundo. Com diversos datacenters espalhados em regiões geográficas distintas, oferecendo mais de 200 serviços completos de computação em nuvem.</p>
<h2>O que é servidor de nível gratuito da AWS?</h2>
<p>A Amazon AWS oferece um pacote de serviços de entrada sem custos para novos clientes. Este pacote é conhecido como nível gratuito da AWS. No exemplo deste tutorial, com o nível gratuito, podemos pegar um servidor EC2, VPC, do tipo t2.micro, com 1vCPU, 1GB de ram e até 30GB de armazenamento, totalmente grátis pelo período promocional.</p>
<h2>Requisitos para seguir o tutorial</h2>
<p>Ter criado uma conta na amazon AWS recente, pois o nível gratuito tem validade de 1 ano.</p>
<h2>Passo a passo para setup Servidor Nível Gratuito na Amazon AWS</h2>
<h3>Passo 1</h3>
<p>Acesse a página de login do console da Amazon AWS pela url:</p>
<pre>https://aws.amazon.com/pt/console/</pre>
<p>Agora clique no botão para realizar login (ou realizar login novamente).<br />
Na próxima tela insira seu email de login.<br />
Agora insira sua senha. Em alguns casos, é possível que a Amazon peça para inserir caracteres de um captcha para confirmar que você não é um robô.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-631" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-inicial.png" alt="Página do console sem ter feito login" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-inicial.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-inicial-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-627" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-login-nome-usuario.png" alt="Tela de login amazon aws - inserir nome de usuario ou email" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-login-nome-usuario.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-login-nome-usuario-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-628" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-login-senha-usuario.png" alt="Tela de login da Amazon AWS - inserir senha" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-login-senha-usuario.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-login-senha-usuario-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-629" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-login-verificacao-seguranca.png" alt="Tela de login da Amazon AWS - preencher captcha para provar que não é um robô" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-login-verificacao-seguranca.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-login-verificacao-seguranca-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2</h3>
<p>Após o login você estará na página inicial do console. No canto superior esquerdo, clique no ícone do menu:</p>
<pre>Serviços ou “Services”</pre>
<p>Na primeira opção do menu, escolha:</p>
<pre>Computação</pre>
<p>Na segunda opção, escolha</p>
<pre>EC2 (servidores virtuais na nuvem)</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-632" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-inicial-apos-login.png" alt="Amazon AWS página inicial do console" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-inicial-apos-login.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-inicial-apos-login-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-633" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-inicial-apos-login-menu-servicos.png" alt="Amazon AWS página inicial do console - foco no menu de serviços - computação - EC2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-inicial-apos-login-menu-servicos.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-pagina-inicial-apos-login-menu-servicos-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3</h3>
<p>Agora você vai estar na página do Painel do EC2. Clique no botão:</p>
<pre>Executar instância</pre>
<p>Vai habilitar uma segunda opção de:</p>
<pre>Executar instância</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-635" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-painel-ec2.png" alt="Painel EC2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-painel-ec2.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-painel-ec2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-637" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-painel-ec2-foco-botao-executar-instancia.png" alt="Painel EC2 - foco no botão de executar uma instância" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-painel-ec2-foco-botao-executar-instancia.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-painel-ec2-foco-botao-executar-instancia-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-636" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-painel-ec2-executar-instancia.png" alt="Painel EC2 - clique no botão executar uma instância abre opção para executar uma instância" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-painel-ec2-executar-instancia.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-painel-ec2-executar-instancia-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4</h3>
<p>Ao clicar no botão do passo anterior, você será encaminhado a página que possibilita a criação de uma nova instância. Nesta etapa você poderá selecionar todas as opções que deseja para configurar seu servidor na Amazon. Um lembrete, no canto superior direito, você provavelmente verá o nome de Virgínia do Norte (ou North Virginia), isso significa que você está no datacenter da Virgínia do Norte. É possível clicar ali e trocar para outra região mais próxima de você, vislumbrando uma latência (ping) menor, como por exemplo, um datacenter em São Paulo.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-653" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-trocar-local-datacenter.png" alt="Amazon AWS - nova instância EC2 - escolher local do datacenter" width="768" height="126" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-trocar-local-datacenter.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-trocar-local-datacenter-300x49.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>Na página de criação da instância, o primeiro passo é selecionar o nome do seu servidor. No nosso exemplo, escolhemos o nome de VPC, mas fique livre para escolher o nome que achar melhor.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-638" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-escolher-nome.png" alt="Amazon AWS - nova instância EC2 - escolher nome" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-escolher-nome.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-escolher-nome-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6</h3>
<p>A próxima etapa é selecionar qual imagem de sistema operacional você deseja que seja instalada no servidor. Neste exemplo, vamos selecionar o Sistema Operacional Linux, na distribuição Ubuntu, que é qualificada para o nível gratuito.<br />
A versão do ubuntu escolhida, foi a última disponibilizada na data da criação deste tutorial, que foi a: Ubuntu Server 22.04 LTS (HVM), SSD Volume Type, na versão de 64 bits (x86).</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-639" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-escolher-imagem-sistema-operacional.png" alt="Amazon AWS - nova instância EC2 - escolher imagem do sistema operacional" width="768" height="946" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-escolher-imagem-sistema-operacional.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-escolher-imagem-sistema-operacional-244x300.png 244w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7</h3>
<p>A próxima etapa é escolher o tipo da instância (capacidade de processamento e ram), escolhemos a versão t2.micro, também habilitada para o nível gratuito. Esta versão possui 1vCPU e 1GB de memória ram.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-640" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-escolher-tipo.png" alt="Amazon AWS - nova instância EC2 - escolher o tipo da instância t2.micro nível gratuito" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-escolher-tipo.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-escolher-tipo-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8</h3>
<p>Agora precisamos definir o par de chaves para conexão remota ao servidor por SSH. Vamos clicar na opção:</p>
<pre>Criar novo par de chaves</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-641" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-escolher-par-chaves.png" alt="Amazon AWS - nova instância EC2 - escolher novo par de chaves" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-escolher-par-chaves.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-escolher-par-chaves-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9</h3>
<p>Precisamos então definir primeiro o nome para o arquivo da chave. Neste exemplo escolhemos o nome de:</p>
<pre>ChaveVPCaws</pre>
<p>Utilizamos a criptografia:</p>
<pre>RSA</pre>
<p>E como realizamos conexão pelo terminal com openSSH, optamos pelo formato da chave do tipo:</p>
<pre>.pem</pre>
<p>Agora para finalizar a criação das chaves, basta clicar no botão:</p>
<pre>Criar par de chaves</pre>
<p>Deve iniciar o download e suas chaves devem ser salvas a pasta Downloads do seu computador.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-642" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-definir-par-chaves.png" alt="Amazon AWS - nova instância EC2 - definir o nome do par de chaves, criptografia, e extensão .pem" width="768" height="852" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-definir-par-chaves.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-definir-par-chaves-270x300.png 270w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 10</h3>
<p>Nesta etapa agora vamos configurar as configurações de rede. Vamos deixar selecionado as opções:</p>
<ul>
<li>Criar grupo de segurança</li>
<li>Permitir tráfego SSH de (Qualquer lugar 0.0.0.0/0)</li>
<li>Permitir tráfego HTTPs da internet</li>
<li>Permitir tráfego HTTP da internet</li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-643" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-configuracao-de-rede.png" alt="Amazon AWS - nova instância EC2 - configurações da rede para um servidor HTTP web" width="768" height="852" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-configuracao-de-rede.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-configuracao-de-rede-270x300.png 270w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 11</h3>
<p>Temos agora a opção de selecionar o armazenamento do servidor (espaço em disco). Por padrão, esta opção começa com 8GB, que é o tamanho mínimo da imagem do Ubuntu selecionada. No momento da escrita deste tutorial, a Amazon permite utilizar até 30GB de armazenamento para o nível gratuito. Neste tutorial, vamos selecionar apenas 10GB do tipo gp2 de Volume Raiz.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-644" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-configurar-armazenamento-10gb.png" alt="Amazon AWS - nova instância EC2 - escolher armazenamento" width="768" height="544" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-configurar-armazenamento-10gb.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-configurar-armazenamento-10gb-300x213.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 12</h3>
<p>Neste tutorial não vamos selecionar as opções avançadas, ou detalhes avançados, podemos pular diretamente para a última etapa de Resumo.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-645" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-detalhes-avancados-nao-vamos-abordar.png" alt="Amazon AWS - nova instância EC2 - detalhes avançados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-detalhes-avancados-nao-vamos-abordar.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-detalhes-avancados-nao-vamos-abordar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 13</h3>
<p>Agora temos a oportunidade de revisar todas as opções antes de realizar a criação da instância do servidor. Confira novamente se todas as opções estão corretas (Nome, Imagem Ubuntu, 64bits, tipo t2.micro, 1 vol. 10gb). Lembre-se de revisar se estas opções ainda estão dentro do nível gratuito, visto que a Amazon pode mudar os critérios.</p>
<p style="float: right;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-655" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-lembrar-bloquear-cartao-credito-nivel-gratuito.png" alt="Amazon AWS - nova instância EC2 - lembrar de bloquear seu cartão!" width="337" height="119" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-lembrar-bloquear-cartao-credito-nivel-gratuito.png 337w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-lembrar-bloquear-cartao-credito-nivel-gratuito-300x106.png 300w" sizes="auto, (max-width: 337px) 100vw, 337px" /></p>
<p>Uma dica importante antes de continuar. Lembre-se de ter um cartão virtual vinculado a sua conta do AWS. Pois nesta etapa agora, você tem a possibilidade de entrar no aplicativo do seu banco e bloquear o seu cartão, para garantir que nenhuma cobrança seja realizada. Isso evita 2 problemas:</p>
<ol>
<li>Cobrança indevida da AWS (aconteceu de tentarem me cobrar, mas poderia ser só para confirmar novamente meu cartão). Mas na dúvida, se protejam.</li>
<li>Você ter selecionado alguma opção por engano que não está no nível gratuito. Dessa forma evita a cobrança e tem a possibilidade de cancelar o serviço, sem necessitar pedir um estorno.</li>
</ol>
<p>Após revisar os itens acima, clique no botão:</p>
<pre>Executar instância</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-646" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-resumo-instancia.png" alt="Amazon AWS - nova instância EC2 - resumo para criação da instância (servidor)" width="768" height="852" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-resumo-instancia.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-nova-instancia-ec2-resumo-instancia-270x300.png 270w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 14</h3>
<p>Você será direcionado para uma página informando que teve êxito na criação da sua instância. Clique no botão para continuar:</p>
<pre>Visualizar todas as instâncias</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-647" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-instancia-ec2-criada.png" alt="Amazon AWS - nova instância EC2 criada" width="768" height="700" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-instancia-ec2-criada.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-instancia-ec2-criada-300x273.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 15</h3>
<p>Nesta etapa você estará na página de visão geral das instâncias. No caso só temos uma instância criada, com o nome de VPC. Nesta tela é importante anotar seu IP público, pois com ele que vamos realizar a conexão via ssh no servidor. Selecione então a sua instância, para que os dados dela fiquem visíveis.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-648" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-painel-ec2-instancias-ativas.png" alt="Amazon AWS - painel de instâncias EC2" width="768" height="714" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-painel-ec2-instancias-ativas.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-painel-ec2-instancias-ativas-300x279.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 16</h3>
<p>Com a instância criada e seu IP público anotado, podemos realizar a conexão por SSH. No seu computador, abra o prompt.<br />
Agora você precisa caminhar até a pasta onde salvou a chave de conexão do servidor. Neste exemplo, foi feito o download da chave na pasta Downloads, então:</p>
<pre>cd Downloads</pre>
<p>Agora vamos utilizar o comando abaixo para conectar ao servidor. Neste exemplo, vamos utilizar o IP 15.229.47.227. A chave deste exemplo chama ChaveVPCaws.pem. Lembre de alterar o comando abaixo, com as corretas informações do nome da sua chave e IP do seu servidor. Por padrão, o nome de usuário nessa imagem do linux Ubuntu é ubuntu.</p>
<pre>ssh -i ChaveVPCaws.pem ubuntu@15.229.47.227</pre>
<p>Caso tenha tido algum problema de permissão insegura da chave e estiver no sistema operacional mac os ou linux, basta alterar a permissão do arquivo (chmod 600 ChaveVPCaws.pem), caso esteja no windows, abra o arquivo da chave no bloco de notas, copie o conteúdo. Crie outro arquivo no bloco de notas, cole o conteúdo da chave, e salve este novo arquivo no diretório que pretende utilizar a conexão ssh.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-649" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-prompt-ir-pasta-chave-amazon.png" alt="Amazon AWS - nova instância EC2 - como ir para pasta onde está a chave" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-prompt-ir-pasta-chave-amazon.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-prompt-ir-pasta-chave-amazon-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-650" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-comando-conexao-ssh-chave-publica-privada-amazon.png" alt="Amazon AWS - nova instância EC2 - comando para conexão ssh na amazon aws com chave pública e privada" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-comando-conexao-ssh-chave-publica-privada-amazon.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-comando-conexao-ssh-chave-publica-privada-amazon-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 17</h3>
<p>Caso tenha realizado todos os passos de forma correta, agora você está conectado no seu servidor por uma conexão SSH.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-651" src="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-conexao-ssh-chave-publica-privada-amazon.png" alt="Amazon AWS - nova instância EC2 - conectado por ssh com sucesso" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/12/aws-conexao-ssh-chave-publica-privada-amazon.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/12/aws-conexao-ssh-chave-publica-privada-amazon-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Conclusões</h2>
<p>Este tutorial auxilia com o passo a passo para criar um servidor gratuito na Amazon AWS. A Amazon oferece excelentes serviços de computação na nuvem e o nível gratuito é uma ótima oportunidade para começar a utilizar os serviços disponíveis e se familiarizar com a interface.<br />
Caso tenha tido algum problema em qualquer etapa, basta informar nos comentários, farei o possível para ajudar!</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-setup-servidor-nivel-gratuito-amazon-aws/">Tutorial setup Servidor Nível Gratuito na Amazon AWS</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/linux/tutorial-setup-servidor-nivel-gratuito-amazon-aws/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial instalar WordPress em servidor web já configurado com Ubuntu, Apache, MySQL e PHP</title>
		<link>https://viniciuspaes.com/linux/tutorial-instalar-wordpress-servidor-web-configurado-lamp/</link>
					<comments>https://viniciuspaes.com/linux/tutorial-instalar-wordpress-servidor-web-configurado-lamp/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Wed, 30 Nov 2022 22:19:35 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-fpm]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=569</guid>

					<description><![CDATA[<p>Tutorial para instalação e configuração do Wordpress em servidor por linha de comando com acesso SSH.</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-instalar-wordpress-servidor-web-configurado-lamp/">Tutorial instalar WordPress em servidor web já configurado com Ubuntu, Apache, MySQL e PHP</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Entender o que é um servidor web (HTTP) configurado com LAMP</li>
<li>Saber o que é um Content Management System (CMS)</li>
<li>Saber o que é o WordPress</li>
<li>Verificar os requisitos para seguir o tutorial</li>
<li>Passo a passo para instalar o WordPress em um servidor Linux com distribuição Ubuntu e um setup LAMP previamente configurado</li>
</ul>
<h2>O que é um servidor HTTP LAMP?</h2>
<p>Em resumo, é um servidor configurado para prover páginas de internet. No caso deste exemplo, para poder hospedar o wordpress, o nosso servidor vem configurado com o Linux, na distribuição Ubuntu. É um servidor http, com a configuração LAMP: <strong>L</strong>inux, <strong>A</strong>pache, <strong>M</strong>ySQL e <strong>P</strong>HP.</p>
<h2>O que é um CMS?</h2>
<p>O termo CMS é um acrônimo para Content Management System, ou sistema gerenciador de conteúdo. É um software que auxilia os produtores de conteúdo a gerenciar suas postagens na internet. Desta forma, depois do CMS instalado, os produtores de conteúdo conseguem postar facilmente na internet, sem precisar saber nenhuma linguagem de programação.</p>
<h2>O que é o WordPress?</h2>
<p>O WordPress é o CMS mais famoso e mais popular na atualidade. Para termos quantitativos, mais de 40% de todos os sites da internet utilizam o wordpress. É também bastante versátil; através de plugins e temas, o wordpress pode funcionar como uma loja virtual, um fórum, um blog, site institucional, site pessoal, site de internet, etc.</p>
<h2>Requisitos para seguir o tutorial</h2>
<p>Para que possa seguir este tutorial sem problemas, é necessário que tenha um servidor já configurado. Neste caso em específico, que tenha um servidor LAMP. É necessário também acesso SSH ao servidor e permissões de administrador para instalar software e habilitar módulos do php.<br />
Caso não tenha, basta seguir este passo a passo:</p>
<pre><a href="https://viniciuspaes.com/linux/tutorial-instalar-configurar-servidor-web-http-ubuntu-apache-mysql-php-ftp-tls-php-fpm/">Tutorial configurar servidor HTTP no Ubuntu com Apache, MySQL, PHP</a></pre>
<p>Este tutorial serve tanto para um servidor LAMP local (raspberry, virtual box, computador antigo em casa, etc), quanto para um servidor remoto (Amazon AWS, Digital Ocean, Vultr, etc).</p>
<h2>Tutorial passo a passo para instalar e configurar o wordpress em servidor web (http) já configurado com ubuntu, apache, mysql, php e php-fpm</h2>
<h3>Passo 1</h3>
<p>O primeiro passo é definir quem será responsável pelo diretório de produção web. Podendo ser apenas uma pessoa utilizando o servidor e gerenciando todos os websites, ou se prefere que cada website seja gerenciado por um usuário diferente, pensando em sistemas compartilhados.<br />
Neste tutorial, vamos definir que o usuário viniciuspaes será o responsável por todos os sites. Desta forma, vamos definir as permissões da pasta /var/www (pasta de produção web):</p>
<pre>sudo chown viniciuspaes:www-data /var/www -R</pre>
<p>Com o comando acima definimos que o usuário responsável por todos os arquivos e diretórios da pasta /var/www e subdiretórios será o viniciuspaes. E que o grupo responsável será o grupo www-data (grupo do usuário do apache).<br />
Este tutorial leva em conta que o PHP-FPM esteja já configurado, com usuário = viniciuspaes e grupo = www-data<br />
Caso não tenha certeza se o PHP-FPM está instalado, verifique os passos neste passo a passo: <a href="https://viniciuspaes.com/linux/tutorial-instalar-configurar-servidor-web-http-ubuntu-apache-mysql-php-ftp-tls-php-fpm/">Tutorial configurar servidor HTTP no Ubuntu com Apache, MySQL, PHP, FTP, TLS e PHP-FPM</a>.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-573" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-chown-user-group-var-www-r.png" alt="Wordpress - como definir corretamente usuário e grupo para arquivos" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-chown-user-group-var-www-r.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-chown-user-group-var-www-r-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-538" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-www.conf-3.png" alt="ubuntu sudo nano www.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-www.conf-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-www.conf-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 2</h3>
<p>Agora vamos forçar que todos os diretórios (sites) criados dentro da pasta /var/www/html pertençam ao grupo www-data.</p>
<pre>sudo chmod g+s /var/www/html</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-574" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-sudo-g-plus-s-var-www-html.png" alt="Wordpress - como forçar aos arquivos a sempre pertecerem ao grupo do apache www-data" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-sudo-g-plus-s-var-www-html.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-sudo-g-plus-s-var-www-html-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 3</h3>
<p>Nesta etapa vamos caminhar até o diretório de produção web:</p>
<pre>cd /var/www/html</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-575" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-cd-var-www-html.png" alt="Wordpress - como caminhar até o diretório base de produção web" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-cd-var-www-html.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-cd-var-www-html-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 4</h3>
<p>Agora vamos realizar o download da última versão do wordpress:</p>
<pre>wget https://br.wordpress.org/latest-pt_BR.zip</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-576" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-wget-latest-pt_BR.png" alt="Wordpres - como realizar o download da última versão do wordpress por linha de comando" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-wget-latest-pt_BR.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-wget-latest-pt_BR-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 5</h3>
<p>Vamos descompactar o wordpress:</p>
<pre>unzip latest-pt_BR.zip</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-577" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-unzip-latest-pt_br.png" alt="Wordpress - como descompactar arquivo do wordpress em linha de comando (cli)" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-unzip-latest-pt_br.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-unzip-latest-pt_br-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 6</h3>
<p>Vamos verificar os arquivos presentes da pasta de produção web:</p>
<pre>ls -lah</pre>
<p>Vemos que temos 2 arquivos e 1 diretório presentes. O index.html é o arquivo padrão do apache. O arquivo latest-pt_BR.zip é a última versão do wordpress que fizemos download. E o diretório wordpress, são os arquivos descompactados do wordpress.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-578" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-ls-lah.png" alt="Wordpress - como verificar os arquivos existentes na pasta de produção web" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-ls-lah.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-ls-lah-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 7</h3>
<p>Como não vamos mais precisar do arquivo compactado do wordpress, podemos apagá-lo:</p>
<pre>rm latest-pt_BR.zip</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-579" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-rm-latest-pt_BR.png" alt="Wordpress - como deletar arquivo compactado do wordpress que não será mais utilizado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-rm-latest-pt_BR.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-rm-latest-pt_BR-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 8</h3>
<p>Podemos mudar o nome do diretório que os arquivos foram descompactados para o nome do site, como exemplo, site1.</p>
<pre>mv wordpress site1</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-580" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-mv-wordpress-site1.png" alt="Wordpress - como mudar o nome da pasta onde o wordpress foi descompactado em linha de comando (cli)" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-mv-wordpress-site1.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-mv-wordpress-site1-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 9</h3>
<p>Vamos verificar nosso endereço de ip:</p>
<pre>ip a</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-581" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-ip-a.png" alt="Wordpress - como olhar o endereço IP do servidor em linha de comando" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-ip-a.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-ip-a-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 10</h3>
<p>Sabendo o endereço de IP do seu servidor, precisamos criar um usuário e banco de dados para o <strong>site1</strong> que está utilizando o wordpress. Então abra o browser de internet e digite o endereço IP do seu sevidor, seguido de /phpmyadmin. No meu caso, será:</p>
<pre>http://192.168.1.104/phpmyadmin</pre>
<p>Caso tenha habilitado a etapa extra de login ao phpmyadmin com htaccess e o htpasswd, digite primeiramente o login e senha do htpasswd. Em seguida faça o login no phpmyadmin.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-582" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-login-phpmyadmin-htpasswd.png" alt="Wordpress - primeira etapa de login no phpmyadmin pelo htpasswd" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-login-phpmyadmin-htpasswd.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-login-phpmyadmin-htpasswd-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-583" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-login-phpmyadmin.png" alt="Wordpress - tela de login do phpmyadmin" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-login-phpmyadmin.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-login-phpmyadmin-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 11</h3>
<p>Já com login realizado no phpmyadmin, acesse a aba:</p>
<pre>Contas de usuário</pre>
<p>Em seguida vá até:</p>
<pre>Adicionar conta de usuário</pre>
<p>Agora preencha os campos:</p>
<ul>
<li>Nome de usuário: site1 (este também será o nome do banco de dados)</li>
<li>Nome do host (Local): localhost</li>
<li>Senha: (repare que mais pra baixo tem um botão para gerar uma senha, você pode criar uma senha própria, ou gerar uma senha aleatória) ANOTE ESTA SENHA!!!</li>
<li>Plugin de autenticação: Autenticação nativa do MySQL</li>
<li>Agora marque a caixa de seleção: Criar banco de dados com o mesmo nome e conceder todos os privilégios</li>
</ul>
<p>Caminha até o fim da página e clique no botão:</p>
<pre>Executar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-584" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-user-accounts.png" alt="Wordpress - criar um novo usuário e banco de dados no phpmyadmin" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-user-accounts.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-user-accounts-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-585" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-new-user-account.png" alt="Wordpress - criar novo usuário no phpmyadmin" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-new-user-account.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-new-user-account-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-586" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-criar-usuario-banco-dados-phpmyadmin.png" alt="Wordpress - criar novo usuário no phpmyadmin e também o banco com o mesmo nome do usuário" width="768" height="644" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-criar-usuario-banco-dados-phpmyadmin.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-criar-usuario-banco-dados-phpmyadmin-300x252.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-591" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-create-new-user-and-bd-execute.png" alt="Wordpress - botão executar, para que seja criado novo usuário e banco de dados" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-create-new-user-and-bd-execute.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-create-new-user-and-bd-execute-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-588" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-phpmyadmin-user-and-bd-created.png" alt="Wordpress - novo usuário de banco de dados criado no phpmyadmin" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-phpmyadmin-user-and-bd-created.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-phpmyadmin-user-and-bd-created-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 12</h3>
<p>Agora é necessário abrir seu site (site1) pelo browser para iniciar a instalação do WordPress. Abra seu browser e digite seu IP seguido de /site1, no meu caso:</p>
<pre>http://192.168.1.104/site1</pre>
<p>Na primeira página clique em:</p>
<pre>Vamos lá</pre>
<p>Na segunda etapa, será necessário informar os dados do banco de dados que acabamos de criar:</p>
<ul>
<li>Nome do banco de dados: é o mesmo nome do usuário que criamos para gerenciar o banco</li>
<li>Nome de usuário do banco de dados</li>
<li>Senha do usuário do banco de dados</li>
<li>Servidor do banco de dados: <strong>localhost</strong></li>
<li>Prefixo da tabela: <strong>wp_</strong> (ou <strong>wpS1_</strong>, caso queira customizar para o site1)</li>
</ul>
<p>Depois de preencher todos os dados acima, clique no botão:</p>
<pre>Enviar</pre>
<p>Atenção! Caso tenha algum problema nesta etapa, possivelmente é diante a permissão de arquivos. Se tiver seguido o tutorial de instalação do PHP-FPM, e definido corretamente o usuário responsável pela pool sendo igual o responsável pelo diretório do site, não deverá ter problema. Caso não tenha o PHP-FPM instalado, deverá atualizar as permissões do diretório, para que consiga realizar a instalação, ou criar o arquivo wp-config.php manualmente. Recomendo realizar a instalação do PHP-FPM, para não ter dor de cabeça nesta etapa. Caso tenha algum erro de conexão ao banco de dados, então o erro é possivelmente no momento da criação do usuário e do banco, ou você digitou os dados incorretamente. Basta rever os passos anteriores para confirmar.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-600" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-etapa-1.png" alt="Wordpress - tela de instalação passo 1" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-etapa-1.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-etapa-1-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-601" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-etapa-2.png" alt="Wordpress - tela de instalação passo 2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-etapa-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-etapa-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 13</h3>
<p>Agora o wordpress já conseguiu acessar o banco de dados e está pronto para começar a instalação. Clique então no botão:</p>
<pre>Instalar</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-602" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-etapa-3.png" alt="Wordpress - tela de instalação passo 3" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-etapa-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-etapa-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 14</h3>
<p>Neste último passo da instalação, é necessário informar alguns dados do website:</p>
<ul>
<li>Título do Site</li>
<li>Nome do usuário para administrar o site</li>
<li>Senha</li>
<li>Email do responsável pelo site (será utilizado caso seja necessário realizar um reset da senha)</li>
<li>Visibilidade para os motores de busca: enquanto o seu site não estiver pronto e funcional, evite que os mecanismos de busca indexem ele.</li>
</ul>
<p>Depois de preencher todos os dados e anotar a senha escolhida em local seguro, clique no botão:</p>
<pre>Instalar WordPress</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-603" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-etapa-4.png" alt="Wordpress - tela de instalação passo 4" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-etapa-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-etapa-4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 15</h3>
<p>Confirmação de instalação bem sucedida.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-605" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-finalizada.png" alt="Instalação do WordPress concluída" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-finalizada.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-instalacao-finalizada-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 16</h3>
<p>Agora vamos realizar login na interface administrativa do site. Essa URL é formada pelo IP, em seguida da pasta onde o site está instalado, seguido de /wp-admin. No caso deste exemplo, temos:</p>
<pre>http://192.168.1.104/site1/wp-admin</pre>
<p>Instalação bem sucedida e login na interface administrativa realizado com sucesso.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-606" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-pagina-login.png" alt="Wordpress - página de login da interface administrativa" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-pagina-login.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-pagina-login-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 17</h3>
<p>Voltando ao terminal, vamos habilitar o módulo de reescrita de URL, que é muito útil para termos URL amigáveis para indexação dos mecanismos de busca. Utilize o comando:</p>
<pre>sudo a2enmod rewrite</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-607" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-habilitar-modulo-rewrite.png" alt="Wordpress habilitar módulo rewrite no php" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-habilitar-modulo-rewrite.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-habilitar-modulo-rewrite-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 18</h3>
<p>Precisamos reiniciar o servidor http (apache2) para que o módulo habilitado no passo anterior tenha efeito:</p>
<pre>sudo service apache2 restart</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-608" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-reiniciar-servidor-http-apache2.png" alt="Wordpress reiniciar o servidor http apache2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-reiniciar-servidor-http-apache2.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-reiniciar-servidor-http-apache2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 19</h3>
<p>Agora precisamos alterar o arquivo de configuração do apache referente a acesso ao servidor para que este permita a reescrita de URL.</p>
<pre>sudo nano /etc/apache2/sites-available/000-default.conf</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-609" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-editar-000-default-conf.png" alt="Wordpress editar arquivo 000-dafault.conf para habilitar rewrite" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-editar-000-default-conf.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-editar-000-default-conf-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 20</h3>
<p>Com o arquivo aberto, precisamos inserir o texto referente a reescrita de URL. Caso tenha seguido o setup de instalação do PHP-FPM, o texto deverá ser inserido abaixo de <strong>Protocols h2 http/1.1</strong>, caso não tenha ele instalado, insira o texto abaixo de <strong>DocumentRoot /var/www/html</strong>.<br />
<script src="https://gist.github.com/viniciuspaes/0efcecf252001a5807a6481e23655f6e.js"></script><br />
Agora salve o arquivo e saia do editor nano.</p>
<p>Reparem que habilitamos a reescrita de URL para todas as pastas dentro de <strong>/var/www/html</strong>. Caso queira restringir apenas para o site1, lembre de editar o comando acima para <strong>/var/www/html/site1</strong>.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-611" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-editar-000-default-conf-etapa-2.png" alt="Wordpress editar arquivo 000-dafault.conf para habilitar reescrita de url" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-editar-000-default-conf-etapa-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-editar-000-default-conf-etapa-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-610" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-editar-000-default-conf-etapa-3.png" alt="Wordpress editar arquivo 000-dafault.conf para habilitar reescrita de url - arquivo alterado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-editar-000-default-conf-etapa-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-editar-000-default-conf-etapa-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 21</h3>
<p>Novamente vamos reiniciar o apache, desta vez para que as modificações no arquivo de configuração tenham efeito:</p>
<pre>sudo service apache2 restart</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-612" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-reiniciar-servidor-http-apache2-1.png" alt="Wordpress - reiniciar o apache" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-reiniciar-servidor-http-apache2-1.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-reiniciar-servidor-http-apache2-1-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 22</h3>
<p>Agora volte para a interface administrativa do WordPress. Vamos verificar como a estrutura de links permanentes está configurada. Desta forma podemos realizar alterações que surjam efeito com a reescrita de url que habilitamos.<br />
Faça login no wordpress, caso ainda não tenha feito:</p>
<pre>http://192.168.1.104/site1/wp-admin</pre>
<p>Agora no menu lateral esquerdo, vá em:</p>
<pre>Configurações</pre>
<p>Agora escolha:</p>
<pre>Links permanentes</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-613" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-menu-configuracoes-links-permanentes.png" alt="Wordpress - ir para a página de edição de links permanentes" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-menu-configuracoes-links-permanentes.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-menu-configuracoes-links-permanentes-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 23</h3>
<p>Na página de configuração de Links permanentes, temos as seguintes opções:</p>
<ul>
<li>Padrão: url do tipo ?p=123 (que é o id do post)</li>
<li>Dia e nome: vai aparecer a data completa de publicacao e o nome do post na url</li>
<li>Mês e nome: vai aparecer o ano e o mês seguido do nome do post</li>
<li>Numérica: vai aparecer somente o id do post na url</li>
<li>Nome do post: vai aparecer somente o nome do post na url</li>
<li>Estrutura personalizada: pode definir como queremos a estrutura de url</li>
</ul>
<p>Vamos criar uma estrutura personalizada que apareça a categoria da publicação, seguida do nome do post. Para isso, selecione a opção de estrutura personalizada e insira o texto:</p>
<pre>/%category%/%postname%/</pre>
<p>Agora clique em:</p>
<pre>Salvar alterações</pre>
<p>Atenção! Caso tenha algum erro nesta etapa é devido a permissão de arquivos e diretórios. Se tiver o PHP-FPM instalado e configurado corretamente, não deve aparecer erro algum. Caso não tenha, uma opção é criar o arquivo .htaccess manualmente e inserir na pasta base do site com as alterações necessárias.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-615" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-definir-estrutura-personalizada-url.png" alt="Wordpress - definir estrutura de links personalizado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-definir-estrutura-personalizada-url.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-definir-estrutura-personalizada-url-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-614" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-definir-estrutura-personalizada-url-salvar.png" alt="Wordpress - definir estrutura de links personalizado - salvar modificações" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-definir-estrutura-personalizada-url-salvar.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-definir-estrutura-personalizada-url-salvar-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 24</h3>
<p>Agora vamos testar se a estrutura de URL personalizada está funcional. No menu lateral clique em:</p>
<pre>Posts</pre>
<p>E depois em:</p>
<pre>Todos os posts</pre>
<p>Agora passe o mouse em cima do post de Olá, Mundo! Deve aparecer a opção “Ver”<br />
Clique na opção:</p>
<pre>Ver</pre>
<p>Caso tenha seguido os passos corretamente, o post irá abrir e se verificar a URL, ela deve estar em um formato semelhante a:</p>
<pre>http://192.168.1.104/site1/sem-categoria/ola-mundo/</pre>
<p>Atenção! Se o post abriu corretamente, os passos foram executados corretamente. Se apareceu algum erro, é devido a 4 possibilidades:</p>
<ul>
<li>Módulo Rewrite não foi instalado ou habilitado</li>
<li>Arquivo .htaccess não foi criado e configurado corretamente dentro da pasta site1/</li>
<li>O arquivo 000-default.conf não foi editado corretamente para habilitar a reescrita da url</li>
<li>Não reiniciou o apache2 depois das alterações citadas acima</li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-618" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-posts-todos-os-posts.png" alt="Wordpress - ir para página de todos os posts" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-posts-todos-os-posts.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-posts-todos-os-posts-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-617" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-ver-post-ola-mundo.png" alt="Wordpress - ver post olá mundo" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-ver-post-ola-mundo.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-ver-post-ola-mundo-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-616" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-post-ola-mundo-com-url-personalizada.png" alt="Wordpress - testar estrutura de link personalizado" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-post-ola-mundo-com-url-personalizada.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-post-ola-mundo-com-url-personalizada-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Passo 25</h3>
<p>Para finalizar, vamos refazer as permissões de todos os arquivos. Lembrando que no exemplo abaixo, o usuário viniciuspaes é o administrador do site1, sendo também configurado na pool do PHP-FPM para ser responsável por estes arquivos.</p>
<pre>sudo chown viniciuspaes:www-data /var/www/html/site1 -R
sudo find /var/www/html/site1/. -type d -exec chmod g+s {} +
sudo find /var/www/html/site1/. -type f -exec chmod 644 {} +
sudo find /var/www/html/site1/. -type d -exec chmod 755 {} +
</pre>
<p>Com o setup acima, configuramos o usuário viniciuspaes sendo o &#8220;dono&#8221; de todos os arquivos dentro da pasta site1/. Configuramos também que o grupo www-data é o &#8220;dono&#8221; de todos estes arquivos.<br />
Em seguida, vasculhamos todos os diretórios dentro de site1/ e configuramos que qualquer novo arquivo criado lá dentro, pertencerá ao grupo www-data.<br />
Para finalizar, buscamos todos os arquivos e damos permissão 644 e buscamos todos os diretórios e colocamos a permissão como 755.<br />
Se tiver dúvidas sobre como funcionam as permissões de arquivos no linux, basta acessar nosso tutorial.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-619" src="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-arrumar-permissoes-arquivos-diretorios.png" alt="Wordpress - corrigir permissões de arquivos e diretórios" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-arrumar-permissoes-arquivos-diretorios.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/wordpress-arrumar-permissoes-arquivos-diretorios-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Considerações Finais</h2>
<p>Caso tenha tido algum erro seguindo este tutorial, pode ser relativo às permissões de acesso de arquivos e diretórios. Recomendamos desta forma, que se estiver utilizando o servidor HTTP Apache (apache2) que instale o PHP-FPM para que este seja responsável pela execução de script’s php. É uma forma mais segura do que deixar o próprio apache executando os arquivos.</p>
<p>Caso tenha interesse de configurar email do wordpress de forma autenticada pelo Gmail, acesse nosso tutorial:</p>
<pre><a href="https://viniciuspaes.com/wordpress/tutorial-configurar-wordpress-para-enviar-email-pelo-gmail/">Tutorial configurar WordPress para enviar email pelo GMAIL</a></pre>
<h2>Conclusões</h2>
<p>Caso já tenha um servidor web (HTTP) instalado e configurado com o LAMP (Linux, Apache, MySQL e PHP) este Tutorial auxilia na instalação e configuração básica do WordPress. Este passo a passo foi testado seguindo o <a href="https://viniciuspaes.com/linux/tutorial-instalar-configurar-servidor-web-http-ubuntu-apache-mysql-php-ftp-tls-php-fpm/">Tutorial configurar servidor HTTP no Ubuntu com Apache, MySQL, PHP</a>.</p>
<p>Caso tenha tido algum problema, basta contar aí nos comentários, que farei o possível para ajudar!</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-instalar-wordpress-servidor-web-configurado-lamp/">Tutorial instalar WordPress em servidor web já configurado com Ubuntu, Apache, MySQL e PHP</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/linux/tutorial-instalar-wordpress-servidor-web-configurado-lamp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial instalar e configurar servidor web (HTTP) no Ubuntu com Apache, MySQL, PHP, FTP, TLS e PHP-FPM</title>
		<link>https://viniciuspaes.com/linux/tutorial-instalar-configurar-servidor-web-http-ubuntu-apache-mysql-php-ftp-tls-php-fpm/</link>
					<comments>https://viniciuspaes.com/linux/tutorial-instalar-configurar-servidor-web-http-ubuntu-apache-mysql-php-ftp-tls-php-fpm/#comments</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Mon, 28 Nov 2022 13:18:15 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-fpm]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[ssh]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=443</guid>

					<description><![CDATA[<p>Tutorial configurar servidor HTTP no Ubuntu com instalação LAMP típica + FTP TLS e PHP-FPM.</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-instalar-configurar-servidor-web-http-ubuntu-apache-mysql-php-ftp-tls-php-fpm/">Tutorial instalar e configurar servidor web (HTTP) no Ubuntu com Apache, MySQL, PHP, FTP, TLS e PHP-FPM</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos</h2>
<ul>
<li>Entender o que é um servidor web</li>
<li>Saber quais softwares básicos um servidor web precisa</li>
<li>Passo a passo para configurar um servidor web instalando o MySQL, PHP, FTP com TLS, PHP-FPM e Apache</li>
</ul>
<h2>O que é um servidor web</h2>
<p>Há certa ambiguidade ao se referir a um servidor web ou servidor http. Esta ambiguidade se deve ao fato de um servidor ser referido tanto ao seu aspecto de hardware, quanto de software.<br />
Para facilitar o entendimento, um servidor web possui recursos como um computador pessoal: processador, armazenamento, memória ram, etc; estas características são referentes ao hardware do servidor web.<br />
Um servidor no geral, provê serviços aos usuários, no caso do servidor web, ele provê o serviço de páginas de websites. Para ter esta funcionalidade, de prover páginas, o servidor precisa ter um software de servidor http instalado e configurado; desta forma, no aspecto de software, um servidor web pode ser entendido como o software de servidor http, como o : apache, nginx, lighttpd, iis, etc.</p>
<h2>Saber quais softwares básicos um servidor web precisa</h2>
<p>Caso o servidor web forneça somente páginas no formato html, é necessário somente instalar um software de servidor http, como dito anteriormente: nginx, iis, apache, etc.<br />
Mas é muito comum os servidores utilizarem uma linguagem de programação, que pode ser o php, python, java, etc. Desta forma o servidor precisa ter suporte a estas linguagens também.<br />
Alguns websites precisam de acesso ao banco de dados para armazenar informações, como sistema de login e senha, aplicativos em formato de site, etc. Desta forma, o suporte a um banco de dados também é pertinente, como exemplo temos o postgre, mysql, oracle, etc.<br />
É comum também que se conecte no servidor por SSH ou FTP para a transferência de arquivos das páginas web. Então é necessário a instalação de softwares que oferecem este suporte de transferência de arquivos.</p>
<p>Boa parte dos sites na internet utilizam um sistema gerenciador de conteúdo (CMS). Como exemplo, temos o wordpress, que possui mais de 40% da fatia de mercado. Neste caso específico, para termos um servidor web que possa ser capaz de hospedar sites com a estrutura do wordpress, precisamos instalar:</p>
<ul>
<li>Servidor Http: o de sua preferência (apache, nginx, etc)</li>
<li>Linguagem de programação: PHP</li>
<li>Banco de dados: MySQL</li>
<li>Transferência de arquivos: SSH ou SSH e FTP</li>
</ul>
<h2>Quais softwares vamos utilizar para o setup do servidor HTTP deste exemplo?</h2>
<p>Neste exemplo será feito a instalação conhecida como LAMP:</p>
<ul>
<li><strong>L</strong>inux</li>
<li><strong>A</strong>pache</li>
<li><strong>M</strong>ySQL</li>
<li><strong>P</strong>HP</li>
</ul>
<p>Lembrando que para este tutorial, levamos em conta que a instalação do sistema operacional com o Linux Ubuntu já foi realizada, juntamente com a instalação do OpenSSH. É possível rever estes passos neste <strong><a href="https://viniciuspaes.com/servidor/tutorial-setup-servidor-linux-ubuntu-local-virtualbox/">Tutorial para Instalar Sistema Operacional para Servidor</a></strong>. Adicionalmente vamos realizar a instalação do FTP neste tutorial, juntamente com a opção de encriptação do FTP com TLS e a instalação do interpretador PHP-FPM Fast CGI.</p>
<h2>Passo a passo para configurar um servidor web instalando o MySQL, PHP, FTP com TLS, Apache e PHP-FPM</h2>
<h3>Instalando servidor HTTP Apache</h3>
<h4>Passo 1</h4>
<p>Primeiramente é necessário verificar os updates disponíveis com o comando:</p>
<pre>sudo apt update</pre>
<p>Em seguida, vamos realizar o upgrade dos softwares disponíveis:</p>
<pre>sudo apt upgrade</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-468" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-update.png" alt="ubuntu sudo apt update" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-update.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-update-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-471" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-upgrade.png" alt="ubuntu sudo apt upgrade" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-upgrade.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-upgrade-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 2</h4>
<p>Agora vamos instalar o software de servidor HTTP chamado apache:</p>
<pre>sudo apt install apache2</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-473" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-apache2.png" alt="ubuntu sudo apt install apache2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-apache2.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-apache2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 3</h4>
<p>Vamos verificar o IP do servidor com o comando:</p>
<pre>ip a</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-474" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-ip-a.png" alt="ubuntu ip a" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-ip-a.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-ip-a-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 4</h4>
<p>Agora vamos digitar o IP do servidor em um browser de internet e verificar se a página padrão do apache irá aparecer.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-546" src="https://viniciuspaes.com/wp-content/uploads/2022/11/browser-apache-default-page.png" alt="Apache default page" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/browser-apache-default-page.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/browser-apache-default-page-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 5</h4>
<p>Tudo certo! Software de servidor http apache instalado e funcionando corretamente! Servidor pronto para servir páginas em HTML.</p>
<h3>Instalando Banco de Dados MySQL</h3>
<h4>Passo 6</h4>
<p>Utilize o comando abaixo para instalar o MySQL:</p>
<pre>sudo apt install mysql-server</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-475" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-mysql-server.png" alt="ubuntu sudo apt install mysql server" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-mysql-server.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-mysql-server-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 7</h4>
<p>Agora vamos definir a senha <strong>@@@senha123</strong> para ser a senha do usuário root:</p>
<pre>sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '@@@senha123';"</pre>
<p>Em um próximo passo vamos atualizar esta senha, então não se preocupe em trocar ela neste momento.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-476" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-mysql-root-password-change.png" alt="ubuntu mysql root password change" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-mysql-root-password-change.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-mysql-root-password-change-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 8</h4>
<p>Agora vamos executar o seguinte comando para finalizar a instalação do banco de dados:</p>
<pre>sudo mysql_secure_installation</pre>
<p>Durante a execução do comando acima, será necessário realizar as operações:</p>
<ol>
<li>Digitar a senha de root previamente criada: <strong>@@@senha123</strong></li>
<li>Não habilitar componente para verificar força de senha. Este módulo geralmente causa bastante dor de cabeça na maioria das vezes. Recomendação é não habilitar.</li>
<li>Agora é a oportunidade de trocar a senha do usuário root do banco de dados (não confundir com usuário root do login do sistema operacional). Lembre de anotar a senha em um local seguro, pois será necessária futuramente para criação de novos usuários e bancos de dados.</li>
<li>Agora remova os usuários anônimos de teste.</li>
<li>Remova acesso remoto de usuário root ao banco de dados.</li>
<li>Remova banco de dados de teste.</li>
<li>Atualize as tabelas de privilégios para que as mudanças tenham efeito imediato.</li>
</ol>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-477" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-mysql_secure_installation.png" alt="ubuntu sudo mysql_secure_installation" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-mysql_secure_installation.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-mysql_secure_installation-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-478" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-mysql_secure_installation-2.png" alt="ubuntu sudo mysql_secure_installation" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-mysql_secure_installation-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-mysql_secure_installation-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-479" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-mysql_secure_installation-3.png" alt="ubuntu sudo mysql_secure_installation" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-mysql_secure_installation-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-mysql_secure_installation-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Instalando linguagem de programação PHP</h3>
<h4>Passo 9</h4>
<p>Para instalar o suporte PHP para o servidor apache, utilize o comando:</p>
<pre>sudo apt install php</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-481" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-php.png" alt="ubuntu sudo apt install php" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-php.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-php-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 10</h4>
<p>Para instalar o software de manipulação de imagens ImageMagick, utilize o comando:</p>
<pre>sudo apt install imagemagick</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-482" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-imagemagick.png" alt="ubuntu sudo apt install imagemagick" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-imagemagick.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-imagemagick-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 11</h4>
<p>Para instalar o software de manipulação e criação de arquivos pdf e postscript, utilize o comando:</p>
<pre>sudo apt install ghostscript</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-484" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-ghostscript.png" alt="ubuntu sudo apt install ghostscript" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-ghostscript.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-ghostscript-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 12</h4>
<p>Para instalar pacotes adicionais do PHP que são recomendados para uma instalação do wordpress, utilize o comando:</p>
<pre>sudo apt install php-{json,mysqli,curl,imagick,mbstring,xml,zip,memcache,opcache,redis,intl,ssh2,common}</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-485" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-php-extensions-wordpress.png" alt="ubuntu sudo apt install php extensions wordpress" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-php-extensions-wordpress.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-php-extensions-wordpress-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 13</h4>
<p>Para instalar algumas extensões populares, utilize o comando:</p>
<pre>sudo apt install php-{gd,cli,dev,imap,soap}</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-486" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-php-popular-extensions.png" alt="ubuntu sudo apt install php popular extensions" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-php-popular-extensions.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-php-popular-extensions-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 14</h4>
<p>Para instalar alguns pacotes populares, utilize o comando:</p>
<pre>sudo apt install openssl bc filter zlib1g wget unzip</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-487" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-popular-packages.png" alt="ubuntu sudo apt install popular packages" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-popular-packages.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-popular-packages-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 15</h4>
<p>Agora, com o comando abaixo, ele vai criar um arquivo chamado info.php que chama a função phpinfo() e mostra todas as configurações do php instalado. Este arquivo (info.php) poderá ser acessado pelo browser.<br />
<script src="https://gist.github.com/viniciuspaes/e5729a61d4d7eb7449d309b32cb9f8cd.js"></script></p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-488" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-phpinfo-file.png" alt="ubuntu create phpinfo file" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-phpinfo-file.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-phpinfo-file-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 16</h4>
<p>Para visualizar o arquivo info.php criado, abra o browser de intenet, digite o IP do seu servidor seguido de /info.php. Como exemplo, temos:</p>
<pre>http://192.168.1.135/info.php</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-547" src="https://viniciuspaes.com/wp-content/uploads/2022/11/browser-phpinfo-apache-2-handler.png" alt="Phpinfo Apache 2.0 Handler" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/browser-phpinfo-apache-2-handler.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/browser-phpinfo-apache-2-handler-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Instalando Interface de administração do MySQL (phpmyadmin)</h3>
<h4>Passo 17</h4>
<p>O phpmyadmin é uma interface web para administração do banco de dados MySQL.<br />
Para instalar o phpmyadmin, execute o comando:</p>
<pre>sudo apt install phpmyadmin</pre>
<p>Lembrando que o phpmyadmin necessita de extensões adicionais do PHP que foram previamente instaladas. Caso não tenha instalado, basta executar o comando:</p>
<pre>sudo apt install php-mbstring php-zip php-gd php-json php-curl</pre>
<p>Durante a instalação do phpmyadmin, será necessário definir algumas configurações de instalação:</p>
<ol>
<li>Será necessário informar qual servidor http temos configurado no servidor. Neste tutorial, estamos utilizando o servidor Apache (apache2). Atenção! Utilize as setas do teclado e fique em cima da seleção do Apache2 e tecle <strong>ESPAÇO</strong> uma vez para selecionar sua escolha. Somente após escolher a opção, tecle enter. É muito comum as pessoas apertarem ENTER sem selecionar o servidor Apache2 e ter que executar o dpkg-reconfigure phpmyadmin para refazer a instalação do phpmyadmin e selecionar corretamente o servidor http.</li>
<li>Aceite a opção de utilizar o dbconfig-common para configurar o banco do phpmyadmin.</li>
<li>Na última etapa é preciso escolher uma senha para o phpmyadmin se conectar ao banco de dados. Escolha uma senha forte. Esta senha será utilizada somente pelo phpmyadmin. Após escolher a senha, confirme ela novamente na próxima etapa. Caso deixe o campo em branco, uma senha aleatória será criada automaticamente.</li>
</ol>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-490" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-php-extensions-needed.png" alt="ubuntu sudo apt install phpmyadmin php extensions needed" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-php-extensions-needed.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-php-extensions-needed-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-489" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin.png" alt="ubuntu sudo apt install phpmyadmin" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-493" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-http-server-selection.png" alt="ubuntu sudo apt install phpmyadmin http server selection" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-http-server-selection.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-http-server-selection-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-492" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-http-server-selected.png" alt="ubuntu sudo apt install phpmyadmin http server selected" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-http-server-selected.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-http-server-selected-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-494" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-dbconfig-common.png" alt="ubuntu sudo apt install phpmyadmin dbconfig common" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-dbconfig-common.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-dbconfig-common-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-495" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-password-creation.png" alt="ubuntu sudo apt install phpmyadmin password creation" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-password-creation.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-phpmyadmin-password-creation-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 18</h4>
<p>Para acessar a interface do phpmyadmin, utilize o browser de internet, digite o IP do servidor seguido de /phpmyadmin. Como exemplo, temos:</p>
<pre>http://192.168.1.104/phpmyadmin</pre>
<p>É interessante realizar login com o usuário root e senha. E criar um login de usuário pessoal para o responsável por administrar o banco de dados. Evitar sempre que possível utilizar o login do usuário root no dia a dia. Lembre-se de garantir privilégios de administrador no momento da criação de seu novo usuário.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-548" src="https://viniciuspaes.com/wp-content/uploads/2022/11/browser-phpmyadmin-login-page.png" alt="phpmyadmin login page" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/browser-phpmyadmin-login-page.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/browser-phpmyadmin-login-page-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 19</h4>
<p>Como estamos utilizando o apache para nosso servidor http, uma opção possível, é criar uma segunda camada de login em cima do phpmyadmin. O phpmyadmin é um aplicativo muito conhecido e hackers podem buscar brechas de segurança para ter acesso ao bando de dados. Com uma segunda camada de login, aumentamos o nível de segurança do servidor. O Apache permite utilizarmos um arquivo .htaccess e .htpasswd para gerenciar permissões por diretório, neste caso, vamos criar permissões de acesso. Primeiramente vamos editar o arquivo de configuração do phpmyadmin com o comando:</p>
<pre>sudo nano /etc/apache2/conf-available/phpmyadmin.conf</pre>
<p>Procure a linha com o texto “DirectoryIndex index.php”. Abaixo desta linha vamos inserir o seguinte texto:</p>
<pre>AllowOverride All</pre>
<p>Salve as modificações e feche o nano.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-498" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-phpmyadmin.conf_.png" alt="ubuntu sudo nano phpmyadmin.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-phpmyadmin.conf_.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-phpmyadmin.conf_-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-499" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-phpmyadmin.conf-2.png" alt="ubuntu sudo nano phpmyadmin.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-phpmyadmin.conf-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-phpmyadmin.conf-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-497" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-phpmyadmin.conf-3.png" alt="ubuntu sudo nano phpmyadmin.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-phpmyadmin.conf-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-phpmyadmin.conf-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 20</h4>
<p>Agora vamos reiniciar o Apache para que a modificação do passo anterior tenha efeito:</p>
<pre>sudo service apache2 restart</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-501" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-apache2-restart.png" alt="ubuntu sudo service apache2 restart" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-apache2-restart.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-apache2-restart-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 21</h4>
<p>Neste passo vamos criar um arquivo .htaccess dentro do diretório do phpmyadmin (/usr/share/phpmyadmin/) e configurar um método de login baseado em usuário e senha armazenado no arquivo .htpasswd. Isso tudo é feito com o comando:</p>
<pre>echo -e 'AuthType Basic\nAuthName "Restricted Files"\nAuthUserFile /etc/phpmyadmin/.htpasswd\nRequire valid-user' | sudo tee -a /usr/share/phpmyadmin/.htaccess</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-502" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-phpmyadmin-htpasswd-protection.png" alt="ubuntu phpmyadmin htpasswd protection" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-phpmyadmin-htpasswd-protection.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-phpmyadmin-htpasswd-protection-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 22</h4>
<p>Agora precisamos criar o arquivo .htpasswd com os usuários que têm permissão de acesso da página de login do phpmyadmin. Para criar o primeiro usuário, utilize o comando:</p>
<pre>sudo htpasswd -c /etc/phpmyadmin/.htpasswd nomeusuario</pre>
<p>Lembre-se de substituir o &#8220;nomeusuario&#8221; do comando acima, para o nome de usuário de sua escolha. Para criar os demais usuários, utilize sempre este segundo comando:</p>
<pre>sudo htpasswd /etc/phpmyadmin/.htpasswd usuario2</pre>
<p>O prefixo -c do primeiro comando entende que o arquivo .htpasswd não existe, e desta forma cria o arquivo. Porém, se o arquivo já exista, o comando -c irá apagar o arquivo original e criar um arquivo novo. Então preste bastante atenção ao criar os demais usuários para não sobrescrever o arquivo de usuário/senha (htpasswd).<br />
Atenção! Anote os usuários e senhas criados nesta etapa, pois serão necessário para acessar a interface de login do phpmyadmin.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-504" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-first-user-htpasswd.png" alt="ubuntu create first user htpasswd" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-first-user-htpasswd.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-first-user-htpasswd-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-503" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-second-user-htpasswd.png" alt="ubuntu create second user htpasswd" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-second-user-htpasswd.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-second-user-htpasswd-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 23</h4>
<p>Agora vamos reiniciar o Apache para que a modificação do passo anterior tenha efeito:</p>
<pre>sudo service apache2 restart</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-501" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-apache2-restart.png" alt="ubuntu sudo service apache2 restart" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-apache2-restart.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-apache2-restart-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 24</h4>
<p>Agora acessando novamente o servidor pelo IP e url do phpmyadmin:</p>
<pre>http://192.168.1.104/phpmyadmin</pre>
<p>Repare que aparece um pedido de login antes da página de login do phpmyadmin. Esta primeira solicitação é diante do login criado na etapa do htpasswd. Este login do htpasswd fica salvo no cache, então, se estiver ativo no browser, provavelmente não pedirá login novamente se fechar e abrir a página do phpmyadmin. Mas se utilizar um browser diferente, reiniciar o computador, etc; será necessário realizar o login novamente.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-549" src="https://viniciuspaes.com/wp-content/uploads/2022/11/browser-htpasswd-login-window.png" alt="htpasswd login window" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/browser-htpasswd-login-window.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/browser-htpasswd-login-window-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 25</h4>
<p>Caso tenha realizado a etapa de segurança do .htaccess e .htpasswd corretamente e realizado a primeira etapa de login, agora basta inserir seu login e senha do phpmyadmin para acessar o banco de dados.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-548" src="https://viniciuspaes.com/wp-content/uploads/2022/11/browser-phpmyadmin-login-page.png" alt="phpmyadmin login page" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/browser-phpmyadmin-login-page.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/browser-phpmyadmin-login-page-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Instalação servidor FTP</h3>
<h4>Passo 26</h4>
<p>Neste tutorial vamos utilizar o software proftpd como servidor de FTP. Existem outros softwares disponíveis para a mesma finalidade. Para instalar, utilize o comando:</p>
<pre>sudo apt install proftpd</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-505" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-proftpd.png" alt="ubuntu sudo apt install proftpd" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-proftpd.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-proftpd-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 27</h4>
<p>Para a conexão FTP no servidor é possível utilizar seu usuário pessoal de login do linux com a senha do sistema. É possível também criar uma lista de usuários independente, para acesso somente por conexão FTP. Neste exemplo optamos por criar um usuário de sistema do linux:</p>
<pre>sudo useradd -m usuarioFTP1</pre>
<p>Após criar o usuário, precisamos definir/alterar sua senha:</p>
<pre>sudo passwd usuarioFTP1</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-507" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-useradd-m.png" alt="ubuntu sudo useradd -m user" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-useradd-m.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-useradd-m-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-506" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-passwd-user.png" alt="ubuntu sudo passwd user" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-passwd-user.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-passwd-user-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 28</h4>
<p>No seu computador pessoal, recomendamos que instale o software cliente de FTP chamado de Filezilla. Segue url do site para download do software:</p>
<pre>https://filezilla-project.org/download.php?type=client</pre>
<h4>Passo 29</h4>
<p>No seu computador pessoal, execute o programa FileZilla. No campo de host, coloque o IP do seu servidor. No campo de login, coloque o usuário de teste criado <strong>usuarioFTP1</strong>. No campo de senha, coloque a senha que selecionou para este usuário. Clique agora em QuickConnect ou Conexão Rápida. É possível que apareça um popup perguntando se deseja salvar a senhas, etc. Por segurança, não recomendo salvar nenhuma senha.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-550" src="https://viniciuspaes.com/wp-content/uploads/2022/11/filezilla-interface.png" alt="Filezilla interface" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/filezilla-interface.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/filezilla-interface-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 30</h4>
<p>Caso os passos tenham sido executados corretamente, a conexão entre cliente (computador pessoal) e servidor (servidor web) será bem sucedida. Para entender a interface do FileZilla, na figura do passo anterior, deixei selecionado em verde o lado esquerdo que são as pastas e arquivos do seu computador, e ao se conectar, do lado direito (em azul) serão as pastas e arquivos do servidor. Você poderá passar os arquivos de um lado para o outro como desejar. Caso apareça algum erro nessa operação de enviar arquivos, possivelmente é por permissão de escrita no diretório. Em um outro tutorial será explicado como entender tais permissões para organizar corretamente os arquivos. Mas por padrão, o usuário sempre terá acesso de leitura e escrita em sua pasta pessoal.</p>
<h4>Passo 31</h4>
<p>Uma etapa importante de segurança para o envio de arquivos por FTP é configurar encriptação TLS. No passo anterior o processo de envio e recebimento de arquivos já está funcional, mas os dados estão sendo enviados sem criptografia, podendo ser interceptados, assim como as credenciais de acesso ao servidor por FTP. Vamos então iniciar o processo de configuração de criptografia TLS, instalando o software openssl, caso ainda não tenha sido instalado:</p>
<pre>sudo apt install openssl</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-508" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-openssl.png" alt="ubuntu sudo apt install openssl" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-openssl.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-openssl-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 32</h4>
<p>Agora precisamos criar um certificado para ser utilizado na conexão. Vamos gerar uma chave de certificado e um certificado com validade de 10 anos:</p>
<pre>sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt -nodes -days 3650</pre>
<p>No processo de criação do certificado é necessário responder a estas perguntas:</p>
<ul>
<li>Sigla do País: BR</li>
<li>Estado: (escreva o nome do estado onde você ou o servidor está)</li>
<li>Cidade: (escreva o nome da cidade onde você ou o servidor está)</li>
<li>Nome da sua empresa: (pode utilizar seu nome pessoal se não tiver empresa)</li>
<li>Unidade da sua empresa: (matriz, filial, etc)</li>
<li>Nome do seu domínio: (ou o seu nome se não tiver domínio registrado)</li>
<li>Email: (usar um email ou um alias próprio para esta função, para evitar spam na sua caixa pessoal)</li>
</ul>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-557" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-tls-certificate-ftp-authentication-2048-bits.png" alt="ubuntu create tls certificate for proftpd with 2048 bits" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-tls-certificate-ftp-authentication-2048-bits.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-tls-certificate-ftp-authentication-2048-bits-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-558" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-tls-certificate-ftp-authentication-2048-bits-2.png" alt="ubuntu create tls certificate for proftpd with 2048 bits - part2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-tls-certificate-ftp-authentication-2048-bits-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-tls-certificate-ftp-authentication-2048-bits-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-556" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-tls-certificate-ftp-authentication-2048-bits-3.png" alt="ubuntu create tls certificate for proftpd with 2048 bits part 3" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-tls-certificate-ftp-authentication-2048-bits-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-tls-certificate-ftp-authentication-2048-bits-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 33</h4>
<p>Com o certificado criado, precisamos definir as permissões de arquivo corretas para a chave e certificado:</p>
<pre>sudo chmod 600 /etc/ssl/private/proftpd.key</pre>
<pre>sudo chmod 600 /etc/ssl/certs/proftpd.crt</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-511" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-chmod-600-certificate-files.png" alt="ubuntu sudo chmod 600 certificate files" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-chmod-600-certificate-files.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-chmod-600-certificate-files-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 34</h4>
<p>Nesta etapa vamos editar o arquivo de configuração do proftpd.</p>
<pre>sudo nano /etc/proftpd/proftpd.conf</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-512" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-proftpd.conf_.png" alt="ubuntu sudo nano proftpd.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-proftpd.conf_.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-proftpd.conf_-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 35</h4>
<p>Agora precisamos encontrar a linha: <strong>#Include /etc/proftpd/tls.conf</strong> e remover o caracter # do começo da linha. O caracter # transforma a linha em um “comentário”, desabilitando sua funcionalidade. Como queremos habilitar e encriptação TLS, precisamos “descomentar” a linha. Esta linha deve ficar da seguinte forma:</p>
<pre>Include /etc/proftpd/tls.conf</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-515" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-proftpd.conf-enable-tls.conf_.png" alt="ubuntu sudo nano proftpd.conf enable tls.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-proftpd.conf-enable-tls.conf_.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-proftpd.conf-enable-tls.conf_-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-514" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-proftpd.conf-enabled-tls.conf_.png" alt="ubuntu sudo nano proftpd.conf enabled tls.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-proftpd.conf-enabled-tls.conf_.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-proftpd.conf-enabled-tls.conf_-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 36</h4>
<p>No passo anterior habilitamos o proftpd a utilizar o arquivo de configuração tls.conf. Mas agora, precisamos editar este arquivo e verificar se as informações estão corretamente configuradas:</p>
<pre>sudo nano /etc/proftpd/tls.conf</pre>
<p>Com o arquivo aberto, precisamos descomentar as seguintes linhas:</p>
<pre>#TLSEngine			on
#TLSLog				/var/log/proftpd/tls.log
#TLSProtocol			SSLv23

#TLSRSACertificateFile		/etc/ssl/certs/proftpd.crt
#TLSRSACertificateKeyFile	/etc/ssl/private/proftpd.key

#TLSOptions			AllowClientRenegotiations	

#TLSRequired			on
</pre>
<p>Desta forma, é preciso remover o # destas linhas acima. Como resultado elas devem ficar:</p>
<pre>TLSEngine			on
TLSLog				/var/log/proftpd/tls.log
TLSProtocol			SSLv23

TLSRSACertificateFile		/etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile	/etc/ssl/private/proftpd.key

TLSOptions			AllowClientRenegotiations	

TLSRequired			on
</pre>
<p>Lembrando para não alterar as demais linhas do arquivo. Salve o arquivo e saia do editor nano.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-522" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf_.png" alt="ubuntu sudo nano tls.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf_.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf_-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-516" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-2.png" alt="ubuntu sudo nano tls.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-517" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-3.png" alt="ubuntu sudo nano tls.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-518" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-4.png" alt="ubuntu sudo nano tls.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-4.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-4-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-519" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-5.png" alt="ubuntu sudo nano tls.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-5.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-5-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-520" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-6.png" alt="ubuntu sudo nano tls.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-6.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-6-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-521" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-7.png" alt="ubuntu sudo nano tls.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-7.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-tls.conf-7-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 37</h4>
<p>Neste passo agora precisamos habilitar o módulo TLS dentro do arquivo modules.conf:</p>
<pre>sudo nano /etc/proftpd/modules.conf</pre>
<p>Agora encontre a linha <strong>#LoadModule mod_tls.c</strong> e remova o caracter #. Desta forma estamos “descomentando” a linha e habilitando o módulo mod_tls.c. Após editar a linha, esta deverá ficar como:</p>
<pre>LoadModule mod_tls.c</pre>
<p>Salve o arquivo e feche o editor nano.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-523" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-modules.conf_.png" alt="ubuntu sudo nano modules.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-modules.conf_.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-modules.conf_-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-524" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-modules.conf-2.png" alt="ubuntu sudo nano modules.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-modules.conf-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-modules.conf-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-525" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-modules.conf-3.png" alt="ubuntu sudo nano modules.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-modules.conf-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-modules.conf-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 38</h4>
<p>Para o TLS agora funcionar no proftpd, precisamos instalar o seu módulo de encriptação com o comando:</p>
<pre>sudo apt install proftpd-mod-crypto</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-526" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-proftpd-mod-crypto.png" alt="ubuntu sudo apt install proftpd-mod-crypto" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-proftpd-mod-crypto.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-proftpd-mod-crypto-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 39</h4>
<p>Para finalizar a configuração da encriptação TLS no FTP, precisamos reiniciar o serviço:</p>
<pre>sudo service proftpd restart</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-527" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-proftpd-restart.png" alt="ubuntu sudo service proftpd restart" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-proftpd-restart.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-proftpd-restart-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 40</h4>
<p>No seu computador pessoal agora conecte novamente ao seu servidor por FTP utilizando o FileZilla. Na primeira conexão será necessário aceitar o certificado criado. Repare no rodapé do FileZilla, ao se conectar no servidor com criptografia, um cadeado irá aparecer.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-550" src="https://viniciuspaes.com/wp-content/uploads/2022/11/filezilla-interface.png" alt="Filezilla interface" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/filezilla-interface.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/filezilla-interface-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-560" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-working-tls-certificate-ftp-accept-window-filezilla.png" alt="proftpd ftp certificado for tls" width="768" height="689" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-working-tls-certificate-ftp-accept-window-filezilla.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-working-tls-certificate-ftp-accept-window-filezilla-300x269.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-561" src="https://viniciuspaes.com/wp-content/uploads/2022/11/filezilla-interface-connected-user-with-tls.png" alt="filezilla connected user with tls" width="768" height="600" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/filezilla-interface-connected-user-with-tls.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/filezilla-interface-connected-user-with-tls-300x234.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h3>Instalando PHP FastCGI Process Manager: PHP-FPM</h3>
<h4>Passo 41</h4>
<p>Nesta estapa opcional, como estamos utilizando o servidor http Apache, temos a opção de trocar o interpretador PHP do Apache, pelo FastCGI. É uma etapa recomendada, pois o PHP-FPM garante diversas vantagens para processamento dos arquivos PHP, além de auxiliar em permissões de arquivos gerenciadas pelo servidor HTTP. Se pretende utilizar WordPress em seu servidor, é uma etapa altamente recomendada, para não ter dor de cabeça com permissão de arquivos, instalação de plugins, temas, updates, etc.<br />
Para instalar o PHP-FPM, utilize o comando:</p>
<pre>sudo apt install php-fpm</pre>
<p>Durante a instalação é importante reparar qual versão do PHP-FPM está sendo instalada, pois o número da versão impacta no caminho dos arquivos que vamos precisar editar e habilitar.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-529" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-php-fm.png" alt="ubuntu sudo apt install php-fm" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-php-fm.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-apt-install-php-fm-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 42</h4>
<p>Agora precisamos habilitar alguns módulos do apache, utilizando o comando:</p>
<pre>sudo a2enmod proxy_fcgi setenvif</pre>
<p>Estes módulos servem para gerenciar o proxy interno utilizado pelo PHP-FPM e as variáveis de ambiente internas.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-530" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-a2enmod-proxy-fcgi-setenvif.png" alt="ubuntu a2enmod proxy-fcgi setenvif" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-a2enmod-proxy-fcgi-setenvif.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-a2enmod-proxy-fcgi-setenvif-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 43</h4>
<p>Agora vamos habilitar o PHP-FPM instalado. Como neste exemplo utilizamos a versão 8.1, o comando fica como:</p>
<pre>sudo a2enconf php8.1-fpm</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-531" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-a2enconf-php8.1-fpm.png" alt="ubuntu sudo a2enconf php8.1-fpm" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-a2enconf-php8.1-fpm.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-a2enconf-php8.1-fpm-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 44</h4>
<p>Agora é necessário reiniciar o servidor http, para que os módulos sejam ativados:</p>
<pre>sudo service apache2 restart</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-501" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-apache2-restart.png" alt="ubuntu sudo service apache2 restart" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-apache2-restart.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-apache2-restart-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 45</h4>
<p>Agora precisamos criar uma pool para o acesso a páginas php do servidor. Como não temos SSL instalado neste momento, nem mesmo um domínio, esta etapa surtirá efeito para o acesso ao servidor pelo IP, e sem ssl. Primeiramente vamos navegar até a pasta do php:</p>
<pre>sudo cd /etc/php</pre>
<p>Agora vamos verificar quais arquivos e diretórios existem dentro da pasta do php:</p>
<pre>ls -lah</pre>
<p>Neste exemplo, temos a versão 8.1 do php instalada, que podemos verificar pelo diretório presente.<br />
Sabendo então qual a versão do php instalada, vamos direto para o diretório do PHP-FPM desta versão do php:</p>
<pre>cd /etc/php/8.1/fpm/pool.d/</pre>
<p>Agora precisamos criar/editar uma pool para o PHP-FPM. Vamos primeiro verificar se já existe alguma pool configurada dentro do diretório:</p>
<pre>ls -lah</pre>
<p>Verificamos a existência do arquivo www.conf. Que é a pool padrão ao instalar o PHP-FPM.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-532" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-cd-etc-php.png" alt="ubuntu cd /etc/php" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-cd-etc-php.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-cd-etc-php-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-534" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-ls-lah-php-directory.png" alt="ls -lah /etc/php" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-ls-lah-php-directory.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-ls-lah-php-directory-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-533" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-cd-php-fpm-pool-d.png" alt="cd /etc/php/8.1/fpm/pool.d/" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-cd-php-fpm-pool-d.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-cd-php-fpm-pool-d-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-535" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-ls-lah-pool-d.png" alt="ls -lah /etc/php/8.1/fpm/pool.d/" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-ls-lah-pool-d.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-ls-lah-pool-d-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 46</h4>
<p>Vamos editar o arquivo de pool www.conf, com o editor nano:</p>
<pre>sudo nano www.conf</pre>
<p>Dentro do arquivo www.conf, temos a opção de alterar diversas configurações. Mas nesta etapa é importante mudar somente o usuário que será responsável em executar os arquivos pelo servidor HTTP. No meu caso, meu usuário de exemplo (viniciuspaes) é o responsável por todos os arquivos dentro da pasta /var/www/, onde são publicadas as páginas web do servidor. Como pretendo utilizar o wordpress neste servidor, já vou alterar esta pool, definindo o usuário como viniciuspaes. Posteriormente, quando tivermos vários domínios configurados no servidor, com permissão de usuário para cada pasta distinta de cada site, podemos criar uma pool individual para cada site e definir um usuário distinto. Pensando em um servidor compartilhado com várias equipes, faz sentido este setup posterior. Então, para este exemplo, vou alterar a linha <strong>user = www-data</strong> para:</p>
<pre>user = viniciuspaes</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-536" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-www.conf_.png" alt="ubuntu sudo nano www.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-www.conf_.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-www.conf_-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-537" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-www.conf-2.png" alt="ubuntu sudo nano www.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-www.conf-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-www.conf-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-538" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-www.conf-3.png" alt="ubuntu sudo nano www.conf" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-www.conf-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-www.conf-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 47</h4>
<p>Agora vamos habilitar suporte ao HTTP 2. Nesta etapa vamos habilitar o módulo:</p>
<pre>sudo a2enmod http2</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-539" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-a2enmod-http2.png" alt="ubuntu sudo a2enmod http2" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-a2enmod-http2.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-a2enmod-http2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 48</h4>
<p>Agora precisamos reiniciar o serviço do PHP-FPM. Como estou com a versão 8.1 instalada, utilizo o comando:</p>
<pre>sudo service php8.1-fpm restart</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-540" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-php-fpm-restart.png" alt="ubuntu sudo service php fpm restart" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-php-fpm-restart.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-php-fpm-restart-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 49</h4>
<p>Como comentei em um dos passos anteriores, só estamos acessando o site pelo IP, pois não temos domínios configurados. Então neste momento, só vamos ativar o HTTP 2 para acesso por IP e sem criptografia SSL (https). Para isso, vamos editar o arquivo padrão de acesso ao servidor:</p>
<pre>sudo nano /etc/apache2/sites-available/000-default.conf</pre>
<p>Abaixo da linha <strong>DocumentRoot /var/www/html</strong>, insira o texto:</p>
<pre>Protocols h2 http/1.1</pre>
<p>Salve o arquivo e feche o editor nano.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-541" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-000-default.png" alt="ubuntu sudo nano 000-default" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-000-default.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-000-default-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-542" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-000-default-2.png" alt="ubuntu sudo nano 000-default" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-000-default-2.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-000-default-2-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-543" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-000-default-3.png" alt="ubuntu sudo nano 000-default" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-000-default-3.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-nano-000-default-3-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 50</h4>
<p>Agora reinicie o servidor HTTP e o PHP-FPM:</p>
<pre>sudo service php8.1-fpm restart</pre>
<pre>sudo service apache2 restart</pre>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-540" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-php-fpm-restart.png" alt="ubuntu sudo service php fpm restart" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-php-fpm-restart.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-php-fpm-restart-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-501" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-apache2-restart.png" alt="ubuntu sudo service apache2 restart" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-apache2-restart.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-sudo-service-apache2-restart-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 51</h4>
<p>Agora vamos verificar se a instalação do PHP-FPM está funcional. Caso não tenha um arquivo info.php criado na sua pasta de publicação de páginas do servidor, utilize o comando:<br />
<script src="https://gist.github.com/viniciuspaes/e5729a61d4d7eb7449d309b32cb9f8cd.js"></script></p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-488" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-phpinfo-file.png" alt="ubuntu create phpinfo file" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-phpinfo-file.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-create-phpinfo-file-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h4>Passo 52</h4>
<p>No seu computador pessoal, abra o browser de internet, acesse o IP do seu site seguido de /info.php. No meu exemplo, será:</p>
<pre>http://192.168.1.104/info.php</pre>
<p>Caso tenha feito os passos de forma correta, na linha Server API é possível verificar FPM/FastCGI. Desta forma o PHP-FPM foi instalado e configurado corretamente.</p>
<p class="cimg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-551" src="https://viniciuspaes.com/wp-content/uploads/2022/11/browser-phpinfo-fpm-fastcgi.png" alt="Phpinfo FPM FastCGI" width="768" height="432" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/browser-phpinfo-fpm-fastcgi.png 768w, https://viniciuspaes.com/wp-content/uploads/2022/11/browser-phpinfo-fpm-fastcgi-300x169.png 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></p>
<h2>Considerações Finais &#8211; Questões de Segurança</h2>
<ul>
<li>Criamos o usuarioFTP1 de exemplo para acesso ao FTP, se não for utilizá-lo, lembre-se de deletar o usuário:</li>
</ul>
<pre>sudo userdel usuarioFTP1</pre>
<ul>
<li>Utilizamos uma senha padrão @@@mudar123 para o usuário root do MySQL. Se não atualizou esta senha para uma mais forte, lembre-se de fazer.</li>
<li>Criamos o arquivo info.php para verificar a instalação do php. Lembre-se de remover este arquivo após o fim deste tutorial:</li>
</ul>
<pre>sudo rm /var/www/html/info.php</pre>
<h2>Conclusões</h2>
<p>Partindo de base que já possui um computador local ou remoto com uma distribuição linux ubuntu instalada e com acesso SSH, este tutorial ensinou os passos para instalar uma configuração LAMP típica.<br />
O servidor está pronto para receber e hospedar websites na pasta /var/www/html. Para os próximos passos, é importante entender como configurar domínios no servidor. Configurar uma pool distinta do PHP-FPM para cada domínio. Entender como funcionam as permissões de arquivos para que os websites fiquem funcionais. Caso tenha o desejo de utilizar sites com o CMS WordPress no seu servidor configurado, basta ficar atento nas publicações, que um tutorial está a caminho.<br />
Revisando as instalações realizadas neste tutorial: Banco de Dados MySQL, Linguagem programação PHP, interface web para gerenciamento do banco de dados: Phpmyadmin, servidor HTTP apache (apache2), segunda camada de login no phpmyadmin com htaccess e htpasswd e interpretador php PHP-FPM FastCGI.</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-instalar-configurar-servidor-web-http-ubuntu-apache-mysql-php-ftp-tls-php-fpm/">Tutorial instalar e configurar servidor web (HTTP) no Ubuntu com Apache, MySQL, PHP, FTP, TLS e PHP-FPM</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/linux/tutorial-instalar-configurar-servidor-web-http-ubuntu-apache-mysql-php-ftp-tls-php-fpm/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Tutorial setup Servidor Linux Ubuntu Local com VirtualBox</title>
		<link>https://viniciuspaes.com/linux/tutorial-setup-servidor-linux-ubuntu-local-virtualbox/</link>
					<comments>https://viniciuspaes.com/linux/tutorial-setup-servidor-linux-ubuntu-local-virtualbox/#respond</comments>
		
		<dc:creator><![CDATA[viniciuspaes]]></dc:creator>
		<pubDate>Wed, 16 Nov 2022 18:44:44 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[máquina virtual]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[virtualbox]]></category>
		<guid isPermaLink="false">https://viniciuspaes.com/?p=315</guid>

					<description><![CDATA[<p>Tutoria com passo a passo para instalar e configurar servidor local com virtualbox e Linux Ubuntu.</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-setup-servidor-linux-ubuntu-local-virtualbox/">Tutorial setup Servidor Linux Ubuntu Local com VirtualBox</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Objetivos:</h2>
<ul>
<li>Entender o que é um servidor</li>
<li>Ser apresentado sobre o software Virtual Box</li>
<li>Saber o que significa um servidor local</li>
<li>Ficar ciente das vantagens de um servidor local</li>
<li>Passo a passo para configurar um servidor local em máquina virtual no virtualbox</li>
</ul>
<h2>O que é um servidor?</h2>
<p>Um servidor, no âmbito de computação, pode ser entendido como um computador, ou conjunto de computadores que provê alguma funcionalidade ou serviço. Em caso geral, servidores são conectados a internet ou uma rede local e podem prover serviços a diversos usuários. Alguns exemplos de serviços:</p>
<ul>
<li>Servidor de arquivos: provê acesso a arquivos para usuários ligados em rede</li>
<li>Servidor de páginas ou servidor http: provê acesso a sites</li>
<li>Servidor de email: provê serviço de envio e recebimento de email</li>
<li>Combinação de serviços: arquivos, sites, mídia,  email, etc.</li>
</ul>
<p>Então, como explicado, o servidor tem 2 aspectos: hardware e software:</p>
<ul>
<li>Na visão de <strong>hardware,</strong> ele é um computador; possui recursos como memória, processamento, armazenamento, etc.</li>
<li>Na visão de <strong>software</strong>, ele é um serviço; podendo servir arquivos, páginas de websites, email, vídeos, banco de dados, etc.</li>
</ul>
<h2>O que é o Virtual Box?</h2>
<p>É um software de computador que permite a criação de máquinas virtuais ou computadores virtuais. É uma abstração de todo hardware de um computador em um formato de software. É um software multiplataforma, ou seja, está disponível para diversos tipos de sistemas operacionais: Microsoft Windows, Apple Mac OS, Linux, Oracle Solaris.</p>
<h2>O que é um servidor local?</h2>
<p>Segue a mesma definição de servidor mostrada acima, com a particularidade deste servidor só prover serviços dentro de uma rede local (LAN). Ou seja, seu servidor local pode prover serviços para os computadores, celulares, smart TV’s que estiverem conectados no seu roteador da sua rede dentro da sua casa ou sua empresa. Com o auxílio do virtualbox, podemos passar por todas as etapas de configuração de uma máquina virtual, para deixá-la disponível para se tornar um servidor local.</p>
<h2>Qual a vantagem de ter um servidor local?</h2>
<p>Não seria melhor já ter um servidor na internet/cloud ao invés de um servidor local? Um servidor local pode ser vantajoso em prover serviços restritos a sua rede local, garantindo mais segurança e melhor desempenho de transferência de arquivos, pois a rede local tem velocidade de conexão maior. Outra vantagem é o aprendizado com baixo custo. É possível aprender todas as etapas de setup do servidor de forma local e posteriormente estar mais capacitado e confiante em ter seu próprio servidor em cloud/internet.</p>
<h2>Quais os passos para configurar um servidor local com Virtualbox?</h2>
<h3>Passo 1</h3>
<p>Abra o aplicativo virtualbox, previamente instalado. Caso ainda não tenha instalado, acesse este <a href="https://viniciuspaes.com/software/tutorial-instalar-virtual-box-criacao-maquinas-virtuais/">tutorial de instalação do virtualbox</a>.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-309" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox.png" alt="Software Virtualbox" width="649" height="368" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox.png 649w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-300x170.png 300w" sizes="auto, (max-width: 649px) 100vw, 649px" /></p>
<h3>Passo 2</h3>
<p>Na tela principal do virtualbox, clique no ícone de “novo”.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-318" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-nova-maquina-virtual.png" alt="Criar nova máquina virtual" width="650" height="370" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-nova-maquina-virtual.png 650w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-nova-maquina-virtual-300x171.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></p>
<h3>Passo 3</h3>
<p>Nesta tela selecione o nome para sua máquina virtual, a pasta onde irá salvar os arquivos da máquina virtual, o tipo do sistema operacional e se o sistema operacional será de 32 ou 64 bits. Neste exemplo vamos seguir com o seguinte setup:</p>
<ul>
<li>Nome: VPS</li>
<li>Pasta: (pasta padrão selecionada pelo virtualbox)</li>
<li>Sistema Operacional: Linux (Ubuntu Server ou Ubuntu minimal installation)</li>
<li>Versão: 64 bits</li>
</ul>
<p>Neste tutorial utilizamos a versão minimal installation do ubuntu (<strong>mini.iso</strong>):</p>
<pre><a href="http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/" target="_blank" rel="noopener noreferrer">http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/</a></pre>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-320" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-criar-vm-nome-os.png" alt="Nome e Sistema Operacional Máquina Virtual" width="650" height="370" /></p>
<h3>Passo 4</h3>
<p>Nesta etapa vamos selecionar a quantidade de memória ram que desejamos compartilhar com a máquina virtual. É interessante ter pelo menos 1GB de memória ram, para que o servidor possa funcionar sem a necessidade de paginação na unidade de armazenamento e garantir um desempenho satisfatório.<br />
Caso seu computador tenha uma unidade de SSD e tenha apenas 4GB de ram no total, é possível diminuir a memória ram da máquina virtual para 512MB e ainda assim garantir um desempenho mínimo satisfatório.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-322" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-criar-vm-ram-cpu.png" alt="Definir ram e cpu compartilhada virtualbox" width="650" height="370" /></p>
<h3>Passo 5</h3>
<p>Nesta etapa é necessário definir a unidade de armazenamento para a máquina virtual.  A vantagem de pré-alocar o tamanho do disco virtual é garantir aquele espaço no disco real. É importante criar um disco virtual com pelo menos 10GB de espaço, para utilizar o servidor de forma didática, para ter pelo menos ~2GB de espaço livre para arquivos pessoais, arquivos de sites, etc.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-326" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-criar-vm-armazenamento.png" alt="Criar unidade de armazenamento virtualbox" width="650" height="370" /></p>
<h3>Passo 6</h3>
<p>Este é um resumo dos dados da máquina virtual. Revise se está tudo correto e finalize o setup.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-329" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-criar-vm-resumo.png" alt="Virtuabol resumo criação máquina virtual" width="650" height="370" /></p>
<h3>Passo 7</h3>
<p>Nesta etapa já temos a máquina virtual criada e voltamos então para a tela inicial do virtualbox.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-333" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-vm-criada.png" alt="Virtualbox - máquina virtual criada" width="650" height="370" /></p>
<h3>Passo 8</h3>
<p>Na tela inicial do Virtualbox agora selecione a máquina virtual e depois clique no ícone de Iniciar.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-335" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-iniciar-vm.png" alt="Iniciar Máquina Virtual Virtualbox" width="650" height="370" /></p>
<h3>Passo 9</h3>
<p>Com a máquina virtual em execução, a imagem do Sistema Operacional será iniciada. Escolha a opção de iniciar a instalação: Install</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-337" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-tela-inicial-instalacao.png" alt="Tela inicial instalação ubuntu" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-tela-inicial-instalacao.png 640w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-tela-inicial-instalacao-300x225.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 10</h3>
<p>Nesta etapa escolha o idioma desejado e dependendo do idioma pode receber uma mensagem que este o setup de instalação pode não estar totalmente traduzido. Clique em continuar caso aconteça.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-339" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolha-idioma-instalacao.png" alt="Escolha idioma instalação ubuntu" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolha-idioma-instalacao.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolha-idioma-instalacao-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolha-idioma-instalacao-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-343" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmacao-talvez-nao-esteja-totalmente-traduzido.png" alt="Instalação ubuntu - talvez instalados não esteja totalmente traduzido" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmacao-talvez-nao-esteja-totalmente-traduzido.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmacao-talvez-nao-esteja-totalmente-traduzido-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmacao-talvez-nao-esteja-totalmente-traduzido-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 11</h3>
<p>Escolha o país e território onde você está. Esta localidade é interessante para que o fuso horário seja configurado corretamente.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-355" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-sua-localidade.png" alt="Instalação ubuntu - escolher sua localidade" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-sua-localidade.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-sua-localidade-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-sua-localidade-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 12</h3>
<p>Esta é uma etapa importante, para que o instalador detecte o layout do seu teclado. Siga as opções corretamente.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-356" src="https://viniciuspaes.com/wp-content/uploads/2022/11/instalador-ubuntu-detectar-layout-teclado.png" alt="Instalador Ubuntu detectar layout do teclado" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/instalador-ubuntu-detectar-layout-teclado.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/instalador-ubuntu-detectar-layout-teclado-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/instalador-ubuntu-detectar-layout-teclado-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-357" src="https://viniciuspaes.com/wp-content/uploads/2022/11/instalador-ubuntu-layout-teclado-identificado.png" alt="Instalador Ubuntu - layout do teclado identificado" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/instalador-ubuntu-layout-teclado-identificado.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/instalador-ubuntu-layout-teclado-identificado-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/instalador-ubuntu-layout-teclado-identificado-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 13</h3>
<p>Nesta etapa você poderá escolher um nome para o seu servidor. Particularmente gosto de utilizar o mesmo nome que coloco na minha máquina virtual. Mas pode escolher a opção que mais agradar. Uma opção é manter o nome padrão, que é ubuntu.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-359" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-nome-para-servidor.png" alt="Escolher nome para computador na instalação do ubuntu" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-nome-para-servidor.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-nome-para-servidor-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-nome-para-servidor-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 14</h3>
<p>Nesta etapa é preciso informar em qual país está, ou qual país tem preferência que seja escolhido o espelho de download dos pacotes adicionais de instalação do sistema operacional. Após escolher o país, e na tela seguinte aparecer o espelho de download, tecle em continuar.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-361" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-pais-repositorio-download.png" alt="Escolher o país onde o espelho de download do respositório está mais próximo" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-pais-repositorio-download.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-pais-repositorio-download-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-pais-repositorio-download-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-362" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolha-espelho-repositorio.png" alt="Ubuntu - confirmando espelho de repositório para download" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolha-espelho-repositorio.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolha-espelho-repositorio-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolha-espelho-repositorio-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 15</h3>
<p>Caso utilize um proxy em sua conexão de rede, informe nesta etapa, caso contrário deixe em branco e selecione continuar.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-363" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-setup-proxy-caso-utilize.png" alt="Ubuntu - setup de conexão proxy, caso utilize" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-setup-proxy-caso-utilize.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-setup-proxy-caso-utilize-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-setup-proxy-caso-utilize-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 16</h3>
<p>Esta etapa é referente a identificação do usuário administrador do servidor. Não é um nome para ser feito de login, e sim realmente identificar o responsável. Seu nome completo pode ser uma opção, mas para um servidor em produção, revelar seu nome completo pode não ser uma boa opção de segurança.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-364" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-definir-nome-administrados-servidor.png" alt="Ubuntu - definir o nome do administrador do servidor" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-definir-nome-administrados-servidor.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-definir-nome-administrados-servidor-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-definir-nome-administrados-servidor-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 17</h3>
<p>Nesta etapa é necessário criar um nome de usuário para ter privilégios de root para administrar o servidor. É uma etapa importante, anote o nome de usuário criado nesta etapa, pois este será necessário para login.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-365" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-criar-nome-usuario-login.png" alt="Ubuntu escolher nome de login" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-criar-nome-usuario-login.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-criar-nome-usuario-login-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-criar-nome-usuario-login-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 18</h3>
<p>Agora é necessário definir uma senha para seu usuário de login e em seguida confirmar novamente a senha. Etapa importante, anote a senha para não esquecer no momento de login.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-366" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-senha.png" alt="Ubuntu - escolher senha par alogin" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-senha.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-senha-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-senha-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-367" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmar-senha.png" alt="Ubuntu - confirmar senha de login" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmar-senha.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmar-senha-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmar-senha-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-368" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmar-senha-fraca.png" alt="Ubuntu - confirmar senha fraca" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmar-senha-fraca.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmar-senha-fraca-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmar-senha-fraca-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 19</h3>
<p>Nesta etapa é necessário confirmar o fuso horário (time zone), o instalador tenta configurar automaticamente, mas se estiver incorreto, é possível escolher o fuso de uma lista. Se estiver correto, basta continuar com a instalação.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-370" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-fuso-horario-timezone.png" alt="Ubuntu - escolher fuso horário do servidor - timezone" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-fuso-horario-timezone.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-fuso-horario-timezone-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-fuso-horario-timezone-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 20</h3>
<p>Esta etapa é referente às partições para instalação do sistema operacional na unidade de armazenamento. Para um setup customizado, é possível selecionar a forma manual e definir um caminho específico para cada pasta do sistema em uma partição distinta, ou até mesmo dividir em várias unidades de disco virtuais. Mas neste exemplo de instalação, vamos utilizar a primeira opção, com o modelo assistido, utilizando todo o disco.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-371" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-particoes-instalacao.png" alt="Ubuntu - escolher layout de partções" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-particoes-instalacao.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-particoes-instalacao-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolher-particoes-instalacao-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 21</h3>
<p>Selecione agora o disco a ser utilizado, só configuramos um, então só terá uma opção.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-373" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmando-unidade-armazenamento.png" alt="Ubuntu - confirmando unidade de armazenamento a ser utilizada" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmando-unidade-armazenamento.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmando-unidade-armazenamento-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmando-unidade-armazenamento-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 22</h3>
<p>Agora confirme a divisão do disco nas partições que foram automaticamente criadas.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-374" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmando-layout-particoes.png" alt="Ubuntu - confirmando layout particoes" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmando-layout-particoes.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmando-layout-particoes-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmando-layout-particoes-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 23</h3>
<p>Nesta etapa é interessante desativarmos as atualizações automáticas, para que seja possível realizar os updates e upgrades de forma manual, acompanhar o processo e entender como funciona. Posteriormente é possível ativá-las.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-375" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-opcao-atualizacoes-automaticas.png" alt="Ubuntu - opção de atualizações automáticas" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-opcao-atualizacoes-automaticas.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-opcao-atualizacoes-automaticas-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-opcao-atualizacoes-automaticas-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 24</h3>
<p>Podemos também escolher softwares adicionais para já serem instalados no sistema. Para uma instalação limpa, recomendo somente a instalação do <strong>OpenSSH server</strong>.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-376" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolha-softwares-adicionais.png" alt="Ubuntu - escolhendo instalação openssh server" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolha-softwares-adicionais.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolha-softwares-adicionais-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-escolha-softwares-adicionais-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 25</h3>
<p>Como esta instalação possui apenas um sistema operacional na unidade de disco da máquina virtual, podemos instalar sem problemas o GRUB. Caso tivesse outro sistemas operacionais instalados, seria necessário configurar corretamente o GRUB para identificar todos os sistemas e prover opção de escolher em qual unidade de disco e partição gostaria de iniciar o sistema operacional, caso presente.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-380" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-configurar-grub.png" alt="Ubuntu - configurar GRUB" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-configurar-grub.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-configurar-grub-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-configurar-grub-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 26</h3>
<p>Recomendado configurar o relógio no padrão de fuso UTC.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-377" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmando-fuso-padrao-utc.png" alt="Ubuntu - confirmando fuso horário no padrão UTC" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmando-fuso-padrao-utc.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmando-fuso-padrao-utc-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-confirmando-fuso-padrao-utc-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 27</h3>
<p>Instalação realizada com sucesso. Igual em um computador físico, o instalador pede para remover o “CD-ROM” do drive de disco óptico.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-378" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-instalacao-completa-remover-imagem-disco-cdrom.png" alt="Ubuntu - instalação completa - remover imagem de disco de boot de cdrom" width="640" height="480" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-instalacao-completa-remover-imagem-disco-cdrom.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-instalacao-completa-remover-imagem-disco-cdrom-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-instalacao-completa-remover-imagem-disco-cdrom-768x576.png 768w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<h3>Passo 28</h3>
<p>Antes da máquina virtual realizar o boot novamente, feche a janela da máquina virtual e selecione desligar a máquina virtual e clique em OK.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-382" src="https://viniciuspaes.com/wp-content/uploads/2022/11/desligar-maquina-virtual.png" alt="Virtualbox - desligar máquina virtual" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/desligar-maquina-virtual.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/desligar-maquina-virtual-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 29</h3>
<p>Agora é necessário remover o disco óptico virtual (mini.iso) da máquina virtual. Na tela inicial do virtual box, clique uma vez na máquina virtual com o botão esquerdo do mouse e depois clique no ícone configurações. Na tela de configurações, selecione a opção armazenamento no menu lateral.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-383" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-configuracoes.png" alt="Virtulbox - configurações" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-configuracoes.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-configuracoes-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-384" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-configuracoes-selecionar-armazenamento.png" alt="Virtualbox - configurações - armazenamento" width="793" height="488" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-configuracoes-selecionar-armazenamento.png 793w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-configuracoes-selecionar-armazenamento-300x185.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-configuracoes-selecionar-armazenamento-768x473.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></p>
<h3>Passo 30</h3>
<p>Com a opção armazenamento selecionada no menu lateral, clique com o botão esquerdo em cima da imagem do CD (mini.iso) e em seguida clique no CD que fica a direita da janela e selecione remover Disco do Drive Virtual. E aperte “OK” para fechar a janela de configurações.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-385" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-remover-midia-optica.png" alt="Virtualbox - remover mídia optica" width="1047" height="488" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-remover-midia-optica.png 1047w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-remover-midia-optica-300x140.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-remover-midia-optica-1024x477.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-remover-midia-optica-768x358.png 768w" sizes="auto, (max-width: 1047px) 100vw, 1047px" /></p>
<h3>Passo 31</h3>
<p>Na tela inicial do virtualbox, selecione a máquina virtual e clique no ícone de Iniciar.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-390" src="https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-iniciar-maquina-virtual.png" alt="Virtualbox - iniciar maquina virtual" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-iniciar-maquina-virtual.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-iniciar-maquina-virtual-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 32</h3>
<p>Agora digite o login e senha que foram definidos na etapa de instalação da máquina virtual.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-420" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-login-screen.png" alt="Ubuntu login screen" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-login-screen.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-login-screen-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 33</h3>
<p>Tudo certo! Máquina virtual criada e sistema operacional instalado. Login com usuário e senha no ubuntu realizado com sucesso!</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-429" src="https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-login-realizado.png" alt="Virtualbox - login máquina virtual realizado" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-login-realizado.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-login-realizado-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 34</h3>
<p>Para verificar o ip da sua máquina virtual digite o comando:</p>
<pre>ip a</pre>
<p>Caso tenha instalado uma versão mais antiga do Ubuntu, utilize o comando:</p>
<pre>ifconfig</pre>
<p>Como é possível reparar, seu IP da máquina virtual não é um IP no mesmo padrão do seu computador ou da sua rede pessoal. Se este for o caso, a sua máquina virtual está configurada para compartilhar a conexão de internet do hospedeiro por NAT. Mas o ideal é a máquina virtual ter um IP próprio vindo do seu roteador, para que outros computadores da rede possam se conectar a ela sem problemas. Desta forma é necessário que sua máquina virtual faça uma ponte “bridge” da sua placa de rede física para conseguir um IP diretamente do roteador (no caso de DHCP configurado).</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-433" src="https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-ip-a-NAT.png" alt="Virtualbox - ip a NAT" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-ip-a-NAT.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-ip-a-NAT-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 35</h3>
<p>Então, antes de mudar as características do adaptador de rede da máquina virtual, precisamos desligar a máquina. Desta vez, vamos desligar ela pela linha de comando, utilizando:</p>
<pre>sudo shutdown now</pre>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-431" src="https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-sudo-shutdown-now.png" alt="Virtualbox - sudo shutdown now" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-sudo-shutdown-now.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-sudo-shutdown-now-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 36</h3>
<p>De volta na tela inicial do virtualbox, selecione a máquina virtual e depois clique no ícone de Configurações.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-383" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-configuracoes.png" alt="Virtulbox - configurações" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-configuracoes.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-configuracoes-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-392" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-configuracoes-selecionar-rede.png" alt="Virtualbox - configurações - selecionar rede" width="793" height="488" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-configuracoes-selecionar-rede.png 793w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-configuracoes-selecionar-rede-300x185.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-configuracoes-selecionar-rede-768x473.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></p>
<h3>Passo 37</h3>
<p>Na tela de configurações, escolha a opção rede no menu lateral, em seguida selecione o adaptador 1. Repare que a placa de rede está conectado a NAT.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-394" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-mudar-rede-nat-para-bridge.png" alt="Virtualbox - configuração de rede" width="793" height="488" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-mudar-rede-nat-para-bridge.png 793w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-mudar-rede-nat-para-bridge-300x185.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-mudar-rede-nat-para-bridge-768x473.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></p>
<h3>Passo 38</h3>
<p>Ainda no menu de configurações de rede, mude a conexão de NAT para bridge. E aperte OK para voltar novamente para a tela inicial do virtualbox.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-396" src="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-placa-rede-bridge.png" alt="Placa de rede em bridge" width="793" height="488" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-placa-rede-bridge.png 793w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-placa-rede-bridge-300x185.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/software-virtualbox-placa-rede-bridge-768x473.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></p>
<h3>Passo 39</h3>
<p>Inicie novamente a máquina virtual, clicando no ícone de iniciar.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-390" src="https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-iniciar-maquina-virtual.png" alt="Virtualbox - iniciar maquina virtual" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-iniciar-maquina-virtual.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-iniciar-maquina-virtual-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 40</h3>
<p>Realize o login novamente.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-420" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-login-screen.png" alt="Ubuntu login screen" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-login-screen.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-login-screen-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 41</h3>
<p>Para verificar o ip da sua máquina virtual digite o comando:</p>
<pre>ip a</pre>
<p>Caso tenha instalado uma versão mais antiga do Ubuntu, utilize o comando:</p>
<pre>ifconfig</pre>
<p>Se os passos forem executados de forma correta, sua máquina virtual agora conseguiu pegar um IP por DHCP do seu roteador na sua rede local.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-417" src="https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-ip-a-bridge.png" alt="Virtualbox ip a modo bridge" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-ip-a-bridge.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-ip-a-bridge-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 42</h3>
<p>Agora digite o comando:</p>
<pre>exit</pre>
<p>Este comando realiza o logout do seu usuário.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-419" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-exit.png" alt="Ubuntu exit command" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-exit.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-exit-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 43</h3>
<p>Agora no seu computador pessoal, execute o prompt de comando.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-402" src="https://viniciuspaes.com/wp-content/uploads/2022/11/prompt.png" alt="Windows - prompt de comando" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/prompt.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/prompt-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 44</h3>
<p>Temos então que testar a conexão ssh com seu servidor. Para realizar essa conexão, é necessário saber o login, senha e ip do servidor. Sendo então, como exemplo, o usuário = seunome, o IP = 192.168.1.104; utilize o comando no prompt:</p>
<pre> ssh seunome@192.168.1.104</pre>
<p>Na primeira vez que realizar a conexão, será necessário aceitar o fingerprint.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-405" src="https://viniciuspaes.com/wp-content/uploads/2022/11/conexao-ssh.png" alt="Conectar servidor por SSH" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/conexao-ssh.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/conexao-ssh-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 45</h3>
<p>Caso os passos tenham sido realizados corretamente, agora você deverá estar conectado por SSH no servidor na máquina virtual.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-407" src="https://viniciuspaes.com/wp-content/uploads/2022/11/login-ssh-servidor.png" alt="Conexão SSH servidor bem sucedida" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/login-ssh-servidor.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/login-ssh-servidor-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 46</h3>
<p>Um passo interessante agora é verificar os updates disponíveis com o comando</p>
<pre>sudo apt update</pre>
<p>e posteriormente realizar o download e instalar os updates disponíveis com o comando:</p>
<pre>sudo apt upgrade</pre>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-410" src="https://viniciuspaes.com/wp-content/uploads/2022/11/sudo-apt-update.png" alt="sudo apt update" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/sudo-apt-update.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/sudo-apt-update-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-409" src="https://viniciuspaes.com/wp-content/uploads/2022/11/sudo-apt-upgrade.png" alt="Sudo apt upgrade" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/sudo-apt-upgrade.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/sudo-apt-upgrade-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 47</h3>
<p>Uma etapa final muito importante é verificar se há alguma versão mais atualizada do sistema operacional. Utilize o comando</p>
<pre>sudo do-release-upgrade</pre>
<p>É recomendado realizar o upgrade do sistema operacional, mas não por conexão SSH. Como temos acesso ao console da máquina virtual, é interessante realizar o processo de upgrade por lá, pois assim evitamos problemas de conexão de rede que podem acontecer durante a instalação. Então cancele o comando e vamos voltar para a janela da máquina virtual no virtualbox.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-422" src="https://viniciuspaes.com/wp-content/uploads/2022/11/prompt-do-release-upgrade.png" alt="Prompt do-release-upgrade" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/prompt-do-release-upgrade.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/prompt-do-release-upgrade-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<h3>Passo 48</h3>
<p>No console da máquina virtual do virtualbox, realize o login novamente, caso esteja deslogado. Após realizar o login, utilize o comando:</p>
<pre>sudo do-release-upgrade</pre>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-420" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-login-screen.png" alt="Ubuntu login screen" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-login-screen.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-login-screen-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /><img loading="lazy" decoding="async" class="alignnone size-full wp-image-426" src="https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-do-release-upgrade.png" alt="Virtualbox do-release-upgrade" width="733" height="385" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-do-release-upgrade.png 733w, https://viniciuspaes.com/wp-content/uploads/2022/11/virtualbox-do-release-upgrade-300x158.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></p>
<p>Aceite (Continuar) e comece a atualização do sistema.</p>
<h3>Passo 49</h3>
<p>Janelas sucessivas pedindo confirmação para reiniciar serviços, remover pacotes obsoletos e reiniciar o servidor vão aparecer. Aceite todas. Aguarde que a máquina realize o boot, caso demore muito tempo e esteja desconfiado que algo deu errado, pode fechar a janela da máquina virtual e iniciar novamente. Mas aguarde pelo menos 5 minutos para o boot, antes de forçar a máquina virtual a reiniciar.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-436" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-release-upgrade-reiniciar-servicos.png" alt="Ubuntu release upgrade - reiniciar servicos" width="1024" height="768" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-release-upgrade-reiniciar-servicos.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-release-upgrade-reiniciar-servicos-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-release-upgrade-reiniciar-servicos-768x576.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-437" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-release-upgrade-remover-pacotes-obsoletos.png" alt="Ubuntu release upgrade - remover pacotes obsoletos" width="1024" height="768" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-release-upgrade-remover-pacotes-obsoletos.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-release-upgrade-remover-pacotes-obsoletos-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-release-upgrade-remover-pacotes-obsoletos-768x576.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-435" src="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-release-upgrade-reiniciar-sistema-operacional.png" alt="Ubuntu release upgrade - reiniciar sistema operacional" width="1024" height="768" srcset="https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-release-upgrade-reiniciar-sistema-operacional.png 1024w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-release-upgrade-reiniciar-sistema-operacional-300x225.png 300w, https://viniciuspaes.com/wp-content/uploads/2022/11/ubuntu-release-upgrade-reiniciar-sistema-operacional-768x576.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<h3>Passo 50</h3>
<p>Após o reinicialização (boot do sistema) bem sucedida, sua máquina virtual está atualizada e pronta para o uso como servidor.</p>
<h2>Conclusão</h2>
<p>Após o término deste tutorial, você terá um servidor virtual (visão de hardware) configurado com o sistema operacional Ubuntu atualizado para última versão disponível. Para este servidor prover serviços (visão de software) é necessário instalar os softwares para cada funcionalidade. Este servidor está configurado para funcionar em uma máquina virtual dentro do Virtualbox, sendo um servidor para sua rede local.</p>
<p>O post <a href="https://viniciuspaes.com/linux/tutorial-setup-servidor-linux-ubuntu-local-virtualbox/">Tutorial setup Servidor Linux Ubuntu Local com VirtualBox</a> apareceu primeiro em <a href="https://viniciuspaes.com">Vinicius Paes</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://viniciuspaes.com/linux/tutorial-setup-servidor-linux-ubuntu-local-virtualbox/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
