este guia documenta como configurar um servidor com CouchDB em Docker para servir como backend do plugin Self-hosted LiveSync do Obsidian, garantindo sincronização segura entre dispositivos via VPN com WireGuard.
pré-requisitos
servidor com Linux (Debian 12 foi utilizado no exemplo)
docker compose up -d → sobe o container em segundo plano.
docker compose logs -f couchdb → mostra os logs em tempo real.
mensagem esperada: Apache CouchDB has started. Time to relax.
diretórios criados para armazenar dados e configurações persistentes do CouchDB. isso garante que, mesmo que o container seja recriado, os dados não se percam.
couchdb-data → onde ficam os dados do banco (notas, índices, etc)
couchdb-etc → onde ficam arquivos de configuração adicionais
configuração do CouchDB
com o container do CouchDB rodando, é hora de criar o banco de dados e configurar as permissões.
adicionar o username obsidian_user no campo “members” → “users” → “add user”
backup automatizado
1. instalação do rclone e configuração do Google Drive
instalar rclone no servidor:
curl https://rclone.org/install.sh | sudo bash
configurar o acesso ao Google Drive:
rclone config
n para criar uma nova configuração
dar um nome para a configuração (exemplo: gdrive)
escolher o tipo de storage drive
seguir as instruções para autenticar a conta do google com o client id previamente criado
escolher o escopo de acesso 3 (drive.file)
seguir as instruções para autenticação do rclone
2. criação do script
script que compacta apenas o diretório couchdb-data, onde ficam armazenados os bancos. o script mantém apenas os últimos 7 dias de backup (ajustável), e roda em um cronjob, garantindo a execução automática sem intervenção manual. os logs ajudam a verificar se o backup rodou corretamente.
criar o script backup-couchdb.sh em /usr/local/bin/:
#!/bin/bash# diretório do projetoPROJECT_DIR=/home/[USER]/obsidian-syncBACKUP_DIR=/home/[USER]/backups# nome do arquivo de backup com dataBACKUP_FILE=backup-couchdb-$(date +%F).tar.gz# garante que a pasta de backup existemkdir -p $BACKUP_DIR# compacta o diretório de dadostar -czf $BACKUP_DIR/$BACKUP_FILE -C $PROJECT_DIR couchdb-data# envia para google driverclone copy "$BACKUP_DIR/$BACKUP_FILE" gdrive:/backups-couchdb# remove backups mais antigos que 7 diasfind $BACKUP_DIR -type f -name "backup-couchdb-*.tar.gz" -mtime +7 -delete
dar permissão de execução:
sudo chmod +x /usr/local/bin/backup-couchdb.sh
3. criação do cronjob
editar o cron do usuário:
crontab -e
adicionar ao arquivo a linha abaixo, para rodar o job de backup diariamente às 2h da manhã:
cada arquivo terá o formato backup-couchdb-[YYYY]-[MM]-[DD].tar.gz
acesso seguro ao CouchDB com WireGuard
para permitir que o plugin Obsidian LiveSync acesse o CouchDB hospedado em um servidor remoto, pode-se configurar uma VPN privada com WireGuard para acessar o banco remotamente, sem exposição à internet.
o servidor (onde está o CouchDB) atua como host da VPN.
os dispositivos clientes (computador, celular, tablet) se conectam ao servidor via WireGuard.
após a conexão, os clientes acessam o CouchDB como se estivessem na mesma rede local.
1. instalação WireGuard
o WireGuard deve ser instalado no servidor onde está o banco de dados, e também em todos os dispositivos (clientes) que irão sincronizar com ele.
instalação no servidor
instalar WireGuard:
sudo apt updatesudo apt install wireguard
instalação nos clientes
Linux: instalação via gerenciador de pacotes (apt, brew, etc.)
sintoma: “Permission denied” ao escrever em /opt/couchdb/...
soluções:
preferida: não usar user: no compose (deixar padrão do container).
alternativa: ajustar ownership no host:
sudo chown -R 5984:5984 couchdb-data couchdb-etc
warn sobre bancos do sistema ausentes
sintoma: avisos sobre bancos do sistema ausentes (_users, _replicator, _global_changes)
causas: inicialização não criou DBs; falta de permissão de escrita.
soluções:
verificar permissões (item acima)
criar os DBs manualmente:
curl -X PUT http://admin:112@localhost:5984/_userscurl -X PUT http://admin:112@localhost:5984/_replicatorcurl -X PUT http://admin:112@localhost:5984/_global_changes