n8n - Hospedar num Raspberry Pi 5
O início da minha jornada com o n8n
Olá!
A plataforma n8n está em grande destaque neste momento. Com a evolução dos LLM, AI Agents e MCP, as automatizações estáticas, como o RPA tradicional, estão a passar por uma fase de transformação e evolução.
Na verdade, o n8n foi o catalisador deste pequeno hobby. Tudo começou quando decidi testá-lo, inicialmente como parte de um trabalho de investigação no meu emprego, com o objetivo de analisar o seu potencial de utilização profissional.
Percebi rapidamente que o n8n podia ser instalado localmente e de forma totalmente gratuita.
O meu objetivo inicial era simples: instalar o n8n localmente e permitir que colegas de trabalho pudessem utilizá-lo através da minha conta, caso tivessem interesse. Com esse propósito definido (mal sabia eu que estava a iniciar uma verdadeira viagem de descoberta), decidi começar por o hospedar num Raspberry Pi 5.
Após adquirir o Raspberry Pi, iniciei a instalação do sistema operativo oficial, Debian. Logo percebi que não o iria usar apenas para o meu objetivo principal. Queria segmentar ferramentas e ambientes e nada melhor do que usar Docker para gerir a instalação do n8n e de outras aplicações.
Através do Docker, instalei o n8n e criei a minha conta. Depois de o ter a funcionar e hospedado localmente, faltava apenas um passo: torná-lo acessível para os meus colegas. Para isso, adquiri o domínio diexperiment.work através da Cloudflare.
Com o domínio configurado, começaram a surgir novas ideias: a criação deste site (algo que sempre quis fazer), a configuração de uma VPN (WireGuard) para aceder a aplicações locais e à minha rede doméstica, além da instalação de ferramentas como o Home Assistant e o Nextcloud, sobre as quais irei escrever artigos futuramente.
Ainda tenho muitas outras ideias em mente, mas, em resumo, o n8n foi o catalisador deste percurso e hobby, através do qual aprendi imenso.
Daqui segue o resumo detalhado dos comandos para efetuar a instalação do docker e n8n:
Abaixo segue o resumo detalhado dos comandos para efetuar a instalação do Docker, Docker Compose e configurar o n8n.
1. Instalar o Docker
curl -sSL https://get.docker.com | sh
2. Adicionar o utilizador ao grupo Docker (e reiniciar)
sudo usermod -aG docker $USER
sudo reboot
3. Instalar o Docker Compose
sudo apt install docker-compose -y
4. Criar o diretório do projeto
mkdir ~/n8n && cd ~/n8n
5. Criar o ficheiro .env
nano .env
Conteúdo do .env:
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=user # O utilizador
N8N_BASIC_AUTH_PASSWORD=password # A password
N8N_HOST=192.168.X.XXX # Substituir pelo IP do Raspberry Pi
N8N_PORT=5678
N8N_SECURE_COOKIE=false
# Nota: Ainda não estão configuradas as variáveis para a base de dados.
# Como poderão reparar na estrutura do meu YAML, estou a utilizar PostgreSQL e PostgreSQL-Vector.
# Base de dados normal e vectorial.
6. Verificar o IP do Raspberry Pi
hostname -I
7. Criar o ficheiro docker-compose.yml
nano docker-compose.yml
Conteúdo:
services:
automation:
image: n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
env_file:
- .env
environment:
- N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom
volumes:
- ./n8n_data:/home/node/.n8n
- ./custom_nodes:/home/node/.n8n/custom:ro
- ./n8n_temp:/tmp/n8n
depends_on:
- postgresql-vector
networks:
- n8n_network
entrypoint: ["/bin/sh","-c","rm -rf /tmp/n8n/* ; exec n8n start"]
postgresql-vector:
image: pgvector/pgvector:pg16
container_name: n8n_postgres
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- ./postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- n8n_network
networks:
n8n_network:
driver: bridge
#Apenas por curiosidade, Entrypoint é apenas um comando para iniciar o container: faz a limpeza de uma pasta temporária que utilizo nas minhas automações no n8n.
8. Criar a pasta de dados e corrigir permissões
mkdir -p ~/n8n/n8n_data
sudo chown -R 1000:1000 ~/n8n/n8n_data
9. Iniciar os containers
docker-compose up -d
10. Verificar se está em execução
docker ps
11. Parar os containers
docker-compose down
Irei publicar outros artigos relacionados com os pequenos testes e automações que realizei no n8n. Este artigo serviu apenas para explicar um pouco do percurso que me levou à instalação e apresentar um breve resumo da minha configuração.