Site Oficial: https://www.firefly-iii.org/
Aqui temos um passo-a-passo para instalar e executar o Firefly III no seu NAS da Synology, um excelente gerenciador de finanças pessoais. Caso queira, pode pular diretamente para as etapas, senão, continue lendo para mais detalhes.
Introdução
O Firefly III é um gerenciador de finanças pessoais que o ajudam a atingir metas, gerenciar gastos, manter orçamentos, controlar contas, gera relatórios, envia emails de notificação, sincronizar as transações com o seu banco (leia as Observações), entre várias outras funções.

Mas muitos perguntam, para quê ter um aplicativo desses instalado no seu NAS? Afinal existem programas com clientes multi-plataformas que podem realizar as mesmas funções. Bom, para mim, a grande vantagem dessa abordagem é justamente o fato do programa estar localizado no meu sistema e eu poder ter acesso a ele de qualquer lugar do mundo. Seja no computador da minha empresa (o qual eu não tenho como instalar um programa financeiro), ou de uma “LAN House”.
Para a instalação do Firefly temos alguns pré-requisitos a cumprir – temos que instalar os seguintes componentes ou tê-los instalado para o funcionamento correto da imagem, visto que ele não possui um banco de dados integrado na imagem:
- MariaDB 10
- phpMyAdmin
Vou incluir no processo abaixo para facilitar o fluxo do trabalho. Caso já os tenha instalado, pode pular para o Passo 3 – Configurando o banco de dados.
Instalação
Passo 1 – Instalando MariaDB
A instalação do MariaDB é muito simples e direto, sem necessidade de muitas explicações. Basta ir no “Centro de Pacotes”, procurar por MariaDB 10 e clicar no botão “Instalar”.

Depois é só seguir o processo de instalação, selecionando o “Criar um novo banco de dados”:

Em seguida, por questões de segurança, pode escolher uma nova senha para o banco de dados e uma porta também.

Passo 2 – Instalando phpMyAdmin
Uma vez concluída a instalação do MariaDB, procure no “Centro de Pacotes” por phpMyAdmin e clique em “Instalar”:


É possível que ao tentar instalar, o sistema o avise que irá precisar instalar outros pacotes (no meu caso o Web Station, mas no seu pode haver outros), mas, independente dos pacotes que ele peça clique em “Sim” e prossiga com a instalação de todos.
Passo 3 – Configurando o Banco de Dados
Uma vez concluída, clique em “Abrir” o phpMyAdmin, e em seguida faça o login com os dados usados ao instalar o MariaDB (Passo 1). Ao entrar no aplicativo, irá aparecer a seguinte página, clique em “Novo” para adicionar um novo banco de dados:

Em seguida coloque um nome para o novo banco de dados e clique em “Criar”:

Uma vez criado, clique nele na lista de BD à esquerda, depois selecione “Privilégios” e em seguida “Adicionar conta de utilizador”:

Crie o usuário escolhendo um nome, gerando uma senha e depois clicando em “Executar” no final da página:

Um aviso confirmando a criação do usuário aparecerá no topo da página:

Pronto, com o banco de dados configurado podemos agora prosseguir com o Firefly.
Passo 4 – Criando as pastas
Crie uma pasta dentro da pasta compartilhada “Docker” e nomeie-a de “firefly3” (todo minúsculo mesmo) e em seguida uma pasta dentro de firefly3 com o nome de “upload”:


Passo 5 – Baixando a imagem
Abra o Docker e clique em “Registro”. Procure por “firefly”, selecione a imagem “fireflyiii/core” e clique para baixá-la.

Passo 6 – Organizando os parâmetros
A instalação do Firefly exige que alguns parâmetros sejam definidos, mas além do mínimo, vou acrescentar mais dois. Obtendo o script de instalação podemos organizar ele assim:
docker run -d \
-v firefly_iii_upload:/var/www/html/storage/upload \
-p 80:8080 \
-e APP_KEY=CHANGEME_32_CHARS \
-e DB_HOST=CHANGEME \
-e DB_PORT=3306 \
-e DB_CONNECTION=mysql \
-e DB_DATABASE=CHANGEME \
-e DB_USERNAME=CHANGEME \
-e DB_PASSWORD=CHANGEME \
fireflyiii/core:latest
Como pode ver, ele possui uma estrutura mínima para a instalação. Vamos adicionar mais alguns parâmetros para ter algo mais completo:
--name fireflyiii
--restart=always
-e APP_URL=https://firefly.example.com
-e TRUSTED_PROXIES=**
Agora, copie esses parâmetros e cole-os no bloco de notas do windows. Depois modifique os valores conforme as instruções:

O IP do Synology posto acima (DB_HOST) foi apenas para fim demonstrativo. Use o seu IP real para esse parâmetro. Essas anotações irá facilitar o input mais tarde na imagem do Docker. Portanto o script ficaria algo assim, considerando alguns valores como exemplo:
docker run -d --name fireflyiii \
--restart=always \
-v /volume1/docker/firefly3/upload:/var/www/html/storage/upload \
-p 4000:8080 \
-e APP_KEY=eJgdfv6jbQ5BZLHz3eOBWFgGzVCfM6qw \
-e DB_HOST=192.161.1.1 \
-e DB_PORT=3306 \
-e DB_CONNECTION=mysql \
-e DB_DATABASE=firefly \
-e DB_USERNAME=firefly \
-e DB_PASSWORD=^T$uSSyp$08u \
-e APP_URL=https://firefly.my.synology.me \
-e TRUSTED_PROXIES=** \
fireflyiii/core:latest
Os valores em azul são apenas demonstrativos e devem ser substituídos pelos valores reais do seu sistema. Os valores em vermelho já não devem ser alterados (claro, a não ser que saiba o que está fazendo).
Existem mais parâmetros que permitem configurar muitos aspectos do Firefly e os acima são o suficiente para a grande maioria, mas, caso queira se aventurar pode baixar o arquivo de parâmetros do site oficial e verificar se não existe nenhum outro que possa te beneficiar.
Passo 7 – Criando e executando a tarefa de instalação
Com a imagem já baixada no Passo 5, podemos agora abrir o “Painel de Controle” e entrar em “Programador de Tarefas”:

Em seguida selecione para “Criar > Tarefa agendada > Script definido pelo usuário”, siga os passos das imagens abaixo e insira o script de instalação (com seus valores reais).

docker run -d --name fireflyiii \
--restart=always \
-v /volume1/docker/firefly3/upload:/var/www/html/storage/upload \
-p 4000:8080 \
-e APP_KEY=eJgdfv6jbQ5BZLHz3eOBWFgGzVCfM6qw \
-e DB_HOST=192.161.1.1 \
-e DB_PORT=3306 \
-e DB_CONNECTION=mysql \
-e DB_DATABASE=firefly \
-e DB_USERNAME=firefly \
-e DB_PASSWORD=^T$uSSyp$08u \
-e APP_URL=https://firefly.my.synology.me \
-e TRUSTED_PROXIES=** \
fireflyiii/core:latest



O aviso abaixo irá aparecer antes de concluir a criação da tarefa. Apenas clique em “Ok” que estará tudo pronto.

Com a tarefa criada, podemos agora executá-la. Não esqueça que para que ela seja realmente processada ela tem que ser agendada para uma data futura, senão, não será executada visto que o tempo de sua ativação já passou.

Se quiser pode ainda confirmar que o contêiner está em execução através do aplicativo do docker:

Passo 8 – Crie o usuário
Agora, abra o seu navegador e navegue para o endereço http://ip-do-seu-synology:porta-local/ (do exemplo – http://192.161.1.1:4000/) e crie o seu usuário.

Uma vez configurado você vai receber essa imagem abaixo:

Depois você pode alterar o idioma e colocar outras preferências. Fica a seu critério. Até aqui terminou a instalação do Firefly e você já pode usá-lo na rede local normalmente. Os próximos passos serão para poder configurar o seu sistema para liberar o acesso ao aplicativo externamente, ou seja, acessar o Firefly pela internet através de qualquer computador.
Configurando acesso externo
Passo 9 – Pré-requisitos
Para os passos seguintes, de modo a não divergir muito do foco aqui deste post, vou assumir que:
- Já tenha feito/configurado o DDNS do seu Synology.
- Já tenha feito/configurado o roteamento de portas para o seu Synology.
Configurar o DDNS é simples e direto e também obrigatório para seguir os passos adiante. Já o roteamento de portas pode ser feito depois (não terá o acesso externo, mas ao menos já terá feito 70% do necessário e depois só precisará rotear as portas).
Passo 10 – Configurando o Proxy-Reverso
Abra o “Painel de Controle” e clique em “Portal de login”:

Selecione a aba “Avançado” e em seguida clique em “Proxy reverso”:

Depois clique em “Criar”:

Para a etapa seguinte vou assumir alguns valores para facilitar a compreensão do passo:
- DDNS = my.synology.me
- IP do Synology = 192.161.1.1
- Porta do Firefly = 4000
Com os parâmetros acima como exemplo, podemos preencher os campos do proxy reverso assim:

Note que coloquei “firefly” antes do DDNS. Esse vai ser o endereço ao qual você usará para acessar o Firefly. A “Porta” da seção “Origem” com valor 443 deve ser mantido, pois será pelo roteamento dessa porta que você terá acesso ao Firefly pela internet. Fique atento a todos os campos acima. Volto a dizer que os valores são meramente demonstrativos (exceto a porta 443) para que facilite o input com os valores reais do seu sistema. As outras abas não são necessárias alterar, mas pode fazê-lo ao seu critério. Agora clique em “Salvar” e vamos adiante.
Passo 11 – Obtendo o certificado para HTTPS
Agora no “Painel de Controle”, clique em “Segurança” e siga para a aba “Certificado”. Nela clique em “Adicionar”:

Depois selecione “Adicionar um novo certificado” e clique em “Avançar”:

Selecione “Obter um certificado do Let’s Encrypt” e clique em “Avançar”:

Insira agora o “nome do host” que você escolheu (Passo 10) e coloque-o no “nome de domínio” e clique em “Concluído”:

Continuando na aba “Certificados”, você poderá verificar que terá pelo menos dois certificados presentes:
- Certificado do DDNS do seu sistema.
- Certificado recém criado para o Firefly (como exemplo: firefly.my.synology.me)
Agora clique em “Configurações”. Aparecerá uma janela com serviços aos quais usam o DDNS. Vá para o serviço com o endereço do Firefly e selecione o certificado correspondente e clique em “OK”:

Pronto, seu Firefly 3 já está instalando e configurado para ser acessado externamente. Divirta-se!
Instalando o Importador de transações
O Firefly 3 é um programa excelente com ótimas funções e recursos necessários. Infelizmente, ele não possui um sistema de “importação de transações”. Sinceramente eu achei isso um pouco absurdo, pois quando se migra de um programa para outro, logicamente irá exportar-importar dados. Mas o desenvolvedor criou um sistema a parte que supre essa demanda e de forma excelente. A mais nova versão é um importador só que serviria para CSV:
Passo 12 – Baixar a imagem
Abra o Docker e clique em “Registro”. Procure por “firefly”, selecione a imagem “fireflyiii/data-importer” e clique para baixá-la.

Passo 13 – Organizando os parâmetros
Primeiro vamos organizar e listar os parâmetros que precisamos:
- FIREFLY_III_URL -> seria o IP + porta do contêiner (dando continuidade ao nosso exemplo http://192.161.1.1:4000).
- FIREFLY_III_ACCESS_TOKEN -> obtido no seu Perfil do Firefly.
Passo 14 – Obtendo o “ACCESS_TOKEN”
Dentro do Firefly, vá para a sua página de “Perfil” e selecione a aba “OAuth”. Nela você irá encontrar a seção “Tokens de acesso pessoal”. Clique em “Criar novo token”:

Escolha um nome qualquer para o token e clique em “Create”:

Agora com o token gerado, guarde ele em um bloco de notas. Iremos usá-lo mais na frente.

Passo 15 – Preparando o contêiner
Com os dados obtidos, agora podemos configurar o contêiner do importador. Então abra a imagem:

Em seguida clique em “configurações avançadas” e navegue para a aba “Configuração de portas” e troque o “Auto” por uma porta livre no seu sistema (exemplo: 4001):

Agora navegue para a aba “Ambiente” e adicione os dois parâmetros obtidos:

Em seguida clique em “Aplicar”, depois “Avançar” e finalmente “Concluído”.
Agora o importador deve estar rodando junto com os outros contêineres:

Para fazer a sua importação, no seu navegador, coloque o endereço IP do seu Synology com a porta que você definiu para o importador (exemplo – http://192.161.1.1:4001) e pronto! Já pode importar de arquivos em CSV sem problemas.

Observações
Segue algumas observações que acho interessante compartilhar sobre esse processo:
- O procedimento de instalação do Firefly pode ser todo através do GUI do pacote de Docker no Synology, ele não tem nenhuma restrição ou limitação quanto a isso, mas o procedimento através do script é mais rápido. Se tiver demanda para o passo-a-passo pelo GUI, entre em contato que farei um só nesse formato.
- Para a sincronização com seu banco é preciso um esforço extra, pois essa função não é nativo do Firefly e é preciso criar cadastro em outros sites para que funcione (Saltedge/Spectre). Se isso for de interesse, me envie uma mensagem através da página de Contato. Caso exista demanda o suficiente, criarei um post só para essa ferramenta.
- Existem várias outras ferramentas para o Firefly. Um ótimo exemplo seria o bot de Telegram, onde você pode fazer configurações e adicionar transações pelo Telegram! Entre no site oficial e veja outras formas de interagir com o Firefly.
- Existem aplicativos para celular que são compatíveis com o Firefly, mas nenhum que seja oficial, e não encontrei para o iOS. De qualquer forma, o aplicativo web por si é ótimo para navegadores de celular, então existe a possibilidade de “criar o atalho” tanto para Android quanto para iOS que ele funciona muito bem. Mas caso queria mesmo o app para Android, pode ver os que ele recomenda no site oficial.
- Qualquer ajuda para a manutenção desse site é muito bem vinda: Contribuições.