? Requisitos recomendados para tráfego intenso
Recurso | Especificação recomendada |
---|---|
CPU | 8 vCPUs (Xeon/EPYC, alta performance) |
RAM | 16 GB ou mais |
Disco | SSD NVMe ou RAID com 100+ IOPS |
Rede | Link dedicado de 10 Gbps simétrico |
Conectividade | ASN próprio ou rotas bem divulgadas |
### Caso pegue a imagem que já temos pronta, mude algumas informações internas.
Acesse:
nano /etc/resolv.conf
E mude para seu DNS Autoritativo e outro externo.
Exemplo:
OBS: o 200.200.200.0 é somente um exemplo. Como se fosse nosso dns autoritativo local. Mude para o seu.
nameserver 200.200.200.0
nameserver 1.1.1.1
Depois mude essa opção da mesma forma:
nano /etc/systemd/resolved.conf
[Resolve]
DNS=200.200.200.0 1.1.1.1
FallbackDNS=1.1.1.1
Reinicie o serviço:
systemctl restart systemd-resolved
### Instalando o Speed.
### Caso baixou nossa imagem pre-conf, so mude
OoklaServer.allowedDomains = *.ookla.com, *.speedtest.net, *.tomich.com.br
no arquivo: /usr/local/src/ooklaserver/OoklaServer.properties
Pacotes necessários, não esqueça de virar root de forma correta `su -`
su - apt install vim wget unzip net-tools psmisc
Faça alguns ajustes de kernel para melhorar a performace do servidor:
nano /etc/sysctl.conf
Adicione ao final:
# Kernel deve tentar manter o máximo possível de dados em memória principal vm.swappiness = 5 # Evitar que o sistema fique sobrecarregado com muitos dados sujos na memória. vm.dirty_ratio = 10 vm.dirty_background_ratio = 5 # Aumentar o número máximo de conexões simultâneas net.core.somaxconn = 65535 # Aumentar o tamanho máximo do buffer de recepção e transmissão de rede net.ipv4.tcp_mem = 4096 87380 16777216 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 # Melhorar o desempenho da conexão e a evitar congestionamentos net.ipv4.tcp_sack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_moderate_rcvbuf = 1 net.ipv4.tcp_timestamps = 1 # Reduzir o tempo limite de conexão TCP net.ipv4.tcp_fin_timeout = 15 # Ativar o escalonamento de fila de recepção de pacotes de rede net.core.netdev_max_backlog = 8192 # Aumentar o número máximo de portas locais que podem ser usadas net.ipv4.ip_local_port_range = 1024 65535 # Define o controle de saída de pacotes como "fq" para melhorar a distribuição de dados. net.core.default_qdisc=fq # Ativa o algoritmo BBR para melhorar a velocidade e evitar congestionamento de rede. net.ipv4.tcp_congestion_control=bbr
Carregue para o kernel as novas alterações
sysctl -p
Módulos do kernel
modprobe -a tcp_illinois
echo "tcp_illinois" >> /etc/modules
TCP Illinois é um algoritmo de controle de congestionamento que utiliza uma combinação de técnicas de controle de congestionamento baseadas em perda e atraso para melhorar o desempenho em redes de alta perda. Ele foi projetado para funcionar bem em ambientes móveis sem fio, onde a perda de pacotes é frequentemente causada por condições de RF em mudança.
modprobe -a tcp_westwood echo "tcp_westwood" >> /etc/modules
TCP Westwood é um algoritmo de controle de congestionamento que utiliza medidas de janela e de banda para detectar congestionamentos em vez de depender da detecção de perda de pacotes, que pode ser menos confiável em ambientes sem fio. Ele foi projetado especificamente para ambientes móveis sem fio e pode ser uma boa opção para melhorar o desempenho em redes sem fio com alta variação de taxa de perda de pacotes.
modprobe -a tcp_htcp
echo "tcp_htcp" >> /etc/modules
O TCP-HTCP (Highspeed TCP for large congestion windows) é um algoritmo de controle de congestionamento do protocolo TCP que foi projetado para melhorar o desempenho em conexões de alta velocidade com janelas de congestionamento grandes.
Vamos criar o diretório /usr/local/src/ooklaserver onde ira ficarnossa aplicação OoklaServer.
mkdir /usr/local/src/ooklaserver
Vamos baixar nosso script de instalação em /usr/local/src/ooklaserver e executar a instalação.
cd /usr/local/src/ooklaserver
wget https://install.speedtest.net/ooklaserver/ooklaserver.sh
chmod +x ooklaserver.sh
./ooklaserver.sh install
Please confirm (y/n) > y
Neste momento o servidor ookla já iniciou, acesse em seu navegado http://sub.dominio:8080 e verifique se o mesmo esta rodando> OoklaServer – It worked!
Pare o serviço ooklaserver
./ooklaserver.sh stop
Ou (se seu tempo é curto)
killall -9 OoklaServer
Edite o arquivo de configuração OoklaServer
nano /usr/local/src/ooklaserver/OoklaServer.properties
A partir de 2023 IPv6 virou obrigatório, descomente (remova o # da frente) a linha a baixo deixando true.
Descomente a linha e inclua todos seus subidominios para seu domínio ex `*.tomich.com.br`
OoklaServer.allowedDomains = *.ookla.com, *.speedtest.net, *.tomich.com.br
Ativa o filtro que bloqueia agentes de usuário conhecidos como indesejados, ajudando a reduzir tráfego de fontes não oficiais.
OoklaServer.userAgentFilterEnabled = true
Define o número máximo de conexões simultâneas permitidas por endereço IP; o padrão é 500.
OoklaServer.ipTracking.maxConnPerIp = 5
Estabelece o número máximo de conexões permitidas por IP dentro de cada intervalo de tempo (bucket); o padrão é 20000.
OoklaServer.ipTracking.maxConnPerBucketPerIp = 10
Define a capacidade máxima do pool de threads de trabalho; o padrão é 30.000.
OoklaServer.workerThreadPool.capacity = 30000
Especifica o tamanho máximo de quadro (frame) aceito em conexões WebSocket, em bytes; o padrão é 5 MB (5.242.880 bytes).
OoklaServer.websocket.frameSizeLimitBytes = 5242880
Define o tempo máximo, em minutos, para manter estatísticas de IPs inativos após a última conexão registrada; o padrão é 35 minutos.
OoklaServer.ipTracking.maxIdleAgeMinutes = 35
Se você desejar visualizar os logs descomente em “# Log to files”. Um arquivo em /usr/local/src/ooklaserver/ooklaserver.log será criado.
# Log to files
#
logging.loggers.app.name = Application
logging.loggers.app.channel.class = FileChannel
logging.loggers.app.channel.pattern = %Y-%m-%d %H:%M:%S [%P - %I] [%p] %t
logging.loggers.app.channel.path = ${application.dir}/ooklaserver.log
logging.loggers.app.level = information
Sobreecreva OoklaServer.properties.default com o OoklaServer.properties, para em futuras atualizações (Ocorre automaticamente) ele use como base as suas configurações.
cp /usr/local/src/ooklaserver/OoklaServer.properties /usr/local/src/ooklaserver/OoklaServer.properties.default
Para que o Ooklaserver seja tratado como um serviço vamos configurar-lo no systemd.
nano /lib/systemd/system/ooklaserver.service
[Unit]
Description=OoklaServer-SpeedTest
After=network.target
[Service]
User=root
Group=root
Type=simple
RemainAfterExit=yes
WorkingDirectory=/usr/local/src/ooklaserver
ExecStart=/usr/local/src/ooklaserver/ooklaserver.sh start
ExecReload=/usr/local/src/ooklaserver/ooklaserver.sh restart
#ExecStop=/usr/local/src/ooklaserver/ooklaserver.sh stop
ExecStop=/usr/bin/killall -9 OoklaServer
TimeoutStartSec=60
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
Alias=speedtest.service
Recarrege o daemon
systemctl daemon-reload
Verifique o status, nosso serviço ira estar disabled
systemctl status ooklaserver
Vamos deixa-lo enable para subir com o boot do sistema.
systemctl enable ooklaserver
Inicie o serviço e verifique seu status se o mesmo ficou active.
systemctl start ooklaserver
systemctl status ooklaserver
Se desejar reinicie o servidor para ver se o serviço ooklaserver carregou no boot!
reboot
Ao voltar verifique se o mesmo iniciou.
systemctl status ooklaserver
Certifique-se acessando em seu navegador http://sub.dominio:8080.
O serviço ooklaserver tem um alias com o nome speedtest, então se quiser usar `systemctl status speedtest` também funiona.
systemctl status speedtest
Para verificar a versão use:
/usr/local/src/ooklaserver/OoklaServer -v
2001
Se você realizar o teste agora https://www.ookla.com/pt/host-tester você encontrará 1 erros:
É que você não tem certificado válido, a OoklaServer fala que você pode usar o certifica automatico que ela ira gerar, ao fazer o registro. Nota: Este processo automatizado só começa depois que o servidor foi registrado e revisado por Ookla . Você pode ler aqui mais sobre.
OBS: Só vai funcioanr se tiver configurado certinho>
- IPv4 Publico
- IPv6 Publico
- DNS
- Direcionado o subdominio
- E a instalação estiver tudo ok.
Solução para o certificado
Vamos instalar o Certbot, que irá gerar os certificados com o Let’s Encrypt.
apt install certbot
Geramos o certificado para teste.remontti.com.br, lembrando que seu servidor DNS deve estar apontando para o IP Publivo do seu servidor para poder gerar o certificado sem erro.
certbot certonly --standalone
Reponda: email (null@tomich.com.br), Y, N, Seu Domínio
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): null@tomich.com.br <<<<<<<<<<<<<<<<<<<<<
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y <<<<<<<<<<<<<<<<<<<<<
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N <<<<<<<<<<<<<<<<<<<<<
Account registered.
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c'
to cancel): teste.remontti.com.br <<<<<<<<<<<<<<<<<<<<<
Requesting a certificate for teste.remontti.com.br
Performing the following challenges:
http-01 challenge for teste.remontti.com.br
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/teste.remontti.com.br/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/teste.remontti.com.br/privkey.pem
Your certificate will expire on 2022-02-03. To obtain a new or
tweaked version of this certificate in the future, simply run
certbot again. To non-interactively renew *all* of your
certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Os arquivos do certificado foram criados em /etc/letsencrypt/live/SUB.DOMINIO.XXX.XX/ com validade de 90 dias.
Edite o arquivo de configuração OoklaServer, para usar o nosso certificado gerado.
nano /usr/local/src/ooklaserver/OoklaServer.properties
Localize openSSL.server.certificateFile e openSSL.server.privateKeyFile
# openSSL.server.certificateFile = cert.pem
# openSSL.server.privateKeyFile = key.pem
Descomente as linhas e e adicione o caminho para os seus.
openSSL.server.certificateFile = /etc/letsencrypt/live/SUB.DOMINIO.XXX.XX/fullchain.pem
openSSL.server.privateKeyFile = /etc/letsencrypt/live/SUB.DOMINIO.XXX.XX/privkey.pem
Sobreecreva OoklaServer.properties.default com o OoklaServer.properties novamente para em futuras atualizações.
cp /usr/local/src/ooklaserver/OoklaServer.properties /usr/local/src/ooklaserver/OoklaServer.properties.default
Reinicie o OoklaServer. (Pode levar ate 2min, tenha paciência)
systemctl restart ooklaserver.service
Pode acessar seu dominio agora com https, não pode dar erro. sginifia que esta funcionando correto.
Renovar o certificado automaticamente
Para evitar que o certificado expire faremos um script colocando o certbot para renovar uma vez ao mês pelo cron do servidor.
nano /usr/local/src/ooklaserver/renova-certificado
Adicione:
#!/bin/bash
# Renova o certificado
/usr/bin/certbot renew -q
# Aguarda o certificado renovar
sleep 30
# Reinicie o OoklaServer
/usr/bin/systemctl restart ooklaserver
De permissão para execução e adicione ao cron, para que ele rode o script toda a meia noite do dia 1º de cada mês.
chmod +x /usr/local/src/ooklaserver/renova-certificado
echo '00 00 1 * * root /usr/local/src/ooklaserver/renova-certificado' >> /etc/crontab
Verifique se a última linha está nosso script.
cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
00 00 1 * * root /usr/local/src/ooklaserver/renova-certificado
Reinici o cron para ele carregar a nova rotina.
systemctl restart cron
Se o certificado por venturar expirar e o script não renovar, basta você rodar na mão:
certbot renew
systemctl restart ooklaserver
Tudo certinho? Hora de fazer o cadastro no site
Cadastro Ookla
Hora de criar sua conta no ookla.com e fazer a solicitação para virar um host! https://account.ookla.com/register/servers, se você já tem acesse: https://account.ookla.com/servers/create
Com sua conta criada e validada no e-mail de verificação logue: https://account.ookla.com/, clique em Go To Servers, e aceite os Termos. Add Server preencha com os seus dados e do servidor.
Agora basta aguardar, pode levar alguns dias para aprovação, você receberá um e-mail lhe avisado (se não for aprovado eles lhe dirão porque). Boa sorte!
###Alguns testes
Verificar se o certificado esta ativo de fato:
Exemplo funcionando:
Ou via shell
openssl s_client -connect teste.agilizatelecom.com.br:8080
Este artigo foi útil?
Que bom!
Obrigado pelo seu feedback
Desculpe! Não conseguimos ajudar você
Obrigado pelo seu feedback
Feedback enviado
Agradecemos seu esforço e tentaremos corrigir o artigo