archives

Aqui vamos mostrar como instalar um Ghost via Docker em poucos minutos.

PreReq

  • Ubuntu >= 18.04
  • Docker >= 19
    • Ghost
    • Sqlite3

Instalando Docker

Vamos instalar o docker com o script fornecido pelo projeto

curl -fsSL https://get.docker.com -o get-docker.sh

Saída esperada

# Executing docker install script, commit: 442e66405c304fa92af8aadaa1d9b31bf4b0ad94
+ sh -c 'apt-get update -qq >/dev/null'
+ sh -c 'DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null'
+ sh -c 'curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | apt-key add -qq - >/dev/null'
Warning: apt-key output should not be parsed (stdout is not a terminal)
+ sh -c 'echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" > /etc/apt/sources.list.d/docker.list'
+ sh -c 'apt-get update -qq >/dev/null'
+ '[' -n '' ']'
+ sh -c 'apt-get install -y -qq --no-install-recommends docker-ce >/dev/null'
+ sh -c 'docker version'
Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b7f0
 Built:             Wed Mar 11 01:25:46 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b7f0
  Built:            Wed Mar 11 01:24:19 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

  sudo usermod -aG docker your-user

Remember that you will have to log out and back in for this to take effect!

WARNING: Adding a user to the "docker" group will grant the ability to run
         containers which can be used to obtain root privileges on the
         docker host.
         Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
         for more information.

Pronto docker instalado, agora vamos ativar no boot

systemctl enable docker

Feito, agora vamos iniciar o serviço do docker

systemctl start docker

Assista o vídeo

Instalando Ghost

Crie um diretório para servir de volume para mysql e ghost.

mkdir -p /srv/sites/guto/ghost/content mkdir -p /srv/sites/guto/ghost/config

Crie o arquivo config.json em ghost/config

{
  "server": {
    "port": 2368,
    "host": "0.0.0.0"
  },
  "database": {
    "client": "sqlite3",
    "connection": {
      "filename": "/var/lib/ghost/content/data/ghost.db"
    }
  },
  "mail": {
    "transport": "Direct"
  },
  "logging": {
    "transports": [
      "file",
      "stdout"
    ]
  },
  "process": "systemd",
  "paths": {
    "contentPath": "/var/lib/ghost/content"
  }
}

Execute o comando abaixo

docker run —restart always —name guto-ghost -v /srv/sites/guto/ghost/content:/var/lib/ghost/content:z -v /srv/sites/guto/ghost/config/config.json:/var/lib/ghost/config.production.json:z -d -p 80:80 ghost:latest

E pronto, acesse seu ghost pelo navegador e finalize a instalação :)

http://coloque-seu-ip-aqui/

Assista o vídeo

Dicas soltas

Caso queira reiniciar o container

docker restart guto-ghost

Caso queria parar o container

docker kill guto-ghost

Caso queira ver o log do container

docker logs -f guto-ghost

Caso queria entrar no container

docker exec -ti guto-ghost bash

Amarrando as pontas

Instalar qualquer coisa via docker é muito fácil, especialmente quando você quer testar algo ou conhecer alguma tecnologia.

Neste cenário criamos um ambiente ghost composto por 1 container com a aplicação rodando internamente o banco SQLite3. O container persiste os dados em disco, no HOST, utilizando o diretório /srv/sites/guto/ghost.

Observe que eu monto um volume para os dados e outro volume para o arquivo de configuração, assim fica fácil alterar qualquer coisa e reiniciar o container em seguida.

Com a persistência de dados você pode reiniciar o seu containers e não perderá seus dados.

Vale lembrar que o projeto GHOST recomenda o uso do MySQL em produção, SQLite só deve ser utilizado em desenvolvimento ou se você sabe o que está fazendo.

Usar docker em produção requer alguns cuidados além deste, como o uso de um orquestrador mais eficiente que ofereça alta disponibilidade, resiliência, escalabilidade e persistência, além de claro, um sólido plano de backup dos dados além de um procedimento bem claro para Disaster Recovery.


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

Contexto

Comentários podem ser construtivos e somarem ao seu blog, mas podem ser também um grande aborrecimento. Contudo, eu prefiro que falem mais do que prefiro que fiquem calados.

Para comentários eu escolhi o DISQUS pois força a pessoa a ter uma conta e se identificar minimente para comentar. É uma camada a mais, um filtro mínimo, sei que não garante muito, mas já é melhor que deixar comentários anônimos ;)

Procedimento de integração

Edite o aquivo post.hbs do seu tema CASPER e procure as seguintes linhas

{{!--
<section class="post-full-comments">
</section>
--}}

Provavelmente estão depois da linha 115, agora remova as tags de comentários

<section class="post-full-comments">
</section>

Feito isto, insira o código universal do DISQUS para integração

<section class="post-full-comments">

<div id="disqus_thread"></div>
<script>

/**
*  RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
*  LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables*/
/*
var disqus_config = function () {
this.page.url = '{{url absolute="true"}}';  // Replace PAGE_URL with your page's canonical URL variable
this.page.identifier = 'ghost-{{comment_id}}'; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
};
*/
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = 'https://USERNAME.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

</section>

Troque USERNAME pelo seu usuário no DISQUS.

Reinicie o seu GHOST e pronto, comentários funcionando.

Enjoy!

[s] Guto


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

Certificados do tipo WILDCARD são um pouco diferentes de serem emitidos via certbot. Uma vez que você tenha emitido usando os parâmetros —manual —preferred-challenges dns, em toda a renovação você precisa atualizar o conteúdo de um entrada TXT em sua zona de DNS.

Isso pode ser complicado de automatizar, dependendo da tecnologia escolhida ou de seu provedor de DNS, se estiver usando um SaaS.

Aqui vamos mostrar como automatizar a atualização da entrada TXT de DNS para um domínio wildcard hospedado no provedor CloudFlare.

PreReqs

Ambiente

  • ProxMox 6.1
    • CentOS 7
    • Cerbot 1.3

Dependências

  • DNS rodando na Cloudflare
  • Entrada de DNS Wildcard na Cloudflare
  • Token Global da Cloudflare

Se você ainda não criou sua entrada wildcard, veja o post abaixo

Instalando plugin cloudflare

yum install python2-certbot-dns-cloudflare-1.3.0-2.el7.noarch

Criando arquivo de configuração cloudflare

Vamos criar o seguinte arquivo

vim /etc/letsencrypt/cloudflareapi.cfg

Insira o conteúdo abaixo, ajustando seu e-mail e o token

dnscloudflareemail = guto@gutocarvalho.net dnscloudflareapi_key = LKJHliugoIULkjKUHIOLhuLIHU

O token você vai pegar na página da cloudflare.

Renovando o certificado existente

certbot certonly —dns-cloudflare —dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini -d gutocarvalho.net,*.gutocarvalho.net —preferred-challenges dns-01

Criando entrada no cron

Edite o cront do root

crontab -e

E insira a linha abaixo ajustando minuto, hora e domínio.

15 3 * * * certbot certonly —noninteractive —cert-name gutocarvalho.net —dns-cloudflare —dns-cloudflare-credentials /etc/letsencrypt/cloudflareapi.cfg —server https://acme-v02.api.letsencrypt.org/directory -d gutocarvalho.net,*.gutocarvalho.net

Pronto, a renovação de certificados está configurada, o setup agora está completo.


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

O que é um certificado wildcard?

Em resumo é um certificado coringa que vai funcionar com qualquer entrada em primeiro nível.

Por exemplo, se eu criar um certificado wildcard como o abaixo

*.gutocarvalho.net

Qualquer domínio em primeiro nível vai conseguir utilizar os certificados, exemplos:

gitlab.gutocarvalho.net jitsi.gutocarvalho.net mattermost.gutocarvalho.net nextcloud.gutocarvalho

Agora veja, wildcard só funciona em primeiro nível, se voce tentar usar em níveis abaixo, em segundo nível como o exemplo abaixo...

app.dev.gutocarvalho.net

... não vai dar bom, neste caso você precisaria criar um certificado wildcard para *.dev.gutocarvalho.net.

É isso, chega de teoria, vamos colocar a mão na massa. ;)

Ambiente

  • ProxMox 6.1
    • CentOS 7
    • Certbot 1.3.0

PreReqs

  • Crie um entrada *.seudominio.com.br em seu provedor de DNS
  • Essa entrada deve apontar para seu balanceador ou reverse proxy.

Preparando a coisa

yum install -y epel-release

Instalando o certbot

yum install -y certbot python2-certbot-dns-cloudflare-1.3.0-2.el7.noarch

Gerando o cerfificado wildcard

Vamos rodar o comando

certbot —server https://acme-v02.api.letsencrypt.org/directory -d gutocarvalho.net,*.gutocarvalho.net —manual —preferred-challenges dns-01 certonly

Veja que eu passo gutocarvalho.net,*.gutocarvalho.net no parâmetro -d, isso é essencial, não esqueça de colocar o domínio principal junto ao wildcard.

Agora vamos ver a saída esperada.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for gutocarvalho.net

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.gutocarvalho.net with the following value:

glkhjdljlJKDlkdjksdhlkshjd-_ctdL5ve8Vn2Nnd0

OK, aqui precisamos ir no nosso provedor de DNS e criar a entrada abaixo

_acme-challenge.

com o seguinte conteúdo

glkhjdljlJKDlkdjksdhlkshjd-_ctdL5ve8Vn2Nnd0

Beleza, depois mandar um ENTER e continue

Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/gutocarvalho.net-0001/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/gutocarvalho.net-0001/privkey.pem
   Your cert will expire on 2020-07-17. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

O certificados foram gerados em /etc/letsencrypt/live/gutocarvalho.net

[root@lb conf.d]# ls /etc/letsencrypt/live/gutocarvalho.net/ -1
cert.pem
chain.pem
fullchain.pem
privkey.pem
README

Certificados gerados, agora você pode usar em seu NGINX, Apache HTTPd ou qualquer outro serviço que deseje utilizar SSL.

Enjoy!

[s] Guto


Se você precisa de ajuda para começar a utilizar certificados LetsEncrypt, fale com a JAC, nosso braço de projetos e consultoria!A JAC oferece um atendimento diferenciado e profissionais bem antenados, pode confiar :)[contato@jac.bsb.br]https://jac.bsb.br


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

O @dirceu me falou desse projeto, Caddy Web Server, feito em GO, preciso ver com calma e tentar substituir os NGINX de sites estáticos por ele, acho que vai ser bacana a experiência. Preciso fazer um post sobre o projeto e seus recursos!


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

Achei os dotfiles desse rapaz muito bacanas, preciso ver com calma.


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

No twitter tá rolando uma thread sobre APPs e tecnologias que usamos em nosso cotidiano diário, vou ter que blogar isso pq a lista é grande :)

Notebook Pessoal

Apps essenciais que eu uso no meu MBP.

  • MacOS Catalina 10.15.3
    • Browsers
    • Vivaldi (principal navegador)
    • Brave (security browser)
    • Chrome (projetos clientes jac)
      • Extension Website IP
      • Extension Reticle
      • Extension Tabs SlideShow by FredZvt
      • Extension Passbolt
      • Extension 1Password
      • Extension Trello Labels
      • Extension Trello Card Numbers
      • Extension Grammarly
      • Extension Fireshot
      • Extension ADBlock Ultimate
      • Extension Screencastfy (novo)
      • Extension Jitsi
    • Firefox (projetos jac)
      • Addon Server IP
      • Addon Ruler
      • Addon TAB Slideshow WE
      • Addon Passbolt
      • Addon 1Password
      • Addon Trello Super Powers
      • Addon Grammarly
      • Addon Easy Screenshot
      • Addon Adblock Ultimate
    • Opera (uso aleatório)
    • Safari (uso aleatório)
    • Mail Client
    • Spark (principal)
    • Airmail (novo)
    • Canary Mail (novo)
    • Apple Mail
    • Terminal
    • Iterm2
      • Bash
      • Prompline Bash
      • ZSH
      • OH MY ZSH!
        • Plugins
        • osx
        • git
        • brew
        • docker
        • docker-compose
        • history
        • vagrant
        • zsh-syntax-highlighting
        • zsh-autosuggestions
        • Theme
        • agnoster
      • SSH
      • GIT
      • VIM
      • vim-airline
      • vundle
      • promptline
      • dracula/vim (theme)
      • vim-puppet
    • Gerenciador de pacotes
    • Homebrew
    • Homebrew Cask
    • Editors
    • VSCode
    • MacDown
    • Mobirise (novo)
    • Documentação
    • Dash
    • IM
    • WhatsAPP
    • Telegram
    • Textual (IRC)
    • Slack
    • Teams
    • MatterMost
    • RocketChat
    • Videconf
    • Zoom
    • ClickMeeting
    • GotoMeeting
    • Join.me
    • Jitsi
    • Skype
    • Social Networks
    • TweetBot
    • Twitter
    • Tweetdeck
    • Multiple IM Client
    • Franz
    • Station
    • Secrets
    • 1Password
    • Utils
    • IstatMenus
    • Unclutter
    • Alfred
    • Bartender
    • Paragon NTFS
    • Amphetamine
    • Display Menu
    • TripMode (Controle de banda Mobile)
    • CleanMyMac
    • Little Snitch (Firewall)
    • SubnetCalc
    • Remote Connect
    • AnyDesk
    • Teamviewer
    • MS RDP
    • Multimedia
    • VLC
    • Subtitles
    • Shazam
    • Piezo
    • Screenflow
    • Isky Video Converter
    • VPN
    • Viscosity
    • Finances
    • Chronicle Pro
    • Money
    • File transfer
    • Transmission (p2p)
    • Resilio Sync (p2p)
    • Transmit
    • Cloud Storage
    • NextCloud Agent
    • Onedrive
    • Hypervisors
    • Parallels
      • Chrome (for windows)
    • VirtualBox
    • Automation
    • Vagrant
    • Packer
    • Puppet
    • Ansible
    • Containers
    • Docker
    • Docker Compose
    • Lens
    • Office
    • Fantastical
    • Apple Keynote
    • Apple Reminders
    • Apple Notes
    • Office 365
    • Grammarly
    • Database Client
      • PSequel (Postgres)
      • Workbench (MySQL)
      • Robo3T (Mongo)
    • API Rest
      • PostMan

Hardware

  • IMAC 21' 8GB (office e videconfs)
  • Intel NUC 16GB (laboratorios e testes)
  • Notebook MPB 13' 16GB (note principal)
  • Notebook MPB 11' 4GB (reuniões e viagens curtas)
  • iPhone 8 Plus 256 GB + Apple Watch 3º Geração
    • Bateria Anker Powercore 26.800Mah
  • Kit Conferência, webinários e treinamentos
    • Mesa de som Behringer USB U-PHORIA UM2
    • Microfone Behringer C-3
    • WebCam FullHD Logitech C920
  • Network
    • Vivo Fibra 300/150 Mbits
    • 1 Switch TP-Link 8 Ports Gigabit
    • 2 TP-Link Powerline Kit 4220 (conexão da SmartTV)
    • 2 Roteadores TP-Link DECO M4 MESH Gigabit
  • Desk
    • 2 Monitores AOC 24' Widescreen Freesync
    • Mesa digitalizador WACOM ONE
    • HD Western Digital USB 3.0 4TB para TimeMachine
    • Carregador ANKER USB A2133 10 portas
    • Headphone Samsung Level On Bluetooth with Noise Canceling
    • HP OfficeJet J4580 All-in-one
    • Régua Clone 8 Outlets
    • Luminária Led 15W Inspire Moss Branco 120cm ( acima do monitor )

Nuvem Pessoal

Serviços que contrato em nuvem, para uso pessoal

  • Office 365
  • 1Password
  • NetFlix
  • Apple Music
  • Gmail Storage
  • Icloud Storage
  • Envato Elements

Para projetos pessoais ou em clientes JAC

As tecnologias essenciais

  • Linux (Ubuntu e CentOS)
    • BASH
    • ZSH
    • SSH
    • GIT
    • VIM

Automação

  • Ansible
  • Puppet
  • Terraform
  • Rundeck
  • Certbot
  • Curl

Linguagens, ferramentas, estruturas e modelo de dados

  • Shell
  • Ruby
  • Python
  • YAML
  • JSON
  • REST

Console tools

  • | (pipe)
  • tcpdump
  • net-tools (netstat, route)
  • ip
  • top, vmstat
  • htop, iotop
  • screen
  • wget, curl
  • rsync
  • iperf
  • cat, grep, egrep
  • tar, gzip, bzip2
  • cut, awk, sed
  • more, less, head, tail
  • df, du, mount
  • lvm
  • lynx, elinks
  • nmap
  • telnet
  • netcat
  • traceroute
  • strace
  • jq
  • asciinema

Metodologias, culturas e técnicas

  • Kanban
  • Scrum
  • Agile
  • IaC
  • DevOps
  • SRE
  • GitOPS

Bancos

  • MariaDB/MySQL
  • PostgreSQL
  • SQLite
  • MongoDB (novo)
  • Elastic

Brokers

  • RabbitMQ
  • ApacheMQ

Containers

  • Docker
  • Docker Compose
  • Rancher
    • RancherOS
    • K3S
    • K3OS
    • RKE
  • Kubernetes
    • Kubectl
    • Etcdctl
    • Helm
    • k9s
    • Lens
    • Kustomize

Monitoração

  • Zabbix
  • Grafana
  • Prometheus

Centralização de logs e eventos

  • Beats
  • Logstash
  • Elastic Search
  • Kibana

Virtualização em Cluster

  • ProxMox

Storage remoto

  • NextCloud

Gerenciamento de senhas entre times

  • Passbolt

ChatOPS e Videconferência

  • MatterMost (chatops)
  • Jitsi (video)
    • Etherpad (notes)

Gerenciamento de código fonte e CI/CD

  • GitLab
    • GitLab CI
    • GitLab Runner

Gerenciamento de artefatos e registry docker

  • Nexus Repo
  • Harbour (novo)

Sistema de correio eletrônico

  • Zimbra

Sistema de VPN

  • OpenVPN

Reverse Proxy, LB e Cache

  • NGINX
  • HAProxy
  • Apache HTTPd
  • Caddy (novo)

Nuvens que normalmente utilizo em projetos

  • AWS
  • GCP
  • OVH

Virtualização & Baremetal

  • OVH

Provedor de DNS

  • Cloudflare

Domain Registrar

  • Namecheap
  • Registro.br

Monitoramento Externo tipo SaaS

  • UptimeRobot
  • StatusCake (novo)

Documentação

  • GitHub Markdown
  • Dokuwiki
  • GitLab Wiki
  • Etherpad

Blog

  • Ghost (novo)
    • Disqus
  • Hugo (legado)
  • Wordpress (legado)
  • Octopress (legado)

Gerenciamento de atividades do time

  • Trello

Onde estou trabalhando?

  • JAC.bsb.br :)

Acho que é isso, daqui um ano a gente compara!

Se você fizer um post como esse, comenta aí e deixa a URL :)

;)

[s] Guto



Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

As vezes quando estamos migrando uma VM de um Node para outro em nosso Cluster ProxMox, pode ser que a gente se depare com esse erro:

/usr/bin/ssh -e none -o 'BatchMode=yes' -o 'HostKeyAlias=node_name' root@node-ipv4 /bin/true
 Host key verification failed.
 ERROR: migration aborted (duration 00:00:00): Can't connect to destination address using public key
TASK ERROR: migration aborted

Olhando mais de perto:

Host key verification failed.
 ERROR: migration aborted (duration 00:00:00): Can't connect to destination address using public key

O que ocorre é o seguinte, cada node do seu cluster Proxmox tem dentro do arquivo /etc/ssh/sshknownhosts chaves que permitem essa migração entre nodes. Eventualmente, devido a alguma reconfiguração ou atualização isso pode ser modificado e perder a referência.

root@netuno:~# cat /etc/ssh/ssh_known_hosts

|1|pgRxKKlBvP6k+PHM9qzUFjkUurI=|jL2i1JDwEUwqYGTKZeSzyj+yDdo= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKnEUasTFGpYfuHHHxTi8G8X6GtX+OK0H9f45FK08lFqzDqp1bYyAAt9NR2mZAnS15TnggMg8ecGuSI1ukVLlA8=

|1|Ah1gr9RovFPuTWIRB+vQ4PqMvYo=|cDQ8Vgh8ZxASIPu6cPSm2uup+Cw= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKnEUasTFGpYfuHHHxTi8G8X6GtX+OK0H9f45FK08lFqzDqp1bYyAAt9NR2mZAnS15TnggMg8ecGuSI1ukVLlA8=

Para resolver se conecte ao node onde está rodando a VM na qual que deseja migrar e rode o seguinte comando:

/usr/bin/ssh -e none -o 'HostKeyAlias=node_name root@node_ip /bin/true

Substitua node_name e node_ip pelos valores corretos e aceite a fingerprint. Depois disso tente rodar a migração novamente, você vai ver que ela voltará a funcionar :)Não conseguiu resolver? Quer saber mais de ProxMox? [s]Guto



Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

Fala galerinha, tudo bacana?

Hoje o Tio Guto trouxe algumas dicas de monitoramento.

Bom, muita gente da minha geração curte o Zabbix, Nagios, Monit e outras ferramentas que podemos instalar “in house”. São ferramentas fantásticas, fazem o que se propõe e quando bem utilizadas se integram perfeitamente em nossa stack e aos nossos procedimentos de automação.

Vale lembrar que o foco dessas ferramentas é a Infraestrutura, então podemos dizer que elas nos dão a visão da “Infraestrutura pela Infraestrutura”.

Ixe, Infraestrutrua pela Infraestrutura? Agora complicou hein...

Nem tanto, vamos entender isso.

Apesar de serem ferramentas de monitoramento, elas nos dão um monitoramento do ponto de vista interno na maioria dos casos, e as vezes até mesmo do ponto de vista externo – geralmente partindo de um local/ip “conhecido” e “seguro”, o famoso monitoramento via caminho feliz.

Entenda, é um monitoramento válido e importante, mas pode ocorrer aquela situação de o Monitoramento estar todo “Ok” ou “Green” e alguém te mandar um ZAP assim:

"Hey, você viu que seus sites estão fora?"

E você vai falar:

"What, WTF?"

É acontece né.... mas porquê isso acontece?

Por que nós não temos uma visão de fora realmente confiável.

Para a gente ter uma visão de fora – exercitando a experiência do usuário, precisamos utilizar alguma ferramenta que nos dê esse ponto de vista diferenciado. Essa ferramenta precisa nos responder algumas coisas, entre elas:

  • Uma conexão externa vê meu site/serviços corretamente?
  • Qual a tempo médio de carregamento de meus sites e serviços?
  • Qual a taxa de disponibilidade destes sites/serviços?

São perguntas simples e não valem o esforço ficar espalhando agentes de alguma ferramenta, ou então proxys Zabbix – por exemplo – em várias regiões da Amazon/Azure/GCP.

Então, Como eu posso resolver isso rápido e com baixo custo?

A resposta é SaaS!

Temos vários sistemas de monitoramento SaaS bem bacanas, em especial eu trouxe 2 serviços bem práticos e gratuitos que fazem esse trabalho sem custo pra gente, vamos a eles:

Uptimerobot.com

  • 50 alertas
  • Gráficos de SLA
  • Intervalos de 5 minutos
  • Checagens: HTTTP, HTTPS, TCP, UDP, PING
  • Integrações diversas (email, telegram, twitter, slack, etc.)
  • Status Pages Diversas
  • API ( https://uptimerobot.com/api )

StatusCake

  • 10 alertas
  • 1 Check Speedtest a cada 24 horas
  • Gráficos de SLA
  • Intervalos de 5 minutos nos alertas
  • Checagens: HTTTP, HTTPS, DNS, SMTP, SSH, TCP, UDP, PING, PUSH
  • Integrações diversas (email, telegram, twitter, slack, etc.)
  • 1 Status Page
  • API ( https://www.statuscake.com/api )

Conclusão

Ambas são excelentes, eu já tenho bastante intimidade com o UptimeRobot, uso há alguns anos, me dou bem especialmente com sua API, contudo, o StatusCake tem provado ser uma boa alternativa.

Ambas ferramentas nos planos pagos oferecem uma gama de recursos extras como SSL Check, relatórios mais detalhados, janela de manutenção, monitoramento de domínios, alertas personalizados com sua logo e muito mais.

Se você tem budget para queimar, manda ver e assina as ferramentas, se não tem dá para se virar bem com as versões “free tier”.

Tá esperando oq? Vai lá conhecer!

Dica da dica

Uma boa ferramenta para automar os dois em sua infraestrutura – colocando tudo junto com o provisionamento de sites ou deployment – é o tronitor, conheça o projeto, recomendo.

[s]Guto



Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

Continuando a linha de posts de monitoramento, descobri uma ferramenta bacana para validar isto em mais de 40 localidades diferentes.

Basta acessar o uptrends, colocar só URL desejada e aguardar a validação.

{{< figure src=”GHOST_URL/blog/content/images/2020/04/Screen-Shot-2020-04-13-at-09.47.39.png” >}}

É isso, site validado!Bom né? Eu gostei.

[s]Guto



Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]