Linuxserver/calibre-web doesn't work when updating from 0.6.19 to 0.6.20

Hi,

When I update linuxserver/calibre-web from 0.6.19 to 0.6.20, calibre-web is not working any longer.
I get an error about “flask”.
The author of calibre-web says: !Attention! For this update flask-limiter has to be installed !Attention!
I did install flask-limiter in docker bash.

  • docker exec -it calweb_c bash
  • pip install flask-limiter

If i repeat this, “pip install flask-limiter” says:

  • “Requirement already satisfied: flask-limiter in /lsiopy/lib/python3.10/site-packages (3.3.1)”
  • Successfully installed flask-limiter-3.8.0 importlib-resources-6.4.0 limits-3.13.0 markdown-it-py-3.0.0 mdurl-0.1.2 ordered-set-4.1.0 rich-13.7.1

But how do I install flask-limiter in the Right way?

my system:
~/bin$ uname -a
Linux inst-02b 5.15.0-1062-gcp #70~20.04.1-Ubuntu SMP Fri May 24 20:12:18 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

can someone point me into the right direction?

regards,
Irvin


error message from calibre-web on the gui:

500 Internal Server Error
The server encountered an internal error and was unable to complete your request. There is an error in the application.
Traceback (most recent call last):
File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 2073, in wsgi_app
response = self.full_dispatch_request()
File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 1519, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 1517, in full_dispatch_request
rv = self.dispatch_request()
File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 1503, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "/lsiopy/lib/python3.10/site-packages/flask_login/utils.py", line 290, in decorated_view
return current_app.ensure_sync(func)(*args, **kwargs)
File "/app/calibre-web/cps/admin.py", line 96, in inner
return f(*args, **kwargs)
File "/app/calibre-web/cps/admin.py", line 222, in admin
return render_title_template("admin.html", allUser=all_user, config=config, commit=commit,
File "/app/calibre-web/cps/render_template.py", line 114, in render_title_template
return render_template(instance=config.config_calibre_web_title, sidebar=sidebar, simple=simple,
File "/lsiopy/lib/python3.10/site-packages/flask/templating.py", line 154, in render_template
return _render(
File "/lsiopy/lib/python3.10/site-packages/flask/templating.py", line 128, in _render
rv = template.render(context)
File "/lsiopy/lib/python3.10/site-packages/jinja2/environment.py", line 1301, in render
self.environment.handle_exception()
File "/lsiopy/lib/python3.10/site-packages/jinja2/environment.py", line 936, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/app/calibre-web/cps/templates/admin.html", line 3, in top-level template code
{% if setting_value %}<span class="glyphicon glyphicon-ok"></span>{% else %}<span class="glyphicon glyphicon-remove"></span>{% endif %}
File "/app/calibre-web/cps/templates/layout.html", line 4, in top-level template code
<html lang="{{ g.user.locale }}">
File "/lsiopy/lib/python3.10/site-packages/jinja2/environment.py", line 485, in getattr
return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'flask.ctx._AppCtxGlobals object' has no attribute 'user'
Please report this issue with all related information: Issue erzeugen
Zurück zur Hauptseite

my docker-compose.yml:

john01@inst-02b:~/yml$ cat  docker-compose.yml
version: "3.8"
services:
  calweb_s:
    restart: always
    #image: linuxserver/calibre-web:0.6.19
    image: linuxserver/calibre-web:0.6.20
    container_name: calweb_c
    environment:
      - PUID=1001
      - PGID=1002
      - GA4_MEASUREMENT_ID=G-XXXXXXX
    labels:
      - "traefik.enable=true"
      - "traefik.http.middlewares.csp-header.headers.customResponseHeaders.Content-Security-Policy=default-src 'self' https://www.googletagmanager.com https://region1.google-analytics.com;"
      - "traefik.http.routers.calweb_s-router.middlewares=csp-header"
      - "traefik.http.routers.calweb_s.rule=Host(`XXXXXX.eu`)"
      - "traefik.http.routers.calweb_s.entrypoints=web"
      - "traefik.http.routers.calweb_s.entrypoints=websecure"
      - "traefik.http.routers.calweb_s.tls.certresolver=myresolver"
    ports:
      - 8080:8083
    volumes:
      - ./layout.html:/app/calibre-web/cps/templates/layout.html
      - "./calweb:/config"
      - "./books:/books"

  traefik:
    image: "traefik:v2.9"
    container_name: "traefik"
    environment:
      - GA4_MEASUREMENT_ID=G-XXXXXXX
    command:
      - "--log.level=DEBUG"
      - "--api.dashboard=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
      - "--certificatesresolvers.myresolver.acme.email=XXXXXXXXXX@gmail.com"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entryPoint.scheme=https"
    labels:
      - "traefik.enable=true"
      - "traefik.http.middlewares.csp-header.headers.customResponseHeaders.Content-Security-Policy=default-src 'self' https://www.googletagmanager.com https://region1.google-analytics.com;"
      - "traefik.http.routers.calweb_s-router.middlewares=csp-header"
      - "traefik.http.routers.traefik.rule=Host(`dashboard.XXXXXXXX.eu`)"
      - "traefik.http.routers.traefik.entrypoints=websecure"
      - "traefik.http.routers.traefik.tls.certresolver=myresolver"
      - "traefik.http.routers.traefik.service=api@internal"
      - "traefik.http.routers.traefik.middlewares=traefik-basic-auth"
      - "traefik.http.middlewares.traefik-basic-auth.basicauth.users=admin:$$2y$$05$$JwDiXDWpdLJVpKuG6NQWieuW4zPZUBGn7pHr/BQTICW5ivPr7fP/2"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "letsencrypt:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
    restart: "always"

volumes:
  letsencrypt:

networks:
  default:
    external:
      name: webproxy