Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: speedtest v2 #411

Open
wants to merge 6 commits into
base: production
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions modules/speedtest2/manifest/init.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Copyright 2024 dhtech
#
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file
#
# == Class: speedtest
#
# This class manages the speedtest
#
#
# === Parameters
#

class speedtest2 {

ensure_packages(['ssl-cert', 'nginx'])

file { '/etc/ssl/certs/server-fullchain.crt':
ensure => file,
owner => 'root',
group => 'ssl-cert',
mode => '0644',
source => 'puppet:///letsencrypt/fullchain.pem',
links => 'follow',
notify => Service['nginx'],
}

file { '/etc/ssl/private/server.key':
ensure => file,
owner => 'root',
group => 'ssl-cert',
mode => '0640',
source => 'puppet:///letsencrypt/privkey.pem',
links => 'follow',
notify => Service['nginx'],
}

service { 'nginx':
ensure => 'running',
name => 'nginx',
enable => true,
require => Package['nginx'],
}

file { '/etc/nginx/sites-enabled/default':
ensure =>absent,
force =>true,
notify =>Service['nginx'],
require =>Package['nginx'],
}

file { 'speedtest2-conf':
ensure => file,
path => '/etc/nginx/sites-enabled/speedtest',
content => template('speedtest2/speedtest.conf.erb'),
notify => Service['nginx'],
require => Package['nginx'],
}

}
13 changes: 13 additions & 0 deletions modules/speedtest2/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "speedtest2",
"version": "0.1.0",
"author": "dhtech",
"summary": "speedtest v2 site",
"license": "BSD",
"source": "",
"project_page": null,
"issues_url": null,
"dependencies": [
{"name":"puppetlabs/stdlib","version_requirement":">= 1.0.0"}
]
}
15 changes: 15 additions & 0 deletions modules/speedtest2/templates/nginx.conf.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
worker_processes auto;
worker_rlimit_nofile 100000;
events {
worker_connections 2048;
multi_accept on;
}

error_log /var/log/nginx/error.log notice;
pid /tmp/nginx.pid;

http {
include mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
}
98 changes: 98 additions & 0 deletions modules/speedtest2/templates/speedtest.conf.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# SpeedTest by OpenSpeedTest™ is a Free and Open-Source Network Speed Test Software.
# Like this Project? Please Donate NOW & Keep us Alive -> https://go.openspeedtest.com/Donate
# Thank you for your support! we greatly appreciate your donation.
# Your contribution helps us continue to improve and maintain the tool for everyone to use.
# Official Website : https://OpenSpeedTest.com | Email: [email protected]
# Developed by : Vishnu | https://Vishnu.Pro | Email : [email protected]

server {
server_name _ localhost YOURDOMAIN;
listen 3000 reuseport http2;
listen 3001 ssl reuseport http2;
listen [::]:3000 reuseport http2;
listen [::]:3001 ssl reuseport http2;
# If you like to Enable HTTP2 add "http2" to the above line.
# If HTTP2 Enabled. Upload location should Proxy_Pass to http 1.1 port.
# Otherwise you will see abnormal Upload Speeds.
# Nginx Server Windows SSL Performance was very poor! Better use Linux if you need SSL support.
ssl_certificate /etc/ssl/nginx.crt; # Use your own certificate & key
ssl_certificate_key /etc/ssl/nginx.key; # <-- key
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers "ALL";
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:100m;
ssl_session_timeout 1d;
ssl_session_tickets on;
root /usr/share/nginx/html/;
index index.html;
client_max_body_size 35m;
error_page 405 =200 $uri;
access_log off;
gzip off;
fastcgi_read_timeout 999;
log_not_found off;
server_tokens off;
error_log /dev/null; #Disable this for Windows Nginx.
tcp_nodelay on;
tcp_nopush on;
sendfile on;
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors off;

location / {
add_header 'Access-Control-Allow-Origin' "*" always;
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
#Very Very Important! You SHOULD send no-store from server for Google Chrome.
add_header Cache-Control 'no-store, no-cache, max-age=0, no-transform';
add_header Last-Modified $date_gmt;
if_modified_since off;
expires off;
etag off;

if ($request_method = OPTIONS ) {
add_header 'Access-Control-Allow-Credentials' "true";
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With' always;
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
add_header 'Access-Control-Allow-Methods' "GET, POST, OPTIONS" always;
return 200;
}
}

#HTTP2 & HTTP3 will not wait for the post body and return 200. We need to stop that behaviour.
#Otherwise, you will see abnormal upload speed. To fix this issue, Enable the following lines. (Only Applicable If you Enabled HTTP2 or HTTP3 in This Server.)

#HTTP2 & HTTP3 -> UPLOAD FIX -- START

location = /upload {
proxy_pass http://127.0.0.1:3000/dev-null;
}
location = /dev-null {
return 200;
}

#HTTP2 & HTTP3 -> UPLOAD FIX -- END

# Caching for Static Files,
location ~* ^.+\.(?:css|cur|js|jpe?g|gif|htc|ico|png|html|xml|otf|ttf|eot|woff|woff2|svg)$ {
access_log off;
expires 365d;
add_header Cache-Control public;
add_header Vary Accept-Encoding;
tcp_nodelay off;
open_file_cache max=3000 inactive=120s;
open_file_cache_valid 45s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
}
}
12 changes: 12 additions & 0 deletions speedtest2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Copyright 2018 dhtech
#
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file


def generate(host, *args):

info = {}
return {'speedtest2': info}

# vim: ts=4: sts=4: sw=4: expandtab
Loading