<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Caio Volpato</title>
    <description>The latest articles on DEV Community by Caio Volpato (@caioau).</description>
    <link>https://dev.to/caioau</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F616290%2Ff96a334e-b137-43a7-81c7-8d77262a9989.jpg</url>
      <title>DEV Community: Caio Volpato</title>
      <link>https://dev.to/caioau</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/caioau"/>
    <language>en</language>
    <item>
      <title>Primeiros passos com self-hosting</title>
      <dc:creator>Caio Volpato</dc:creator>
      <pubDate>Mon, 05 Jul 2021 01:04:45 +0000</pubDate>
      <link>https://dev.to/computandoarte/primeiros-passos-com-self-hosting-mn2</link>
      <guid>https://dev.to/computandoarte/primeiros-passos-com-self-hosting-mn2</guid>
      <description>&lt;p&gt;Neste post vamos fazer uma visão geral das principais partes do self-hosting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwgfov8lg1je90zxbgmxk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwgfov8lg1je90zxbgmxk.png" alt="image" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
Foto de Jainath Ponnala, &lt;a href="https://unsplash.com/photos/9wWX_jwDHeM" rel="noopener noreferrer"&gt;unsplash&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Vai usar a nuvem? Ou apenas on-premise? Que tal ambos?
&lt;/h2&gt;

&lt;p&gt;Acredito que umas das primeiras considerações quando montamos nosso setup de self-hosting é pensar como isso vai se organizar e onde vai ficar cada coisa.&lt;/p&gt;

&lt;p&gt;Self-hosting não é ser “contra a nuvem” mas sim um movimento para ter controle dos nossos dados e aplicações que usamos, mesmo usando a nuvem nós que vamos configurar tudo e ter controle de como cada coisa funciona.&lt;/p&gt;

&lt;p&gt;Outro modelo é hospedar “tudo em casa” (chamado de on-premise), funciona muito bem. Mas um desafio que logo vamos abordar é abrir a conexão da sua operadora para acessar seus serviços fora de casa.&lt;/p&gt;

&lt;p&gt;Daí surge um terceiro modelo: o híbrido, parte das coisas que necessitam de velocidade ficam em casa e o restante que precisa acessar fora de casa na nuvem. No meu caso, coloco na nuvem (uma virtual private server (VPS) da digital ocean) o nextcloud com apenas meus contatos e calendário (no android uso o davx5 para sincronizar a agenda e os contatos com o nextcloud) e em casa guardo meus backups (com uma cópia no &lt;a href="https://www.rsync.net/" rel="noopener noreferrer"&gt;rsync.net&lt;/a&gt;) e todo resto :P&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5irgh5s84u0lv7baetge.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5irgh5s84u0lv7baetge.png" alt="image" width="800" height="694"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Além de ser muito bonito e divertido de fazer, recomendo fazer um diagrama de como vai se organizar suas aplicações e dispositivos, acima é como organizo tudo.&lt;/p&gt;
&lt;h2&gt;
  
  
  Hardware usado para hospedar
&lt;/h2&gt;

&lt;p&gt;Para hospedar nossas coisas em casa, precisamos de um hardware para fazê-lo, pode ser usado com computador velho ou, outras opções populares, são usar a Raspberry Pi, mini pc (tipo intel NUC) ou por fim um servidor de armazenamento conectado em rede (NAS, de Network Attached Storage). Embora seja uma melhor opção pelo reuso e sobrevida de um equipamento obsoleto, é importante ficar ciente e atento a falhas por fadiga que podem comprometer a disponibilidade ou a confiabilidade do serviço. &lt;/p&gt;

&lt;p&gt;Quando eu comecei nessa jornada do self-hosting, havia comprado um SSD para meu notebook então peguei o disco que veio nele e conectei numa Raspberry Pi. Começar com uma Raspberry Pi é ótimo: é barato, consome pouca energia e atende aos requisitos de recursos de várias aplicações.&lt;/p&gt;

&lt;p&gt;Mas existem outras necessidades que uma Raspberry Pi não consegue atender, como por exemplo rodar máquinas virtuais, e daí surge a necessidade de outros hardwares apropriados. Como um mini-pc (ou Intel NUC) que é literalmente um mini pc e os componentes tradicionais como processador x86 (ao invés do ARM do Raspberry Pi), slots de memória RAM que pode ser trocada, etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgkk8s27ghhe1y3xj1imz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgkk8s27ghhe1y3xj1imz.png" alt="image" width="500" height="365"&gt;&lt;/a&gt;&lt;br&gt;
NAS Synology DS920+&lt;/p&gt;

&lt;p&gt;Quer armazenar muitos arquivos? Talvez um NAS seja mais adequado. Este equipamento conta com conexão à rede e diversos slots para colocar os discos.&lt;/p&gt;

&lt;p&gt;Por fim, um item de hardware que é opcional mas recomendo é um “no break”, para que em caso de cair a energia na sua casa não aconteça nada.&lt;/p&gt;
&lt;h2&gt;
  
  
  Storage e backups
&lt;/h2&gt;

&lt;p&gt;Tudo, inclusive toda forma de tecnologia, está sujeita a falhas, mas enquanto peças podem ser substituídas, arquivos perdidos podem não serem recuperáveis, por isso surge a necessidade de cópias de segurança, os famosos backups. A regra de ouro é quanto mais importante, raro ou caro mais versões e de mais difícil acesso elas devem ser.&lt;/p&gt;

&lt;p&gt;Isso é uma consideração importante principalmente com a Raspberry Pi, os SD cards não são muito confiáveis, depois de alguns anos de uso eles acabam “morrendo”. Comigo foi muito nítido isso, teve um SD card que me serviu fielmente por 2 anos, enquanto outros logo depois de 1 ano de uso contínuo eles morreram. Mesmo adotando alguns truques para diminuir sua leitura e escrita, como montar com a flag noatime, os logs e outras pastas como tmpfs e desativar o swap.&lt;/p&gt;

&lt;p&gt;Outra preocupação com os backups são os ataques ransomware, se seu computador teve os arquivos sequestrados, depois de sincronizar os backups também podem estar comprometidos. Por isso é aconselhável ter backups versionados, no qual teremos um "histórico" dos arquivos e no caso de um ransomware, basta restaurar a penúltima versão dos backups no qual os arquivos originais estarão lá.&lt;/p&gt;

&lt;p&gt;Uma prática indispensável quando falamos de storage é o Redundant Array of Independent Disks (RAID: Arranjo redundante de discos baratos) que permite combinar os discos para que o sistema operacional os enxergue tudo como um disco só. Os dois modos mais básicos são o RAID 0 e RAID 1. No RAID 0 temos 2 discos que vão somar suas capacidades, enquanto no RAID 1 teremos a capacidade de apenas 1 disco e outro é usado como redundância caso um disco falhe, bastando trocar o disco quebrado que os dados serão espelhados nele.&lt;/p&gt;

&lt;p&gt;Existem outros níveis de RAID, que são no fundo combinações do 0 e 1, como o RAID 5 (no qual teremos 4 discos, mas apenas podendo utilizar apenas o espaço de 3, pois 1 drive é usado como redundância).&lt;/p&gt;

&lt;p&gt;A fim de combinar os discos utilizando o RAID temos diversas implementações que podem ser usadas no Linux. A mais simples é o mdadm que mapeia os drives num “disco virtual”. &lt;/p&gt;

&lt;p&gt;Outra solução um pouco mais avançada é utilizar o LVM que é um gerenciador de volumes que permite coisas mais avançadas como diminuir e aumentar as partições usadas e realizar snapshots, que é um “retrato” do sistema de arquivos que pode ser acessado depois, dessa forma criando um “ponto de restauração”.&lt;/p&gt;

&lt;p&gt;Por fim os sistemas de arquivos recentes como BTRFS e ZFS podem ser usados RAID e tem recursos legais como os snapshots, compressão nativa dos arquivos (dessa forma aqueles arquivos de texto como dados em csv ficam bem menor) e por fim como esses sistemas de arquivos usam o conceito de copy-on-write ou seja para toda escrita será feita uma cópia para manter a versão anterior, isso permite que para realizar a manutenção dos disco (o fsck, a checagem da integridade do sistema de arquivos) não precise desligar tudo (nesses sistemas o equivalente do fsck é o scrub).&lt;/p&gt;

&lt;p&gt;A única ressalva para usar o ZFS e BTRFS são bancos de dados, o copy-on-write nos bancos de dados prejudica o desempenho, nesses casos talvez seja uma boa manter o sistema operacional num sistema de arquivos tradicional como ext4 e os bancos de dados nele e o armazenamento restante no ZFS ou BTRFS.&lt;/p&gt;

&lt;p&gt;Outra preocupação é a criptografia dos discos, para proteger os arquivos em caso de furto, nesses casos é uma boa instalar o pacote dropbear-initramfs (&lt;a href="https://www.cyberciti.biz/security/how-to-unlock-luks-using-dropbear-ssh-keys-remotely-in-linux/" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt;) que permite entrar com a senha da criptografia de forma remota (por ssh), sem precisar ter um teclado in loco.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpt7m1sfqn7s1yiujvh9d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpt7m1sfqn7s1yiujvh9d.png" alt="image" width="598" height="705"&gt;&lt;/a&gt;&lt;br&gt;
Fonte: &lt;a href="https://twitter.com/nixcraft/status/1313909322905083905" rel="noopener noreferrer"&gt;https://twitter.com/nixcraft/status/1313909322905083905&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uma regra de ouro dos backups é a regra 3-2-1, que diz que devemos ter ao menos 3 cópias, em 2 mídias diferentes e 1 “fora de casa” em caso de incêndio. Para ter esse backup fora de casa é mais prático usar a nuvem, mas como utilizar a nuvem de forma segura? Podemos utilizar uma solução de backup que tenha criptografia, como o borgbackup, outra opção para utilizar o Google Drive, Dropbox e similares é utilizar o &lt;a href="https://cryptomator.org/" rel="noopener noreferrer"&gt;cryptomator.org&lt;/a&gt; que criptografa seus dados antes de enviá-los para a nuvem.&lt;/p&gt;

&lt;p&gt;Partindo para as indicações, veja o vídeo do Fabio Akita: &lt;a href="https://www.youtube.com/watch?v=lxjBgxmDZAI" rel="noopener noreferrer"&gt;Quebrei 3 HDs: Entendendo Armazenamento&lt;/a&gt; explicando como os discos rígidos funcionam. E o meu texto de como montei minha solução de backups criptografados com o borgbackup e &lt;a href="https://syncthing.net/" rel="noopener noreferrer"&gt;syncthing&lt;/a&gt; no Android: &lt;a href="https://caioau.keybase.pub/blog/backups/" rel="noopener noreferrer"&gt;Como parei de me preocupar e passei a adorar minha solução de backups&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Como acessar meus serviços fora de casa?
&lt;/h2&gt;

&lt;p&gt;Em algumas operadoras como a NET, seu modem tem um IP “interno” dentro da rede da operadora, pois os IPs IPV4 são muito escassos, o famigerado Carrier-grade NAT (CGNAT), dessa forma não é possível acessar sua casa através da internet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fki1oz7m0o23g2v9q6quf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fki1oz7m0o23g2v9q6quf.png" alt="image" width="800" height="422"&gt;&lt;/a&gt;&lt;br&gt;
Explicação sobre o NAT (&lt;a href="https://twitter.com/0x1shu/status/1401986638197116934/photo/1" rel="noopener noreferrer"&gt;fonte&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O único jeito é ligar na operadora e pedir para sair do CGNAT, permitindo assim hospedar na internet seus serviços. Foi o que fiz (tenho NET), mas não consigo abrir algumas portas como a 80 (http) e 443 (https), pois na NET isso só é permitido comprando o plano para empresas 😞&lt;/p&gt;

&lt;p&gt;Pesquise e pergunte no &lt;a href="https://old.reddit.com/r/InternetBrasil/" rel="noopener noreferrer"&gt;/r/InternetBrasil&lt;/a&gt;, lá tem muito conteúdo sobre isso.&lt;/p&gt;

&lt;p&gt;Outra questão é que os IPs não são fixos. Dentro da sua casa, quando a Raspberry Pi liga ela “pede” um IP pro seu roteador, o Dynamic Host Configuration Protocol (DHCP) que atribui um IP para a Raspberry Pi, mas os IPs muitas vezes são alocados de sequencial, ou seja nem sempre a Raspberry Pi vai ter o mesmo IP, quebrando o encaminhamento de portas do roteador. Então no roteador na configuração do DHCP atribua um IP fixo para a Raspberry Pi.&lt;/p&gt;

&lt;p&gt;Outro IP que não é fixo é o do seu modem, que é o seu IP público na internet, infelizmente às vezes ele acaba mudando (de novo no plano para empresas o IP é fixo), daí surgem os serviços de DNS dinâmico, como o DynDNS ou NOIP, eu utilizo o &lt;a href="https://www.duckdns.org/" rel="noopener noreferrer"&gt;duckdns&lt;/a&gt; e no google domínios tem a &lt;a href="https://support.google.com/domains/answer/6147083?hl=pt-BR" rel="noopener noreferrer"&gt;opção de DNS dinâmico&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A partir daí é só fazer os encaminhamentos de portas no seu modem, evite a opção DMZ, que expõe completamente a Raspberry Pi na internet, encaminhe apenas as portas que realmente precisa expor. Outra opção é ter um roteador próprio, e o usar o modem da operadora apenas como modem colocando no modo bridge e o seu roteador vai atuar como firewall encaminhando apenas algumas portas. Eu faço isso com meu roteador usando o OpenWRT e criei algumas VLANs (redes lógicas separadas para segregar os equipamentos) para minha rede.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foarmtxkibm5jzb11umpx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foarmtxkibm5jzb11umpx.png" alt="image" width="400" height="266"&gt;&lt;/a&gt;&lt;br&gt;
Diagrama do proxy reverso (ngrok)&lt;/p&gt;

&lt;p&gt;Outra opção é utilizar um serviço de proxy reverso, que basicamente torna seu localhost público, como &lt;a href="https://ngrok.com/" rel="noopener noreferrer"&gt;ngrok&lt;/a&gt;, ou a solução open source &lt;a href="https://pagekite.net/" rel="noopener noreferrer"&gt;pagekite&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Na mesma linha pode ser utilizada a sua VPS na cloud como proxy para acessar suas coisas em casa, pode ser algo simples como o &lt;a href="https://linux.die.net/man/1/autossh" rel="noopener noreferrer"&gt;autossh&lt;/a&gt; que cria tunnels ssh permitindo acessar sua casa passando pela VPS. &lt;/p&gt;

&lt;p&gt;Ou criar uma VPN com &lt;a href="https://www.wireguard.com/" rel="noopener noreferrer"&gt;wireguard&lt;/a&gt; na sua VPS e conectar sua Raspberry Pi, viabilizando seu acesso externo. O legal dessa solução é que você pode criar duas configurações no seu computador/celular: uma que usa a VPN apenas para acessar seus serviços e uma que passa todo seu tráfego pela VPN para usar em WiFis não confiáveis como WiFis públicos.&lt;/p&gt;

&lt;p&gt;Por fim, outra possibilidade é usar o Tor, para criar um .onion que permite hospedar seus serviços em casa, sem precisar abrir suas portas, veja a documentação: &lt;a href="https://community.torproject.org/onion-services/" rel="noopener noreferrer"&gt;onion-services&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Uma preocupação em expor seus serviços na internet é a de segurança, pois os mesmos podem ser hackeados e o hacker estará na sua rede. Isso pode ser feito de forma segura adotando as medidas de segurança que falaremos, mas outra possibilidade é utilizar o port knocking, no qual as portas dos seus serviços ficam fechadas e depois de “bater” numa sequência de portas corretas (tipo uma senha) a porta é aberta, apenas para o IP, e por um período de tempo, escondendo e protegendo seus serviços. Utilizo o &lt;a href="https://linux.die.net/man/1/knockd" rel="noopener noreferrer"&gt;knockd&lt;/a&gt; com o firewall ufw.&lt;/p&gt;
&lt;h2&gt;
  
  
  Contêiners
&lt;/h2&gt;

&lt;p&gt;Os contêineres vieram para ficar e são uma maneira simples e rápida para colocar seus serviços no ar. Mas é preciso tomar cuidado em usar apenas imagens confiáveis, no fundo você está rodando um software feito por um terceiro na sua máquina.&lt;/p&gt;

&lt;p&gt;Foram encontradas imagens maliciosas minerando bitcoin, ou imagens desatualizadas e vulneráveis. Antes de utilizar uma imagem dá uma olhada no Dockerfile no github para procurar por coisas suspeitas.&lt;/p&gt;

&lt;p&gt;Imagens oficiais do dockerhub são confiáveis, outra fonte excelente de imagens é o &lt;a href="https://www.linuxserver.io/" rel="noopener noreferrer"&gt;LinuxServer.io&lt;/a&gt; com diversas imagens ótimas.&lt;/p&gt;

&lt;p&gt;Partiu para as indicações? Tem um site excelente para aprender docker, bem direto ao ponto o &lt;a href="https://docker-curriculum.com/" rel="noopener noreferrer"&gt;docker-curriculum.com&lt;/a&gt;, curso eu indico o &lt;a href="https://www.udemy.com/course/docker-mastery/" rel="noopener noreferrer"&gt;docker-mastery&lt;/a&gt; na udemy que até fala um pouco de clusters com docker swarm e kubernetes, por fim no youtube tem o vídeo excelente da TechWorld with Nana &lt;a href="https://www.youtube.com/watch?v=3c-iBn73dDE" rel="noopener noreferrer"&gt;Docker Tutorial for Beginners&lt;/a&gt;. &lt;/p&gt;
&lt;h2&gt;
  
  
  Proxy Reverso
&lt;/h2&gt;

&lt;p&gt;Quando vamos hospedar diversos serviços uma construção comum que é utilizada é o proxy reverso, com ele quando vamos acessar nossos serviços evitamos de ter que usar uma porta diferente para cada coisa, dessa forma podemos configurar o proxy reverso para como cada serviço vai ser acessado, normalmente por um subdomínio tipo nextcloud.seu-dominio.tld ou como uma subpasta seu-dominio.tld/nextcloud.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7oka4cw4gd50elfhgrdx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7oka4cw4gd50elfhgrdx.png" alt="image" width="800" height="417"&gt;&lt;/a&gt;&lt;br&gt;
Ilustração de um proxy reverso&lt;/p&gt;

&lt;p&gt;As opções mais populares são o Secure Web Application Gateway (&lt;a href="https://github.com/linuxserver/docker-swag" rel="noopener noreferrer"&gt;swag&lt;/a&gt;), da linuxservers.io, que é um nginx, com let’s encrypt (para ter o https) e fail2ban (que bloqueia bots e IPs que estão tentando te invadir).&lt;/p&gt;

&lt;p&gt;A outra opção é o &lt;a href="https://doc.traefik.io/traefik/" rel="noopener noreferrer"&gt;traefik&lt;/a&gt; que tem a vantagem de já ser integrado com o docker e kubernetes, dessa forma ao invés de configurar as “rotas” de cada serviço em arquivos de configuração (como é feito no nginx) as configurações vivem nos labels do contêiner de cada serviço, muito mágico ✨&lt;/p&gt;

&lt;p&gt;Aliado com o proxy reverso, podemos utilizar o &lt;a href="https://www.authelia.com/" rel="noopener noreferrer"&gt;authelia&lt;/a&gt;, que permite ter o mesmo usuário e senha (single sign-on) sincronizado com todos seus serviços e autenticação em 2 fatores integrada em todos seus serviços, tornando tudo mais prático e seguro.&lt;/p&gt;

&lt;p&gt;Bora para um exemplo?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: "2.1"

services:

  traefik:
    image: "traefik:v2.4"
    container_name: "traefik"
    restart: unless-stopped
    command:
      #- "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  whoami:
    image: "containous/whoami"
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoami.rule=PathPrefix(`/whoami/`)"
      - "traefik.http.routers.whoami.entrypoints=web"

  bitwarden:
    image: bitwardenrs/server
    container_name: bitwarden
    restart: unless-stopped
    #environment: 
    #- SIGNUPS_ALLOWED=false
    volumes:
      - ./docker_vols/bwdata/:/data/
    labels: 
      - "traefik.enable=true"
      - "traefik.http.routers.bitwarden.rule=PathPrefix(`/vault/`)"
      - "traefik.http.routers.bitwarden.entrypoints=web"
      - "traefik.http.middlewares.bw.stripprefix.prefixes=/vault/"
      - "traefik.http.routers.bitwarden.middlewares=bw"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse é um arquivo docker-compose, é um arquivo yaml que define vários contêineres, no fundo é como se o fizesse vários docker run, um para cada contêiner.&lt;/p&gt;

&lt;p&gt;Para executá lo, basta baixar esse arquivo como docker-compose.yml e rodar o docker-compose up -d&lt;/p&gt;

&lt;p&gt;Temos 3 contêineres definidos: o traefik, o whoami (usado para debugar o traefik) e o bitwarden (gerenciador de senhas). Repare como as “rotas” para o traefik estão definidas nos labels de cada contêiner ✨&lt;/p&gt;

&lt;p&gt;Espere um pouco e vamos testar tudo: abra seu navegador no endereço &lt;code&gt;localhost/whoami/&lt;/code&gt; , e veja a rota para o whoami funcionando. Depois vá para &lt;code&gt;localhost/vault/&lt;/code&gt; e acesse o bitwarden. Por fim &lt;code&gt;localhost:8080&lt;/code&gt; e veja o dashboard do traefik (não se esqueça de colocar uma senha depois).&lt;/p&gt;

&lt;p&gt;No bitwarden, repare na parte volumes, aqui os dados da aplicação serão salvos na pasta docker_vols/bwdata, para ser feito o backup.&lt;/p&gt;

&lt;p&gt;No traefik, veja em volumes: &lt;code&gt;/var/run/docker.sock:/var/run/docker.sock:ro&lt;/code&gt;, isso vai “conectar” o docker no contêiner do traefik, fazemos isso para que o mesmo consiga “mapear” os outros contêineres e ler suas regras de roteamento em suas labels. Tome cuidado e só faça isso com contêineres que confia pois isso pode dar a permissão de acessar e comprometer os todos seus contêineres e seu computador.&lt;/p&gt;

&lt;p&gt;Por fim repare que todos os contêineres têm &lt;code&gt;restart: unless-stopped&lt;/code&gt;, isso é a política de restart do docker, dessa forma caso o computador seja desligado quando for ligado os contêineres serão iniciados automaticamente, unless stopped, ou seja a menos que sejam parados.&lt;/p&gt;

&lt;p&gt;Ultimo exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: "2.1"

networks:
  web:
    external: true
  internal_net:
    external: false

services:

  traefik:
    image: "traefik:v2.4"
    container_name: "traefik"
    restart: unless-stopped
    networks:
      - web
    command:
      #- "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  ttrss:
    image: wangqiru/ttrss:latest
    container_name: ttrss
    restart: unless-stopped
    networks:
    - internal_net
    - web
    environment:
      - DB_PASS=E7WaTdu9KPLXxYXTqtrA
      - SELF_URL_PATH=http://localhost/
      - DB_HOST=ttrss_db
      - PUID=1000
      - PGID=1000
      - TZ=America/Sao_Paulo
    depends_on:
      - ttrss_db
    labels: 
      - "traefik.enable=true"
      - "traefik.http.routers.ttrss.rule=PathPrefix(`/ttrss/`)"
      - "traefik.http.routers.ttrss.entrypoints=web"
      - "traefik.http.middlewares.sp1.stripprefix.prefixes=/ttrss/"
      - "traefik.http.routers.ttrss.middlewares=sp1"
      - "traefik.docker.network=web"

  ttrss_db:
    image: postgres:13-alpine
    container_name: ttrss_db
    restart: unless-stopped
    networks:
      - internal_net
    environment:
      - POSTGRES_PASSWORD=E7WaTdu9KPLXxYXTqtrA
    volumes:
      - ./docker_vols/ttrss_db/:/var/lib/postgresql/data
    labels:
      - "traefik.enable=false"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Continuamos com o nosso conhecido traefik, mas agora vamos colocar no ar o &lt;a href="https://tt-rss.org/" rel="noopener noreferrer"&gt;tt-rss&lt;/a&gt;, que é um leitor de feeds RSS, que utiliza um banco de dados postgres, essa é a primeira coisa diferente nesse exemplo repare que no topo estão definidas 2 redes (uma chamada web e outra internal_net). O traefik que é o contêiner que está exposto está apenas na web, a aplicação (ttrss) em ambas as redes e o banco de dados apenas na internal_net. Fizemos isso para segregar o banco de dados (que contêm dados sensíveis) do traefik para que o mesmo caso comprometido não acesse o(s) banco de dados.&lt;/p&gt;

&lt;p&gt;Outra coisa a destacar é a opção depends_on, que cria um relação de dependência entre o contêiner da aplicação (ttrss) e o seu banco de dados, iniciando o banco de dados antes da da aplicação.&lt;/p&gt;

&lt;h2&gt;
  
  
  Segurança
&lt;/h2&gt;

&lt;p&gt;A fim de manter tudo isso seguro, existem diversas práticas e níveis de segurança, um bom começo é ter senhas fortes e únicas (evitar o famoso usuário admin com senha admin) com um gerenciador de senhas e realizar as atualizações de segurança.&lt;/p&gt;

&lt;p&gt;Para deixar todos seus contêineres atualizados, tem o &lt;a href="https://crazymax.dev/diun/" rel="noopener noreferrer"&gt;Diun&lt;/a&gt;, que “conecta” no docker (como fizemos com o traefik) e verifica periodicamente se existem atualizações para seus contêineres, disparando uma notificação via email ou telegram etc …&lt;/p&gt;

&lt;p&gt;Já para manter o host atualizado, uma possibilidade é utilizar o &lt;a href="https://wiki.debian.org/UnattendedUpgrades" rel="noopener noreferrer"&gt;UnattendedUpgrades&lt;/a&gt; que atualiza os pacotes automaticamente, e se quiser pode até reiniciar automaticamente quando necessário. Porém, talvez seja melhor assinar as listas de email/rss de segurança da sua distro (&lt;a href="https://www.debian.org/security/" rel="noopener noreferrer"&gt;debian security-announce&lt;/a&gt;, &lt;a href="https://ubuntu.com/security/notices" rel="noopener noreferrer"&gt;Ubuntu USN&lt;/a&gt;), do docker e das suas aplicações e frameworks e veja se faz aquelas atualizações de fato te afetam e se realmente faz sentido aplica-lás.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgzjpddnvdugkv2a5jotc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgzjpddnvdugkv2a5jotc.png" alt="image" width="627" height="499"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/nixcraft/status/878903460871061504" rel="noopener noreferrer"&gt;https://twitter.com/nixcraft/status/878903460871061504&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Um site excelente para deixar nos favoritos é o Open Web Application Security Project (&lt;a href="https://owasp.org/" rel="noopener noreferrer"&gt;owasp&lt;/a&gt;) é uma comunidade de segurança com diversas dicas e recomendações, por exemplo: &lt;a href="https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html" rel="noopener noreferrer"&gt;como armazenar senhas de forma segura&lt;/a&gt; e no nosso caso &lt;a href="https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html" rel="noopener noreferrer"&gt;Docker security&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Uma forma excelente para aprender segurança é praticar nas Capture the flag (CTF) que são ambientes controlados para testar a segurança como um todo e revelar a flag (tipo uma senha), comprovando que conseguiu comprometer a segurança. Tem vários sites, tenho mais contato com o &lt;a href="https://overthewire.org/wargames/" rel="noopener noreferrer"&gt;overthewire&lt;/a&gt; e o &lt;a href="https://www.hackthebox.eu/" rel="noopener noreferrer"&gt;hackthebox&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Um vídeo que gostei foi do LiveOverflow: &lt;a href="https://www.youtube.com/watch?v=fKuqYQdqRIs" rel="noopener noreferrer"&gt;Protect Linux Server From Hackers&lt;/a&gt;, no qual ele disseca as dicas populares de boas práticas para proteger seus servidores linux e ele mostrou que essas boas práticas nem sempre são tão positivas e “preto no branco”. Depois ele fez uma continuação bem interessante: &lt;a href="https://www.youtube.com/watch?v=lKzsNp4AveY" rel="noopener noreferrer"&gt;Understand Security Risk vs. Security Vulnerability!&lt;/a&gt; pontuando as diferenças e semelhanças entre riscos de segurança e vulnerabilidades.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitoramento
&lt;/h2&gt;

&lt;p&gt;Na seção anterior sobre storage, como saberemos se um disco falhou? Quando tudo parar de funcionar? Ou tem algum jeito de “ficar de olho”, por isso que precisamos ter uma solução de monitoramento.&lt;/p&gt;

&lt;p&gt;As soluções mais populares de monitoramento são o &lt;a href="https://www.zabbix.com/" rel="noopener noreferrer"&gt;zabbix&lt;/a&gt; e o &lt;a href="https://prometheus.io/" rel="noopener noreferrer"&gt;prometheus&lt;/a&gt;, que depois de configurados te notificam em caso de alguma falha.&lt;/p&gt;

&lt;p&gt;No caso dos discos, temos dois indicativos que os discos estão para falhar: As informações S.M.A.R.T. -- Self-Monitoring, Analysis, and Reporting Technology (tecnologia de automonitoramento, análise e relatório) geradas pelo próprio disco com diversas informações da "saúde" do disco, o disco não gera isso sozinho, sua solução de monitoramento precisa disparar os auto-testes e monitorar essas infos. Porém um &lt;a href="https://static.googleusercontent.com/media/research.google.com/en//archive/disk_failures.pdf" rel="noopener noreferrer"&gt;estudo&lt;/a&gt; de 2007 do Google, mostrou que os dados S.M.A.R.T sozinho não são um bom indicativo da falha dos discos, daí surgem o segundo indicativo o tempo de escrita e leitura, se o disco começa a demorar muito para ler ou escrever isso pode indicar uma falha, essa informação é gerada na solução de monitoramento.&lt;/p&gt;

&lt;p&gt;Outra solução legal de monitoramento é o &lt;a href="https://healthchecks.io/" rel="noopener noreferrer"&gt;healthchecks.io&lt;/a&gt;, serviço para monitorar seus cronjobs (tarefas executadas periodicamente), por exemplo imagine que você configurou para fazer backup do seu laptop na sua Raspberry Pi, mas por algum problema o backup para de ser feito com sucesso. Como vai saber que parou de funcionar? No healthchecks.io você configura uma periodicidade que os backups devem ser feitos e quando é feito o backup seu laptop “pinga” o serviço, e em caso de falha ou o backup deixou de rodar uma notificação é enviada.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infraestrutura como código
&lt;/h2&gt;

&lt;p&gt;Essa é a parte mais legal 🤩, chegou o dia que seu SD card da Raspberry Pi morreu 😞 , tranquilo só fazer a restauração do backup no SD novo e instalar e configurar tudo mas isso pode ser demorado, com a infraestrutura como código (IaC) você cria uma “receita” que configura toda sua infra automaticamente.&lt;/p&gt;

&lt;p&gt;A ferramenta que tenho mais contato é o &lt;a href="https://www.ansible.com/" rel="noopener noreferrer"&gt;ansible&lt;/a&gt;, ele é similar ao &lt;a href="https://www.chef.io/" rel="noopener noreferrer"&gt;chef&lt;/a&gt; e &lt;a href="https://puppet.com/" rel="noopener noreferrer"&gt;puppet&lt;/a&gt;. A principal vantagem do ansible é que ele é agentless, ou seja não precisa de um ter software instalado esperando por instruções do controle, basta ter o python instalado e acesso ssh e na máquina que vai disparar o ansible basta instalar com um pip install, super prático.&lt;/p&gt;

&lt;p&gt;Apesar de ser muito legal automatizar a configuração dos ambientes com IaC, se tudo é importante nada é importante, a IaC não precisa estar no topo das suas prioridades quando configurando seu setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Considerações finais
&lt;/h2&gt;

&lt;p&gt;Espero com essa visão geral dos aspectos do self-hosting tenha uma noção do que se trata e comece a aprender mais sobre o tema e adotar esse movimento.&lt;/p&gt;

&lt;p&gt;Além de todas indicações que já fiz vou fechar indicando um podcast: o &lt;a href="https://selfhosted.show/" rel="noopener noreferrer"&gt;Self-Hosted podcast&lt;/a&gt; que me ajudou muito a aprender sobre esses tópicos e o canal do YouTube: &lt;a href="https://www.youtube.com/c/TechnoTimLive/featured" rel="noopener noreferrer"&gt;Techno Tim&lt;/a&gt; que tem várias dicas de como montar seu homelab.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>security</category>
      <category>homelab</category>
      <category>docker</category>
    </item>
    <item>
      <title>O que é selfhosting e por que adotá-lo</title>
      <dc:creator>Caio Volpato</dc:creator>
      <pubDate>Fri, 28 May 2021 14:24:53 +0000</pubDate>
      <link>https://dev.to/computandoarte/o-que-e-selfhosting-e-por-que-adota-lo-3ld</link>
      <guid>https://dev.to/computandoarte/o-que-e-selfhosting-e-por-que-adota-lo-3ld</guid>
      <description>&lt;p&gt;Muitos dos serviços digitais que utilizamos no nosso dia a dia estão na "nuvem", como Gmail, LinkedIn, Google Drive/Docs etc ... e como diria um famoso ditado “essa tal de "nuvem" não existe, são apenas computadores de outras pessoas”. Mas, então quais as implicações da maioria das nossas vidas digitais estar nesses computadores dessas grandes empresas? Essas implicações no geral são positivas para os usuários?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Xm_Y-m0U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z6e9lsh91hjqrqpl5bu3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xm_Y-m0U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z6e9lsh91hjqrqpl5bu3.png" alt="image"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Neste texto, que vai ser o primeiro de uma série, vamos falar de uma alternativa simples chamada self hosting, ou seja, hospedar os serviços que usamos em computadores que de fato temos controle, e como fazê-lo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Motivos para adotar o self-hosting
&lt;/h2&gt;

&lt;p&gt;Dentre todos os motivos para adotar o self-hosting, vale destacar os seguintes:&lt;/p&gt;

&lt;h3&gt;
  
  
  Segurança
&lt;/h3&gt;

&lt;p&gt;Com muita frequência, vemos notícias de vazamentos envolvendo nossos dados, e mesmo assim muitos dos vazamentos não são percebidos pelas próprias empresas e logo não são noticiados, ou seja, a quantidade de vazamentos pode ser ainda maior.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RbSOWydU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ajuwvfn2m4x32ugokkn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RbSOWydU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ajuwvfn2m4x32ugokkn.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hospedando as próprias coisas não é um alvo tão grande para os cibercriminosos quanto das big tech, pense nos incentivos, se comprometer uma big tech o cibercriminoso vai ter os dados de milhões de pessoas , enquanto comprometer sua pequena infra não rendera tanto dados assim. Além disso outro incentivo para atacar as big tech é que muitas delas tem programas de bug bounty para recompensar a descoberta da suas inseguranças.&lt;/p&gt;

&lt;p&gt;E também isso vai te ensinar quais são as boas práticas de segurança e como adota-lá.&lt;/p&gt;

&lt;h3&gt;
  
  
  Privacidade
&lt;/h3&gt;

&lt;p&gt;Outro ditado famoso diz que se o serviço é gratuito, o produto é você. E isso é verdade, você está pagando o serviço com seus dados.&lt;/p&gt;

&lt;p&gt;Com selfhosting, seus dados ficam apenas com você, retomando totalmente sua privacidade, afinal foi você quem montou o esquemas de criptografia de disco, gerenciamento de senhas (afinal como as senhas sempre vazam não pode usar a mesma senha em mais de um lugar, é bom se inscrever no &lt;a href="https://haveibeenpwned.com/"&gt;haveibeenpwned.com&lt;/a&gt; para ser notificado se suas senhas vazaram)&lt;/p&gt;

&lt;h3&gt;
  
  
  Aprendizado e experiência
&lt;/h3&gt;

&lt;p&gt;Pra min essa é a principal vantagem, hospedar suas próprias coisas vai proporcionar um conhecimento e experiência enorme em diversas disciplinas como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sistemas operacionais (principalmente Linux e talvez BSD).&lt;/li&gt;
&lt;li&gt;Redes&lt;/li&gt;
&lt;li&gt;Segurança&lt;/li&gt;
&lt;li&gt;Contêineres&lt;/li&gt;
&lt;li&gt;Linguagens de script&lt;/li&gt;
&lt;li&gt;Infraestrutura como código&lt;/li&gt;
&lt;li&gt;Monitoramento&lt;/li&gt;
&lt;li&gt;E principalmente Inglês&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ter o seu "ambiente controlado" vai te possibilitar aprender, testar e quebrar as coisas que te proporcionará um aprendizado enorme que num ambiente profissional do trabalho muitas vezes não te permitiria.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exemplos de aplicações
&lt;/h2&gt;

&lt;p&gt;As aplicações mais comuns que normalmente são hospedadas são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://pi-hole.net/"&gt;Pi-Hole&lt;/a&gt;: Permite bloquear anúncios, domínios que te rastreia e maliciosos a nível de rede, ou seja em todos seus dispositivos não apenas no navegador.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://syncthing.net/"&gt;syncthing&lt;/a&gt;: É um app pra Android no PC que permite sincronizar pastas do seu android com o PC e vice versa. Dessa forma você consegue fazer backup do seu celular e sincronizar arquivos sem precisar de uma nuvem das big tech. Se tiver interesse leia meu texto de como montei meu setup de backups: &lt;a href="https://caioau.keybase.pub/blog/backups/"&gt;Como parei de me preocupar e passei a adorar minha solução de backups&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nextcloud.com/"&gt;nextcloud&lt;/a&gt;: É uma solução de nuvem completa, permite sincronizar arquivos como dropbox, sincronizar contatos e agenda, quadro kanban (tipo trello), videochamadas e muito mais.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.home-assistant.io/"&gt;Home Assistant&lt;/a&gt;: Gosta da sua alexa ou google assistant controlando suas luzes e outras coisas da sua smart home? Com o Home assistant você consegue ter seu próprio hub de automação com total privacidade e controle. Gosta de eletrônica? O projeto &lt;a href="https://esphome.io/"&gt;esphome&lt;/a&gt; consegue integrar suas plaquinhas ESP8266/ESP32  com o Home Assistant.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Considerações finais
&lt;/h2&gt;

&lt;p&gt;Com o selfhosting você terá privacidade e controle total dos seus dados e vai aprender muito nessa jornada, nós próximos textos vamos abordar de fato começar.&lt;/p&gt;

&lt;p&gt;Vale uma pequena ressalva, casos você seja uma pessoa dev e só quer colocar seu app no ar, e seu objetivo principal agora é apenas isso, talvez ir pelo caminho do selfhosting não seja a melhor alternativa agora, administração de sistemas é muitas vezes um trabalho de tempo integral e talvez seja melhor usar serviços como &lt;a href="https://www.heroku.com/"&gt;heroku&lt;/a&gt;, &lt;a href="https://vercel.com/"&gt;vercel&lt;/a&gt; e &lt;a href="https://www.netlify.com/"&gt;netlify&lt;/a&gt; que cuidaram de tudo para você, para que consiga fazer essa entrega mais rápido. E quanto tiver disponibilidade estudar e adotar o selfhosting :P&lt;/p&gt;

</description>
      <category>selfhost</category>
      <category>linux</category>
      <category>devops</category>
    </item>
    <item>
      <title>Utilizando o RSS para "furar a bolha"</title>
      <dc:creator>Caio Volpato</dc:creator>
      <pubDate>Tue, 27 Apr 2021 17:59:01 +0000</pubDate>
      <link>https://dev.to/computandoarte/utilizando-o-rss-para-furar-a-bolha-54ai</link>
      <guid>https://dev.to/computandoarte/utilizando-o-rss-para-furar-a-bolha-54ai</guid>
      <description>&lt;p&gt;Já percebeu que o seu feed da rede social está cheio de notícias que fazem você "passar raiva"? O fenômeno é chamado de doomscrolling, e apesar que de termos mais notícias desse tipo, as redes sociais as exibem com mais frequência.&lt;/p&gt;

&lt;p&gt;A conhecida "bolha" (filter Bubble) das redes sociais faz com fiquemos mais tempo nas redes, exibindo apenas posts que engajamos mais, e isso está causando diversas consequências nefastas desde potencializar fake news e desinformação a ansiedade e depressão nos internautas.&lt;/p&gt;

&lt;p&gt;Mas se eu te disser que existe uma alternativa? Um meio de receber as informações diretamente, sem nenhum filtro ou algoritmo. É disto que vamos falar hoje, o RSS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SEmYZ_7i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4fz9dhufqk0y5a7ld96v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SEmYZ_7i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4fz9dhufqk0y5a7ld96v.png" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
Logo do RSS &lt;/p&gt;
&lt;h2&gt;
  
  
  O que é o RSS?
&lt;/h2&gt;

&lt;p&gt;RSS é a sigla para Really Simple Syndication, sincronização realmente simples, é um arquivo XML gerado por muitos sites que exibe os posts que o site tem, dessa forma a pessoa com um leitor de RSS consegue acompanhar diversos blog, sites de noticia e etc … centralizados no seu leitor.&lt;/p&gt;
&lt;h2&gt;
  
  
  Quem criou o RSS?
&lt;/h2&gt;

&lt;p&gt;Uma das pessoas responsáveis pela criação do RSS foi o Aaron Swartz, um hacker conhecido por diversas coisas como o Creative Commons e da melhor rede social o Reddit 😛&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sjZa2Jzc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i01stcwmzv4r414vcsxt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sjZa2Jzc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i01stcwmzv4r414vcsxt.png" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
Aaron Swartz (2008), Fonte: &lt;a href="https://commons.wikimedia.org/wiki/File:Aaron_Swartz_profile.jpg"&gt;wikimedia&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Quem se interessou pela historia do Aaron recomendo os seguintes conteúdos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O documentário: &lt;strong&gt;O Menino da Internet: A História de Aaron Swartz&lt;/strong&gt;: &lt;a href="https://libreflix.org/i/the-internets-own-boy"&gt;LibreFlix&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;E pra quem gosta de podcast Engenharia Reversa #1: &lt;a href="https://anchor.fm/engreversa/episodes/Aaron-Swartz--a-histria-do-ativista-e-co-criador-do-Reddit-e-do-RSS-1-eiif3j/a-a3166kn"&gt;Aaron Swartz, a história do ativista e co-criador do Reddit e do RSS&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Como usar o RSS? Parte 1: Os leitores
&lt;/h2&gt;

&lt;p&gt;Para usar o RSS você precisa de um leitor de RSS, e não faltam opções! A primeira classe de leitores são os locais, um app local no seu computador ou celular que infelizmente não sincroniza entre seus dispositivos, se isso não é um problema para você é uma ótima opção.&lt;/p&gt;

&lt;p&gt;O &lt;a href="https://www.thunderbird.net/"&gt;thunderbird&lt;/a&gt; (cliente livre de emails) é a opção mais tradicional.&lt;/p&gt;

&lt;p&gt;Gosta de programas que rodam no terminal? tem o &lt;a href="https://newsboat.org/"&gt;newsboat&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Para Linux tem o liferea que está disponível na maioria das distribuições.&lt;/p&gt;

&lt;p&gt;No Android tem o &lt;a href="https://play.google.com/store/apps/details?id=com.nononsenseapps.feeder.play"&gt;Feeder&lt;/a&gt;, que também está disponível na &lt;a href="https://f-droid.org/"&gt;Fdroid&lt;/a&gt; (loja de aplicativos livres).&lt;/p&gt;

&lt;p&gt;Tem Mac ou iOS? Uma opção ótima é o &lt;a href="https://netnewswire.com/"&gt;NetNewsWire&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Depois desse monte de opções, se não quiser instalar nada 😛 tem o &lt;a href="https://nodetics.com/feedbro/"&gt;Feedbro&lt;/a&gt; extensão para os navegadores (chrome e firefox).&lt;/p&gt;

&lt;p&gt;Essas são todas as opções de leitores locais que conheço. &lt;/p&gt;

&lt;p&gt;Vamos agora para as opções online, que permitem sincronizar entre seus dispositivos, é muito prático pois se viu algo interessante no computador pode marcar para ler depois no celular e vice versa.&lt;/p&gt;

&lt;p&gt;O &lt;a href="https://feedly.com/"&gt;Feedly&lt;/a&gt; é o serviço mais conhecido, tem um plano básico gratuito, bem amigável, para quem está começando recomendo ir com ele.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5QXwQpIA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7v4gpyyq8g748v0t4ghy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5QXwQpIA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7v4gpyyq8g748v0t4ghy.png" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
Captura de tela do Feedly&lt;/p&gt;

&lt;p&gt;Por fim, a opção que eu uso, para quem gosta de software livre e se preocupa com sua privacidade, o Tiny Tiny RSS (&lt;a href="https://tt-rss.org/"&gt;tt-rss.org&lt;/a&gt;). Você pode instalar numa raspberry-pi e acessar na sua rede local (caso precise acessar fora de casa pode usar serviços como &lt;a href="https://pagekite.net/"&gt;Pagekite&lt;/a&gt; e &lt;a href="https://ngrok.com/"&gt;ngrok&lt;/a&gt; para torna-ló acessível pela internet) ou alugar uma cloud e hospedar lá.&lt;/p&gt;

&lt;p&gt;Outra opção para usar o tt-rss é utilizar a instancia do &lt;a href="https://snopyta.org/"&gt;Snopyta&lt;/a&gt; (grupo sustentado por doações que hospeda diversos softwares livres).&lt;/p&gt;
&lt;h2&gt;
  
  
  Como usar o RSS? Parte 2: Assinando os feeds
&lt;/h2&gt;

&lt;p&gt;Com um leitor de RSS da sua preferencia funcionando, bora assinar os feeds!&lt;/p&gt;

&lt;p&gt;Vamos começar pelo YouTube, os feeds são assim:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/feeds/videos.xml?channel_id="&gt;https://www.youtube.com/feeds/videos.xml?channel_id=&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Substitua no final pelo channel_id do canal que quer assinar. Um truque para descobrir o id que tem interesse: Selecione um vídeo, em seguida clique no ícone do canal e daí o channel_id vai aparecer na url. Por exemplo, o feed do canal da Jana Viscardi é o seguinte:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://www.youtube.com/feeds/videos.xml?channel_id=UC9h2vDtQXEiD0O4aVubsYYA"&gt;www.youtube.com/feeds/videos.xml?channel_id=UC9h2vDtQXEiD0O4aVubsYYA&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Caso o truque não funcione, com o vídeo aberto, abra o código fonte da página (use o atalho control+u) e procure (control+f) por &lt;strong&gt;channelId&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Para acessar os feeds da melhor rede social 😛, o Reddit:&lt;/p&gt;

&lt;p&gt;Na &lt;a href="https://www.reddit.com/wiki/rss"&gt;wiki tem uma seção sobre RSS&lt;/a&gt;, basta colocar um .rss no final. Por exemplo o feed do &lt;a href="https://old.reddit.com/r/dataisbeautiful/"&gt;/r/dataisbeautiful&lt;/a&gt; é:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;old.reddit.com/r/dataisbeautiful/.rss&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Precisa acompanhar projetos do github? Por exemplo, utilizo aqui em casa um firmware livre no meu roteador, o &lt;a href="https://openwrt.org/"&gt;OpenWRT&lt;/a&gt;, para acompanhar as releases o feed é:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;github.com/openwrt/openwrt/releases.atom&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No mesmo padrão para acompanhar os commits, da branch master:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;github.com/openwrt/openwrt/commits/master.atom&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Obs.: Os feeds atom na prática são a mesma coisa que feeds RSS, alguns sites adotam isso.&lt;/p&gt;

&lt;p&gt;Gosta de Newsletters? O serviço &lt;a href="https://kill-the-newsletter.com/"&gt;kill-the-newsletter.com&lt;/a&gt; cria um e-mail para você cadastrar na newsletter e um feed para assinar. &lt;/p&gt;

&lt;p&gt;Veja o &lt;a href="https://manualdousuario.net/newsletters-brasileiras/"&gt;diretório de Newsletters brasileiras&lt;/a&gt; que o manual do usuário fez.&lt;/p&gt;

&lt;p&gt;Gosta do medium? o feed é assim: medium.com/feed/nome-do-usuario, por exemplo, o feed do computando arte 🤭 é:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;medium.com/feed/computando-arte&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;E o Twitter? Infelizmente o twitter descontinuou os seus feeds RSS 😞 Mas tem um software livre chamado &lt;a href="https://github.com/zedeus/nitter"&gt;Nitter&lt;/a&gt; que permite navegar pelos posts do twitter com privacidade e gerar um feed rss.&lt;/p&gt;

&lt;p&gt;Tentei mostrar como chegar nos feeds de alguns serviços populares, mas e os outros? Então muitos sites e podcasts tem o ícone e/ou o link do seu feed, caso não encontre procure no código fonte da pagina por rss ou feed ou xml ou atom e você vai acabar encontrando. A maioria das tecnologias por trás dos sites como o super popular WordPress gera nativamente os feeds RSS.&lt;/p&gt;

&lt;p&gt;Por exemplo, até meu site pessoal simples uso o &lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt; (gerador de sites estáticos, semelhante ao &lt;a href="https://jekyllrb.com/"&gt;Jekyll&lt;/a&gt;) e coloquei o link pro meu feed, mas se for procurar no código fonte da página encontrará:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"alternate"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"application/rss+xml"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;'https://caioau.keybase.pub/blog/index.xml'&lt;/span&gt; &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"Blogs on Pagina do caioau"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pronto, aqui você encontra o meu feed RSS:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;caioau.keybase.pub/blog/index.xml&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Por fim, não poderia fazer um texto sobre RSS sem falar do RSS-Bridge, software livre que gera feeds RSS apartir de páginas do facebook, instagram (dá até pra seguir hashtags ✨) , Wikipedia e várias outras integrações.&lt;/p&gt;

&lt;h2&gt;
  
  
  Considerações finais
&lt;/h2&gt;

&lt;p&gt;Com o RSS podemos "furar a bolha" e receber toda a informação sem filtros e algoritmos. Usando o RSS logo vai perceber uma das razões (além do lucro das big tech 💸) do porque desses filtros, é muita informação! Então use com moderação (para evitar o famoso FOMO, fear of missing out, a sensação de que não posso ficar minutos longe do meu celular pois estou perdendo algo) e tentar uma relação mais saudável com a tecnologia.&lt;/p&gt;

&lt;p&gt;Vale recomendar o episódio #41 do tecnocracia, é um podcast excelente sobre as consequências da tecnologia e vou indicar justamente o ep. #41: &lt;a href="https://manualdousuario.net/podcast/tecnocracia-41/"&gt;Manual prático para retomar sua atenção do calabouço das redes sociais&lt;/a&gt; com várias dicas 🧘🔕 de como controlar o celular e as redes sociais e não o contrário.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ty0frCbA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7u5bb3ebya7nzcyyq8w3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ty0frCbA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7u5bb3ebya7nzcyyq8w3.png" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
Estamos usando a tecnologia? Ou sendo usados? (&lt;a href="https://www.gizmodo.com.au/2014/09/a-vivid-reminder-from-banksy-that-technology-can-enslave-us-all/"&gt;Fonte&lt;/a&gt;) &lt;/p&gt;

&lt;p&gt;Por fim, pra quem gosta do tema, vou indicar alguns conteúdos muito interessantes 🤯&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mrG9gtPP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/czq80ojh73fro9cddsnv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mrG9gtPP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/czq80ojh73fro9cddsnv.png" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
Crédito: Cryptorave no &lt;a href="https://twitter.com/cryptoravebr/status/1307305692185817094?s=19"&gt;twitter&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;O documentário &lt;a href="https://www.imdb.com/title/tt11464826/"&gt;Dilema nas Redes (2020)&lt;/a&gt;, disponível na Netflix, bombou! Adoro como ele é muito didático e expões as principais questões do tema, recomendo muito pra quem ainda não viu. Outro doc, é o &lt;a href="https://www.imdb.com/title/tt11394170/"&gt;Coded Bias (2020)&lt;/a&gt; que foca mais nas tecnologias de reconhecimento facial e seus vieses e contou com a presença da Cathy O'Neil, autora do livro fenomenal Weapons of Math Destruction traduzido no Brasil como Algoritmos de Destruição em Massa.&lt;/p&gt;

&lt;p&gt;Uma talk recente, que eu adorei foi a &lt;a href="https://media.ccc.de/v/rc3-891673-rage_against_the_machine_learning"&gt;Rage Against The Machine Learning&lt;/a&gt;, onde o Dr. Hendrik Heuer fala da sua pesquisa de auditoria dos algoritmos das redes sociais para o interesse público.&lt;/p&gt;

&lt;p&gt;Para podcast, vou indicar outros episódios do tecnocracia, é difícil indicar só alguns, todos são ótimos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;#18: &lt;a href="https://manualdousuario.net/podcast/tecnocracia-18/"&gt;Em nome do lucro, o YouTube abriu os portões do inferno da desinformação&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;#40: &lt;a href="https://manualdousuario.net/podcast/tecnocracia-40/"&gt;O filtro alucinógeno do Instagram colocou a humanidade no divã - e alguns no caixão&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;#42: &lt;a href="https://manualdousuario.net/podcast/tecnocracia-42/"&gt;As empresas que nos colocaram nessa enrascada não nos tirarão dela&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>rss</category>
      <category>aaronswartz</category>
      <category>socialdilemma</category>
      <category>fomo</category>
    </item>
    <item>
      <title>Precisa transferir um arquivo? O magic-wormhole vai mudar sua vida!</title>
      <dc:creator>Caio Volpato</dc:creator>
      <pubDate>Mon, 19 Apr 2021 21:33:41 +0000</pubDate>
      <link>https://dev.to/computandoarte/precisa-transferir-um-arquivo-o-magic-wormhole-vai-mudar-sua-vida-58n1</link>
      <guid>https://dev.to/computandoarte/precisa-transferir-um-arquivo-o-magic-wormhole-vai-mudar-sua-vida-58n1</guid>
      <description>&lt;p&gt;Já precisou transferir um arquivo para alguém pela internet e não foi fácil chegar numa solução fácil? O magic-wormhole pode ser uma excelente alternativa!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oqD4abBn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oarmau5pnnfx0c5zouzx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oqD4abBn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oarmau5pnnfx0c5zouzx.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://xkcd.com/949/"&gt;XKCD #949: File transfer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esse XKCD ilustra bem a motivação do magic-wormhole, a fim de copiar um arquivo para outra pessoa, algumas vezes sites como Dropbox não são a melhor opção, e como muitas vezes não se pode encontrar fisicamente para ser via um “pendrive” (principalmente com uma pandemia 😷) o magic-wormhole cria um “túnel mágico” para te salvar✨&lt;/p&gt;

&lt;h2&gt;
  
  
  Como usar
&lt;/h2&gt;

&lt;p&gt;O magic-wormhole é um programa em python para ser usado no terminal, então se você já tem o python instalado basta instalá-lo com o pip:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;pip install magic-wormhole&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Uma vez instalado de ambos os lados (quem envia e quem recebe), basta rodar o comando &lt;strong&gt;wormhole send&lt;/strong&gt; seguido do nome do arquivo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ wormhole send 
Sending 45 Bytes file named 'arquivo_a_ser_enviado'
Wormhole code is: 6-wichita-reindeer
On the other computer, please run:
wormhole receive 6-wichita-reindeer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora, quem vai receber deve digitar &lt;strong&gt;wormhole receive&lt;/strong&gt; seguindo do código gerado (6-wichita-reindeer).&lt;/p&gt;

&lt;p&gt;É isso! Como mágica o arquivo é enviado como mágica 🤩&lt;/p&gt;

&lt;h2&gt;
  
  
  Como funciona o magic-wormhole?
&lt;/h2&gt;

&lt;p&gt;Sem entrar muito em detalhes, o magic-wormhole funciona em 2 partes: a descoberta e o envio em si.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A pessoa que vai enviar o arquivo roda o wormhole send.&lt;/li&gt;
&lt;li&gt;É gerado um código (ex.: 6-wichita-reindeer), pelo servidor mailbox do magic-wormhole.&lt;/li&gt;
&lt;li&gt;Quando o cliente entra com o código, a pessoa que envia e a recebe conseguem “se encontrar”.&lt;/li&gt;
&lt;li&gt;É tentado uma conexão direta, entre as duas pessoas, se estiverem na mesma rede local vai funcionar e ser muito rápido, caso contrário o magic-wormhole intermedia a conexão através do seu servidor de transito (a conexão sempre é criptografada).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Quem tiver interesse para aprender profundamente como funciona veja a &lt;a href="https://www.youtube.com/watch?v=oFrTqQw0_3c"&gt;palestra do Brian Warner, o autor original do projeto na PyCon 2016&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Outro programa excelente que funciona de uma maneira similar, mas para outro proposito é o &lt;a href="https://syncthing.net/"&gt;Syncthing&lt;/a&gt;, que permite sincronizar os arquivos entre seus dispositivos, criando sua “nuvem privada” somente com seus dispositivos.&lt;/p&gt;

</description>
      <category>python</category>
      <category>cli</category>
      <category>terminal</category>
      <category>filesharing</category>
    </item>
  </channel>
</rss>
