Crie seu próprio “SpeedTest” utilizando o projeto librespeed

Neste tutorial você irá aprender a criar seu próprio testador de velocidade independente. Precisaremos apenas um serviço web como Apache, PHP e MariaDB/MySQL. Para este teste usei o projeto librespeed qual fiz um fork fazendo algumas modificações, principalmente no visual dele.

Basicamente a instalação é criar o banco e a tabela, jogar os arquivos para dentro do seu servidor web e editar o arquivo que fará a conexão com o banco.

Mas como sempre vamos começar do zero, e já começo com o que temos de mais recente como “requisitos”:

Debian 10 Stretch / Instalação Limpa
Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP”
phpMyAdmin :: (Opcional)

Requisitos instalados prosseguimos!

No exemplo vou configurar o apache para librespeed.remontti.com.br, logo é necessário configurar seu subdomínio “librespeed” (ou nome da sua escolha) em seu DNS Server.

Exemplo:
...
librespeed       A       250.250.250.5
                 AAAA    2001:db8:bebe:cafe::5
...

Por segurança recomendo remover a assinatura do servidor, evitando os “espertinhos”

# sed -i 's/ServerTokens OS/ServerTokens Prod/' /etc/apache2/conf-available/security.conf
# sed -i 's/ServerSignature On/ServerSignature Off/' /etc/apache2/conf-available/security.conf

Crie o arquivo de configuração do apache para o “librespeed.remontti.com.br”

# vim /etc/apache2/sites-available/librespeed.conf
<virtualhost *:80>
        ServerName librespeed.remontti.com.br
        ServerAdmin noc@remontti.com.br
        DocumentRoot /var/www/librespeed 
        <directory /var/www/librespeed/ >
                Options FollowSymLinks
                AllowOverride All
        </directory> 
        LogLevel warn 
        ErrorLog ${APACHE_LOG_DIR}/error_librespeed.log
        CustomLog ${APACHE_LOG_DIR}/access_librespeed.log combined
</virtualhost>

Vamos criar nosso diretório raiz (/var/www/librespeed):

# mkdir /var/www/librespeed/

Ativamos o arquivo librespeed.conf e restartamos o apache2

# a2ensite librespeed
# systemctl restart apache2

Recomendo que você crie um certificado válido para acessar seu endereço com HTTPS. Veja como acessando o tutorial: Criando certificado grátis com Let’s Encrypt para o Apache no Debian 10

Vamos acessar o banco de dados e criar nosso banco de dados e nosso usuário para acessa-lo.

# mariadb -p 

Altere o campo SUA_SENHA

CREATE DATABASE librespeed;
GRANT ALL PRIVILEGES ON librespeed.* TO 'librespeed'@'localhost' IDENTIFIED BY 'SUA_SENHA';
FLUSH PRIVILEGES;
quit;

Acesse novamente o banco de dados com o usuário librespeed

# mariadb -p -u librespeed

Criamos a tabela speedtest_users que irá registrar todos os testes.

USE librespeed;

CREATE TABLE `speedtest_users` (
  `id` int(11) NOT NULL,
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `ip` text NOT NULL,
  `ispinfo` text,
  `extra` text,
  `ua` text NOT NULL,
  `lang` text NOT NULL,
  `dl` text,
  `ul` text,
  `ping` text,
  `jitter` text,
  `log` longtext
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `speedtest_users`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `speedtest_users`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;COMMIT;

show tables;

Vamos baixar o projeto que modifiquei. Vale lembrar que o projeto tem outras coisas interessantes como desenvolvimento para app para android, testador para múltiplos hosts.

# apt install unzip wget
# cd /tmp
# wget https://github.com/remontti/speedtest/archive/master.zip
# unzip /tmp/master.zip
# mv /tmp/speedtest-master/versao_remontti/* /var/www/librespeed/

Edite o arquivo telemetry_settings.php para definir a senha de acesso das estatísticas (stats.php) e a senha do usuário do banco de dados.

# vim /var/www/librespeed/results/telemetry_settings.php

Altere:

[...]
$stats_password="PASSWORD"; // Senha para acesso do stats.php
[...]
$MySql_password="SUA_SENHA"; // Senha que você definiu para o banco de dados
[...]

Agora basta você acessar seu: “librespeed.dominio.com.br”

Para acessar as estatísticas dos testes realizados acesse: librespeed.dominio.com.br/results/stats.php
Entre com a senha que setou em stats_password:

Tenha acesso a todos os resultados feitos em seu servidor:

Para colocar seu logo basta editar o arquivo index.html e remova o comentário na linha 315 `<!– –>` ajuste como achar melhor.

Gostou? Ficou feliz com seu novo testador?

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Abraço!

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

38 Resultados

  1. Bgp disse:

    Ensina como mandar o relatório para um grupo do telegram

  2. Giovani disse:

    Pessoal eu gostaria de aumentar o numero de conexões TCP que o librespeed inicia na hora dos testes.
    Alguém sabe se é possível ?

  3. Clayton Sainz disse:

    parabéns amigo muito bom o tutorial, poderia me ajudar a criar “speedtest_users” pois quando estou editando as linhas e finalizo com ; da ERROR 1064

  4. Clayton Sainz disse:

    bom dia, estou com dificuldades de cria a tabela “Criamos a tabela speedtest_users que irá registrar todos os testes.”

    USE librespeed;

    CREATE TABLE `speedtest_users` (
    `id` int(11) NOT NULL,
    `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `ip` text NOT NULL,
    `ispinfo` text,
    `extra` text,
    `ua` text NOT NULL,
    `lang` text NOT NULL,
    `dl` text,
    `ul` text,
    `ping` text,
    `jitter` text,
    `log` longtext
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    quando chego aqui é fecho com ; ela da erro de syntax no comando

    poderia me ajudar

  5. lgl5 disse:

    Top demais. Uma dúvida: Como faço para que no stats.php registre o IP com porta de orgiem, no caso de cliente com CGNAT. Fazendo o procedimento de ativar no log do apache resolve ?

  6. Parabéns meu amigo, vc é 10. top d+ esse tutorial

  7. Milton Rodrigo dos Santos disse:

    Boa pessoal, parabéns de novo pelo tuto, e o seguinte talvez vc tenha passado por isso e possa me ajudar, meu servidor esta na versão 10.0.0 Debian (instalação limpa) ele esta congelando e so volta se for reiniciado, sabe mais ou menos o que pode ser?

  8. Milton Rodrigo dos Santos disse:

    Valeu meu amigo, muito muito bom…

  9. vim /var/www/librespeed/result/telemetry_settings.php
    o correto é: vim /var/www/librespeed/results/telemetry_settings.php

  10. Rudimar, MTO TOP !! funcionou aqui, única dificuldade é tirar ip privado da rede colocar ip publica para mostrar na hora do teste…como posso fazer isso?

  11. andrews disse:

    o meu nao funcionou…
    porém instalei com mysql

  12. ricardo rodrigues rrodrigues disse:

    Referente ao app, da para configurar ele para usar o servidor que subimos?
    Se sim, como fariamos?

  13. Ricardo Rodrigues Gomes de Sousa disse:

    Muito bom, tem contribuído muito com a galera da TI.

  14. Felipe Mendes disse:

    Olá Remmonti, teria como mascarar esse “Unknown ISP”? Os clientes estão testando direto com 100.64 ai ficou dessa forma.

  15. Pedro Rodrigues disse:

    Opa amigo, boa tarde! configurei exatamente conforme o tutorial mas não obtenho exito na parte de salvar os resultados, simplesmente não aparece nada. Já dei privilegio a pasta /results, ja conferi as tabela importada e tudo ok.

  16. Renato Moura disse:

    Rudimar, ficou top.

    Só mais uma pergunta, consigo automatizar essa verificação para poder saber o trafego e fazer uma melhor monitoria?

  17. Leandro disse:

    é possivel direcionar os testes de fast.com, speedtest, etc para serem realizados nesse teste?

  18. Fabio disse:

    Como posso fazer para aparecer o nome do provedor no bloco de ip, uso cgnat

  19. Ledson Alves disse:

    No app tem como mudar a logo e o servidor (só aparecem servidores internacionais) ??

  20. Ledson disse:

    a2ensite librespeed — Comando não encontrado

  21. TIAGO disse:

    Estou com problema para aparacer o IP do cliente.

  22. Antonio disse:

    Parabéns projeto muito show
    Para colocar uma logo , o arquivo .png deve estar no /var/www/html ??

  23. Fabio disse:

    Parabéns, muito legal sua inicitiva!

    Como podemos alterar os servidores de teste? Tá dando ping muito alto ao usar o teste.

  24. Junior disse:

    De que configuração de maquina precisamos para instalar o mesmo?

  25. Alan disse:

    Parabéns, instalei, perfeito. Obrigado por compartilhar.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *