← Voltar

Proxmox Backup Server sobre LXC com Armazenamento NFS em TrueNAS

Proxmox Backup Server sobre LXC com Armazenamento NFS em TrueNAS

Se você acha que precisa de uma VM inteira só pra rodar backup, pare agora. Esse é o tipo de decisão que infla seu cluster sem necessidade.

Montar o Proxmox Backup Server (PBS) dentro de um contêiner LXC no Proxmox VE é uma das formas mais eficientes de aproveitar hardware existente sem desperdiçar recursos com overhead de virtualização. E se você delegar o armazenamento real para um Dataset do TrueNAS exposto via NFS, ganha o melhor dos dois mundos: computação leve no host + ZFS robusto no storage.

Neste artigo vamos do zero ao datastore funcionando: criar o Dataset no TrueNAS, configurar o share NFS, montar no host Proxmox, criar o LXC, passar o bind mount para dentro do container, instalar o PBS via script e finalmente criar o datastore apontando para o NFS.

Sem enrolação.


Criar o Dataset no TrueNAS

Na interface web do TrueNAS, vá em Datasets e crie um novo dentro do Pool desejado. Recomendações:

  • Nome: pbs-datastore (ou o que preferir)
  • Dataset Preset: Multiprotocol
  • Create NFS Share: ✅ marcado
  • Create SMB Share: ❌ desmarcado
Criando Dataset no TrueNAS

Expanda as opções avançadas e configure:

  • ACL Type: SMB/NFSv4
  • ACL Mode: Passthrough
Configurações avançadas do Dataset

Permissões do Dataset

O PBS dentro do LXC escreve como backup:backup (UID/GID 34:34). Para que o NFS não rejeite as escrituras, precisamos alinhar as permissões.

Em Datasetspbs-datastorePermissionsEdit

Clique no botão Set ACL e cancele o diálogo de “Select a preset ACL”:

Editando permissões do Dataset

Em Access Control List, clique em + Add Item, selecione o usuário backup e aplique com Save Access Control List:

Adicionando usuário backup ao ACL

Ajustes no Share NFS

Em SharesUnix Shares (NFS), selecione o share criado e edite. Vá em Advanced Options e configure:

  • Mapall User: backup
  • Mapall Group: backup
Configuração avançada do share NFS

Verifique se o serviço NFS está ativo em System Settings → Services e configurado para iniciar no boot. Se tiver firewall no TrueNAS, abra as portas NFS (2049, além de 111 e as do mountd se usar NFSv3).


Montar o NFS no Host Proxmox

Existem dois caminhos: adicionar como Storage pela GUI do Proxmox (Datacenter → Storage → Add → NFS) ou montar manualmente via /etc/fstab. Para passar limpo para um LXC como bind mount, a segunda opção é mais limpa.

No host Proxmox:

mkdir -p /mnt/pbs-nfs

Edite /etc/fstab e adicione:

# NFS PBS
10.10.0.2:/mnt/tank/pbs-datastore  /mnt/pbs-nfs  nfs  defaults,noatime,nofail,nfsvers=4  0 0

Substitua 10.10.0.2 pelo IP do TrueNAS e /mnt/tank/pbs-datastore pela rota real do Dataset.

Monte e valide:

systemctl daemon-reload
mount -a
df -h /mnt/pbs-nfs

Criar o LXC para PBS

Pela GUI do Proxmox, crie um container com:

  • Template: debian-13-standard
  • Hostname: pbs
  • Unprivileged container:
  • Disk: 8 GB (suficiente — os backups vivem no NFS)
  • CPU: 2 cores
  • RAM: 2048 MB (PBS usa bastante memória ao verificar chunks)
  • Network: IP estática recomendada

Não inicie o container ainda. Primeiro precisamos editar a configuração para adicionar o bind mount.

Adicionar o ponto de montagem via .conf

Anote o CTID (exemplo: 200) e edite:

nano /etc/pve/lxc/200.conf

Adicione ao final:

mp0: /mnt/pbs-nfs,mp=/mnt/datastore,backup=0,shared=1
  • mp0: índice do mount point
  • /mnt/pbs-nfs: rota no host (nosso NFS montado)
  • mp=/mnt/datastore: rota dentro do LXC onde aparecerá
  • backup=0: excluir do backup do próprio LXC
  • shared=1: indicar ao Proxmox que o storage é compartilhado

Salve e inicie o container:

pct start 200
pct enter 200

Dentro do container, verifique:

ls -la /mnt/datastore
df -h /mnt/datastore

Se o NFS aparecer montado, está tudo certo.


Script de Instalação do PBS

Dentro do LXC, ao invés de copiar comandos um a um, automatizamos com um script seguindo a documentação oficial do Proxmox.

Crie o arquivo:

nano install-pbs.sh

Com este conteúdo:

#!/bin/bash
set -e

echo "=== Instalação do Proxmox Backup Server ==="

echo "[1/4] Baixando chave do repositório..."
wget https://enterprise.proxmox.com/debian/proxmox-archive-keyring-trixie.gpg \
    -O /usr/share/keyrings/proxmox-archive-keyring.gpg

echo "[2/4] Criando arquivo de repositório..."
cat > /etc/apt/sources.list.d/proxmox.sources << 'EOF'
Types: deb
URIs: http://download.proxmox.com/debian/pbs
Suites: trixie
Components: pbs-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF

echo "[3/4] Atualizando cache e instalando PBS..."
apt update
apt upgrade -y
apt install -y proxmox-backup-server

echo "[4/4] Removendo repositório Enterprise..."
rm -f /etc/apt/sources.list.d/pbs-enterprise.sources

echo ""
echo "=== Instalação concluída com sucesso ==="

Salve e execute:

chmod +x install-pbs.sh
./install-pbs.sh

Em poucos minutos o PBS estará rodando na porta 8007.


Criar o Datastore dentro do PBS

Acesse a interface web em https://<ip-do-lxc>:8007 e faça login com root@pam e a senha root do LXC.

Vá em DatastoreAdd Datastore:

  • Name: truenas-nfs
  • Backing Path: /mnt/datastore (a rota do bind mount dentro do LXC — que na realidade é o NFS do TrueNAS)
  • GC Schedule: daily
  • Prune Schedule: daily
Criando Datastore no PBS

Confirme e o PBS criará a estrutura de diretórios (.chunks/, vm/, ct/, etc.) diretamente sobre o Dataset do TrueNAS.


Conclusão

Com essa arquitetura você tem o melhor de três mundos: Proxmox VE para virtualização, PBS para backups com deduplicação e incrementais eficientes, e TrueNAS como camada de armazenamento robusta com ZFS, snapshots nativos e replicação. Tudo dentro de um LXC leve que consome recursos mínimos no host.

Próximos passos recomendados:

  1. Configure jobs de verificação semanais — o PBS precisa validar chunks periodicamente
  2. Ative snapshots ZFS do Dataset no TrueNAS — segunda linha de defesa contra corrupção silenciosa
  3. Replicação para um TrueNAS secundário — regra 3-2-1: 3 cópias, 2 mídias, 1 offsite

Backup sem redundância real é só otimismo disfarçado de procedimento. Resolva isso de uma vez.