Reflexões e memórias da minha implementação do Proxmox

On May 20th, 2024 in Proxmox, Tech

Vem um tempo que estou aumentando cada vez mais minhas automações e organização das informações acumuladas. Viver nesses tempos atuais vem sendo cada vez mais complexo e mais cheio de informações a serem acompanhadas, catalogadas e processadas. Estou cheio de pastas, planilhas, catálogos, sites entre outros que acumulo mensalmente.

Resolvi escrever um pouco, dessa vez em português (já que em inglês está cheio de conteúdo já), meus pensamentos e experiências sobre o Proxmox. Seja para eu relembrar, seja para ver se ajudo alguém com a experiência.

Meu setup anterior

Conheci o Proxmox há 2 anos e comecei utilizando um Macbook Pro velho (2011) como servidor. E essa foi uma das melhores decisões que tomei. Antigamente, eu havia montado um servidor para execução exclusiva do TrueNAS, que inclusive funciona até hoje, mas se eu tivesse conhecido o Proxmox antes, possivelmente eu teria utilizado direcionado o servidor para a hospedagem dele.

Meu Macbook tinha 16GB de RAM, 500GB de SSD e um HDD de 320GB. Eu dependia muito o uso de HDs externos grudados no laptop, além do uso regular do servidor NAS para conseguir hospedar meus arquivos.

Na minha primeira instalação, eu basicamente tinha 3 máquinas virtuais (VM) rodando, uma com o Home Assistant, outra com o Windows 7, e, por fim, uma com o Ubuntu Server 22.04 com várias coisas rodando, seja via docker, seja nativamente.

A compra do Dell OptiPlex 3050

No último mês comprei um Dell OptiPlex 3050 D10U Mini PC usado por cerca de USD 100,00. As especificações quando comprei a máquina foram:

  • CPU: Intel Core i5 (i5-7500T) 3.2GHz Quad Core
  • Memory: 8GB DDR4
  • Hard Drive: 256GB SSD
  • Display Ports: 2
  • HDMI Port: 1
  • USB Ports: 6 (4x USB 3 Type-A (Gen1) ports; 2x USB 2 ports)
  • Headphone & Mic Port: Yes
  • Ethernet: 10/100/1000 Mbps, Gigabit

O Serverthehome fez, inclusive, uma review sobre esse computador anos atrás. Minha compra dele foi a partir do que já conhecia desse tipo de máquina e essa oportunidade de comprá-la por apenas USD 100,00.

Estou em fase de melhoria dela:

  • Upgrade para 32GB de RAM: Comprei 2 pentes de memória de 16GB cada para ficar com 32GB no total (obs.: a DELL informa que o limite da máquina são apenas 16GB, mas depois de muita leitura, resolvi arriscar colocar mais).
  • NVME M2 de 1TB: o slot de memória NVME veio vazio (o para wifi e para o formato 2280). Coloquei uma memória de 1TB para rodar o Proxmox e todas as máquinas virtuais.
  • Upgrade para 5TB de HDD SATA: removi o SSD de 256GB e troquei para um HDD de 5TB, pois, por ser um servidor, preciso de espaço para armazenamento dos meus conteúdos.

Instalando o Proxmox

Para a instalação na máquina nova, utilizei o tutorial do próprio site do Proxmox que é muito simple e rápido. Um dos pontos que eu deveria ter me atentado na instalação é que 1TB de armazenamento do Proxmox e minhas máquinas virtuais é um pouco de mais. Estou com uma margem gigantesca que não era necessária e que poderia ter sido corrigida durante a instalação.

Diferente da minha primeira instalação no Macbook Pro, dessa vez eu mudei a abordagem de como vou gerenciar o meu servidor. Em mantive minha VM do Home Assistant (que, inclusive, exportei da máquina antiga e “instalei” na nova sem a mínima dificuldade), mas instalei o Windows 11, Ubuntu Server 22.04 e diversos containers LXC descentralizando minha necessidade no Ubuntu Server.

O Windows 11

Eu havia instalado o Windows 7 na máquina antiga devido a alguns fatores:

  • Eu havia somente uma licença do Windows 7 na mão
  • O Macbook Pro de 2011, embora estivesse com 16GB de RAM, tinha outras máquinas rodando e um processador bem velho.

O Dell veio com o Windows 11 instalado e uma licença disponível. Aproveitei essa licença para uso na minha VM. Além disso, o Windows 7 já deixou de ser suportado pela Microsoft há algum tempo. Por fim, agora estou com 32GB de RAM e uma folga um pouco maior.

Aproveitei também que usei o NVME de 1TB e, após a primeira instalação e configuração do Windows 11, transformei a máquina em um Template, fazendo um clone dela para, de fato, usar como Windows 11. Se eu quiser ou precisar usar uma instalação nova, tenho disponível uma imagem pronta para isso.

O Ubuntu Server

Fiz uma instalação nova e fresca do Ubuntu Server. Minha instalação antiga do Ubuntu está com diversos problemas de erros de experimentos meus e queria começar do zero para evitar novas instabilidades.

Da mesma maneira do Windows, fiz uma instalação fresca e transformei ela em um Template para clonar rapidamente em novas máquinas virtuais.

Um dos clones, transformei em uma VM exclusive para rodar meus containers do Docker utilizando o Portainer como gerenciador. Rodei tudo em uma VM, pois a recomendação do próprio Proxmox era executar containers dockers somente em VM.

O segundo clone, será o que eu utilizarei para programar e rodar scripts diversos tendo acesso regular e risco eventual de eu “quebrar” a máquina.

Instalarei ainda um terceiro clone que utilizarei para fazer testes, mas, pelo momento, como prevenção para máquinas quebradas, estou utilizando snapshots.

Containers LXC

Eu fui apenas agora tentar aprender um pouco sobre containers LXC. Muito menos conhecidos do que o Docker, a vantagem deles é que eles são nativos no Proxmox, sendo de fácil instalação e manutenção. A partir disso, resolvi arriscar trabalhar com eles.

Uma ferramenta essencial que encontrei para instalar os containers foi o Github do tteck com scripts para Proxmox. Com os scripts dele, a instalação dos containers tornou-se muito, mas muito fácil. Eu ainda assim instalei alguns containers na mão (Tabula e Metabase) e foi um aprendizado interessante. Eu ainda sou um completo amador em servidores, virtualização e containerização, mas o quanto que aprendi no último mês foi incrível.

Atualmente, estou com os seguintes containers instalados:

  • Heimdall Dashboard: ainda uso o Heimdall porque estou muito acostumado com ele.
  • Change Detection: um dos containers mais importantes que possuo atualmente. Antes dele, eu fazia muita conferência na mão. Com ele, automatizei muitas tarefas da minha vida.
  • Audiobookshelf: eu utilizei pouco até hoje do Audiobookshelft, mas minha ideia é aumentar muito seu uso ainda.
  • Jackett, Sonarr, Radarr, Bazarr: eu rodava todos eles nativamente dentro do meu servidor Ubuntu, o problema é que se minha máquina “estragar” devido ao meu uso, eu perderia todos eles.
  • Tabula e Stirling-PDF: O Tabula sempre utilizei muito para extrair dados de tabelas PDF que me deparo regularmente. O Stirling-PDF veio para me ajudar a processar os diversos PDFs que também me deparo regularmente. No Mac o Preview ajuda muito, mas as funcionalidades do Stirling-PDF são fenomenais.
  • Syncthing: ele me ajuda a ter sincronizado diversos arquivos importantes, em especial meus scripts que executo em várias máquinas.
  • OpenMediaVault: para gerenciar os HDs externos que continuo a espetar na máquina.

Considerações finais

Pretendo expandir vários posts com mais detalhes técnicos dessa jornada no Proxmox. A intenção deste primeiro documento é dar uma visão geral de como planejei trabalhar nessa nova instalação do Proxmox.

Tags: 2024 digital life proxmox

Building a Telegram Bot with Google Script: Unlocking Automation Potential

On June 22nd, 2023 in Tech
Trying to make a cute robot illustration using Stable Diffusion

Telegram bots have become a popular way to automate tasks and enhance user experiences. They allow us to interact with various online services, retrieve information, and perform actions through a user-friendly interface.

I’ve been using Telegram Bot platform for the last 3 years, but only as a tool to send message and not to interact with the automation. This year, due to work demands, I’ve started searching for a way of creating interactive Telegram bots without the need of running a server or paying a service to provide 24/7 availability to run my bots.

In this blog post, I’ll try to show how to leverage the power of Google Script to create and run a Telegram bot.

DISCLAIMER: I’ll not show code here, but references that I gathered that may be useful for those looking for creating bots.

The limitations

To begin with, we must let noted some limitations of using the Google Platform:

1. Google limit the use of consumer accounts to 6 minutes of execution and 30 simultaneous execution.
2. Google script works using Javascript and you won’t have ready to go libraries to make your work easy. There are some people that have been trying to provide some tools, but none of them are robust like python-telegram-bot.
3. You’ll have to use what’s available at the Google Platform as tools. Probably you’ll be using a Google Spreadsheet as your database, for example.

Now to the real stuff.

An introduction to Telegram Bots

Before diving into the technical aspects, let’s have a brief overview of Telegram bots. Bots are special Telegram accounts that are operated by software rather than humans. They can interact with users through messages, process commands, and perform actions based on user input. Telegram provides a comprehensive API that allows developers to create bots with ease and integrate them into various workflows.

To create a Telegram bot, you need to start by creating an account on Telegram and obtaining an API token. This token serves as a unique identifier for your bot and enables communication with Telegram’s API. Once you have the token, you can proceed to create a new Google Script project in Google Drive.

I won’t write the details of how to do it. It’s well documented all over the web, including Telegram website, with clear steps and images.

An introduction to Google Script

Google Script is a cloud-based scripting platform offered by Google. It enables users to write and run JavaScript code within various Google products, such as Google Sheets, Gmail, and Google Drive. The power of Google Script lies in its ability to automate tasks and interact with external APIs, making it an excellent choice for integrating Telegram bots.

How to combine both?

The interactions of the Telegram Bot and Google Script happens using Telegram Bot Webhook and Google Script WebAPI.

We must setup the Telegram bot sending the webhook address, after that, all messages sent to the bot will be processed by the Google Script. This video shows in details how to do it.

Handling User Commands

Telegram allows us to create “User Commands” to trigger specific actions. For example, a user might type “/weather London” to request the weather in London. In Google Script, you can define functions that parse incoming messages, extract commands, and execute corresponding actions. By using regular expressions or string manipulation techniques, you can extract the desired information from user messages and respond accordingly.

Data storage

Regarding storing and Retrieving Data, Google Script provides various options for data storage, such as using Google Sheets, Properties Service, or external databases. Depending on the complexity of your bot, you can choose the most suitable method for storing and retrieving data. I personally use Google Spreadsheets due to the ready to use classes that Google Script provides.

Handling coversations

For handling conversations, the best code available is the python-telegram-bot. In JavaScript, I highly recommend using Francesco Miccolis’s “Google App Script Conversational Telegram Bot” (GAS-conversational-telegram-bot).

He worked “translating” python-telegram-bot to a useful repository. It’s ready to use and it works perfectly.

My projects so far

I’ve been creating some projects using what I learned:

  1. A bot conversation bot that I inform how much and with what I spent my money. It’s much easier than opening my Google Spreadsheet to add a new line. Also, my partner feels more motivated to also contribute.
  2. A bot that saves a photo sent to it to a Google Drive folder.
  3. A bot that saves a photo sent to it to a Google Drive folder, edit the photo using various Google Apps and return it edited.

Conclusion

Integrating a Telegram bot with Google Script provides a powerful and flexible solution for automating tasks and interacting with users. By combining the capabilities of Google Script and Telegram’s API, you can build bots that retrieve data, perform actions, and streamline workflows seamlessly.

Ps: this post was built with the assistance of ChatGPT with a lot if modifications to fit my needs.

Tags: 2023 automations