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

🐋 LinuxServer.io Docker image now available! #1117

Closed
6 tasks done
alexjustesen opened this issue Feb 9, 2024 · 61 comments
Closed
6 tasks done

🐋 LinuxServer.io Docker image now available! #1117

alexjustesen opened this issue Feb 9, 2024 · 61 comments
Assignees
Labels
🐋 docker Pull requests that update Docker code 📖 documentation Improvements or additions to documentation 🎉 feature New feature or request
Milestone

Comments

@alexjustesen
Copy link
Owner

alexjustesen commented Feb 9, 2024

🐋 LinuxServer image now available!

I recently wrapped up testing (#837) with @thespad and the fantastic people over at @linuxserver have published their Speedtest Tracker image!

There are a bunch of benefits to the new image but the highlights are:

  1. 3-4x faster page loads, depending on the host device.
  2. The image is HALF the size, down from ~298MB to ~154MB. This is largely due to a switch to an Alpine Linux base from Ubuntu.
  3. Directory and file permissions are now set correctly, this means I'm bringing back sqlite as the default database on new installs.
  4. Less on my plate allowing me to spend more time on core application features.

🖼️ Using the new image

Most importantly the new image is a drop-in replacement to the old one. To switch all you have to do is replace the image:

image: lscr.io/linuxserver/speedtest-tracker:latest

or with a specific version:

image: lscr.io/linuxserver/speedtest-tracker:0.20.0

Further image documentation and supported architectures can be found on their GitHub repo.

🧪 Verified running on

My home lab is limited but verified working on the following systems:

  • Synology NAS (DS920+)
  • Unraid NAS (using the template)
  • RPI 4b+ Docker Swarm node

📃 To-dos

I have some outstanding tasks that I still need to do, below is a list that'll get checked off over time as I roll through the rest of the updates.

@alexjustesen alexjustesen added 🎉 feature New feature or request 🐋 docker Pull requests that update Docker code labels Feb 9, 2024
@alexjustesen alexjustesen self-assigned this Feb 9, 2024
@alexjustesen alexjustesen pinned this issue Feb 9, 2024
@alexjustesen alexjustesen added the 📖 documentation Improvements or additions to documentation label Feb 9, 2024
@alexjustesen alexjustesen changed the title 🐋 LinuxServer image now available! 🐋 LinuxServer.io Docker image now available! Feb 15, 2024
@mmomjian
Copy link

mmomjian commented Feb 19, 2024

@alexjustesen when using the LSIO Docker container, I get the following error:

[2024-02-19 17:37:16] production.ERROR: SQLSTATE[08006] [7] connection to server at "postgres.domain" (100.64.x.x), port 5430 failed: could not open certificate file "/root/.postgresql/postgresql.crt": Permission denied

Are you able to confirm that this isn't due to a recent change in the underlying image, and if so, is there a way to specify sslmode=no-verify to allow an SSL connection without certificates? Unsure if this should be directed to this project or the LSIO image.

The directory /root/.postgresql doesn't exist in either Docker image as far as I can tell.

@thespad
Copy link

thespad commented Feb 19, 2024

Not tested but you should be able to set it with DB_SSLMODE, that said it looks like the deault is already prefer which shouldn't try and verify the certs.

@mmomjian
Copy link

I just tried DB_SSLMODE=require and DB_SSLMODE=no-verify, same issue. I opened an issue on the LSIO repo as well with more details at link. Cheers!

@mmomjian
Copy link

mmomjian commented Feb 19, 2024

@alexjustesen @thespad the LSIO image has a new key path due to the (much appreciated) switch to Nginx and faster HTTP response. Perhaps this can be documented somewhere? I can already tell that the Web UI is much faster to respond!

/etc/ssl/web/ssl.crt -> /config/keys/cert.crt

/etc/ssl/web/ssl.key -> /config/keys/cert.key

The solution for the Postgres SSL error is to specify HOME=/config in Docker compose.

@luckman212
Copy link

Is SQLite the default already in the latest LSCR image? I am planning to rebuild my container today since 0.16 made a mess of things and I don't feel like fixing database issues.

If SQLite isn't the default yet, what's the easiest way to roll out a new container based on this with a SQLite backend?

@alexjustesen
Copy link
Owner Author

Is SQLite the default already in the latest LSCR image? I am planning to rebuild my container today since 0.16 made a mess of things and I don't feel like fixing database issues.

If SQLite isn't the default yet, what's the easiest way to roll out a new container based on this with a SQLite backend?

Not yet, but I did update the docs for setting sqlite as your database.

Only DB_ variable you need is DB_CONNECTION and set it to sqlite and then follow the install steps for creating the DB file.

@thespad
Copy link

thespad commented Feb 19, 2024

sqlite is the default in so much as it's in our example compose/run because it's the simplest to set up (and it's what our CI tests use).

So if you just copy/paste them as-is you'll get sqlite.

@alexjustesen
Copy link
Owner Author

sqlite is the default in so much as it's in our example compose/run because it's the simplest to set up (and it's what our CI tests use).

So if you just copy/paste them as-is you'll get sqlite.

He's probably talking about https://docs.speedtest-tracker.dev/getting-started/installation/installation, which I can't update because GitBook is throwing an error when adding a new tab 🤦‍♂️

@vdrover
Copy link

vdrover commented Feb 19, 2024

I have this error with docker compose on ubuntu:

02/19/2024
04:10:03 PM
In Connection.php line 829:
02/19/2024
04:10:03 PM
                                                                               
02/19/2024
04:10:03 PM
  SQLSTATE[HY000]: General error: 1 there is already another table or index w  
02/19/2024
04:10:03 PM
  ith this name: results_bad_json (Connection: sqlite, SQL: alter table "resu  
02/19/2024
04:10:03 PM
  lts" rename to "results_bad_json")          

@vdrover
Copy link

vdrover commented Feb 19, 2024

@alexjustesen I solved my issue. Remember CACHE_DRIVER="file" as the workaround for a a previous bug? I had to remove that with v0.16.x, regardless of the image source.

@vdrover
Copy link

vdrover commented Feb 19, 2024

Follow-up #2: after migrating to the new image, I had to reset my cron schedule.

@alexjustesen
Copy link
Owner Author

Follow-up #2: after migrating to the new image, I had to reset my cron schedule.

This is intentional 👍

@vdrover
Copy link

vdrover commented Feb 19, 2024

This is intentional 👍

Please add to docs if you have not already. And thanks for all your hard work!

@alexjustesen
Copy link
Owner Author

This is intentional 👍

Please add to docs if you have not already. And thanks for all your hard work!

Checkout the FAQ attached to the release should you have any questions. This details out the breaking changes.

@Churator
Copy link

Switched to this image, initial page load is way faster.
Thanks for the great work!

@drizuid
Copy link

drizuid commented Feb 20, 2024

Just wanted to share, I set this up today. The only thing i really found missing was mention of REDIS_HOST in the docs (perhaps I overlooked it)

  speedtest-tracker:
    <<: *lsioint
    image: lscr.io/linuxserver/speedtest-tracker:latest
    container_name: speedtest-tracker
    depends_on:
      redis:
        condition: service_started
      pgsql:
        condition: service_healthy
    environment:
      <<: *lsio
      DB_CONNECTION: pgsql
      APP_KEY: ${SPEEDTESTAPIKEY}
      DB_HOST: pgsql
      DB_PORT: 5432
      DB_DATABASE: speedtest
      DB_USERNAME: ${SPEEDTESTDBUSER}
      DB_PASSWORD: ${SPEEDTESTDBPW}
      CACHE_DRIVER: redis
      REDIS_HOST: redis
    volumes:
      - ${CONFDIR}/speedtest:/config
      - ${TIME}:${TIME}:ro

Things are working very well for me.

@alexjustesen
Copy link
Owner Author

Redis is supported at the framework level if you want to use it as the cache or queue drivers but haven't included it here in the docs to keep it simple.

Definitely a more "advanced" feature.

@ArthurHuyghe
Copy link

ArthurHuyghe commented Feb 22, 2024

Worked flawlessly. Keep up the great work!🚀

@devanteweary
Copy link

Just curious... what's the purpose of this?
If I'm understanding correctly, this means you'll stop putting our the app/container here and we should consider linuxserver as the new main Speedtest Tracker?

Sorry just wondering!

@hansenc0705
Copy link

Just curious... what's the purpose of this? If I'm understanding correctly, this means you'll stop putting our the app/container here and we should consider linuxserver as the new main Speedtest Tracker?

Sorry just wondering!

#1224

think this will answer at least one of your questions.

@alexjustesen
Copy link
Owner Author

Just curious... what's the purpose of this?
If I'm understanding correctly, this means you'll stop putting our the app/container here and we should consider linuxserver as the new main Speedtest Tracker?

Sorry just wondering!

I'll still be building the application, they're just building the docker image going forward.

Gives me time and sanity.

@devanteweary
Copy link

Just curious... what's the purpose of this?
If I'm understanding correctly, this means you'll stop putting our the app/container here and we should consider linuxserver as the new main Speedtest Tracker?
Sorry just wondering!

I'll still be building the application, they're just building the docker image going forward.

Gives me time and sanity.

Gotcha.

Still learning all this and so I just thought the Docker container was part of the program.
Thanks for responding @alexjustesen !

@masterwishx
Copy link

masterwishx commented Apr 19, 2024

We don't tend to list every available env in the container readme because especially with frameworks like Laravel or Django it can be overwhelming for new users to see dozens of settings to configure, most of which they'll never need to touch.

To expand on that, .env.production is a paired down version of .env.example which contains all the default framework vars. As you can see a lot of that is unnecessary or doesn't apply to this application.

Sorry, i confused a little , as i migrated to LinuxServer some versions ago, i have .env file with some settings:

APP_xxxx= MAIL_xxx = TELEGRAM_BOT_TOKEN =
etc

So i need to use it for make some changes like PUBLIC_DASHBOARD=true , or just move all env to Unraid Container Variable ,and delete .env file?

using latest version in Unraid

@thespad
Copy link

thespad commented Apr 19, 2024

If you have an existing .env file it will continue to work, but you can also apply settings via environment variable.

@alexjustesen
Copy link
Owner Author

👆 this is correct, .env file gives you the bare minimum of the variables you need to pass.

@julien-vu
Copy link

Missing a version for arm/v7, install on rasp pi 4

image

@thespad
Copy link

thespad commented Apr 23, 2024

Please see https://www.linuxserver.io/armhf

@masterwishx
Copy link

masterwishx commented Apr 23, 2024

@thespad not sure if it related to what we talked befor #1117 (comment)

Maybe i should remove .env and move all to variables in unraid image ?

Errors after every update until cache is cleared
#1395

@alexjustesen
Copy link
Owner Author

You absolutely can, it's functionally the same and I've been planning on straight up recommending that.

@julien-vu
Copy link

Please see https://www.linuxserver.io/armhf

thanks did not even realised I was on a 32b rasp OS! will upgrade everything

@whizzzkid
Copy link

I am unable to get this image working behind a reverse proxy, I use traefik, but get mixed content errors on page as the content seems to be loading http on a https page. I tried setting APP_URL parameter, but looks like that is not supported.

Can someone help?

@thespad
Copy link

thespad commented Apr 25, 2024

Assuming it's a new install, there shouldn't be much that you need to do to get it working behind a proxy; I've got it running behind Traefik with a fairly OOTB setup.

The best avenue for support with the image is our Discord, but alternatively you can open an issue against the repo with the relevant details and someone can help you.

@alexjustesen
Copy link
Owner Author

@thespad I think this has to do with how Laravel is accepting proxied requests but I haven't had a chance to get NPM stood up and dig into it more. Honestly don't think this is an image problem unless we can narrow it down to an nginx layer or something.

@Lammiwinks
Copy link

Hey WELL done on getting this live with Linuxserver.io. I love this app and it's great you're getting recognition :) <3

@yllekz
Copy link

yllekz commented Jun 7, 2024

So I changed over to the new image and now my container doesn't work - it just loads a blank white screen. No errors in the logs. Any ideas?

@alexjustesen
Copy link
Owner Author

So I changed over to the new image and now my container doesn't work - it just loads a blank white screen. No errors in the logs. Any ideas?

Did you follow the steps in the release?

@yllekz
Copy link

yllekz commented Jun 7, 2024

There were no instructions when I changed over a few weeks ago. I'll check.

@alexjustesen
Copy link
Owner Author

There were no instructions when I changed over a few weeks ago. I'll check.

v0.20.0 hit this morning so if something broke make sure to follow the required changes.

@alexjustesen alexjustesen added this to the v0.20.0 milestone Jun 7, 2024
@flotux2
Copy link

flotux2 commented Jun 7, 2024

Update:
After a complete restart of the Proxmox LXC container now the speedtest-tracke 0.20.1 container is working. :-)

Hi,

I just updated from version 0.19.0 to your latest version and of course followed the listed steps to add the environment entries:

grafik

But now there seems to be the problem that the connection to the MariaDB database is not possible anymore. I can see the following error messages in the container log:

In Connection.php line 813:
SQLSTATE[HY000] [2002] Host is unreachable (Connection: mysql, SQL: select

  • from cache where key = laravel_cache_illuminate:queue:restart limit 1
    )

In Connector.php line 65:
SQLSTATE[HY000] [2002] Host is unreachable

You can see that the MariaDB container is running. I've restartet the container and added the log to this message.
MariaDB container log.txt

grafik

In the past there was no issue with the DB container.

Anything I missed with my preparation?

@yllekz
Copy link

yllekz commented Jun 8, 2024

So I do have an update - I did make sure I had followed all the steps in the release, but it didn't solve my blank screen problem. None of the new env variables assisted, and the logs barely say anything in terms as to why the UI is no longer working.

@cicob
Copy link

cicob commented Jun 9, 2024

At least reverting back to v0.19.0 brings the service up again.

.env :

SPEED_VERSION=0.19.0

docker-compose.yml :

#######################################################
# Ansible managed
#######################################################

services:
  #====================================================
  # Speedtest Tracker
  #====================================================
  speedtest-tracker:
    container_name: speedtest-tracker
    image: lscr.io/linuxserver/speedtest-tracker:${SPEED_VERSION:-latest}
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - DB_CONNECTION=sqlite

    ports:
      - '${SPEED_HTTP_PORT:-9080}:80'
      - '${SPEED_HTTPS_PORT:-9443}:443'
    volumes:
      - ./config:/config

@Manichee
Copy link

Manichee commented Jun 9, 2024

So I do have an update - I did make sure I had followed all the steps in the release, but it didn't solve my blank screen problem. None of the new env variables assisted, and the logs barely say anything in terms as to why the UI is no longer working.

Did you try linuxserver/docker-speedtest-tracker#9 (comment) ?

@alexjustesen
Copy link
Owner Author

@cicob you're missing required environment variables, make sure to read the v0.20.0 release notes: https://github.com/alexjustesen/speedtest-tracker/releases/tag/v0.20.0

@Bananas-Are-Yellow
Copy link

I am unable to get this image working behind a reverse proxy, I use traefik, but get mixed content errors on page as the content seems to be loading http on a https page. I tried setting APP_URL parameter, but looks like that is not supported.

Can someone help?

I have this mixed content problem too.

I just upgraded from v0.18.1 to v0.20.7 today, and although the web page loads and I can use it, the stylesheet and the rabbit favicon fail to load.

I am hosting on a Synology DS1517+ NAS with reverse proxy so that I can use HTTPS. The HTML page contains the following links, which are HTTP addresses when they need to be HTTPS addresses to avoid the mixed content situation:

<link rel="icon" href="http://<host:port>/img/speedtest-tracker-icon.png">

<link href="http://<host:port>/fonts/inter/inter.css" rel="stylesheet">

Here is my docker compose file:

services:
    speedtest-tracker:
        image: lscr.io/linuxserver/speedtest-tracker:latest
        container_name: speedtest-tracker
        ports:
            - 8080:80
            - 8443:443
        environment:
            - PUID=1000
            - PGID=1000
            - APP_KEY=base64:<key>
            - APP_URL=https://<host:port>
            - DB_CONNECTION=sqlite
            - TZ=Europe/London
            - APP_TIMEZONE=Europe/London
            - DISPLAY_TIMEZONE=Europe/London 
            - SPEEDTEST_SCHEDULE=0 * * * * # every hour on the hour
            - SPEEDTEST_SERVERS=6274,52523,47643,64354
            - PRUNE_RESULTS_OLDER_THAN=0 # the default is 0 which disables result pruning, this value is in days.                       
        volumes:
            - /volume1/docker/speedtest-tracker:/config
        restart: unless-stopped

Is there something missing? I don't understand what APP_URL is used for, so maybe I've got that wrong.

@thespad
Copy link

thespad commented Jun 29, 2024

Looks like it's something internal that's not respecting the APP_URL properly for a couple of specific files, I don't think it's anything we're doing container-wise. Seeing this in Firefox (which is forcibly upgrading the connection for me, which is why I hadn't noticed any mixed content issues):

HTTPS-Only Mode: Upgrading insecure request “http://speed.example.com/fonts/inter/inter.css” to use “https”. inter.css
HTTPS-Only Mode: Upgrading insecure request “http://speed.example.com/img/speedtest-tracker-icon.png” to use “https”. speedtest-tracker-icon.png

@danielangeloni
Copy link

Looks like it's something internal that's not respecting the APP_URL properly for a couple of specific files, I don't think it's anything we're doing container-wise. Seeing this in Firefox (which is forcibly upgrading the connection for me, which is why I hadn't noticed any mixed content issues):

HTTPS-Only Mode: Upgrading insecure request “http://speed.example.com/fonts/inter/inter.css” to use “https”. inter.css HTTPS-Only Mode: Upgrading insecure request “http://speed.example.com/img/speedtest-tracker-icon.png” to use “https”. speedtest-tracker-icon.png

I had this problem too. The fix for me was to change the my reverse proxy upstream to https instead of http

@thespad
Copy link

thespad commented Jun 29, 2024

That'll work, but it won't fix the underlying issue

@alexjustesen
Copy link
Owner Author

What stands out to me is those (font and favicon) assets are the only two where I'm pulling them in from a provider https://github.com/alexjustesen/speedtest-tracker/blob/main/app/Providers/Filament/AdminPanelProvider.php#L37-L42.

The asset() method should respect APP_URL's full path if it's http or https. I'll dig some more after vacation in case it's at the Filament level.

Also separating this to a different issue so I don't lose it...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐋 docker Pull requests that update Docker code 📖 documentation Improvements or additions to documentation 🎉 feature New feature or request
Projects
None yet
Development

No branches or pull requests