From 6691a8c9eb9271a9b9d1d458cb3045b03c4d7fd3 Mon Sep 17 00:00:00 2001 From: Eliz Date: Fri, 2 May 2025 09:23:35 +0000 Subject: [PATCH] Add librespeed --- librespeed/CHANGELOG.md | 3 + librespeed/Dockerfile | 136 ++++++++++++++++++++ librespeed/README.md | 65 ++++++++++ librespeed/apparmor.txt | 66 ++++++++++ librespeed/build.json | 9 ++ librespeed/config.json | 112 ++++++++++++++++ librespeed/icon.png | Bin 0 -> 14281 bytes librespeed/logo.png | Bin 0 -> 14281 bytes librespeed/rootfs/etc/cont-init.d/99-run.sh | 1 + librespeed/stats.png | Bin 0 -> 2764 bytes librespeed/updater.json | 8 ++ 11 files changed, 400 insertions(+) create mode 100644 librespeed/CHANGELOG.md create mode 100644 librespeed/Dockerfile create mode 100644 librespeed/README.md create mode 100644 librespeed/apparmor.txt create mode 100644 librespeed/build.json create mode 100644 librespeed/config.json create mode 100644 librespeed/icon.png create mode 100644 librespeed/logo.png create mode 100755 librespeed/rootfs/etc/cont-init.d/99-run.sh create mode 100644 librespeed/stats.png create mode 100644 librespeed/updater.json diff --git a/librespeed/CHANGELOG.md b/librespeed/CHANGELOG.md new file mode 100644 index 000000000..8b4df9eee --- /dev/null +++ b/librespeed/CHANGELOG.md @@ -0,0 +1,3 @@ +## 5.4.1 (02-04-2025) + +- Initial release diff --git a/librespeed/Dockerfile b/librespeed/Dockerfile new file mode 100644 index 000000000..ed416bb58 --- /dev/null +++ b/librespeed/Dockerfile @@ -0,0 +1,136 @@ +#============================# +# ALEXBELGIUM'S DOCKERFILE # +#============================# +# _.------. +# _.-` ('>.-`"""-. +# '.--'` _'` _ .--.) +# -' '-.-';` ` +# ' - _.' ``'--. +# '---` .-'""` +# /` +#=== Home Assistant Addon ===# + +################# +# 1 Build Image # +################# + +ARG BUILD_FROM +ARG BUILD_VERSION +FROM ${BUILD_FROM} + +################## +# 2 Modify Image # +################## + +# Set S6 wait time +ENV S6_CMD_WAIT_FOR_SERVICES=1 \ + S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 \ + S6_SERVICES_GRACETIME=0 + +# Global LSIO modifications +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_lsio.sh" "/ha_lsio.sh" +ARG CONFIGLOCATION="/data" +RUN chmod 744 /ha_lsio.sh && if grep -qr "lsio" /etc; then /ha_lsio.sh "$CONFIGLOCATION"; fi && rm /ha_lsio.sh + +################## +# 3 Install apps # +################## + +# Copy local files +COPY rootfs/ / + +# Uses /bin for compatibility purposes +# hadolint ignore=DL4005 +RUN if [ ! -f /bin/sh ] && [ -f /usr/bin/sh ]; then ln -s /usr/bin/sh /bin/sh; fi && \ + if [ ! -f /bin/bash ] && [ -f /usr/bin/bash ]; then ln -s /usr/bin/bash /bin/bash; fi + +# Modules +ARG MODULES="00-banner.sh 01-custom_script.sh 00-local_mounts.sh 00-smb_mounts.sh" + +# Automatic modules download +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_automodules.sh" "/ha_automodules.sh" +RUN chmod 744 /ha_automodules.sh && /ha_automodules.sh "$MODULES" && rm /ha_automodules.sh + +# Manual apps +ENV PACKAGES="" + +# Automatic apps & bashio +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_autoapps.sh" "/ha_autoapps.sh" +RUN chmod 744 /ha_autoapps.sh && /ha_autoapps.sh "$PACKAGES" && rm /ha_autoapps.sh + +################ +# 4 Entrypoint # +################ + +# Add entrypoint +ENV S6_STAGE2_HOOK=/ha_entrypoint.sh +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint.sh" "/ha_entrypoint.sh" + +# Entrypoint modifications +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint_modif.sh" "/ha_entrypoint_modif.sh" +RUN chmod 777 /ha_entrypoint.sh /ha_entrypoint_modif.sh && /ha_entrypoint_modif.sh && rm /ha_entrypoint_modif.sh + +# +#WORKDIR / +#ENTRYPOINT [ "/usr/bin/env" ] +#CMD [ "/ha_entrypoint.sh" ] + +############ +# 5 Labels # +############ + +ARG BUILD_ARCH +ARG BUILD_DATE +ARG BUILD_DESCRIPTION +ARG BUILD_NAME +ARG BUILD_REF +ARG BUILD_REPOSITORY +ARG BUILD_VERSION +ENV BUILD_VERSION="${BUILD_VERSION}" +LABEL \ + io.hass.name="${BUILD_NAME}" \ + io.hass.description="${BUILD_DESCRIPTION}" \ + io.hass.arch="${BUILD_ARCH}" \ + io.hass.type="addon" \ + io.hass.version=${BUILD_VERSION} \ + maintainer="alexbelgium (https://github.com/alexbelgium)" \ + org.opencontainers.image.title="${BUILD_NAME}" \ + org.opencontainers.image.description="${BUILD_DESCRIPTION}" \ + org.opencontainers.image.vendor="Home Assistant Add-ons" \ + org.opencontainers.image.authors="alexbelgium (https://github.com/alexbelgium)" \ + org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.url="https://github.com/alexbelgium" \ + org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \ + org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \ + org.opencontainers.image.created=${BUILD_DATE} \ + org.opencontainers.image.revision=${BUILD_REF} \ + org.opencontainers.image.version=${BUILD_VERSION} + +################# +# 6 Healthcheck # +################# + +# Avoid spamming logs +# hadolint ignore=SC2016 +RUN \ + # Handle Apache configuration + if [ -d /etc/apache2/sites-available ]; then \ + for file in /etc/apache2/sites-*/*.conf; do \ + sed -i '/ /etc/nginx/nginx.conf.new && \ + mv /etc/nginx/nginx.conf.new /etc/nginx/nginx.conf; \ + fi + +ENV HEALTH_PORT="8090" \ + HEALTH_URL="" +HEALTHCHECK \ + --interval=5s \ + --retries=5 \ + --start-period=30s \ + --timeout=25s \ + CMD curl -A "HealthCheck: Docker/1.0" -s -f "http://127.0.0.1:${HEALTH_PORT}${HEALTH_URL}" &>/dev/null || exit 1 diff --git a/librespeed/README.md b/librespeed/README.md new file mode 100644 index 000000000..469f33c66 --- /dev/null +++ b/librespeed/README.md @@ -0,0 +1,65 @@ +# Home assistant add-on: librespeed + +[![Donate][donation-badge]](https://www.buymeacoffee.com/alexbelgium) +[![Donate][paypal-badge]](https://www.paypal.com/donate/?hosted_button_id=DZFULJZTP3UQA) + +![Version](https://img.shields.io/badge/dynamic/json?label=Version&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Flibrespeed%2Fconfig.json) +![Ingress](https://img.shields.io/badge/dynamic/json?label=Ingress&query=%24.ingress&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Flibrespeed%2Fconfig.json) +![Arch](https://img.shields.io/badge/dynamic/json?color=success&label=Arch&query=%24.arch&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Flibrespeed%2Fconfig.json) + +[![Codacy Badge](https://app.codacy.com/project/badge/Grade/9c6cf10bdbba45ecb202d7f579b5be0e)](https://www.codacy.com/gh/alexbelgium/hassio-addons/dashboard?utm_source=github.com&utm_medium=referral&utm_content=alexbelgium/hassio-addons&utm_campaign=Badge_Grade) +[![GitHub Super-Linter](https://img.shields.io/github/actions/workflow/status/alexbelgium/hassio-addons/weekly-supelinter.yaml?label=Lint%20code%20base)](https://github.com/alexbelgium/hassio-addons/actions/workflows/weekly-supelinter.yaml) +[![Builder](https://img.shields.io/github/actions/workflow/status/alexbelgium/hassio-addons/onpush_builder.yaml?label=Builder)](https://github.com/alexbelgium/hassio-addons/actions/workflows/onpush_builder.yaml) + +[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee%20(no%20paypal)-%23d32f2f?logo=buy-me-a-coffee&style=flat&logoColor=white +[paypal-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee%20with%20Paypal-0070BA?logo=paypal&style=flat&logoColor=white + +_Thanks to everyone having starred my repo! To star it click on the image below, then it will be on top right. Thanks!_ + +[![Stargazers repo roster for @alexbelgium/hassio-addons](https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.github/stars2.svg)](https://github.com/alexbelgium/hassio-addons/stargazers) + +![downloads evolution](https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/librespeed/stats.png) + +## About + +[LibreSpeed](https://github.com/librespeed/speedtest) is a very lightweight speed test implemented in Javascript, using XMLHttpRequest and Web Workers. +This addon is based on the docker image https://github.com/linuxserver/docker-librespeed + +## Installation + +The installation of this add-on is pretty straightforward and not different in comparison to installing any other add-on. + +1. Add my add-ons repository to your home assistant instance (in supervisor addons store at top right, or click button below if you have configured my HA) + [![Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.](https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg)](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Falexbelgium%2Fhassio-addons) +1. Install this add-on. +1. Click the `Save` button to store your configuration. +1. Set the add-on options to your preferences +1. Start the add-on. +1. Check the logs of the add-on to see if everything went well. +1. Open the webUI and adapt the software options + +## Configuration + +Webui can be found at . +The default username/password : described in the startup log. +Configurations can be done through the app webUI, except for the following options + +```yaml +PGID: user +GPID: user +TZ: timezone +localdisks: sda1 #put the hardware name of your drive to mount separated by commas, or its label. ex. sda1, sdb1, MYNAS... +networkdisks: "//SERVER/SHARE" # optional, list of smb servers to mount, separated by commas +cifsusername: "username" # optional, smb username, same for all smb shares +cifspassword: "password" # optional, smb password +``` + +## Support + +Create an issue on github + +## Illustration + +![illustration](https://speedtest.fdossena.com/mpot_v6.gif) + +[repository]: https://github.com/alexbelgium/hassio-addons diff --git a/librespeed/apparmor.txt b/librespeed/apparmor.txt new file mode 100644 index 000000000..5218a8a93 --- /dev/null +++ b/librespeed/apparmor.txt @@ -0,0 +1,66 @@ +#include + +profile mylar3_addon flags=(attach_disconnected,mediate_deleted) { + #include + + capability, + file, + signal, + mount, + umount, + remount, + network udp, + network tcp, + network dgram, + network stream, + network inet, + network inet6, + network netlink raw, + network unix dgram, + + capability setgid, + capability setuid, + capability sys_admin, + capability dac_read_search, + # capability dac_override, + # capability sys_rawio, + +# S6-Overlay + /init ix, + /run/{s6,s6-rc*,service}/** ix, + /package/** ix, + /command/** ix, + /run/{,**} rwk, + /dev/tty rw, + /bin/** ix, + /usr/bin/** ix, + /usr/lib/bashio/** ix, + /etc/s6/** rix, + /run/s6/** rix, + /etc/services.d/** rwix, + /etc/cont-init.d/** rwix, + /etc/cont-finish.d/** rwix, + /init rix, + /var/run/** mrwkl, + /var/run/ mrwkl, + /dev/i2c-1 mrwkl, + # Files required + /dev/fuse mrwkl, + /dev/sda1 mrwkl, + /dev/sdb1 mrwkl, + /dev/nvme0 mrwkl, + /dev/nvme1 mrwkl, + /dev/mmcblk0p1 mrwkl, + /dev/* mrwkl, + /tmp/** mrkwl, + + # Data access + /data/** rw, + + # suppress ptrace denials when using 'docker ps' or using 'ps' inside a container + ptrace (trace,read) peer=docker-default, + + # docker daemon confinement requires explict allow rule for signal + signal (receive) set=(kill,term) peer=/usr/bin/docker, + +} diff --git a/librespeed/build.json b/librespeed/build.json new file mode 100644 index 000000000..6382887bb --- /dev/null +++ b/librespeed/build.json @@ -0,0 +1,9 @@ +{ + "build_from": { + "aarch64": "lscr.io/linuxserver/librespeed:arm64v8-latest", + "amd64": "lscr.io/linuxserver/librespeed:amd64-latest" + }, + "codenotary": { + "signer": "alexandrep.github@gmail.com" + } +} diff --git a/librespeed/config.json b/librespeed/config.json new file mode 100644 index 000000000..f18f5f07c --- /dev/null +++ b/librespeed/config.json @@ -0,0 +1,112 @@ +{ + "arch": [ + "aarch64", + "amd64" + ], + "codenotary": "alexandrep.github@gmail.com", + "description": "A very lightweight speed test implemented in Javascript, using XMLHttpRequest and Web Workers", + "devices": [ + "/dev/dri", + "/dev/dri/card0", + "/dev/dri/card1", + "/dev/dri/renderD128", + "/dev/vchiq", + "/dev/video10", + "/dev/video11", + "/dev/video12", + "/dev/video13", + "/dev/video14", + "/dev/video15", + "/dev/video16", + "/dev/ttyUSB0", + "/dev/sda", + "/dev/sdb", + "/dev/sdc", + "/dev/sdd", + "/dev/sde", + "/dev/sdf", + "/dev/sdg", + "/dev/nvme", + "/dev/nvme0", + "/dev/nvme0n1", + "/dev/nvme0n1p1", + "/dev/nvme0n1p2", + "/dev/nvme0n1p3", + "/dev/nvme1n1", + "/dev/nvme1n1p1", + "/dev/nvme1n1p2", + "/dev/nvme1n1p3", + "/dev/nvme2n1", + "/dev/nvme2n1p1", + "/dev/nvme2n1p2", + "/dev/nvme2n3p3", + "/dev/mmcblk", + "/dev/fuse", + "/dev/sda1", + "/dev/sdb1", + "/dev/sdc1", + "/dev/sdd1", + "/dev/sde1", + "/dev/sdf1", + "/dev/sdg1", + "/dev/sda2", + "/dev/sdb2", + "/dev/sdc2", + "/dev/sdd2", + "/dev/sde2", + "/dev/sdf2", + "/dev/sdg2", + "/dev/sda3", + "/dev/sdb3", + "/dev/sda4", + "/dev/sdb4", + "/dev/sda5", + "/dev/sda6", + "/dev/sda7", + "/dev/sda8", + "/dev/nvme0", + "/dev/nvme1", + "/dev/nvme2" + ], + "environment": { + "PGID": "0", + "PUID": "0" + }, + "image": "ghcr.io/alexbelgium/librespeed-{arch}", + "init": false, + "map": [ + "config:rw", + "share:rw", + "media:rw" + ], + "name": "LibreSpeed", + "options": { + "PGID": 0, + "PUID": 0 + }, + "ports": { + "8096/tcp": 8096 + }, + "ports_description": { + "8096/tcp": "web interface" + }, + "privileged": [ + "SYS_ADMIN", + "DAC_READ_SEARCH" + ], + "schema": { + "PGID": "int", + "PUID": "int", + "TZ": "str?", + "cifsdomain": "str?", + "cifspassword": "str?", + "cifsusername": "str?", + "localdisks": "str?", + "networkdisks": "str?" + }, + "slug": "librespeed", + "udev": true, + "url": "https://github.com/alexbelgium/hassio-addons", + "version": "0.8.2", + "webui": "[PROTO:ssl]://[HOST]:[PORT:8096]" +} diff --git a/librespeed/icon.png b/librespeed/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5f46284289c1e33d475f6cc5c36e84e3823f3cb0 GIT binary patch literal 14281 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 IYVC9Tf6