<?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 debina bullseye - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/debina-bullseye/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/debina-bullseye</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Sat, 19 Oct 2024 00:58:58 +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 debina bullseye - Remontti</title>
	<link>https://blog.remontti.com.br/tag/debina-bullseye</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Servidor de virtualização Web com Debian 11 bullseye + Virtualbox 7.0</title>
		<link>https://blog.remontti.com.br/7142</link>
					<comments>https://blog.remontti.com.br/7142#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 07 Feb 2023 16:21:03 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[debina bullseye]]></category>
		<category><![CDATA[hypervisor]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[phpvirtualbox7]]></category>
		<category><![CDATA[vbox]]></category>
		<category><![CDATA[Virtual]]></category>
		<category><![CDATA[virtualbo7]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualização]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7142</guid>

					<description><![CDATA[<p>Com VirtualBox é possível executar diversos sistemas operacionais (Windows, Linux, UNIX, BSD) simultaneamente no mesmo hardware, que são chamados de máquinas virtuais. Uma das características é o mascaramento dos recursos físicos (incluindo processadores, quantidade&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7142">Servidor de virtualização Web com Debian 11 bullseye + Virtualbox 7.0</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><div id="attachment_7150" style="width: 730px" class="wp-caption alignnone"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-7150" src="https://blog.remontti.com.br/wp-content/uploads/2023/02/phpvirtualbox7.0.jpg" alt="" width="720" height="340" class="size-full wp-image-7150" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/02/phpvirtualbox7.0.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/02/phpvirtualbox7.0-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/02/phpvirtualbox7.0-520x245.jpg 520w" sizes="(max-width: 720px) 100vw, 720px" /><p id="caption-attachment-7150" class="wp-caption-text">CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 82</p></div><br />
Com VirtualBox é possível executar diversos sistemas operacionais (Windows, Linux, UNIX, BSD) simultaneamente no mesmo hardware, que são chamados de máquinas virtuais. Uma das características é o mascaramento dos recursos físicos (incluindo processadores, quantidade de memória, interfaces de rede), o que permite diminuir a administração de drivers nas máquinas virtuais, e transferir uma máquina virtual entre servidores físicos diferentes.</p>
<p>Existem várias ferramentas de virtualização disponíveis.</p>
<p><strong>Microsoft Virtual Server 2005 R2</strong> &#8211; disponível para plataforma x86 e x86_64 bits. Suporte: Somente Windows.<br />
<strong>Qemu</strong> &#8211; ferramenta de virtualização de código aberto disponível para windows, mac e Linux.<br />
<strong>Vmware </strong>&#8211; Disponível para Windows e Linux.<br />
<strong>VirtualBox </strong>&#8211; Aplicativo de código aberto disponível para Windows, Mac, Linux e Solaris.<br />
<strong>Xen </strong>&#8211; Suporta Windows, bem como distribuições Linux.</p>
<p>O <strong>VirtualBox </strong> inicialmente foi lançado sob licença proprietária, mas mais tarde (2007) a Oracle Corporation começou a lançá-lo sob GNU General Public License. Escrito completamente em C, C ++ e Assembly Language está disponível para Windows, OS X, Linux e Solaris.</p>
<p>Recomendo já baixar a ISO nonfree: <a href="https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/" target="_blank" rel="noopener noreferrer">https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/</a></p>
<h3>Requerimentos</h3>
<p>Debian 11 (Bullseye) 64 bits <strong><a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank">instalação mínima</a></strong> pronta</p>
<p>Acesse seu servidor e vire root.</p>
<pre class="remontti-code"># su - </pre>
<p>Certifique-se que seu repositório esteja usando os repositórios <strong>nonfree e contrib</strong>.</p>
<pre class="remontti-code"># vim /etc/apt/sources.list</pre>
<p>Ao final de cada linha verifique se consta:  <strong>nonfree e contrib</strong>, se não tiver adicione, ficando assim:</p>
<pre class="remontti-code">deb http://deb.debian.org/debian/ bullseye main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye main contrib non-free

deb http://security.debian.org/debian-security bullseye/updates main contrib non-free
deb-src http://security.debian.org/debian-security bullseye/updates main contrib non-free

# bullseye-updates, previously known as &#039;volatile&#039;
deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye-updates main contrib non-free</pre>
<p>Atualize o repositório</p>
<pre class="remontti-code"># apt update
# apt install firmware-linux firmware-linux-free firmware-linux-nonfree</pre>
<p>Vamos fazer uns ajustes nas parametrizações do kernel para otimizar algumas coisas.</p>
<pre class="remontti-code"># echo &quot;vm.swappiness=10&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;vm.vfs_cache_pressure=50&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;vm.dirty_background_ratio = 5&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;vm.max_map_count=262144&quot; &gt;&gt; /etc/sysctl.d/70-vbox.conf
# echo &quot;fs.file-max=3263776&quot; &gt;&gt; /etc/sysctl.d/70-vbox.conf
# echo &quot;fs.aio-max-nr=3263776&quot; &gt;&gt; /etc/sysctl.d/70-vbox.conf

# cat &lt;&lt;EOF &gt;/etc/sysctl.d/60-net.conf
net.core.netdev_max_backlog=4096
net.core.rmem_default=262144
net.core.rmem_max=67108864
net.ipv4.udp_rmem_min=131072
net.ipv4.udp_mem=2097152 4194304 8388608
net.core.default_qdisc = fq
net.core.somaxconn = 16384
EOF</pre>
<p>Se desejar que seu servidor tenha os nomes de interfaces como: eth0 eth1&#8230; wlan0 wlan1&#8230; faça um ajuste no grub:<br />
OBS: Será necessário que você <a href="https://blog.remontti.com.br/5848" rel="noopener" target="_blank">reconfigure a placa de rede</a> (/etc/network/interfaces) </p>
<pre class="remontti-code"># vim /etc/default/grub</pre>
<p>Ajuste GRUB_CMDLINE_LINUX_DEFAULT</p>
<pre class="remontti-code-plain">GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet net.ifnames=0 biosdevname=0&quot;</pre>
<pre class="remontti-code"># update-grub</pre>
<p>Adicione o repositório do <a href="https://www.virtualbox.org/" target="_blank" rel="noopener noreferrer">virtualbox</a></p>
<pre class="remontti-code"># apt install wget vim apt-transport-https gnupg
# echo &#039;deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian bullseye contrib&#039; &gt; /etc/apt/sources.list.d/virtualbox.list
# wget -O- https://www.virtualbox.org/download/oracle_vbox_2016.asc | gpg --dearmor --yes --output /usr/share/keyrings/oracle-virtualbox-2016.gpg</pre>
<p>Reinicia a máquina para carregar os novos módulos do kernel.</p>
<pre class="remontti-code"># apt update
# apt install virtualbox-7.0
# reboot</pre>
<p>Acesse seu servidor novamente e vire root.</p>
<pre class="remontti-code"># su - </pre>
<p>Faça download dos pacotes extras:</p>
<pre class="remontti-code"># cd /tmp/ 
# wget https://download.virtualbox.org/virtualbox/7.0.8/Oracle_VM_VirtualBox_Extension_Pack-7.0.8.vbox-extpack</pre>
<p>Caso esteja atualizando remova as versões mais antigas:</p>
<pre class="remontti-code"># VBoxManage extpack uninstall &quot;Oracle VM VirtualBox Extension Pack&quot;</pre>
<p>Instale os pacotes extras</p>
<pre class="remontti-code"># VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-7.0.8.vbox-extpack</pre>
<p>Responta Yes <strong>(y)</strong></p>
<p>Vamos executá-lo como o nosso usuário <strong>vbox</strong>, porque ele não precisa acessar o resto do seu sistema.</p>
<pre class="remontti-code"># useradd -d /home/vbox -m -g vboxusers -s /bin/bash vbox</pre>
<p>Defina uma senha para seu usuario vbox</p>
<pre class="remontti-code"># passwd vbox</pre>
<p>Diga ao seu sistema qual usuário vai executar o VirtualBox.</p>
<pre class="remontti-code"># echo &#039;VBOXWEB_USER=vbox&#039; &gt; /etc/default/virtualbox 
# echo &#039;VBOXWEB_HOST=127.0.0.1&#039; &gt;&gt; /etc/default/virtualbox</pre>
<p>Faça com que o vboxweb-service inicie no boot. Como dito acima nosso usuário não precisa ter acesso total ao sistema. Adicione no /etc/rc.local o comando para iniciar junto com o boot.</p>
<pre class="remontti-code"># vim /etc/rc.local</pre>
<p>Adicione</p>
<pre class="remontti-code">#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will &quot;exit 0&quot; on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#
# Solução para inicialização automatica:
# use o comando la listar as VMs criadas
# su - vbox --shell=/bin/bash -c &#039;VBoxManage list vms&#039;
# Colete as ID
# &quot;Debian&quot; {d288884d-a3d4-4903-b84e-5c6039af13b5}
# Pegue o &quot;ID&quot; da VM e use o Comando a baixo descomentando a linha:
#
# Adicione um sleep para aguardar 30seg para dar tempo do modulo do kernel ter tempo de iniciar
# sleep 30
# su - vbox --shell=/bin/bash -c &#039;VBoxHeadless -s d288884d-a3d4-4903-b84e-5c6039af13b5 &amp;&#039;
#
#
exit 0</pre>
<p>Alterare as permissões:</p>
<pre class="remontti-code"># chmod +x /etc/rc.local
# ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service</pre>
<p>Vamos instalar o serviço web + php</p>
<p>Será necessário PHP8, Para isso adicione ao repositório:</p>
<pre class="remontti-code"># wget -qO - https://packages.sury.org/php/apt.gpg | apt-key add -
# echo &quot;deb https://packages.sury.org/php/ bullseye main&quot; | tee /etc/apt/sources.list.d/sury-php.list
# apt update</pre>
<p>Instale o Apache+PHP</p>
<pre class="remontti-code"># apt install apache2 libapache2-mod-php\
 php-cli php-bcmath php-gmp php-mbstring php-zip php-curl\
 php php-common php-soap php-gd unzip php-pear php-xml php-soap</pre>
<p>Por segurança recomendo remover a assinatura do servidor, para isso:</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>Vamos também configurar nosso <a href="https://blog.remontti.com.br/3464" rel="noopener noreferrer" target="_blank">domínio virtual</a> para acessar o servidor via domínio (ex vbox.remontti.com.br) e restringir ele apenas para nossos IP de gerencia. </p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/000-default.conf</pre>
<p>Faça as devidas alterações, não esqueça de alterar em <strong>Require ip</strong> para os IPs que você vai autorizar as conexões.</p>
<pre class="remontti-code">&lt;virtualhost *:80&gt;
        Protocols h2 http/1.1
        ServerName vm.remontti.com.br
        ServerAdmin noc@remontti.com.br
        ErrorDocument 403 http://www.remontti.com.br/
 
        DocumentRoot /var/www/html
 
        &lt;Directory /var/www/html/&gt;
                Options FollowSymLinks
                AllowOverride All
                Require ip 127.0.0.1 ::1 192.168.0.0/16 172.16.0.0/12 100.64.0.0/10 10.0.0.0/8 250.0.0.0/22 2000:000::/32
        &lt;/Directory&gt;
 
        LogLevel warn 
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
&lt;/virtualhost&gt;</pre>
<p>Habilite os módulos</p>
<pre class="remontti-code"># a2enmod http2
# systemctl restart apache2</pre>
<h3>phpVirtualbox</h3>
<p>O phpVirtualbox oficial até a data desta publicação (abril/2022) a versão 5.2, porém ela já não é mais instalável no Debian 11, então iremos utilizar um <a href="https://github.com/phpvirtualbox/phpvirtualbox/network/members" rel="noopener" target="_blank">fork</a> compatível com o phpVirtualbox 7.0</p>
<p>Vamos configurar o projeto <a href="https://github.com/BartekSz95/phpvirtualbox/releases/" target="_blank" rel="noopener noreferrer">phpvirtualbox</a> by <a href="https://github.com/BartekSz95/phpvirtualbox" rel="noopener" target="_blank">Bartek Sz.</a>, dentro do diretório padrão do apache.</p>
<pre class="remontti-code"># cd /var/www/
# mv /var/www/html/ /var/www/html_old
# wget https://github.com/BartekSz95/phpvirtualbox/archive/main.zip -O phpvirtualbox.zip
# apt install zip unzip
# unzip phpvirtualbox.zip
# mv phpvirtualbox-main html
# rm phpvirtualbox.zip
# chown vbox:vboxusers html  -R
# cd /var/www/html/
# cp config.php-example config.php
# vim config.php</pre>
<pre class="remontti-code"> // ... //
var $username = &#039;vbox&#039;;
var $password = &#039;pass&#039;;
// ... //
var $language = &#039;pt_br&#039;;
var $vrdeports = &#039;9000-9100&#039;;
var $vrdeaddress = &#039;0.0.0.0&#039;;
// ... //
var $enableAdvancedConfig = true; </pre>
<p>É altamente recomendado que você tenha um firewall em cima da range de portas 9000 a 9100, pois é onde será possível fazer acesso remoto, e recomendo que depois da instalação sempre desative o acesso remoto a VM, segue um exemplo de firewall com nftables que já é o padrão no Debian 11 substituindo o antigo iptables, no exemplo já irei proteger também a porta do SSH, lembre-se de deixar seus IPs na ACL de permissões.</p>
<pre class="remontti-code"># systemctl enable nftables</pre>
<p>Modelo fechando as portas do SSH [22] e a range de acesso remoto [9000-9100], você pode personalizar de acordo com sua instalação.</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<pre class="remontti-code">#!/usr/sbin/nft -f
  
flush ruleset

table inet filter {
    # IPv4 que terao acesso 
    set acesso-total4 {
        type ipv4_addr
        flags interval
        elements = { 200.200.200.16/28, 200.200.200.0/28}
    }
    # IPv6 que terao acesso 
    set acesso-total6 {
        type ipv6_addr
        flags interval
        elements = { 2804:1234:bebe::48, 2804:4321:bebe::/48  }
    }
    chain input {
        type filter hook input priority 0;

        # Permite acesso SSH na porta 22
        ip saddr  @acesso-total4 tcp dport 22 counter accept
        ip6 saddr @acesso-total6 tcp dport 22 counter accept
        tcp dport 22 counter drop

        # Permite acesso tela remota portas padões Vbox
        ip saddr  @acesso-total4 tcp dport { 9000-9100 } counter accept
        ip6 saddr @acesso-total6 tcp dport { 9000-9100 } counter accept
        tcp dport { 9000-9100 } 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>Reinicie o nftables e verifique se o mesmo foi carregado:</p>
<pre class="remontti-code"># systemctl restart nftables
# nft list ruleset</pre>
<p>Adicione o usuario vbox ao grupo, inicialize o servi web service e reinicie a máquina. </p>
<pre class="remontti-code"># usermod -a -G vboxusers vbox
# su - vbox --shell=/bin/bash -c &#039;vboxwebsrv &amp;&#039;
# reboot</pre>
<p>Agora acesse:<br />
<strong>https://DOMINIO/</strong><br />
<strong>Usuário:</strong> admin<br />
<strong>Senha: </strong>admin</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/02/vbox-web7.png" data-rel="lightbox-gallery-9eBNuam0" data-rl_title="" data-rl_caption="" title=""><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/02/vbox-web7.png" alt="" width="1123" height="557" class="alignnone size-full wp-image-7146" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/02/vbox-web7.png 1123w, https://blog.remontti.com.br/wp-content/uploads/2023/02/vbox-web7-300x149.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/02/vbox-web7-1024x508.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/02/vbox-web7-768x381.png 768w" sizes="(max-width: 1123px) 100vw, 1123px" /></a></p>
<p><strong>Não esqueça de alterar a senha do usuário admin!</strong></p>
<p>O mais legal que você está usando quase nada do hardware da máquina para &#8220;subir&#8221; seu sistema de virtualização.</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/10/htop.png" data-rel="lightbox-gallery-9eBNuam0" data-rl_title="" data-rl_caption="" title=""><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/10/htop-1024x539.png" alt="" width="1024" height="539" class="alignnone size-large wp-image-3675" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/10/htop-1024x539.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/10/htop-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/10/htop-768x404.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/10/htop.png 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Virtulabox peca em não dar uma solução para inicialização automática, mas é muito fácil fazer isso incluindo no rc.local. Use o comando:</p>
<pre class="remontti-code">#  su - vbox --shell=/bin/bash -c &#039;VBoxManage list vms&#039;</pre>
<p>Vai ser listado os ID das suas VMs. Ex:<br />
<em>&#8220;DNS-SERVER&#8221; {d288884d-a3d4-4903-b84e-5c6039af13b5}<br />
&#8220;ZABBIX-SERVER&#8221; {a2893475-atd4-4973-b81e-6039af13bss5}</em></p>
<p>Agora que você ja tem as IDs adicione em <strong>/etc/rc.local:</strong> da seguinte forma, alterando pelas suas ID.</p>
<pre class="remontti-code">sleep 30 #  sleep para aguardar 30seg para dar tempo do modulo do kernel ter tempo de iniciar
su - vbox --shell=/bin/bash -c &#039;VBoxHeadless -s d288884d-a3d4-4903-b84e-5c6039af13b5 &amp;&#039;
su - vbox --shell=/bin/bash -c &#039;VBoxHeadless -s a2893475-atd4-4973-b81e-6039af13bss5 &amp;&#039;</pre>
<p>Agora quando o servidor reiniciar suas VMs vão iniciar automaticamente, (Não esqueça de quando for desligar o servidor fazer o processo de desligamento de cada VM)</p>
<p>Uma das vantagens deste servidor é que é o virtualbox é muito simples!!! Dentro de /home/vbox/ vão estar suas imagens sendo muito facil de fazer uma copia e migrada para algum outro servidor em caso de &#8220;pau&#8221;. É claro tenha sempre redundância de hardware em seu servidor, faça sempre pelo menos um RAID1 (espelhamento de disco) eu gosto de fazer RAID10 com pelo menos 5 SSDs, onde 1 dos SSDs eu instalo o sistema e os outros 4 (ou 6 ou 8 &#8230;) somo ex 2 (RAID0) e espelho nos outros 2 (RAID1) logo temos o RAID10.</p>
<p><strong>Acesso remoto</strong><br />
No windows você pode usar o famoso <strong>mstsc</strong> e informar seu IP:PORTA, no linux tem um pacote chamado <strong>vinagre</strong> basta instala-lo.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote.png" alt="" width="1173" height="495" class="alignnone size-full wp-image-5460" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote.png 1173w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-300x127.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-1024x432.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-768x324.png 768w" sizes="auto, (max-width: 1173px) 100vw, 1173px" /><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a.png" alt="" width="1308" height="704" class="alignnone size-full wp-image-5461" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a.png 1308w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a-300x161.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a-1024x551.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a-768x413.png 768w" sizes="auto, (max-width: 1308px) 100vw, 1308px" /></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>BÔNUS COMANDOS TERMINAL</p>
<pre class="remontti-code">
# Listar todos os tipos de sistemas operacionais 
VBoxManage list ostypes

# Criar uma VM
VBoxManage createvm --name &quot;Debian&quot; --ostype Debian_64 --register

# Definir memória (RAM) e CPUs**:
VBoxManage modifyvm &quot;Debian&quot; --memory 2048
VBoxManage modifyvm &quot;Debian&quot; --cpus 4
VBoxManage modifyvm &quot;Debian&quot; --memory 2048 --cpus 4

# Criar um disco rígido virtual (VDI) de 80GB com controladora NVMe
# Primeiro, crie o disco:
VBoxManage createmedium disk --filename ~/VirtualBox\ VMs/Debian/DebianDisk.vdi --size 81920 --format VDI
# Em seguida, crie o controlador NVMe e anexe o disco a ele:
VBoxManage storagectl &quot;Debian&quot; --name &quot;SATAController&quot; --add sata --controller IntelAhci --portcount 1 --bootable on
VBoxManage storageattach &quot;Debian&quot; --storagectl &quot;SATAController&quot; --port 0 --device 0 --type hdd --medium ~/VirtualBox\ VMs/Debian/DebianDisk.vdi

# Configurar a placa de rede em modo bridge, utilizando eth0
VBoxManage modifyvm &quot;Debian&quot; --nic1 bridged --bridgeadapter1 eth0

# Adicionando mais interfaces
VBoxManage modifyvm &quot;Debian&quot; --nic2 bridged
VBoxManage modifyvm &quot;Debian&quot; --bridgeadapter2 eth0

# Desligar o áudio:
VBoxManage modifyvm &quot;Debian&quot; --audio none

# Define momoria de video:
VBoxManage modifyvm &quot;Debian&quot; --vram 16

# Alterar a controladora gráfica
VBoxManage modifyvm &quot;Debian&quot; --graphicscontroller vmsvga

# Listar VMS
VBoxManage list vms
&quot;Debian&quot; {941d837d-b357-4d19-bd06-b4a7750e321b}

# Iniciar VM
VBoxHeadless --startvm &quot;Debian&quot;
VBoxHeadless --startvm 9bee8518-37ab-492f-b8c5-4989e87bed9b

# Desligar VM
VBoxManage controlvm &quot;Debian&quot; acpipowerbutton
VBoxManage controlvm &quot;Debian&quot; poweroff

# Lista VMs ligadas
VBoxManage list runningvms

# Tirar um snapshot: 
VBoxManage snapshot &quot;Debian&quot; take &quot;nome_snap&quot;
VBoxManage snapshot &quot;Debian&quot; take `date +&#039;%Y-%m-%d_%H-%M-%S&#039;`

# Listar snapshots: 
VBoxManage snapshot &quot;Debian&quot; list
VBoxManage snapshot &quot;941d837d-b357-4d19-bd06-b4a7750e321b&quot; list 
   Name: 2024-02-14_09-54-25 (UUID: 23c1301a-7017-4763-aded-44516d9668b0)
      Name: 2024-02-14_09-54-59 (UUID: 70fc34e7-54dc-493f-af15-6b0858c1dadb)
         Name: 2024-02-14_09-55-09 (UUID: 19cf9f02-dc46-45fb-b22a-c133cfea9f78) *

# Restaurar um snapshot: 
VBoxManage snapshot &quot;Debian&quot; restore &quot;nome_snap&quot;
VBoxManage snapshot &quot;Debian&quot; restore &quot;2024-02-14_09-54-25&quot;

# Deletar um snapshot: 
VBoxManage snapshot &quot;Debian&quot; delete &quot;nome_snap&quot;
VBoxManage snapshot &quot;Debian&quot; delete &quot;2024-02-14_09-54-59&quot;

# Recuperando uma VM pelos arquivos (incluído os SNAPS, estrutura completa)
VBoxManage registervm ~/VirtualBox\ VMs/Debian.vbox

# Exportando (OVA)
VBoxManage export &quot;Debian_12&quot; -o /caminho/Debian_12.ova

# Mais comandos

# Exemplo bridged
VBoxManage modifyvm &quot;RouterOS&quot; --nic5 bridged
VBoxManage modifyvm &quot;RouterOS&quot; --bridgeadapter5 eth0

# Exemplo intnet
VBoxManage modifyvm &quot;RouterOS&quot; --nic5 intnet
VBoxManage modifyvm &quot;RouterOS&quot; --intnet5 &quot;switch_lab&quot;
VBoxManage modifyvm &quot;RouterOS&quot; --cableconnected5 on

# Modo Promíscuo
# deny: Não permite que a interface de rede opere em modo promíscuo.
# allow-vms: Permite que a interface de rede comunique com outras máquinas virtuais.
# allow-all: Permite que a interface de rede comunique com todas as máquinas virtuais e com 
VBoxManage modifyvm &quot;RouterOS&quot; --nicpromisc5 allow-all

# Definir o tipo de placa de rede para o quinto adaptador 
# Am79C970A: AMD PCNet PCI II (Am79C970A);
#  Am79C973: AMD PCNet FAST III (Am79C973, a opção padrão);
#   82540EM: Intel PRO/1000 MT Desktop (82540EM);
#   82543GC: Intel PRO/1000 T Server (82543GC);
#   82545EM: Intel PRO/1000 MT Server (82545EM);
#    virtio: Paravirtualized network adapter (virtio-net).

VBoxManage modifyvm &quot;RouterOS&quot; --nictype5 82543GC

# Definir um endereço MAC específico para o quinto adaptador
VBoxManage modifyvm &quot;RouterOS&quot; --macaddress5 0800000000A4

# Ver informações da VM por comando
VBoxManage showvminfo &quot;RouterOS&quot;
VBoxManage showvminfo &quot;RouterOS&quot; | grep &quot;NIC&quot; 

# Para adaptadores adicionais, substitua --nic5 por --nic6, --nic7, ou --nic8, conforme necessário. 

# Precisa mais que 8? Ativa 36 slot para interfaces.
VBoxManage modifyvm &quot;RouterOS&quot; --chipset ich9 --ioapic on

VBoxManage modifyvm &quot;RouterOS&quot; --nic9 intnet
VBoxManage modifyvm &quot;RouterOS&quot; --intnet9 &quot;switch_amarelo&quot;
VBoxManage modifyvm &quot;RouterOS&quot; --cableconnected9 on
VBoxManage modifyvm &quot;RouterOS&quot; --nictype9 82543GC
VBoxManage modifyvm &quot;RouterOS&quot; --macaddress9 0800000000B1

# Definir uma mac aleatório
VBoxManage modifyvm &quot;RouterOS&quot; --macaddress1 auto
VBoxManage modifyvm &quot;RouterOS&quot; --macaddress2 auto
VBoxManage modifyvm &quot;RouterOS&quot; --macaddress3 auto
</pre>
<p>O post <a href="https://blog.remontti.com.br/7142">Servidor de virtualização Web com Debian 11 bullseye + Virtualbox 7.0</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7142/feed</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
		<item>
		<title>Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados MariaDB/MySQL com Debian 11 Bullseye</title>
		<link>https://blog.remontti.com.br/6975</link>
					<comments>https://blog.remontti.com.br/6975#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 07 Dec 2022 18:47:28 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[certificado]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debina bullseye]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[ftp ftp]]></category>
		<category><![CDATA[ftpd]]></category>
		<category><![CDATA[guro seguro]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[pure-ftpd]]></category>
		<category><![CDATA[ssl ssl]]></category>
		<category><![CDATA[tls tls]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6975</guid>

					<description><![CDATA[<p>Neste tutorial vamos montar um servidor FTP utilizando o PureFTPd com usuários no banco de dados Mysql ao invés de usar usuários do sistema, vamos ainda poder configurar quotas e limites de upload e download. Requisito: Debian 11&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6975">Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados MariaDB/MySQL com Debian 11 Bullseye</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: left;">Neste tutorial vamos montar um servidor FTP utilizando o PureFTPd com usuários no banco de dados Mysql ao invés de usar usuários do sistema, vamos ainda poder configurar quotas e limites de upload e download.</p>
<p><span id="more-6975"></span><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd.jpg" alt="" width="1000" height="474" class="alignnone size-full wp-image-6981" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd.jpg 1000w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-768x364.jpg 768w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-520x245.jpg 520w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-720x340.jpg 720w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></p>
<p><strong>Requisito:</strong><br />
<a href="https://blog.remontti.com.br/5792" rel="noopener noreferrer" target="_blank">Debian 11 Instalação Limpa</a></p>
<p>Vire root de maneira correta no Debian 11!</p>
<pre class="remontti-code"># su -</pre>
<h3>Instalação do banco de dados MariaDB</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.</p>
<p><strong>Definindo senha para o root do mariaDB</strong><br />
Para aumentar a seguraçã vamos definir uma senha para o usuário root do MariDB, não esqueça de alterar <strong>ALTERE_3ST4_SENHA</strong> pela sua senha.</p>
<pre class="remontti-code"># mariadb -u root</pre>
<pre class="remontti-code">USE mysql;
ALTER USER &#039;root&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;ALTERE_3ST4_SENHA&#039;;
FLUSH PRIVILEGES;
EXIT;</pre>
<p>Apague seus rastros, em /root/.mysql_history temos um histórico com todos os comandos dado no terminal do MariaDB, então não é legal deixar lá em texto puro a senha que setamos!</p>
<pre class="remontti-code"># &gt; /root/.mysql_history</pre>
<h3>Instalação do Pure FTP</h3>
<pre class="remontti-code"># apt install pure-ftpd-mysql</pre>
<p>Agora criaremos nosso grupo FTP (<em>grupoftp</em>) e usuário (<em>pureftpd</em>) para que nosso usuários virtuais sejam mapeados.</p>
<pre class="remontti-code"># groupadd -g 2001 ftpgroup
# useradd -u 2001 -s /bin/false -d /bin/null -c &quot;pureftpd user&quot; -g ftpgroup ftpuser</pre>
<pre class="remontti-code"># vim /etc/default/pure-ftpd-common</pre>
<p>altere</p>
<pre class="remontti-code">UPLOADUID=
UPLOADGID=</pre>
<p>para </p>
<pre class="remontti-code">UPLOADUID=2001
UPLOADGID=2001</pre>
<p>Próximo passo criar a nossa base de dados, onde ficaram armazenado as informações dos nossos usuários.</p>
<pre class="remontti-code"># mariadb -u root -p</pre>
<p>Entre com a senha de root criada anteriormente.  Não esqueça de alterar senha <strong>(SENHA_FTP_USER)</strong>.</p>
<pre class="remontti-code">CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO &#039;pureftpd&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SENHA_FTP_USER&#039;;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO &#039;pureftpd&#039;@&#039;localhost.localdomain&#039; IDENTIFIED BY &#039;SENHA_FTP_USER&#039;;
FLUSH PRIVILEGES;
</pre>
<p>Crie a tabela</p>
<pre class="remontti-code">USE pureftpd;

CREATE TABLE ftpd (
User varchar(16) NOT NULL default &#039;&#039;,
status enum(&#039;0&#039;,&#039;1&#039;) NOT NULL default &#039;0&#039;,
Password varchar(64) NOT NULL default &#039;&#039;,
Uid varchar(11) NOT NULL default &#039;-1&#039;,
Gid varchar(11) NOT NULL default &#039;-1&#039;,
Dir varchar(128) NOT NULL default &#039;&#039;,
ULBandwidth smallint(5) NOT NULL default &#039;0&#039;,
DLBandwidth smallint(5) NOT NULL default &#039;0&#039;,
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default &#039;*&#039;,
QuotaSize smallint(5) NOT NULL default &#039;0&#039;,
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
);

EXIT;
</pre>
<p>Salve o arquivo original /etc/pure-ftpd/db/mysql.conf e crie um novo com novas configurações, mais uma vez preste atenção a senha [SENHA_FTP_USER].</p>
<pre class="remontti-code"># mv /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
# vim /etc/pure-ftpd/db/mysql.conf</pre>
<p>Adicione:</p>
<pre class="remontti-code">MYSQLSocket /var/run/mysqld/mysqld.sock
MYSQLUser pureftpd
MYSQLPassword SENHA_FTP_USER
MYSQLDatabase pureftpd
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User=&quot;\L&quot; AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MYSQLGetUID SELECT Uid FROM ftpd WHERE User=&quot;\L&quot; AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MYSQLGetGID SELECT Gid FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MYSQLGetDir SELECT Dir FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)</pre>
<p>Esteja certo que você mudou o campo MYSQLPassword &#8216;SENHA_FTP_USER&#8217;</p>
<p>A configuração <strong>ChrootEveryone</strong> fará com que o PureFTPd faça chroot em todos os usuários virtuais em seu diretório pessoal, para que ele não consiga procurar diretórios e arquivos fora do diretório pessoal. A linha <strong>CreateHomeDir</strong> fará com que o PureFTPd crie o diretório inicial de um usuário quando o usuário efetuar login e o diretório inicial ainda não existir.</p>
<pre class="remontti-code"># echo yes &gt; /etc/pure-ftpd/conf/ChrootEveryone
# echo yes &gt; /etc/pure-ftpd/conf/CreateHomeDir
# echo 1 &gt; /etc/pure-ftpd/conf/TLS
# echo HIGH &gt; /etc/pure-ftpd/conf/TLSCipherSuite</pre>
<p>Gere os certificados.</p>
<pre class="remontti-code"># openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048
# openssl req -x509 -nodes -newkey rsa:2048 -sha256 -keyout \
  /etc/ssl/private/pure-ftpd.pem \
  -out /etc/ssl/private/pure-ftpd.pem
# chmod 600 /etc/ssl/private/*.pem</pre>
<p>Vamos criar agora um usuário, Qual ficará dentro do diretório <strong>/var/pure-ftpd/ </strong> onde vou deixar todos meus usuários criado, porém você pode escolher qualquer diretório, usarei a pasta /var/ pois seria o &#8220;lugar correto&#8221;.</p>
<p>Entre no mariadb com seu usuario pureftpd e senha para fazer a criação do usuário ftp, no meu ex vou criar o usuário chamado remontti.</p>
<pre class="remontti-code"># mysql -u pureftpd -p</pre>
<pre class="remontti-code">USE pureftpd;

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) 
VALUES (&#039;remontti&#039;, &#039;1&#039;, MD5(&#039;SUA_SENHA&#039;), &#039;2001&#039;, &#039;2001&#039;, &#039;/var/pure-ftpd/remontti&#039;, &#039;100&#039;, &#039;100&#039;, &#039;&#039;, &#039;*&#039;, &#039;50&#039;, &#039;0&#039;);

SELECT * FROM ftpd;
EXIT;</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb.png" data-rel="lightbox-gallery-XrSsNfeR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb.png" alt="" width="2076" height="896" class="alignnone size-full wp-image-6984" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb.png 2076w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-300x129.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-1024x442.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-768x331.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-1536x663.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-2048x884.png 2048w" sizes="auto, (max-width: 2076px) 100vw, 2076px" /></a><br />
Limpe o histórico do mariadb. Não queremos ninguém vendo o q digitamos lá <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>
<pre class="remontti-code"># &gt; /root/.mysql_history</pre>
<p>Ao fazer login o diretório /var/pure-ftpd/USUARIO será criado automaticamente.</p>
<p>Restarte o serviço e verifique o status do mesmo</p>
<pre class="remontti-code"># systemctl restart pure-ftpd-mysql
# systemctl status pure-ftpd-mysql</pre>
<p>Sempre que você queira criar um novo usuário, você tem que criar uma entrada na tabela ftpd.<br />
Explicando a estrutura da tabela:</p>
<p><strong>User:</strong> Seu usuário (ex. como no nosso usuário acima: teste).<br />
<strong>Status: </strong>0 ou 1. 0 deixará sua conta inativa, e o usuário não pode logar.<br />
<strong>Password:</strong> A senha do usuário. A senha está encriptada com MD5.<br />
<strong>UID:</strong> O userid do usuário ftp que você criou (ex: 2001)<br />
<strong>GID: </strong>O groupid do grupo ftp que você criou (ex: 2001).<br />
<strong>Dir:</strong> Diretório home do usuário (ex: /home/teste). Se não existir será criado quando logar pela primeira vez via FTP. O usuário será preso neste diretório home.<br />
<strong>ULBandwidth: </strong>Controle de Upload em KB/Sec. Use 0 para que seja ilimitado.<br />
<strong>DLBandwidth: </strong>Controle de Download em KB/sec. Use 0 para que seja ilimitado.<br />
<strong>Comment: </strong>Você pode inserir qualquer comentário (ex: Usuário da administração). Você deixa este campo limpo.<br />
<strong>Ipaccess: </strong>Você pode definir o ip que serão permitidos para conectar nesta conta FTP. Ou &#8216;*&#8217; para qualquer endereço IP.<br />
<strong>QuotaSize: </strong>Espaço de armazenamento em MB (não KB, como em ULBandwidth eDLBandwidth) Defina 0 como ilimitado.<br />
<strong>QuotaFiles:</strong> Número total de arquivos que este usuário poderá salvar. Defina 0 para ilimitado.</p>
<h3>Protegendo com Fail2ban</h3>
<pre class="remontti-code"># apt install fail2ban
# echo yes &gt; /etc/pure-ftpd/conf/DontResolve
# vim /etc/fail2ban/jail.d/defaults-debian.conf</pre>
<p>Adicione o filtro pure-ftpd.</p>
<pre class="remontti-code">[sshd]
enabled = true
[pure-ftpd]
enabled = true</pre>
<p>Restarte o fail2ban</p>
<pre class="remontti-code"># systemctl restart fail2ban</pre>
<p>Se você tiver interesse em ter uma interface web para gerenciamento recomendo:<br />
<a href="https://blog.remontti.com.br/5893" rel="noopener noreferrer" target="_blank">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin + Let’s Encrypt no Debian 11 bullseye “LAMP”</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>Fonte:<a href="http://download.pureftpd.org/pub/pure-ftpd/doc/README.MySQL" rel="noopener noreferrer" target="_blank"> http://download.pureftpd.org/pub/pure-ftpd/doc/README.MySQL</a></p>
<p>O post <a href="https://blog.remontti.com.br/6975">Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados MariaDB/MySQL com Debian 11 Bullseye</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6975/feed</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
			</item>
	</channel>
</rss>
