Faça o seu servidor de Cache Steam

Você faz o download de diversos jogos constantemente e está limitado pela sua conexão de Internet? Aprenda como fazer um servidor local de Cache para jogos da Steam.

A evolução de gráficos, áudio e recursos em jogos virtuais levam ao aumento do espaço em disco necessário para a sua instalação. O esforço colocado pelos desenvolvedores em aumentar os detalhes da aparência de cenário e personagens, atualmente faz certos jogos chegarem aos 100GB de arquivos.

A Steam é uma das maiores plataformas de jogos, que oferece fácil acesso e gerenciamento dos jogos, permitindo que você mantenha diversos jogos em sua biblioteca digital e faça a instalação deles no momento em que desejar, sem precisar armazenar em seu computador ou possuir a mídia física de todos os jogos que você possui.

Se você joga ocasionalmente e acaba tendo que desinstalar o jogo por falta de espaço ou possui diversos computadores que acessam essas plataformas e fazem download de jogos, essa facilidade de baixar um jogo a qualquer momento pode se tornar um processo demorado. Para atender a essa demanda de downloads repetidos da Internet, aprenda a instalar um Servidor de Cache para estas plataformas.

O funcionamento deste Servidor de Cache é simples, um computador acessa, por exemplo, a Steam para baixar ou atualizar um jogo de um servidor Steam. Esse download é feito utilizando protocolo HTTP, isso permite que com algumas alterações nas configurações de rede do computador seja possível passar esse tráfego pelo nosso servidor de Cache, que armazenará esses pacotes, para futuramente serem baixados deste servidor local.

Um servidor de Cache, para qualquer aplicação, funciona com um usuário acessando uma página Web, o servidor verifica se a página solicitada está em cache, se ela estiver o servidor retorna a solicitação imediatamente, se ela não estiver em cache, o servidor encaminha a requisição para a aplicação solicitada, que então é retornada, fornecida ao usuário e armazenada em cache para as próximas solicitações, para que o não seja mais preciso acessar a aplicação original.

Sabendo do funcionamento de um servidor de Cache, podemos instalar um servidor local, para que as requisições de uma aplicação específica, neste caso a Steam, sejam armazenadas e acessadas em Cache e as demais requisições sejam encaminhadas para a Internet.

Como a Steam não possui um serviço nativo para a implementação de um servidor local de Cache, será preciso fazer algumas configurações de rede, no computador e a implementação de um serviço DNS junto ao Servidor de Cache.

Instalação

Antes de iniciar o processo é importante que você tenha um computador para ser dedicado a receber a instalação destes serviços e estar ciente de que para o funcionamento deste sistema é preciso que o servidor sempre esteja ligado e tenha bastante espaço de armazenamento disponível, pois todos os jogos baixados serão armazenados nele. Para obter o melhor desempenho é preferível que o computador tenha um sistema de armazenamento de alto desempenho, como por exemplo SSDs ou uma configuração de HDs em RAID. Também é importante que esse computador possua um interface de rede Gigabit Ethernet, ou superior, em uma rede também Gigabit, pois todo o tráfego da rede estará passando por este dispositivo.

Caso apareçam dúvidas no processo a ser feito a seguir, sugiro a leitura sobre DNS, Docker, Terminal Linux e RAID.

A implantação deste servidor será demonstrada para o sistema Ubuntu 18.08, mas pode ser adaptado para outras distribuições GNU/Linux. Todos os serviços a serem executados pelo servidor serão através de Docker.

Prepare um usuário não root para executar os comandos Docker

Se você está usando o sistema Ubuntu 18.04 Desktop, provavelmente você já está utilizando um usuário que não seja superusuário, mas que tenha permissão de sudo. Caso esse não seja o seu caso, execute os comandos a seguir, alternando “USERNAME” pelo nome desejado.

Adicione um usuário com o comando em um terminal:

adduser USERNAME

Para executar os comandos Docker como superusuário, adicione o usuário criado no grupo de sudoers, com o comando a seguir em um terminal:

usermod -aG sudo USERNAME

Se você não quer dar total acesso de superusuário, somente para executar os comandos Docker, execute o comando a seguir em um terminal:

usermod -aG docker USERNAME

Instale o Docker

Para esta verificação execute o comando a seguir em um terminal e será lhe informado se ele já está instalado, caso contrário será iniciada a instalação.

sudo apt install curl -y

O Docker pode ser instalado pelo gerenciador de pacotes do sistema, mas executando o comando a seguir em um terminal será instalada a última versão e todas as dependências serão resolvidas.

sudo curl -sSL https://get.docker.com/ | sh

Você pode verificar se o Docker está funcionando corretamente executando o comando a seguir em um terminal.

sudo systemctl status docker

A execução deste comando deve mostrar uma sequência de informações, incluindo “active (running)” na cor verde, como mostra a Figura a seguir.

Configurando o endereço IP do computador

Antes de iniciar os serviços necessários, é preciso configurar o endereço IP estático para o computador, pois para o funcionamento do servidor, ele sempre precisará estar no mesmo endereço.

Para isto, se você estiver utilizando o sistema Ubuntu 18.04 Desktop acesse as configurações de rede cabeada, como mostra a figura a seguir.

ServidorCache02AbrirConfiguracoesDeRede

Acesse as configurações da rede e navegue até “IPv4” e defina para “Manual”. Insira o IP desejado, com base na sua rede, caso você não saiba qual IP definir, verifique o IP que o sistema possui atualmente e defina este mesmo. Na “Máscara de Rede” defina de acordo com a sua rede, por exemplo “255.255.255.0”. Defina o “Gateway” para o endereço IP do seu roteador, este endereço pode ser, por exemplo “192.168.0.1”. Defina os “Servidores DNS” para seus servidores DNS desejados, se você não sabe o que isso é usar “1.1.1.1” e “8.8.8.8”.

Saia por “OK” e depois em “Voltar”. Um exemplo de configuração pode ser visto na figura a seguir.

ServidorCache03ConfiguracaoIpServidor

Reinicie o serviço de rede executando o comando a seguir em um terminal:

sudo systemctl restart networking

Para verificar se o processo funcionou tente acessar a internet por este computador, ou utilize o comando “ping” em um outro computador para o endereço configurado.

Iniciar o servidor de Cache

Antes de iniciar a execução da docker, certifique-se de que não há outro serviço sendo executado que utiliza a porta 80, que é utilizada para o serviço de Cache, com o protocolo HTTP.

Para iniciar o servidor de Cache, execute a sequência de comandos a seguir em um terminal, para iniciar o contêiner “steam-cache”, novamente em “USERNAME” substitua pelo nome do usuário que foi configurado anteriormente. Também altere o endereço IP para o endereço do seu servidor, definido anteriormente.

sudo docker run
–restart unless-stopped -d
–name steam-cache
-v /home/USERNAME/cache/steam/data:/data/cache
-v /home/USERNAME/cache/steam/logs:/data/logs
-p 192.168.0.50:80:80
steamcache/generic:latest

Iniciar os serviços de rede

Para fazer com que o servidor funcione propriamente, é preciso que o tráfego da rede passe por este servidor, para que assim, os pacotes que ainda não estão em cache sejam baixados, os que já estão sejam fornecidos e o restante do tráfego seja redirecionado. É importante que nenhum outro serviço esteja sendo executado na porta 53 do sistema, pois ela será utilizada pelo serviço DNS a ser implantado.

DNS

O serviço DNS também será implementado por Docker, para isso execute a sequência de comandos a seguir em um terminal, que iniciará o contêiner docker “steamcache-dns” novamente alterado os endereços IP pelos definidos anteriormente, endereço local e um endereço DNS.

sudo docker run
–restart unless-stopped -d
–name steamcache-dns
-p 192.168.0.50:53:53/udp
-e UPSTREAM_DNS=1.1.1.1
-e STEAMCACHE_IP=192.168.0.50
steamcache/steamcache-dns:latest

HTTPS

Na sequência inicie o contêiner “sniproxy”, que encaminha requisições HTTPS que o servidor não consegue ler durante a encriptação, para isso execute a sequência de comandos a seguir em um terminal.

docker run
–restart unless-stopped -d
–name sniproxy
-p 443:443
steamcache/sniproxy:latest

Para verificar se todos os contêineres estão executando corretamente, execute o comando a seguir em um terminal. O resultado deve mostrar o tempo de execução de cada contêiner.

sudo docker container ls

Se tudo estiver funcionando, acesse um computador cliente, onde a Steam será utilizada configure o DNS.

Cliente Linux

Se o seu computador você pode acesse as configurações de rede e navegue até “Conexão IPv4” > “Conexão com fio 1” (isso pode ter outro nome, então selecione a entrada em “Ethernet”).

Em “Configurações IPv4” defina os “Servidores DNS” para seu servidor de caches como “192.168.0.50” e você pode acrescentar um endereço alternativo como “1.1.1.1”, pra um caso de falha no servidor de cache.

Saia por “OK” e depois em “Voltar”. Nos computadores clientes não é preciso definir IP estático. Um exemplo de configuração pode ser visto na figura a seguir.

ServidorCache04ConfiguracaoIpClienteLinux

Cliente Windows

Acesse o “Painel de Controle” > “Rede e Internet” > “Central de Rede e Compartilhamento” > “Alterar as opções do adaptador” > Clique com o botão direito do mouse no seu adaptador de Internet > “Propriedades” > desmarque “Protocolo IP versão 6 (TCP/IPv6)” > Clique em “Protocolo IP versão 4 (TCP/IPv4)” e, em seguida, em “Propriedades”.

Nas propriedades marque "Usar os seguintes endereços de servidor DNS"

Definir o “Servidor DNS preferencial” para o IP do seu contêiner Docker steamcache-dns, como “192.168.0.50” e defina o “Servidor DNS alternativo” para o seu provedor de DNS de escolha, como, por exemplo, “1.1.1.1”, como mostra a figura a seguir.

Após salvar a configuração, execute o comando a seguir em um promt de comando (cmd).

ipconfig /flushdns

Finalizando

Nesse ponto, o seu servidor está configurado e pronto para o uso, agora você pode começar a baixar jogos nos seus computadores cliente, que estão com o servidor local configurado como servidor DNS. Nas figuras abaixo, veja um teste que fiz, na primeira imagem está a taxa de download pela primeira vez, ou seja, o jogo estava sendo baixado para o computador e para o servidor, já na segunda figura a taxa de download está muito mais alta, pois o jogo está sendo baixado do servidor local.

ServidorCache06Antes
ServidorCache07Depois

Para verificar o tráfego da rede no servidor, você pode utilizar alguma ferramenta de monitoramento de rede. Também pode ser útil executar um monitor de recursos de todo sistema, para ver se o seu hardware suporta a carga demanda.

Como explicado anteriormente, é necessário que um jogo seja baixado uma vez, para que ele fique armazenado em cache, então se você baixar pela primeira vez não será notada diferença na velocidade de download, então para validar o funcionamento, baixe um jogo em um computador configurado e na sequência baixe em outro, ou desinstale e instale novamente, aí deve ser visto um aumento significativo na velocidade de download.

Um abordagem que pode ser utilizada em locais com grande número de computadores que utilizarão o servidor, é fazer a configuração do servidor DNS no roteador da rede, em vez de configurar cada computador cliente.

6 Curtidas