Como Instalar Etherpad em Servidor Próprio para Colaboração

15 min de leitura Comunicação Interna Self-Hosted
Como Instalar Etherpad em Servidor Próprio para Colaboração

Introdução ao Etherpad: Controle e Colaboração Real-Time

O Etherpad é uma ferramenta de colaboração em texto real-time amplamente utilizada por equipes de desenvolvimento, escritores, redatores e empresas que necessitam de controle absoluto sobre seus dados. Diferente de soluções proprietárias baseadas em nuvem, como Google Docs ou Notion, manter o etherpad servidor próprio garante soberania dos dados, conformidade rigorosa com a LGPD (Lei Geral de Proteção de Dados) e integração flexível com a infraestrutura existente da organização. Este guia detalha a instalação completa do Etherpad em um ambiente Linux (Ubuntu/Debian), configurando-o como uma ferramenta colaborativa linux robusta, segura e pronta para uso interno.

Ao final deste tutorial, você terá uma wiki interna self-hosted funcional, acessível via navegador seguro, capaz de suportar múltiplos usuários editando simultaneamente com latência mínima. A configuração apresentada utiliza Nginx como proxy reverso para gerenciamento de tráfego e PM2 para gerenciar o processo Node.js em segundo plano, garantindo estabilidade, reinicialização automática em caso de falhas e alta disponibilidade na sua infraestrutura TI Brasil.

A escolha do Etherpad para cenários empresariais não é aleatória. Sua arquitetura leve permite rodar em VPSs com recursos modestos, enquanto sua capacidade de versionamento histórico oferece um "controle de versão" nativo para documentos de texto, algo raro em outros editores online. Além disso, a natureza open-source permite auditoria de segurança e personalização profunda de plugins.

Neste tutorial:
  • Pré-requisitos e Preparação do Ambiente
  • Instalação do Etherpad e Configuração de Usuários
  • Configuração do Banco de Dados (SQLite vs PostgreSQL)
  • Proxy Reverso com Nginx e Segurança SSL/TLS
  • Gestão de Processos com PM2
  • Teste de Funcionalidade e Troubleshooting
  • Backup, Manutenção e Otimizações Avançadas
  • Perguntas Frequentes (FAQ)
  • Conclusão

Pré-requisitos e Preparação do Ambiente

Antes de iniciar a instalação, certifique-se de ter acesso root ou sudo ao seu servidor VPS. Recomendamos o uso de um sistema operacional recente e suportado, como Ubuntu 22.04 LTS ou Debian 12. Essas versões garantem compatibilidade com as bibliotecas modernas do Node.js e recebem atualizações de segurança regulares.

O Etherpad é notavelmente leve em termos de consumo de disco, mas requer memória RAM suficiente para rodar o runtime Node.js e o banco de dados subjacente. Para equipes pequenas (até 10 usuários simultâneos), um VPS com 1GB de RAM é suficiente. Para cenários de médio porte ou com muitos plugins, recomenda-se 2GB ou mais.

O primeiro passo crítico é atualizar os pacotes do sistema e instalar as dependências básicas necessárias para compilação, gestão de certificados e gerenciamento de processos. Execute os comandos abaixo para preparar o solo:

sudo apt update && sudo apt upgrade -y
sudo apt install build-essential git sqlite3 libsqlite3-dev curl wget certbot python3-certbot-nginx -y

Além disso, o Etherpad depende fundamentalmente do Node.js. A versão recomendada é a LTS (Long Term Support), que oferece estabilidade a longo prazo. Para este tutorial, utilizaremos o método oficial via repositório Nodesource para garantir a versão 18.x ou superior, conhecida por sua performance e suporte estendido.

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

Após a instalação, verifique se as versões estão corretas para evitar conflitos futuros:

node --version
npm --version

Se as versões retornadas forem compatíveis (Node 18+ e npm 9+), seu ambiente está pronto para receber o software.

Instalação do Etherpad

A instalação do Etherpad não segue o padrão de gerenciadores de pacotes tradicionais (como apt ou yum) porque a ferramenta é desenvolvida em Node.js e distribuída como código fonte. A maneira mais estável para ambientes de produção é clonar o repositório oficial ou baixar uma versão estável específica.

Por questões de segurança, nunca execute aplicações web como usuário root. Crie um usuário dedicado e sem permissão de login SSH para rodar o serviço:

sudo adduser --disabled-login etherpad

Navegue até o diretório onde deseja instalar o software. O padrão da indústria em instalações self-hosted é utilizar /opt, pois ele é destinado a aplicativos de terceiros e mantém o sistema limpo:

cd /opt
sudo git clone https://github.com/ether/etherpad-lite.git
sudo chown -R etherpad:etherpad etherpad-lite

Agora, entre no diretório da instalação e execute o script de dependências. Este passo é crucial, pois o Etherpad precisa baixar módulos específicos do npm (Node Package Manager) para funcionar:

cd etherpad-lite
sudo -u etherpad ./bin/installDeps.sh

Este processo pode levar alguns minutos dependendo da velocidade da sua conexão e da carga da CPU. Ao final, você verá mensagens indicando que o banco de dados SQLite foi criado e todas as dependências foram instaladas com sucesso.

Configuração do Banco de Dados

Por padrão, o Etherpad utiliza SQLite, um banco de dados leve e embutido em arquivo. Para a maioria dos casos de uso interno, startups e pequenas a médias equipes, o SQLite é mais que suficiente, oferecendo alta performance sem a complexidade de gerenciar um servidor de banco de dados separado.

No entanto, se você planeja escalar para dezenas ou centenas de usuários simultâneos, o SQLite pode tornar-se um gargalo devido ao bloqueio de escrita. Nesses casos avançados, recomenda-se migrar para PostgreSQL ou MySQL, mas isso requer configuração adicional no arquivo de settings e instalação do driver correspondente.

Para este tutorial, manteremos o SQLite pela simplicidade e robustez. A configuração principal é feita no arquivo settings.json. Copie o modelo fornecido pela instalação:

sudo cp settings.json.tpl settings.json
sudo chown etherpad:etherpad settings.json

Edite o arquivo settings.json com seu editor de texto preferido (nano ou vim). As alterações críticas incluem:

  1. dbType: Mantenha como sqlite.
  2. db: {}: Para SQLite, não é necessário alterar parâmetros internos, pois ele usa o arquivo padrão.
  3. title: Defina o título que aparecerá na aba do navegador e no topo da página (ex: "Colaboração Interna MinhaEmpresa").
  4. defaultSkin: Escolha uma interface visual. Opções populares incluem solarized-dark para devs ou flat para um visual limpo.
  5. users: Aqui você define administradores e senhas. É vital definir uma senha forte aqui, pois esta é a porta de entrada administrativa inicial.

Exemplo de configuração de usuário administrador:

"users": {
    "admin": {
        "password": "SENHA_FORTE_AQUI",
        "is_admin": true
    }
}

Defina também o dbStorage se precisar mudar o caminho do banco de dados, mas o padrão geralmente funciona bem em /var/lib/etherpad-lite/db.sqlite3. Certifique-se de que o usuário etherpad tenha permissão de escrita nesse diretório.

Configuração do Proxy Reverso com Nginx

O Etherpad roda na porta 9001 por padrão. Acessar diretamente essa porta expõe detalhes técnicos e não oferece segurança. Para acessá-lo via domínio (ex: collab.suaempresa.com.br) e garantir criptografia, é essencial configurar um proxy reverso. O Nginx é a escolha padrão da indústria para essa tarefa devido à sua eficiência no gerenciamento de conexões WebSocket necessárias para o real-time.

Crie um arquivo de configuração no diretório sites-available:

sudo nano /etc/nginx/sites-available/etherpad

Insira a seguinte configuração, ajustando o server_name para seu domínio registrado. Note a importância dos headers Upgrade e Connection, que permitem a comunicação bidirecional em tempo real entre o navegador e o servidor:

server {
    listen 80;
    server_name collab.seudominio.com.br;

    # Redirecionar todo o tráfego HTTP para HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name collab.seudominio.com.br;

    # Caminhos para os certificados SSL (Será configurado no próximo passo)
    ssl_certificate /etc/letsencrypt/live/collab.seudominio.com.br/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/collab.seudominio.com.br/privkey.pem;

    # Segurança adicional TLS
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # Tamanho máximo do upload (útil para colar textos longos ou arquivos)
    client_max_body_size 10m;

    location / {
        proxy_pass http://127.0.0.1:9001;
        proxy_http_version 1.1;
        
        # Headers essenciais para WebSocket (real-time)
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # Buffering desativado para melhor performance em tempo real
        proxy_buffering off;
    }
}

Ative a configuração criando um link simbólico e teste a sintaxe do Nginx antes de aplicar:

sudo ln -s /etc/nginx/sites-available/etherpad /etc/nginx/sites-enabled/
sudo nginx -t

Configuração de SSL com Let's Encrypt

Para garantir a segurança da comunicação e evitar avisos de "site não seguro" nos navegadores dos usuários, instale certificados SSL gratuitos através do Certbot. O Certbot interage com o Nginx para configurar automaticamente os certificados.

sudo certbot --nginx -d collab.seudominio.com.br

O assistente interativo perguntará sobre o redirecionamento HTTP/HTTPS e solicitará um email para avisos de expiração. Selecione a opção 2 para redirecionar tudo para HTTPS. Isso transforma sua ferramenta colaborativa linux em um ambiente seguro, essencial para troca de informações sensíveis corporativas.

Gestão do Processo com PM2

Executar o Etherpad diretamente via terminal (com npm start) não é adequado para produção. Se a conexão SSH cair ou houver um erro de memória, o serviço parará e a colaboração será interrompida. Utilizaremos o PM2, um gerenciador de processos em produção para aplicações Node.js.

Instale o PM2 globalmente:

sudo npm install pm2 -g

Inicie o Etherpad com o usuário dedicado e nomeie a instância para fácil identificação:

cd /opt/etherpad-lite
sudo -u etherpad pm2 start bin/epetherpad-lite --name "etherpad"

Configure o PM2 para iniciar automaticamente em caso de reboot do servidor. Isso é feito gerando um script de inicialização systemd:

sudo pm2 startup systemd
sudo -u etherpad pm2 save

Agora, o Etherpad está rodando em background, monitorado pelo PM2, e acessível via seu domínio seguro. Você pode verificar o status com pm2 status.

Verificação e Troubleshooting

Abra um navegador e acesse https://collab.seudominio.com.br. Você verá a tela inicial do Etherpad. Clique em "Criar nova página".

Verificações importantes:

  • Colaboração Real-Time: Abra a mesma página em duas abas diferentes ou em dois computadores distintos. Digite simultaneamente; as alterações devem aparecer instantaneamente em ambos, com cores diferentes para cada usuário.
  • Histórico: O Etherpad salva automaticamente o histórico de edições. Verifique se é possível reverter para versões anteriores clicando no ícone de relógio.
  • Login: Se configurou usuários, teste o login na barra lateral direita para gerenciar permissões (leitura/escrita).

Atenção: Se houver problemas de carregamento ou falha na conexão em tempo real, verifique as portas no firewall. A porta 9001 deve estar fechada para o público externo, sendo acessível apenas pelo Nginx localmente.

Configure o UFW (Uncomplicated Firewall) corretamente:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Não abra a porta 9001 publicamente!
sudo ufw enable

Manutenção, Backup e Otimizações

Para manter sua infraestrutura TI Brasil em dia, é crucial implementar rotinas de backup. Os dados do Etherpad estão contidos principalmente no banco de dados SQLite e na pasta de configurações.

Crie um script simples de backup automatizado:

#!/bin/bash
BACKUP_DIR="/backups/etherpad"
DATE=$(date +%F)
mkdir -p $BACKUP_DIR

# Backup do banco de dados
sudo cp /var/lib/etherpad-lite/db.sqlite3 $BACKUP_DIR/db-${DATE}.sqlite3

# Backup das configurações e plugins (opcional, mas recomendado)
sudo tar -czf $BACKUP_DIR/config-${DATE}.tar.gz -C /opt/etherpad-lite settings.json node_modules/static

# Manter apenas backups dos últimos 30 dias para economizar espaço
find $BACKUP_DIR -name "*.sqlite3" -mtime +30 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete

Agende este script via cron para rodar diariamente:

sudo crontab -e
# Adicione a linha:
0 2 * * * /root/scripts/backup_etherpad.sh

Otimizações Avançadas

Para ambientes com alta carga ou requisitos específicos, considere as seguintes otimizações:

  1. Migração para PostgreSQL: Para alta concorrência, instale o Postgres e atualize o settings.json para usar o driver postgres, instalando também o pacote npm install pg.
  2. Cache Redis: Embora o Etherpad use memória RAM, configurar um cache externo pode melhorar a performance de sessões em instâncias muito grandes.
  3. Rate Limiting no Nginx: Proteja-se contra ataques DDoS ou abuso de API adicionando limitação de requisições no bloco server do Nginx.
limit_req_zone $binary_remote_addr zone=etherpad:10m rate=10r/s;
...
location / {
    limit_req zone=etherpad burst=20 nodelay;
    ...
}

Perguntas Frequentes (FAQ)

Posso usar o Etherpad com Google Auth ou LDAP?

Sim. O Etherpad suporta diversos plugins de autenticação. Para integração corporativa, é comum instalar o plugin ep_auth_ldap ou configurar OAuth2 para permitir login com contas existentes da empresa, evitando a gestão manual de senhas locais.

O Etherpad salva automaticamente?

Sim, o Etherpad salva alterações em tempo real a cada caractere digitado. Além disso, ele mantém um histórico completo de todas as edições, permitindo que você visualize quem mudou o quê e quando, e reverta para qualquer ponto no tempo.

Qual a diferença entre Etherpad e Google Docs?

A principal diferença é a soberania dos dados. No Google Docs, seus dados ficam nos servidores do Google. No Etherpad self-hosted, os dados permanecem em seu servidor, sob seu controle total, o que é crucial para conformidade com LGPD e segurança de propriedade intelectual.

Como atualizo o Etherpad?

A atualização envolve parar o serviço PM2, atualizar o código fonte via git pull, instalar novas dependências com npm install e reiniciar. É recomendável fazer backup antes de cada atualização maior para evitar perda de configurações.

O Etherpad suporta edição de documentos offline?

Não nativamente. O Etherpad requer conexão de rede ativa para sincronizar as alterações em tempo real. No entanto, como é uma aplicação web leve, pode ser adaptada com Service Workers para funcionar como PWA (Progressive Web App), mas a experiência offline avançada não é o foco principal da ferramenta.

Conclusão

A instalação de um etherpad servidor próprio oferece uma solução de comunicação interna self-hosted poderosa, segura e econômica. Ao seguir os passos deste tutorial, você estabeleceu uma base sólida para colaboração em texto real-time, protegida por SSL e gerenciada por ferramentas profissionais como Nginx e PM2.

Diferente de ferramentas genéricas, essa configuração permite personalização profunda, desde skins visuais até plugins para integração com Slack ou GitHub, tornando-a a ferramenta colaborativa linux ideal para equipes técnicas no Brasil. Manter o controle sobre sua infraestrutura de colaboração é um passo estratégico para a segurança da informação.

Pronto para implementar essa solução em sua empresa? A Toda Solução oferece infraestrutura otimizada para hospedar aplicações como o Etherpad com alta performance e suporte especializado. Conte conosco para garantir que sua colaboração interna seja tão eficiente quanto segura.

Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000