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.
1 2 3 4 5 |
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”
1 2 |
# 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”
1 |
# vim /etc/apache2/sites-available/librespeed.conf |
1 2 3 4 5 6 7 8 9 10 11 12 |
<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):
1 |
# mkdir /var/www/librespeed/ |
Ativamos o arquivo librespeed.conf e restartamos o apache2
1 2 |
# 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.
1 |
# mariadb -p |
Altere o campo SUA_SENHA
1 2 3 4 |
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
1 |
# mariadb -p -u librespeed |
Criamos a tabela speedtest_users que irá registrar todos os testes.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
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.
1 2 3 4 5 |
# 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.
1 |
# vim /var/www/librespeed/results/telemetry_settings.php |
Altere:
1 2 3 4 5 |
[...] $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!
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 ?
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
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
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 ?
Parabéns meu amigo, vc é 10. top d+ esse tutorial
top mesmo
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?
Valeu meu amigo, muito muito bom…
vim /var/www/librespeed/result/telemetry_settings.php
o correto é: vim /var/www/librespeed/results/telemetry_settings.php
Corrigido!
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?
Conseguiu saber como fazer?
não consegui não.. está com ip privado ainda, infelizmente…
o meu nao funcionou…
porém instalei com mysql
Referente ao app, da para configurar ele para usar o servidor que subimos?
Se sim, como fariamos?
Muito bom, tem contribuído muito com a galera da TI.
Olá Remmonti, teria como mascarar esse “Unknown ISP”? Os clientes estão testando direto com 100.64 ai ficou dessa forma.
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.
Rudimar, ficou top.
Só mais uma pergunta, consigo automatizar essa verificação para poder saber o trafego e fazer uma melhor monitoria?
Não consegui compreender direito sua pergunta.
é possivel direcionar os testes de fast.com, speedtest, etc para serem realizados nesse teste?
Não
Como posso fazer para aparecer o nome do provedor no bloco de ip, uso cgnat
Você pode desativar para não aparecer se quiser.
Ola para mim também nao aparecia descobri que no php ini a opção allow_url_fopen estava em Off ao mudar para On comecei a ver o nome do provedor.
No app tem como mudar a logo e o servidor (só aparecem servidores internacionais) ??
a2ensite librespeed — Comando não encontrado
vire root com “su -” pois se virar so com “su” no debian 10 muitas coisas mudaram rsrs
Estou com problema para aparacer o IP do cliente.
Parabéns projeto muito show
Para colocar uma logo , o arquivo .png deve estar no /var/www/html ??
Parabéns, muito legal sua inicitiva!
Como podemos alterar os servidores de teste? Tá dando ping muito alto ao usar o teste.
Se vc colocou ele na sua rede e ta alto o problema esta na rede.
De que configuração de maquina precisamos para instalar o mesmo?
Roda até numa carroça rsrsr
Estou pensando em colocar em produção, usando umas raspberry pi4 8G de ram. Sera que roda ? Rs.
Parabéns, instalei, perfeito. Obrigado por compartilhar.