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!
Ensina como mandar o relatório para um grupo do telegram
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.