<?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>Arquivos Tutoriais - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/category/android/tutoriais-android/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/category/android/tutoriais-android</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Wed, 10 Sep 2025 02:01:43 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.remontti.com.br/wp-content/uploads/2024/09/icone-rr-80x80.png</url>
	<title>Arquivos Tutoriais - Remontti</title>
	<link>https://blog.remontti.com.br/category/android/tutoriais-android</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Guia Passo a Passo para Instalar o Typebot em seu servidor próprio</title>
		<link>https://blog.remontti.com.br/7656</link>
					<comments>https://blog.remontti.com.br/7656#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 22 Sep 2023 15:32:29 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[automação]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[bookworm]]></category>
		<category><![CDATA[Certbot]]></category>
		<category><![CDATA[Chatbot]]></category>
		<category><![CDATA[Configuração]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[instalaçao]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[passo a passo]]></category>
		<category><![CDATA[PM2]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[Prisma]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Servidor]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Typebot]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7656</guid>

					<description><![CDATA[<p>O Typebot é uma ferramenta de código aberto que permite criar aplicativos ou formulários conversacionais de forma simples e eficaz. Ele oferece uma alternativa robusta a outras plataformas como o Landbot. Com o Typebot,&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7656">Guia Passo a Passo para Instalar o Typebot em seu servidor próprio</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img fetchpriority="high" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot.jpeg" alt="" width="1024" height="640" class="alignnone size-full wp-image-7666" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot.jpeg 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-300x188.jpeg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-768x480.jpeg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>O <a href="https://typebot.io" rel="noopener" target="_blank"><strong>Typebot</strong></a> é uma ferramenta de código aberto que permite criar aplicativos ou formulários conversacionais de forma simples e eficaz. Ele oferece uma alternativa robusta a outras plataformas como o Landbot. Com o Typebot, você pode criar diferentes tipos de aplicativos conversacionais, como:</p>
<p>&#8211; Qualificação de leads<br />
&#8211; Lançamento de produtos<br />
&#8211; Integração de usuários<br />
&#8211; Suporte ao cliente</p>
<p>O Typebot é amado por equipes e criadores em todo o mundo e oferece uma experiência de construção fácil. Você pode arrastar e soltar blocos para criar seu aplicativo e integrá-lo facilmente em qualquer plataforma. Além disso, ele permite coletar resultados em tempo real, o que é uma grande vantagem.</p>
<p><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-scaled.webp" alt="" width="2560" height="1465" class="alignnone size-full wp-image-7664" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-scaled.webp 2560w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-300x172.webp 300w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-1024x586.webp 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-768x439.webp 768w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-1536x879.webp 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-2048x1172.webp 2048w" sizes="(max-width: 2560px) 100vw, 2560px" /></p>
<h4>Exemplos de Uso</h4>
<p><strong>&#8211; Coleta de Informações de Contato:</strong> Substitua seus formulários tradicionais por um chatbot que pode coletar nomes, e-mails e outros detalhes de forma interativa.<br />
<strong>&#8211; Suporte ao Cliente:</strong> Use o Typebot para responder automaticamente a perguntas frequentes e fornecer suporte em tempo real.<br />
<strong>&#8211; Integração de Usuários:</strong> Facilite o processo de integração, fornecendo aos novos usuários um guia passo a passo interativo.<br />
&#8211; Campanhas de Marketing: Utilize o Typebot em suas landing pages para aumentar as taxas de conversão e engajamento.<br />
<strong>&#8211; Pesquisas e Feedback:</strong> Colete feedback do usuário ou conduza pesquisas de forma mais envolvente e interativa.</p>
<h4>Requesitos</h4>
<p><a href="https://blog.remontti.com.br/7236" rel="noopener" target="_blank">Debian 12 bookworm (Instalação Limpa)</a></p>
<h4>DNS</h4>
<p>Crie duas entradas em seu DNS exemplo:<br />
&#8211; typebot.remontti.cum.br apontando para os IPs do servidor<br />
&#8211; typebotapi.remontti.cum.br apontando para os IPs do servidor</p>
<p>Se você<a href="https://blog.remontti.com.br/5958" rel="noopener" target="_blank"> já é da turma do blog</a> vai entender o que temos a baixo la no amigo bind9:</p>
<pre class="remontti-code-plain">typebot       A       192.168.0.100
              AAAA    2001:db8:bebe:cafe::100

typebotapi    A       192.168.0.100
              AAAA    2001:db8:bebe:cafe::100</pre>
<h4>Atualização e Instalação de Pacotes</h4>
<pre class="remontti-code"># apt update; apt upgrade -y</pre>
<p>Instale os pacotes necessários para o projeto</p>
<pre class="remontti-code"># apt install -y nodejs npm git nginx postgresql postgresql-contrib</pre>
<p>Instala globalmente os pacotes pm2 e pnpm usando npm</p>
<pre class="remontti-code"># npm install -g pm2 pnpm</pre>
<h4>Configuração do PostgreSQL</h4>
<p>Alterne para o usuário postgres</p>
<pre class="remontti-code"># su - postgres</pre>
<p>Crie um novo usuário chamado &#8216;typebot&#8217; em seguida inserira uma senha.</p>
<pre class="remontti-code">$ createuser --pwprompt typebot</pre>
<p>Crie um novo banco de dados &#8216;typebot&#8217; e define &#8216;typebot&#8217; como o proprietário</p>
<pre class="remontti-code">$ createdb -O typebot typebot</pre>
<p>Sai do usuário postgres</p>
<pre class="remontti-code">$ exit</pre>
<h4>Preparando formas de autenticação</h4>
<p>Vou deixar 3 formas que são as mais fáceis, você pode optar em usar apenas uma.</p>
<h4>Email</h4>
<p>A mais fácil de todas, basta você utilizar um email, assim toda vez que você for logar ele ira lhe mandar um e-mail com o link. </p>
<h4>Google</h4>
<p>Crie um novo projeto em <a href="https://console.developers.google.com/apis/credentials" rel="noopener" target="_blank">https://console.developers.google.com/apis/credentials</a></p>
<pre class="remontti-code-plain">
Cria um novo projeto
&gt; OAuth consent screen
	&gt; externo 
	Nome: Typebot
	User support email: seu!
	Developer contact information: seu!
	 SAVE

	 ADD OR REMOVE SCOPES
	   	.../auth/userinfo.email
	   	.../auth/userinfo.profile
	   	 SAVE

	   	 SAVE

	   	 BACK TO DASH
&gt; Credentials 
	+ CREATE CREDENTALS
	  &gt; Create OAuth client ID 
		Application type: Web application
		Name: Typebot

		Authorized redirect URIs
		https://typebot.remontti.cum.br/api/auth/callback/google

	Client ID
	Anote

	Client secret
	Anote</pre>
<p>Será usado em:</p>
<pre class="remontti-code-plain">GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=</pre>
<h4>Github</h4>
<p>Acesse <a href="https://github.com/settings/developers" rel="noopener" target="_blank">https://github.com/settings/developers</a> e clique em <strong>New OAuth Apps</strong></p>
<pre class="remontti-code-plain">Application name: Typebot
Homepage URL: https://typebot.remontti.cum.br
Application description: Typebot Auth
Authorization callback URL: https://typebot.remontti.cum.br/api/auth/callback/github</pre>
<p>Anote o <strong>Client ID</strong> e clique em <strong>Generate a new client secret</strong> anote os dois para ser usado em </p>
<pre class="remontti-code-plain">GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=</pre>
<h4>Configuração do Projeto Typebot no Servidor</h4>
<p>Vamos armazenar o projeto mo diretório /opt. </p>
<pre class="remontti-code"># cd /opt/
# git clone https://github.com/baptisteArno/typebot.io.git</pre>
<p>Entre no diretório do projeto<br />
cd typebot.io</p>
<p>Crie arquivo <strong>.env</strong> onde irá ficar as <a href="https://docs.typebot.io/self-hosting/configuration" rel="noopener" target="_blank">variáveis de ambiente</a>.</p>
<pre class="remontti-code"># vim /opt/typebot.io/.env</pre>
<p>Faça os ajustes:</p>
<pre class="remontti-code-plain"># Define a chave de criptografia (Gere aqui https://senhasegura.remontti.cum.br/)
ENCRYPTION_SECRET=i9eRecwVJQeKENqdcrQeizOXFHzQdwAp

# Define a URL de conexão com o banco de dados PostgreSQL
DATABASE_URL=postgresql://typebot:minhasupersenha@localhost:5432/typebot

# Define as URLs para autenticação e API
NEXTAUTH_URL=https://typebot.remontti.cum.br
NEXT_PUBLIC_VIEWER_URL=https://typebotapi.remontti.cum.br

# Define o e-mail do administrador
ADMIN_EMAIL=typebot@remontti.cum.br

# Define as configurações para o servidor SMTP
SMTP_USERNAME=typebot@remontti.cum.br
SMTP_PASSWORD=minhasenha
SMTP_HOST=mail.remontti.cum.br
SMTP_PORT=25
NEXT_PUBLIC_SMTP_FROM=typebot@remontti.cum.br
SMTP_SECURE=false
SMTP_AUTH_DISABLED=false

# Configurações para autenticação via Google e GitHub (opcional)
# Google
GOOGLE_CLIENT_ID=98916e5d5dd1-e3lfmixxuditlz2egexp0n8bfwf3oie3.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=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

# GitHub
GITHUB_CLIENT_ID=6ewyvfeumndg2ve5kve1
GITHUB_CLIENT_SECRET=7r78f2vpmihgriebkp7p4b0ervd4qc7ufu1uu5nx

# Permite ou desabilita o cadastro de novas contas
DISABLE_SIGNUP=false</pre>
<p>Instale todas as dependências do projeto</p>
<pre class="remontti-code"># cd /opt/typebot.io/
# pnpm install</pre>
<p>Saída:</p>
<pre class="remontti-code-plain">Scope: all 19 workspace projects
Lockfile is up to date, resolution step is skipped
Packages: +2398
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Downloading registry.npmjs.org/next/13.4.3: 12,32 MB/12,32 MB, done
[...]
[...]
[...]
devDependencies:
+ cross-env 7.0.3
+ cz-emoji 1.3.2-canary.2
+ husky 8.0.3
+ prettier 2.8.8
+ turbo 1.10.12

. prepare$ husky install
│ husky - Git hooks installed
└─ Done in 288ms
Done in 2m 12.5s</pre>
<p>Compile os aplicativos</p>
<pre class="remontti-code"># cd /opt/typebot.io/
# pnpm run build:apps</pre>
<p>Saída</p>
<pre class="remontti-code-plain">&gt; typebot-os@2.17.2 build:apps /root/typebot.io
&gt; turbo run build --filter=builder... --filter=viewer...
[...]
[...]
[...]
[...]
builder:build: ○  (Static)  automatically rendered as static HTML (uses no initial props)
builder:build: 

 Tasks:    9 successful, 9 total
Cached:    0 cached, 9 total
  Time:    5m28.928s 

⠋ ...writing to cache...  [1s] 

─────────┴──────────┴──────────┘</pre>
<p>Copie o arquivo .env para os diretórios dos aplicativos</p>
<pre class="remontti-code"># cp /opt/typebot.io/.env /opt/typebot.io/apps/builder/
# cp /opt/typebot.io/.env /opt/typebot.io/apps/viewer/</pre>
<p>Configuração e migrações do banco de dados</p>
<pre class="remontti-code"># cd /opt/typebot.io/
# pnpm prisma generate &amp;&amp; pnpm db:migrate</pre>
<p>Saída:</p>
<pre class="remontti-code-plain">Environment variables loaded from .env
prisma:warn We could not find your Prisma schema at `prisma/schema.prisma`.
If you have a Prisma schema file in a custom path, you will need to run
`prisma generate --schema=./path/to/your/schema.prisma` to generate Prisma Client.
If you do not have a Prisma schema file yet, you can ignore this message.


&gt; typebot-os@2.17.2 db:migrate /opt/typebot.io
&gt; cd packages/prisma &amp;&amp; pnpm run db:migrate


&gt; @typebot.io/prisma@0.1.0 db:migrate /opt/typebot.io/packages/prisma
&gt; pnpm migrate:deploy


&gt; @typebot.io/prisma@0.1.0 migrate:deploy /opt/typebot.io/packages/prisma
&gt; dotenv -e ./.env -e ../../.env -- tsx scripts/migrate-deploy.ts

Executing for PostgreSQL schema
┌─────────────────────────────────────────────────────────┐
│  Update available 5.0.0 -&gt; 5.3.1                        │
│  Run the following to update                            │
│    npm i --save-dev prisma@latest                       │
│    npm i @prisma/client@latest                          │
└─────────────────────────────────────────────────────────┘</pre>
<p>Inicia os aplicativos com o PM2</p>
<pre class="remontti-code"># pm2 start --name=typebotwww --cwd /opt/typebot.io/apps/builder/ &quot;pnpm -- next start -p 54001&quot;
# pm2 start --name=typebotapi --cwd /opt/typebot.io/apps/viewer/ &quot;pnpm -- next start -p 54002&quot;</pre>
<pre class="remontti-code-plain">┌────┬───────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name          │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├────┼───────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 1  │ typebotapi    │ default     │ N/A     │ fork    │ 819      │ 0s     │ 0    │ online    │ 0%       │ 10.8mb   │ root     │ disabled │
│ 0  │ typebotwww    │ default     │ N/A     │ fork    │ 760      │ 19s    │ 0    │ online    │ 0%       │ 97.2mb   │ root     │ disabled │
└────┴───────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘</pre>
<p>Salva a configuração atual do PM2 e configura para iniciar com o sistema</p>
<pre class="remontti-code"># pm2 save
# pm2 startup</pre>
<h5>Configuração do Nginx</h5>
<p>Cria os arquivos de configuração do Nginx para os subdomínios</p>
<pre class="remontti-code"># vim /etc/nginx/sites-available/typebot.remontti.cum.br.conf</pre>
<pre class="remontti-code-plain">
server {
    listen 80;
    listen [::]:80;
 
    server_name typebot.remontti.cum.br;

    location / {
        proxy_pass http://localhost:54001;
        proxy_set_header Host $host;
    }
}

</pre>
<pre class="remontti-code"># vim /etc/nginx/sites-available/typebotapi.remontti.cum.br.conf</pre>
<pre class="remontti-code-plain">
server {
    listen 80;
    listen [::]:80;
 
    server_name typebotapi.remontti.cum.br;
 
    location / {
        proxy_pass http://localhost:54002;
        proxy_set_header Host $host;
    }
}
</pre>
<p>Ativa os sites no Nginx</p>
<pre class="remontti-code"># ln -s /etc/nginx/sites-available/typebot.remontti.cum.br.conf /etc/nginx/sites-enabled/
# ln -s /etc/nginx/sites-available/typebotapi.remontti.cum.br.conf /etc/nginx/sites-enabled/
# rm /etc/nginx/sites-enabled/default</pre>
<p>Verifica a sintaxe e reinicia o Nginx</p>
<pre class="remontti-code"># nginx -t
# systemctl restart nginx</pre>
<h5>Configuração do Certbot/Let&#8217;s Encrypt para HTTPS</h5>
<p>Instala o Certbot e o plugin do Nginx</p>
<pre class="remontti-code"># apt install certbot python3-certbot-nginx</pre>
<p>Executa o Certbot para obter os certificados SSL</p>
<pre class="remontti-code">certbot</pre>
<p>Responda: </p>
<pre class="remontti-code-plain">Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter &#039;c&#039; to cancel): noc@remontti.cum.br

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y &lt;&lt;&lt;&lt;&lt;

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let&#039;s Encrypt project and the non-profit organization that
develops Certbot? We&#039;d like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N &lt;&lt;&lt;&lt;
Account registered.

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: typebotapi.remontti.cum.br
2: typebot.remontti.cum.br
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter &#039;c&#039; to cancel):  &lt;&lt;&lt;&lt;
Requesting a certificate for typebotapi.remontti.cum.br and typebot.remontti.cum.br

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/typebotapi.remontti.cum.br/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/typebotapi.remontti.cum.br/privkey.pem
This certificate expires on 2023-12-20.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for typebotapi.remontti.cum.br to /etc/nginx/sites-enabled/typebotapi.remontti.cum.br.conf
Successfully deployed certificate for typebot.remontti.cum.br to /etc/nginx/sites-enabled/typebot.remontti.cum.br.conf
Congratulations! You have successfully enabled HTTPS on https://typebotapi.remontti.cum.br and https://typebot.remontti.cum.br

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let&#039;s Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</pre>
<h5>Configuração do Cron para Renovação Automática do Certificado SSL.</h5>
<p>Adicione uma tarefa cron para renovar automaticamente o certificado SSL todo dia 1 de cada mês à meia-noite, e reinicie o cron.</p>
<pre class="remontti-code"># echo &#039;00 00   1 * *   root    /usr/bin/certbot renew -q&#039; &gt;&gt; /etc/crontab
# systemctl restart cron.service</pre>
<h5>Acessando a aplicação</h5>
<p>Abra seu navegador e acesse: https://typebot.remontti.cum.br<br />
<img decoding="async" src="https://blog.remontti.cum.br/wp-content/uploads/2023/09/typebot-remontti.png" alt="" width="900" height="403" class="alignnone size-full wp-image-7661" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti.png 900w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-300x134.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-768x344.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></p>
<p>Clique em <strong>Registre-se gratuitamente</strong><br />
Escolha a forma desejada.</p>
<h4><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2757.png" alt="❗" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2757.png" alt="❗" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2757.png" alt="❗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </h4>
<p>Os registros <strong>ficam aberto</strong>, então registre toda sua equipe e em seguida desativa a possibilidade de novos registros nos arquivos .env (<strong>DISABLE_SIGNUP=true</strong>)<br />
Com o comando sed</p>
<pre class="remontti-code"># sed -i &#039;s/DISABLE_SIGNUP=false/DISABLE_SIGNUP=true/&#039; /opt/typebot.io/.env
# sed -i &#039;s/DISABLE_SIGNUP=false/DISABLE_SIGNUP=true/&#039; /opt/typebot.io/apps/viewer/.env
# sed -i &#039;s/DISABLE_SIGNUP=false/DISABLE_SIGNUP=true/&#039; /opt/typebot.io/apps/builder/.env</pre>
<p>Reinicie o pm2 </p>
<pre class="remontti-code"># systemctl restart pm2-root.service</pre>
<p>Se deseja realizar novos cadastros basta alterar <strong>DISABLE_SIGNUP=true</strong> para <strong>DISABLE_SIGNUP=false</strong> e reiniciar novamente.</p>
<pre class="remontti-code"># sed -i &#039;s/DISABLE_SIGNUP=true/DISABLE_SIGNUP=false/&#039; /opt/typebot.io/.env
# sed -i &#039;s/DISABLE_SIGNUP=true/DISABLE_SIGNUP=false/&#039; /opt/typebot.io/apps/viewer/.env
# sed -i &#039;s/DISABLE_SIGNUP=true/DISABLE_SIGNUP=false/&#039; /opt/typebot.io/apps/builder/.env</pre>
<p>Reinicie o pm2 </p>
<pre class="remontti-code"># systemctl restart pm2-root.service</pre>
<p>Se desejar fazer alterações faça os arquivos:</p>
<pre class="remontti-code-plain">/opt/typebot.io/.env
/opt/typebot.io/apps/viewer/.env
/opt/typebot.io/apps/builder/.env</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.cum.br/wp-content/uploads/2023/09/typebot-remontti-1.png" alt="" width="1050" height="411" class="alignnone size-full wp-image-7662" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-1.png 1050w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-1-300x117.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-1-1024x401.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-1-768x301.png 768w" sizes="auto, (max-width: 1050px) 100vw, 1050px" /></p>
<p>A parte mais complicada está feita!<br />
Existe vários videos no <a href="https://www.youtube.com/results?search_query=typebot" rel="noopener" target="_blank">YouTube</a> sobre como mexer nessa criança. Inclusive no <a href="https://www.youtube.com/@typebot4666" rel="noopener" target="_blank">canal oficial </a>dos desenvolvedores. <em>Dica ative a legenda e selecione traduzir!</em></p>
<p><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/jp3ggg_42-M?si=xPi09hAm6AqyZfcU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></p>
<p>Gostou e quer me ajudar manter o blog sem a inconveniência de anúncios intrusivos ou a imposição de taxas? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.cum.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.cum.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p><strong>Fonte:</strong><br />
<a href="https://docs.typebot.io/" rel="noopener" target="_blank">https://docs.typebot.io/</a></p>
<p>O post <a href="https://blog.remontti.com.br/7656">Guia Passo a Passo para Instalar o Typebot em seu servidor próprio</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7656/feed</wfw:commentRss>
			<slash:comments>17</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do Debian 12 Bookworm limpa passo-a-passo</title>
		<link>https://blog.remontti.com.br/7236</link>
					<comments>https://blog.remontti.com.br/7236#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 18 Apr 2023 20:35:43 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bookworm]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[passo a passo]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7236</guid>

					<description><![CDATA[<p>Neste tutorial vamos aprender de forma simples fazer a instalação da distribuição Linux Debian 12 bookworm. Primeiramente iremos precisar baixar imagem ISO do Debian, eu particularmente utilizo a ISO netinst, que durante a instalação&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7236">Instalação do Debian 12 Bookworm limpa passo-a-passo</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-7281" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Neste tutorial vamos aprender de forma simples fazer a instalação da distribuição Linux <a href="https://www.debian.org/releases/bookworm/releasenotes" rel="noopener" target="_blank">Debian 12 bookworm</a>. </p>
<p>Primeiramente iremos precisar baixar imagem ISO do Debian, eu particularmente utilizo a ISO netinst, que durante a instalação já faz a instalação dos pacotes mais recentes usando a internet, então é lógico que vamos precisar uma conexão com a internet durante a instalação.</p>
<p>Outro motivo para utilizar a versão netinst é que não irei instalar nenhum pacote pois a ideia aqui é fazer uma instalação limpa! E assim instalamos os pacotes que realmente ira precisar (nada de perfumarias).</p>
<p>O repositório do debian 12 conta com uma novidade, que é o <strong><a href="https://www.debian.org/vote/2022/vote_003" rel="noopener" target="_blank">non-free-firmware</a></strong>. A maior parte dos pacotes de firmware não-livre foi movida de <strong>non-free</strong> para <strong>non-free-firmware</strong> em preparação para o lançamento do Debian 12. Essa separação limpa torna possível construir imagens de instalação oficiais com pacotes de main e de non-free-firmware, sem contrib nem non-free. Essa mudança é muito legal, pois muitos não conheciam a versão non-free dos debians anterioes e tinha uma dificuldade enorme quando sempre precisa por exemplo instalar o drive de uma placa de rede.</p>
<p><strong><a href="https://wiki.debian.org/SourcesList" rel="noopener" target="_blank">https://wiki.debian.org/SourcesList</a></strong></p>
<p><strong>main</strong> Consiste em pacotes compatíveis com DFSG <em>(Debian Free Software Guidelines)</em>, que não dependem de software fora desta área para operar.<strong> Estes são os únicos pacotes considerados parte da distribuição Debian</strong>.</p>
<p><strong>contrib</strong> &#8211; Contêm software compatível com DFSG, mas não possuem dependências no principal (possivelmente empacotados para o Debian em não-livre).</p>
<p><strong>non-free</strong> Contém software que não está em conformidade com a DFSG, Exemplo drives proprietários, como o nome já diz não gratuitos. </p>
<p><strong>non-free-firmware</strong> Contém pacotes de firmware não livres em nossa mídia oficial (imagens do instalador). Os binários de firmware incluídos normalmente serão ativados por padrão quando o sistema determinar que eles são necessários, mas, sempre que possível, incluiremos maneiras para os usuários desativarem isso na inicialização.</p>
<p>Um grande passo também é que contamos agora com o <a href="https://diolinux.com.br/sistemas-operacionais/linux/kernel-61.html" rel="noopener" target="_blank">Kernel 6.1</a>.<br />
Leia mais aqui: <a href="https://www.debian.org/releases/bookworm/amd64/release-notes/ch-whats-new.pt-br.html" rel="noopener" target="_blank"><strong>Quais as novidades no Debian 12</strong></a></p>
<h3>Download</h3>
<p>&#8211; <strong><a href="https://cdimage.debian.org/mirror/cdimage/archive/12.12.0/amd64/iso-cd/debian-12.12.0-amd64-netinst.iso" rel="noopener" target="_blank">Debian 12 Bookworm (amd64)</a></strong><br />
&#8211; <strong><a href="https://cdimage.debian.org/mirror/cdimage/archive/12.12.0-live/amd64/iso-hybrid/" rel="noopener" target="_blank">Debian 12 Live Desktop (amd64)</a></strong></p>
<h3>Boot</h3>
<p>Para montar seu pendrive bootavél eu particularmente gosto do <strong><a href="https://www.ventoy.net/en/download.html" rel="noopener" target="_blank">Ventoy</a></strong> , mas use o da sua preferencia, como <a href="https://rufus.ie/pt_BR/" rel="noopener" target="_blank">Rufus</a>, <a href="https://unetbootin.github.io/" rel="noopener" target="_blank">UNetbootin</a>, <a href="https://www.balena.io/etcher/" rel="noopener" target="_blank">Balena etcher</a>&#8230; </p>
<h3>Instalação</h3>
<p>Iniciando o boot da sua iso.</p>
<p>Selecione: <strong>Graphical Install</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install.png" alt="" width="640" height="480" class="alignnone size-full wp-image-7238" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install.png 640w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-300x225.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><strong>Portuguese (Brazil) – Portugues do Brasil</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-1.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-1.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7239" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-1.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-1-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-1-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Brasil</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-2.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-2.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7240" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-2.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-2-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-2-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Português Brasileiro</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-3.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-3.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7241" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-3.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-3-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-3-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Neste momento ele irá identificar sua conexão de rede, e receber seus IP automaticamente via DHCP.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-4.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-4.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7242" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-4.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-4-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-4-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>No entanto se sua rede não estiver configurada para entregar IP automaticamente, ira apresentar uma mensagem dizendo que a configuração falhou:<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-6-a.png" alt="" width="808" height="127" class="alignnone size-full wp-image-5803" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-6-a.png 808w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-6-a-300x47.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-6-a-768x121.png 768w" sizes="auto, (max-width: 808px) 100vw, 808px" /></p>
<p>No entanto se você recebeu o IP automaticamente irá cair na tela de configuração do “Nome de Máquia:” então clique em <strong>Voltar</strong>.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7243" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Configurar a rede manualmente</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-6.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-6.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7244" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-6.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-6-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-6-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Informe <strong>IP/PREFIX</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-7.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-7.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7245" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-7.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-7-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-7-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Gateway</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-8.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-8.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7246" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-8.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-8-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-8-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Servidores DNS</strong> (Separa por espaço para mais de um, máximo 3)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-9-1.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-9-1.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7248" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-9-1.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-9-1-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-9-1-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>E agora voltamos a tela de <strong>Nome de Máquia</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7243" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Informe seu domínio se possuir, ou deixe em branco (Se você tiver o DNS reverso configurado ele já trará seu domínio)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-10.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-10.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7249" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-10.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-10-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-10-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Defina <strong>Senha de root (administrador)</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-11.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-11.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7250" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-11.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-11-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-11-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Informe seu <strong>Nome completo</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-12.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-12.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7251" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-12.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-12-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-12-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Defina um <strong>nome de usuário</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-13.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-13.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7252" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-13.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-13-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-13-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Defina a <strong>senha deste usuário</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-14.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-14.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7253" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-14.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-14-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-14-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Selecione <strong>seu estado</strong> para a escolha do <strong>fuso horário</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-15.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-15.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7254" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-15.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-15-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-15-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Chegamos ao particionamento. Aqui vamos ter várias polemicas! Para mim é interessante particionar quando você sabe realmente o que está fazendo, exemplo possuir mais de um disco, ou porejetar que uma partição não destrua o sistema.<br />
Em VMs sempre instalo da forma automatica, não tem o porque está particionando uma máquina virtual (a não ser mais uma vez que você saiba o que quer), ou até mesmo estar fazendo algum tipo de RAID via software (Sou fã do RAID 10 espelhamento e performasse, mas quase sempre faremos isso lá na controladora, mas nada impede de fazer via software se seu servidor não possui uma controladora). Bom poderia falar um tempão aqui, mas em 90% o metodo &#8220;automático&#8221; resolve nossos problemas, então bora! </p>
<p>Selecione <strong>Assistido – usar o disco inteiro</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-16.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-16.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7255" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-16.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-16-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-16-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Selecione o Disco</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-18.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5820" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-18.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-18-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-18-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione “<strong>Todos os arquivos em uma partição (para iniciantes)</strong>”, se você selecionar alguma das outras opções é muito importante que você realmente saiba oq está fazendo!<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-18.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-18.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7257" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-18.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-18-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-18-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Finalizar o particionamento e escrever as mudanças no disco</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-19.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-19.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7258" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-19.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-19-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-19-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Sim</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-20.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-20.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7259" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-20.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-20-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-20-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Aguarde instalar o sistema básico&#8230;<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-21.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-21.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7260" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-21.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-21-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-21-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Não</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-22.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-22.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7261" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-22.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-22-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-22-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Brasil</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-23.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-23.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7262" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-23.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-23-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-23-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Eu gosto do <strong>deb.debian.org</strong> (mas pode selecionar outro se desejar)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-24.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-24.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7263" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-24.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-24-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-24-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Deixe em branco</strong>. <em>Acredito que ninguém mais use proxy, mas se for seu caso informe seu usuário e senha da conexão HTTP.</em><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-25.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-25.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7264" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-25.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-25-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-25-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Aguarde enquanto os espelhos (repositórios são lidos) é <strong>fundamental ter internet</strong>, caso contrário irá apresentar erro, e prosseguir a instalação vai deixar seu sistema praticamente &#8220;quebrado&#8221;.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-26.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-26.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7265" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-26.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-26-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-26-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Sim</strong>. É sempre importante ajudar a comunidade a saber quais pacotes estão sendo instalado, isso vai ajudar os desenvolvedores a serem visto pela comunidade Debian e quem sabe aquele pacote legal que você precisa compilar na próxima versão já esteja disponível via repositório.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-27.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-27.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7266" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-27.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-27-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-27-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>ESSE É A PARTE MAIS IMPORTANTE PARA A INSTALAÇÃO LIMPA.</strong><br />
Pois não vamos instalar nenhum pacote, e sim apenas o sistema base. O único pacote que é bem provável que você irá precisar é do SSH para fazer o acesso a sua máquina.<br />
Essa instalação é recomendada para servidores! Agora se você está fazendo essa instalação com intuito de usar alguma interface gráfica faça sua escolha e prossiga.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-28.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-28.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7267" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-28.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-28-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-28-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-29.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-29.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7268" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-29.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-29-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-29-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Grub: <strong>Sim</strong> Se não fica sem dar boot.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-30.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-30.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7269" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-30.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-30-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-30-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Seleciona o disco qual sera configurado o GRUB (Sem ele o sistema não inicia! Normalmente /dev/sda)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-31.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-31.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7270" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-31.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-31-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-31-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Aguarde a finalização<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-32.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-32.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7271" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-32.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-32-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-32-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Continuar para reiniciar<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-33.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-33.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7272" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-33.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-33-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-33-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Iremos ver nossa tela do GRUB (Aqui você pode selecionar um kernel anteiro instalado caso o atual apresentar algum problema&#8230;, entre recuperar até mesmo a senha de root)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-34.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-34.png" alt="" width="640" height="480" class="alignnone size-full wp-image-7273" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-34.png 640w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-34-300x225.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>E por fim chegamos a tela de login. Nesta tela você pode logar com usuário root diretamente.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-35.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-35.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7274" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-35.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-35-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-35-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Faça um SSH para o IP do seu servidor, se você não sabe qual o IP basta na tela anterior logar e digitar o comando: </p>
<pre class="remontti-code">ip -c address</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-36.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-36.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7275" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-36.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-36-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-36-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>No meu caso meu ip é o 172.18.18.18, irei logar com o usuário remontti (que criei na instalação) e não com root, por padrão de segurança o SSH vem com a opção que não permite que você logue com usuário root, então use o usuário &#8220;comum&#8221; da sua instalação para logar. OBS: Não seja <del datetime="2023-04-18T16:55:06+00:00">ignorante</del> de ir trocar as configurações do SSH e permitir o root logar<em> (Isso me deixa P, tem várias formas de você contornar!)</em><br />
Então do meu PC acesso e em seguida viro root com <strong>su-</strong> exemplo:</p>
<pre class="remontti-code"> ssh 172.18.18.18 -p 22</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/ssh_debian_12.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/ssh_debian_12.png" alt="" width="1102" height="496" class="alignnone size-full wp-image-7276" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/ssh_debian_12.png 1102w, https://blog.remontti.com.br/wp-content/uploads/2023/04/ssh_debian_12-300x135.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/ssh_debian_12-1024x461.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/04/ssh_debian_12-768x346.png 768w" sizes="auto, (max-width: 1102px) 100vw, 1102px" /></a></p>
<p>Se desejar configurar o <a href="https://wiki.debian.org/SourcesList" rel="noopener" target="_blank">repositório non-free e contrib</a>, para isso basta editar o arquivo /etc/apt/sources.list <strong>(Recomendo)</strong></p>
<pre class="remontti-code"># nano /etc/apt/sources.list</pre>
<p>Agora adicione ao final de cada repositório> <strong>contrib non-free</strong> como na imagem:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12_repo.png" data-rel="lightbox-gallery-ue8fmnda" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12_repo.png" alt="" width="1480" height="581" class="alignnone size-full wp-image-7277" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12_repo.png 1480w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12_repo-300x118.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12_repo-1024x402.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12_repo-768x301.png 768w" sizes="auto, (max-width: 1480px) 100vw, 1480px" /></a><br />
Saia usando CRTL + X, em seguida atualize as informações do repositório com o comando:</p>
<pre class="remontti-code"># apt update</pre>
<p>Para atualizar (se disponível) os pacotes use:</p>
<pre class="remontti-code"># apt upgrade</pre>
<p>Ao usar o repositório non-free sempre recomendo a instalação dos pacotes: firmware-linux* para reconhecer o máximo dos drives. </p>
<pre class="remontti-code"># apt install firmware-linux firmware-linux-free firmware-linux-nonfree</pre>
<p>Reinicie seu servidor para carregar os novos módulos do kernel</p>
<pre class="remontti-code"># reboot</pre>
<p>Agora que acabou de instalar seu debian que tal dar uma &#8220;tunada&#8221; no bixinho? Então leia: <strong><a href="https://blog.remontti.com.br/5867" rel="noopener" target="_blank">Como melhorar a produtividade no seu Debian após instalação</a></strong></p>
<p>Para ver se seu Debian inicializou sem nenhum erro utilize o comando:</p>
<pre class="remontti-code"># journalctl -b -p err</pre>
<p>Muitos logs foram movidos para o o journal no Debian 12.</p>
<p>Curtiu o conteúdo? Quer me ajudar manter o blog? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/7236">Instalação do Debian 12 Bookworm limpa passo-a-passo</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7236/feed</wfw:commentRss>
			<slash:comments>22</slash:comments>
		
		
			</item>
		<item>
		<title>Como instalar o Arch Linux com Kernel 6.x + Gnome desktop</title>
		<link>https://blog.remontti.com.br/6992</link>
					<comments>https://blog.remontti.com.br/6992#respond</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 07 Jan 2023 20:12:50 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[arch]]></category>
		<category><![CDATA[arch linux]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gnome 40]]></category>
		<category><![CDATA[gnome 43]]></category>
		<category><![CDATA[how to]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6992</guid>

					<description><![CDATA[<p>Hoje fugi um pouco do nosso queridinho Debian, e venho ensinar como instalar o Arch Linux, que você pode baixar do site oficial. Instalando o sistema base Download Após baixar sua ISO grave a&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6992">Como instalar o Arch Linux com Kernel 6.x + Gnome desktop</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Hoje fugi um pouco do nosso queridinho Debian, e venho ensinar como instalar o Arch Linux, que você pode baixar do <a href="https://archlinux.org/" target="_blank" rel="noopener noreferrer">site oficial</a>.</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_gnome.png" data-rel="lightbox-gallery-pc0tVPQI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_gnome.png" alt="" width="1280" height="960" class="alignnone size-full wp-image-7037" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_gnome.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_gnome-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_gnome-1024x768.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_gnome-768x576.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_gnome_43.2-1.png" data-rel="lightbox-gallery-pc0tVPQI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_gnome_43.2-1.png" alt="" width="1680" height="1050" class="alignnone size-full wp-image-7023" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_gnome_43.2-1.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_gnome_43.2-1-300x188.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_gnome_43.2-1-1024x640.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_gnome_43.2-1-768x480.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_gnome_43.2-1-1536x960.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<h1>Instalando o sistema base</h1>
<p><a href="https://archlinux.org/download/" rel="noopener" target="_blank">Download</a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/05/arch_linux_kernel_6.png" data-rel="lightbox-gallery-pc0tVPQI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/05/arch_linux_kernel_6.png" alt="" width="1233" height="838" class="alignnone size-full wp-image-6993" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/05/arch_linux_kernel_6.png 1233w, https://blog.remontti.com.br/wp-content/uploads/2017/05/arch_linux_kernel_6-300x204.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/05/arch_linux_kernel_6-1024x696.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2017/05/arch_linux_kernel_6-768x522.png 768w" sizes="auto, (max-width: 1233px) 100vw, 1233px" /></a></p>
<p>Após baixar sua ISO grave a mesmo em um CD ou tranforme em um Pendrive bootável. Recomento o <a href="https://etcher.io/" target="_blank" rel="noopener noreferrer">Etcer</a>. </p>
<p>Ao dar boot você verá a abertura do Arch Linux. Clique em &#8220;<strong>Arch Linux Install medium (x86_64)</strong>&#8221;</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6.png" data-rel="lightbox-gallery-pc0tVPQI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6.png" alt="" width="1020" height="712" class="alignnone size-full wp-image-6997" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6.png 1020w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6-300x209.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6-768x536.png 768w" sizes="auto, (max-width: 1020px) 100vw, 1020px" /></a></p>
<p>Ao iniciar verifique se tem conexão com a internet.</p>
<pre class="remontti-code"># ip -c a
# ping remontti.com.br </pre>
<p>Dica, para realizar a instalar de um pc da sua rede, você pode ativar o SSH e fazer a instalação remota, copiando os comandos <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> se desejar inicie o sshd e sete uma senha para o root.</p>
<pre class="remontti-code"># systemctl start sshd
# passwd root </pre>
<p>Agora basta acessar seu pc remotamente.</p>
<p>Antes de iniciar a instalação, você deve particionar sua unidade.</p>
<pre class="remontti-code"># fdisk -l</pre>
<p>Criaremos 3 partições, EFI, SWAP e outra pra o sistema (/).</p>
<pre class="remontti-code"># fdisk /dev/sda</pre>
<p>Execute na seguinte ordem para criar a partição EFI.<br />
<strong>g<br />
n<br />
1<br />
Enter<br />
+300M<br />
t<br />
1 (EFI)<br />
w</strong></p>
<pre class="remontti-code"># fdisk /dev/sda</pre>
<p>Execute na seguinte ordem para criar a partição SWAP.<br />
<strong>n<br />
2<br />
Enter<br />
+1G<br />
t<br />
2<br />
19 (SWAP)<br />
w</strong></p>
<pre class="remontti-code"># fdisk /dev/sda</pre>
<p>Execute na seguinte ordem para criar a partição raiz /.<br />
<strong>n<br />
3<br />
Enter<br />
Enter (Resto do disco)<br />
w</strong><br />
Cheque se elas foram criadas.</p>
<pre class="remontti-code"># fdisk -l</pre>
<pre class="remontti-code-plain">
Device       Start       End   Sectors   Size Type
/dev/sda1     2048    616447    614400   300M EFI System
/dev/sda2   616448   2570239   1953792   954M Linux swap
/dev/sda3  2570240 225953791 223383552 106.5G Linux filesystem</pre>
<p>Preparando nossas partições:</p>
<pre class="remontti-code"># mkfs.fat -F32 /dev/sda1
# mkswap /dev/sda2
# swapon /dev/sda2
# mkfs.ext4 /dev/sda3</pre>
<p>Monte a partição raiz (/) para iniciar a parte de instalação digitando:</p>
<pre class="remontti-code"># mount /dev/sda3 /mnt</pre>
<p>Vamos instalar o <a href="https://wiki.archlinux.org/index.php/reflector">Reflector</a> que é um script que pode recuperar a última lista espelhada da página MirrorStatus, filtrar os espelhos mais atualizados, classificá-los por velocidade e substituir o arquivo /etc/pacman.d/mirrorlist.</p>
<pre class="remontti-code"># pacman -Sy
# pacman -S reflector
# reflector --verbose -l 10 --sort rate --save /etc/pacman.d/mirrorlist</pre>
<p>Inicialize a cópia do sistema para nossa partição:</p>
<pre class="remontti-code"># pacstrap -i /mnt base base-devel</pre>
<p><strong>Enter (all)<br />
Y (Yes)</strong></p>
<p>Após a instalação base, crie o arquivo fstab (nossa tabela de partições):</p>
<pre class="remontti-code"># genfstab -U /mnt &gt;&gt; /mnt/etc/fstab</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_fstab.png" data-rel="lightbox-gallery-pc0tVPQI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_fstab.png" alt="" width="1269" height="368" class="alignnone size-full wp-image-6998" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_fstab.png 1269w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_fstab-300x87.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_fstab-1024x297.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_fstab-768x223.png 768w" sizes="auto, (max-width: 1269px) 100vw, 1269px" /></a></p>
<p>Alteramos a raiz do sistema para o diretório de instalação do Arch Linux</p>
<pre class="remontti-code"># arch-chroot /mnt /bin/bash</pre>
<p>Eu particularmente sou fã do vim, mas você pode usar o nano, ainda vou instalar o bash-completion para ter o autocompletar.</p>
<pre class="remontti-code"># pacman -S vim nano dhcpcd bash-completion</pre>
<p>Definições de idioma, edite o arquivo locale.gen e procure por <strong>pt_BR.UTF-8 UTF-8</strong> e descomente (remova o <strong>#</strong> da frente)</p>
<pre class="remontti-code"># vim /etc/locale.gen</pre>
<p>Agora, carregue nova localização digitando:</p>
<pre class="remontti-code"># locale-gen</pre>
<p>Agora você pode adicionar seu idioma ao sistema.</p>
<pre class="remontti-code"># echo &#039;LANG=pt_BR.UTF-8&#039; &gt; /etc/locale.conf</pre>
<p>Sincronize as informações da zona para ter nosso horário correto.</p>
<pre class="remontti-code"># ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime</pre>
<p>Ajuste o serviço de hora para os servidores do <a href="https://ntp.br/" rel="noopener" target="_blank">Brasil</a></p>
<pre class="remontti-code"># vim /etc/systemd/timesyncd.conf</pre>
<p>Altere para:</p>
<pre class="remontti-code-plain">
[Time]
NTP=pool.ntp.br
FallbackNTP=a.ntp.br b.ntp.br c.ntp.br
RootDistanceMaxSec=5
PollIntervalMinSec=32
PollIntervalMaxSec=2048
ConnectionRetrySec=30
SaveIntervalSec=60
</pre>
<pre class="remontti-code"># hwclock --systohc --utc
# date </pre>
<p>Digite o nome do seu host (archlinux):</p>
<pre class="remontti-code"># echo &#039;archlinux&#039; &gt; /etc/hostname</pre>
<p>Ative o DHCP, ele será iniciado no próximo boot buscando um endereço IP automaticamente.</p>
<pre class="remontti-code"># systemctl enable dhcpcd</pre>
<p>Vamos dar um UP para nosso repositório com multilib e yaourt</p>
<pre class="remontti-code"># vim /etc/pacman.conf</pre>
<p>Descomente a linha:</p>
<pre class="remontti-code">[multilib]
Include = /etc/pacman.d/mirrorlist</pre>
<p>Re-carregue</p>
<pre class="remontti-code"># pacman -Sy</pre>
<p>Agora vamos criar nosso usuário, primeiramente instalamos o sudo para poder executar comandos de administradores. </p>
<pre class="remontti-code"># pacman -S sudo</pre>
<p>Vamos permitir que o grupo wheel, sejam capazes de executar tarefas administrativas.</p>
<pre class="remontti-code"># visudo</pre>
<p>Localize <strong>%wheel ALL=(ALL) ALL</strong> e descomente.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_sudo.png" data-rel="lightbox-gallery-pc0tVPQI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_sudo.png" alt="" width="1352" height="561" class="alignnone size-full wp-image-6999" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_sudo.png 1352w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_sudo-300x124.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_sudo-1024x425.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_sudo-768x319.png 768w" sizes="auto, (max-width: 1352px) 100vw, 1352px" /></a><br />
Para sair do editor visudo (vim) use <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f621.png" alt="😡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Agora criamos nosso usuário (no meu caso ele vai se chamar remontti) e após vamos colocar ele para pertencer ao grupo wheel e setamos uma senha para ele.</p>
<pre class="remontti-code"># useradd remontti -m
# gpasswd -a remontti wheel
# passwd remontti</pre>
<p>Se você irá instalar uma interface gráfica,coloque seu usuário ao seguintes grupos:</p>
<pre class="remontti-code"># gpasswd -a remontti sys
# gpasswd -a remontti lp
# gpasswd -a remontti network
# gpasswd -a remontti video
# gpasswd -a remontti optical
# gpasswd -a remontti storage
# gpasswd -a remontti scanner
# gpasswd -a remontti power</pre>
<p>Sete uma senha para o usuário root</p>
<pre class="remontti-code"># passwd root</pre>
<p>A etapa final, é instalação do grub, nosso Bootloader, lembrando que meu PC usa EFI. (<a href="https://wiki.archlinux.org/title/GRUB_(Portugu%C3%AAs)" rel="noopener" target="_blank">mais sobre grub acesse aqui</a>)<br />
Os pacotes linux-headers inux-hardened irão instalar a versão 6 do kernel</p>
<pre class="remontti-code"># pacman -S grub os-prober efibootmgr dosfstools mtools linux-headers linux-hardened
# mkdir /boot/EFI
# mount /dev/sda1 /boot/EFI
# grub-install --target=x86_64-efi --bootloader-id=grub_uefi --recheck
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
# grub-mkconfig -o /boot/grub/grub.cfg</pre>
<p>Pule isso, mas caso tenha problemas com compatibilidade pode instalar a versão LTS (5) do kernel, boa sorte! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<pre class="remontti-code"># pacman -S linux-lts linux-lts-headers
# grub-mkconfig -o /boot/grub/grub.cfg</pre>
<p>Agora saia, desmonte a partição e reinicie.</p>
<pre class="remontti-code"># exit
# umount -a
# reboot</pre>
<p>Remova seu &#8220;disco&#8221; de boot.</p>
<p>Agora entre com seu usuário para criarmos as pastas padrões (Download, Documentos&#8230;)</p>
<pre class="remontti-code">$ ls /home/remontti
$ sudo pacman -S xdg-user-dirs
$ xdg-user-dirs-update</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_user.png" data-rel="lightbox-gallery-pc0tVPQI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_user.png" alt="" width="1024" height="659" class="alignnone size-full wp-image-7000" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_user.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_user-300x193.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_user-768x494.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>(Opcional) Caso sua instalação seja com intenção para um servidor e irá querer acessa-lo remotamente via SSH instale o pacote sshfs, ou apenas para continuar a instalação&#8230; e habilite os ssh (enable) se desejar que o mesmo inicie com o boot (nao recomendo se é apenas para desktop, neste caso só inicie o SSH quando precisar por segurança). Se você apenas quer usar ssh para acessar outros servidores remotamente, não habilite o mesmo, apenas instale o pacote.</p>
<pre class="remontti-code">$ sudo pacman -S sshfs
$ sudo systemctl enable sshd 
$ sudo systemctl start sshd</pre>
<p>Provavelmente terá que configurar seu teclado novamente para pt-bt</p>
<pre class="remontti-code">$ sudo localectl set-keymap --no-convert br-abnt2</pre>
<h1>Instalando a interface gráfica</h1>
<p>Antes de iniciar vire root/ ou logue com root</p>
<pre class="remontti-code"># su -</pre>
<p>Para instalação do nosso servidor X vamos usar o <a href="https://wiki.archlinux.org/index.php/Xorg#Installation" target="_blank" rel="noopener noreferrer"><strong>Xorg</strong></a></p>
<p>Vamos instalar então nosso xorg e suporte ao nosso teclado e mouse</p>
<pre class="remontti-code"># pacman -S xorg-server xorg-apps xf86-input-libinput\
   xorg-xinit xorg-twm xterm xorg-xclock </pre>
<p>Se estiver instalando em um notbook vai querer suporte ao touchpad</p>
<pre class="remontti-code"># pacman -S xf86-input-synaptics</pre>
<p>Você pode usar o seguinte comando para tentar identificar sua placa de video e saber qual drive de video instalar.</p>
<pre class="remontti-code"># lspci | grep -e VGA -e 3D</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_nvidia.png" data-rel="lightbox-gallery-pc0tVPQI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_nvidia.png" alt="" width="868" height="270" class="alignnone size-full wp-image-7001" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_nvidia.png 868w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_nvidia-300x93.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_nvidia-768x239.png 768w" sizes="auto, (max-width: 868px) 100vw, 868px" /></a></p>
<p>Instale o drive correspondente a sua placa:<br />
ATI/AMD (radeon)</p>
<pre class="remontti-code"># pacman -S xf86-video-amdgpu</pre>
<p>INTEL</p>
<pre class="remontti-code"># pacman -S xf86-video-intel</pre>
<p>NVIDIA</p>
<pre class="remontti-code"># pacman -S xf86-video-nouveau</pre>
<p>GENÉRICOS</p>
<pre class="remontti-code"># pacman -S xf86-video-fbdev xf86-video-vesa</pre>
<p>VIRTUALBOX (É mais complicadinho)</p>
<pre class="remontti-code"># pacman -S xf86-video-fbdev virtualbox-guest-utils virtualbox-guest-iso</pre>
<p>Insira o CD de adicionais do Virtualbox:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/05/31.png" data-rel="lightbox-gallery-pc0tVPQI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/05/31-300x184.png" alt="" width="300" height="184" class="alignnone size-medium wp-image-1963" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/05/31-300x184.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/05/31.png 428w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<pre class="remontti-code"># mount /dev/sr0 /mnt
# /mnt/VBoxLinuxAdditions.run</pre>
<p>Você pode encontrar mais drive no grupo <a href="https://www.archlinux.org/groups/x86_64/xorg-drivers/" target="_blank" rel="noopener noreferrer">xorg-drivers</a></p>
<p>Para testar nosso servidor X esta funcionando execute:</p>
<pre class="remontti-code"># startx</pre>
<p>Se abrir como a imagen abaixo tudo esta ok, para sair dela basta dar exit (crtl+d) para voltar.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/05/33.png" data-rel="lightbox-gallery-pc0tVPQI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/05/33-300x225.png" alt="" width="300" height="225" class="alignnone size-medium wp-image-1965" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/05/33-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/05/33.png 640w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<h3>Instalando <a href="https://www.gnome.org/" rel="noopener" target="_blank">Gnome</a></h3>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/01/gnome-40.png" data-rel="lightbox-gallery-pc0tVPQI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/01/gnome-40-300x160.png" alt="" width="300" height="160" class="alignnone size-medium wp-image-7002" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/01/gnome-40-300x160.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/01/gnome-40-1024x546.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/01/gnome-40-768x410.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/01/gnome-40-1536x819.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/01/gnome-40.png 1822w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Se desejar instalar o gnome sem as aplicações extras não instale o pacote gnome-extra.</p>
<pre class="remontti-code"># pacman -S gnome gnome-extra gnome-shell-extensions</pre>
<p>Para outras interfaces como KDE, Cinnamon, Deepin, MATE, Xfce entre outras <a href="https://wiki.archlinux.org/index.php/desktop_environment" target="_blank" rel="noopener noreferrer">clique aqui.</a></p>
<p>Agora vamos a escolha do <strong>gerenciador de entrada</strong> (<a href="https://wiki.archlinux.org/index.php/Display_manager" target="_blank" rel="noopener noreferrer">Display Manager</a>) Aquela telinha que ao ligar seu PC você escolhe seu usuário e digita a senha. Vou usar o <a href="https://wiki.gnome.org/Projects/GDM" rel="noopener" target="_blank">GDM</a> do Gnome.</p>
<pre class="remontti-code"># systemctl enable gdm</pre>
<p>Para conhecer outros gerenciadores de entrada <a href="https://wiki.archlinux.org/index.php/Display_manager#Graphical" target="_blank" rel="noopener noreferrer">clique aqui</a>.</p>
<p>Instalando pacotes básicos:</p>
<p><strong>Configurações de Rede</strong></p>
<pre class="remontti-code"># pacman -S networkmanager network-manager-applet wireless_tools wpa_supplicant
# systemctl enable NetworkManager
# systemctl start NetworkManager</pre>
<p>Reinicie e entre em seu ambiente gráfico.</p>
<pre class="remontti-code"># reboot</pre>
<p>Entre com seu usuário e senha utilizando o Gnome sobre Xorg<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_login.png" data-rel="lightbox-gallery-pc0tVPQI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_login.png" alt="" width="799" height="600" class="alignnone size-full wp-image-7020" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_login.png 799w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_login-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_login-768x577.png 768w" sizes="auto, (max-width: 799px) 100vw, 799px" /></a></p>
<pre class="remontti-code">$ sudo pacman -S neofetch
$ neofetch</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_terminal.png" data-rel="lightbox-gallery-pc0tVPQI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_terminal.png" alt="" width="1278" height="961" class="alignnone size-full wp-image-7025" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_terminal.png 1278w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_terminal-300x226.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_terminal-1024x770.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/01/arch_linux_kernel_6_terminal-768x578.png 768w" sizes="auto, (max-width: 1278px) 100vw, 1278px" /></a></p>
<pre class="remontti-code">$ sudo pacman -S  pavucontrol alsa-firmware alsa-utils a52dec faac\
  libmad libmpeg2 libxv gst-plugins-base-libs gst-plugins-ugly gst-libav gvfs-mtp</pre>
<p><strong>Bluetooth</strong></p>
<pre class="remontti-code">$ sudo pacman -S bluez blueman bluez-utils
$ sudo modprobe btusb
$ sudo systemctl enable bluetooth
$ sudo systemctl start bluetooth</pre>
<p><strong>Impressão</strong> (Não testei)</p>
<pre class="remontti-code">$ sudo pacman -S cups gtk3-print-backends system-config-printer
$ sudo systemctl enable cups
$ sudo systemctl start cups</pre>
<p><strong>Algumas ferramentas</strong></p>
<pre class="remontti-code">$ sudo pacman -S unzip unrar p7zip mlocate net-tools dnsutils nmap \
  htop iotop iftop hdparm traceroute tree \
  ipcalc mtr ncdu neofetch fzf curl grc \
  rtorrent bmon tcpdump qbittorrent git \
  filezilla vinagre rdesktop \
  kolourpaint breeze-icons</pre>
<p>Você pode querer instalar ainda</p>
<pre class="remontti-code">$ sudo pacman -S firefox firefox-i18n-pt-b
$ sudo pacman -S chromium 
$ sudo pacman -S vlc 
$ sudo pacman -S smplayer 
$ sudo pacman -S audacious 
$ sudo pacman -S gimp 
$ sudo pacman -S xfburn 
$ sudo pacman -S libreoffice</pre>
<p>OnlyOffice Desktop Editor</p>
<pre class="remontti-code">$ sudo pacman -S --needed base-devel git
$ cd /tmp
$ git clone https://aur.archlinux.org/onlyoffice-bin.git
$ cd onlyoffice-bin
$ makepkg -si
</pre>
<p>Wine</p>
<pre class="remontti-code">$ sudo pacman -S wine wine-mono wine-gecko
$ winecfg</pre>
<p>Fontes MS</p>
<pre class="remontti-code">$ cd /tmp
$ git clone https://aur.archlinux.org/ttf-ms-fonts.git
$ cd ttf-ms-fonts
$ makepkg -sri
$ cp /usr/share/fonts/TTF/* \
   ~/.wine/drive_c/windows/Fonts</pre>
<p>Instalando Yay AUR Helper</p>
<pre class="remontti-code">$ sudo pacman -S git
$ cd /opt
$ sudo git clone https://aur.archlinux.org/yay-git.git
$ sudo chown -R $USER:$USER ./yay-git
$ cd yay-git
$ makepkg -si
</pre>
<p>PlayonLinux</p>
<pre class="remontti-code">$ yay -S playonlinux</pre>
<p>Movendo os aplicativos instalado via Playonlinux para gaveta de aplicações, copiando as fontes MS.</p>
<pre class="remontti-code">$ mv ~/Área\ de\ trabalho/*.desktop  ~/.local/share/applications/
$ cp /usr/share/fonts/TTF/* \
    ~/PlayOnLinux\&#039;s\ virtual\ drives/default/drive_c/windows/Fonts/</pre>
<p>Telegram</p>
<pre class="remontti-code">$ cd /tmp/
$ wget https://telegram.org/dl/desktop/linux -O tsetup.tar.xz
$ tar xvf tsetup.tar.xz
$ sudo mv Telegram/ /opt/
$ sudo chown $USER:$USER /opt/Telegram/ -R
$ sudo ln -sf /opt/Telegram/Telegram /usr/bin/telegram
$ telegram &amp;</pre>
<p>VirtualBox</p>
<pre class="remontti-code">$ sudo pacman -S virtualbox virtualbox-host-modules-arch
$ sudo usermod -a -G vboxusers $USER</pre>
<p>Flameshot</p>
<pre class="remontti-code">$ sudo pacman -S flameshot
$ flameshot gui
$ flameshot config</pre>
<p>GNOME Shell Extensions.</p>
<pre class="remontti-code">$ yay -S extension-manager</pre>
<p><strong><a href="https://blog.remontti.com.br/141" target="_blank" rel="noopener noreferrer">Alguns ajustes que gosto de fazer no bash</a></strong></p>
<pre class="remontti-code">cat &lt;&lt;EOF &gt;~/.vimrc
set showmatch &quot; Mostrar colchetes correspondentes
set ts=4 &quot; Ajuste tab
set sts=4 &quot; Ajuste tab
set sw=4 &quot; Ajuste tab
set autoindent &quot; Ajuste tab
set smartindent &quot; Ajuste tab
set smarttab &quot; Ajuste tab
set expandtab &quot; Ajuste tab
&quot;set number &quot; Mostra numero da linhas
set background=dark
syntax on
EOF
</pre>
<pre class="remontti-code">$ vim .bashrc</pre>
<p>Adicione:</p>
<pre class="remontti-code">
PS1=&#039;${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u\[\033[01;34m\]@\[\033[01;33m\]\h\[\033[01;34m\][\[\033[00m\]\[\033[01;37m\]\w\[\033[01;34m\]]\[\033[01;31m\]\$\[\033[00m\] &#039;
export LS_OPTIONS=&#039;--color=auto&#039;
eval &quot;`dircolors`&quot;
alias ls=&#039;ls $LS_OPTIONS&#039;
alias ll=&#039;ls $LS_OPTIONS -l&#039;
alias l=&#039;ls $LS_OPTIONS -lA&#039;
alias grep=&#039;grep --color&#039;
</pre>
<p><strong>Comandos Básicos do Pacman</strong></p>
<pre class="remontti-code-plain">sudo pacman -Sy = sincroniza os repositórios.
sudo pacman -Su = procura por atualização.
sudo pacman -Syu = sincroniza os repositórios/procura por atualização.
sudo pacman -Syy = sincroniza os repositórios do Manjaro Linux.
sudo pacman -Syyu = sincronização total/procura por atualização.
sudo pacman -S pacote = instala um pacote.
sudo pacman -R pacote = remove um pacote.
sudo pacman -Rs pacote = remove o pacote junto com as dependências não usadas por outros pacotes.
sudo pacman -Rsn pacote = remove o pacote junto com as dependências não usadas por outros pacotes e junto com os arquivos de configuração.
sudo pacman -Ss pacote = procura por um pacote.
sudo pacman -Sw pacote = apenas baixa o pacote e não o instala.
sudo pacman -Si pacote = mostra informações de um pacote não instalado.
sudo pacman -Qi pacote = mostra informações do pacote já instalado.
sudo pacman -Se pacote = instala apenas as dependências.
sudo pacman -Ql pacote = mostra todos os arquivos pertencentes ao pacote.
sudo pacman -Qu = mostra os pacotes que serão atualizados.
sudo pacman -Q = lista todos os pacotes instalados.
sudo pacman -Qo arquivo = mostra a qual pacote aquele arquivo pertence.
sudo pacman -Qdt = lista pacotes desnecessários, sem dependências
sudo pacman -Rns $(pacman -Qqdt) = apaga pacotes desnecessários, sem dependências
sudo pacman -A pacote.pkg.tar.gz = instala um pacote local.
sudo pacman -Sc = deleta do cache todos os pacotes antigos.
sudo pacman -Scc = limpa o cache, removendo todos os pacotes existentes no /var/cache/pacman/pkg/.
sudo pacman-optimize = otimiza a base de dados do pacman.
sudo pacman -Sdd = instala ignorando as dependências.
sudo pacman -Rdd = elimina um pacote ignorando as dependências.
sudo pacman-mirrors.conf = para gerenciar pacman.cof
sudo pacman-mirrors -g = para gerar um novo mirrorlist
sudo pacman -U home/user/arquivo.tar.xz = instalar pacotes baixados no pc
sudo pacman -U http://www.site.com/arquivo.tar.xz = instalar pacotes baixados via download
sudo pacman -Qem = lista pacotes instalados do repo AUR
sudo pacman -Rscn = desinstala pacotes e suas dependencias e seus registros, tudo.
sudo pacman -S pacote --nonconfirm = Instala o pacote sem precisar confirmar com “yes/no ,S/N”…
sudo pacman -Syu --ignoregroup pacote1 , pacote2… = sincroniza os repositórios/procura por atualização e ignora os grupos dos pacotes solicitados
</pre>
<p>Depois de instalar o yay, você pode atualizar todos os pacotes em seu sistema usando o comando.</p>
<pre class="remontti-code">$ sudo yay -Syu</pre>
<p>Para incluir pacotes de desenvolvimento durante a execução da atualização.</p>
<pre class="remontti-code">$ yay -Syu --devel --timeupdate </pre>
<p>Assim como qualquer outro auxiliar AUR, você pode instalar os pacotes usando o comando.</p>
<pre class="remontti-code">$ sudo yay -S spotify</pre>
<p>Para remover um pacote usando yay, use o comando.</p>
<pre class="remontti-code">$ sudo yay -Rns package_name</pre>
<p>Para limpar todas as dependências indesejadas em seu sistema, execute o comando.</p>
<pre class="remontti-code">$ sudo yay -Yc</pre>
<p>Se você deseja imprimir estatísticas do sistema usando yay, execute.</p>
<pre class="remontti-code">$ sudo yay -Ps</pre>
<p>Imagem criada pela AI <a href="https://midjourney.com/" rel="noopener" target="_blank">https://midjourney.com/</a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/01/wallpaper_arch.png" data-rel="lightbox-gallery-pc0tVPQI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/01/wallpaper_arch-300x200.png" alt="" width="300" height="200" class="alignnone size-medium wp-image-7034" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/01/wallpaper_arch-300x200.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/01/wallpaper_arch-1024x683.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/01/wallpaper_arch-768x512.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/01/wallpaper_arch.png 1536w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Gostou?</p>
<p>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!<br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/6992">Como instalar o Arch Linux com Kernel 6.x + Gnome desktop</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6992/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Rodando servidor proxy-cache DNS com Unbound</title>
		<link>https://blog.remontti.com.br/6506</link>
					<comments>https://blog.remontti.com.br/6506#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 01 Jun 2022 20:21:32 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[bind9]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[proxy-cache]]></category>
		<category><![CDATA[Unbound]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6506</guid>

					<description><![CDATA[<p>Autor: Patrick Brandão Motivação: ao rodar qualquer software no Linux, a resolução de DNS e feita pela libresolv, que faz a leitura do /etc/host.conf e /etc/resolv.conf para obter o IP do servidor DNS. Assim,&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6506">Rodando servidor proxy-cache DNS com Unbound</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/unbound.png" alt="" width="720" height="340" class="alignnone size-full wp-image-6540" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/unbound.png 720w, https://blog.remontti.com.br/wp-content/uploads/2022/06/unbound-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/unbound-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-thumbnail wp-image-6530 alignright" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/patrick-150x150.jpg" alt="" width="150" height="150" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/patrick-150x150.jpg 150w, https://blog.remontti.com.br/wp-content/uploads/2022/06/patrick-300x300.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/patrick-80x80.jpg 80w, https://blog.remontti.com.br/wp-content/uploads/2022/06/patrick-320x320.jpg 320w, https://blog.remontti.com.br/wp-content/uploads/2022/06/patrick.jpg 640w" sizes="auto, (max-width: 150px) 100vw, 150px" /><br />
<strong>Autor</strong>:  <a href="https://t.me/patrickbrandao" rel="noopener" target="_blank">Patrick Brandão</a></p>
<p><strong>Motivação</strong>: ao rodar qualquer software no Linux, a resolução de DNS e feita pela <strong>libresolv</strong>, que faz a leitura do /etc/host.conf e /etc/resolv.conf para obter o IP do servidor DNS.</p>
<p>Assim, a resolução de nomes requer envio de pacotes para fora do host e aguarda pela resposta, que pode demorar (latência alta) ou não ser respondida por problemas na rede entre o host e o servidor DNS (remoto)</p>
<p>A <strong>libresolv</strong> não possui suporte a cache, ou seja, se você precisar consultar um domínio (www.google.com) dezenas de vezes em um segundo, todas as vezes ela terá que enviar a pergunta ao servidor DNS para obter a mesma resposta.</p>
<p>Rodando um servidor proxy-cache DNS no host linux você garante que a libresolv envie os pedidos para um software <strong>rodando no mesmo host</strong> mas que ficará por conta de consultar 1 ou mais servidores,<strong> e salvando os resultados obtidos em cache</strong>, economizando banda e tempo nas próximas requisições aos mesmos nomes.</p>
<p>O resultado dessa implementação é uma maior velocidade no inicio das conexões do servidor.</p>
<p><strong>OBS:</strong><br />
<em><font color="red">Você não está criando um servidor recursivo, pare resoluções de nomes para sua rede!</font><br />
<font color="blue">Mas ao final Rudimar Remontti vai explicar como tornar ele recursivo.</font></em></p>
<p><strong>Distribuição utilizada: </strong><br />
Debian 11 (Bullseye) 64 bits <a href="https://blog.remontti.com.br/5792" target="_blank" rel="noopener">instalação mínima</a></p>
<h3>Instalando Unbound</h3>
<pre class="remontti-code"># apt update; apt upgrade
# apt install unbound</pre>
<p><strong>Configurando</strong><br />
A configuração abaixo visa consumir recursos mínimos e atender somente os softwares do próprio host.</p>
<pre class="remontti-code"># cat &gt; /etc/unbound/unbound.conf.d/root-auto-trust-anchor-file.conf &lt;&lt; EOF
server:
    auto-trust-anchor-file: &quot;/var/lib/unbound/root.key&quot;
    verbosity: 1
    statistics-interval: 20
    extended-statistics: yes
    num-threads: 2

    # Caso seja necessário fixar o IP de origem:
    #outgoing-interface: x.x.x.x

    # Abrir a porta apenas nos endereços loopback (!!segurança!!)
    interface: 127.0.0.1
    interface: ::1

    # Permitir todos os IPs pois abrimos a porta apenas para a loopback
    access-control: 127.0.0.1/8 allow
    access-control: ::1 allow

    outgoing-range: 512
    num-queries-per-thread: 128

    msg-cache-size: 2m
    rrset-cache-size: 1m

    msg-cache-slabs: 4
    rrset-cache-slabs: 4

    cache-max-ttl: 1200
    infra-host-ttl: 60
    infra-lame-ttl: 60

    infra-cache-numhosts: 128
    infra-cache-lame-size: 2k

    do-ip4: yes
    do-ip6: yes
    do-udp: yes
    do-tcp: yes
    do-daemonize: yes

    username: &quot;unbound&quot;
    directory: &quot;/etc/unbound&quot;
    logfile: &quot;/var/log/unbound.log&quot;
    use-syslog: yes
    pidfile: &quot;/run/unbound.pid&quot;

    identity: &quot;Unbound-LocalCache&quot;
    version: &quot;1.0&quot;
    hide-identity: yes
    hide-version: yes
    harden-glue: yes
    do-not-query-address: 127.0.0.1/8
    do-not-query-localhost: yes
    module-config: &quot;iterator&quot;

    #zone localhost
    local-zone: &quot;localhost.&quot; static
    local-data: &quot;localhost. 10800 IN NS localhost.&quot;
    local-data: &quot;localhost. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800&quot;
    local-data: &quot;localhost. 10800 IN A 127.0.0.1&quot;

    local-zone: &quot;127.in-addr.arpa.&quot; static
    local-data: &quot;127.in-addr.arpa. 10800 IN NS localhost.&quot;
    local-data: &quot;127.in-addr.arpa. 10800 IN SOA localhost. nobody.invalid. 2 3600 1200 604800 10800&quot;
    local-data: &quot;1.0.0.127.in-addr.arpa. 10800 IN PTR localhost.&quot;

remote-control:
    control-enable: yes
    control-interface: 127.0.0.1
    control-port: 8953
    control-use-cert: &quot;no&quot;


# Operar 100% em modo forward, informe o ip dos servidores DNSs reais:
forward-zone:
    name: &quot;.&quot;
    forward-addr: 8.8.8.8
    forward-addr: 8.8.4.4

# Encaminhar dominio especifico para servidor DNS especifico:
forward-zone:
    name: &quot;slack.com&quot;
    forward-addr: 1.1.1.1
    forward-addr: 1.0.0.1
EOF
</pre>
<p>Acima criamos um forward do domínio slack.com indo para um DNS diferente (1.1.1.1 e 1.0.0.1) do padrão 8.8.8.8 e 8.8.4.4</p>
<p>Reinicie o serviço para carregar as novas configurações</p>
<pre class="remontti-code"># systemctl restart unbound</pre>
<p>Instale o pacote dnsutils para ter ferramentas de testes</p>
<pre class="remontti-code"># apt install dnsutils</pre>
<p>Testando IPv4</p>
<pre class="remontti-code"># host google.com 127.0.0.1</pre>
<pre class="remontti-code-plain">Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases: 

google.com has address 142.250.218.78
google.com has IPv6 address 2800:3f0:4001:81d::200e
google.com mail is handled by 10 smtp.google.com.</pre>
<pre class="remontti-code"># dig ANY google.com @127.0.0.1</pre>
<pre class="remontti-code-plain">; &lt;&lt;&gt;&gt; DiG 9.16.27-Debian &lt;&lt;&gt;&gt; ANY google.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 893
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;google.com.			IN	ANY

;; ANSWER SECTION:
google.com.		129	IN	A	142.250.218.78
google.com.		129	IN	AAAA	2800:3f0:4001:81d::200e
google.com.		51	IN	MX	10 smtp.google.com.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Jun 01 15:59:35 -03 2022
;; MSG SIZE  rcvd: 104</pre>
<p>Testando IPv6</p>
<pre class="remontti-code"># host google.com ::1</pre>
<pre class="remontti-code-plain">Using domain server:
Name: ::1
Address: ::1#53
Aliases: 

google.com has address 142.250.218.78
google.com has IPv6 address 2800:3f0:4001:81d::200e
google.com mail is handled by 10 smtp.google.com.
</pre>
<pre class="remontti-code"># dig ANY google.com @::1</pre>
<pre class="remontti-code-plain">; &lt;&lt;&gt;&gt; DiG 9.16.27-Debian &lt;&lt;&gt;&gt; ANY google.com @::1
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 56485
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;google.com.			IN	ANY

;; ANSWER SECTION:
google.com.		106	IN	A	142.250.218.78
google.com.		281	IN	AAAA	2800:3f0:4001:81d::200e
google.com.		281	IN	MX	10 smtp.google.com.

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Wed Jun 01 16:03:30 -03 2022
;; MSG SIZE  rcvd: 104
</pre>
<p>Configurando o Linux para usar o servidor DNS na loopback como servidor DNS</p>
<pre class="remontti-code"># echo &quot;nameserver 127.0.0.1&quot; &gt; /etc/resolv.conf
# echo &quot;nameserver ::1 &quot; &gt;&gt; /etc/resolv.conf</pre>
<h3>Tornando recursivo</h3>
<p><strong>Contribuição extra por:</strong> <a href="https://t.me/remontti" rel="noopener" target="_blank">Rudimar Remontti</a><br />
Caso deseje tornar recursivo para os demais hosts da sua rede este servidor, primeira coisa que você deve ter em mente que se este servidor conter IPs públicos o mesmo será responsivo para todo o planeta terra e alguns "ali<em>G</em>enigenas". Então o mínimo que você deve ter é um firewall, protegendo a porta 53 tcp/udp para responder apenas para sua rede.</p>
<pre class="remontti-code"># vim /etc/unbound/unbound.conf.d/root-auto-trust-anchor-file.conf</pre>
<p>Abaixo de:</p>
<pre class="remontti-code-plain">
    # abrir a porta apenas nos enderecos loopback (seguranca)
    interface: 127.0.0.1
    interface: ::1</pre>
<p>Adicione</p>
<pre class="remontti-code-plain">
    # abrir a porta para os ips de interface (risco)
    interface: 200.200.200.200
    interface: 2000:bebe:cafe::f07e</pre>
<p>Abaixo de:</p>
<pre class="remontti-code-plain">
    # Permitir todos os IPs pois abrimos a porta apenas para a loopback
    access-control: 127.0.0.1/8 allow
    access-control: ::1 allow</pre>
<p>Adicione os prefixos da sua rede</p>
<pre class="remontti-code-plain">
    access-control: 192.168.0.0/16 allow
    access-control: 172.16.0.0/12 allow
    access-control: 100.64.0.0/10 allow
    access-control: 10.0.0.0/8 allow
    access-control: 200.200.0.0/22 allow
    access-control: 2001:db8::/32 allow</pre>
<p>Desta forma abrindo conexão para os IPs da interface <em>"200.200.200.200" e "2000:bebe:cafe::f07e"</em></p>
<p>Reinicie o serviço para carregar as alterações</p>
<pre class="remontti-code"># systemctl restart unbound</pre>
<p>Pode consultar se as porta estão sendo ouvidas:</p>
<pre class="remontti-code"># ss -putan  | grep LISTEN | grep :53</pre>
<pre class="remontti-code-plain">
tcp   LISTEN 0      256           200.200.200.200:53           0.0.0.0:*     users:((&quot;unbound&quot;,pid=6079,fd=16))                 
tcp   LISTEN 0      256                 127.0.0.1:53           0.0.0.0:*     users:((&quot;unbound&quot;,pid=6079,fd=12))                 
tcp   LISTEN 0      256           200.200.200.200:53           0.0.0.0:*     users:((&quot;unbound&quot;,pid=6079,fd=8))                  
tcp   LISTEN 0      256                 127.0.0.1:53           0.0.0.0:*     users:((&quot;unbound&quot;,pid=6079,fd=4))                  
tcp   LISTEN 0      256                     [::1]:53              [::]:*     users:((&quot;unbound&quot;,pid=6079,fd=6))                  
tcp   LISTEN 0      256    [2000:bebe:cafe::f07e]:53              [::]:*     users:((&quot;unbound&quot;,pid=6079,fd=10))                 
tcp   LISTEN 0      256                     [::1]:53              [::]:*     users:((&quot;unbound&quot;,pid=6079,fd=14))                 
tcp   LISTEN 0      256    [2000:bebe:cafe::f07e]:53              [::]:*     users:((&quot;unbound&quot;,pid=6079,fd=18))</pre>
<p><strong>Firewall</strong><br />
Porém mesmo que você tenha setados seus prefixos em <strong>access-control</strong> a porta 53 estará respondendo para todo o mundo. Para fechar elas use o nfttables que por padrão já vem no Debian 11 no lugar do iptables. Você pode instalar o mesmo com apt se necessário.</p>
<p>Edite o arquivo do nftables</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<p>Ajuste para ficar assim e em <strong>elements</strong> insira todos seus prefixos autorizados.</p>
<pre class="remontti-code">#!/usr/sbin/nft -f
  
flush ruleset

table inet filter {

    set acesso-dns4 {
        flags interval
        type ipv4_addr
        elements = { 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, 200.200.200.0/22 }
    }
    set acesso-dns6 {
        flags interval
        type ipv6_addr
        elements = { ::1, 2001:db8::/32 }
    }
    chain input {
        type filter hook input priority 0;

        # Permite Acesso DNS na porta 53
        ip saddr  @acesso-dns4 udp dport 53 counter accept
        ip saddr  @acesso-dns4 tcp dport 53 counter accept
        ip6 saddr @acesso-dns6 udp dport 53 counter accept
        ip6 saddr @acesso-dns6 tcp dport 53 counter accept
        udp dport 53 counter drop
        tcp dport 53 counter drop

        type filter hook input priority 0;
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}</pre>
<p>Habilite o mesmo para iniciar com o boot e reinicie.</p>
<pre class="remontti-code"># systemctl enable nftables
# systemctl restart nftables</pre>
<p>Consulte se seu firewall foi carregado com o comando:</p>
<pre class="remontti-code"># nft list ruleset</pre>
<p>Retorno:</p>
<pre class="remontti-code-plain">table inet filter {
	set acesso-dns4 {
		type ipv4_addr
		flags interval
		elements = { 10.0.0.0/8, 100.64.0.0/10,
			     127.0.0.1, 172.16.0.0/12,
			     192.168.0.0/16, 200.200.200.0/22 }
	}

	set acesso-dns6 {
		type ipv6_addr
		flags interval
		elements = { ::1,
			     2001:db8::/32 }
	}

	chain input {
		type filter hook input priority filter; policy accept;
		ip saddr @acesso-dns4 udp dport 53 counter packets 0 bytes 0 accept
		ip saddr @acesso-dns4 tcp dport 53 counter packets 0 bytes 0 accept
		ip6 saddr @acesso-dns6 udp dport 53 counter packets 0 bytes 0 accept
		ip6 saddr @acesso-dns6 tcp dport 53 counter packets 0 bytes 0 accept
		udp dport 53 counter packets 0 bytes 0 drop
		tcp dport 53 counter packets 0 bytes 0 drop
	}

	chain forward {
		type filter hook forward priority filter; policy accept;
	}

	chain output {
		type filter hook output priority filter; policy accept;
	}
}</pre>
<p>Pronto espero que tenha gostado! Agradeço ao meu parceiro Patrick!</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/6506">Rodando servidor proxy-cache DNS com Unbound</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6506/feed</wfw:commentRss>
			<slash:comments>21</slash:comments>
		
		
			</item>
		<item>
		<title>Como instalar Netbox, ferramenta grátis para documentar sua rede</title>
		<link>https://blog.remontti.com.br/5412</link>
					<comments>https://blog.remontti.com.br/5412#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 19 Mar 2021 20:06:22 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[documentação]]></category>
		<category><![CDATA[netbox]]></category>
		<category><![CDATA[nginx]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5412</guid>

					<description><![CDATA[<p>Netbox é um aplicativo web de código aberto projetado para ajudar a gerenciar e documentar redes de computadores. Concebido inicialmente pela equipe de engenharia de rede da DigitalOcean , o NetBox foi desenvolvido especificamente&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5412">Como instalar Netbox, ferramenta grátis para documentar sua rede</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox.png" alt="" width="416" height="121" class="alignnone size-full wp-image-5421" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox.png 416w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-300x87.png 300w" sizes="auto, (max-width: 416px) 100vw, 416px" /><br />
<a href="https://netbox.readthedocs.io/en/stable/" rel="noopener" target="_blank">Netbox</a> é um aplicativo web de código aberto projetado para ajudar a gerenciar e documentar redes de computadores. Concebido inicialmente pela equipe de engenharia de rede da DigitalOcean , o NetBox foi desenvolvido especificamente para atender às necessidades dos engenheiros de rede e infraestrutura. Abrange os seguintes aspectos de gerenciamento de rede:</p>
<p>Gerenciamento de endereço IP (IPAM) &#8211; redes e endereços IP, VRFs e VLANs</p>
<ul>
<li><strong>Racks de equipamentos</strong> &#8211; organizados por grupo e local</li>
<li><strong>Dispositivos</strong> &#8211; Tipos de dispositivos e onde estão instalados</li>
<li><strong>Conexões</strong> &#8211; Rede, console e conexões de energia entre dispositivos</li>
<li><strong>Virtualização</strong> &#8211; máquinas virtuais e clusters</li>
<li><strong>Circuitos de dados</strong> &#8211; circuitos e provedores de comunicações de longa distância</li>
<li><strong>Segredos</strong> &#8211; armazenamento criptografado de credenciais confidenciais</li>
</ul>
<p><strong>Requisitos:</strong><br />
Como de costume vou realizar a <a href="https://blog.remontti.com.br/2966" rel="noopener" target="_blank">instalação no<strong> Debian 10</strong> limpo </a>(sem pacotes extras)<br />
Vire root da forma correta, colocando após os su o &#8220;-&#8220;. </p>
<pre class="remontti-code">su -</pre>
<p>Instale os pacotes que serão requisitos.</p>
<pre class="remontti-code"># apt install vim net-tools wget redis-server supervisor\
  postgresql-contrib postgresql libpq-dev gcc\
  python-minimal python3 python3-pip python3-venv\
  python3-dev build-essential libxml2-dev libxslt1-dev\
  libffi-dev libssl-dev zlib1g-dev graphviz\
  nginx redis python3-setuptools</pre>
<p>Vire o usuário postgres, para poder criar nosso banco de dados.</p>
<pre class="remontti-code"># su - postgres</pre>
<p>Entre no terminal de comandos do postgres</p>
<pre class="remontti-code">$ psql</pre>
<p>Não esqueça de alterar a <strong>senha</strong>.</p>
<pre class="remontti-code">postgres=# CREATE DATABASE netboxdb;
postgres=# CREATE USER netboxuser WITH PASSWORD &#039;senha&#039;;
postgres=# GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netboxuser;
postgres=# exit</pre>
<p> Verifique ser o serviço redis esta respondendo.</p>
<pre class="remontti-code">$ redis-cli ping</pre>
<p>Deve retornar : <strong>PONG</strong><br />
Retorne ao usuario root</p>
<pre class="remontti-code">exit</pre>
<p>Atualize o pip</p>
<pre class="remontti-code"># pip3 install --upgrade pip</pre>
<p>Agora vamos baixar o projeto NetBox. Verifique em <a href="https://github.com/netbox-community/netbox/releases" rel="noopener" target="_blank">https://github.com/netbox-community/netbox/releases</a> não existe uma nova versão.<br />
Entre em tmp (diretório temporário do linux que após um reboot é apagado) em seguida fizemos o download, extraímos, movemos para o diretório correto bem como ajustamos permissões do diretório que faremos upload de arquivos.</p>
<pre class="remontti-code"># cd /tmp
# wget https://github.com/netbox-community/netbox/archive/refs/tags/v2.10.8.tar.gz
# tar vxf v2.10.8.tar.gz
# mv netbox*/ /opt/netbox
# cd /opt/netbox/
# chown www-data. /opt/netbox/netbox/media/ -R</pre>
<p>Execute o comando abaixo para gerar nossa SECRET KEY que iremos usar em seguida.</p>
<pre class="remontti-code"># /opt/netbox/netbox/generate_secret_key.py </pre>
<p>Ex.:</p>
<pre class="remontti-code-plain">T7TE07O$j^Jqf9(*20q8M5kG4%NBIci#gEEn0$wuw*qodT7Lfo</pre>
<p>Copie o arquivo de configuração exemplo para ajustar com suas infomações</p>
<pre class="remontti-code"># cp /opt/netbox/netbox/netbox/configuration.example.py /opt/netbox/netbox/netbox/configuration.py
# vim /opt/netbox/netbox/netbox/configuration.py</pre>
<p>Localize as linhas como exemplo abaixo e altere os valores.</p>
<pre class="remontti-code">ALLOWED_HOSTS = [&#039;localhost&#039;,&#039;netbox.remontti.com.br&#039;]

DATABASE = {
    &#039;NAME&#039;: &#039;netboxdb&#039;,       # Database name
    &#039;USER&#039;: &#039;netboxuser&#039;,     # PostgreSQL username
    &#039;PASSWORD&#039;: &#039;senha&#039;,      # PostgreSQL password
    &#039;HOST&#039;: &#039;localhost&#039;,      # Database server
    &#039;PORT&#039;: &#039;&#039;,               # Database port (leave blank for default)
    &#039;CONN_MAX_AGE&#039;: 300,      # Max database connection age
}
# Gerado com o comando /opt/netbox/netbox/generate_secret_key.py
SECRET_KEY = &#039;T7TE07O$j^Jqf9(*20q8M5kG4%NBIci#gEEn0$wuw*qodT7Lfo&#039;

LOGIN_REQUIRED = True</pre>
<p>Instalaremos os pacotes do py requeiridos.</p>
<pre class="remontti-code"># pip3 install -r /opt/netbox/requirements.txt</pre>
<p>Vamos a instalção do bichão!</p>
<pre class="remontti-code"># cd /opt/netbox/netbox/
# python3 manage.py migrate</pre>
<pre class="remontti-code-plain">Operations to perform:
  Apply all migrations: admin, auth, circuits, contenttypes, dcim, extras, ipam, secrets, sessions, taggit, tenancy, users, virtualization
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying tenancy.0001_initial... OK
  Applying tenancy.0002_tenant_group_optional... OK
  Applying tenancy.0003_unicode_literals... OK
  Applying taggit.0001_initial... OK
  Applying taggit.0002_auto_20150616_2121... OK
  Applying tenancy.0004_tags... OK
  Applying tenancy.0005_change_logging... OK
  Applying dcim.0001_initial... OK
  Applying ipam.0001_initial... OK
  Applying dcim.0002_auto_20160622_1821... OK
  Applying extras.0001_initial... OK
  Applying extras.0002_custom_fields... OK
  Applying extras.0003_exporttemplate_add_description... OK
  Applying extras.0004_topologymap_change_comma_to_semicolon... OK
  Applying extras.0005_useraction_add_bulk_create... OK
  Applying extras.0006_add_imageattachments... OK
  Applying extras.0007_unicode_literals... OK
  Applying extras.0008_reports... OK
  Applying extras.0009_topologymap_type... OK
  Applying extras.0010_customfield_filter_logic... OK
  Applying extras.0011_django2... OK
  Applying extras.0012_webhooks... OK
  Applying extras.0013_objectchange... OK
  Applying ipam.0002_vrf_add_enforce_unique... OK
  Applying dcim.0003_auto_20160628_1721... OK
  Applying dcim.0004_auto_20160701_2049... OK
  Applying dcim.0005_auto_20160706_1722... OK
  Applying dcim.0006_add_device_primary_ip4_ip6... OK
  Applying dcim.0007_device_copy_primary_ip... OK
  Applying dcim.0008_device_remove_primary_ip... OK
  Applying dcim.0009_site_32bit_asn_support... OK
  Applying dcim.0010_devicebay_installed_device_set_null... OK
  Applying ipam.0003_ipam_add_vlangroups... OK
  Applying ipam.0004_ipam_vlangroup_uniqueness... OK
  Applying ipam.0005_auto_20160725_1842... OK
  Applying ipam.0006_vrf_vlan_add_tenant... OK
  Applying ipam.0007_prefix_ipaddress_add_tenant... OK
  Applying ipam.0008_prefix_change_order... OK
  Applying ipam.0009_ipaddress_add_status... OK
  Applying ipam.0010_ipaddress_help_texts... OK
  Applying ipam.0011_rir_add_is_private... OK
  Applying dcim.0011_devicetype_part_number... OK
  Applying dcim.0012_site_rack_device_add_tenant... OK
  Applying dcim.0013_add_interface_form_factors... OK
  Applying dcim.0014_rack_add_type_width... OK
  Applying dcim.0015_rack_add_u_height_validator... OK
  Applying dcim.0016_module_add_manufacturer... OK
  Applying dcim.0017_rack_add_role... OK
  Applying dcim.0018_device_add_asset_tag... OK
  Applying dcim.0019_new_iface_form_factors... OK
  Applying dcim.0020_rack_desc_units... OK
  Applying dcim.0021_add_ff_flexstack... OK
  Applying dcim.0022_color_names_to_rgb... OK
  Applying ipam.0012_services... OK
  Applying ipam.0013_prefix_add_is_pool... OK
  Applying ipam.0014_ipaddress_status_add_deprecated... OK
  Applying ipam.0015_global_vlans... OK
  Applying ipam.0016_unicode_literals... OK
  Applying ipam.0017_ipaddress_roles... OK
  Applying ipam.0018_remove_service_uniqueness_constraint... OK
  Applying dcim.0023_devicetype_comments... OK
  Applying dcim.0024_site_add_contact_fields... OK
  Applying dcim.0025_devicetype_add_interface_ordering... OK
  Applying dcim.0026_add_rack_reservations... OK
  Applying dcim.0027_device_add_site... OK
  Applying dcim.0028_device_copy_rack_to_site... OK
  Applying dcim.0029_allow_rackless_devices... OK
  Applying dcim.0030_interface_add_lag... OK
  Applying dcim.0031_regions... OK
  Applying dcim.0032_device_increase_name_length... OK
  Applying dcim.0033_rackreservation_rack_editable... OK
  Applying dcim.0034_rename_module_to_inventoryitem... OK
  Applying dcim.0035_device_expand_status_choices... OK
  Applying dcim.0036_add_ff_juniper_vcp... OK
  Applying dcim.0037_unicode_literals... OK
  Applying dcim.0038_wireless_interfaces... OK
  Applying dcim.0039_interface_add_enabled_mtu... OK
  Applying dcim.0040_inventoryitem_add_asset_tag_description... OK
  Applying dcim.0041_napalm_integration... OK
  Applying dcim.0042_interface_ff_10ge_cx4... OK
  Applying dcim.0043_device_component_name_lengths... OK
  Applying virtualization.0001_virtualization... OK
  Applying ipam.0019_virtualization... OK
  Applying ipam.0020_ipaddress_add_role_carp... OK
  Applying dcim.0044_virtualization... OK
  Applying dcim.0045_devicerole_vm_role... OK
  Applying dcim.0046_rack_lengthen_facility_id... OK
  Applying dcim.0047_more_100ge_form_factors... OK
  Applying dcim.0048_rack_serial... OK
  Applying dcim.0049_rackreservation_change_user... OK
  Applying dcim.0050_interface_vlan_tagging... OK
  Applying dcim.0051_rackreservation_tenant... OK
  Applying dcim.0052_virtual_chassis... OK
  Applying dcim.0053_platform_manufacturer... OK
  Applying dcim.0054_site_status_timezone_description... OK
  Applying dcim.0055_virtualchassis_ordering... OK
  Applying dcim.0056_django2... OK
  Applying dcim.0057_tags... OK
  Applying dcim.0058_relax_rack_naming_constraints... OK
  Applying dcim.0059_site_latitude_longitude... OK
  Applying dcim.0060_change_logging... OK
  Applying dcim.0061_platform_napalm_args... OK
  Applying extras.0014_configcontexts... OK
  Applying extras.0015_remove_useraction... OK
  Applying extras.0016_exporttemplate_add_cable... OK
  Applying extras.0017_exporttemplate_mime_type_length... OK
  Applying extras.0018_exporttemplate_add_jinja2... OK
  Applying extras.0019_tag_taggeditem... OK
  Applying dcim.0062_interface_mtu... OK
  Applying dcim.0063_device_local_context_data... OK
  Applying dcim.0064_remove_platform_rpc_client... OK
  Applying dcim.0065_front_rear_ports... OK
  Applying circuits.0001_initial... OK
  Applying circuits.0002_auto_20160622_1821... OK
  Applying circuits.0003_provider_32bit_asn_support... OK
  Applying circuits.0004_circuit_add_tenant... OK
  Applying circuits.0005_circuit_add_upstream_speed... OK
  Applying circuits.0006_terminations... OK
  Applying dcim.0066_cables...
    Adding console connections... 0 cables created
    Adding power connections... 0 cables created
    Adding interface connections... 0 cables created
 OK
  Applying circuits.0007_circuit_add_description... OK
  Applying circuits.0008_circuittermination_interface_protect_on_delete... OK
  Applying circuits.0009_unicode_literals... OK
  Applying circuits.0010_circuit_status... OK
  Applying circuits.0011_tags... OK
  Applying circuits.0012_change_logging... OK
  Applying circuits.0013_cables...
    Adding circuit terminations... 0 cables created
 OK
  Applying circuits.0014_circuittermination_description... OK
  Applying circuits.0015_custom_tag_models... OK
  Applying circuits.0016_3569_circuit_fields... OK
  Applying circuits.0017_circuittype_description... OK
  Applying circuits.0018_standardize_description... OK
  Applying circuits.0019_nullbooleanfield_to_booleanfield... OK
  Applying virtualization.0002_virtualmachine_add_status... OK
  Applying virtualization.0003_cluster_add_site... OK
  Applying virtualization.0004_virtualmachine_add_role... OK
  Applying virtualization.0005_django2... OK
  Applying virtualization.0006_tags... OK
  Applying virtualization.0007_change_logging... OK
  Applying virtualization.0008_virtualmachine_local_context_data... OK
  Applying virtualization.0009_custom_tag_models... OK
  Applying virtualization.0010_cluster_add_tenant... OK
  Applying virtualization.0011_3569_virtualmachine_fields... OK
  Applying tenancy.0006_custom_tag_models... OK
  Applying virtualization.0012_vm_name_nonunique... OK
  Applying virtualization.0013_deterministic_ordering... OK
  Applying virtualization.0014_standardize_description... OK
  Applying ipam.0021_vrf_ordering... OK
  Applying ipam.0022_tags... OK
  Applying ipam.0023_change_logging... OK
  Applying ipam.0024_vrf_allow_null_rd... OK
  Applying ipam.0025_custom_tag_models... OK
  Applying ipam.0026_prefix_ordering_vrf_nulls_first... OK
  Applying ipam.0027_ipaddress_add_dns_name... OK
  Applying ipam.0028_3569_prefix_fields... OK
  Applying ipam.0029_3569_ipaddress_fields... OK
  Applying ipam.0030_3569_vlan_fields... OK
  Applying ipam.0031_3569_service_fields... OK
  Applying ipam.0032_role_description... OK
  Applying ipam.0033_deterministic_ordering... OK
  Applying ipam.0034_fix_ipaddress_status_dhcp... OK
  Applying ipam.0035_drop_ip_family... OK
  Applying ipam.0036_standardize_description... OK
  Applying secrets.0001_initial... OK
  Applying secrets.0002_userkey_add_session_key... OK
  Applying secrets.0003_unicode_literals... OK
  Applying secrets.0004_tags... OK
  Applying secrets.0005_change_logging... OK
  Applying secrets.0006_custom_tag_models... OK
  Applying dcim.0067_device_type_remove_qualifiers... OK
  Applying dcim.0068_rack_new_fields... OK
  Applying dcim.0069_deprecate_nullablecharfield... OK
  Applying dcim.0070_custom_tag_models... OK
  Applying extras.0020_tag_data... OK
  Applying extras.0021_add_color_comments_changelog_to_tag... OK
  Applying extras.0022_custom_links... OK
  Applying extras.0023_fix_tag_sequences... OK
  Applying extras.0024_scripts... OK
  Applying extras.0025_objectchange_time_index... OK
  Applying extras.0026_webhook_ca_file_path... OK
  Applying extras.0027_webhook_additional_headers... OK
  Applying extras.0028_remove_topology_maps... OK
  Applying extras.0029_3569_customfield_fields... OK
  Applying extras.0030_3569_objectchange_fields... OK
  Applying extras.0031_3569_exporttemplate_fields... OK
  Applying extras.0032_3569_webhook_fields... OK
  Applying extras.0033_graph_type_template_language... OK
  Applying extras.0034_configcontext_tags... OK
  Applying extras.0035_deterministic_ordering... OK
  Applying extras.0036_contenttype_filters_to_q_objects... OK
  Applying extras.0037_configcontexts_clusters... OK
  Applying extras.0038_webhook_template_support... OK
  Applying extras.0039_update_features_content_types... OK
  Applying extras.0040_standardize_description... OK
  Applying extras.0041_tag_description... OK
  Applying extras.0042_customfield_manager... OK
  Applying virtualization.0015_vminterface... OK
  Applying ipam.0037_ipaddress_assignment... OK
  Applying dcim.0071_device_components_add_description... OK
  Applying dcim.0072_powerfeeds... OK
  Applying dcim.0073_interface_form_factor_to_type... OK
  Applying dcim.0074_increase_field_length_platform_name_slug... OK
  Applying dcim.0075_cable_devices...
Updating cable device terminations...
 OK
  Applying dcim.0076_console_port_types... OK
  Applying dcim.0077_power_types... OK
  Applying dcim.0078_3569_site_fields... OK
  Applying dcim.0079_3569_rack_fields... OK
  Applying dcim.0080_3569_devicetype_fields... OK
  Applying dcim.0081_3569_device_fields... OK
  Applying dcim.0082_3569_interface_fields... OK
  Applying virtualization.0016_replicate_interfaces...
    Replicating 0 VM interfaces...
    Replicating assigned objects...
 OK
  Applying dcim.0082_3569_port_fields... OK
  Applying dcim.0083_3569_cable_fields... OK
  Applying dcim.0084_3569_powerfeed_fields... OK
  Applying dcim.0085_3569_poweroutlet_fields... OK
  Applying dcim.0086_device_name_nonunique... OK
  Applying dcim.0087_role_descriptions... OK
  Applying dcim.0088_powerfeed_available_power... OK
  Applying dcim.0089_deterministic_ordering... OK
  Applying dcim.0090_cable_termination_models... OK
  Applying dcim.0091_interface_type_other... OK
  Applying dcim.0092_fix_rack_outer_unit... OK
  Applying dcim.0093_device_component_ordering... OK
  Applying dcim.0094_device_component_template_ordering... OK
  Applying dcim.0095_primary_model_ordering... OK
  Applying dcim.0096_interface_ordering... OK
  Applying dcim.0097_interfacetemplate_type_other... OK
  Applying dcim.0098_devicetype_images... OK
  Applying dcim.0099_powerfeed_negative_voltage... OK
  Applying dcim.0100_mptt_remove_indexes... OK
  Applying dcim.0101_nested_rackgroups... OK
  Applying dcim.0102_nested_rackgroups_rebuild... OK
  Applying dcim.0103_standardize_description... OK
  Applying dcim.0104_correct_infiniband_types... OK
  Applying dcim.0105_interface_name_collation... OK
  Applying dcim.0106_role_default_color... OK
  Applying dcim.0107_component_labels... OK
  Applying dcim.0108_add_tags... OK
  Applying dcim.0109_interface_remove_vm... OK
  Applying dcim.0110_virtualchassis_name... OK
  Applying dcim.0111_component_template_description... OK
  Applying dcim.0112_standardize_components... OK
  Applying dcim.0113_nullbooleanfield_to_booleanfield... OK
  Applying dcim.0114_update_jsonfield... OK
  Applying dcim.0115_rackreservation_order... OK
  Applying dcim.0116_rearport_max_positions... OK
  Applying extras.0043_report... OK
  Applying extras.0044_jobresult... OK
  Applying extras.0045_configcontext_changelog... OK
  Applying extras.0046_update_jsonfield... OK
  Applying extras.0047_tag_ordering... OK
  Applying users.0001_api_tokens... OK
  Applying users.0002_unicode_literals... OK
  Applying users.0003_token_permissions... OK
  Applying users.0004_standardize_description... OK
  Applying users.0005_userconfig... OK
  Applying users.0006_create_userconfigs... OK
  Applying users.0007_proxy_group_user... OK
  Applying users.0008_objectpermission... OK
  Applying users.0009_replicate_permissions... OK
  Applying secrets.0007_secretrole_description... OK
  Applying secrets.0008_standardize_description... OK
  Applying secrets.0009_secretrole_drop_users_groups... OK
  Applying sessions.0001_initial... OK
  Applying taggit.0003_taggeditem_add_unique_index... OK
  Applying tenancy.0007_nested_tenantgroups... OK
  Applying tenancy.0008_nested_tenantgroups_rebuild... OK
  Applying tenancy.0009_standardize_description... OK
  Applying users.0010_update_jsonfield... OK
  Applying virtualization.0017_update_jsonfield... OK</pre>
<p>Crie seu usuário para o acesso web:</p>
<pre class="remontti-code"># python3 manage.py createsuperuser </pre>
<pre class="remontti-code-plain">Username (leave blank to use &#039;root&#039;): remontti
Email address: noc@remontti.com.br
Password: sua_senha
Password (again): sua_senha
Superuser created successfully</pre>
<pre class="remontti-code"># python3 manage.py collectstatic</pre>
<pre class="remontti-code-plain">979 static files copied to &#039;/opt/netbox/netbox/static&#039;.</pre>
<p>Vamos preparar nosso serviço web</p>
<pre class="remontti-code"># pip3 install gunicorn

# cat &lt;&lt;EOF | tee /opt/netbox/gunicorn_config.py
command = &#039;/usr/local/bin/gunicorn&#039;
pythonpath = &#039;/opt/netbox/netbox&#039;
bind = &#039;127.0.0.1:8001&#039;
workers = 3
user = &#039;www-data&#039;
EOF

# cat &lt;&lt;EOF | tee /etc/supervisor/conf.d/netbox.conf
[program:netbox]
command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
directory = /opt/netbox/netbox/
user = www-data
EOF

# systemctl restart supervisor</pre>
<p>Caso você não queira ter certificado e nem vai usar um domínio pode pular esta parte...<br />
Vou instalar o letsencrypt para gerar nosso certificado (pode preencher como quiser as perguntas). Caso queira instalar com um certificado "privado/invalido" <a href="https://netbox.readthedocs.io/en/stable/installation/5-http-server/" rel="noopener" target="_blank">veja aqui</a>.</p>
<pre class="remontti-code"># apt install letsencrypt python-certbot-nginx
# systemctl stop nginx
# letsencrypt --authenticator standalone --installer nginx -d netbox.remontti.com.br</pre>
<p>Crie um script para renomar o certificado automaticamente</p>
<pre class="remontti-code"># vim  /etc/renovassl.sh</pre>
<p>Adicione:</p>
<pre class="remontti-code">#!/bin/bash
# Para o nginx 
/usr/bin/systemctl stop nginx
# Aguarda 10 seg (tempo do nginx parar) 
sleep 10
# Renova o certificado
/usr/bin/certbot -q renew
# Aguarda o certificado renovar
sleep 30
# Restarta o nginx 
/usr/bin/systemctl restart nginx</pre>
<p>Altere as permissões para executa-lo e adicione o scrip ao cron para ser rodado todo dia 1º do mês. </p>
<pre class="remontti-code"># chmod +x /etc/renovassl.sh
# echo &#039;00 00   1 * *   root    /etc/renovassl.sh&#039; &gt;&gt; /etc/crontab
# systemctl restart cron</pre>
<p>Removemos o arquivo defautl do nosso servidor web (nginx), e iremos criar um novo, estou usando um domínio, caso esteja utilizando com IP privado apenas coloque um underline ou sei próprio IP. </p>
<pre class="remontti-code"># rm /etc/nginx/sites-enabled/default
# vim /etc/nginx/sites-available/netbox.conf</pre>
<p>Ajuste o diretório do seu certificado.  </p>
<pre class="remontti-code">server {
    listen 443 ssl;
    # Quiser limitar o acesso apenas a seus IPs
    #allow  192.168.1.0/24;
    #allow  2001:0db8::/32;
    #deny   all;
    #error_page  403   http://www.remontti.com.br;

    server_name netbox.remontti.com.br;

    ssl_certificate /etc/letsencrypt/live/netbox.remontti.com.br/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/netbox.remontti.com.br/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    client_max_body_size 25m;

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }

    location / {
        proxy_pass http://localhost:8001;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
    listen 80;
    server_name netbox.remontti.com.br;
    return 301 https://$host$request_uri;
}</pre>
<p>Ou a versão simplificada sem certificado, usando o seu endereço IP, se ainda assim deseja só usar o domínios basta colocar no lugar no IP.</p>
<pre class="remontti-code">server {
    listen 80;
    server_name 192.168.0.2;
    client_max_body_size 25m;

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }

    location / {
        proxy_pass http://localhost:8001;
    }
}</pre>
<p>Remova assinatura do nginx (ninguém precisa saber a versão!)</p>
<pre class="remontti-code"># sed -i &#039;s/# server_tokens/server_tokens/&#039; /etc/nginx/nginx.conf</pre>
<p>Verifique se seu arquivo de configuração do nginx está correto:</p>
<pre class="remontti-code"># nginx -t</pre>
<pre class="remontti-code-plain">nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful</pre>
<p>Crie o atalho do arquivo de configuração dentro do diretório enabled para que o mesmo seja carregado ao restart o nginx.</p>
<pre class="remontti-code"># ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/
# systemctl restart nginx</pre>
<p>Agora acesse seu domínios <em>"https://netbox.remontti.com.br/"</em> ou <em>"https://ip/"</em> e entre com sua senha criada anteriormente.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-2.png" alt="" width="1680" height="914" class="alignnone size-full wp-image-5418" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-2.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-2-300x163.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-2-1024x557.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-2-768x418.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-2-1536x836.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /><br />
<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-3.png" alt="" width="1680" height="982" class="alignnone size-full wp-image-5419" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-3.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-3-300x175.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-3-1024x599.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-3-768x449.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-3-1536x898.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></p>
<h3>PLUGINs</h3>
<p><strong>Netbox Topology Views</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-Topology-Views.png" data-rel="lightbox-gallery-mkhbdzmI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-Topology-Views-300x149.png" alt="" width="300" height="149" class="alignnone size-medium wp-image-5446" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-Topology-Views-300x149.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-Topology-Views-1024x510.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-Topology-Views-768x382.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-Topology-Views-1536x764.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-Topology-Views.png 1903w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
<a href="https://github.com/mattieserver/netbox-topology-views" rel="noopener" target="_blank">https://github.com/mattieserver/netbox-topology-views</a></p>
<p><strong>Netbox QR Code</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-QR-Code.png" data-rel="lightbox-gallery-mkhbdzmI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-QR-Code-300x146.png" alt="" width="300" height="146" class="alignnone size-medium wp-image-5451" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-QR-Code-300x146.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-QR-Code-1024x497.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-QR-Code-768x373.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-QR-Code-1536x745.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-QR-Code-2048x994.png 2048w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
<a href="https://github.com/k01ek/netbox-qrcode" rel="noopener" target="_blank">https://github.com/k01ek/netbox-qrcode</a></p>
<pre class="remontti-code"># pip install netbox-topology-views
# pip install netbox-qrcode
# echo netbox-topology-views &gt;&gt; /opt/netbox/local_requirements.txt
# echo netbox-qrcode &gt;&gt; /opt/netbox/local_requirements.txt
# vim /opt/netbox/netbox/netbox/configuration.py</pre>
<p>Adicione:</p>
<pre class="remontti-code">PLUGINS = [&#039;netbox_topology_views&#039;,&#039;netbox_qrcode&#039;]

PLUGINS_CONFIG = {
  &#039;netbox_topology_views&#039;: {
    &#039;device_img&#039;: &#039;router,switch,firewall&#039;,
    &#039;preselected_device_roles&#039;: &#039;Router, Firewall&#039;,
    &#039;allow_coordinates_saving&#039;: False,
    &#039;ignore_cable_type&#039;: &#039;&#039;,
  },
  &#039;netbox_qrcode&#039;: {
    &#039;with_text&#039;: True,
    &#039;text_fields&#039;: [&#039;name&#039;, &#039;serial&#039;],
    &#039;font&#039;: &#039;ArialMT&#039;,
    &#039;custom_text&#039;: &#039;Remontti\ntel.00-000-000-000&#039;,
    &#039;qr_version&#039;: 1,
    &#039;qr_error_correction&#039;: 0,
    &#039;qr_box_size&#039;: 4,
    &#039;qr_border&#039;: 4,
    &#039;cable&#039;: None,
    &#039;rack&#039;: {
      &#039;text_fields&#039;: [
        &#039;site&#039;,
        &#039;name&#039;,
        &#039;tenant&#039;
      ]
    },
    &#039;device&#039;: {
      &#039;text_fields&#039;: [
        &#039;name&#039;,
        &#039;serial&#039;,
        &#039;tenant&#039;,
        &#039;primary_ip&#039;
      ]
    }
  }
}
</pre>
<p>Copiamos os arquivos empacotados estáticos e reiniciamos o supervisor (netbox).</p>
<pre class="remontti-code"># python3 /opt/netbox/netbox/manage.py collectstatic --no-input
# systemctl restart supervisor</pre>
<h3>COMO ATUALIZAR PARA FUTURAS VERSÕES</h3>
<p>Procure pela ultima atualização: <a href="https://github.com/netbox-community/netbox/releases" rel="noopener" target="_blank">https://github.com/netbox-community/netbox/releases</a>, e copie a url da versão tar.gz, no exemplo estou atualizando para versão 2.10.8, então preste atenção no nome dos diretórios.<br />
Vou baixar e extrair:</p>
<pre class="remontti-code"># cd /tmp/
# wget https://github.com/netbox-community/netbox/archive/refs/tags/v2.10.8.tar.gz
# tar -xzf v2.10.8.tar.gz</pre>
<p>Copie os arquivos de configuração para a versão mais nova, preste atenção nos nomes de diretórios que contém a versãi no ex. "2.10.8" para a versão que esteja atualizando.</p>
<pre class="remontti-code"># cp /opt/netbox/netbox/netbox/configuration.py /tmp/netbox-2.10.8/netbox/netbox/
# cp /opt/netbox/local_requirements.txt /tmp/netbox-2.10.8/
# cp /opt/netbox/gunicorn_config.py /tmp/netbox-2.10.8/</pre>
<p>Copie os arquivos que você enviou, exemplo fotos etc.</p>
<pre class="remontti-code"># cp -pr /opt/netbox/netbox/media/ /tmp/netbox-2.10.8/netbox/</pre>
<p>Além disso, certifique-se de copiar ou vincular quaisquer scripts e relatórios personalizados que você fez.</p>
<pre class="remontti-code"># cp -r /opt/netbox/netbox/scripts /opt/netbox/netbox/
# cp -r /opt/netbox/netbox/reports /opt/netbox/netbox/</pre>
<p>Renomeia o antigo diretório (Não vamos remover, pois se der ruim basta volta-lo)</p>
<pre class="remontti-code"># mv /opt/netbox /opt/netbox_`date +%Y%m%d`</pre>
<p>Movemos nosso diretório atualizado para /opt/netbox.</p>
<pre class="remontti-code"># mv /tmp/netbox-2.10.8/ /opt/netbox</pre>
<p>Finalizamos copiando os arquivos empacotados estáticos e reiniciamos o supervisor (netbox).</p>
<pre class="remontti-code"># python3 /opt/netbox/netbox/manage.py collectstatic --no-input
# systemctl restart supervisor</pre>
<p>Espero que tenha gostado!</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Fonte:<br />
<a href="https://netbox.readthedocs.io/en/stable/installation" rel="noopener" target="_blank">https://netbox.readthedocs.io/en/stable/installation</a></p>
<p>O post <a href="https://blog.remontti.com.br/5412">Como instalar Netbox, ferramenta grátis para documentar sua rede</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5412/feed</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
			</item>
		<item>
		<title>Como instalar o Jellyfin um sistema de mídia pessoal</title>
		<link>https://blog.remontti.com.br/5322</link>
					<comments>https://blog.remontti.com.br/5322#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 25 Feb 2021 01:07:34 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[emby]]></category>
		<category><![CDATA[emby-server]]></category>
		<category><![CDATA[filmes]]></category>
		<category><![CDATA[midia]]></category>
		<category><![CDATA[Server]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5322</guid>

					<description><![CDATA[<p>Jellyfin é um sistema de mídia de software livre que permite que você controle o gerenciamento e o streaming de sua mídia. É uma alternativa ao Emby e Plex proprietários, para fornecer mídia de&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5322">Como instalar o Jellyfin um sistema de mídia pessoal</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://jellyfin.org/" rel="noopener" target="_blank">Jellyfin</a> é um sistema de mídia de software livre que permite que você controle o gerenciamento e o streaming de sua mídia. É uma alternativa ao Emby e Plex proprietários, para fornecer mídia de um servidor dedicado para dispositivos de usuário final por meio de vários aplicativos. Jellyfin é descendente da versão 3.5.2 do Emby e portado para a estrutura do .NET Core para permitir o suporte cruzado completo. Não há amarras, licenças ou recursos premium e agendas ocultas: apenas uma equipe que deseja construir algo melhor e trabalhar em conjunto para alcançá-lo. Congratulamo-nos com qualquer pessoa interessada em se juntar a nós em nossa busca!</p>
<p><center><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-2.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-2-300x170.png" alt="" width="300" height="170" class="alignnone size-medium wp-image-5326" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-2-300x170.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-2-1024x580.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-2-768x435.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-2-1536x869.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-2.png 1908w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-3.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-3-300x170.png" alt="" width="300" height="170" class="alignnone size-medium wp-image-5327" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-3-300x170.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-3-1024x580.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-3-768x435.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-3-1536x869.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-3.png 1908w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-4.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-4-300x169.png" alt="" width="300" height="169" class="alignnone size-medium wp-image-5328" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-4-300x169.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-4-1024x576.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-4-768x432.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-4-1536x864.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-4.png 1920w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-5.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-5-300x163.png" alt="" width="300" height="163" class="alignnone size-medium wp-image-5329" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-5-300x163.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-5-1024x556.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-5-768x417.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-5.png 1417w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-1.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-1-300x170.png" alt="" width="300" height="170" class="alignnone size-medium wp-image-5325" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-1-300x170.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-1-1024x580.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-1-768x435.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-1-1536x869.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-1.png 1908w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></center></p>
<p>Possui uma vasta <a href="https://jellyfin.org/clients/" rel="noopener" target="_blank">compatibilidade de aplicativos clientes</a> como <a href="https://www.amazon.com/gp/aw/d/B07TX7Z725" rel="noopener" target="_blank">Firetv</a>, Kody, Xbox One, PS4, LG WebOS, Samsung, GOogle Cast, AirPlay, Roku, <a href="https://play.google.com/store/apps/details?id=org.jellyfin.mobile" rel="noopener" target="_blank">Android</a>, <a href="https://apps.apple.com/us/app/jellyfin-mobile/id1480192618" rel="noopener" target="_blank">iOS</a> entre outros.</p>
<p>Sua instalação é muito simples <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Como de costume vou realizar a <a href="https://blog.remontti.com.br/2966" rel="noopener" target="_blank">instalação no Debian 10 limpo </a>(sem nenhuma instalação de pacotes)</p>
<p>Instale os pacotes necessários:</p>
<pre class="remontti-code"># apt install apt-transport-https lsb-release gnupg wget</pre>
<p>Adicione o repositório do Jellyfin para sempre ter atualização.</p>
<pre class="remontti-code"># wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | apt-key add -
# echo &quot;deb [arch=$( dpkg --print-architecture )] \
https://repo.jellyfin.org/$( awk -F&#039;=&#039; &#039;/^ID=/{ print $NF }&#039; \
/etc/os-release ) $( awk -F&#039;=&#039; &#039;/^VERSION_CODENAME=/{ print $NF }&#039; \
/etc/os-release ) main&quot; |tee /etc/apt/sources.list.d/jellyfin.list</pre>
<p>Atualize o repositório e em seguida instale o Jellyfin</p>
<pre class="remontti-code"># apt update
# apt install jellyfin</pre>
<p>Crie um diretório onde irá salvar seus Vídeos:</p>
<pre class="remontti-code"># mkdir /home/remontti/videos
# cd /home/remontti/videos
# wget https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4</pre>
<p>Para que seja possível editar ou deletar os videos pela interface web é sempre necessário dar permissões ao Jellyfin</p>
<pre class="remontti-code"># chown jellyfin. /home/remontti/videos -R </pre>
<p>Reinicie o serviço</p>
<pre class="remontti-code"># systemctl restart jellyfin</pre>
<p>Acesse seu endereço IP ou domino na porta <strong>8096</strong>, ex http://media.remontti.com.br:8096 para finalizar a instalação.</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-1.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-1.png" alt="" width="1680" height="914" class="alignnone size-full wp-image-5340" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-1.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-1-300x163.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-1-1024x557.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-1-768x418.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-1-1536x836.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-2.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-2.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5341" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-2.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-2-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-2-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-2-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-2-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-3.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-3.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5342" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-3.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-3-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-3-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-3-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-3-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-4.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-4.png" alt="" width="1681" height="860" class="alignnone size-full wp-image-5343" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-4.png 1681w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-4-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-4-1024x524.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-4-768x393.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-4-1536x786.png 1536w" sizes="auto, (max-width: 1681px) 100vw, 1681px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-5.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-5.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5344" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-5.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-5-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-5-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-5-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-5-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-6.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-6.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5345" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-6.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-6-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-6-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-6-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-6-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-7.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-7.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5346" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-7.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-7-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-7-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-7-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-7-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-8.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-8.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5347" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-8.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-8-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-8-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-8-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-8-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-9.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-9.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5348" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-9.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-9-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-9-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-9-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-9-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-10.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-10.png" alt="" width="1680" height="914" class="alignnone size-full wp-image-5349" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-10.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-10-300x163.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-10-1024x557.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-10-768x418.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-10-1536x836.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-11.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-11.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5350" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-11.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-11-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-11-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-11-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-11-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-12.png" data-rel="lightbox-gallery-kUsbkDD5" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-12.png" alt="" width="1680" height="926" class="alignnone size-full wp-image-5351" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-12.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-12-300x165.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-12-1024x564.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-12-768x423.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-12-1536x847.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p>Parabéns seu servidor já esta pronto! Como dito anterior você encontra vários apps clientes: <a href="https://jellyfin.org/clients/" rel="noopener" target="_blank">https://jellyfin.org/clients/ </a></p>
<p>Jellyfin permite aceleração por placas gráficas, para saber mais acesse:<br />
<a href="https://jellyfin.org/docs/general/administration/hardware-acceleration.html" rel="noopener" target="_blank">https://jellyfin.org/docs/general/administration/hardware-acceleration.html</a></p>
<p>Espero que tenha gostado!</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p><em>Fontes:</em><br />
<a href="https://jellyfin.org/downloads/" rel="noopener" target="_blank">https://jellyfin.org/downloads/</a><br />
<a href="https://jellyfin.org/docs/general/administration/installing.html#debian" rel="noopener" target="_blank">https://jellyfin.org/docs/general/administration/installing.html#debian</a><br />
<a href="https://github.com/jellyfin/jellyfin" rel="noopener" target="_blank">https://github.com/jellyfin/jellyfin</a></p>
<p>O post <a href="https://blog.remontti.com.br/5322">Como instalar o Jellyfin um sistema de mídia pessoal</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5322/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		<enclosure url="https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4" length="10546620" type="video/mp4" />

			</item>
		<item>
		<title>Monitoramento com o Observium no Debian 10</title>
		<link>https://blog.remontti.com.br/5103</link>
					<comments>https://blog.remontti.com.br/5103#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 20 Oct 2020 20:03:05 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Huawei]]></category>
		<category><![CDATA[monitoramento]]></category>
		<category><![CDATA[observium]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rrd]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5103</guid>

					<description><![CDATA[<p>Observium é uma ferramenta de gerenciamento e monitoramento de rede gratuita e de código aberto que pode ser usada para monitorar todos os dispositivos de rede. Ele é escrito em PHP e usa SNMP&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5103">Monitoramento com o Observium no Debian 10</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium-remontti-capa.png" alt="" width="720" height="340" class="alignnone size-full wp-image-5117" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium-remontti-capa.png 720w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium-remontti-capa-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium-remontti-capa-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /><br />
<a href="https://www.observium.org/" rel="noopener noreferrer" target="_blank">Observium</a> é uma ferramenta de gerenciamento e monitoramento de rede gratuita e de código aberto que pode ser usada para monitorar todos os dispositivos de rede. Ele é escrito em PHP e usa SNMP para coletar os dados do dispositivo conectado e monitorá-los usando uma interface da web. </p>
<p>Observium oferece suporte a vários hardwares de rede e sistemas operacionais, incluindo Linux, Windows, FreeBSD, Cisco, Dell, Netscaler, Huawei, Mikrotik e muito mais. O Observium oferece uma interface poderosa, simples e fácil de usar para monitorar a saúde e o status de sua rede.</p>
<p>Profissionalmente desenvolvido e mantido por uma equipe de experientes engenheiros de rede e administradores de sistemas, o Observium é uma plataforma projetada e construída por seus usuários.</p>
<p>A <strong>Comunidade Observium </strong>está disponível <strong>gratuitamente</strong> para todos e recebe atualizações e recursos duas vezes por ano. O <strong>Observium Professional </strong>adiciona acesso prioritário a atualizações diárias e novos recursos por uma pequena <strong>taxa anual</strong>.</p>
<h3>Requisitos:</h3>
<p><a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">* Debian 10 (Buster) -> Instalação Limpa</a><br />
<a href="https://blog.remontti.com.br/3006" rel="noopener noreferrer" target="_blank">* Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP”</a><br />
A instalação do <strong>phpMyAdmin não é necessária</strong>.</p>
<p>Instale os pacotes necessários:</p>
<pre class="remontti-code"># apt install snmp fping python-mysqldb rrdtool subversion whois mtr-tiny ipmitool graphviz imagemagick wget</pre>
<p>Crie o banco de dados do observium </p>
<pre class="remontti-code"># mariadb -u root -p</pre>
<p>Não esqueça de alterar <strong>SUA_SENHA</strong></p>
<pre class="remontti-code">CREATE DATABASE observium DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON observium.* TO &#039;observium&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039;;
FLUSH PRIVILEGES;
QUIT;</pre>
<p>Edições Observium</p>
<p>Como dito o Observium vem em duas edições, uma Open Source Community Edition lançada em um ciclo semestral e uma edição com recursos adicionais, correções rápidas de bugs e melhorias de recursos diariamente. Caso queira a versão &#8220;Pro&#8221; acesse <a href="https://www.observium.org/" rel="noopener noreferrer" target="_blank">https://www.observium.org/</a></p>
<p>Como a a gente é pobre <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> (zueira) vamos instalar a versão <strong>Community Edition</strong><br />
Se desejar instalar o Community Edition, instale usando a versão .tar.gz mais recente.</p>
<p>Baixe o .tar.gz mais recente do Observium e descompacte:</p>
<pre class="remontti-code"># cd /var/www/
# wget http://www.observium.org/observium-community-latest.tar.gz
# tar zxvf observium-community-latest.tar.gz</pre>
<p>Crie o diretório para armazenar RRDs e ous logs:</p>
<pre class="remontti-code"># mkdir /var/www/observium/rrd 
# mkdir /var/www/observium/logs</pre>
<p>Ajustes as permissões:</p>
<pre class="remontti-code"># chown www-data. /var/www/observium/ -R </pre>
<p>Crie uma cópia do config.php.default para config.php e ajustes os valores do banco de dados colocando os valores criado no passo anterior:</p>
<pre class="remontti-code"># cp /var/www/observium/config.php.default /var/www/observium/config.php
# vim /var/www/observium/config.php</pre>
<pre class="remontti-code">$config[&#039;db_extension&#039;] = &#039;mysqli&#039;;
$config[&#039;db_host&#039;]      = &#039;localhost&#039;;
$config[&#039;db_user&#039;]      = &#039;observium&#039;;
$config[&#039;db_pass&#039;]      = &#039;SUA_SENHA&#039;;
$config[&#039;db_name&#039;]      = &#039;observium&#039;;</pre>
<p>Configure o banco de dados:</p>
<pre class="remontti-code"># php /var/www/observium/discovery.php -u </pre>
<p>Retornará:</p>
<pre class="remontti-code">  ___   _                              _
 / _ \ | |__   ___   ___  _ __ __   __(_) _   _  _ __ ___
| | | || &#039;_ \ / __| / _ \| &#039;__|\ \ / /| || | | || &#039;_ ` _ \
| |_| || |_) |\__ \|  __/| |    \ V / | || |_| || | | | | |
 \___/ |_.__/ |___/ \___||_|     \_/  |_| \__,_||_| |_| |_|
                     Observium Community Edition 20.9.10731
                                  https://www.observium.org

Install initial database schema ... done.
-- Updating database/file schema
416 -&gt; 417 # (db) .. Done (0s).
417 -&gt; 418 # (db) . Done (0s).
418 -&gt; 419 # (db) .... Done (1s).
419 -&gt; 420 # (db) .. Done (0s).
420 -&gt; 421 # (db) ... Done (0s).
421 -&gt; 422 # (db) .. Done (0s).
422 -&gt; 423 # (db) ...... Done (0s).
423 -&gt; 424 # (php)  Done (0s).
424 -&gt; 425 # (db) . Done (0s).
425 -&gt; 426 # (db) ............... Done (0s).
426 -&gt; 427 # (db) ... Done (0s).
427 -&gt; 428 # (db) ... Done (0s).
428 -&gt; 429 # (db) ... Done (0s).
429 -&gt; 430 # (db) (WARNING! Required MySQL version 5.6+ or MariaDB 10.0+).... Done (0s).
430 -&gt; 431 # (db) ..... Done (0s).
431 -&gt; 432 # (php)  Done (0s).
432 -&gt; 433 # (db) ......... Done (0s).
433 -&gt; 434 # (db) ... Done (0s).
434 -&gt; 435 # (db) . Done (0s).
-- Done.</pre>
<p>Como o php-mcrypt não está mais no repositório do Debian 10 (php.7.3) vamos instala-lo na mão:</p>
<pre class="remontti-code"># apt install php-dev libmcrypt-dev mcrypt
# pecl channel-update pecl.php.net
# pecl install channel://pecl.php.net/mcrypt-1.0.2</pre>
<p>Edite o php.ini</p>
<pre class="remontti-code"># vim /etc/php/7.3/cli/php.ini</pre>
<p>Inclua:</p>
<pre class="remontti-code">extension=mcrypt.so</pre>
<p>Verifique se a extensão esta sendo carregada, deve retornar o valor mcrypt.</p>
<pre class="remontti-code"># php -m | grep mcrypt</pre>
<p>Faremos a configuração do apache para que quando o servidor for acessado no navegado o mesmo já abra o Observium, caso você esteja instalando com outros serviços web, ou gosta das coisas organizadas pode pular para o próximo exemplo.</p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/000-default.conf</pre>
<p>Ajuste para:</p>
<pre class="remontti-code">&lt;VirtualHost *:80&gt;
    ServerAdmin noc@remontti.com.br

    DocumentRoot /var/www/observium/html

    &lt;FilesMatch \.php$&gt;
      SetHandler application/x-httpd-php
    &lt;/FilesMatch&gt;

    &lt;Directory /&gt;
            Options FollowSymLinks
            AllowOverride None
    &lt;/Directory&gt;

    &lt;Directory /var/www/observium/html/&gt;
            DirectoryIndex index.php
            Options FollowSymLinks MultiViews
            AllowOverride All
            Require all granted
    &lt;/Directory&gt;

    ErrorLog  ${APACHE_LOG_DIR}/error_observium.log    
    CustomLog  ${APACHE_LOG_DIR}/access_observium.log combined
    ServerSignature On

&lt;/VirtualHost&gt;</pre>
<p>Caso você queira proteger para algumas classes de IPs e usar um subdomíno pode usar este modelo. (Mas você pode filtrar por IP também no modelo anterior ajustando os &#8220;Require&#8221;)</p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/observium.conf</pre>
<pre class="remontti-code">&lt;virtualhost *:80&gt;
   ServerName observium.remontti.com.br
   ServerAdmin noc@remontti.com.br

   # Sem permissões será redirecionada para
   ErrorDocument 403 http://www.remontti.com.br
 
   DocumentRoot /var/www/observium/html

    &lt;FilesMatch \.php$&gt;
      SetHandler application/x-httpd-php
    &lt;/FilesMatch&gt;

    &lt;Directory /&gt;
      Options FollowSymLinks
      AllowOverride None
    &lt;/Directory&gt;
 
   &lt;Directory /var/www/observium/html/&gt;
      DirectoryIndex index.php
      Options FollowSymLinks MultiViews
      AllowOverride All
      Require all denied
      &lt;RequireAll&gt;
         &lt;RequireAny&gt;
            Require ip 127.0.0.1 ::1 45.80.51.0/29 2804:f123:bebe:c0ca::/64
         &lt;/RequireAny&gt;
      &lt;/RequireAll&gt;
   &lt;/Directory&gt;
 
   ErrorLog ${APACHE_LOG_DIR}/error_observium.log
   CustomLog ${APACHE_LOG_DIR}/access_observium.log combined
 
&lt;/VirtualHost&gt;</pre>
<p>Habilite a configuração criada acima:</p>
<pre class="remontti-code"># a2ensite observium</pre>
<p>Habilite o o modulo rewrite</p>
<pre class="remontti-code"># a2enmod rewrite</pre>
<p>Reinicie o serviço do apache</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Vamos utilizar as MIBs do Observium, para isso vamos chama-las (Você pode adicionar outras, verifique quais disponiveis em /var/www/observium/mibs). </p>
<pre class="remontti-code"># vim /etc/snmp/snmp.conf</pre>
<p>Ajuste:</p>
<pre class="remontti-code">mibs : /var/www/observium/mibs/rfc:/var/www/observium/mibs/net-snmp:/var/www/observium/mibs/mikrotik:/var/www/observium/mibs/huawei</pre>
<p>Precisamos ajustar </p>
<p>Observium opera em uma frequência de poller fixa de 5 minutos ou 300 segundos. O processo poller-wrapper deve ser executado nesta frequência NÃO funcionará de outra forma. então vamos criar o /etc/cron.d/observium </p>
<pre class="remontti-code"># vim /etc/cron.d/observium</pre>
<p>Adicione:</p>
<pre class="remontti-code"># Execute uma descoberta completa de todos os dispositivos uma vez a cada 6 horas
# Run a complete discovery of all devices once every 6 hours
33  */6   * * *   root    /var/www/observium/discovery.php -h all &gt;&gt; /dev/null 2&gt;&amp;1

# Execute a descoberta automática de dispositivos recém-adicionados a cada 5 minutos
# Run automated discovery of newly added devices every 5 minutes
*/5 *     * * *   root    /var/www/observium/discovery.php -h new &gt;&gt; /dev/null 2&gt;&amp;1

# Execute o multithreaded poller wrapper a cada 5 minutos
# Run multithreaded poller wrapper every 5 minutes
*/5 *     * * *   root    /var/www/observium/poller-wrapper.py &gt;&gt; /dev/null 2&gt;&amp;1

# Execute o script de manutenção diariamente para syslog, log de eventos e log de alerta
# Run housekeeping script daily for syslog, eventlog and alert log
13 5      * * *   root    /var/www/observium/housekeeping.php -ysel &gt;&gt; /dev/null 2&gt;&amp;1

# Execute o script de manutenção diariamente para rrds, portas, entradas órfãs no banco de dados e dados de desempenho
# Run housekeeping script daily for rrds, ports, orphaned entries in the database and performance data
47 4      * * *   root    /var/www/observium/housekeeping.php -yrptb &gt;&gt; /dev/null 2&gt;&amp;1</pre>
<p>Reinicie o Cron:</p>
<pre class="remontti-code"># systemctl restart cron</pre>
<p>Adicione o primeiro usuário, use o level 10 para o administrador:</p>
<pre class="remontti-code"># php /var/www/observium/adduser.php &lt;usuario&gt; &lt;senha&gt; &lt;level&gt;</pre>
<p>Ex.:</p>
<pre class="remontti-code"># php /var/www/observium/adduser.php admin suasenha 10</pre>
<p>Adicione um primeiro dispositivo para monitorar: (Não esqueça de configurar o SNMP)</p>
<pre class="remontti-code"># php /var/www/observium/add_device.php &lt;hostname&gt; &lt;community&gt; v2c
# php /var/www/observium/add_device.php 10.0.0.100 publicsnmp v2c</pre>
<p>Agora acesse seu servidor em seu navegador e entre com usuário e senha criado.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_debian_buster.png" alt="" width="1019" height="489" class="alignnone size-full wp-image-5112" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_debian_buster.png 1019w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_debian_buster-300x144.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_debian_buster-768x369.png 768w" sizes="auto, (max-width: 1019px) 100vw, 1019px" /></p>
<p>Parabéns!<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster.png" alt="" width="1345" height="919" class="alignnone size-full wp-image-5113" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster.png 1345w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster-300x205.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster-1024x700.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster-768x525.png 768w" sizes="auto, (max-width: 1345px) 100vw, 1345px" /></p>
<p>Espero que tenha lhe instigado/inspirado a buscar mais aprender um pouquinho +</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p><strong>Fonte:</strong><br />
<a href="https://docs.observium.org/install_debian/" rel="noopener noreferrer" target="_blank">https://docs.observium.org/install_debian/</a><br />
<a href="https://docs.observium.org/web_config/" rel="noopener noreferrer" target="_blank">https://docs.observium.org/web_config/</a><br />
<a href="https://docs.observium.org/dashboard/" rel="noopener noreferrer" target="_blank">https://docs.observium.org/dashboard/</a></p>
<p>O post <a href="https://blog.remontti.com.br/5103">Monitoramento com o Observium no Debian 10</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5103/feed</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Crie seu próprio &#8220;SpeedTest&#8221; utilizando o projeto librespeed</title>
		<link>https://blog.remontti.com.br/4286</link>
					<comments>https://blog.remontti.com.br/4286#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 08 Apr 2020 23:54:57 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[local test]]></category>
		<category><![CDATA[speedtest]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[testador]]></category>
		<category><![CDATA[teste local]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=4286</guid>

					<description><![CDATA[<p>Neste tutorial você irá aprender a criar seu próprio testador de velocidade independente. Precisaremos apenas um serviço web como Apache, PHP e MariaDB/MySQL. Para este teste usei o projeto librespeed qual fiz um fork&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/4286">Crie seu próprio &#8220;SpeedTest&#8221; utilizando o projeto librespeed</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Neste tutorial você irá aprender a criar seu próprio testador de velocidade independente. Precisaremos apenas um serviço web como Apache, PHP e MariaDB/MySQL. Para este teste usei o projeto <a href="https://github.com/librespeed/speedtest">librespeed</a> qual fiz um <a href="https://github.com/remontti/speedtest" rel="noopener noreferrer" target="_blank">fork</a> fazendo algumas modificações, principalmente no visual dele. </p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/04/capa_speedtest_local.png" data-rel="lightbox-gallery-2ADxIVcT" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/04/capa_speedtest_local.png" alt="" width="716" height="340" class="aligncenter size-full wp-image-4297" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/04/capa_speedtest_local.png 716w, https://blog.remontti.com.br/wp-content/uploads/2020/04/capa_speedtest_local-300x142.png 300w" sizes="auto, (max-width: 716px) 100vw, 716px" /></a></p>
<p>Basicamente a instalação é criar o banco e a tabela, jogar os arquivos para dentro do seu servidor web e editar o arquivo que fará a conexão com o banco.</p>
<p>Mas como sempre vamos começar do zero, e já começo com o que temos de mais recente como &#8220;requisitos&#8221;:</p>
<p><a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Debian 10 Stretch / Instalação Limpa</a><br />
<a href="https://blog.remontti.com.br/3006" rel="noopener noreferrer" target="_blank">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP”</a><br />
phpMyAdmin :: (<strong>Opcional</strong>)</p>
<p>Requisitos instalados prosseguimos!</p>
<p>No exemplo vou configurar o apache para librespeed.remontti.com.br, logo é necessário configurar seu subdomínio “librespeed” (ou nome da sua escolha) em seu <a href="https://blog.remontti.com.br/3086" rel="noopener noreferrer" target="_blank">DNS Server</a>.</p>
<pre class="remontti-code-plain">Exemplo:
...
librespeed       A       250.250.250.5
                 AAAA    2001:db8:bebe:cafe::5
...</pre>
<p>Por segurança recomendo remover a assinatura do servidor, evitando os &#8220;espertinhos&#8221;</p>
<pre class="remontti-code"># sed -i &#039;s/ServerTokens OS/ServerTokens Prod/&#039; /etc/apache2/conf-available/security.conf
# sed -i &#039;s/ServerSignature On/ServerSignature Off/&#039; /etc/apache2/conf-available/security.conf</pre>
<p>Crie o arquivo de configuração do apache para o &#8220;librespeed.remontti.com.br&#8221;</p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/librespeed.conf</pre>
<pre class="remontti-code">&lt;virtualhost *:80&gt;
        ServerName librespeed.remontti.com.br
        ServerAdmin noc@remontti.com.br
        DocumentRoot /var/www/librespeed 
        &lt;directory /var/www/librespeed/ &gt;
                Options FollowSymLinks
                AllowOverride All
        &lt;/directory&gt; 
        LogLevel warn 
        ErrorLog ${APACHE_LOG_DIR}/error_librespeed.log
        CustomLog ${APACHE_LOG_DIR}/access_librespeed.log combined
&lt;/virtualhost&gt;</pre>
<p>Vamos criar nosso diretório raiz (/var/www/librespeed):</p>
<pre class="remontti-code"># mkdir /var/www/librespeed/</pre>
<p>Ativamos o arquivo librespeed.conf e restartamos o apache2</p>
<pre class="remontti-code"># a2ensite librespeed
# systemctl restart apache2</pre>
<p>Recomendo que você crie um certificado válido para acessar seu endereço com HTTPS. Veja como acessando o tutorial: <a href="https://blog.remontti.com.br/3548" rel="noopener noreferrer" target="_blank">Criando certificado grátis com Let’s Encrypt para o Apache no Debian 10</a></p>
<p>Vamos acessar o banco de dados e criar nosso banco de dados e nosso usuário para acessa-lo. </p>
<pre class="remontti-code"># mariadb -p </pre>
<p>Altere o campo <strong>SUA_SENHA</strong></p>
<pre class="remontti-code">CREATE DATABASE librespeed;
GRANT ALL PRIVILEGES ON librespeed.* TO &#039;librespeed&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Acesse novamente o banco de dados com o usuário <strong>librespeed</strong></p>
<pre class="remontti-code"># mariadb -p -u librespeed</pre>
<p>Criamos a tabela <strong>speedtest_users</strong> que irá registrar todos os testes.</p>
<pre class="remontti-code">USE librespeed;

CREATE TABLE `speedtest_users` (
  `id` int(11) NOT NULL,
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `ip` text NOT NULL,
  `ispinfo` text,
  `extra` text,
  `ua` text NOT NULL,
  `lang` text NOT NULL,
  `dl` text,
  `ul` text,
  `ping` text,
  `jitter` text,
  `log` longtext
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `speedtest_users`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `speedtest_users`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;COMMIT;

show tables;</pre>
<p>Vamos baixar o <a href="https://github.com/remontti/speedtest/" rel="noopener noreferrer" target="_blank">projeto que modifiquei</a>. Vale lembrar que o projeto tem outras coisas interessantes como desenvolvimento para app para <a href="https://github.com/librespeed/speedtest-android" rel="noopener noreferrer" target="_blank">android</a>, testador para múltiplos hosts.</p>
<pre class="remontti-code"># apt install unzip wget
# cd /tmp
# wget https://github.com/remontti/speedtest/archive/master.zip
# unzip /tmp/master.zip
# mv /tmp/speedtest-master/versao_remontti/* /var/www/librespeed/</pre>
<p>Edite o arquivo <strong>telemetry_settings.php</strong> para definir a senha de acesso das estatísticas (stats.php) e a senha do usuário do banco de dados. </p>
<pre class="remontti-code"># vim /var/www/librespeed/results/telemetry_settings.php</pre>
<p>Altere:</p>
<pre class="remontti-code">[...]
$stats_password=&quot;PASSWORD&quot;; // Senha para acesso do stats.php
[...]
$MySql_password=&quot;SUA_SENHA&quot;; // Senha que você definiu para o banco de dados
[...]</pre>
<p>Agora basta você acessar seu: <strong>&#8220;librespeed.dominio.com.br&#8221;</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/04/librespeed-1.png" data-rel="lightbox-gallery-2ADxIVcT" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/04/librespeed-1.png" alt="" width="1182" height="588" class="alignnone size-full wp-image-4299" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/04/librespeed-1.png 1182w, https://blog.remontti.com.br/wp-content/uploads/2020/04/librespeed-1-300x149.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/04/librespeed-1-1024x509.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/04/librespeed-1-768x382.png 768w" sizes="auto, (max-width: 1182px) 100vw, 1182px" /></a></p>
<p>Para acessar as estatísticas dos testes realizados acesse: <strong>librespeed.dominio.com.br/results/stats.php</strong><br />
Entre com a senha que setou em stats_password:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/04/adm.png" data-rel="lightbox-gallery-2ADxIVcT" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/04/adm.png" alt="" width="1182" height="246" class="alignnone size-full wp-image-4293" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/04/adm.png 1182w, https://blog.remontti.com.br/wp-content/uploads/2020/04/adm-300x62.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/04/adm-1024x213.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/04/adm-768x160.png 768w" sizes="auto, (max-width: 1182px) 100vw, 1182px" /></a></p>
<p>Tenha acesso a todos os resultados feitos em seu servidor:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/04/adm_results.png" data-rel="lightbox-gallery-2ADxIVcT" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/04/adm_results.png" alt="" width="1161" height="598" class="alignnone size-full wp-image-4295" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/04/adm_results.png 1161w, https://blog.remontti.com.br/wp-content/uploads/2020/04/adm_results-300x155.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/04/adm_results-1024x527.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/04/adm_results-768x396.png 768w" sizes="auto, (max-width: 1161px) 100vw, 1161px" /></a></p>
<p>Para colocar seu logo basta editar o arquivo <strong>index.html</strong> e remova o comentário na linha 315 `&lt;!&#8211; &#8211;&gt;` ajuste como achar melhor.</p>
<p>Gostou? Ficou feliz com seu novo testador? </p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/4286">Crie seu próprio &#8220;SpeedTest&#8221; utilizando o projeto librespeed</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/4286/feed</wfw:commentRss>
			<slash:comments>38</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor Looking Glass simples e rápido!</title>
		<link>https://blog.remontti.com.br/4243</link>
					<comments>https://blog.remontti.com.br/4243#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 27 Mar 2020 20:54:36 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[bgp]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[Comware]]></category>
		<category><![CDATA[Huawei]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[lg]]></category>
		<category><![CDATA[looking glass]]></category>
		<category><![CDATA[OpenBGPD]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Quagga]]></category>
		<category><![CDATA[RADb]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[Zebra]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=4243</guid>

					<description><![CDATA[<p>Um servidor Looking Glass (ou servidor LG) é muito útil para acesso remoto com o objetivo de disponibilizar informações de roteamento publicamente. O servidor atua como um portal limitado e somente leitura para roteadores&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/4243">Servidor Looking Glass simples e rápido!</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Um servidor Looking Glass (ou servidor LG) é muito útil para acesso remoto com o objetivo de disponibilizar informações de roteamento publicamente. O servidor atua como um portal limitado e somente leitura para roteadores de qualquer organização que esteja executando o servidor LG.</p>
<p>Para montar o servidor vamos usar um projeto muito simples que basicamente tem 2 arquivos, o <a href="https://github.com/remontti/lg" rel="noopener noreferrer" target="_blank">PHP Looking Glass</a> qual é um fork do projeto russo <a href="https://github.com/hsdn/lg" rel="noopener noreferrer" target="_blank">hsdn</a>.<br />
<center><a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph.png" data-rel="lightbox-gallery-CaS4CoKo" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph-300x265.png" alt="" width="300" height="265" class="alignnone size-medium wp-image-4254" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph-300x265.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph-768x677.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph.png 848w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp.png" data-rel="lightbox-gallery-CaS4CoKo" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp-300x265.png" alt="" width="300" height="265" class="alignnone size-medium wp-image-4256" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp-300x265.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp-768x677.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp.png 862w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></center></p>
<p>Você encontra outros projetos legais também como o da <a href="https://github.com/respawner/looking-glass" rel="noopener noreferrer" target="_blank">respawner</a> qual o pessoal da <a href="https://wiki.brasilpeeringforum.org/w/Como_Ter_Seu_Proprio_Looking_Glass" rel="noopener noreferrer" target="_blank">BPF</a> já fez tutorial sobre o mesmo. </p>
<h3>Características do PHP Looking Glass</h3>
<p>Suporte a Telnet e SSH (plink ou sshpass).<br />
Suporte aos roteadores <strong>Cisco, MikroTik (RouterOS), Juniper, Huawei (Comware), Quagga (Zebra) e OpenBGPD</strong>.<br />
Suppores aos protocolos IPv4 e IPv6.<br />
Conversão automática de IPs em sub-redes usando Merit RADb para MikroTik (http://www.ra.net/).<br />
Desenho do gráfico BGP AS usando o kit de ferramentas GraphViz.<br />
Funciona no php 5.2.0 e superiores.</p>
<p>Para subir o projeto em seu servidor você precisa ter um serviço web como apache por exemplo e PHP basicamente. Você pode subir ele em um servido já em produção, não é necessário criar um servidor apenas para essa finalidade. (Porém fica a seu critério) </p>
<p>Vou trazer uma instalação limpa com base na <a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">instalação zerada do Debian 10</a>. </p>
<p>Com Debian instalado vamos instalar os pacotes necessários:</p>
<pre class="remontti-code"># apt install apache2 apache2-utils sshpass graphviz
# apt install libapache2-mod-php php php-cli php-pear php-gmp php-gd php-bcmath php-mbstring php-curl php-xml php-zip
# pear install Image_GraphViz-1.3.0</pre>
<p>Vou colocar o projeto no diretório padrão do apache /var/www/html/, mas você pode criar um <a href="https://blog.remontti.com.br/3464" rel="noopener noreferrer" target="_blank">domínio virtual </a>para isso ficar muito mais legal e ainda criar um <a href="https://blog.remontti.com.br/3548" rel="noopener noreferrer" target="_blank">certificado gratuitamente</a> com o  Let’s Encrypt</p>
<pre class="remontti-code"># mkdir /var/www/html/lg
# cd /var/www/html/lg
# apt install wget
# wget https://github.com/remontti/lg/raw/master/htdocs/favicon.ico
# wget https://github.com/remontti/lg/raw/master/htdocs/lg_logo.gif
# wget https://raw.githubusercontent.com/remontti/lg/master/htdocs/index.php
# wget https://raw.githubusercontent.com/remontti/lg/master/htdocs/lg_config.php</pre>
<p>Agora basta vocÊ editar o arquivo <strong>lg_config.php</strong> e alterar os valores das variáveis:</p>
<p><strong>$_CONFIG[&#8216;asn&#8217;]</strong> &#8211; Seu AS para exibição na página LG.<br />
<strong>$_CONFIG[&#8216;company&#8217;]</strong> &#8211; Nome da empresa para exibição na página LG.<br />
<strong>$_CONFIG[&#8216;logo&#8217;]</strong> &#8211; O logotipo da sua empresa para exibição na página LG.<br />
<strong>$_CONFIG[&#8216;color&#8217;]</strong> &#8211; Cor principal dos elementos de design na página LG.</p>
<p>A configuração dos roteadores é especificada em $_CONFIG[&#8216;routers&#8217;], no seguinte formato:</p>
<pre class="remontti-code-plain">$_CONFIG[&#039;routers&#039;] = array
(
    &#039;router1&#039; = array
    (
        // Router valores
    ),
    &#039;router2&#039; = array
    (
        // Router valores
    ),
    // etc.
);</pre>
<p>No nosso arquivo atual já consta com 3 exemplos sendo um o do IX.BR (SP). Basta você configurar seu roteado seguindo os padrões:</p>
<p><strong>url</strong> &#8211; Endereço no formato: [ssh|telnet]://[login]:[password]@[host]:[port].<br />
<strong>pingtraceurl</strong> &#8211; Endereço URL para ferramentas de ping e traceroute para roteadores Quagga (ou * FALSE *).<br />
<strong>description</strong> &#8211; Descrição do roteador.<br />
<strong>group</strong> &#8211; Nome do grupo de roteadores (AS) (ou FALSE).<br />
<strong>ipv6</strong> &#8211; Suporte IPv6? (TRUE ou FALSE).<br />
<strong>os</strong> &#8211; Tipo do Router (ios, mikrotik, quagga, junos, openbgpd, huawei).</p>
<p>Configurações ajustada basta acessar o endereço http://ip-servidor/lg ou se você fez bonitinho via domínio <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10.png" data-rel="lightbox-gallery-CaS4CoKo" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10.png" alt="" width="978" height="544" class="alignnone size-full wp-image-4250" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10.png 978w, https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10-300x167.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10-768x427.png 768w" sizes="auto, (max-width: 978px) 100vw, 978px" /></a></p>
<p>Curtiu o conteúdo? Quer me ajudar? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento! (Esse deu trabalho!)</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Abraço!</p>
<p><strong>Demos</strong><br />
<a href="http://dev.hsdn.org/lg/" rel="noopener noreferrer" target="_blank">http://dev.hsdn.org/lg/</a><br />
<a href="http://lg.campus-rv.net/" rel="noopener noreferrer" target="_blank">http://lg.campus-rv.net/</a><br />
<a href="http://lg.lankabell.com/" rel="noopener noreferrer" target="_blank">http://lg.lankabell.com/</a></p>
<p><strong>Gráfico da demonstração (BGP AS)</strong><br />
<a href="http://dev.hsdn.org/lg/?command=graph&#038;protocol=ipv4&#038;query=8.8.8.8&#038;router=example1" rel="noopener noreferrer" target="_blank">http://dev.hsdn.org/lg/?command=graph&#038;protocol=ipv4&#038;query=8.8.8.8&#038;router=example1</a></p>
<p>O post <a href="https://blog.remontti.com.br/4243">Servidor Looking Glass simples e rápido!</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/4243/feed</wfw:commentRss>
			<slash:comments>36</slash:comments>
		
		
			</item>
		<item>
		<title>Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, Hotspot e Wireless PSK/EAP (Lab Mikrotik/Ubiquiti)</title>
		<link>https://blog.remontti.com.br/4085</link>
					<comments>https://blog.remontti.com.br/4085#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 13 Mar 2020 20:33:59 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[autenticação]]></category>
		<category><![CDATA[auth]]></category>
		<category><![CDATA[eap]]></category>
		<category><![CDATA[freeradius]]></category>
		<category><![CDATA[hotspot]]></category>
		<category><![CDATA[laboratório]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[pppoe]]></category>
		<category><![CDATA[psk]]></category>
		<category><![CDATA[radius]]></category>
		<category><![CDATA[ubiquiti]]></category>
		<category><![CDATA[wireless]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=4085</guid>

					<description><![CDATA[<p>Neste tutorial você irá aprender como integrar o freeradius 3.0.>16 para fazer autenticações PPPoE, Hotspot, Wireless PSK/EAP entre outras. Aprendendo mais sobre os atributos do banco de dados radius. Para demonstrar irei criar um&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/4085">Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, Hotspot e Wireless PSK/EAP (Lab Mikrotik/Ubiquiti)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/freeradius-3-debian10-integracoes.png" alt="" width="900" height="428" class="alignnone size-full wp-image-4223" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/freeradius-3-debian10-integracoes.png 900w, https://blog.remontti.com.br/wp-content/uploads/2020/03/freeradius-3-debian10-integracoes-300x143.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/freeradius-3-debian10-integracoes-768x365.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /><br />
Neste tutorial você irá aprender como integrar o freeradius 3.0.>16 para fazer autenticações PPPoE, Hotspot, Wireless PSK/EAP entre outras. Aprendendo mais sobre os atributos do banco de dados radius. </p>
<p>Para demonstrar irei criar um <strong>cenário ilustrativo</strong> de &#8220;nossa rede&#8221; com Mikrotik e Ubiquiti mas basicamente as autenticações podem serem para outras marcas. <em>(Com algumas exceções para os atributos da Mikrotik)</em></p>
<h3>Cenário ilustrativo</h3>
<pre class="remontti-code"># Servidores
FreeRadius: 180.255.0.3

# Concentradores
MK HotSpot: 180.255.1.1
MK PPPoE: 180.255.1.3

# Torre 1 
UBNT AP1 WPA EAP: 10.0.0.2
UBNT AP2 WPA EAP: 10.0.0.3
UBNT AP3 WPA EAP: 10.0.0.4

# Torre 2 
MK AP1 WPA PSK: 10.1.0.2
MK AP2 WPA PSK: 10.1.0.3
MK AP3 WPA PSK: 10.1.0.4</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/freeradius_debian_10_buster_mikrotik.jpg" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/freeradius_debian_10_buster_mikrotik.jpg" alt="" width="1051" height="845" class="alignnone size-full wp-image-4213" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/freeradius_debian_10_buster_mikrotik.jpg 1051w, https://blog.remontti.com.br/wp-content/uploads/2020/03/freeradius_debian_10_buster_mikrotik-300x241.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/freeradius_debian_10_buster_mikrotik-1024x823.jpg 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/03/freeradius_debian_10_buster_mikrotik-768x617.jpg 768w" sizes="auto, (max-width: 1051px) 100vw, 1051px" /></a></p>
<p>Vou tomar como base a <strong>instalação do FreeRadius</strong> no tutorial: (<strong><em>requisito</em></strong>)<br />
<a href="https://blog.remontti.com.br/4063" rel="noopener noreferrer" target="_blank">Criando um servidor de autenticação com FreeRadius 3.0.x no Debian Buster</a></p>
<h3>Entendo as tabelas do banco de dados</h3>
<p><strong>• nas</strong><br />
A tabela NAS contém dados de hosts clientes, seria uma &#8220;substituição&#8221; do arquivo clients.conf. É muito mais fácil alimentar os hosts clientes no banco de dados do que dentro do arquivo de configuração. Então quem do nosso cenário será vamos incluir nesta tabela? Todos os equipamentos que precisarem comunicar com seu servidor para de alguma forma fazer a autenticação. Para inserir os dados na tabela <strong>nas</strong> você pode usar o terminal ou então acessando o phpMyAdmin:<br />
Os principais campos são:<br />
‣ nasname: IP Adress (Único)<br />
‣ shortname: Nome (Único)<br />
‣ type: Tipo [other]<br />
‣ secret: Sua &#8220;senha de autorização&#8221;<br />
‣ description: Obs</p>
<p>Em nosso exemplo serão os dois concentradores e os APs das torres que serão inseridos em nossa tabela nas. Ex.:</p>
<pre class="remontti-code">INSERT INTO `nas` (`nasname`, `shortname`, `type`, `ports`, `secret`, `server`, `community`, `description`) VALUES
-- Mikrotik PPPoE Server --
(&#039;180.255.1.1&#039;, &#039;RB-RouterOS-PPPoE&#039;, &#039;other&#039;, NULL, &#039;SEU_SECRET&#039;, NULL, NULL, &#039;RouterOS PPPoE&#039;),
-- Mikrotik Hotspot Server --
(&#039;180.255.1.3&#039;, &#039;RB-RouterOS-HotSpot&#039;, &#039;other&#039;, NULL, &#039;SEU_SECRET&#039;, NULL, NULL, &#039;RouterOS HotSpot&#039;),
-- Torre Ubiquiti --
(&#039;10.0.0.2&#039;, &#039;UBNT-AP-A&#039;, &#039;other&#039;, NULL, &#039;SEU_SECRET&#039;, NULL, NULL, &#039;U-POP1-A&#039;),
(&#039;10.0.0.3&#039;, &#039;UBNT-AP-B&#039;, &#039;other&#039;, NULL, &#039;SEU_SECRET&#039;, NULL, NULL, &#039;U-POP1-B&#039;),
(&#039;10.0.0.4&#039;, &#039;UBNT-AP-C&#039;, &#039;other&#039;, NULL, &#039;SEU_SECRET&#039;, NULL, NULL, &#039;U-POP1-C&#039;),
-- Torre Mikrotik  --
(&#039;10.1.0.2&#039;, &#039;MK-AP-A&#039;, &#039;other&#039;, NULL, &#039;SEU_SECRET&#039;, NULL, NULL, &#039;M-POP2-A&#039;),
(&#039;10.1.0.3&#039;, &#039;MK-AP-B&#039;, &#039;other&#039;, NULL, &#039;SEU_SECRET&#039;, NULL, NULL, &#039;M-POP2-B&#039;),
(&#039;10.1.0.4&#039;, &#039;MK-AP-C&#039;, &#039;other&#039;, NULL, &#039;SEU_SECRET&#039;, NULL, NULL, &#039;M-POP2-B&#039;);</pre>
<p>Algo <strong>extremamente importa</strong> é que sempre que adicionar, editar ou apagar dados da tabela <strong>NAS</strong> é necessário <strong>reiniciar o serviço</strong> FreeRadius para atualizar os hosts clientes, está é a unica tabela que é necessário um restart no serviço.</p>
<pre class="remontti-code"># systemctl restart freeradius</pre>
<p>Dando continuidade as demais tabelas:</p>
<p><strong>• radcheck </strong>&#8211; Armazena os registo de cada usuário com os respectivos atributos associados. Exemplo o usuário vs senha, usuário vs MAC.</p>
<p><strong>• radgroupcheck</strong> – Associa atributos a um determinado grupo de usuários.</p>
<p><strong>• radgroupreply</strong> – Armazena os atributos que são devolvidos a todos os usuários de um grupo.</p>
<p><strong>• radusergroup</strong> &#8211; Associa um usuário a um grupo (radgroupcheck/radgroupreply) simplificando os insert em suas tabelas.</p>
<p><strong>• radreply</strong> – Contém lista de atributos enviados a um único usuário.</p>
<p><strong>• radpostauth</strong> – Armazena informações acerca das respostas enviadas para os usuários (Desativada).</p>
<p><strong>• radacct</strong> &#8211; Se encontra toda a informação de contabilização, é dela que você consultará por exemplo um extrato de conexões, descobrir qual IP estava sendo utilizado por um usuário.</p>
<h4>Vamos começar configurando o RouterOS/Mikrotik para fazer autenticações PPPoE (Básico)</h4>
<p>&#8211; Criamos uma <strong>pool</strong> chamada failover (pode ser qualquer nome) nesse primeiro momento. <em>Mais a frente veremos como configurar usando a radippool.</em></p>
<pre class="remontti-code">/ip pool
add name=failover ranges=100.100.100.0/23</pre>
<p>&#8211; Criar um <strong>profile</strong> informando nossa pool, bem como DNS e velocidades. <em>(Tudo isso migraremos para as tabelas mais a frente)</em></p>
<pre class="remontti-code">/ppp profile
add dns-server=8.8.8.8,8.8.4.4 local-address=180.255.1.1 name=Profile50M rate-limit=50M/50M remote-address=failover</pre>
<p>&#8211; Criamos o <strong>PPPoE Server</strong> em uma de suas interfaces que está ouvindo os roteadores que irão &#8220;discar&#8221;, bem como informando o profile que foi<br />
criado.</p>
<pre class="remontti-code">/interface pppoe-server server
add authentication=pap,chap disabled=no keepalive-timeout=30 service-name=pppoe-service default-profile=Profile50M interface=ether2</pre>
<p>&#8211; Configuramos os <strong>usuários</strong> para serem buscado do freeradius, bem como que que o intervalo de atualização das tabelas seja de 5min.</p>
<pre class="remontti-code">/ppp aaa
set interim-update=5m use-radius=yes</pre>
<p>&#8211; Adicionamos nossa <strong>conexão o servidor radius</strong> informando os tipos de autenticações que serão utilizados.</p>
<pre class="remontti-code">/radius
add address=180.255.0.3 secret=&quot;SEU_SECRET&quot; service=ppp</pre>
<p>Vamos autenticar nosso primeiro usuário o jose@provedor.com o &#8220;plano/profile&#8221; 50Mb. Para isso insira em seu banco de dados:</p>
<pre class="remontti-code">INSERT INTO `radcheck` (`username`, `attribute`, `op`, `value`) VALUES
(&#039;jose@provedor.com&#039;, &#039;Cleartext-Password&#039;, &#039;:=&#039;, &#039;senha_do_usuario&#039;);</pre>
<p>Agora configuro em nosso roteador que irá autenticar o pppoe-cliente, exemplo em um outro Mikroik:</p>
<pre class="remontti-code">/interface pppoe-client
add add-default-route=yes disabled=no interface=ether1 name=pppoe-out1 password=senha_do_usuario use-peer-dns=yes user=jose@provedor.com</pre>
<p>Acessando seu concentrador já é possível ver nosso usuário jose@provedor.com autenticado:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/pppo_cliente.png" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/pppo_cliente.png" alt="" width="616" height="264" class="alignnone size-full wp-image-4128" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/pppo_cliente.png 616w, https://blog.remontti.com.br/wp-content/uploads/2020/03/pppo_cliente-300x129.png 300w" sizes="auto, (max-width: 616px) 100vw, 616px" /></a></p>
<p>Bom até aí nenhum mistério, mas é <strong>extremamente perigoso você ter um usuário em seu banco de dados radius sem nenhum outro atributo</strong>, pois o com apenas usuário e senha poderia ser feito qualquer autenticação sem exigir muito mais, conheço muitos sistemas que fazem isso!</p>
<p>Vamos supor que na conexão com o radius você tenha marcado login, e nos usuário tenha marcado para autenticar via radius <em>(Já vi sistemas bem famosos fazerem isso!)</em></p>
<pre class="remontti-code">/radius
add address=180.255.0.3 secret=&quot;SEU_SECRET&quot; service=ppp,login
/user aaa
set use-radius=yes</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/radiu_perigos.png" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/radiu_perigos.png" alt="" width="677" height="444" class="alignnone size-full wp-image-4129" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/radiu_perigos.png 677w, https://blog.remontti.com.br/wp-content/uploads/2020/03/radiu_perigos-300x197.png 300w" sizes="auto, (max-width: 677px) 100vw, 677px" /></a><br />
Vamos ao teste? Abra seu winbox e tente acessar seu router:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/radiu_perigos2.png" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/radiu_perigos2.png" alt="" width="778" height="484" class="alignnone size-full wp-image-4130" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/radiu_perigos2.png 778w, https://blog.remontti.com.br/wp-content/uploads/2020/03/radiu_perigos2-300x187.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/radiu_perigos2-768x478.png 768w" sizes="auto, (max-width: 778px) 100vw, 778px" /></a><br />
Bingo! Respiramos aliviado em ver que é apenas um usuário de leitura, mas não seria nada legal alguém acessar seu router, e além do mais esse usuário somente leitura em [AAA] &#8211;> <strong>Default Group</strong> poderia ter sido alterado para <strong>full</strong> e a M* estaria feita. Mas quem sabe você queira ter seus usuários do router no radius, então para isso precisamos pensar na segurança e adicionar outros atributos que prendam ele a este serviço. Veja como ficaria um exemplo seguro onde o atributo <strong>Service-Type</strong> prende o mesmo ao tipo <strong>Login-User</strong>, e na tabela <strong>radreply</strong> insira o atributo <strong>Mikrotik-Group</strong> informando qual o seu grupo de permissões (full/write/read/personalizada)</p>
<pre class="remontti-code">INSERT INTO `radcheck` (`id`, `username`, `attribute`, `op`, `value`) VALUES 
(NULL, &#039;usuario_router&#039;, &#039;Cleartext-Password&#039;, &#039;:=&#039;, &#039;senha_do_usuario&#039;),
(NULL, &#039;usuario_router&#039;, &#039;Service-Type&#039;, &#039;==&#039;, &#039;Login-User&#039;);

INSERT INTO `radreply` (`id`, `username`, `attribute`, `op`, `value`) VALUES
(NULL, &#039;usuario_router&#039;, &#039;Mikrotik-Group&#039;, &#039;:=&#039;, &#039;full&#039;);</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_login_mikrotik.png" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_login_mikrotik.png" alt="" width="590" height="178" class="alignnone size-full wp-image-4131" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_login_mikrotik.png 590w, https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_login_mikrotik-300x91.png 300w" sizes="auto, (max-width: 590px) 100vw, 590px" /></a></p>
<p>Da para melhorar isso? Claro! Podemos dizer que este usuário só pode ser acessado de um determinado IP, ex.: &#8220;180.255.3.33&#8221;</p>
<pre class="remontti-code">INSERT INTO `radcheck` (`id`, `username`, `attribute`, `op`, `value`) VALUES 
(NULL, &#039;usuario_router&#039;, &#039;Calling-Station-Id&#039;, &#039;==&#039;, &#039;180.255.3.33&#039;);</pre>
<p>Também pode informar que este usuário só poderá acessar somente o IP deste concentrador</p>
<pre class="remontti-code">INSERT INTO `radcheck` (`id`, `username`, `attribute`, `op`, `value`) VALUES 
(NULL, &#039;usuario_router&#039;, &#039;NAS-IP-Address&#039;, &#039;==&#039;, &#039;180.255.1.1&#039;);</pre>
<p>Agora que já aprendemos como deixar nosso login seguro, não podemos esquecer que os o jose@provedor.com ainda consegue logar no seu router, pois ele não tem nenhum outro atributo vinculado, entendeu o perigo? Isso que não chegamos na parte do WPA-EAP, ele poderia ser utilizado lá também.</p>
<p>Bom para nossa segurança vamos incluir os atributos <strong>Service-Type</strong> com valor <strong>Framed-User</strong> e <strong>Framed-Protocol</strong> com valor <strong>PPP</strong></p>
<pre class="remontti-code">INSERT INTO `radcheck` (`id`, `username`, `attribute`, `op`, `value`) VALUES 
(NULL, &#039;jose@provedor.com&#039;, &#039;Service-Type&#039;, &#039;==&#039;, &#039;Framed-User&#039;),
(NULL, &#039;jose@provedor.com&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;);
</pre>
<p>E porque não prender nosso usuário ao MAC Adress dele?</p>
<pre class="remontti-code">INSERT INTO `radcheck` (`id`, `username`, `attribute`, `op`, `value`) VALUES 
(NULL, &#039;jose@provedor.com&#039;, &#039;Calling-Station-Id&#039;, &#039;==&#039;, &#039;08:00:00:00:00:B2&#039;);</pre>
<p>Fazendo um SELECT em nossa tabelas temos 4 atributos atrelado ao nosso usuário jose@provedor.com que deixam de certa foma muito mais seguro. Existe ainda o atributo Simultaneous-Use que falarei dele mais a frente.</p>
<pre class="remontti-code-plain">MariaDB [radius]&gt; SELECT * FROM `radcheck` WHERE `username` = &#039;jose@provedor.com&#039;;
+----+-------------------+--------------------+----+-------------------+
| id | username          | attribute          | op | value             |
+----+-------------------+--------------------+----+-------------------+
|  1 | jose@provedor.com | Cleartext-Password | := | senha_do_usuario  |
|  2 | jose@provedor.com | Service-Type       | == | Framed-User       |
|  3 | jose@provedor.com | Framed-Protocol    | := | PPP               |
|  4 | jose@provedor.com | Calling-Station-Id | == | 08:00:00:00:00:B2 |
+----+-------------------+--------------------+----+-------------------+
4 rows in set (0.001 sec)</pre>
<p>Para que nosso controle de banda (queues) também seja configurado através do freeradius, o mikrotik possui uma bliblioteca Mikrotik-Rate-Limit.<br />
Para demonstrar que realmente o jose@provedor.com não irá mais pegar os 50MB do profile irei colocar no valor 100Mb de Donw e 30 de Upload.</p>
<pre class="remontti-code">INSERT INTO `radreply` (`id`, `username`, `attribute`, `op`, `value`) VALUES
(NULL, &#039;jose@provedor.com&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;30M/100M&#039;);</pre>
<p>Desconecte o usuário jose@provedor.com para que as novas configurações sejam atribuidas:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/queues_radius.png" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/queues_radius.png" alt="" width="473" height="324" class="alignnone size-full wp-image-4132" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/queues_radius.png 473w, https://blog.remontti.com.br/wp-content/uploads/2020/03/queues_radius-300x205.png 300w" sizes="auto, (max-width: 473px) 100vw, 473px" /></a></p>
<p>E se a velocidade utilizar <strong>Burst</strong>? Exemplo você quer mandar no seu plano de de 10Mb Up/50Mb Down, uma experiencia que por 1 minuto ele tenha o dobro da velocidade.</p>
<pre class="remontti-code">INSERT INTO `radreply` (`id`, `username`, `attribute`, `op`, `value`) VALUES
(NULL, &#039;jose@provedor.com&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;10M/50M 20M/100M 10M/50M 120/120 0&#039;);</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/queues__burst_radius.png" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/queues__burst_radius.png" alt="" width="468" height="328" class="alignnone size-full wp-image-4133" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/queues__burst_radius.png 468w, https://blog.remontti.com.br/wp-content/uploads/2020/03/queues__burst_radius-300x210.png 300w" sizes="auto, (max-width: 468px) 100vw, 468px" /></a></p>
<pre class="remontti-code">INSERT INTO `radreply` (`id`, `username`, `attribute`, `op`, `value`) VALUES
(NULL, &#039;jose@provedor.com&#039;, &#039;Framed-IP-Address&#039;, &#039;:=&#039;, &#039;180.255.0.150&#039;);</pre>
<p>Infelizmente o Mikrotik ainda não compreende o atributo <strong>Delegated-IPv6-Prefix</strong> (IPv6PD da LAN do cliente), no <a href="https://forum.mikrotik.com/viewtopic.php?t=89443" rel="noopener noreferrer" target="_blank">forum</a> foram proposto algumas gambiarras pela própria mikrotik como criando script para deixar estatico os IPv6s (gambiarra que na maoria das vezes nada da certo dependendo do modelo do router) no entanto ele aceita os atributo <strong>Framed-IPv6-Prefix</strong> (IPv6 WAN) e o <strong>Mikrotik-Delegated-IPv6-Pool</strong> com o nome do da Pool que foi criada manualmente lá no seu router.</p>
<pre class="remontti-code">INSERT INTO `radreply` (`id`, `username`, `attribute`, `op`, `value`) VALUES
-- IPv6 WAN --
(NULL, &#039;jose@provedor.com&#039;, &#039;Framed-IPv6-Prefix&#039;, &#039;:=&#039;, &#039;2001:db8:A:B::/64&#039;),
-- IPv6PD LAN Nome da Pool --
(NULL, &#039;jose@provedor.com&#039;, &#039;Mikrotik-Delegated-IPv6-Pool&#039;, &#039;=&#039;, &#039;nome_da_pool6&#039;);</pre>
<p>Lembrando q Delegated-IPv6-Prefix não funciona no Mikrotik (hj), oremos para que um dia seja implementado <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Ficaria assim:</p>
<pre class="remontti-code">INSERT INTO `radreply` (`id`, `username`, `attribute`, `op`, `value`) VALUES
(NULL, &#039;jose@provedor.com&#039;, &#039;Delegated-IPv6-Prefix&#039;, &#039;=&#039;, &#039;2001:db8:C::/56&#039;);</pre>
<p>Se você deseja saber mais acesse o tutorial:<br />
<a href="https://blog.remontti.com.br/3931" rel="noopener noreferrer" target="_blank">Como entregar IPv6+IPv4 no Mikrotik/RouterOS através de PPPoE/DHCPv6 PD e registrando os logs em um banco de dados</a></p>
<p><strong>Entregando os DNS pelo radius</strong>, lembra que em nosso profile configuramos para entregar 8.8.8.8 e 8.8.4.4? Vamos entregar agora ao usuário jose@provedor.com os DNS 1.1.1.1 e 9.9.9.9, para isso adicione a tabela radreply os atributos <strong>MS-Primary-DNS-Server</strong> e <strong>MS-Secondary-DNS-Server</strong>.</p>
<pre class="remontti-code">INSERT INTO `radreply` (`id`, `username`, `attribute`, `op`, `value`) VALUES
(NULL, &#039;jose@provedor.com&#039;, &#039;MS-Primary-DNS-Server&#039;, &#039;:=&#039;, &#039;1.1.1.1&#039;),
(NULL, &#039;jose@provedor.com&#039;, &#039;MS-Secondary-DNS-Server&#039;, &#039;:=&#039;, &#039;9.9.9.9&#039;);</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_pppoe_cliente_dns.png" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_pppoe_cliente_dns.png" alt="" width="837" height="469" class="alignnone size-full wp-image-4134" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_pppoe_cliente_dns.png 837w, https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_pppoe_cliente_dns-300x168.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_pppoe_cliente_dns-768x430.png 768w" sizes="auto, (max-width: 837px) 100vw, 837px" /></a></p>
<p>Fazendo um SELECT na tabelas radreply temos 4 atributos vinculados a configurações que serão entregue ao usuário jose@provedor.com.</p>
<pre class="remontti-code-plain">MariaDB [radius]&gt; SELECT * FROM `radreply` WHERE `username` = &#039;jose@provedor.com&#039;;
+----+-------------------+-------------------------+----+----------------------------------+
| id | username          | attribute               | op | value                            |
+----+-------------------+-------------------------+----+----------------------------------+
|  3 | jose@provedor.com | Mikrotik-Rate-Limit     | := | 10M/50M 20M/100M 10M/50M 120/120 |
|  6 | jose@provedor.com | MS-Primary-DNS-Server   | := | 1.1.1.1                          |
|  7 | jose@provedor.com | MS-Secondary-DNS-Server | := | 9.9.9.9                          |
|  8 | jose@provedor.com | Framed-IP-Address       | := | 180.255.0.150                    |
+----+-------------------+-------------------------+----+----------------------------------+
4 rows in set (0.001 sec)</pre>
<p>Podemos dispensar as configurações feita no profile já que o controle de banda e DNS são entregues pelo radius? Sim, porém  eu particularmente deixo os DNS como uma especie de &#8220;failover&#8221; caso não seja informado, apesar que no caso do Mikrotik se o DNS não estiver informado no Profile ele irá usar o DNS do router (/ip dns). Normalmente no concentrador PPPoE eu tenho apenas um profile qual é usado para todos PPPoE Servers onde altero o Rate Limit (rx/tx) para uma velocidade extremamente baixa (100k/100k), pois assim se algum usuário autenticar e não receber as configurações de banda do radius ele estará autenticando com velocidade ilimitada.</p>
<pre class="remontti-code"># No seu RouteOS
/ppp profile set Profile50M rate-limit=100k/100k</pre>
<p><strong>Iremos ver agora como buscar nosso IPv4 através da pool do radius, tabela <strong>radippool</strong></strong><br />
Vamos inserir apenas 3 entradas para demonstrar sendo 3 de IPs Validos e 3 para bloqueios. No seu caso você irá inserir todos seus IPs um a um.</p>
<pre class="remontti-code">INSERT INTO `radippool` 
(`pool_name`, `framedipaddress`, `calledstationid`, `callingstationid`, `username`, `pool_key`) VALUES
(&#039;pool_valido&#039;, &#039;180.255.3.128&#039;,&#039;&#039;,&#039;&#039;,&#039;&#039;,&#039;0&#039;),
(&#039;pool_valido&#039;, &#039;180.255.3.129&#039;,&#039;&#039;,&#039;&#039;,&#039;&#039;,&#039;0&#039;),
(&#039;pool_valido&#039;, &#039;180.255.3.130&#039;,&#039;&#039;,&#039;&#039;,&#039;&#039;,&#039;0&#039;),
(&#039;pool_bloq&#039;,&#039;100.127.0.0&#039;,&#039;&#039;,&#039;&#039;,&#039;&#039;,&#039;0&#039;),
(&#039;pool_bloq&#039;,&#039;100.127.0.1&#039;,&#039;&#039;,&#039;&#039;,&#039;&#039;,&#039;0&#039;),
(&#039;pool_bloq&#039;,&#039;100.127.0.2&#039;,&#039;&#039;,&#039;&#039;,&#039;&#039;,&#039;0&#039;);</pre>
<p>Agora para testarmos vamos remover primeiro o IP 180.255.0.150 que setamos para o usuário jose@provedor.com anteriormente, pois se você utilizar o atributo Framed-IP-Address ele terá prioridade a pool. </p>
<pre class="remontti-code">DELETE FROM `radreply` WHERE `username` LIKE &#039;jose@provedor.com&#039; AND `attribute` LIKE &#039;Framed-IP-Address&#039;</pre>
<p>Para entregar ao usuário jose@provedor.com a pool_valido utilizaremos o atributo <strong>Pool-Name</strong></p>
<pre class="remontti-code">INSERT INTO `radcheck` (`id`, `username`, `attribute`, `op`, `value`) VALUES 
(NULL, &#039;jose@provedor.com&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;pool_valido&#039;);</pre>
<p>Desconectamos nosso usuário para ver qual IP ele vai receber.</p>
<p>RouterOS</p>
<pre class="remontti-code-plain">[usuario_router@PPP-SERVER-LAB] &gt; ppp active print
Flags: R - radius
 #   NAME         SERVICE CALLER-ID         ADDRESS         UPTIME   ENCODING 
 0 R jose@prov... pppoe   08:00:00:00:00:B2 45.250.3.129    7m51s</pre>
<p>Radius</p>
<pre class="remontti-code-plain">MariaDB [radius]&gt; SELECT pool_name,framedipaddress,username,pool_key FROM `radippool`;
+-------------+-----------------+-------------------+-------------------+
| pool_name   | framedipaddress | username          | pool_key          |
+-------------+-----------------+-------------------+-------------------+
| pool_valido | 45.250.3.128    |                   | 0                 |
| pool_valido | 45.250.3.129    | jose@provedor.com | 08:00:00:00:00:B2 |
| pool_valido | 45.250.3.130    |                   | 0                 |
| pool_bloq   | 100.127.0.0     |                   | 0                 |
| pool_bloq   | 100.127.0.1     |                   | 0                 |
| pool_bloq   | 100.127.0.2     |                   | 0                 |
+-------------+-----------------+-------------------+-------------------+</pre>
<p>Podemos ver que o usuário jose@provedor.com recebeu o IP 45.250.3.129. Lembrando que esse endereço IP é entregue randomicamente, configurado lá no tutorial: <a href="https://blog.remontti.com.br/4063" rel="noopener noreferrer" target="_blank">Criando um servidor de autenticação com FreeRadius 3.0.x no Debian Buster</a><br />
Se você quiser bloquear o cliente basta alterar sua Pool-Name para pool_bloq. </p>
<p>Talvez você esteja pensando: <em>&#8220;Putz mas para cada usuário vai ter vários inserts!&#8221;</em>. E é por isso que as tabelas <strong>radgroupcheck</strong> , <strong>radgroupreply</strong> e <strong>radusergroup</strong> existem para simplificar. É nela então que vamos criar nossos &#8220;planos&#8221;, onde podemos agrupar os atributos Service-Type, Framed-Protocol, Mikrotik-Rate-Limit, MS-Primary-DNS-Server e MS-Secondary-DNS-Server assim não sendo mais necessário informar para cada usuário.</p>
<p>Vamos então criar nosso <strong>Plano 10MB</strong>. Teremos um novo atributo que acho importante o uso, o <strong>Acct-Interim-Interval</strong>, ele se &#8220;equivale&#8221; ao interim-update=5m lá do mikrotik &#8220;/ppp aaa&#8221;, isso fará que se o mikrotik não atualizar os valores o freeradius solicite, em uma tradução simples é o tempo em que a tabela radacct é atualizada.</p>
<pre class="remontti-code">INSERT INTO `radgroupcheck` (`groupname`, `attribute`, `op`, `value`) VALUES
(&#039;PLANO_10MB&#039;, &#039;Service-Type&#039;, &#039;==&#039;, &#039;Framed-User&#039;),
(&#039;PLANO_10MB&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;),
(&#039;PLANO_10MB&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;pool_valido&#039;);

INSERT INTO `radgroupreply` (`groupname`, `attribute`, `op`, `value`) VALUES
(&#039;PLANO_10MB&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;PLANO_10MB&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;5M/10M&#039;),
(&#039;PLANO_10MB&#039;, &#039;MS-Primary-DNS-Server&#039;, &#039;:=&#039;, &#039;9.9.9.9&#039;),
(&#039;PLANO_10MB&#039;, &#039;MS-Secondary-DNS-Server&#039;, &#039;:=&#039;, &#039;149.112.112.112&#039;);</pre>
<p>Aproveitando irei criar um Plano de bloqueio.</p>
<pre class="remontti-code">INSERT INTO `radgroupcheck` (`groupname`, `attribute`, `op`, `value`) VALUES
(&#039;BLOQUEADO&#039;, &#039;Service-Type&#039;, &#039;==&#039;, &#039;Framed-User&#039;),
(&#039;BLOQUEADO&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;),
(&#039;BLOQUEADO&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;pool_bloq&#039;);

INSERT INTO `radgroupreply` (`groupname`, `attribute`, `op`, `value`) VALUES
(&#039;BLOQUEADO&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;BLOQUEADO&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;666k/666k&#039;),
(&#039;BLOQUEADO&#039;, &#039;MS-Primary-DNS-Server&#039;, &#039;:=&#039;, &#039;8.8.8.8&#039;),
(&#039;BLOQUEADO&#039;, &#039;MS-Secondary-DNS-Server&#039;, &#039;:=&#039;, &#039;8.8.4.4&#039;);</pre>
<p>Para melhor entendimento e simplificar vamos apagar do usuário jose@provedor.com das tabelas radcheck e radreply.</p>
<pre class="remontti-code">DELETE FROM `radcheck` WHERE `username` LIKE &#039;jose@provedor.com&#039;;
DELETE FROM `radreply` WHERE `username` LIKE &#039;jose@provedor.com&#039;;</pre>
<p>Logo nossa radcheck precisa se preocupar com apenas de dois atributos Cleartext-Password (usuário vs senha) e Calling-Station-Id (usuário vs MAC), adicionamos então:</p>
<pre class="remontti-code">INSERT INTO `radcheck` (`username`, `attribute`, `op`, `value`) VALUES
(&#039;jose@provedor.com&#039;, &#039;Cleartext-Password&#039;, &#039;:=&#039;, &#039;senha_do_usuario&#039;),
(&#039;jose@provedor.com&#039;, &#039;Calling-Station-Id&#039;, &#039;==&#039;, &#039;08:00:00:00:00:B2&#039;);</pre>
<p>Se nesse momento o usuário conectar ele estaria sem um grupo e as configurações que estaria recebendo seriam as do profile do mikrotik (IP/DNS/Velocidade). Como fazer? Simples, você irá usar a tabela radusergroup onde você irá inserir o nome do usuário e qual o nome do grupo ele pertence. Muito mais simples não?!</p>
<pre class="remontti-code">INSERT INTO `radusergroup` (`username`, `groupname`) VALUES 
(&#039;jose@provedor.com&#039;, &#039;PLANO_10MB&#039;);</pre>
<p>Desconecte o usuário e verifique se o mesmo irá receber as novas configurações com base em grupos.<br />
PPPoE Server: IP Randômico [OK] / Controle de Banda [OK]<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mikrotik_pppoe_server.png" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mikrotik_pppoe_server.png" alt="" width="621" height="235" class="alignnone size-full wp-image-4144" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mikrotik_pppoe_server.png 621w, https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mikrotik_pppoe_server-300x114.png 300w" sizes="auto, (max-width: 621px) 100vw, 621px" /></a></p>
<p>PPPoE Cliente: IP [OK] / DNS [OK]<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mikrotik_pppoe_client.png" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mikrotik_pppoe_client.png" alt="" width="545" height="416" class="alignnone size-full wp-image-4145" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mikrotik_pppoe_client.png 545w, https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mikrotik_pppoe_client-300x229.png 300w" sizes="auto, (max-width: 545px) 100vw, 545px" /></a></p>
<p>Agora para bloquear o usuário basta fazer um <strong>UPDATE</strong>  trocando o plano do usuário para <strong>BLOQUEADO</strong>.</p>
<pre class="remontti-code">UPDATE `radusergroup` SET `groupname` = &#039;BLOQUEADO&#039; WHERE `username` LIKE &#039;jose@provedor.com&#039;;</pre>
<p>Desconectamos novamente e verificamos as configurações recebidas.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mk_bloqueio_server.png" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mk_bloqueio_server.png" alt="" width="607" height="235" class="alignnone size-full wp-image-4147" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mk_bloqueio_server.png 607w, https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mk_bloqueio_server-300x116.png 300w" sizes="auto, (max-width: 607px) 100vw, 607px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mk_bloqueio_cliente.png" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mk_bloqueio_cliente.png" alt="" width="534" height="417" class="alignnone size-full wp-image-4146" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mk_bloqueio_cliente.png 534w, https://blog.remontti.com.br/wp-content/uploads/2020/03/radius_mk_bloqueio_cliente-300x234.png 300w" sizes="auto, (max-width: 534px) 100vw, 534px" /></a></p>
<p>Podemos ver que nossas regras estão funcionado. Vale lembrar que se for bloquear um usuário qual esteja com o atributo <strong>Framed-IP-Address</strong> onde você setou um IP fixo para o mesmo será necessário remover, caso contrario o cliente não irá receber o IP da faixa bloqueada.</p>
<p>Qualquer atributo que você queira que sobrescreva a radusergroup basta adicionar diretamente nas tabelas, como é o exemplo do IP fixo, vamos supor que um determinado usuário queira receber um DNS personalizado, basta adicionar o usuário dele na radreply.</p>
<p>Vamos ver como estão nossas tabelas até o momento:</p>
<pre class="remontti-code-plain">MariaDB [radius]&gt; SELECT * FROM `radgroupcheck`;
+----+------------+-----------------+----+-------------+
| id | groupname  | attribute       | op | value       |
+----+------------+-----------------+----+-------------+
|  1 | PLANO_10MB | Service-Type    | == | Framed-User |
|  2 | PLANO_10MB | Framed-Protocol | := | PPP         |
|  3 | PLANO_10MB | Pool-Name       | := | pool_valido |
|  4 | BLOQUEADO  | Service-Type    | == | Framed-User |
|  5 | BLOQUEADO  | Framed-Protocol | := | PPP         |
|  6 | BLOQUEADO  | Pool-Name       | := | pool_bloq   |
+----+------------+-----------------+----+-------------+
6 rows in set (0.000 sec)

MariaDB [radius]&gt; SELECT * FROM `radgroupreply`;
+----+------------+-------------------------+----+-----------------+
| id | groupname  | attribute               | op | value           |
+----+------------+-------------------------+----+-----------------+
|  1 | PLANO_10MB | Acct-Interim-Interval   | := | 300             |
|  2 | PLANO_10MB | Mikrotik-Rate-Limit     | := | 5M/10M          |
|  3 | PLANO_10MB | MS-Primary-DNS-Server   | := | 9.9.9.9         |
|  4 | PLANO_10MB | MS-Secondary-DNS-Server | := | 149.112.112.112 |
|  5 | BLOQUEADO  | Acct-Interim-Interval   | := | 300             |
|  6 | BLOQUEADO  | Mikrotik-Rate-Limit     | := | 666k/666k       |
|  7 | BLOQUEADO  | MS-Primary-DNS-Server   | := | 8.8.8.8         |
|  8 | BLOQUEADO  | MS-Secondary-DNS-Server | := | 8.8.4.4         |
+----+------------+-------------------------+----+-----------------+
8 rows in set (0.000 sec)

MariaDB [radius]&gt; SELECT * FROM `radcheck` WHERE `username` = &#039;jose@provedor.com&#039;;
+----+-------------------+--------------------+----+-------------------+
| id | username          | attribute          | op | value             |
+----+-------------------+--------------------+----+-------------------+
| 15 | jose@provedor.com | Cleartext-Password | := | senha_do_usuario  |
| 16 | jose@provedor.com | Calling-Station-Id | == | 08:00:00:00:00:B2 |
+----+-------------------+--------------------+----+-------------------+
2 rows in set (0.000 sec)

MariaDB [radius]&gt; SELECT * FROM `radusergroup`;
+----+-------------------+-----------+----------+
| id | username          | groupname | priority |
+----+-------------------+-----------+----------+
|  1 | jose@provedor.com | BLOQUEADO |        1 |
+----+-------------------+-----------+----------+
1 row in set (0.000 sec)</pre>
<h3>Simultaneous-Use</h3>
<p>Existe um atributo chamado <strong>Simultaneous-Use</strong> qual você pode limitar o número de vezes que aquele usuário pode autenticar, aplicando na radgroupcheck ficaria: </p>
<pre class="remontti-code">INSERT INTO `radgroupcheck` (`groupname`, `attribute`, `op`, `value`) VALUES
(&#039;PLANO_X&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;);</pre>
<p>Porém para funcionar o Simultaneous-Use é necessário ajustes em dois arquivos:<br />
 &#8211; /etc/freeradius/3.0/sites-enabled/inner-tunnel<br />
 &#8211; /etc/freeradius/3.0/sites-enabled/default<br />
Incluindo dentro de <strong>session</strong> o valor <strong>radutmp</strong></p>
<pre class="remontti-code-plain">session { 
    radutmp
    sql
}</pre>
<p>Mas <strong>é extremamente importante você saber</strong> que qualquer falha de comunicação entre o roteador e o servidor a conexão ira ficar &#8220;<strong>pendurada</strong>&#8220;, como vimos na radacct todas as conexões são registradas lá, logo quando um cliente está conectado o campo de stop ainda não foi atualizado, então imagine que seu router sofreu uma falha elétrica e desligou, logo nenhuma informação será enviada para o servidor deixando todas as conexões em aberta, ao iniciar novamente o roteador todos usuários não irão conseguir logar, pois já existe uma conexão. Resumindo se você não estiver preparado para esse tipo de situação é melhor não utiliza-lo. Eu costumo deixar no pppoe server a opção <strong>one-session-per-host=yes</strong> assim apenas um login pode acessar (que vai fazer a mesma coisa) o ponto negativo é que em distintos concentradores seria possível logar. Mas se você é um cara inteligente você facilmente monta um script para verificar se o existe por exemplo dois usuários iguais na <strong>radippool</strong> vindo de diferentes <strong>nasipaddress</strong> e podendo executar uma ação, ex envia um alerta de gatonet <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<h3>radippool Duplicando IPs</h3>
<p>Um outro ponto frequente que me perguntam é sobre a <strong>radippool e o problema com duplicidades de IPs</strong>. Sim existia alguns problemas em versões mais antigas. Como no caso de uma falha elétrica ou um rompimento irá causar falha de comunicação entre servidor e concentrador. Após a versão 3.0.16 o freeradius teve alguma melhorias. Na radippool existe um campo chamado <strong>expiry_time</strong> que por padrão é de <strong>1 hora</strong>.</p>
<p>Lembra que configuramos o <strong>interim-update</strong> no mikrotik e <strong>Acct-Interim-Interval</strong> na tabela radgroupreply qual montamos o &#8220;plano&#8221; com valores de 5 minutos? Logo o valor de expiry_time sempre será atualizado a cada 5 min (acrecentando o valor do lease_duration)  e o prazo de expiração passará ser de +1h, porém se a falta de comunicação for por um curto tempo inferior à 1h e o mesmo usuário reautenticar ele vai manter o IP antigo pois ele ainda não expirou, e o usuário vai receber um novo IP, então o IP antigo só irá sair da tabela na próxima vez que o usuário autenticar e o prazo for maior que 1h, sabemos que uma nova autenticação pode até levar dias para acontecer novamente, e quando der um problema normalmente são muitos usuários, e com isso nossa tabelas de ips acabará facilmente ficando sem IPs livres na pool. </p>
<p>Oque fazer então? Este tempo pode ser ajustado no arquivo /etc/freeradius/3.0/mods-available/sqlippool na variável <strong>lease_duration = 3600</strong>, eu irei alterar para 10 min, assim será dificil algum usuário autenticar sem remover seu antigo IP alocado. Mas você pode ajustar de acordo com suas necessidades/realidade. </p>
<pre class="remontti-code"># sed -i &#039;s/lease_duration = 3600/lease_duration = 600/&#039; /etc/freeradius/3.0/mods-available/sqlippool
# systemctl restart freeradius</pre>
<p>Algo que você pode criar é uma rotina com um script de sua linguagem preferia, fazendo um simples select na radippool e verifica se existe dois usuários, e tomando uma ação.</p>
<p>Porém é interessante você ajustar as querys em <strong>/etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf</strong> Eu levei um bom tempo para deixar isso funcionando de forma que não tivesse mais dor de cabeça, (não irei compartilhar pois é algo que é bem para minha realidade, mais pode me chama no telegram @remontti)</p>
<p>Uma solução simples que encontrei para resolver isso no passado foi criar um script executado a cada 5 min no concentrador PPPoE, onde ele verifica se a conexão com o IP do servidor freeradius está respondendo, e caso não responda ele desative/ative os pppoe-servers fazendo com que os clientes desconectem <em>(Na minha situação quando o concentrador não tem comunicação com o freeradius o cliente também não tem)</em> assim quando estabilizar a comunicação todos irão reautenticar novamente. Tenho isso até hoje, confesso que me sinto mais confortável, caso deseje saber como ele é segue o script:</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/script_radius.png" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/script_radius.png" alt="" width="526" height="587" class="alignnone size-full wp-image-4150" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/script_radius.png 526w, https://blog.remontti.com.br/wp-content/uploads/2020/03/script_radius-269x300.png 269w" sizes="auto, (max-width: 526px) 100vw, 526px" /></a></p>
<p>Altere 180.255.0.3 para o IP do seu servidor Freeradius. O script vai disparar 10 ping e caso não responde ele irá então desativar e ativar todos os pppoe-server. Lembre-se de não pode nenhum firewall bloqueando ICMP.</p>
<pre class="remontti-code">/system scheduler
add interval=5m name=checa-radius on-event=&quot;{ \r\
    \n  :local cont 0\r\
    \n  :local services [/interface pppoe-server server print count-only]\r\
    \n  /interface pppoe-server server print\r\
    \n  :if ([/ping 180.255.0.3 count=10] = 0) do={\r\
    \n    :log error message=\&quot;COMUNICACAO RADIUS [ OFF ]\&quot;;\r\
    \n    :while (\$cont &lt; \$services) do={\r\
    \n      /interface pppoe-server server disable numbers=\$cont\r\
    \n      /interface pppoe-server server enable numbers=\$cont\r\
    \n      :set cont (\$cont+1)\r\
    \n    }\r\
    \n  }\r\
    \n}&quot; policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-time=startup</pre>
<pre class="remontti-code-plain">{ 
  :local cont 0
  :local services [/interface pppoe-server server print count-only]
  /interface pppoe-server server print
  :if ([/ping 180.255.0.3 count=10] = 0) do={
    :log error message=&quot;COMUNICACAO RADIUS [ OFF ]&quot;;
    :while ($cont &lt; $services) do={
      /interface pppoe-server server disable numbers=$cont
      /interface pppoe-server server enable numbers=$cont
      :set cont ($cont+1)
    }
  }
}</pre>
<h3>Personalizando a alocação dos IPS para escolher uma Pool padrão quando esgotar uma Pool-Name. `Opcional`</h3>
<p>Ao término de uma pools na maioria dos casos (provedores) subentender-se que acabou os IPs válidos e será necessários entregar IPs inválidos para fazer o CGNAT. Então porque não ajustar o <strong>allocate_find</strong> para que se caso uma Pool-Name não contenha mais IPs disponível ela lhe entregar os de uma nova Pool? Bom vale lembrar para nunca deixar a pool de bloqueio/aviso/etc faltar IPs pois se isso acontecer o cliente vai receber um IP de CGNAT. Eu particularmente gosto assim, quanto menos informação no roteador mais controle se tem.</p>
<p>Se desejar fazer isso vamos editar o /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf.</p>
<pre class="remontti-code"># vim /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf</pre>
<p>Comentando as linhas atuais da variável <strong>allocate_find</strong>:</p>
<pre class="remontti-code">##allocate_find = &quot;\
##        SELECT framedipaddress FROM ${ippool_table} \
##        WHERE pool_name = &#039;%{control:Pool-Name}&#039; \
##        AND expiry_time IS NULL \
##        ORDER BY \
##                RAND() \
##        LIMIT 1 \
##        FOR UPDATE&quot;</pre>
<p>E adicionando as seguintes: (Perceba que o nome da pool alternativa/failover/backup é <strong>pool_cgnat</strong>)</p>
<pre class="remontti-code">allocate_find = &quot;\
    SELECT framedipaddress FROM ${ippool_table} \
    WHERE ( \
    CASE WHEN (SELECT COUNT(framedipaddress) FROM ${ippool_table} WHERE pool_name = &#039;%{control:Pool-Name}&#039; AND expiry_time IS NULL LIMIT 1) &gt; 0 THEN \
    (pool_name = &#039;%{control:Pool-Name}&#039; AND expiry_time IS NULL) \
    ELSE \
    (pool_name = &#039;pool_cgnat&#039; AND expiry_time IS NULL) \
    END) \
    ORDER BY RAND() \
    LIMIT 1 \
    FOR UPDATE&quot;
</pre>
<p>Lembre-se que toda a ateração nos arquivos de configurações é necessário reiniciar o serviço.</p>
<pre class="remontti-code"># systemctl restart freeradius</pre>
<p>Você vai precisar adicionar agora todos seus IPs de CGNAT (<a rel="noopener noreferrer" target="_blank" href="https://blog.remontti.com.br/wp-content/uploads/2020/03/radippool_cgnat.sql_.txt">cgnat.sql</a>) ex.:</p>
<pre class="remontti-code">INSERT INTO `radippool` 
(`pool_name`, `framedipaddress`, `nasipaddress`, `calledstationid`, `callingstationid`, `expiry_time`, `username`, `pool_key`) VALUES
(&#039;pool_cgnat&#039;, &#039;100.64.0.0&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;pool_cgnat&#039;, &#039;100.64.0.1&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;pool_cgnat&#039;, &#039;100.64.0.2&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;pool_cgnat&#039;, &#039;100.64.0.3&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;);</pre>
<p>Agora em seu laboratório você pode deixar apenas 1 IP válido e autenticar mais usuários para ver se a regra funcionou.</p>
<h3> Autenticação Wireless</h3>
<p>Conheço muitos provedores que tem apenas uma senha para todos seus POPs, ou uma diferente para cada, mas são fixas e isso é muito perigoso!!!<br />
Vamos pensar agora só pelas piores possibilidades OK? Imagine um funcionário seu que saiu da sua empresa sabendo a senha de todas as setoriais de suas torres. Imaginou? Você pode até me dizer: "-Grande coisa ele não vai saber meus usuários e senhas dos PPPoE." Realmente ele pode não saber (mas eu nem estou preocupado com isso, pois eu prendo usuário ao MAC, agora se seu sistema não faz isso pode brotar uns gatinhos ai na rede) mas o que realmente me preocupa é o fato das "malvadezas" que podem serem feitas, vamos para primeira? Pego um NanoStation e conecto em sua setorial (para piorar essa setorial esta em bridge com mais alguma coisa... quem sabe com toda a rede?), agora que estou "dentro" da rede posso criar um pppoe-server e autenticar todas as solicitações (é só configurar para ignorar as senhas) toda vez q um um cliente solicita uma conexão um pacote broadcast é enviado na rede e quem responde primeiro ganha, posso ainda gerar um alto trafego (DDoS) bagunçar. Ai você me diz: "-Mas aqui na minha cidade o pessoal nem sabe fazer isso." Realmente, mas se esse infeliz agora pegar e conectar outro NanoStation e interligar um NanoStation no outro? Precisa ser inteligente para fazer isso? (Putz posso estar dando idéias, não faça isso com seu concorrente)  Um loop esta feito, e toda essa rede vai parar de funcionar. (Conheco uma galera que usa ONUs na sua rede GPON em brid e esquece isso da para fazer também)... Parei se não vou acabar ser acusado, mas o que quero alertar é que existe uma infinidade de possibilidades ao deixar uma pessoa maliciosa conectar em sua rede.</p>
<h3>WPA-PSK</h3>
<p>É por isso que uma autenticação com o radius para sua rede wireless é o melhor caminho. Como isso funciona? Para cada dispositivo/antena que for conectar você terá uma <strong>senha exclusiva</strong> só para ela, vou começar explicando como fazer isso com senhas PSK com o atributo <strong>Mikrotik-Wireless-PSK</strong> da Mikrotik.</p>
<p>Com base no nosso diagrama da rede vamos ver como seria para autenticar o usuário joao@provedor.com, primeiramente vamos configurar nosso AP-Mikrotik.</p>
<p>Crie um novo profile de segurança</p>
<pre class="remontti-code">/interface wireless security-profiles 
add name=WPA2-PSK-Radius \
    mode=dynamic-keys management-protection=allowed \
    authentication-types=wpa2-psk radius-called-format=ssid \
    radius-mac-authentication=yes \
    wpa2-pre-shared-key=dZluej6SCdcFvRWd</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/psk-mk-radius.jpeg" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/psk-mk-radius.jpeg" alt="" width="870" height="429" class="alignnone size-full wp-image-4188" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/psk-mk-radius.jpeg 870w, https://blog.remontti.com.br/wp-content/uploads/2020/03/psk-mk-radius-300x148.jpeg 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/psk-mk-radius-768x379.jpeg 768w" sizes="auto, (max-width: 870px) 100vw, 870px" /></a></p>
<p>Configurando a interface wireless "<strong>wlan1</strong>" setamos o <strong>security-profile</strong> para <strong>WPA2-PSK-Radius</strong> que acabamos de criar e darei o nome do sinal (ssid) de <strong>SSID-PSK-Radius</strong>.</p>
<pre class="remontti-code">/interface wireless
set [ find default-name=wlan1 ] \
    disabled=no mode=ap-bridge \
    security-profile=WPA2-PSK-Radius \
    ssid=SSID-PSK-Radius</pre>
<p>Fizemos a nossa conexão com o radius, informando que vamos usar neste caso apenas o serviço wireless.</p>
<pre class="remontti-code">/radius
add address=180.255.0.3 secret=SEU_SECRET service=wireless</pre>
<p>Não esqueça que sempre que adicionar um novo autenticador ao seu servidor é necessário que o mesmo seja adicionado a tabela NAS e restartado o freeradius, ex:</p>
<pre class="remontti-code">INSERT INTO `nas` (`nasname`, `shortname`, `type`, `ports`, `secret`, `server`, `community`, `description`) VALUES
(&#039;10.1.0.4&#039;, &#039;MK-AP-C&#039;, &#039;other&#039;, NULL, &#039;SEU_SECRET&#039;, NULL, NULL, &#039;SSID-PSK-Radius&#039;);</pre>
<pre class="remontti-code"># systemctl restart freeradius</pre>
<p>Para você que está estudando é sempre deixar o radius parado e rado-lo em modo debug com o comando `freeradius -X` e observar tudo que rola. Para minha bancada estou usando um mikrotik hAp e vou tentar conectar meu celular, sem cadastrar nada no radius ainda, logo em algumas linhas veremos o seguinte:</p>
<pre class="remontti-code-plain">(16)   Service-Type = Framed-User
(16)   NAS-Port-Id = &quot;wlan1&quot;
(16)   NAS-Port-Type = Wireless-802.11
(16)   User-Name = &quot;44:45:4D:45:4B:4D&quot;
(16)   Calling-Station-Id = &quot;44-45-4D-45-4B-4D&quot;
(16)   Called-Station-Id = &quot;SSID-PSK-Radius&quot;
(16)   User-Password = &quot;&quot;
(16)   NAS-Identifier = &quot;MikroTik&quot;
(16)   NAS-IP-Address = 10.1.0.4</pre>
<p>Podemos observar que chegaram informações como o nome da interface wireless <strong>NAS-Port-Id = "wlan1"</strong>, o tipo da autenticação <strong>NAS-Port-Type = Wireless-802.11</strong>, o mac do dispositivo <strong>User-Name = "44:45:4D:45:4B:4D"</strong>, o nome do sinal <strong>Called-Station-Id = "SSID-PSK-Radius"</strong>, o nome da router (system -> identity) <strong>NAS-Identifier = "MikroTik"</strong>, e o IP <strong>NAS-IP-Address = 10.1.0.4</strong>.</p>
<p>Com base nessas informações vamos alimentar nossa base de dados, e é claro que pensando na segurança! Lembra criar usuário sem prender ele a outros atributos é um perigo!</p>
<p>Primeiro atributo então é os Mikrotik-Wireless-PSK que vamos gravar na radreply, logo nosso usuário será nosso MAC. (Estou usando o <strong>MAC Format</strong> lá do profile separado por dois pontos, mas se necessário para sua aplicação existe outros formatos `"XX XX XX XX XX XX"  XX-XX-XX-XX-XX-XX  XX:XX:XX:XX:XX:XX  XXXX:XXXX:XXXX  XXXXXX-XXXXXX  XXXXXX:XXXXXX  XXXXXXXXXXXX`)</p>
<pre class="remontti-code">INSERT INTO `radreply` (`username`, `attribute`, `op`, `value`) VALUES
(&#039;44:45:4D:45:4B:4D&#039;, &#039;Mikrotik-Wireless-PSK&#039;, &#039;:=&#039;, &#039;3ZKEG5mMq0ZRSUQy&#039;); </pre>
<p>Na radcheck vamos então primeiro autorizar a autenticação Auth-Type (Se só gravar isso na tabela seria um perigo pois você esta autorizando esse MAC que é um usuário a autenticar mesmo sem senha) e é por isso que vamos definir que NAS-Port-Type vai ser Wireless-802.11m assim esse user só pode autenticar vindo de uma conexão wireless, e por ultimo você também pode informar que ele só irá poder conectar no SSID com nome <em>"SSID-PSK-Radius"</em>.</p>
<pre class="remontti-code">INSERT INTO `radcheck` (`username`, `attribute`, `op`, `value`) VALUES
(&#039;44:45:4D:45:4B:4D&#039;, &#039;Auth-Type&#039;, &#039;:=&#039;, &#039;Accept&#039;),
(&#039;44:45:4D:45:4B:4D&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;),
(&#039;44:45:4D:45:4B:4D&#039;, &#039;Called-Station-Id&#039;, &#039;==&#039;, &#039;SSID-PSK-Radius&#039;);</pre>
<p>Seria ainda possível prender ao Identity (NAS-Identifier) do MK, bem como o IP dele (NAS-IP-Address), mas eu acho mais complicado, mas é possível! Caso você queira que o cliente consiga se conectar em qualquer sinal basta não gravar o atributo Called-Station-Id.</p>
<h3>WPA-EAP</h3>
<p>No mikrotik:<br />
Crie um novo profile de segurança, para diferenciar usarei o mac-format=XXXXXXXXXXXX. Vale lembrar que tem outras formas de configurar o EAP, mas para nosso lab podemos subi-lo da forma mais simples.</p>
<pre class="remontti-code">/interface wireless security-profiles
add authentication-types=wpa2-eap \
    management-protection=allowed mode=dynamic-keys \
    name=WPA2-EAP-Radius radius-called-format=ssid \
    radius-eap-accounting=yes radius-mac-format=XXXXXXXXXXXX\
    supplicant-identity=MikroTik
</pre>
<p>Ajuste sua interface</p>
<pre class="remontti-code">/interface wireless
set [ find default-name=wlan1 ] disabled=no \
    mode=ap-bridge security-profile=WPA2-EAP-Radius ssid=WPA2-EAP-Radius</pre>
<p>Conecte ao radius.</p>
<pre class="remontti-code">/radius
add address=180.255.0.3 secret=SEU_SECRET service=wireless</pre>
<p>No Ubiquiti (Não tem suporte PSK com Radius):<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/screencapture-172-30-67-194-2020-03-12-14_42_47.png" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/screencapture-172-30-67-194-2020-03-12-14_42_47.png" alt="" width="987" height="530" class="alignnone size-full wp-image-4194" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/screencapture-172-30-67-194-2020-03-12-14_42_47.png 987w, https://blog.remontti.com.br/wp-content/uploads/2020/03/screencapture-172-30-67-194-2020-03-12-14_42_47-300x161.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/screencapture-172-30-67-194-2020-03-12-14_42_47-768x412.png 768w" sizes="auto, (max-width: 987px) 100vw, 987px" /></a></p>
<p>No EAP não é necessariamente ser o MAC o usuário, mas fica mais pratico até para programar, logo precisamos de um usuário e senha e prender ele ao tipo EAP. Eu particularmente NÃO uso EAP no mikrotik, por mais que PSK seja mais facil quebrar com o uso do radius fica muito complicado, e além do mais fica exclusivo ao MAC, já no EAP poderá autenticar com a mesma senha em vários dispositivos. </p>
<p>Inseremos então nosso user EAP no banco de dados.</p>
<pre class="remontti-code">INSERT INTO `radcheck` (`username`, `attribute`, `op`, `value`) VALUES
(&#039;44454D454B4D&#039;, &#039;Cleartext-Password&#039;, &#039;:=&#039;, &#039;enIkMVfhq3WIqyKq&#039;),
(&#039;44454D454B4D&#039;, &#039;Auth-Type&#039;, &#039;:=&#039;, &#039;eap&#039;);</pre>
<h2>Hotspot</h2>
<p>Vamos falar primeiro do módulo contador (<strong><a href="https://wiki.freeradius.org/modules/Rlm_sqlcounter" rel="noopener noreferrer" target="_blank">sqlcounter</a></strong>). O módulo sqlcounter permite um contador de pacotes usando registros contábeis gravados no banco de dados. </p>
<p>Com este módulo é possível criar alguns cenários de interessantes no mundo do Hotspot, exemplo:<br />
 - limitar o tempo de conexão (ex.: 2h por dia/mês/único vez)</p>
<p>Se desejar habilite o mod sqlcounter.</p>
<pre class="remontti-code"># ln -s /etc/freeradius/3.0/mods-available/sqlcounter /etc/freeradius/3.0/mods-enabled/sqlcounter</pre>
<p>Adicione em instantiate {...} dailycounter, monthlycounter e noresetcounter do arquivo /etc/freeradius/3.0/radiusd.conf</p>
<pre class="remontti-code"># sed -i &#039;683i\        dailycounter&#039; /etc/freeradius/3.0/radiusd.conf
# sed -i &#039;684i\        monthlycounter&#039; /etc/freeradius/3.0/radiusd.conf
# sed -i &#039;685i\        noresetcounter&#039; /etc/freeradius/3.0/radiusd.conf</pre>
<p>Adicione em authorize {...} dailycounter, monthlycounter e noresetcounter do arquivo /etc/freeradius/3.0/sites-enabled/default</p>
<pre class="remontti-code"># sed -i &#039;406i\        dailycounter&#039; /etc/freeradius/3.0/sites-enabled/default
# sed -i &#039;407i\        monthlycounter&#039; /etc/freeradius/3.0/sites-enabled/default
# sed -i &#039;408i\        noresetcounter&#039; /etc/freeradius/3.0/sites-enabled/default</pre>
<p>Restart o freeradius</p>
<pre class="remontti-code"># systemctl restart freeradius</pre>
<p>Aproveitando o Mk hAp do nosso Lab vou criar um hotspot server.</p>
<p>Com o comando /ip hotspot setup  demos um inicio a um "wizard" que fará toda as configurações automaticamente.</p>
<pre class="remontti-code">/ip hotspot setup  
Select interface to run HotSpot on 

hotspot interface: wlan1 #--&gt; Defina a interface que vai rodar o server
Set HotSpot address for interface 

local address of network: 10.5.50.1/24 #--&gt; Informe o IP/mascara da rede
masquerade network: yes #--&gt; Ativa o NAT já para a classe
Set pool for HotSpot addresses 

address pool of network: 10.5.50.2-10.5.50.254 #--&gt; Range da pool de IPs 
Select hotspot SSL certificate 

select certificate: no #--&gt; Sem certificado
Select SMTP server 

ip address of smtp server: 0.0.0.0 #--&gt; Pode deixar 0.0.0.0
Setup DNS configuration 

dns servers: 8.8.8.8,1.1.1.1 #--&gt; Servidores DNS
DNS name of local hotspot server 

dns name: hotspot.remontti.com.br #--&gt; Domínio qualquer (Se acessado irá mostrar o status)
Create local hotspot user 

name of local hotspot user: admin #--&gt; Vai ser necessário criar um usuario
password for the user: admin #--&gt; que vamos remover</pre>
<p>Remova o usuário admin criado no wizard, defina o porfile para usar o radius e na conexão com o radius marque hotspot.</p>
<pre class="remontti-code">/ip hotspot user remove admin 

/ip hotspot profile
set hsprof1 use-radius=yes

/radius
add address=180.255.0.3 secret=SEU_SECRET service=hotspot</pre>
<p>Caso você ira programar um sistema para fazer cadastro lembre-se de liberar o IP do servidor em walled-garden, assim não é necessário estar autenticado para o usuário acessar-la. Ex onde seria no mesmo serivor, irei permitir a consultas de DNS també.</p>
<pre class="remontti-code">/ip hotspot walled-garden ip
add action=accept disabled=no \
    dst-address=180.255.0.3 !dst-port !protocol !src-address
add action=accept disabled=no !dst-address \
    !dst-address-list dst-port=53 protocol=udp \
    !src-address !src-address-list</pre>
<p>Com nosso AP configurado acessamos:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/hotspot_mikrotik_login_radius.jpg" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/hotspot_mikrotik_login_radius.jpg" alt="" width="300" height="362" class="alignnone size-full wp-image-4209" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/hotspot_mikrotik_login_radius.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/hotspot_mikrotik_login_radius-249x300.jpg 249w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Vou tentar logar com tadeu@remontti.com.br com qualquer senha e visualizar no freeradius -X (debug) o que chega lá:</p>
<pre class="remontti-code-plain">(6)   NAS-Port-Type = Wireless-802.11
(6)   Calling-Station-Id = &quot;44:45:4D:45:4B:4D&quot;
(6)   Called-Station-Id = &quot;hotspot1&quot;
(6)   NAS-Port-Id = &quot;wlan1&quot;
(6)   User-Name = &quot;tadeu@remontti.com.br&quot;
(6)   NAS-Port = 2151677963
(6)   Acct-Session-Id = &quot;8040000b&quot;
(6)   Framed-IP-Address = 10.5.50.254
(6)   Mikrotik-Host-IP = 10.5.50.254
(6)   CHAP-Challenge = 0xaf9b9672cf915d68fd7244fc43035d7a
(6)   CHAP-Password = 0x647d5c258b16ca7841803bfb3b0d376b79
(6)   Service-Type = Login-User
(6)   WISPr-Logoff-URL = &quot;http://10.5.50.1/logout&quot;
(6)   NAS-Identifier = &quot;LAB&quot;
(6)   NAS-IP-Address = 180.255.1.3
</pre>
<p>Vimos que chegaram alguns valores interessantes, podemos fazer filtro com MAC <strong>Calling-Station-Id = "44:45:4D:45:4B:4D"</strong>, nome do serviço do hotspot <strong>Called-Station-Id = "hotspot1"</strong>, nome da interface, nome da interface <strong>NAS-Port-Id = "wlan1"</strong> entre outros.</p>
<p>Agora criamos nosso usuário na tabela radcheck.</p>
<pre class="remontti-code">INSERT INTO `radcheck` (`username`, `attribute`, `op`, `value`) VALUES
(&#039;tadeu@remontti.com.br&#039;, &#039;Cleartext-Password&#039;, &#039;:=&#039;, &#039;enIkMVfhq3WIqyKq&#039;);</pre>
<p>Vamos ao teste:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/login_ok.jpg" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/login_ok.jpg" alt="" width="300" height="296" class="alignnone size-full wp-image-4210" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/hotspot_radius.png" data-rel="lightbox-gallery-bW0bzedn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/hotspot_radius.png" alt="" width="795" height="255" class="alignnone size-full wp-image-4211" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/hotspot_radius.png 795w, https://blog.remontti.com.br/wp-content/uploads/2020/03/hotspot_radius-300x96.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/hotspot_radius-768x246.png 768w" sizes="auto, (max-width: 795px) 100vw, 795px" /></a></p>
<p>100% funcionando, agora que já conhecemos os outros comandos poremos prender o usuário ao  NAS-Port-Type para Wireless-802.11, criando um grupo, já vou criar 4 grupos "planos".<br />
1º - Plano 30 minutos ao diários - Velocidade 2Mb/8Mb<br />
3º - Plano 7 horas por mês - Velocidade 3Mb/10Mb<br />
2º - Plano 2 Horas unica - Velocidade 8Mb/20Mb<br />
4º - Plano Ilimitado - Velocidade 10Mb/30Mb</p>
<pre class="remontti-code">INSERT INTO `radgroupcheck` (`groupname`, `attribute`, `op`, `value`) VALUES
(&#039;30MIN-DIA&#039;, &#039;Max-Daily-Session&#039;, &#039;:=&#039;, &#039;1800&#039;),
(&#039;30MIN-DIA&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;),
(&#039;7h-MES&#039;, &#039;Max-Monthly-Session&#039;, &#039;:=&#039;, &#039;25200&#039;),
(&#039;7h-MES&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;),
(&#039;2h-UNICA&#039;, &#039;Max-All-Session&#039;, &#039;:=&#039;, &#039;7200&#039;),
(&#039;2h-UNICA&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;),
(&#039;ILIMITADO&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;);

INSERT INTO `radgroupreply` (`groupname`, `attribute`, `op`, `value`) VALUES
(&#039;30MIN-DIA&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;30MIN-DIA&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;2M/8M&#039;),
(&#039;7h-MES&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;7h-MES&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;3072K/10240K&#039;),
(&#039;2h-UNICO&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;2h-UNICO&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;8M/20240K&#039;),
(&#039;ILIMITADO&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;ILIMITADO&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;10M/30M&#039;);</pre>
<p>Agora vamos vincular o usuário a um grupo.</p>
<pre class="remontti-code">INSERT INTO `radusergroup` (`username`, `groupname`) VALUES 
(&#039;tadeu@remontti.com.br&#039;, &#039;30MIN-DIA&#039;);</pre>
<p>No caso dos planos com contabilidade de tempo ao término do seu tempo o login não conseguirá mais logar. Essas verificação de tempo é realizada na bom base na tabela radacct.</p>
<p>Um dica final é: Nunca use o mesmo freeradius para PPPoE e Hotspot, crie servidores separados, pois é muito fácil de bagunçar e qualquer inser feita indevida você pode está deixando uma brecha de segurança. </p>
<h3>Bônus - Logs: Framed-IPv6-Prefix e  Delegated-IPv6-Prefix</h3>
<p><strong><font color="red">Só realize isso em versões antigas do freeradius, a versão do freeradius no Debian 11 por exemplo já foram implementadas as tabelas para registro de IPv6.</font></strong></p>
<p>Em algumas autenticações (Ex accel-ppp) passam os valores de IPv6, para poder registrar os mesmo serão necessários criar os campos na radacct e ajustar o arquivo de queries.</p>
<pre class="remontti-code">mariadb -p -u radius</pre>
<p>Crie dois campos framedipv6prefix e delegatedipv6prefix</p>
<pre class="remontti-code">USE radius;
ALTER TABLE `radacct` 
ADD `framedipv6prefix` VARCHAR(41) NULL DEFAULT NULL AFTER `framedipaddress`, 
ADD `delegatedipv6prefix` VARCHAR(41) NULL DEFAULT NULL AFTER `framedipv6prefix`;</pre>
<p>Agora ajuste as queries em queries.conf</p>
<pre class="remontti-code"># vim /etc/freeradius/3.0/mods-config/sql/main/mysql/queries.conf</pre>
<p>Vou destacar as linhas que foram alteradas, ajuste seu arquivo: (linhas 208,262-264,292-294,331-333,382-384)</p>
<pre class="remontti-code"># -*- text -*-
#
#  main/mysql/queries.conf-- MySQL configuration for default schema (schema.sql)
#
#  $Id: 40508024d5fd6a319bbb85775c3fe1e8388be656 $

# Safe characters list for sql queries. Everything else is replaced
# with their mime-encoded equivalents.
# The default list should be ok
#safe_characters = &quot;@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /&quot;

#######################################################################
#  Connection config
#######################################################################
# The character set is not configurable. The default character set of
# the mysql client library is used. To control the character set,
# create/edit my.cnf (typically in /etc/mysql/my.cnf or /etc/my.cnf)
# and enter
# [client]
# default-character-set = utf8
#

#######################################################################
#  Query config:  Username
#######################################################################
# This is the username that will get substituted, escaped, and added
# as attribute &#039;SQL-User-Name&#039;. &#039;%{SQL-User-Name}&#039; should be used below
# everywhere a username substitution is needed so you you can be sure
# the username passed from the client is escaped properly.
#
# Uncomment the next line, if you want the sql_user_name to mean:
#
#	Use Stripped-User-Name, if it&#039;s there.
#	Else use User-Name, if it&#039;s there,
#	Else use hard-coded string &quot;DEFAULT&quot; as the user name.
#sql_user_name = &quot;%{%{Stripped-User-Name}:-%{%{User-Name}:-DEFAULT}}&quot;
#
sql_user_name = &quot;%{User-Name}&quot;

#######################################################################
# Default profile
#######################################################################
# This is the default profile. It is found in SQL by group membership.
# That means that this profile must be a member of at least one group
# which will contain the corresponding check and reply items.
# This profile will be queried in the authorize section for every user.
# The point is to assign all users a default profile without having to
# manually add each one to a group that will contain the profile.
# The SQL module will also honor the User-Profile attribute. This
# attribute can be set anywhere in the authorize section (ie the users
# file). It is found exactly as the default profile is found.
# If it is set then it will *overwrite* the default profile setting.
# The idea is to select profiles based on checks on the incoming packets,
# not on user group membership. For example:
# -- users file --
# DEFAULT	Service-Type == Outbound-User, User-Profile := &quot;outbound&quot;
# DEFAULT	Service-Type == Framed-User, User-Profile := &quot;framed&quot;
#
# By default the default_user_profile is not set
#
#default_user_profile = &quot;DEFAULT&quot;

#######################################################################
# NAS Query
#######################################################################
# This query retrieves the radius clients
#
# 0. Row ID (currently unused)
# 1. Name (or IP address)
# 2. Shortname
# 3. Type
# 4. Secret
# 5. Server
#######################################################################

client_query = &quot;\
	SELECT id, nasname, shortname, type, secret, server \
	FROM ${client_table}&quot;

#######################################################################
# Authorization Queries
#######################################################################
# These queries compare the check items for the user
# in ${authcheck_table} and setup the reply items in
# ${authreply_table}. You can use any query/tables
# you want, but the return data for each row MUST
# be in the following order:
#
# 0. Row ID (currently unused)
# 1. UserName/GroupName
# 2. Item Attr Name
# 3. Item Attr Value
# 4. Item Attr Operation
#######################################################################
# Use these for case sensitive usernames.

#authorize_check_query = &quot;\
#	SELECT id, username, attribute, value, op \
#	FROM ${authcheck_table} \
#	WHERE username = BINARY &#039;%{SQL-User-Name}&#039; \
#	ORDER BY id&quot;

#authorize_reply_query = &quot;\
#	SELECT id, username, attribute, value, op \
#	FROM ${authreply_table} \
#	WHERE username = BINARY &#039;%{SQL-User-Name}&#039; \
#	ORDER BY id&quot;

#
#  The default queries are case insensitive. (for compatibility with
#  older versions of FreeRADIUS)
#
authorize_check_query = &quot;\
	SELECT id, username, attribute, value, op \
	FROM ${authcheck_table} \
	WHERE username = &#039;%{SQL-User-Name}&#039; \
	ORDER BY id&quot;

authorize_reply_query = &quot;\
	SELECT id, username, attribute, value, op \
	FROM ${authreply_table} \
	WHERE username = &#039;%{SQL-User-Name}&#039; \
	ORDER BY id&quot;

#
#  Use these for case sensitive usernames.
#
#group_membership_query = &quot;\
#	SELECT groupname \
#	FROM ${usergroup_table} \
#	WHERE username = BINARY &#039;%{SQL-User-Name}&#039; \
#	ORDER BY priority&quot;

group_membership_query = &quot;\
	SELECT groupname \
	FROM ${usergroup_table} \
	WHERE username = &#039;%{SQL-User-Name}&#039; \
	ORDER BY priority&quot;

authorize_group_check_query = &quot;\
	SELECT id, groupname, attribute, \
	Value, op \
	FROM ${groupcheck_table} \
	WHERE groupname = &#039;%{${group_attribute}}&#039; \
	ORDER BY id&quot;

authorize_group_reply_query = &quot;\
	SELECT id, groupname, attribute, \
	value, op \
	FROM ${groupreply_table} \
	WHERE groupname = &#039;%{${group_attribute}}&#039; \
	ORDER BY id&quot;

#######################################################################
# Simultaneous Use Checking Queries
#######################################################################
# simul_count_query	- query for the number of current connections
#			- If this is not defined, no simultaneous use checking
#			- will be performed by this module instance
# simul_verify_query	- query to return details of current connections
#				for verification
#			- Leave blank or commented out to disable verification step
#			- Note that the returned field order should not be changed.
#######################################################################

simul_count_query = &quot;\
	SELECT COUNT(*) \
	FROM ${acct_table1} \
	WHERE username = &#039;%{SQL-User-Name}&#039; \
	AND acctstoptime IS NULL&quot;

simul_verify_query = &quot;\
	SELECT \
		radacctid, acctsessionid, username, nasipaddress, nasportid, framedipaddress, \
		callingstationid, framedprotocol \
	FROM ${acct_table1} \
	WHERE username = &#039;%{SQL-User-Name}&#039; \
	AND acctstoptime IS NULL&quot;

#######################################################################
# Accounting and Post-Auth Queries
#######################################################################
# These queries insert/update accounting and authentication records.
# The query to use is determined by the value of &#039;reference&#039;.
# This value is used as a configuration path and should resolve to one
# or more &#039;query&#039;s. If reference points to multiple queries, and a query
# fails, the next query is executed.
#
# Behaviour is identical to the old 1.x/2.x module, except we can now
# fail between N queries, and query selection can be based on any
# combination of attributes, or custom &#039;Acct-Status-Type&#039; values.
#######################################################################
accounting {
	reference = &quot;%{tolower:type.%{Acct-Status-Type}.query}&quot;

	# Write SQL queries to a logfile. This is potentially useful for bulk inserts
	# when used with the rlm_sql_null driver.
#	logfile = ${logdir}/accounting.sql

	column_list = &quot;\
		acctsessionid,		acctuniqueid,		username, \
		realm,			nasipaddress,		nasportid, \
		nasporttype,		acctstarttime,		acctupdatetime, \
		acctstoptime,		acctsessiontime, 	acctauthentic, \
		connectinfo_start,	connectinfo_stop, 	acctinputoctets, \
		acctoutputoctets,	calledstationid, 	callingstationid, \
		acctterminatecause,	servicetype,		framedprotocol, \
        framedipaddress,    framedipv6prefix,   delegatedipv6prefix&quot;

	type {
		accounting-on {
			#
			#  Bulk terminate all sessions associated with a given NAS
			#
			query = &quot;\
				UPDATE ${....acct_table1} \
				SET \
					acctstoptime = FROM_UNIXTIME(\
						%{integer:Event-Timestamp}), \
					acctsessiontime	= &#039;%{integer:Event-Timestamp}&#039; \
						- UNIX_TIMESTAMP(acctstarttime), \
					acctterminatecause = &#039;%{%{Acct-Terminate-Cause}:-NAS-Reboot}&#039; \
				WHERE acctstoptime IS NULL \
				AND nasipaddress   = &#039;%{NAS-IP-Address}&#039; \
				AND acctstarttime &lt;= FROM_UNIXTIME(\
					%{integer:Event-Timestamp})&quot;
		}

		accounting-off {
			query = &quot;${..accounting-on.query}&quot;
		}

		start {
			#
			#  Insert a new record into the sessions table
			#
			query = &quot;\
				INSERT INTO ${....acct_table1} \
					(${...column_list}) \
				VALUES \
					(&#039;%{Acct-Session-Id}&#039;, \
					&#039;%{Acct-Unique-Session-Id}&#039;, \
					&#039;%{SQL-User-Name}&#039;, \
					&#039;%{Realm}&#039;, \
					&#039;%{NAS-IP-Address}&#039;, \
					&#039;%{%{NAS-Port-ID}:-%{NAS-Port}}&#039;, \
					&#039;%{NAS-Port-Type}&#039;, \
					FROM_UNIXTIME(%{integer:Event-Timestamp}), \
					FROM_UNIXTIME(%{integer:Event-Timestamp}), \
					NULL, \
					&#039;0&#039;, \
					&#039;%{Acct-Authentic}&#039;, \
					&#039;%{Connect-Info}&#039;, \
					&#039;&#039;, \
					&#039;0&#039;, \
					&#039;0&#039;, \
					&#039;%{Called-Station-Id}&#039;, \
					&#039;%{Calling-Station-Id}&#039;, \
					&#039;&#039;, \
					&#039;%{Service-Type}&#039;, \
					&#039;%{Framed-Protocol}&#039;, \
					&#039;%{Framed-IP-Address}&#039;, \
                    &#039;%{Framed-IPv6-Prefix}&#039;, \
                    &#039;%{Delegated-IPv6-Prefix}&#039;)&quot;

			#
			#  Key constraints prevented us from inserting a new session,
			#  use the alternate query to update an existing session.
			#
			query = &quot;\
				UPDATE ${....acct_table1} SET \
					acctstarttime	= FROM_UNIXTIME(%{integer:Event-Timestamp}), \
					acctupdatetime	= FROM_UNIXTIME(%{integer:Event-Timestamp}), \
					connectinfo_start = &#039;%{Connect-Info}&#039; \
				WHERE AcctUniqueId = &#039;%{Acct-Unique-Session-Id}&#039;&quot;
		}

		interim-update {
			#
			#  Update an existing session and calculate the interval
			#  between the last data we received for the session and this
			#  update. This can be used to find stale sessions.
			#
			query = &quot;\
				UPDATE ${....acct_table1} \
				SET \
					acctupdatetime  = (@acctupdatetime_old:=acctupdatetime), \
					acctupdatetime  = FROM_UNIXTIME(\
						%{integer:Event-Timestamp}), \
					acctinterval    = %{integer:Event-Timestamp} - \
						UNIX_TIMESTAMP(@acctupdatetime_old), \
					framedipaddress = &#039;%{Framed-IP-Address}&#039;, \
                    framedipv6prefix = &#039;%{Framed-IPv6-Prefix}&#039;, \
                    delegatedipv6prefix = &#039;%{Delegated-IPv6-Prefix}&#039;, \
					acctsessiontime = %{%{Acct-Session-Time}:-NULL}, \
					acctinputoctets = &#039;%{%{Acct-Input-Gigawords}:-0}&#039; \
						&lt;&lt; 32 | &#039;%{%{Acct-Input-Octets}:-0}&#039;, \
					acctoutputoctets = &#039;%{%{Acct-Output-Gigawords}:-0}&#039; \
						&lt;&lt; 32 | &#039;%{%{Acct-Output-Octets}:-0}&#039; \
				WHERE AcctUniqueId = &#039;%{Acct-Unique-Session-Id}&#039;&quot;

			#
			#  The update condition matched no existing sessions. Use
			#  the values provided in the update to create a new session.
			#
			query = &quot;\
				INSERT INTO ${....acct_table1} \
					(${...column_list}) \
				VALUES \
					(&#039;%{Acct-Session-Id}&#039;, \
					&#039;%{Acct-Unique-Session-Id}&#039;, \
					&#039;%{SQL-User-Name}&#039;, \
					&#039;%{Realm}&#039;, \
					&#039;%{NAS-IP-Address}&#039;, \
					&#039;%{%{NAS-Port-ID}:-%{NAS-Port}}&#039;, \
					&#039;%{NAS-Port-Type}&#039;, \
					FROM_UNIXTIME(%{integer:Event-Timestamp} - %{%{Acct-Session-Time}:-0}), \
					FROM_UNIXTIME(%{integer:Event-Timestamp}), \
					NULL, \
					%{%{Acct-Session-Time}:-NULL}, \
					&#039;%{Acct-Authentic}&#039;, \
					&#039;%{Connect-Info}&#039;, \
					&#039;&#039;, \
					&#039;%{%{Acct-Input-Gigawords}:-0}&#039; &lt;&lt; 32 | &#039;%{%{Acct-Input-Octets}:-0}&#039;, \
					&#039;%{%{Acct-Output-Gigawords}:-0}&#039; &lt;&lt; 32 | &#039;%{%{Acct-Output-Octets}:-0}&#039;, \
					&#039;%{Called-Station-Id}&#039;, \
					&#039;%{Calling-Station-Id}&#039;, \
					&#039;&#039;, \
					&#039;%{Service-Type}&#039;, \
					&#039;%{Framed-Protocol}&#039;, \
					&#039;%{Framed-IP-Address}&#039;, \
                    &#039;%{Framed-IPv6-Prefix}&#039;, \
                    &#039;%{Delegated-IPv6-Prefix}&#039;)&quot;
		}

		stop {
			#
			#  Session has terminated, update the stop time and statistics.
			#
			query = &quot;\
				UPDATE ${....acct_table2} SET \
					acctstoptime	= FROM_UNIXTIME(\
						%{integer:Event-Timestamp}), \
					acctsessiontime	= %{%{Acct-Session-Time}:-NULL}, \
					acctinputoctets	= &#039;%{%{Acct-Input-Gigawords}:-0}&#039; \
						&lt;&lt; 32 | &#039;%{%{Acct-Input-Octets}:-0}&#039;, \
					acctoutputoctets = &#039;%{%{Acct-Output-Gigawords}:-0}&#039; \
						&lt;&lt; 32 | &#039;%{%{Acct-Output-Octets}:-0}&#039;, \
					acctterminatecause = &#039;%{Acct-Terminate-Cause}&#039;, \
					connectinfo_stop = &#039;%{Connect-Info}&#039; \
				WHERE AcctUniqueId = &#039;%{Acct-Unique-Session-Id}&#039;&quot;

			#
			#  The update condition matched no existing sessions. Use
			#  the values provided in the update to create a new session.
			#
			query = &quot;\
				INSERT INTO ${....acct_table2} \
					(${...column_list}) \
				VALUES \
					(&#039;%{Acct-Session-Id}&#039;, \
					&#039;%{Acct-Unique-Session-Id}&#039;, \
					&#039;%{SQL-User-Name}&#039;, \
					&#039;%{Realm}&#039;, \
					&#039;%{NAS-IP-Address}&#039;, \
					&#039;%{%{NAS-Port-ID}:-%{NAS-Port}}&#039;, \
					&#039;%{NAS-Port-Type}&#039;, \
					FROM_UNIXTIME(%{integer:Event-Timestamp} - %{%{Acct-Session-Time}:-0}), \
					FROM_UNIXTIME(%{integer:Event-Timestamp}), \
					FROM_UNIXTIME(%{integer:Event-Timestamp}), \
					%{%{Acct-Session-Time}:-NULL}, \
					&#039;%{Acct-Authentic}&#039;, \
					&#039;&#039;, \
					&#039;%{Connect-Info}&#039;, \
					&#039;%{%{Acct-Input-Gigawords}:-0}&#039; &lt;&lt; 32 | &#039;%{%{Acct-Input-Octets}:-0}&#039;, \
					&#039;%{%{Acct-Output-Gigawords}:-0}&#039; &lt;&lt; 32 | &#039;%{%{Acct-Output-Octets}:-0}&#039;, \
					&#039;%{Called-Station-Id}&#039;, \
					&#039;%{Calling-Station-Id}&#039;, \
					&#039;%{Acct-Terminate-Cause}&#039;, \
					&#039;%{Service-Type}&#039;, \
					&#039;%{Framed-Protocol}&#039;, \
					&#039;%{Framed-IP-Address}&#039;, \
                    &#039;%{Framed-IPv6-Prefix}&#039;, \
                    &#039;%{Delegated-IPv6-Prefix}&#039;)&quot;
		}
	}
}


#######################################################################
# Authentication Logging Queries
#######################################################################
# postauth_query	- Insert some info after authentication
#######################################################################

post-auth {
	# Write SQL queries to a logfile. This is potentially useful for bulk inserts
	# when used with the rlm_sql_null driver.
#	logfile = ${logdir}/post-auth.sql

	query =	&quot;\
		INSERT INTO ${..postauth_table} \
			(username, pass, reply, authdate) \
		VALUES ( \
			&#039;%{SQL-User-Name}&#039;, \
			&#039;%{%{User-Password}:-%{Chap-Password}}&#039;, \
			&#039;%{reply:Packet-Type}&#039;, \
			&#039;%S&#039;)&quot;
}</pre>
<p>Espero que tenha aprendido um pouco mais de como o FreeRadius funciona. </p>
<p>Curtiu o conteúdo? Quer me ajudar? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento! (Esse deu trabalho!)</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Abraço!</p>
<p>Fontes:<br />
<a href="https://wiki.freeradius.org/guide/SQL-HOWTO" rel="noopener noreferrer" target="_blank">https://wiki.freeradius.org/guide/SQL-HOWTO</a><br />
<a href="https://wiki.freeradius.org/modules/Rlm_sql" rel="noopener noreferrer" target="_blank">https://wiki.freeradius.org/modules/Rlm_sql</a><br />
<a href="https://wiki.freeradius.org/modules/Rlm_sqlippool" rel="noopener noreferrer" target="_blank">https://wiki.freeradius.org/modules/Rlm_sqlippool</a><br />
<a href="https://wiki.freeradius.org/modules/Rlm_sqlcounter" rel="noopener noreferrer" target="_blank">https://wiki.freeradius.org/modules/Rlm_sqlcounter</a></p>
<p>O post <a href="https://blog.remontti.com.br/4085">Entendendo o funcionamento do FreeRadius e fazendo autenticações PPPoE, Hotspot e Wireless PSK/EAP (Lab Mikrotik/Ubiquiti)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/4085/feed</wfw:commentRss>
			<slash:comments>16</slash:comments>
		
		
			</item>
		<item>
		<title>Como entregar IPv6+IPv4 no Mikrotik/RouterOS através de PPPoE/DHCPv6 PD e registrando os logs em um banco de dados</title>
		<link>https://blog.remontti.com.br/3931</link>
					<comments>https://blog.remontti.com.br/3931#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 22 Jan 2020 02:28:36 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[Delegated-IPv6-Prefix]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[logs]]></category>
		<category><![CDATA[ppp]]></category>
		<category><![CDATA[pppoe]]></category>
		<category><![CDATA[Prefix-Delegated]]></category>
		<category><![CDATA[routeos]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3931</guid>

					<description><![CDATA[<p>Neste tutorial vamos aprender como entregar IPv6 para clientes finais utilizando RouterOS/Mikrotik (Concentrador PPPoE) e registrar os logs dos prefixos IPv6 entregue na WAN (Remote IPv6 Prefix Pool) e na LAN (DHCPv6 PD Pool).&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3931">Como entregar IPv6+IPv4 no Mikrotik/RouterOS através de PPPoE/DHCPv6 PD e registrando os logs em um banco de dados</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/banner_ipv6_log_mk.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-3950" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/banner_ipv6_log_mk.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2020/01/banner_ipv6_log_mk-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/banner_ipv6_log_mk-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /><br />
Neste tutorial vamos aprender como entregar IPv6 para clientes finais utilizando RouterOS/Mikrotik (Concentrador PPPoE) e registrar os logs dos prefixos IPv6 entregue na WAN (Remote IPv6 Prefix Pool) e na LAN (DHCPv6 PD Pool).</p>
<p>Ainda hoje encontramos alguns bugs no Mikrotik, e um dos maiores motivos de buscar essa solução foi que freeradius não registra os logs de IPv6 PD (Mikrotik), o IPv6 que vai se configurar na LAN cliente (o mais importante a ser guardado), seria muito mais fácil para muitos sistemas se implementassem o Delegated-IPv6-Prefix, mas já faz 6 anos (jan/2020) que é motivo de discussão lá no <a href="https://forum.mikrotik.com/viewtopic.php?t=89443" rel="noopener noreferrer" target="_blank">forum</a>. E para variar a solução é dar aquele jeitinho&#8230;. (Popular gambiarra) <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Para montar esse servidor de logs você precisa apenas de um serviço WEB (Apache/NGINX) PHP7+ e um banco de dados MySQL/MariaDB.</p>
<p><strong>Requisito para montar um servidor do zero</strong>:<br />
<a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">&#8211; Debian 10 Stretch / Instalação Limpa</a><br />
<a href="https://blog.remontti.com.br/3006" rel="noopener noreferrer" target="_blank">&#8211; Como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP”</a></p>
<p>Você precisa ter um pouquinho de conhecimento em IPv6 e saber dividir as subclasses. Recomendo dar uma olhadinha no <a href="http://ipv6.nic.br/" rel="noopener noreferrer" target="_blank">http://ipv6.nic.br/</a> lá irá encontrar cursos do NIC.BR.</p>
<p>Recomendo você instalar uma calculadora de IPv6. Aqui vai uma calculador muito boa que uso no dia a dia.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/ip6calc.png" data-rel="lightbox-gallery-loL7ELj4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/ip6calc.png" alt="" width="1680" height="1008" class="alignnone size-full wp-image-3933" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/ip6calc.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/01/ip6calc-300x180.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/ip6calc-1024x614.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/01/ip6calc-768x461.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/01/ip6calc-1536x922.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<pre class="remontti-code"># apt install wget python-ipaddr
# wget https://blog.remontti.com.br/arquivos/Home/ip6calc -O /bin/ip6calc
# chmod +x /bin/ip6calc</pre>
<p>Para fazer o calculo use ex.:</p>
<pre class="remontti-code"># ip6calc 2001:db8:abcd::/48</pre>
<p>Para esse projeto desenvolvi em PHP alguns arquivos onde fica &#8220;ouvido&#8221; os logs que o Mikrotik irá enviar e uma telinha simples para fazer buscas dos IPs nesse banco de dados. Já disponibilizei ele lá no <a href="https://github.com/remontti/LogIPv6RouterOS" rel="noopener noreferrer" target="_blank">github</a>.</p>
<p>Com seu servidor web configurado, <a href="https://blog.remontti.com.br/3464" rel="noopener noreferrer" target="_blank">seria bacana criar um host no seu dns e configurar nesse seu servdor web um domínio virtual</a> ex.: log6.seudominio.com.br onde você irá jogar os arquivos do projeto. Mas como muitos não tem essa facilidade vou tentar deixar aqui a forma mais simples, que é jogar os arquivos no diretório padrão do apache &#8220;/var/www/html&#8221;, assim qualquer um consegue montar <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Acessamos o diretório base então</p>
<pre class="remontti-code"># cd /var/www/html
# wget https://github.com/remontti/LogIPv6RouterOS/archive/master.zip
# apt install unzip
# unzip master.zip 
# mv LogIPv6RouterOS-master logs6
# cd logs6</pre>
<p>Por segurança crie/edite um .htaccess para proteger que apenas determinados IPs tenham acesso. (apensar de ter um token)</p>
<pre class="remontti-code"># vim .htaccess</pre>
<p>Altere pelo IPs que você deseja que tenham acesso. (Seus router e seu NOC)</p>
<pre class="remontti-code">Options -Indexes
&lt;RequireAll&gt;
    &lt;RequireAny&gt;
        Require ip 200.200.200.0/24
        Require ip 192.168.0.0/26
        Require ip 2001:db8::/32
    &lt;/RequireAny&gt;
&lt;/RequireAll&gt;</pre>
<p>Precisaremos criar um banco de dados e nossa tabela. Para gerar suas senhas/token recomendo <a href="https://senhasegura.remontti.com.br/" rel="noopener noreferrer" target="_blank">https://senhasegura.remontti.com.br/</a> e gerar algo aleatório.</p>
<pre class="remontti-code"># mariadb -p</pre>
<p>Crie o banco de dados, não esqueça de alterar a senha (SUA_SENHA_DA_CONEXAO)</p>
<pre class="remontti-code">CREATE DATABASE logs6;
GRANT ALL PRIVILEGES ON logs6.* TO &#039;logs6&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA_DA_CONEXAO&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Importe a tabela utilizando a senha criada anteriormente</p>
<pre class="remontti-code"># mariadb -u logs6 logs6 &lt; logs6_mikrotik.sql -p</pre>
<p>Agora altere no arquivo <strong>config.php</strong> o <strong>token</strong> para validar seu envio de dados e acessar o interface simples que desenvolvi para buscas, e a senha de conexão com banco (db_password).</p>
<pre class="remontti-code">
?php
/* Your security token  */
$token = &#039;xxxxxxxxxxxxx&#039;;

/* Set langage */
// Portugês Brasil: pt-br
// English:  en
$lang = &#039;pt-br&#039;;

/* Db conect */
$db_host = &#039;localhost&#039;;
$db_user = &#039;logs6&#039;;
$db_password = &#039;SUA_SENHA_DA_CONEXAO&#039;;
$db_name = &#039;logs6&#039;;
</pre>
<p>Agora acesse sua <strong>http(s)://URL/logs6/</strong>. Você deve receber a seguinte tela.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/mikrotik_logs_ipv6.png" data-rel="lightbox-gallery-loL7ELj4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/mikrotik_logs_ipv6.png" alt="" width="965" height="243" class="alignnone size-full wp-image-3971" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/mikrotik_logs_ipv6.png 965w, https://blog.remontti.com.br/wp-content/uploads/2020/01/mikrotik_logs_ipv6-300x76.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/mikrotik_logs_ipv6-768x193.png 768w" sizes="auto, (max-width: 965px) 100vw, 965px" /></a></p>
<p>Já pode autenticar com seu token (ainda não terá logs, então não adianta querer fazer buscas rsrsrs)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/mikrotik_logs_ipv6_search.png" data-rel="lightbox-gallery-loL7ELj4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/mikrotik_logs_ipv6_search.png" alt="" width="991" height="253" class="alignnone size-full wp-image-3974" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/mikrotik_logs_ipv6_search.png 991w, https://blog.remontti.com.br/wp-content/uploads/2020/01/mikrotik_logs_ipv6_search-300x77.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/mikrotik_logs_ipv6_search-768x196.png 768w" sizes="auto, (max-width: 991px) 100vw, 991px" /></a></p>
<p>Se alguém tiver ideias melhores/criticas todas são bem vindas, sinta-se a vontade para criar forks do projeto. </p>
<p>Para entregar IPv6 em seu Mk é claro que  precisa ter conectividade v6 em seu concentrador PPPoE (Não vou entrar em detalhes nessa parte pois entraria na questão roteamento da sua rede, mas se vale de ajuda como dica um iBGP/OSPF resolve fácil)</p>
<p>Servidor preparado para receber os logs vamos ao routerOS/Mikrotik. Você precisará criar duas Pool, uma para <strong>WAN</strong> outra para a <strong>LAN</strong>, como recomendação do nic.br para LAN do cliente devemos enviar um prefixo /56 (mas isso não é uma regra). A calcular pode ajudar muito nessa parte. No meu exemplo vou reservar um <strong>prefixo /48</strong> para entregar <strong>prefixos /64 na WAN</strong> (65.536 prefixos/64), e um <strong>prefixo /45</strong> entregando <strong>prefixos /56</strong> oque daria 2.048 prefixos (clientes).</p>
<p>Ex 2001:db8:1000::/48 (WAN)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/calc1.png" data-rel="lightbox-gallery-loL7ELj4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/calc1.png" alt="" width="1568" height="814" class="alignnone size-full wp-image-3939" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/calc1.png 1568w, https://blog.remontti.com.br/wp-content/uploads/2020/01/calc1-300x156.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/calc1-1024x532.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/01/calc1-768x399.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/01/calc1-1536x797.png 1536w" sizes="auto, (max-width: 1568px) 100vw, 1568px" /></a></p>
<p>Ex 2001:db8:2000::/45 (LAN)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/calc2.png" data-rel="lightbox-gallery-loL7ELj4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/calc2.png" alt="" width="1571" height="831" class="alignnone size-full wp-image-3940" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/calc2.png 1571w, https://blog.remontti.com.br/wp-content/uploads/2020/01/calc2-300x159.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/calc2-1024x542.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/01/calc2-768x406.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/01/calc2-1536x812.png 1536w" sizes="auto, (max-width: 1571px) 100vw, 1571px" /></a></p>
<p><strong>IPv6 -> Pool</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/pool_v6.png" data-rel="lightbox-gallery-loL7ELj4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/pool_v6.png" alt="" width="538" height="182" class="alignnone size-full wp-image-3942" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/pool_v6.png 538w, https://blog.remontti.com.br/wp-content/uploads/2020/01/pool_v6-300x101.png 300w" sizes="auto, (max-width: 538px) 100vw, 538px" /></a></p>
<p>Alteramos no profile. Menu PPP aba Profiles.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_1.png" data-rel="lightbox-gallery-loL7ELj4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_1.png" alt="" width="1138" height="658" class="alignnone size-full wp-image-3943" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_1.png 1138w, https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_1-300x173.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_1-1024x592.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_1-768x444.png 768w" sizes="auto, (max-width: 1138px) 100vw, 1138px" /></a><br />
<strong>Remote IPv6 Prefix Pool</strong> selecione sua <strong>pool_wan</strong> e <strong>DHCPv6 PD Pool </strong>sua <strong>pool_lan</strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_2.png" data-rel="lightbox-gallery-loL7ELj4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_2.png" alt="" width="546" height="250" class="alignnone size-full wp-image-3944" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_2.png 546w, https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_2-300x137.png 300w" sizes="auto, (max-width: 546px) 100vw, 546px" /></a><br />
Na abra Protocol, Use IPv6 selecione yes.</p>
<p>Vamos ao pulo do gato na aba <strong>Scripts</strong>. A ideia aqui é toda vez que um  PPPoE conectar ou desconectar ele execute um script. Vai ser necessário que você altere o TOKEN que você configurou lá no <strong>config.php</strong>, informe a URL (URLUP) correta que encontrará seu arquivo log6.php e em <strong>checkconnection</strong> informe o IP do seu servidor (explico o motivo a seguir).</p>
<pre class="remontti-code">:global TOKEN &quot;xxxxxxxxxxxxxxxx&quot;;
:global URLUP &quot;http://logs6.remontti.com.br/log6.php&quot;;
:global checkconnection &quot;200.200.200.200&quot;;</pre>
<p>A lógica é: Antes de tentar enviar as informações/valores (via post ao log6.php) fazer uma verificação se a conexão exite com o servidor de log, isso foi necessário ao simular uma "queda de energia", as vezes ele pode autenticar antes de conseguir uma conexão (se seu o usuários estiver no routerOS e ai perdemos todos os logs) nesse caso ele fica aguardando por até 5 min na tentativa (ping ao ip checkconnection) antes prosseguir, caso exista uma conexão (checkconnection) então prossegue com o script coletando as informações. </p>
<p>Eu aproveitei coletar IPv4 como <strong>localAddr</strong> (NAS), <strong>remoteAddr</strong> (IPv4 entregue ao cliente) isso vai facilitar também em uma analise se você quiser bater com os dados do freeradius (radacct), já aproveitei também para capturar o <strong>callerId</strong> (MAC), serviço PPP <strong>calledId</strong>. Acredito que com essas informações podem ser uteis para outros fins. Seguindo o script todo o PPPoE que subir ele vai criar um prefixo (WAN) <strong>RemoteIPv6</strong> e em seguida precisei fazer um while que setei 60 seg para que a cada segundo ele tente identificar em <strong>/ipv6 dhcp-server binding</strong> se o cliente solicitou o prefixo que ele vai auto se configurar em sua LAN, passando por esses requisitos ele irai gerar um LOG (<a href="https://blog.remontti.com.br/2674" rel="noopener noreferrer" target="_blank">que você também pode estar salvando em um servidor de log remoto</a>) e finalizando fará um fetch com os dados do binding caso ele consiga ou enviará null para a URL e assim o servidor salva-lo no banco de dados. Você verá dois logs na tela de logs, um azul quando uma conexão subir e um vermelho quando desconectar, se você desejar não ter esses logs é só remover as linha "<em>log warning message=..... / :log error message=.....</em>"</p>
<p>Acesse PPP vá até a aba profile e configure os script do profile. Não esqueça de alterar as variáveis globais.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_ipv6_mikrotik_script.png" data-rel="lightbox-gallery-loL7ELj4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_ipv6_mikrotik_script-300x171.png" alt="" width="300" height="171" class="alignnone size-medium wp-image-3935" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_ipv6_mikrotik_script-300x171.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_ipv6_mikrotik_script-768x439.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/01/profile_ipv6_mikrotik_script.png 814w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
<strong>On UP</strong></p>
<pre class="remontti-code">{
  :global TOKEN &quot;xxxxxxxxxxxxxxxx&quot;;
  :global URLUP &quot;http://________________/logs6/log6.php&quot;;
  :global checkconnection &quot;200.200.200.200&quot;;
  :local ii 0;
  :local tt 300; # Aguarda até 5min para tentar 
  while ( $ii &lt; $tt &#038;&#038; ([/ping $checkconnection count=1]=0) ) do={
    :put $ii
    :set $ii ($ii + 1)
    :delay delay-time=1s
    :log error &quot;Awaiting connection ... $checkconnection&quot;;
  }
  :local localAddr $&quot;local-address&quot;
  :local remoteAddr $&quot;remote-address&quot;
  :local callerId $&quot;caller-id&quot;
  :local calledId $&quot;called-id&quot;
  :local interfaceName [/interface get $interface name]
  :local RemoteIPv6 [/ipv6 nd prefix get value-name=prefix [find interface=$interfaceName]]
  :local i 0;
  :local x 1;  
  :local t 60; # Segundos aguardando ipv6 ser configurado no cliente
  while ($i &lt; $t &#038;&#038; [ :len [/ipv6 dhcp-server binding find server=$interfaceName] ] &lt; $x) do={
    :put $i
    :set $i ($i + 1)
    :delay delay-time=1s
  }
  if ($i = $t) do={
    :log warning message=&quot;UP: $user | $callerId | $calledId | $remoteAddr | $localAddr | $RemoteIPv6 | NULL&quot;
    /tool fetch url=&quot;$URLUP&quot; http-data=&quot;action=i&#038;token=$TOKEN&#038;user=$user&#038;mac=$callerId&#038;nas=$localAddr&#038;service=$calledId&#038;ipv4=$remoteAddr&#038;remoteipv6=$RemoteIPv6&quot; http-method=post
  } else={
    :local DHCPv6PD [/ipv6 dhcp-server binding get value-name=address [find server=$interfaceName]]
    :log warning message=&quot;UP: $user | $callerId | $calledId | $remoteAddr | $localAddr | $RemoteIPv6 | $DHCPv6PD&quot;
    /tool fetch url=&quot;$URLUP&quot; http-data=&quot;action=i&#038;token=$TOKEN&#038;user=$user&#038;mac=$callerId&#038;nas=$localAddr&#038;service=$calledId&#038;ipv4=$remoteAddr&#038;remoteipv6=$RemoteIPv6&#038;dhcpv6pd=$DHCPv6PD&quot; http-method=post
  }
  file remove log6.php
}</pre>
<p>E ao desconectar vamos enviar ao servidor que o mesmo descontou.<br />
<strong>On Down</strong></p>
<pre class="remontti-code">{
  :global TOKEN &quot;xxxxxxxxxxxxxxxx&quot;
  :global URLDOWN &quot;http://________________/logs6/log6.php&quot;
  :local localAddr $&quot;local-address&quot;
  :local callerId $&quot;caller-id&quot;
  /tool fetch url=&quot;$URLDOWN&quot; http-data=&quot;action=u&amp;token=$TOKEN&amp;user=$user&amp;mac=$callerId&amp;nas=$localAddr&quot; http-method=post
  :log warning message=&quot;DOWN: $user | $callerId | $localAddr&quot;
  file remove log6.php
}</pre>
<p>Para concluir em IPv6 -> ND<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/ipv6_nd.png" alt="" width="668" height="472" class="alignnone size-full wp-image-3957" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/ipv6_nd.png 668w, https://blog.remontti.com.br/wp-content/uploads/2020/01/ipv6_nd-300x212.png 300w" sizes="auto, (max-width: 668px) 100vw, 668px" /><br />
Marque todas as opções.</p>
<p>No menu <strong>IP -> DNS </strong>também informe os DNS IPv6. Só assim o cliente irá aprender um DNSv6 (<em>Advertise DNS</em>)</p>
<p>Agora todo PPPoE que autenticar um log será registrado, o legal aqui é que se alguém não utiliza Radius poderá também ter um log <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>No arquivo log6.php que recebe os logs sempre que um usuário conectar ele irá verificar se não existe uma conexão em aberta, pois em casos de quedas de energia não vai existir tempo para ele informar que o pppoe desconectou, então ele fecha a conexão com a hora da nova conexão, logo esse IP pode ter sido utilizado por algum outro usuário, neste caso ele registra a hora que fechou a conexão com "falha" (<strong>failure</strong>), para no caso de uma investigação você observar se o mesmo ip não teve algum outro usuário que usou na horário solicitado.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/logs_ipv6_remontti.png" data-rel="lightbox-gallery-loL7ELj4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/logs_ipv6_remontti.png" alt="" width="1661" height="398" class="alignnone size-full wp-image-3946" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/logs_ipv6_remontti.png 1661w, https://blog.remontti.com.br/wp-content/uploads/2020/01/logs_ipv6_remontti-300x72.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/logs_ipv6_remontti-1024x245.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/01/logs_ipv6_remontti-768x184.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/01/logs_ipv6_remontti-1536x368.png 1536w" sizes="auto, (max-width: 1661px) 100vw, 1661px" /></a></p>
<p>Pelo phpMyAdmin também fica muito fácil de fazer buscas.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/phpmyadmin_log_ipv6.png" data-rel="lightbox-gallery-loL7ELj4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/phpmyadmin_log_ipv6-300x178.png" alt="" width="300" height="178" class="alignnone size-medium wp-image-3959" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/phpmyadmin_log_ipv6-300x178.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/phpmyadmin_log_ipv6-1024x607.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/01/phpmyadmin_log_ipv6-768x455.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/01/phpmyadmin_log_ipv6.png 1408w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Para quem deseja bloquear um cliente IPv6, uma solução é no Router criar outra Pool6 com uma classe "invalida" por exemplo 2001:db8:6666::/48, e no freeradius usar o attibute <strong>Mikrotik-Delegated-IPv6-Pool</strong>, pode ser na tabela radreply (dizendo para qual usuário) ou para um  grupo de configurações (radgroupreply) "plano".</p>
<p>Mikrotik:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/drop_ipv6.png" data-rel="lightbox-gallery-loL7ELj4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/drop_ipv6.png" alt="" width="544" height="292" class="alignnone size-full wp-image-3963" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/drop_ipv6.png 544w, https://blog.remontti.com.br/wp-content/uploads/2020/01/drop_ipv6-300x161.png 300w" sizes="auto, (max-width: 544px) 100vw, 544px" /></a></p>
<p>Freeradius<br />
Ex.: <strong>radreply </strong></p>
<pre class="remontti-code">INSERT INTO `radreply` (`username`, `attribute`, `op`, `value`) VALUES
(&#039;nome_user&#039;, &#039;Mikrotik-Delegated-IPv6-Pool&#039;, &#039;=&#039;, &#039;ipv6_drop&#039;);</pre>
<p>Ex.: <strong>radgroupreply</strong></p>
<pre class="remontti-code">INSERT INTO `radgroupreply` (`groupname`, `attribute`, `op`, `value`) VALUES
(&#039;PLANO_BLOQUEADO&#039;, &#039;Mikrotik-Delegated-IPv6-Pool&#039;, &#039;=&#039;, &#039;ipv6_drop&#039;);</pre>
<p>Desta forma o routerOS interpretará o nome da pool pelo atriburo Mikrotik-Delegated-IPv6-Pool, e assim que o cliente logar ele não pegará do bloco válido. <em>Até poderia usar uma válido e bloquear no firewall (mas isso é coisa de sistema amador #ficadica).</em>  </p>
<p>Se seu freradius é antigo (v2.x) precisará ter o <a href="https://wiki.mikrotik.com/wiki/Manual:RADIUS_Client/vendor_dictionary" rel="noopener noreferrer" target="_blank">dictionary</a> atualizado.</p>
<p>Vou deixar um exemplo de como configurar um pppoe cliente em um mikrotik, já que percebi um bug quando ele precisa renovar seu IPv6.</p>
<pre class="remontti-code">/interface pppoe-client
add add-default-route=yes disabled=no interface=ether1 name=pppoe-out1 password=SENHA use-peer-dns=yes user=SENHA

/ipv6 dhcp-client
add interface=pppoe-out1 pool-name=DHCPv6PD pool-prefix-length=56 request=prefix

/ipv6 address
add advertise=yes from-pool=DHCPv6PD interface=INTERFACE_LAN

/ppp profile
set *0 on-up=&quot;{\r\
    \n  /delay delay-time=5s\r\
    \n  /ipv6 dhcp-client renew numbers=0\r\
    \n  /delay delay-time=2s\r\
    \n  /ipv6 dhcp-client renew numbers=0\r\
    \n}&quot;
/ipv6 firewall mangle
add action=change-mss chain=forward new-mss=clamp-to-pmtu passthrough=yes \
    protocol=tcp tcp-flags=syn
</pre>
<p>Gambiarazinha no profile para renovar o IP sem dor de cabeça toda vez que ele autenticar (bugs)</p>
<pre class="remontti-code">{
  /delay delay-time=5s
  /ipv6 dhcp-client renew numbers=0
  /delay delay-time=2s
  /ipv6 dhcp-client renew numbers=0
}</pre>
<p>Gostou? Espero que você consiga implementar seu IPv6 e esteja seguro com os logs armazenado! </p>
<p>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!<br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<h3> RouterOS v7</h3>
<p>Descomente os <strong># :log warning "DEBUG>...."</strong> se precisar debugar o script, ou remova para deixar mais enxuto o script.</p>
<p><strong>UP</strong></p>
<pre class="remontti-code-blue">
{
  # :log warning &quot;DEBUG&gt; UP: Iniciando o script logs6&quot;;
  :global TOKEN &quot;xxxxxxxxxxxxxxxx&quot;;
  :global URLUP &quot;http://logs6.remontti.com.br/log6.php&quot;;
  :global checkconnection &quot;10.0.0.1&quot;;
  :local ii 0;
  :local tt 60;
  while ( $ii &lt; $tt &#038;&#038; ([/ping $checkconnection count=1]=0) ) do={
    :put $ii
    :set $ii ($ii + 1)
    :delay delay-time=1s
    :log error &quot;Aguardando conexao com servidor... $checkconnection&quot;;
  }
  :local localAddr $&quot;local-address&quot;
  # :log warning &quot;DEBUG&gt; localAddr = $localAddr&quot;;
  :local remoteAddr $&quot;remote-address&quot;
  # :log warning &quot;DEBUG&gt; remoteAddr = $remoteAddr&quot;;
  :local callerId $&quot;caller-id&quot;
  # :log warning &quot;DEBUG&gt; callerId = $callerId&quot;;
  :local calledId $&quot;called-id&quot;
  # :log warning &quot;DEBUG&gt; calledId = $calledId&quot;;
  :local userName $&quot;user&quot;
  # :log warning &quot;DEBUG&gt; userName = $userName&quot;;
  :local interfaceID $&quot;interface&quot;
  # :log warning &quot;DEBUG&gt; interfaceID = $interfaceID&quot;;
  :local interfaceName [/interface get $interfaceID name]  
  # :log warning &quot;DEBUG&gt; interfaceName = $interfaceName&quot;;
  :local RemoteIPv6 [/ipv6 nd prefix get value-name=prefix [find interface=$interfaceName]]
  # :log warning &quot;DEBUG&gt; RemoteIPv6 = $RemoteIPv6&quot;;
  :local i 0;
  :local x 1;  
  :local t 60;
  while ($i &lt; $t &#038;&#038; [ :len [/ipv6 dhcp-server binding find server=$interfaceName] ] &lt; $x) do={    
    :put $i    
    :set $i ($i + 1)
    :delay delay-time=1s
    # :log warning &quot;DEBUG&gt; Aguardando IPv6 da LAN de $userName ($i)s&quot;;
  }
  :local file [/file find name=&quot;log6.php&quot;]
  :if ([:len $file] &gt; 0) do={
      /file remove log6.php
  }  
  if ($i = $t) do={
    # :log warning &quot;DEBUG&gt; IPv6 LAN: não descoberto descoberto&quot;;
    :log warning message=&quot;UP: $user | $callerId | $calledId | $remoteAddr | $localAddr | $RemoteIPv6 | NULL&quot;
    # :log warning &quot;DEBUG&gt; Executando fetch UP: $URLUP http-data=action=i&amp;token=$TOKEN&amp;user=$user&amp;mac=$callerId&amp;nas=$localAddr&amp;service=$calledId&amp;ipv4=$remoteAddr&amp;remoteipv6=$RemoteIPv6 http-method=post&quot;
    /tool/fetch url=&quot;$URLUP&quot; http-data=&quot;action=i&amp;token=$TOKEN&amp;user=$user&amp;mac=$callerId&amp;nas=$localAddr&amp;service=$calledId&amp;ipv4=$remoteAddr&amp;remoteipv6=$RemoteIPv6&quot; http-method=post
  } else={    
    :local DHCPv6PD [/ipv6 dhcp-server binding get value-name=address [find server=$interfaceName]]
    # :log warning &quot;DEBUG&gt; IPv6 LAN: Descoberto descoberto $DHCPv6PD&quot;;
    :log warning message=&quot;UP: $user | $callerId | $calledId | $remoteAddr | $localAddr | $RemoteIPv6 | $DHCPv6PD&quot;
    # :log warning &quot;DEBUG&gt; Executando fetch UP: $URLUP http-data=action=i&amp;token=$TOKEN&amp;user=$user&amp;mac=$callerId&amp;nas=$localAddr&amp;service=$calledId&amp;ipv4=$remoteAddr&amp;remoteipv6=$RemoteIPv6&amp;dhcpv6pd=$DHCPv6PD http-method=post&quot;;
    /tool/fetch url=&quot;$URLUP&quot; http-data=&quot;action=i&amp;token=$TOKEN&amp;user=$user&amp;mac=$callerId&amp;nas=$localAddr&amp;service=$calledId&amp;ipv4=$remoteAddr&amp;remoteipv6=$RemoteIPv6&amp;dhcpv6pd=$DHCPv6PD&quot; http-method=post
  }
  :delay delay-time=1s
  # :log warning &quot;DEBUG&gt; Removendo arquivo log6.php&quot;;
  :local file [/file find name=&quot;log6.php&quot;]
  :if ([:len $file] &gt; 0) do={
      /file remove log6.php
  }
  # :log warning &quot;DEBUG&gt; Script concluído.&quot;
}
</pre>
<p><strong>DOWN</strong></p>
<pre class="remontti-code-blue">
{
  # :log warning &quot;DEBUG&gt; DOWN: Iniciando o script logs6&quot;;
  :global TOKEN &quot;xxxxxxxxxxxxxxxx&quot;
  :global URLDOWN &quot;http://logs6.remontti.com.br/log6.php&quot;
  :local localAddr $&quot;local-address&quot;
  # :log warning &quot;DEBUG&gt; localAddr = $localAddr&quot;;
  :local callerId $&quot;caller-id&quot;
  # :log warning &quot;DEBUG&gt; calledId = $calledId&quot;;
  :local file [/file find name=&quot;log6.php&quot;]
  :if ([:len $file] &gt; 0) do={
      /file remove log6.php
  }  
  # :log warning &quot;DEBUG&gt; Executando fetch DOWN: $URLDOWN http-data=action=u&amp;token=$TOKEN&amp;user=$user&amp;mac=$callerId&amp;nas=$localAddr http-method=post&quot;;
  /tool/fetch url=&quot;$URLDOWN&quot; http-data=&quot;action=u&amp;token=$TOKEN&amp;user=$user&amp;mac=$callerId&amp;nas=$localAddr&quot; http-method=post
  :log warning message=&quot;DOWN: $user | $callerId | $localAddr&quot;
  :delay delay-time=1s
  # :log warning &quot;DEBUG&gt; Removendo arquivo log6.php&quot;;
  :local file [/file find name=&quot;log6.php&quot;]
  :if ([:len $file] &gt; 0) do={
      /file remove $file
  }
  # :log warning &quot;DEBUG&gt; Script concluído.&quot;
}
</pre>
<p>O post <a href="https://blog.remontti.com.br/3931">Como entregar IPv6+IPv4 no Mikrotik/RouterOS através de PPPoE/DHCPv6 PD e registrando os logs em um banco de dados</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3931/feed</wfw:commentRss>
			<slash:comments>42</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do Elastic Stack 7 + ElastiFlow no Debian 10 Buster (Bônus Traffic Flow Mikrotik/RouterOS)</title>
		<link>https://blog.remontti.com.br/3368</link>
					<comments>https://blog.remontti.com.br/3368#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 16 Aug 2019 18:06:41 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian buster]]></category>
		<category><![CDATA[debian10]]></category>
		<category><![CDATA[Elasticsearch]]></category>
		<category><![CDATA[ElastiFlow]]></category>
		<category><![CDATA[IPFIX]]></category>
		<category><![CDATA[Kibana]]></category>
		<category><![CDATA[Logstash]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Netflow]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[sFlow]]></category>
		<category><![CDATA[Traffic Flow]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3368</guid>

					<description><![CDATA[<p>Para um tutorial mais atualizado acesse: https://blog.remontti.com.br/6255 Neste tutorial abordaremos a instalação e configuração do Elastic Stack 7.x, que será usado para alimentar a solução ElastiFlow. Elastic Stack consiste no Elasticsearch, Logstash e Kibana.&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3368">Instalação do Elastic Stack 7 + ElastiFlow no Debian 10 Buster (Bônus Traffic Flow Mikrotik/RouterOS)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Para um tutorial mais atualizado acesse: <a href="https://blog.remontti.com.br/6255" rel="noopener" target="_blank">https://blog.remontti.com.br/6255</a></h3>
<p>Neste tutorial abordaremos a instalação e configuração do Elastic Stack 7.x, que será usado para alimentar a solução ElastiFlow. </p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-debian-10-buster-1.png" alt="" width="1173" height="720" class="alignnone size-full wp-image-3374" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-debian-10-buster-1.png 1173w, https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-debian-10-buster-1-300x184.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-debian-10-buster-1-768x471.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-debian-10-buster-1-1024x629.png 1024w" sizes="auto, (max-width: 1173px) 100vw, 1173px" /></p>
<p><strong>Elastic Stack</strong> consiste no Elasticsearch, Logstash e Kibana.<br />
&#8211; <strong>Elasticsearch</strong> é um mecanismo de pesquisa baseado em texto completo.<br />
&#8211; <strong>Logstash</strong> é um mecanismo de coleta de dados e análise de log.<br />
&#8211; <strong>Kibana</strong> é uma plataforma de análise e visualização usada para exibir os painéis do ElastiFlow.<br />
&#8211; <strong>ElastiFlow</strong> fornece coleta e visualização de dados de fluxo de rede usando o Elastic Stack (Elasticsearch, Logstash e Kibana). Suporta os tipos de fluxo Netflow v5/v9, sFlow e IPFIX.</p>
<p>Painéis fornecidos através do ElastiFlow</p>
<p><strong>Visão Global</strong> <em>Overview</em><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/Overview.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/Overview-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3391" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/Overview-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Overview-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Overview-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Overview.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Top-N</strong><br />
Existem painéis Top-N separados para os principais locutores, serviços, conversas e aplicativos.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/Top-N.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/Top-N-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3392" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/Top-N-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Top-N-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Top-N-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Top-N.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Ameaças</strong> <em>Threats</em><br />
O ElastiFlow inclui um dicionário de endereços IP públicos que são conhecidos por terem uma má reputação. Este dicionário é construído a partir de muitas fontes de dados OSINT, normalizadas para uma taxonomia comum. O painel de ameaças usa essas informações de reputação de IP para destacar três tipos de ameaça/risco.<br />
1. Ameaças Públicas &#8211; Clientes públicos com baixa reputação de IP que estão atingindo endereços privados.<br />
2. Servidores em Risco &#8211; Servidores Privados que estão sendo acessados ​​por clientes com baixa reputação de IP.<br />
3. Clientes de alto risco &#8211; Clientes privados que acessam servidores públicos com baixa reputação.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/Threats.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/Threats-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3393" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/Threats-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Threats-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Threats-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Threats.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Fluxos</strong> <em>Flows</em><br />
Existem painéis Sankey separados para as perspectivas Cliente/Servidor, Origem/Destino e Sistema Autônomo. As visualizações sankey são construídas usando o novo plugin de visualização Vega.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/Flows.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/Flows-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3395" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/Flows-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Flows-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Flows-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Flows.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Geo IP</strong><br />
Existem painéis de Geo localização separados para as perspectivas Cliente/Servidor e Origem/Destino (Dados GeoLite2 criados pela MaxMind, disponíveis em <a href="http://www.maxmind.com" rel="noopener noreferrer" target="_blank">http://www.maxmind.com</a>)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/IPGeo.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/IPGeo-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3396" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/IPGeo-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/IPGeo-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/IPGeo-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/IPGeo.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Tráfego por AS</strong><em> AS Traffic</em><br />
Fornece uma visão do tráfego para e de sistemas autônomos (intervalos de IP públicos)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/ASTraffic.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/ASTraffic-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3397" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/ASTraffic-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/ASTraffic-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/ASTraffic-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/ASTraffic.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Exportadores de Fluxo</strong> <em>Flow Exporters</em><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowExporters.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowExporters-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3398" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowExporters-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowExporters-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowExporters-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowExporters.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Detalhes do Trânsito</strong> <em>Traffic Details</em><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/TrafficDetails.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/TrafficDetails-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3399" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/TrafficDetails-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/TrafficDetails-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/TrafficDetails-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/TrafficDetails.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Registros de Fluxo</strong><em> Flow Records</em><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowRecords.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowRecords-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3400" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowRecords-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowRecords-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowRecords-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowRecords.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Ziften ZFlow</strong><br />
O ElastiFlow adicionou suporte para registros IPFIX do agente ZFlow do ZFlow. Além de estar totalmente integrado aos painéis de controle padrão, os painéis ZFlow independentes exibem o tráfego de rede com base nos dados de usuário e de comando fornecidos pelo ZFlow.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/Ziften-ZFlow.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/Ziften-ZFlow-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3401" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/Ziften-ZFlow-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Ziften-ZFlow-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Ziften-ZFlow-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Ziften-ZFlow.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><a href="https://github.com/robcowart/elastiflow/blob/master/INSTALL.md#requirements" rel="noopener noreferrer" target="_blank">Requisitos de Hardware</a>.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-Requirements.png" alt="" width="682" height="157" class="alignnone size-full wp-image-3375" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-Requirements.png 682w, https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-Requirements-300x69.png 300w" sizes="auto, (max-width: 682px) 100vw, 682px" /></p>
<p><em>Meus testes foram realizado em meu computador com VM no Virtualbox sendo 4 CPUs (i7) e 8GB de RAM</em><br />
<div id="attachment_3376" style="width: 310px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/VirtualBox_Debian-10-NetFlow_16_08_2019_10_43_03.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3376" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/VirtualBox_Debian-10-NetFlow_16_08_2019_10_43_03-300x225.png" alt="" width="300" height="225" class="size-medium wp-image-3376" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/VirtualBox_Debian-10-NetFlow_16_08_2019_10_43_03-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/VirtualBox_Debian-10-NetFlow_16_08_2019_10_43_03-768x576.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/VirtualBox_Debian-10-NetFlow_16_08_2019_10_43_03.png 800w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-3376" class="wp-caption-text">E o bixinho levou um pau!</p></div></p>
<p>Vou utilizar o Debian 10 instalado de forma &#8220;limpa&#8221;, sem nenhum outro pacote, para isso siga o tutorial:<br />
<strong><a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Instalação Debian 10 Buster LIMPA Passo-a-passo</a></strong></p>
<p>Com seu Debian 10 instalado acesse o mesmo e vire root!</p>
<pre class="remontti-code"># su - </pre>
<p>Instale os pacotes básicos necessários</p>
<pre class="remontti-code"># apt install wget apt-transport-https gnupg unzip curl net-tools</pre>
<p>Recomendo a instalacao dos firmwares binário para vários drivers do kernel Linux, para isso adicione contrib non-free ao seu repositório.</p>
<pre class="remontti-code"># vim /etc/apt/sources.list</pre>
<pre class="remontti-code">deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

deb http://deb.debian.org/debian/ buster-updates main contrib non-free
deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free</pre>
<pre class="remontti-code"># apt update
# apt install firmware-linux firmware-linux-free firmware-linux-nonfree</pre>
<p>Reinicie para que os novos módulos sejam carregado.</p>
<pre class="remontti-code"># reboot</pre>
<h3>:: Elastic Stack 7 ::</h3>
<p>Será necessário ter o Java instalado.</p>
<pre class="remontti-code"># su -
# apt install default-jre</pre>
<p>Adicione o repositório elastic.</p>
<pre class="remontti-code"># wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
# echo &quot;deb https://artifacts.elastic.co/packages/7.x/apt stable main&quot; |  tee -a /etc/apt/sources.list.d/elastic-7.x.list
# apt update</pre>
<p>Faremos a instalação individual dos pacotes elasticsearch, kibana e logstash.</p>
<h3>:: Elasticsearch ::</h3>
<p>Elasticsearch é um mecanismo de pesquisa baseado em texto completo. </p>
<pre class="remontti-code"># apt install elasticsearch</pre>
<p>Após instalação vamos alterar network.host para ouvir apenas localhost, em seguida ativar o serviço e inicia-lo.</p>
<pre class="remontti-code"># sed -i &#039;s/#network.host: 192.168.0.1/network.host: 127.0.0.1/&#039; /etc/elasticsearch/elasticsearch.yml
# systemctl daemon-reload
# systemctl enable elasticsearch
# systemctl start elasticsearch</pre>
<p>Cheque se o mesmo esta funcionando</p>
<pre class="remontti-code"># curl -X GET 127.0.0.1:9200</pre>
<p>Retorno algo como&#8230;.</p>
<pre class="remontti-code">{
  &quot;name&quot; : &quot;lab&quot;,
  &quot;cluster_name&quot; : &quot;elasticsearch&quot;,
  &quot;cluster_uuid&quot; : &quot;-U7i4KbKSxSgChHSxMpcfg&quot;,
  &quot;version&quot; : {
    &quot;number&quot; : &quot;7.3.0&quot;,
    &quot;build_flavor&quot; : &quot;default&quot;,
    &quot;build_type&quot; : &quot;deb&quot;,
    &quot;build_hash&quot; : &quot;de777fa&quot;,
    &quot;build_date&quot; : &quot;2019-07-24T18:30:11.767338Z&quot;,
    &quot;build_snapshot&quot; : false,
    &quot;lucene_version&quot; : &quot;8.1.0&quot;,
    &quot;minimum_wire_compatibility_version&quot; : &quot;6.8.0&quot;,
    &quot;minimum_index_compatibility_version&quot; : &quot;6.0.0-beta1&quot;
  },
  &quot;tagline&quot; : &quot;You Know, for Search&quot;
}</pre>
<p>Caso o comando `curl -X GET 127.0.0.1:9200` retorne algum erro, tente verificar se o serviço esta rodando com o comando `systemctl status elasticsearch`. Verifique nos logs `tail -f /var/log/elasticsearch/elasticsearch.log`se o erro aparece:</p>
<pre class="remontti-code">Failure running machine learning native code. 
This could be due to running on an unsupported OS or distribution, missing OS libraries, 
or a problem with the temp directory. To bypass this problem by running 
Elasticsearch without machine learning functionality set [xpack.ml.enabled: false].&quot;</pre>
<p>Se o mesmo aparecer execute o comando:</p>
<pre class="remontti-code"># echo &quot;xpack.ml.enabled: false&quot; &gt;&gt; /etc/elasticsearch/elasticsearch.yml
# systemctl restart elasticsearch</pre>
<h3>:: kibana ::</h3>
<p>Kibana é uma plataforma de análise e visualização usada para exibir os painéis do ElastiFlow.</p>
<pre class="remontti-code"># apt install kibana</pre>
<p>Após instalação vamos alterar server.host, em seguida ativar o serviço e inicia-lo.</p>
<pre class="remontti-code"># sed -i &#039;s/#server.host: &quot;localhost&quot;/server.host: &quot;0.0.0.0&quot;/&#039; /etc/kibana/kibana.yml
# systemctl daemon-reload
# systemctl enable kibana
# systemctl start kibana</pre>
<p>Aguarde um pouco o serviço iniciar e já será possível acessar Kibana em seu navegador:<br />
http://[IP-SERVIDOR]<strong>:5601</strong></p>
<h3>:: logstash ::</h3>
<p>O Logstash é um mecanismo de coleta de dados e análise de log.</p>
<pre class="remontti-code"># apt install logstash</pre>
<p>Para aumentar o desempenho o ElastiFlow aproveita os recursos de cache e enfileiramento disponíveis em muitos dos plugins do Logstash. Esses recursos aumentam o consumo do heap da JVM. O espaço de heap da JVM usado pelo Logstash é configurado em jvm.options. Recomenda-se que o Logstash receba pelo menos 2GB de heap da JVM. Se todas as opções, incl. Pesquisas DNS estão habilitadas aumente para 4GB. Defina o tamanho de heap da JVM. </p>
<pre class="remontti-code"># vim /etc/logstash/jvm.options</pre>
<p>Altere de a cordo com a necessidades. No meu caso vou resolver nomes então vou usar 4gb</p>
<pre class="remontti-code">-Xms4g
-Xmx4g</pre>
<p>Instale e atualize os plugins necessários pelo Logstash. Para usar o ElastiFlow, você precisará instalar o codec sFlow suportado pela comunidade para o Logstash. Também é recomendável que você sempre use a versão mais recente do codec Netflow, a entrada UDP e o filtro DNS. Isso pode ser conseguido executando os seguintes comandos:</p>
<pre class="remontti-code"># /usr/share/logstash/bin/logstash-plugin install logstash-codec-sflow --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-codec-netflow --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-input-udp --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-input-tcp --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-dns --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-geoip --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-translate --no-verify
# /usr/share/logstash/bin/logstash-plugin install --no-verify

# /usr/share/logstash/bin/logstash-plugin install logstash-codec-sflow
# /usr/share/logstash/bin/logstash-plugin update logstash-codec-netflow
# /usr/share/logstash/bin/logstash-plugin update logstash-input-udp
# /usr/share/logstash/bin/logstash-plugin update logstash-input-tcp
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-dns
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-geoip
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-translate</pre>
<h3>:: elastiflow ::</h3>
<p><a href="https://github.com/robcowart/elastiflow/" rel="noopener noreferrer" target="_blank">ElastiFlow</a> fornece coleta e visualização de dados de fluxo de rede usando o Elastic Stack (Elasticsearch, Logstash e Kibana). Suporta os tipos de fluxo Netflow v5/v9, sFlow e IPFIX. </p>
<pre class="remontti-code"># mkdir /root/flowinstall
# cd /root/flowinstall
# wget https://github.com/robcowart/elastiflow/archive/master.zip
# unzip master.zip
# mv elastiflow-master/logstash/elastiflow/  /etc/logstash/
# mv elastiflow-master/logstash.service.d/ /etc/systemd/system/
# cp /etc/logstash/logstash-sample.conf  /etc/logstash/logstash.conf
</pre>
<p>Adicione o pipeline ElastiFlow aos pipelines.yml</p>
<pre class="remontti-code"># vim  /etc/logstash/pipelines.yml</pre>
<p>Adicione ao final:</p>
<pre class="remontti-code">- pipeline.id: elastiflow
  path.config: &quot;/etc/logstash/elastiflow/conf.d/*.conf&quot;</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/pipelines.yml_.png" alt="" width="796" height="225" class="alignnone size-full wp-image-3379" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/pipelines.yml_.png 796w, https://blog.remontti.com.br/wp-content/uploads/2019/08/pipelines.yml_-300x85.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/pipelines.yml_-768x217.png 768w" sizes="auto, (max-width: 796px) 100vw, 796px" /></p>
<p>Também defino ELASTIFLOW_RESOLVE_IP2HOST como true e defino meu servidor DNS em ELASTIFLOW_NAMESERVER para que os painéis tentem resolver os nomes DNS em vez de exibir apenas o endereço IP. Há um impacto no desempenho por isso será necessário ter RAM sobrando!<br />
Neste exemplo vou aplicar a resolução de nomes.</p>
<pre class="remontti-code"># sed -i &#039;s/ELASTIFLOW_RESOLVE_IP2HOST=false/ELASTIFLOW_RESOLVE_IP2HOST=true/&#039; /etc/systemd/system/logstash.service.d/elastiflow.conf
# sed -i &#039;s/ELASTIFLOW_NAMESERVER=127.0.0.1/ELASTIFLOW_NAMESERVER=1.1.1.1/&#039; /etc/systemd/system/logstash.service.d/elastiflow.conf</pre>
<p>Se desejar pode editar o arquivo /etc/systemd/system/logstash.service.d/elastiflow.conf<br />
E alterar as opções conforme suas necessidades. Os dois comandos acima alteram:<br />
<em>ELASTIFLOW_RESOLVE_IP2HOST=true<br />
ELASTIFLOW_NAMESERVER=1.1.1.1</em></p>
<p>Vamos configurar os arquivos init (system-install) em seguida ativar o serviço para inicialização e starta-lo.</p>
<pre class="remontti-code"># systemctl daemon-reload
# /usr/share/logstash/bin/system-install
# systemctl enable logstash
# systemctl start logstash</pre>
<p>Precisamos configurar os índices do elastiflow-*padrão, execute o seguinte comando: </p>
<p>Atualização: O projeto da data de hoje (20/03/2020) está da versão 7.6.x e em suas releases https://github.com/robcowart/elastiflow/releases alguns arquivos não parecem mais estarem lá, uma das &#8220;gambi&#8221; é pegar esses arquivos de commits antigas. Vamos precisar deles -> <a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow.tar.gz">elastiflow.tar.gz</a></em> (boa sorte)</p>
<pre class="remontti-code"># cd /root/flowinstall
# wget https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow.tar.gz
# tar vxf elastiflow.tar.gz 
# curl -X POST http://127.0.0.1:5601/api/saved_objects/index-pattern/elastiflow-* -H &quot;Content-Type: application/json&quot; -H &quot;kbn-xsrf: true&quot; -d @elastiflow.index_pattern.json</pre>
<p>O arquivo JSON contém a configuração do padrão de índice.</p>
<p>Agora o arquivo elastiflow.kibana.7.0.x.json deveria estar em  <a href="https://github.com/robcowart/elastiflow/tree/master/kibana" rel="noopener noreferrer" target="_blank">https://github.com/robcowart/elastiflow/tree/master/kibana</a> mas não está rsrsrs então baixe ele aqui <a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow.kibana.7.0.x.zip">elastiflow.kibana.7.0.x</a> e extraia ele no seu computador. (peguei ele la da v.<a href="https://github.com/robcowart/elastiflow/tree/v3.5.1" rel="noopener noreferrer" target="_blank">3.5.1</a>) </p>
<p>Porém Hoje <strong>31/03/2020 </strong>utilizando o arquivo <a href="https://raw.githubusercontent.com/robcowart/elastiflow/master/kibana/elastiflow.kibana.7.5.x.ndjson" rel="noopener noreferrer" target="_blank">elastiflow.kibana.7.5.x.ndjson</a>  <strong>deu certo</strong>, entao tente importar ele, caso contrario tente o citado acima (P* zona não seguem um padrão fica foda do cara dizer algo rsrsrs) (Versão testada 7.6.1) </p>
<p>Para que os painéis possam ser carregados no Kibana, importando o <strong>elastiflow.kibana.7.0.x.json</strong>. Isso é feito a partir do menu <strong>Management -> Saved Objects</strong>. Abra o kibana<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1024x492.png" alt="" width="1024" height="492" class="alignnone size-large wp-image-3380" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1024x492.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-300x144.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-768x369.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><br />
<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-import.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-import-1024x492.png" alt="" width="1024" height="492" class="alignnone size-large wp-image-3381" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-import-1024x492.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-import-300x144.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-import-768x369.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-import.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><br />
<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1-1024x763.png" alt="" width="1024" height="763" class="alignnone size-large wp-image-3382" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1-1024x763.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1-300x224.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1-768x572.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Configurações Avançadas Recomendadas do Kibana</p>
<p>Modificar algumas das configurações avançadas do Kibana produzirá uma experiência mais amigável ao usar o ElastiFlow. Essas configurações são feitas em Kibana, abaixo <strong>Management -> Advanced Settings</strong>.</p>
<p><strong>doc_table:highlight</strong><br />
<div id="attachment_3383" style="width: 495px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/doc_table.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3383" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/doc_table.png" alt="" width="485" height="156" class="size-full wp-image-3383" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/doc_table.png 485w, https://blog.remontti.com.br/wp-content/uploads/2019/08/doc_table-300x96.png 300w" sizes="auto, (max-width: 485px) 100vw, 485px" /></a><p id="caption-attachment-3383" class="wp-caption-text">Há uma penalidade de desempenho de consulta muito grande que vem com o uso do recurso de destaque. Como não é muito útil para este caso de uso, é melhor simplesmente retirá-lo.</p></div></p>
<p><strong>filters:pinnedByDefault</strong><br />
<div id="attachment_3385" style="width: 555px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/filters.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3385" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/filters.png" alt="" width="545" height="139" class="size-full wp-image-3385" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/filters.png 545w, https://blog.remontti.com.br/wp-content/uploads/2019/08/filters-300x77.png 300w" sizes="auto, (max-width: 545px) 100vw, 545px" /></a><p id="caption-attachment-3385" class="wp-caption-text">Fixar um filtro permitirá que ele persista quando você está mudando de dashbaords. Isso é muito útil ao detalhar algo interessante e você deseja alterar os painéis para uma perspectiva diferente dos mesmos dados. Este é o primeiro cenário que mudo sempre que estou trabalhando com o Kibana.</p></div></p>
<p><strong>state:storeInSessionStorage</strong><br />
<div id="attachment_3386" style="width: 558px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/state.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3386" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/state.png" alt="" width="548" height="182" class="size-full wp-image-3386" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/state.png 548w, https://blog.remontti.com.br/wp-content/uploads/2019/08/state-300x100.png 300w" sizes="auto, (max-width: 548px) 100vw, 548px" /></a><p id="caption-attachment-3386" class="wp-caption-text">Os URLs do Kibana podem ficar muito grandes. Especialmente quando se trabalha com visualizações Vega. Isso provavelmente resultará em mensagens de erro para usuários do Internet Explorer. Usar o armazenamento na sessão corrigirá esse problema para esses usuários.</p></div></p>
<p><strong>timepicker:quickRanges</strong><br />
<div id="attachment_3387" style="width: 702px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/timepicker.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3387" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/timepicker.png" alt="" width="692" height="496" class="size-full wp-image-3387" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/timepicker.png 692w, https://blog.remontti.com.br/wp-content/uploads/2019/08/timepicker-300x215.png 300w" sizes="auto, (max-width: 692px) 100vw, 692px" /></a><p id="caption-attachment-3387" class="wp-caption-text">As opções padrão no Seletor de Tempo são menos que ideais, para a maioria dos casos de uso de registro e monitoramento. Felizmente, o Kibana agora permite que você personalize o selecionador de tempo. Nossas configurações recomendadas podem ser encontradas abaixo.</p></div><br />
timepicker:</p>
<pre class="remontti-code">[
  {
    &quot;from&quot;: &quot;now-15m&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 15 minutes&quot;
  },
  {
    &quot;from&quot;: &quot;now-30m&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 30 minutes&quot;
  },
  {
    &quot;from&quot;: &quot;now-1h&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 1 hour&quot;
  },
  {
    &quot;from&quot;: &quot;now-2h&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 2 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-4h&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 4 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-12h&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 12 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-24h&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 24 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-48h&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 48 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-7d&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 7 days&quot;
  },
  {
    &quot;from&quot;: &quot;now-30d&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 30 days&quot;
  },
  {
    &quot;from&quot;: &quot;now-60d&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 60 days&quot;
  },
  {
    &quot;from&quot;: &quot;now-90d&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 90 days&quot;
  },
  {
    &quot;from&quot;: &quot;now/d&quot;,
    &quot;to&quot;: &quot;now/d&quot;,
    &quot;display&quot;: &quot;Today&quot;
  },
  {
    &quot;from&quot;: &quot;now/w&quot;,
    &quot;to&quot;: &quot;now/w&quot;,
    &quot;display&quot;: &quot;This week&quot;
  },
  {
    &quot;from&quot;: &quot;now/M&quot;,
    &quot;to&quot;: &quot;now/M&quot;,
    &quot;display&quot;: &quot;This month&quot;
  },
  {
    &quot;from&quot;: &quot;now/d&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Today so far&quot;
  },
  {
    &quot;from&quot;: &quot;now/w&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Week to date&quot;
  },
  {
    &quot;from&quot;: &quot;now/M&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Month to date&quot;
  }
]</pre>
<p>Por padrão, os dados de fluxo serão recebidos nas portas padrão para cada tipo de fluxo. Você pode alterar os IPs e as portas usadas modificando as seguintes variáveis em /etc/systemd/system/logstash.service.d/elastiflow.conf.</p>
<p>Se tiver alguma dificuldade verifique os logs do logstash:</p>
<pre class="remontti-code"># tail -f /var/log/logstash/logstash-plain.log</pre>
<p>Use também o tcpdum para verificar se seu roteador está enviando os flows.</p>
<p>Se você instalou não quer atualizar com medo de algum &#8220;BO&#8221; recomendo você desativar o repositório do elastic:</p>
<pre class="remontti-code"># vim /etc/apt/sources.list.d/elastic-7.x.list</pre>
<p>Comente &#8220;# deb https://artifacts.elastic.co/packages/7.x/apt stable main&#8221;</p>
<p><strong>Portas Padrões</strong><br />
Netflow &#8211; IPv4: 2055<br />
Netflow &#8211; IPv6: 52055<br />
sFlow   &#8211; IPv4: 6343<br />
sFlow   &#8211; IPv6: 56343<br />
IPFIX   &#8211; IPv4: 4739<br />
IPFIX   &#8211; IPv6: 54739<br />
Pode ser alterado </p>
<h3>BÔNUS &#8211; Enviando dados do RouterOS/Mikrotik</h3>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/ElastiFlow-Mikrotik.png" data-rel="lightbox-gallery-H88I4m32" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/ElastiFlow-Mikrotik.png" alt="" width="962" height="585" class="alignnone size-full wp-image-3389" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/ElastiFlow-Mikrotik.png 962w, https://blog.remontti.com.br/wp-content/uploads/2019/08/ElastiFlow-Mikrotik-300x182.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/ElastiFlow-Mikrotik-768x467.png 768w" sizes="auto, (max-width: 962px) 100vw, 962px" /></a><br />
Onde ether1 é a interface que vai ser monitorada, no meu caso estou coletando 4k, isso vai depender muito do hardware da sua máquina, e 200.200.200.200 seria o IP do nosso servidor.</p>
<pre class="remontti-code">/ip traffic-flow
set cache-entries=4k enabled=yes interfaces=ether1
/ip traffic-flow target
add dst-address=200.200.200.200 version=5</pre>
<p>Como não tem restrição ao acesso a porta 5601 é interessante você aplicar um firewall em seu servidor<br />
<a href="https://blog.remontti.com.br/2435" rel="noopener noreferrer" target="_blank">Modelo simples e funcional de Firewall com iptables</a></p>
<p>Parabéns! Você concluiu! Gostou?</p>
<p><center><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></center></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>Fonte:<br />
<a href="https://github.com/robcowart/elastiflow/blob/master/INSTALL.md" rel="noopener noreferrer" target="_blank">https://github.com/robcowart/elastiflow/blob/master/INSTALL.md</a><br />
<a href="https://www.elastic.co/guide/en/kibana/current/deb.html" rel="noopener noreferrer" target="_blank">https://www.elastic.co/guide/en/kibana/current/deb.html</a></p>
<p>O post <a href="https://blog.remontti.com.br/3368">Instalação do Elastic Stack 7 + ElastiFlow no Debian 10 Buster (Bônus Traffic Flow Mikrotik/RouterOS)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3368/feed</wfw:commentRss>
			<slash:comments>49</slash:comments>
		
		
			</item>
		<item>
		<title>Como instalar o MySQL 8 Server (Oracle) no Debian 10 Buster</title>
		<link>https://blog.remontti.com.br/3304</link>
					<comments>https://blog.remontti.com.br/3304#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 30 Jul 2019 20:28:32 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysql 8]]></category>
		<category><![CDATA[mysql8]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3304</guid>

					<description><![CDATA[<p>Desde o lançamento do Debian o mysql foi substituído mariadb. Neste tutorial vamos aprender a fazer a instalação do MySQL A equipe do MySQL Release Engineering fornece repositórios para o Debian 10 Buster incluindo&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3304">Como instalar o MySQL 8 Server (Oracle) no Debian 10 Buster</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/debian-10-buster-mysql-8.png" alt="" width="720" height="340" class="alignnone size-full wp-image-3315" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/debian-10-buster-mysql-8.png 720w, https://blog.remontti.com.br/wp-content/uploads/2019/07/debian-10-buster-mysql-8-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/debian-10-buster-mysql-8-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Desde o lançamento do Debian o mysql foi substituído mariadb. Neste tutorial vamos aprender a fazer a instalação do MySQL</p>
<p>A equipe do MySQL Release Engineering fornece repositórios para o Debian 10 Buster incluindo o servidor MySQL 8.0.</p>
<p><strong>Requisitos:</strong><br />
&#8211; <a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Debian 10 (Instalação limpa)</a></p>
<pre class="remontti-code"># apt install wget gnupg vim apt-transport-https</pre>
<p>Adicione o Repositórios da Oracle.</p>
<pre class="remontti-code"># echo -e &quot;deb http://repo.mysql.com/apt/debian/ buster mysql-8.0\ndeb-src http://repo.mysql.com/apt/debian/ buster mysql-8.0&quot; &gt; /etc/apt/sources.list.d/mysql.list</pre>
<p>Antes de atualizar o repositório você deve adicionar a chave pública.</p>
<pre class="remontti-code"># wget -O /tmp/RPM-GPG-KEY-mysql https://repo.mysql.com/RPM-GPG-KEY-mysql
# apt-key add /tmp/RPM-GPG-KEY-mysql</pre>
<p>Atualizamos o repositório e instalamos o mysql-sever da Oracle</p>
<pre class="remontti-code"># apt update
# apt install mysql-server</pre>
<p>Defina a senha de root do MySQL<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0.png" data-rel="lightbox-gallery-HMxovjWT" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-300x158.png" alt="" width="300" height="158" class="alignnone size-medium wp-image-3306" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-768x405.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-1024x540.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0.png 1600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>No MySQL 8 a autenticação é diferente de seus antecessores, e até o momento não é reconhecido pelo PHP 7, o que gera o erro &#8220;<em>The server requested authentication method unknown to the client</em>&#8221; ao tentar conectar-se. </p>
<p>A não ser que você realmente saiba o que esta fazendo selecione : <strong>Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-legacy.png" data-rel="lightbox-gallery-HMxovjWT" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-legacy-300x169.png" alt="" width="300" height="169" class="alignnone size-medium wp-image-3309" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-legacy-300x169.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-legacy-768x432.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-legacy-1024x576.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-legacy.png 1600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<h4>Aumentando a segurança do Mysql</h4>
<pre class="remontti-code"># mysql_secure_installation</pre>
<p>Defina o nível de segurança de acordo com suas necessidades.</p>
<pre class="remontti-code">Securing the MySQL server deployment.

Enter password for user root: 

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length &gt;= 8
MEDIUM Length &gt;= 8, numeric, mixed case, and special characters
STRONG Length &gt;= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.

Estimated strength of the password: 50 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : 

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.


Normally, root should only be allowed to connect from
&#039;localhost&#039;. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL comes with a database named &#039;test&#039; that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done! </pre>
<p>Dica.<br />
Se você for fazer a instalação do phpMyAdmin crie o usuario da seguinte forma:</p>
<pre class="remontti-code">CREATE DATABASE phpmyadmin CHARACTER SET utf8 collate utf8_bin;
CREATE USER &#039;pma&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039;;
GRANT ALL PRIVILEGES ON phpmyadmin.* TO &#039;pma&#039;@&#039;localhost&#039; WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;</pre>
<p>Parabéns! Você concluiu! Gostou?</p>
<p><center><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></center></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/3304">Como instalar o MySQL 8 Server (Oracle) no Debian 10 Buster</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3304/feed</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Zabbix 4.2/4.4 enviando  alertas no Telegram via Bot (Debian 10)</title>
		<link>https://blog.remontti.com.br/3053</link>
					<comments>https://blog.remontti.com.br/3053#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 18 Jul 2019 19:04:41 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[4.4]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[bind9]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[telegram]]></category>
		<category><![CDATA[token]]></category>
		<category><![CDATA[zabbix]]></category>
		<category><![CDATA[zabbix 4.4]]></category>
		<category><![CDATA[zabbix4]]></category>
		<category><![CDATA[zabbix4.2]]></category>
		<category><![CDATA[zabbix4.4]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3053</guid>

					<description><![CDATA[<p>Vamos aprender como receber os alertas do zabbix através do telegram. Requisitos: Instalação do Zabbix 4.4 no Debian 10 Buster ou Instalação do Zabbix 4.2 no Debian 10 Buster Criando Bot no telegram Abra&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3053">Zabbix 4.2/4.4 enviando  alertas no Telegram via Bot (Debian 10)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Vamos aprender como receber os alertas do zabbix através do telegram.</p>
<p><strong>Requisitos:</strong><br />
<a href="https://blog.remontti.com.br/3995" rel="noopener noreferrer" target="_blank">Instalação do Zabbix 4.4 no Debian 10 Buster</a><br />
ou<br />
<a href="https://blog.remontti.com.br/3032" rel="noopener noreferrer" target="_blank">Instalação do Zabbix 4.2 no Debian 10 Buster</a></p>
<p><strong>Criando Bot no telegram</strong></p>
<p>Abra o Telegram e procure por <a href="https://t.me/BotFather" rel="noopener noreferrer" target="_blank"><strong>@BotFather</strong></a>.<br />
Inicie a conversa com ele.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram1.jpg" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram1-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2823" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram1-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram1-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram1.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram2.jpg" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram2-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2826" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram2-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram2-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram2.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram3.jpg" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram3-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2827" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram3-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram3-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram3.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a></p>
<p>&#8211; Digite o comando <strong>/newbot</strong> para iniciar a criação de um novo bot.<br />
&#8211; Após o comando você vai dar um nome para seu bot. Ex.: <em>&#8220;Bot Legal RR&#8221;</em>.<br />
&#8211; Em seguida é necessário digitar o nome de usuário para o bot, sendo obrigatório terminar com <strong>bot</strong>. Ex.: <em>&#8220;legallrr_bot&#8221;</em>.<br />
&#8211; Ao finalizar você receber informações com seu TOKEN, que vamos utilizar em seguida.</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram4.jpg" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram4-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2830" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram4-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram4-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram4.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram5.jpg" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram5-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2833" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram5-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram5-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram5.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram6.jpg" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram6-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2835" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram6-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram6-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram6.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a></p>
<p>Neste exemplo nosso token para acessar a API HTTP ficou:<br />
<strong>757396508:AAHpaoyVN-95maOCax1vDPDQBnSaZd9P5r0</strong></p>
<p>Agora procure pelo seu bot e comece uma conversa com ele e envie uma mensagem de teste para o mesmo, pois vamos precisar descobrir o ID do seu usuário, para que ele possa lhe enviar as mensagens.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram7.jpg" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram7-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2837" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram7-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram7-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram7.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram8.jpg" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram8-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2838" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram8-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram8-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram8.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a></p>
<p>Abra em seu seu navegador a seguinte URL https://api.telegram.org/bot<strong>TOKEN</strong>/getUpdates para descobrir o ID do usuário que enviou a mensagem ou de um grupo.<br />
Ex.: <font size="2"><em>https://api.telegram.org/bot<strong><font color="red">757396508:AAHpaoyVN-95maOCax1vDPDQBnSaZd9P5r0</font></strong>/getUpdates</em></font></p>
<p><strong>:: Chat privado ::</strong></p>
<pre class="remontti-code">{&quot;ok&quot;:true,&quot;result&quot;:[{
	&quot;update_id&quot;:649208620,&quot;message&quot;:{
		&quot;message_id&quot;:2,&quot;from&quot;:{&quot;id&quot;:221122111,&quot;is_bot&quot;:false,&quot;first_name&quot;:&quot;Rudimar&quot;,&quot;last_name&quot;:&quot;Remontti&quot;,&quot;username&quot;:&quot;remontti&quot;,&quot;language_code&quot;:&quot;pt-br&quot;},
		&quot;chat&quot;:{&quot;id&quot;:999999999,&quot;first_name&quot;:&quot;Rudimar&quot;,&quot;last_name&quot;:&quot;Remontti&quot;,&quot;username&quot;:&quot;remontti&quot;,&quot;type&quot;:&quot;private&quot;},
		&quot;date&quot;:1541210279,&quot;text&quot;:&quot;Testando&quot;
	}
}]}</pre>
<p>ID do chat privado: <strong>999999999</strong></p>
<p>Se desejar criar um grupo também, basta adicionar seu bot a ele, após adiciona-lo envia uma mensagem como <strong>/teste</strong> para que possamos coletar o ID do grupo.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram9.jpg" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram9-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2843" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram9-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram9-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram9.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram10.jpg" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram10-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2844" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram10-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram10-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram10.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a></p>
<p><strong>:: Chat em Grupo ::</strong></p>
<pre class="remontti-code">{&quot;ok&quot;:true,&quot;result&quot;:[{
	&quot;update_id&quot;:649208622,&quot;message&quot;:{&quot;message_id&quot;:4,&quot;from&quot;:{
		&quot;id&quot;:221122111,&quot;is_bot&quot;:false,&quot;first_name&quot;:&quot;Rudimar&quot;,&quot;last_name&quot;:&quot;Remontti&quot;,&quot;username&quot;:&quot;remontti&quot;,&quot;language_code&quot;:&quot;pt-br&quot;},
		&quot;chat&quot;:{&quot;id&quot;:-888888888,&quot;title&quot;:&quot;Grupo Legal&quot;,&quot;type&quot;:&quot;group&quot;,&quot;all_members_are_administrators&quot;:true
	},&quot;date&quot;:1541210975,&quot;text&quot;:&quot;/teste&quot;,&quot;entities&quot;:[{&quot;offset&quot;:0,&quot;length&quot;:6,&quot;type&quot;:&quot;bot_command&quot;}
}]}</pre>
<p>ID do chat grupo: <strong>-888888888</strong></p>
<p>Grupo sempre tem um sinal &#8220;-&#8221; na frente do ID.</p>
<p>Para testarmos se o envio esta funcionando, abra seu navegador e cole a seguinte URL:<br />
https://api.telegram.org/bot<font color="red">TOKEN</font>/sendMessage?chat_id=<font color="red">ID</font>&amp;text=<font color="red">Minha%20Mensagem</font></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram11.jpg" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram11-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2847" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram11-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram11-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram11.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram12.jpg" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram12-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2848" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram12-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram12-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram12.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a></p>
<p>É necessário ter o curl instalado, uma ferramenta para comando para transferência de dados com sintaxe URL.</p>
<pre class="remontti-code"># apt install curl</pre>
<p>O diretório padrão no zabbix para os scripts fica em /usr/lib/zabbix/alertscripts/.<br />
<font size="2">(Obs: No tutorial Zabbix 3.0.x com notificações via Telegram nos alteramos o valor de AlertScriptsPath, então caso você seja um leitor que quer apenas migrar, volte o diretório esta em /opt/telegram)</font></p>
<p>Vamos criar o arquivo telegram</p>
<pre class="remontti-code"># vim /usr/lib/zabbix/alertscripts/telegram</pre>
<pre class="remontti-code">#!/bin/bash
# Autor: remontti.com.br
TOKEN=&quot;ALTERE-PELO-SEU-TOKEN&quot;

USER=$1
SUBJECT=$2
MESSAGE=$3
NL=&quot;
&quot;
curl --silent -X POST --data-urlencode &quot;chat_id=${USER}&quot; --data-urlencode &quot;text=${SUBJECT}${NL}${NL}${MESSAGE}&quot; &quot;https://api.telegram.org/bot${TOKEN}/sendMessage?disable_web_page_preview=true&amp;parse_mode=html&quot; | grep -q &#039;&quot;ok&quot;:true&#039;

exit 0</pre>
<p>De permissão para executar, em seguida vamos criar um atalho em /usr/bin/ e alterar as permissões para o usuário do zabbix.</p>
<pre class="remontti-code"># chmod  +x /usr/lib/zabbix/alertscripts/telegram
# ln -s /usr/lib/zabbix/alertscripts/telegram /usr/bin/telegram
# chown zabbix. -R /usr/lib/zabbix/alertscripts</pre>
<p>Agora execute em seu terminal para verificar se seu bot já consegue fazer o envio de mensages.</p>
<pre class="remontti-code"># telegram &quot;-888888888&quot; &quot;Mensagem via Terminal para grupo&quot;
# telegram &quot;999999999&quot; &quot;Mensagem via Terminal para privado&quot;</pre>
<h3>::Configurações no Zabbix ::</h3>
<p><strong>Administração</strong> ⇒ <strong>Tipos de mídias</strong> ⇒ <strong>Criar tipo de mídia</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-1.png" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-1-1024x585.png" alt="" width="1024" height="585" class="alignnone size-large wp-image-3064" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-1-1024x585.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-1-300x171.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-1-768x439.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-1.png 1215w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Nome: <strong>Telegram</strong><br />
Tipo: <strong>Script</strong><br />
Nome script: <strong>telegram</strong><br />
Parâmetros do script<br />
<strong>{ALERT.SENDTO}<br />
{ALERT.SUBJECT}<br />
{ALERT.MESSAGE}</strong><br />
Ativo: <strong>Sim</strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-2.png" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-2-1024x544.png" alt="" width="1024" height="544" class="alignnone size-large wp-image-3065" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-2-1024x544.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-2-300x159.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-2-768x408.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-2.png 1215w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Administração</strong> ⇒ <strong>Usuários</strong> Clique no usuário <strong>Admin</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-3.png" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-3-1024x584.png" alt="" width="1024" height="584" class="alignnone size-large wp-image-3066" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-3-1024x584.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-3-300x171.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-3-768x438.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-3.png 1216w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Com as opções do usuário aberto clique na aba <strong>Mídia</strong> clique no <strong>Adicionar</strong> (2)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-4.png" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-4-1024x544.png" alt="" width="1024" height="544" class="alignnone size-large wp-image-3067" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-4-1024x544.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-4-300x159.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-4-768x408.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-4.png 1215w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Tipo: <strong>Telegram</strong><br />
Enviar para: <strong>ID-Do-Grupo/ID-Usuário</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-5.png" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-5-1024x544.png" alt="" width="1024" height="544" class="alignnone size-large wp-image-3068" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-5-1024x544.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-5-300x159.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-5-768x408.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-5.png 1215w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-6.png" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-6-1024x544.png" alt="" width="1024" height="544" class="alignnone size-large wp-image-3069" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-6-1024x544.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-6-300x159.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-6-768x408.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-6.png 1215w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Agora vamos criar a ação que fará o envios dos alertas.<br />
<strong>Configurações</strong> ⇒ <strong>Ações</strong> ⇒ <strong>Criar ação</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-7.png" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-7-1024x544.png" alt="" width="1024" height="544" class="alignnone size-large wp-image-3070" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-7-1024x544.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-7-300x159.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-7-768x408.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-7.png 1215w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>De um nome para sua ação<br />
Nova condição: <strong>Incidente suprimido</strong> &#8211; <strong>Não</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-8.png" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-8-1024x544.png" alt="" width="1024" height="544" class="alignnone size-large wp-image-3071" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-8-1024x544.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-8-300x159.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-8-768x408.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-8.png 1215w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-9.png" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-9-1024x544.png" alt="" width="1024" height="544" class="alignnone size-large wp-image-3072" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-9-1024x544.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-9-300x159.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-9-768x408.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-9.png 1215w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Aba <strong>Operações</strong><br />
<strong>Assunto padrão</strong>:</p>
<pre class="remontti-code"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Problema: &lt;b&gt;{HOST.NAME} &lt;/b&gt;</pre>
<p><strong>Mensagem padrão</strong></p>
<pre class="remontti-code">&lt;code&gt;{EVENT.NAME}&lt;/code&gt;
&lt;b&gt;{ITEM.NAME1}&lt;/b&gt; &lt;i&gt;{ITEM.VALUE1}&lt;/i&gt;

&lt;a href=&quot;{HOST.IP}&quot;&gt;{HOST.IP}&lt;/a&gt;
&lt;i&gt;{EVENT.SEVERITY}&lt;/i&gt;</pre>
<p>Operações: Clique em <strong>Nova</strong> Mais campos se abrirão, agora em <strong>Enviar para Usuário</strong> Clique em <strong>Adicionar</strong> e Selecione o Usuário <strong>Admin</strong> qual configuramos a mídia. Na opção <strong>Enviar apenas para</strong>: Selecione <strong>Telegram</strong>, e em seguida <strong>Adicionar</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-10.png" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-10-1024x953.png" alt="" width="1024" height="953" class="alignnone size-large wp-image-3073" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-10-1024x953.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-10-300x279.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-10-768x715.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-10.png 1215w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Vamos repetir praticamente na aba <strong>Operações de recuperação</strong></p>
<p><strong>Assunto padrão</strong>:</p>
<pre class="remontti-code"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />   Resolvido:  &lt;b&gt;{HOST.NAME} &lt;/b&gt;</pre>
<p><strong>Mensagem padrão</strong></p>
<pre class="remontti-code">&lt;code&gt;{EVENT.NAME}&lt;/code&gt;
&lt;b&gt;{ITEM.NAME1}&lt;/b&gt; &lt;i&gt;{ITEM.VALUE1}&lt;/i&gt;

&lt;a href=&quot;{HOST.IP}&quot;&gt;{HOST.IP}&lt;/a&gt;
&lt;i&gt;{EVENT.SEVERITY}&lt;/i&gt;</pre>
<p>Pode clicar agora em <strong>Adicionar</strong> na seção Operações<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-11.png" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-11-1024x770.png" alt="" width="1024" height="770" class="alignnone size-large wp-image-3074" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-11-1024x770.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-11-300x226.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-11-768x578.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-11.png 1215w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Aba <strong>Operações de atualização</strong></p>
<p><strong>Assunto padrão</strong>:</p>
<pre class="remontti-code">Problema atualizado: {EVENT.NAME}</pre>
<p><strong>Mensagem padrão</strong></p>
<pre class="remontti-code">{USER.FULLNAME} {EVENT.UPDATE.ACTION} problema em {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.
{EVENT.UPDATE.MESSAGE}

O status atual do problema é {EVENT.STATUS}, reconhecido: {EVENT.ACK.STATUS}.</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-12.png" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-12-1024x544.png" alt="" width="1024" height="544" class="alignnone size-large wp-image-3075" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-12-1024x544.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-12-300x159.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-12-768x408.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-12.png 1215w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-13.png" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-13-1024x544.png" alt="" width="1024" height="544" class="alignnone size-large wp-image-3076" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-13-1024x544.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-13-300x159.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-13-768x408.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-13.png 1215w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>E por fim clique no botão Adicionar.</p>
<p>Pronto! Agora precisamos gerar um incidente para ver se nosso alerta será enviado para o Telegram.<br />
No meu caso vou atualizar meu root server do bind9.11 para ver se recebo alertas. Vou editar o arquivo /usr/share/dns/root.hints (que na versão do debian 9 era /etc/bind/db.root). Possuo um template que criei onde ele verifica alterações no arquivo:  <a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zbx_export_templates_bin9.11.xml">zbx_export_templates_bin9.11.xml</a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-14.png" data-rel="lightbox-gallery-d2xUB0co" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-14-576x1024.png" alt="" width="576" height="1024" class="alignnone size-large wp-image-3080" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-14-576x1024.png 576w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-14-169x300.png 169w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-14.png 720w" sizes="auto, (max-width: 576px) 100vw, 576px" /></a></p>
<p>Bingo! Tudo certo, nosso sistema de envio de mensagem está concluído!</p>
<p>Gostou?</p>
<p><center><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></center></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p><font size="2">Fontes: <a href="https://core.telegram.org/bots" rel="noopener noreferrer" target="_blank">https://core.telegram.org/bots</a> &amp; <a href="https://www.zabbix.com/documentation/" rel="noopener noreferrer" target="_blank">https://www.zabbix.com/documentation/</a></font></p>
<p>O post <a href="https://blog.remontti.com.br/3053">Zabbix 4.2/4.4 enviando  alertas no Telegram via Bot (Debian 10)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3053/feed</wfw:commentRss>
			<slash:comments>62</slash:comments>
		
		
			</item>
		<item>
		<title>Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster &#8220;LAMP&#8221;</title>
		<link>https://blog.remontti.com.br/3006</link>
					<comments>https://blog.remontti.com.br/3006#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 16 Jul 2019 19:05:12 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[debian buster]]></category>
		<category><![CDATA[debian10]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3006</guid>

					<description><![CDATA[<p>Distribuição utilizada: Debian 10 Stretch / Instalação Limpa Vale lembrar que desde o Debian 9 o PHP foi atualizado para a versão 7 e agora para 7.3, e o MySQL foi substituído pelo seu&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3006">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster &#8220;LAMP&#8221;</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/debian10-lamp.jpg" alt="" width="800" height="376" class="alignnone size-full wp-image-3028" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/debian10-lamp.jpg 800w, https://blog.remontti.com.br/wp-content/uploads/2019/07/debian10-lamp-300x141.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/debian10-lamp-768x361.jpg 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/debian10-lamp-520x245.jpg 520w" sizes="auto, (max-width: 800px) 100vw, 800px" /><br />
Distribuição utilizada: <strong><a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Debian 10 Stretch / Instalação Limpa</a></strong><br />
Vale lembrar que desde o Debian 9 o PHP foi atualizado para a versão 7 e agora para 7.3, e o MySQL foi substituído pelo seu fork MariaBD<br />
Antes de mais nada tenha seu repositório atualizado</p>
<pre class="remontti-code"># su -
# apt update
# apt upgrade</pre>
<h3>:: Instalação do Apache 2.4 ::</h3>
<pre class="remontti-code"># apt install apache2 apache2-utils</pre>
<p>Vamos habilitar o mod_rewrite do Apache que é muito utilizado.<br />
Este é um módulo do Apache que utiliza um mecanismo baseado em regras de reescrita.<br />
Vamos ao comando para habilita-lo:</p>
<pre class="remontti-code"># a2enmod rewrite</pre>
<p>A página que vimos ao abri o ip do nosso servidor no navegador fica no diretório /var/www/html, isso está sendo informado no arquivo default do apache que fica em /etc/apache2/sites-enabled/000-default.conf, e para que nosso mod_rewrite funcione corretamente será necessário adicionar alguma linhas.</p>
<pre class="remontti-code"># vim /etc/apache2/sites-enabled/000-default.conf</pre>
<p>Adicione abaixo de &#8220;DocumentRoot /var/www/html&#8221; o seguinte:</p>
<pre class="remontti-code">	&lt;Directory /var/www/html/&gt;
    		Options FollowSymLinks
    		AllowOverride All
	&lt;/Directory&gt;</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite.png" data-rel="lightbox-gallery-ZHRXOrSO" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite-300x251.png" alt="" width="300" height="251" class="alignnone size-medium wp-image-3012" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite-300x251.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite-768x642.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite.png 887w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Agora precisamos restartar o apache2 para que tenha efeito as alterações.</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>http://[SERVER_IP]/<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster.png" data-rel="lightbox-gallery-ZHRXOrSO" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-230x300.png" alt="" width="230" height="300" class="alignnone size-medium wp-image-3010" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-230x300.png 230w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-768x1003.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-784x1024.png 784w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster.png 941w" sizes="auto, (max-width: 230px) 100vw, 230px" /></a><br />
Por segurança remova a assinatura do apache.</p>
<pre class="remontti-code"># sed -i &#039;s/ServerTokens OS/ServerTokens Prod/&#039; /etc/apache2/conf-available/security.conf
# sed -i &#039;s/ServerSignature On/ServerSignature Off/&#039; /etc/apache2/conf-available/security.conf</pre>
<h3>:: Instalação do MariaDB 10.3 ::</h3>
<pre class="remontti-code"># apt install mariadb-server mariadb-client </pre>
<p>Por padrão o pacote MaraiDB no Debian usa unix_socket para autenticar o login do usuário, o que basicamente significa que você pode usar o nome de usuário e a senha do sistema operacional para efetuar login no console do MariaDB.<br />
Assim, você pode logar diretamente sem fornecer a senha root do MariaDB. Mas isso é estranho, pois minha senha do root do MariaDB é diferente do meu usuário unix.<br />
Bom se você é meio paranoico com segurança, para alterar a senha do usuário root do MariaDB de forma bruta faça o seguinte:</p>
<pre class="remontti-code"># mariadb -u root</pre>
<pre class="remontti-code">USE mysql;
UPDATE user SET password=PASSWORD(&#039;SENHA.db.ROOT&#039;) WHERE User=&#039;root&#039;;
UPDATE user SET plugin=&quot;mysql_native_password&quot;;
FLUSH PRIVILEGES;
quit;</pre>
<h3>:: Instalação do PHP 7.3 ::</h3>
<p>Vou incluir algumas extensões do PHP que são normalmente utilizada</p>
<pre class="remontti-code"># apt install libapache2-mod-php php php-mysql php-cli php-pear php-gmp php-gd php-bcmath php-mbstring php-curl php-xml php-zip</pre>
<p>É necessário reiniciar o apache para que o php tenha efeito.</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Consultado informações de versão:</p>
<pre class="remontti-code"># php --version</pre>
<pre class="remontti-code">PHP 7.3.4-2 (cli) (built: Apr 13 2019 19:05:48) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.4-2, Copyright (c) 1999-2018, by Zend Technologies</pre>
<p>Você pode criar um arquivo php com a função <a href="https://php.net/manual/pt_BR/function.phpinfo.php" rel="noopener noreferrer" target="_blank">phpinfo()</a> para mostrar todas as informações.</p>
<pre class="remontti-code"># echo &#039;&lt;?php phpinfo(); ?&gt;&#039; &gt; /var/www/html/phpinfo.php</pre>
<p>http://[SERVER_IP]/phpinfo.php<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster.png" data-rel="lightbox-gallery-ZHRXOrSO" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster-300x261.png" alt="" width="300" height="261" class="alignnone size-medium wp-image-3018" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster-300x261.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster-768x668.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster.png 994w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<h3>:: phpMyAdmin ::</h3>
<p>Cade ele do repositório?<br />
O PHPMyAdmin não está mais disponível como pacote .deb no Debian 10. Fazendo um pesquisa o motivo é que o &#8220;pessoal&#8221; que faz empacotamento não tem uma versão estável. <a href="https://security-tracker.debian.org/tracker/CVE-2018-19968" rel="noopener noreferrer" target="_blank">https://security-tracker.debian.org/tracker/CVE-2018-19968</a><br />
Desta forma debian &#8220;obriga&#8221; com que o usuário instale-o a partir da fonte. <a href="https://www.phpmyadmin.net/downloads/" rel="noopener noreferrer" target="_blank">https://www.phpmyadmin.net/downloads/</a></p>
<pre class="remontti-code"># apt install wget</pre>
<p>Escolha qual versão do irá utilizar phpMyAdmin 5.x.x ou 4.x.x</p>
<pre class="remontti-code"># cd /tmp/</pre>
<p>Para <strong>phpMyAdmin 5</strong> (06/04/2020)</p>
<pre class="remontti-code"># wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.tar.gz
# tar -vxzf phpMyAdmin-5.0.4-all-languages.tar.gz -C /usr/share/
# mv /usr/share/phpMyAdmin-5.0.4-all-languages /usr/share/phpmyadmin</pre>
<p>Para <strong>phpMyAdmin 4</strong> (06/04/2020)</p>
<pre class="remontti-code"># wget https://files.phpmyadmin.net/phpMyAdmin/4.9.5/phpMyAdmin-4.9.5-all-languages.tar.gz
# tar -vxzf phpMyAdmin-4.9.5-all-languages.tar.gz -C /usr/share/
# mv /usr/share/phpMyAdmin-4.9.5-all-languages /usr/share/phpmyadmin</pre>
<p>Seguimos para <strong>phpMyAdmin 5 ou 4</strong> </p>
<pre class="remontti-code"># mkdir /etc/phpmyadmin
# touch /etc/phpmyadmin/htpasswd.setup
# mkdir -p /var/lib/phpmyadmin/tmp
# chown www-data. /var/lib/phpmyadmin/ -R</pre>
<p>Criaremos o arquivo de configuração do Apache.</p>
<pre class="remontti-code"># vim /etc/apache2/conf-available/phpmyadmin.conf</pre>
<pre class="remontti-code"># phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

&lt;Directory /usr/share/phpmyadmin&gt;
 Options FollowSymLinks
 DirectoryIndex index.php

 &lt;IfModule mod_php7.c&gt;
 AddType application/x-httpd-php .php

 php_flag magic_quotes_gpc Off
 php_flag track_vars On
 php_flag register_globals Off
 php_value include_path .
 &lt;/IfModule&gt;

&lt;/Directory&gt;

# Authorize for setup
&lt;Directory /usr/share/phpmyadmin/setup&gt;
 &lt;IfModule mod_authn_file.c&gt;
 AuthType Basic
 AuthName &quot;phpMyAdmin Setup&quot;
 AuthUserFile /etc/phpmyadmin/htpasswd.setup
 &lt;/IfModule&gt;
 Require valid-user
&lt;/Directory&gt;

# Disallow web access to directories that don&#039;t need it
&lt;Directory /usr/share/phpmyadmin/libraries&gt;
 Order Deny,Allow
 Deny from All
&lt;/Directory&gt;
&lt;Directory /usr/share/phpmyadmin/setup/lib&gt;
 Order Deny,Allow
 Deny from All
&lt;/Directory&gt;</pre>
<p>Se deseja deixar o atalho para o phpmyadmin restrito apenas aos seus IP de gerencia faça da seguinte forma. Lembre-se de alterar os IPs 200.200.200.0/26 2001:db8:cafe:d0ce::/64 para os seus.</p>
<pre class="remontti-code"># phpMyAdmin default Apache configuration
 
Alias /phpmyadmin /usr/share/phpmyadmin
 
&lt;Directory /usr/share/phpmyadmin&gt;
 Options FollowSymLinks
 DirectoryIndex index.php

 AllowOverride All
 Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe:d0ce::/64

 &lt;IfModule mod_php7.c&gt;
 AddType application/x-httpd-php .php
 
 php_flag magic_quotes_gpc Off
 php_flag track_vars On
 php_flag register_globals Off
 php_value include_path .
 &lt;/IfModule&gt;
 
&lt;/Directory&gt;
 
# Authorize for setup
&lt;Directory /usr/share/phpmyadmin/setup&gt;
 AllowOverride All
 Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe:d0ce::/64
 &lt;IfModule mod_authn_file.c&gt;
 AuthType Basic
 AuthName &quot;phpMyAdmin Setup&quot;
 AuthUserFile /etc/phpmyadmin/htpasswd.setup
 &lt;/IfModule&gt;
 Require valid-user
&lt;/Directory&gt;
 
# Disallow web access to directories that don&#039;t need it
&lt;Directory /usr/share/phpmyadmin/libraries&gt;
 AllowOverride All
 Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe:d0ce::/64
 Order Deny,Allow
 Deny from All
&lt;/Directory&gt;
&lt;Directory /usr/share/phpmyadmin/setup/lib&gt;
 AllowOverride All
 Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe:d0ce::/64
 Order Deny,Allow
 Deny from All
&lt;/Directory&gt;
</pre>
<p>Ative a configuração e reinicie o Apache.</p>
<pre class="remontti-code"># a2enconf phpmyadmin
# systemctl restart apache2
# systemctl status apache2</pre>
<p>Na próxima etapa, vamos configurar o armazenamento de configuração do phpMyadmin (banco de dados).<br />
Faça o login no MariaDB como usuário root:</p>
<pre class="remontti-code"># mariadb -p</pre>
<p>Criamos um novo banco de dados para o chamado phpmyadmin e um usuario pma (altere para sua senha). Em seguida, concedemos as permissões do banco de dados.<br />
Você pode gerar uma senha acessando <a href="https://senhasegura.remontti.com.br/" rel="noopener noreferrer" target="_blank">https://senhasegura.remontti.com.br/</a></p>
<pre class="remontti-code">CREATE DATABASE phpmyadmin;
CREATE USER &#039;pma&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039;;
GRANT ALL PRIVILEGES ON phpmyadmin.* TO &#039;pma&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039; WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;</pre>
<p>Carregue as tabelas do banco de dados: (Informe a senha do root do MariaDB)</p>
<pre class="remontti-code"># mariadb -u root -p phpmyadmin &lt; /usr/share/phpmyadmin/sql/create_tables.sql</pre>
<p>Agora é necessário ajustar o arquivo de configuração do phpmyadmin.<br />
Definir:<br />
* senha segura (blowfish secret) que deve ter 32 caracteres. Não use o meu exemplo blowfish secreto, defina o seu próprio! Use o gerador <a href="https://senhasegura.remontti.com.br" rel="noopener noreferrer" target="_blank">https://senhasegura.remontti.com.br</a><br />
* diretório que o PHPMyAdmin deve usar para armazenar arquivos temporários.<br />
* Descomentar as linhas $cfg['Servers']<br />
- controlhost : localhost<br />
- controlpass : SUA_SENHA</p>
<pre class="remontti-code"># cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
# vim /usr/share/phpmyadmin/config.inc.php</pre>
<pre class="remontti-code">$cfg[&#039;blowfish_secret&#039;] = &#039;dkJhGx83XR3JjuFrDn8kPp9NtXnkLptl&#039;;
/* Adicione esta linha */
$cfg[&#039;TempDir&#039;] = &#039;/var/lib/phpmyadmin/tmp&#039;;

/* User used to manipulate with storage */
$cfg[&#039;Servers&#039;][$i][&#039;controlhost&#039;] = &#039;localhost&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;controlport&#039;] = &#039;&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;controluser&#039;] = &#039;pma&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;controlpass&#039;] = &#039;SUA_SENHA&#039;;

/* Storage database and tables */
$cfg[&#039;Servers&#039;][$i][&#039;pmadb&#039;] = &#039;phpmyadmin&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;bookmarktable&#039;] = &#039;pma__bookmark&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;relation&#039;] = &#039;pma__relation&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;table_info&#039;] = &#039;pma__table_info&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;table_coords&#039;] = &#039;pma__table_coords&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;pdf_pages&#039;] = &#039;pma__pdf_pages&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;column_info&#039;] = &#039;pma__column_info&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;history&#039;] = &#039;pma__history&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;table_uiprefs&#039;] = &#039;pma__table_uiprefs&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;tracking&#039;] = &#039;pma__tracking&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;userconfig&#039;] = &#039;pma__userconfig&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;recent&#039;] = &#039;pma__recent&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;favorite&#039;] = &#039;pma__favorite&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;users&#039;] = &#039;pma__users&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;usergroups&#039;] = &#039;pma__usergroups&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;navigationhiding&#039;] = &#039;pma__navigationhiding&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;savedsearches&#039;] = &#039;pma__savedsearches&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;central_columns&#039;] = &#039;pma__central_columns&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;designer_settings&#039;] = &#039;pma__designer_settings&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;export_templates&#039;] = &#039;pma__export_templates&#039;;</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster.png" data-rel="lightbox-gallery-ZHRXOrSO" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-300x296.png" alt="" width="300" height="296" class="alignnone size-medium wp-image-3021" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-300x296.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-768x757.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster.png 901w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
http://[SERVER_IP]/phpmyadmin/<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1.png" data-rel="lightbox-gallery-ZHRXOrSO" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1-300x155.png" alt="" width="300" height="155" class="alignnone size-medium wp-image-3022" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1-300x155.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1-768x397.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1-1024x530.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2.png" data-rel="lightbox-gallery-ZHRXOrSO" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2-300x156.png" alt="" width="300" height="156" class="alignnone size-medium wp-image-3023" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2-300x156.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2-768x399.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2-1024x532.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Gostou?</p>
<p><center><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></center></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/3006">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster &#8220;LAMP&#8221;</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3006/feed</wfw:commentRss>
			<slash:comments>70</slash:comments>
		
		
			</item>
	</channel>
</rss>
