AppFlowy Self-Hosted representa uma evolução significativa na forma como profissionais de TI, desenvolvedores e equipes de infraestrutura gerenciam conhecimento. Diferente de soluções SaaS tradicionais que mantêm seus dados em servidores terceirizados, a abordagem self-hosted coloca o controle total da informação nas mãos do administrador do sistema. Para quem trabalha com infraestrutura DevOps, a necessidade de manter documentação técnica, runbooks e wikis internas acessíveis, seguras e auditáveis é crítica. Neste tutorial, vamos detalhar como instalar e configurar o AppFlowy em um ambiente Linux dedicado ou VPS, garantindo que sua hospedagem de dados esteja alinhada com os princípios de segurança e privacidade.
O AppFlowy é uma alternativa open source ao Notion, construída com Flutter e Rust. Sua arquitetura permite alta performance e baixa latência, características essenciais para ambientes corporativos onde o tempo de resposta da documentação afeta a produtividade da equipe. Ao optar por um servidor próprio, você elimina dependências de terceiros e garante conformidade com políticas internas de retenção de dados.
Pré-requisitos e Preparação do Ambiente
Antes de iniciar o processo de instalação, é fundamental garantir que o servidor atenda aos requisitos mínimos para rodar o AppFlowy Server. Embora a aplicação seja otimizada, ela depende de um banco de dados PostgreSQL e de serviços auxiliares para armazenamento de arquivos (se necessário). Recomendamos o uso de uma distribuição Linux estável, como Ubuntu 22.04 LTS ou Debian 12.
O primeiro passo é atualizar o sistema operacional e instalar as ferramentas básicas de gerenciamento. Conecte-se ao seu servidor via SSH e execute os seguintes comandos para garantir que o repositório esteja atualizado:
sudo apt update
sudo apt upgrade -y
sudo apt install curl git wget -y
Além disso, verifique a disponibilidade de memória RAM. O AppFlowy Server consome recursos moderados, mas ter pelo menos 2GB de RAM disponíveis (sem contar o uso do banco de dados) é recomendado para um desempenho fluido em produção.
Instalação do Banco de Dados PostgreSQL
O AppFlowy utiliza o PostgreSQL como seu motor principal de armazenamento. A instalação deve ser feita antes da aplicação para garantir que as credenciais e o esquema do banco estejam prontos. No Linux, a instalação é direta através do gerenciador de pacotes.
sudo apt install postgresql postgresql-contrib -y
Após a instalação, inicie o serviço e garanta que ele esteja ativo na inicialização do sistema:
sudo systemctl enable postgresql
sudo systemctl start postgresql
Agora, crie um usuário dedicado e um banco de dados para o AppFlowy. Isso segue a prática recomendada de princípio do menor privilégio, evitando o uso do superusuário postgres pela aplicação.
sudo -u postgres psql
Dentro do prompt do PostgreSQL, execute os comandos abaixo para criar o banco e o usuário. Substitua seusenha por uma senha forte e complexa:
CREATE DATABASE appflowy;
CREATE USER appflowy_user WITH ENCRYPTED PASSWORD 'seusenha';
GRANT ALL PRIVILEGES ON DATABASE appflowy TO appflowy_user;
Saia do prompt digitando \q.
Instalação e Configuração do AppFlowy Server
A instalação do servidor AppFlowy pode ser feita de várias formas, incluindo Docker, binários pré-compilados ou código fonte. Para ambientes de produção em VPS, a utilização de Docker Compose é a abordagem mais robusta e fácil de manter, pois isola as dependências e facilita atualizações futuras.
Crie um diretório para o projeto:
mkdir ~/appflowy-server
cd ~/appflowy-server
Crie um arquivo docker-compose.yml. Este arquivo definirá os serviços necessários: o servidor AppFlowy e, opcionalmente, um serviço de armazenamento se você precisar persistir arquivos locais (embora o padrão use S3 ou local mount).
nano docker-compose.yml
Cole a seguinte configuração no arquivo. Certifique-se de ajustar as variáveis de ambiente, especialmente APPFLOWY_POSTGRESQL_HOST e APPFLOWY_POSTGRESQL_PASSWORD:
version: '3.8'
services:
appflowy-server:
image: ghcr.io/appflowy-io/appflowy-server:latest
container_name: appflowy_server
restart: unless-stopped
ports:
- "7865:7865"
environment:
- APPFLOWY_POSTGRESQL_HOST=127.0.0.1
- APPFLOWY_POSTGRESQL_PORT=5432
- APPFLOWY_POSTGRESQL_USER=appflowy_user
- APPFLOWY_POSTGRESQL_PASSWORD=seusenha
- APPFLOWY_POSTGRESQL_DBNAME=appflowy
- APPFLOWY_IO_DOMAIN=localhost # Altere para seu domínio público
volumes:
- appflowy-data:/data
volumes:
appflowy-data:
Neste exemplo, estamos usando o PostgreSQL local. Se você estiver em uma arquitetura de microserviços onde o banco está em outro servidor, altere APPFLOWY_POSTGRESQL_HOST para o IP ou nome DNS do servidor de banco de dados.
Inicie os contêineres com:
docker compose up -d
Verifique se o serviço está rodando corretamente:
docker ps
O servidor estará acessível na porta 7865. Para produção, você não deve expor essa porta diretamente à internet. Utilize um proxy reverso.
Configuração do Proxy Reverso com Nginx
Para garantir segurança e permitir o uso de HTTPS (SSL/TLS), configuraremos o Nginx como um proxy reverso. Isso é padrão em qualquer wiki linux profissional ou serviço web hospedado internamente.
Instale o Nginx:
sudo apt install nginx certbot python3-certbot-nginx -y
Crie um arquivo de configuração no site-available. Substitua seu-dominio.com pelo domínio real que você aponta para esta VPS:
sudo nano /etc/nginx/sites-available/appflowy
Insira a seguinte configuração:
server {
listen 80;
server_name seu-dominio.com www.seu-dominio.com;
location / {
proxy_pass http://127.0.0.1:7865;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
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;
}
}
Habilite a configuração e teste o Nginx:
sudo ln -s /etc/nginx/sites-available/appflowy /etc/nginx/sites-enabled/
sudo nginx -t
Se o teste for bem-sucedido, recarregue o serviço:
sudo systemctl reload nginx
Habilitando HTTPS com Let's Encrypt
A segurança de dados em trânsito é mandatória. Utilize o Certbot para obter certificados SSL gratuitos e configurá-los automaticamente no Nginx:
sudo certbot --nginx -d seu-dominio.com -d www.seu-dominio.com
O assistente perguntará se deseja redirecionar todo o tráfego HTTP para HTTPS. Escolha a opção 2 (Redirecionamento). Isso garante que todas as conexões com sua wiki linux sejam criptografadas.
Autenticação e Acesso Inicial
Ao acessar https://seu-dominio.com pela primeira vez, o AppFlowy iniciará um fluxo de registro. Como esta é uma instalação self-hosted, você será o primeiro administrador. Crie uma senha forte para a conta admin. Esta conta terá acesso total ao painel de administração e à gestão de usuários.
Para adicionar membros da equipe, vá em "Settings" > "Organization" > "Members". Envie convites por e-mail ou gere links de convite temporários. É recomendável configurar políticas de senha e autenticação de dois fatores (2FA) se o AppFlowy permitir essa configuração no painel admin, reforçando a segurança do servidor próprio.
Otimização e Manutenção Contínua
Para manter sua instalação de notas open source saudável e performática, existem algumas práticas recomendadas de manutenção.
Backups do Banco de Dados
O banco de dados é o coração da sua documentação. Configure um script de backup diário. Crie um arquivo backup.sh:
#!/bin/bash
DATE=$(date +"%Y%m%d")
BACKUP_FILE="/backups/appflowy_backup_$DATE.sql"
mkdir -p /backups
sudo -u postgres pg_dump appflowy > $BACKUP_FILE
# Mantenha apenas os últimos 7 backups
find /backups -name "appflowy_backup_*.sql" -mtime +7 -delete
Torne o script executável e adicione uma entrada no cron para rodar diariamente:
sudo chmod +x backup.sh
sudo crontab -e
Adicione a linha:
0 2 * * * /caminho/para/seu/backup.sh
Monitoramento de Recursos
Utilize ferramentas como htop, prometheus ou soluções integradas da sua plataforma de VPS para monitorar o uso de CPU e memória pelo contêiner do AppFlowy. Se você notar latência alta, verifique se o PostgreSQL está utilizando índices corretamente ou se há gargalos de I/O no disco.
Atualizações
O ecossistema AppFlowy evolui rapidamente. Para atualizar sua instalação, basta puxar a nova imagem e reiniciar os contêineres:
docker compose pull
docker compose up -d
Sempre verifique o changelog oficial antes de atualizar em ambientes de produção críticos para garantir compatibilidade com plugins ou integrações personalizadas.
Considerações Finais sobre Infraestrutura DevOps
A decisão de adotar o AppFlowy Self-Hosted vai além da simples troca de ferramenta; é uma escolha estratégica de infraestrutura. Ao hospedar sua própria documentação e wikis, você assume a responsabilidade pela disponibilidade, mas ganha em controle, privacidade e personalização.
Para equipes de DevOps, isso significa que a documentação técnica passa a ser tratada com o mesmo rigor de código: versionada (via backups), monitorada e segura. A integração com pipelines CI/CD pode ser feita para validar mudanças no conteúdo da wiki antes do deploy, caso haja automações específicas.
Lembre-se de ajustar as configurações de firewall (UFW ou iptables) para permitir apenas o tráfego nas portas 80 e 443, bloqueando o acesso direto à porta 7865. Isso fecha brechas de segurança comuns em instalações iniciantes.
Com esta configuração, você possui uma plataforma robusta, open source e totalmente sob seu controle para gerenciar o conhecimento da sua organização. A documentação técnica deixa de ser um custo operacional terceirizado e se torna um ativo interno seguro e eficiente.