11 Commits
0.2.0 ... 0.4.0

13 changed files with 85 additions and 12 deletions

View File

@@ -25,9 +25,11 @@ RUN mkdir -p /var/www && mkdir -p /var/www/data/speed
WORKDIR /var/www
# Copy web assets and scripts
COPY index.html /var/www/index.html
COPY run_speed_test.sh /usr/local/bin/run_speed_test.sh
COPY start.sh /usr/local/bin/start.sh
COPY src/index.html /var/www/index.html
COPY src/favicon.ico /var/www/favicon.ico
COPY src/gem_nw_128.png /var/www/icon.png
COPY src/run_speed_test.sh /usr/local/bin/run_speed_test.sh
COPY src/start.sh /usr/local/bin/start.sh
# Ensure scripts are executable
RUN chmod +x /usr/local/bin/run_speed_test.sh /usr/local/bin/start.sh

View File

@@ -1,3 +1,7 @@
<p align="center">
<img src="https://git.heshapps.com/asolkar/speed-data-docker/raw/branch/main/src/gem_nw_256.png" />
</p>
# speed-data-docker
Debian-based Docker image that runs hourly network speed tests (using speedtest-cli) and serves a simple web UI.
@@ -47,7 +51,9 @@ docker run -d --name speed-data -e PORT=8080 -p 8080:8080 --restart unless-stopp
Alternatively, run with a host bind mount (for direct access to files on the host):
```bash
docker rm -f speed-data || true \
docker build -t speed-data-app .
docker rm -f $(docker ps -a -q --filter name=speed\-data --filter status=running) || true \
&& docker volume create speed-data-volume && \
docker run -d --name speed-data -e CRON_MINUTE=18 -e PORT=8080 -p 8585:8080 --restart unless-stopped \
-v ~/docker-data/speed-data-app/data:/var/www/data/speed speed-data-app

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 KiB

BIN
media/gem_nw_light.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
media/gem_nw_light.xcf Normal file

Binary file not shown.

View File

@@ -1,6 +1,6 @@
#!/bin/bash
VERSION=0.2.0
VERSION=0.4.0
docker image build --no-cache -t asolkar/speed-data-docker:${VERSION} . && \
docker push asolkar/speed-data-docker:${VERSION}

6
scripts/vscode Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/bash
/opt/vscode/VSCode-linux-x64/code \
--enable-features=UseOzonePlatform,WaylandWindowDecorations \
--ozone-platform-hint=auto \
--unity-launch %F . & disown %1

BIN
src/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
src/gem_nw_128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
src/gem_nw_256.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

View File

@@ -58,6 +58,7 @@ body {
}
h1, h2, h5 {
text-align: center;
margin-bottom: 0;
}
/* Recent boxes */
@@ -149,8 +150,12 @@ h1, h2, h5 {
font-size: 0.7em;
}
/* Responsive */
/* Responsive: Small screen, mobile, etc. */
@media only screen and (max-width: 1100px) {
#hd-cont img#app-icon {
width: 2em;
height: 2em;
}
#recent #recent_1 .recent_dn, #recent #recent_1 .recent_up {
font-size: 2em;
}
@@ -198,7 +203,13 @@ h1, h2, h5 {
display: none;
}
}
/* Responsive: Larger screen, desktop, etc. */
@media only screen and (min-width: 1100px) {
#hd-cont img#app-icon {
width: 4em;
height: 4em;
}
#recent #recent_1 .recent_dn, #recent #recent_1 .recent_up {
font-size: 3em;
}
@@ -233,6 +244,50 @@ h1, h2, h5 {
float: left;
margin: 5px;
}
}
h1 {
height: 1.5em;
valign: center;
}
#hd-cont {
width: max-content;
font-size: 1.5em;
margin-right: auto;
margin-left: auto;
padding-top: 0.25em;
padding-bottom: 0.25em;
}
#hd-cont .hd-txt {
font-size: 1.5em;
font-weight: bold;
display: inline;
vertical-align: middle;
}
#hd-cont img#app-icon {
padding-right: 0.25em;
display: inline;
vertical-align: middle;
}
#app-advt {
display: block;
width: max-content;
margin-left: auto;
margin-right: auto;
padding-bottom: 0.5em;
font-size: 0.5em;
}
#app-advt img {
padding-right: 0.5em;
width: 1em;
height: 1em;
}
/* #app-advt img:hover {
width: 128px;
height: 128px;
}*/
#app-advt a {
text-decoration: none;
color: grey;
}
</style>
</head>
@@ -458,7 +513,11 @@ function show_content() {
$("#spinner")
.after("<h2>Most recent samples</h2>")
.after("<h5>(ISP: " + isp + ")</h5>")
.after("<h1>Network Speed Data</h1>")
.after("<div id=\"app-advt\"><a href=\"https://git.heshapps.com/asolkar/speed-data-docker\">Presented by Heshapps.com - speed-data-docker</a></div>")
.after($('<div id="hd-cont"></div>').append(
$('<img id="app-icon" src="icon.png" />'),
$('<div class="hd-txt">Network Speed</div>')
))
.hide();
console.timeEnd("speedtest");
}

View File

@@ -29,14 +29,14 @@ service cron start || cron || true
# Run the initial speed test once (in background) to populate files if possible
# We run it in background so server starts promptly. The cron will run hourly.
/usr/local/bin/run_speed_test.sh >> /var/log/cron.log 2>&1 || true &
/usr/local/bin/run_speed_test.sh >> /var/log/cron.log 2>&1 || true &
# Start busybox httpd serving /var/www on configured port in foreground
if command -v busybox >/dev/null 2>&1; then
echo "starting busybox httpd on port ${PORT} serving /var/www"
busybox httpd -f -p ${PORT} -h /var/www
busybox httpd -f -p ${PORT} -h /var/www
else
echo "warning: busybox httpd not found; container will keep running with cron only" >&2
# keep the script running so container doesn't exit
tail -f /var/log/cron.log
echo "warning: busybox httpd not found; container will keep running with cron only" >&2
# keep the script running so container doesn't exit
tail -f /var/log/cron.log
fi