From e8205bf15614a64d69403084a7ea939ae50dc71d Mon Sep 17 00:00:00 2001 From: An Phan Date: Wed, 9 Sep 2026 17:03:22 +0700 Subject: [PATCH 1/2] fix: let Koel serve the PWA manifest The image moved manifest.json.example into place at build time, so koel:init found the file already there and left the placeholder start_url in it. Users had to bind-mount a corrected manifest, since public/ is not a volume and an in-container edit does not survive a container recreation. koel/koel now serves the manifest itself, from APP_URL and the branded name. The release tarball no longer ships the example file either, so leaving the mv in place would break the build. See koel/koel#2662 --- CHANGELOG.md | 4 ++++ Dockerfile | 1 - goss.yaml | 5 ----- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41f0add..2b0a817 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Since this docker image only has one tag which is `latest`, there are no versions. However we'll write changes with the date at which they occured. +## 2026-09-09 +### Fixed +- Koel now creates the manifest (the file that lets you install Koel as an app) at `/manifest.json`. The `start_url` value comes from `APP_URL`. The name comes from your custom name on Koel Plus. Before this change, the file held the placeholder address `https://your.koel.host`. You do not have to edit or bind-mount the file. To keep a manifest that you wrote, bind-mount it over `/var/www/html/public/manifest.json`, and Koel serves your file instead. + ## 2026-05-22 ### Fixed - ⚠ Image storage path moved to follow koel/koel#2479. If you're upgrading from a previous release, update your `docker-compose.yml` so the `image_storage` volume binds to `/var/www/html/storage/app/public/images` instead of `/var/www/html/public/img/storage`. Existing data in your `image_storage` volume / host bind transfers over automatically when you switch the mount point — files inside the volume don't move, only the mount path inside the container does. diff --git a/Dockerfile b/Dockerfile index 18bcf90..c5ecadd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -101,7 +101,6 @@ RUN a2enmod rewrite # Copy the downloaded release RUN cp -R /tmp/koel/. /var/www/html \ - && mv /var/www/html/public/manifest.json.example /var/www/html/public/manifest.json \ # The release tarball ships public/storage as an absolute symlink into the path the # release runner built it at, which resolves nowhere here and leaves koel unable to read # or write uploaded images. Replace it with a relative link to the same target. diff --git a/goss.yaml b/goss.yaml index a9e2ee9..859711c 100644 --- a/goss.yaml +++ b/goss.yaml @@ -15,11 +15,6 @@ file: owner: www-data group: www-data filetype: directory - /var/www/html/public/manifest.json: - exists: true - owner: www-data - group: www-data - filetype: file /var/www/html/.git: exists: false /var/www/html/.github: From 22348c155cbaef3fb6b00fa091f7105112d84e27 Mon Sep 17 00:00:00 2001 From: An Phan Date: Wed, 9 Sep 2026 17:52:56 +0700 Subject: [PATCH 2/2] docs: mention the remote controller manifest in the changelog The change serves two manifests, and the entry named only one of them. --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b0a817..996c5ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ Since this docker image only has one tag which is `latest`, there are no version ## 2026-09-09 ### Fixed -- Koel now creates the manifest (the file that lets you install Koel as an app) at `/manifest.json`. The `start_url` value comes from `APP_URL`. The name comes from your custom name on Koel Plus. Before this change, the file held the placeholder address `https://your.koel.host`. You do not have to edit or bind-mount the file. To keep a manifest that you wrote, bind-mount it over `/var/www/html/public/manifest.json`, and Koel serves your file instead. +- Koel now creates the manifests (the files that let you install Koel as an app) at `/manifest.json` and `/manifest-remote.json`. The `start_url` value comes from `APP_URL`. The name comes from your custom name on Koel Plus. Before this change, the files held a placeholder address `https://your.koel.host`. You do not have to edit or bind-mount the file. To keep a manifest that you wrote, bind-mount it over `/var/www/html/public/manifest.json`, and Koel serves your file instead. ## 2026-05-22 ### Fixed