<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>senhas | Self-Hosted!</title><link>https://blog.brumarino.com/tags/senhas/</link><description>Post novo no “Rack” todo dia às 7AM. Proxmox, rede, backup, UPS, IA e tudo o que tenho estudado.</description><language>pt-BR</language><managingEditor>Bruno Marino</managingEditor><image><url>https://blog.brumarino.com/brand/icon-144.png</url><title>senhas | Self-Hosted!</title><link>https://blog.brumarino.com/tags/senhas/</link><width>144</width><height>144</height></image><webfeeds:icon>https://blog.brumarino.com/brand/icon-192.png</webfeeds:icon><webfeeds:logo>https://blog.brumarino.com/brand/symbol.svg</webfeeds:logo><webfeeds:accentColor>2B3036</webfeeds:accentColor><lastBuildDate>Sun, 25 Oct 2026 07:00:00 -0300</lastBuildDate><atom:link href="https://blog.brumarino.com/tags/senhas/index.xml" rel="self" type="application/rss+xml"/><item><title>Vaultwarden para a família: HTTPS, convites e backup</title><link>https://blog.brumarino.com/vaultwarden-familia-homelab/</link><pubDate>Sun, 25 Oct 2026 07:00:00 -0300</pubDate><guid>https://blog.brumarino.com/vaultwarden-familia-homelab/</guid><category>Apps self-hosted</category><description>O Vaultwarden é o cofre de senhas da minha família. O que é obrigatório num servidor assim: HTTPS, cadastro fechado, /admin protegido e backup.</description><content:encoded><![CDATA[<p>Aqui em casa, o <strong>Vaultwarden</strong> é o <strong>cofre de senhas da família</strong>. O meu primeiro Vaultwarden veio de um script do <a href="/community-scripts-proxmox/">community-scripts</a>.</p>
<p>Justamente por guardar as senhas de todo mundo, ele é o serviço que mais exige cuidado. Neste post junto o que considero obrigatório num Vaultwarden de família: HTTPS, cadastro fechado, painel de administração protegido e backup do jeito certo, tudo conferido na documentação oficial do projeto.</p>
<h2 id="o-que-é-o-vaultwarden">O que é o Vaultwarden <a class="anchor" href="#o-que-%c3%a9-o-vaultwarden" aria-label="Link para esta seção">#</a></h2>
<p>O Vaultwarden é uma implementação alternativa do servidor do Bitwarden, escrita em Rust e muito mais leve que o servidor oficial. Ele é compatível com os aplicativos oficiais do Bitwarden: a extensão do navegador, os apps de celular e o cofre web funcionam apontando para o seu servidor.</p>
<p>Para uma família, isso quer dizer que cada pessoa usa os mesmos apps que usaria com o Bitwarden, e as senhas ficam no seu homelab. Um container LXC pequeno dá conta com folga.</p>
<h2 id="https-não-é-opcional">HTTPS não é opcional <a class="anchor" href="#https-n%c3%a3o-%c3%a9-opcional" aria-label="Link para esta seção">#</a></h2>
<p>A primeira coisa que pega quem instala o Vaultwarden: <strong>o cofre web não funciona sem HTTPS</strong> na maioria dos navegadores. A documentação explica o motivo: o cofre usa as APIs de criptografia do navegador, que só ficam disponíveis em conexões seguras.</p>
<p>O caminho recomendado pela documentação é colocar o Vaultwarden atrás de um <strong>proxy reverso</strong> que cuida do HTTPS. No meu homelab, as aplicações que precisam ser acessadas de fora são publicadas pelo <strong>Cloudflare Tunnel</strong>, que entrega o endereço com HTTPS sem abrir portas no roteador. Para quem prefere um proxy dentro de casa, a documentação cita o Caddy como uma boa opção para começar, porque ele obtém certificados sozinho.</p>
<aside class="alert alert--warning">
  <p class="alert__title">Atenção</p>
  <p>Publicar o cofre de senhas na internet é uma decisão séria. Se você publicar, use cadastro fechado (próxima seção), senhas mestras fortes e o segundo fator em todas as contas. Se a família só usa em casa ou pela VPN, não publicar é ainda mais seguro.</p>
</aside><h2 id="cadastro-fechado-e-convites">Cadastro fechado e convites <a class="anchor" href="#cadastro-fechado-e-convites" aria-label="Link para esta seção">#</a></h2>
<p>Por padrão, qualquer pessoa que chega na página do seu Vaultwarden pode criar uma conta. Num servidor de família, isso precisa ser desligado. A documentação mostra como, com uma variável de ambiente:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">SIGNUPS_ALLOWED</span><span class="o">=</span><span class="nb">false</span>
</span></span></code></pre></div><p>Com o cadastro fechado, o administrador ainda pode <strong>convidar pessoas pelo painel de administração</strong>. Assim cada membro da família entra por convite, e ninguém de fora consegue se cadastrar. A documentação lembra um detalhe: quem foi convidado pode acessar a página <code>/#/signup</code> e se cadastrar com o e-mail do convite, mesmo que o link de criar conta não apareça.</p>
<h2 id="o-painel-de-administração">O painel de administração <a class="anchor" href="#o-painel-de-administra%c3%a7%c3%a3o" aria-label="Link para esta seção">#</a></h2>
<p>O painel de administração (em <code>/admin</code>) só existe se você definir um token, na variável <code>ADMIN_TOKEN</code>. Quem souber o token tem acesso total ao painel, então ele precisa ser tratado como uma senha de root.</p>
<p>A documentação recomenda <strong>não guardar o token em texto puro</strong>, e sim um hash Argon2 gerado pelo próprio Vaultwarden:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">vaultwarden <span class="nb">hash</span>
</span></span></code></pre></div><p>O comando pede a senha duas vezes e devolve uma string que começa com <code>$argon2id$</code>. É essa string que vai no <code>ADMIN_TOKEN</code>; para entrar no painel, você usa a senha que digitou, não o hash.</p>
<aside class="alert alert--tip">
  <p class="alert__title">Dica</p>
  <p>Guarde variáveis como <code>ADMIN_TOKEN</code> num arquivo de configuração fora de qualquer repositório, com permissão <code>600</code>, como faço com todos os segredos do homelab. E, se o painel não está em uso, dá para deixar o token vazio e o painel fica desativado.</p>
</aside><h2 id="backup-do-jeito-certo">Backup do jeito certo <a class="anchor" href="#backup-do-jeito-certo" aria-label="Link para esta seção">#</a></h2>
<p>Perder o cofre da família seria um dos piores cenários do homelab, e eu já sei o que é perder tudo. Pela documentação do Vaultwarden, os arquivos que importam ficam na pasta <code>data</code>:</p>
<table>
	<thead>
			<tr>
					<th>Arquivo ou pasta</th>
					<th>Precisa de backup?</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>db.sqlite3</code></td>
					<td>Sim: guarda quase tudo</td>
			</tr>
			<tr>
					<td><code>attachments/</code></td>
					<td>Sim: os anexos não ficam no banco</td>
			</tr>
			<tr>
					<td><code>config.json</code></td>
					<td>Recomendado, se você configura pelo painel (tem dados sensíveis)</td>
			</tr>
			<tr>
					<td><code>rsa_key*</code></td>
					<td>Recomendado: assinam os logins (a chave privada é sensível)</td>
			</tr>
			<tr>
					<td><code>sends/</code></td>
					<td>Opcional</td>
			</tr>
			<tr>
					<td><code>icon_cache/</code></td>
					<td>Não precisa: é só cache de ícones</td>
			</tr>
	</tbody>
</table>
<p>Copiar o <code>db.sqlite3</code> com o serviço rodando pode pegar o banco no meio de uma escrita. A documentação recomenda o comando <code>.backup</code> do SQLite, que faz uma cópia consistente mesmo com o banco em uso:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sqlite3 /caminho/data/db.sqlite3 <span class="s2">&#34;.backup &#39;/caminho/backups/db-</span><span class="k">$(</span>date <span class="s1">&#39;+%Y%m%d-%H%M&#39;</span><span class="k">)</span><span class="s2">.sqlite3&#39;&#34;</span>
</span></span></code></pre></div><p>No meu caso, o container inteiro entra no vzdump da noite, como os outros. A rotina está no post sobre <a href="/backup-proxmox-vzdump/">backup com vzdump</a>. Uma cópia do banco com o <code>.backup</code>, antes do vzdump, é uma camada a mais que vale a pena para um serviço tão importante.</p>
<p>Na hora de restaurar, a documentação pede atenção a um detalhe: pare o Vaultwarden antes e, se for restaurar um arquivo gerado pelo <code>.backup</code>, apague o <code>db.sqlite3-wal</code> que estiver na pasta. Um arquivo WAL antigo pode corromper o banco restaurado.</p>
<aside class="alert alert--caution">
  <p class="alert__title">Cuidado</p>
  <p>Os arquivos de backup do Vaultwarden contêm os cofres (criptografados com a senha mestra de cada pessoa) e chaves sensíveis. Se o backup sai de casa, ele tem que sair criptografado.</p>
</aside><h2 id="para-a-família-usar-de-verdade">Para a família usar de verdade <a class="anchor" href="#para-a-fam%c3%adlia-usar-de-verdade" aria-label="Link para esta seção">#</a></h2>
<p>A parte técnica é metade do trabalho. A outra metade é a família usar. O que ajuda:</p>
<ul>
<li><strong>Instalar a extensão do navegador e o app do celular</strong> de cada pessoa, já apontando para o seu servidor.</li>
<li><strong>Segundo fator em todas as contas</strong>, configurado no próprio cofre.</li>
<li><strong>Explicar a senha mestra:</strong> sem ela, nem o administrador consegue abrir o cofre de ninguém. Vale combinar onde guardar uma cópia em papel.</li>
</ul>
<h2 id="resumindo">Resumindo <a class="anchor" href="#resumindo" aria-label="Link para esta seção">#</a></h2>
<ul>
<li><strong>Vaultwarden</strong> é um servidor compatível com os apps do Bitwarden, leve o bastante para um LXC pequeno.</li>
<li><strong>HTTPS é obrigatório</strong> para o cofre web; use proxy reverso ou o Cloudflare Tunnel.</li>
<li><strong>Feche o cadastro</strong> com <code>SIGNUPS_ALLOWED=false</code> e convide a família pelo painel.</li>
<li><strong>Proteja o <code>/admin</code></strong> com um token em hash Argon2 gerado por <code>vaultwarden hash</code>.</li>
<li><strong>Faça backup com <code>.backup</code> do SQLite</strong>, inclua <code>attachments/</code> e as chaves, e teste a restauração.</li>
</ul>
<p>Um cofre de senhas da família pede mais cuidado que qualquer outro serviço do homelab. Com esses cuidados, ele vira uma das coisas mais úteis que dá para hospedar em casa.</p>
]]></content:encoded></item></channel></rss>