A gestão financeira precisa de precisão e controle total sobre os dados da empresa. Para organizações que priorizam a soberania dos dados e a personalização profunda, a solução self-hosted (hospedagem própria) é o caminho ideal. Neste tutorial técnico, vamos focar na instalação e configuração do InvoiceNinja servidor próprio, uma plataforma robusta para faturamento, rastreamento de tempo e gestão de clientes.
Diferente de soluções SaaS (Software as a Service), manter o InvoiceNinja em sua própria infraestrutura Linux oferece vantagens críticas: compliance com LGPD sem transferência internacional de dados, integração direta com bancos de dados locais e ausência de taxas por transação ou limite de faturas. Este guia serve como referência técnica para sysadmins e desenvolvedores que desejam implantar este ERP/CRM leve em um ambiente VPS Linux.
Pré-requisitos de Infraestrutura
Antes de iniciar a instalação, é fundamental preparar o ambiente do servidor. O InvoiceNinja é construído sobre o framework Laravel e utiliza PHP com banco de dados MySQL/MariaDB ou PostgreSQL. Para um ambiente de produção estável em uma VPS Linux (Ubuntu 22.04 LTS ou Debian 12 recomendados), recomenda-se a seguinte configuração mínima:
- CPU: 2 vCPUs
- RAM: 2 GB (recomendado para evitar gargalos no garbage collector do PHP)
- Armazenamento: 20 GB SSD ou superior
- Sistema Operacional: Ubuntu Server ou Debian Buster/Bullseye/Bookworm
Além disso, você precisará de um domínio apontado para o IP da sua VPS e certificados SSL (Let's Encrypt) já configurados via Nginx ou Apache. A segurança HTTPS não é opcional em plataformas financeiras.
Passo 1: Preparação do Sistema Operacional
O primeiro passo lógico é atualizar os pacotes do sistema e instalar as dependências básicas necessárias para a comunicação com o repositório e gerenciamento de processos. Conecte-se ao seu servidor via SSH:
ssh root@seu_ip_servidor
Execute a atualização dos repositórios e a instalação de utilitários comuns:
apt update && apt upgrade -y
apt install curl wget unzip git nano -y
É crucial garantir que o fuso horário do servidor esteja configurado corretamente para evitar discrepâncias nas datas das faturas e logs. Verifique com timedatectl e ajuste se necessário:
timedatectl set-timezone America/Sao_Paulo
Passo 2: Instalação do Stack Web (LAMP/LEMP)
O InvoiceNinja requer um servidor web, processador PHP e banco de dados. A combinação mais comum e performática para este tipo de aplicação é o stack LEMP (Linux, Nginx, MySQL/MariaDB, PHP).
2.1 Instalando o Banco de Dados
Vamos utilizar o MariaDB, que é compatível com MySQL e amplamente utilizado em ambientes open source:
apt install mariadb-server -y
mysql_secure_installation
Durante a execução do script mysql_secure_installation, responda 'Y' para todas as perguntas, incluindo a configuração da senha root e remoção de usuários anônimos.
2.2 Instalando o PHP e Extensões Necessárias
O Laravel (framework base do InvoiceNinja) exige extensões específicas do PHP. Instale o PHP 8.1 ou 8.2 (versões suportadas pela versão atual do Ninja):
apt install php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd php8.1-intl php8.1-mbstring php8.1-xml php8.1-zip php8.1-bcmath php8.1-json php8.1-readline -y
Aplique as configurações de memória no arquivo php.ini para garantir performance:
nano /etc/php/8.1/fpm/php.ini
Altere ou adicione as seguintes linhas:
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 10M
post_max_size = 10M
2.3 Instalando o Nginx
Instale e inicie o serviço do Nginx:
apt install nginx -y
systemctl enable nginx
systemctl start nginx
Passo 3: Configuração do Banco de Dados para InvoiceNinja
Crie um banco de dados dedicado e um usuário com permissões restritas. Nunca utilize o root do MySQL para a aplicação.
mysql -u root -p
Dentro do console do MySQL, execute os comandos:
CREATE DATABASE invoiceninja_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'invoiceninja_user'@'localhost' IDENTIFIED BY 'SenhaForteAqui123!';
GRANT ALL PRIVILEGES ON invoiceninja_db.* TO 'invoiceninja_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Substitua SenhaForteAqui123! por uma senha complexa gerada aleatoriamente.
Passo 4: Instalação do InvoiceNinja
Agora, vamos baixar o código fonte. Você pode clonar o repositório oficial ou baixar a versão estável mais recente diretamente do site deles. Para ambientes de produção, recomenda-se usar a versão estável (release) em vez da branch develop.
cd /var/www
git clone https://github.com/invoiceninja/invoiceninja.git
Navegue até o diretório instalado e instale as dependências do Composer:
cd invoiceninja
composer install --no-dev --optimize-autoloader
Copie o arquivo de ambiente padrão para configurar as variáveis:
cp .env.example .env
Passo 5: Configuração do Arquivo .env
Este é o passo mais crítico. Edite o arquivo .env com suas credenciais e configurações de segurança:
nano .env
Realize as seguintes alterações obrigatórias:
- APP_ENV=production: Define o ambiente para produção.
- APP_DEBUG=false: Desativa logs de debug em produção por segurança.
- APP_URL=http://seu-dominio.com: (Troque para https se tiver SSL).
- DB_HOST=localhost
- DB_DATABASE=invoiceninja_db
- DB_USERNAME=invoiceninja_user
- DB_PASSWORD=SenhaForteAqui123!
- PHPCRON_ENABLED=true: Essencial para agendamento de tarefas.
Gere uma nova chave de aplicação única:
php artisan key:generate --force
Defina as permissões corretas para que o usuário do Nginx possa escrever nos diretórios de cache e armazenamento:
chown -R www-data:www-data /var/www/invoiceninja
chmod -R 755 /var/www/invoiceninja/storage
Passo 6: Configuração do Nginx
Crie um arquivo de configuração no servidor virtual do Nginx para garantir que as rotas sejam processadas corretamente pelo Laravel.
nano /etc/nginx/sites-available/invoiceninja
Insira a seguinte configuração (ajuste o caminho se necessário):
server {
listen 80;
server_name seu-dominio.com www.seu-dominio.com;
root /var/www/invoiceninja/public;
index index.php index.html;
charset utf8mb4;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
client_max_body_size 10M;
}
Habilite o site e teste a configuração:
ln -s /etc/nginx/sites-available/invoiceninja /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
Passo 7: Execução do Instalador Web
Agora que a infraestrutura está pronta, você pode finalizar a configuração através da interface web. Abra seu navegador e acesse http://seu-dominio.com. O instalador do InvoiceNinja irá detectar a configuração do banco de dados.
- Crie o usuário administrador inicial (e-mail e senha fortes).
- O sistema rodará as migrações do banco de dados automaticamente.
- Acesse o painel administrativo.
Após o login, vá em Settings > Company Settings para configurar o logotipo, endereço fiscal e formato das faturas conforme as normas locais (ex: NFC-e ou NF-e se integrado via API).
Passo 8: Configuração de Tarefas Agendadas (Cron)
O InvoiceNinja depende fortemente do Cron para enviar faturas em atraso, gerar relatórios e processar webhooks. Sem isso, a automação financeira não funcionará.
crontab -u www-data -e
Adicione a seguinte linha ao final do arquivo:
* * * * * cd /var/www/invoiceninja && php artisan schedule:run >> /dev/null 2>&1
Isso executa o agendador do Laravel a cada minuto, verificando se há tarefas pendentes.
Considerações Finais sobre Alternativas Self-Hosted
A decisão de hospedar seu próprio CRM ou ERP é estratégica. Enquanto o InvoiceNinja servidor próprio foca na eficiência do faturamento e fluxo de caixa, outras soluções open source atendem a diferentes nichos. Por exemplo, quem busca um ERP completo com módulos de estoque e RH pode investigar tutoriais sobre dolibarr instalação ubuntu ou erpnext vps tutorial. Para focos estritos em CRM relacional, opções como espocrm tutorial vps ou suitecrm self-hosted são amplamente adotadas.
Outros profissionais podem preferir a simplicidade contábil do dolibarr instalação ubuntu ou a leveza do dolibarr comparado ao complexo erpnext vps tutorial. Já o ecossistema de vendas ativas muitas vezes utiliza vtiger crm vps para gestão de pipeline. É importante notar que instalar Odoo em uma VPS Linux (instalar odoo vps linux) exige recursos computacionais significativamente maiores devido à arquitetura modular pesada da plataforma.
Independentemente da ferramenta escolhida, o princípio de manter o controle total dos dados (self-hosted) permanece como a melhor prática para empresas que levam a segurança e a privacidade financeira a sério. A configuração manual descrita acima garante que você tenha uma base sólida, segura e otimizada para crescer sem depender de plataformas externas.
Lembre-se de realizar backups regulares do banco de dados invoiceninja_db e do diretório /var/www/invoiceninja/storage. Scripts de backup automatizados via Cron ou ferramentas como o Duplicati são essenciais para garantir a recuperação desastres (DRP).