issue with web ui
Current ENV: Portainer with 7 Docker hosts in swam mode Storage: QNAP with nfs shares
Web UI not loading.
Error NGINX Conatiner: 10.255.250.153 - - [25/Oct/2024:07:44:57 +0000] "GET /static/images/favicon.png HTTP/1.1" 403 555 "https://opvolging.slimfit-center.be/en/software/features" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0" "10.255.0.6"
composer file via portainer deployed:
Please consult the Deployment section in the readme if you want to deploy
this. You need to keep this nginx service, even if you have your own,
otherwise the static files will not be served correctly! If you do remove
it, configure yours similarly to what's in config/nginx.conf
Also take a look at the "Static files" section in the .env file
services: web: image: wger/server:latest depends_on: - db - cache volumes: - static:/home/wger/static - media:/home/wger/media networks: - wger healthcheck: test: wget --no-verbose --tries=1 --spider http://localhost:8000 interval: 10s timeout: 5s start_period: 300s retries: 5 restart: unless-stopped environment: SECRET_KEY: ${SECRET_KEY} SIGNING_KEY: ${SIGNING_KEY} TIME_ZONE: ${TIME_ZONE} WGER_INSTANCE: ${WGER_INSTANCE} ALLOW_REGISTRATION: ${ALLOW_REGISTRATION} ALLOW_GUEST_USERS: ${ALLOW_GUEST_USERS} ALLOW_UPLOAD_VIDEOS: ${ALLOW_UPLOAD_VIDEOS} MIN_ACCOUNT_AGE_TO_TRUST: ${MIN_ACCOUNT_AGE_TO_TRUST} SYNC_EXERCISES_CELERY: ${SYNC_EXERCISES_CELERY} SYNC_EXERCISE_IMAGES_CELERY: ${SYNC_EXERCISE_IMAGES_CELERY} SYNC_EXERCISE_VIDEOS_CELERY: ${SYNC_EXERCISE_VIDEOS_CELERY} SYNC_INGREDIENTS_CELERY: ${SYNC_INGREDIENTS_CELERY} DOWNLOAD_INGREDIENTS_FROM: ${DOWNLOAD_INGREDIENTS_FROM} USE_CELERY: ${USE_CELERY} CELERY_BROKER: ${CELERY_BROKER} CELERY_BACKEND: ${CELERY_BACKEND} CELERY_FLOWER_PASSWORD: ${CELERY_FLOWER_PASSWORD} DJANGO_DB_ENGINE: ${DJANGO_DB_ENGINE} DJANGO_DB_DATABASE: ${DJANGO_DB_DATABASE} DJANGO_DB_USER: ${DJANGO_DB_USER} DJANGO_DB_PASSWORD: ${DJANGO_DB_PASSWORD} DJANGO_DB_HOST: ${DJANGO_DB_HOST} DJANGO_DB_PORT: ${DJANGO_DB_PORT} DJANGO_PERFORM_MIGRATIONS: ${DJANGO_PERFORM_MIGRATIONS} DJANGO_CACHE_BACKEND: ${DJANGO_CACHE_BACKEND} DJANGO_CACHE_LOCATION: ${DJANGO_CACHE_LOCATION} DJANGO_CACHE_TIMEOUT: ${DJANGO_CACHE_TIMEOUT} DJANGO_CACHE_CLIENT_CLASS: ${DJANGO_CACHE_CLIENT_CLASS} AXES_ENABLED: ${AXES_ENABLED} AXES_FAILURE_LIMIT: ${AXES_FAILURE_LIMIT} AXES_COOLOFF_TIME: ${AXES_COOLOFF_TIME} AXES_HANDLER: ${AXES_HANDLER} AXES_LOCKOUT_PARAMETERS: ${AXES_LOCKOUT_PARAMETERS} AXES_IPWARE_PROXY_COUNT: ${AXES_IPWARE_PROXY_COUNT} AXES_IPWARE_META_PRECEDENCE_ORDER: ${AXES_IPWARE_META_PRECEDENCE_ORDER} DJANGO_DEBUG: ${DJANGO_DEBUG} WGER_USE_GUNICORN: ${WGER_USE_GUNICORN} EXERCISE_CACHE_TTL: ${EXERCISE_CACHE_TTL} SITE_URL: ${SITE_URL} ACCESS_TOKEN_LIFETIME: ${ACCESS_TOKEN_LIFETIME} REFRESH_TOKEN_LIFETIME: ${REFRESH_TOKEN_LIFETIME} USE_RECAPTCHA: ${USE_RECAPTCHA} DJANGO_CLEAR_STATIC_FIRST: ${DJANGO_CLEAR_STATIC_FIRST} FROM_EMAIL: ${FROM_EMAIL} NUMBER_OF_PROXIES: ${NUMBER_OF_PROXIES} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} CSRF_TRUSTED_ORIGINS: ${CSRF_TRUSTED_ORIGINS} SECURE_PROXY_SSL_HEADER: ${SECURE_PROXY_SSL_HEADER}
db: image: postgres:15-alpine volumes: - postgres-data:/var/lib/postgresql/data/ healthcheck: test: pg_isready -U wger interval: 10s timeout: 5s retries: 5 start_period: 30s restart: unless-stopped networks: - wger environment: SECRET_KEY: ${SECRET_KEY} SIGNING_KEY: ${SIGNING_KEY} TIME_ZONE: ${TIME_ZONE} WGER_INSTANCE: ${WGER_INSTANCE} ALLOW_REGISTRATION: ${ALLOW_REGISTRATION} ALLOW_GUEST_USERS: ${ALLOW_GUEST_USERS} ALLOW_UPLOAD_VIDEOS: ${ALLOW_UPLOAD_VIDEOS} MIN_ACCOUNT_AGE_TO_TRUST: ${MIN_ACCOUNT_AGE_TO_TRUST} SYNC_EXERCISES_CELERY: ${SYNC_EXERCISES_CELERY} SYNC_EXERCISE_IMAGES_CELERY: ${SYNC_EXERCISE_IMAGES_CELERY} SYNC_EXERCISE_VIDEOS_CELERY: ${SYNC_EXERCISE_VIDEOS_CELERY} SYNC_INGREDIENTS_CELERY: ${SYNC_INGREDIENTS_CELERY} DOWNLOAD_INGREDIENTS_FROM: ${DOWNLOAD_INGREDIENTS_FROM} USE_CELERY: ${USE_CELERY} CELERY_BROKER: ${CELERY_BROKER} CELERY_BACKEND: ${CELERY_BACKEND} CELERY_FLOWER_PASSWORD: ${CELERY_FLOWER_PASSWORD} DJANGO_DB_ENGINE: ${DJANGO_DB_ENGINE} DJANGO_DB_DATABASE: ${DJANGO_DB_DATABASE} DJANGO_DB_USER: ${DJANGO_DB_USER} DJANGO_DB_PASSWORD: ${DJANGO_DB_PASSWORD} DJANGO_DB_HOST: ${DJANGO_DB_HOST} DJANGO_DB_PORT: ${DJANGO_DB_PORT} DJANGO_PERFORM_MIGRATIONS: ${DJANGO_PERFORM_MIGRATIONS} DJANGO_CACHE_BACKEND: ${DJANGO_CACHE_BACKEND} DJANGO_CACHE_LOCATION: ${DJANGO_CACHE_LOCATION} DJANGO_CACHE_TIMEOUT: ${DJANGO_CACHE_TIMEOUT} DJANGO_CACHE_CLIENT_CLASS: ${DJANGO_CACHE_CLIENT_CLASS} AXES_ENABLED: ${AXES_ENABLED} AXES_FAILURE_LIMIT: ${AXES_FAILURE_LIMIT} AXES_COOLOFF_TIME: ${AXES_COOLOFF_TIME} AXES_HANDLER: ${AXES_HANDLER} AXES_LOCKOUT_PARAMETERS: ${AXES_LOCKOUT_PARAMETERS} AXES_IPWARE_PROXY_COUNT: ${AXES_IPWARE_PROXY_COUNT} AXES_IPWARE_META_PRECEDENCE_ORDER: ${AXES_IPWARE_META_PRECEDENCE_ORDER} DJANGO_DEBUG: ${DJANGO_DEBUG} WGER_USE_GUNICORN: ${WGER_USE_GUNICORN} EXERCISE_CACHE_TTL: ${EXERCISE_CACHE_TTL} SITE_URL: ${SITE_URL} ACCESS_TOKEN_LIFETIME: ${ACCESS_TOKEN_LIFETIME} REFRESH_TOKEN_LIFETIME: ${REFRESH_TOKEN_LIFETIME} USE_RECAPTCHA: ${USE_RECAPTCHA} DJANGO_CLEAR_STATIC_FIRST: ${DJANGO_CLEAR_STATIC_FIRST} FROM_EMAIL: ${FROM_EMAIL} NUMBER_OF_PROXIES: ${NUMBER_OF_PROXIES} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB}
cache: image: redis volumes: - redis-data:/data healthcheck: test: redis-cli ping interval: 10s timeout: 5s retries: 5 start_period: 30s restart: unless-stopped networks: - wger
celery_worker: image: wger/server:latest command: /start-worker volumes: - media:/home/wger/media depends_on: - web healthcheck: test: celery -A wger inspect ping interval: 10s timeout: 5s retries: 5 start_period: 30s networks: - wger environment: SECRET_KEY: ${SECRET_KEY} SIGNING_KEY: ${SIGNING_KEY} TIME_ZONE: ${TIME_ZONE} WGER_INSTANCE: ${WGER_INSTANCE} ALLOW_REGISTRATION: ${ALLOW_REGISTRATION} ALLOW_GUEST_USERS: ${ALLOW_GUEST_USERS} ALLOW_UPLOAD_VIDEOS: ${ALLOW_UPLOAD_VIDEOS} MIN_ACCOUNT_AGE_TO_TRUST: ${MIN_ACCOUNT_AGE_TO_TRUST} SYNC_EXERCISES_CELERY: ${SYNC_EXERCISES_CELERY} SYNC_EXERCISE_IMAGES_CELERY: ${SYNC_EXERCISE_IMAGES_CELERY} SYNC_EXERCISE_VIDEOS_CELERY: ${SYNC_EXERCISE_VIDEOS_CELERY} SYNC_INGREDIENTS_CELERY: ${SYNC_INGREDIENTS_CELERY} DOWNLOAD_INGREDIENTS_FROM: ${DOWNLOAD_INGREDIENTS_FROM} USE_CELERY: ${USE_CELERY} CELERY_BROKER: ${CELERY_BROKER} CELERY_BACKEND: ${CELERY_BACKEND} CELERY_FLOWER_PASSWORD: ${CELERY_FLOWER_PASSWORD} DJANGO_DB_ENGINE: ${DJANGO_DB_ENGINE} DJANGO_DB_DATABASE: ${DJANGO_DB_DATABASE} DJANGO_DB_USER: ${DJANGO_DB_USER} DJANGO_DB_PASSWORD: ${DJANGO_DB_PASSWORD} DJANGO_DB_HOST: ${DJANGO_DB_HOST} DJANGO_DB_PORT: ${DJANGO_DB_PORT} DJANGO_PERFORM_MIGRATIONS: ${DJANGO_PERFORM_MIGRATIONS} DJANGO_CACHE_BACKEND: ${DJANGO_CACHE_BACKEND} DJANGO_CACHE_LOCATION: ${DJANGO_CACHE_LOCATION} DJANGO_CACHE_TIMEOUT: ${DJANGO_CACHE_TIMEOUT} DJANGO_CACHE_CLIENT_CLASS: ${DJANGO_CACHE_CLIENT_CLASS} AXES_ENABLED: ${AXES_ENABLED} AXES_FAILURE_LIMIT: ${AXES_FAILURE_LIMIT} AXES_COOLOFF_TIME: ${AXES_COOLOFF_TIME} AXES_HANDLER: ${AXES_HANDLER} AXES_LOCKOUT_PARAMETERS: ${AXES_LOCKOUT_PARAMETERS} AXES_IPWARE_PROXY_COUNT: ${AXES_IPWARE_PROXY_COUNT} AXES_IPWARE_META_PRECEDENCE_ORDER: ${AXES_IPWARE_META_PRECEDENCE_ORDER} DJANGO_DEBUG: ${DJANGO_DEBUG} WGER_USE_GUNICORN: ${WGER_USE_GUNICORN} EXERCISE_CACHE_TTL: ${EXERCISE_CACHE_TTL} SITE_URL: ${SITE_URL} ACCESS_TOKEN_LIFETIME: ${ACCESS_TOKEN_LIFETIME} REFRESH_TOKEN_LIFETIME: ${REFRESH_TOKEN_LIFETIME} USE_RECAPTCHA: ${USE_RECAPTCHA} DJANGO_CLEAR_STATIC_FIRST: ${DJANGO_CLEAR_STATIC_FIRST} FROM_EMAIL: ${FROM_EMAIL} NUMBER_OF_PROXIES: ${NUMBER_OF_PROXIES} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB}
celery_beat: image: wger/server:latest command: /start-beat volumes: - celery-beat:/home/wger/beat/ depends_on: - celery_worker networks: - wger environment: SECRET_KEY: ${SECRET_KEY} SIGNING_KEY: ${SIGNING_KEY} TIME_ZONE: ${TIME_ZONE} WGER_INSTANCE: ${WGER_INSTANCE} ALLOW_REGISTRATION: ${ALLOW_REGISTRATION} ALLOW_GUEST_USERS: ${ALLOW_GUEST_USERS} ALLOW_UPLOAD_VIDEOS: ${ALLOW_UPLOAD_VIDEOS} MIN_ACCOUNT_AGE_TO_TRUST: ${MIN_ACCOUNT_AGE_TO_TRUST} SYNC_EXERCISES_CELERY: ${SYNC_EXERCISES_CELERY} SYNC_EXERCISE_IMAGES_CELERY: ${SYNC_EXERCISE_IMAGES_CELERY} SYNC_EXERCISE_VIDEOS_CELERY: ${SYNC_EXERCISE_VIDEOS_CELERY} SYNC_INGREDIENTS_CELERY: ${SYNC_INGREDIENTS_CELERY} DOWNLOAD_INGREDIENTS_FROM: ${DOWNLOAD_INGREDIENTS_FROM} USE_CELERY: ${USE_CELERY} CELERY_BROKER: ${CELERY_BROKER} CELERY_BACKEND: ${CELERY_BACKEND} CELERY_FLOWER_PASSWORD: ${CELERY_FLOWER_PASSWORD} DJANGO_DB_ENGINE: ${DJANGO_DB_ENGINE} DJANGO_DB_DATABASE: ${DJANGO_DB_DATABASE} DJANGO_DB_USER: ${DJANGO_DB_USER} DJANGO_DB_PASSWORD: ${DJANGO_DB_PASSWORD} DJANGO_DB_HOST: ${DJANGO_DB_HOST} DJANGO_DB_PORT: ${DJANGO_DB_PORT} DJANGO_PERFORM_MIGRATIONS: ${DJANGO_PERFORM_MIGRATIONS} DJANGO_CACHE_BACKEND: ${DJANGO_CACHE_BACKEND} DJANGO_CACHE_LOCATION: ${DJANGO_CACHE_LOCATION} DJANGO_CACHE_TIMEOUT: ${DJANGO_CACHE_TIMEOUT} DJANGO_CACHE_CLIENT_CLASS: ${DJANGO_CACHE_CLIENT_CLASS} AXES_ENABLED: ${AXES_ENABLED} AXES_FAILURE_LIMIT: ${AXES_FAILURE_LIMIT} AXES_COOLOFF_TIME: ${AXES_COOLOFF_TIME} AXES_HANDLER: ${AXES_HANDLER} AXES_LOCKOUT_PARAMETERS: ${AXES_LOCKOUT_PARAMETERS} AXES_IPWARE_PROXY_COUNT: ${AXES_IPWARE_PROXY_COUNT} AXES_IPWARE_META_PRECEDENCE_ORDER: ${AXES_IPWARE_META_PRECEDENCE_ORDER} DJANGO_DEBUG: ${DJANGO_DEBUG} WGER_USE_GUNICORN: ${WGER_USE_GUNICORN} EXERCISE_CACHE_TTL: ${EXERCISE_CACHE_TTL} SITE_URL: ${SITE_URL} ACCESS_TOKEN_LIFETIME: ${ACCESS_TOKEN_LIFETIME} REFRESH_TOKEN_LIFETIME: ${REFRESH_TOKEN_LIFETIME} USE_RECAPTCHA: ${USE_RECAPTCHA} DJANGO_CLEAR_STATIC_FIRST: ${DJANGO_CLEAR_STATIC_FIRST} FROM_EMAIL: ${FROM_EMAIL} NUMBER_OF_PROXIES: ${NUMBER_OF_PROXIES} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB}
nginx:
image: nginx:stable
depends_on:
- web
volumes:
- nginxconfig:/etc/nginx/conf.d
- static:/wger/static
- media:/wger/media
healthcheck:
test: service nginx status
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
restart: unless-stopped
networks:
- wger
- traefik
deploy:
placement:
constraints:
# Make the traefik service run only on the node with this label
# as the node with it has the volume for the certificates
- node.labels.traefik-public.traefik-public-certificates == true
labels:
#BaseConfig
- "traefik.enable=true"
- "traefik.constraint-label=traefik-public"
- "traefik.docker.network=traefik_traefik-public"
#MiddleWare
- "traefik.http.middlewares.slimfitcenteropvolging-redirect.redirectscheme.scheme=https"
- "traefik.http.middlewares.slimfitcenteropvolging-redirect.redirectscheme.permanent=true"
#ServiceConfig
- "traefik.http.routers.slimfitcenteropvolging-http.service=gregitedms"
- "traefik.http.services.slimfitcenteropvolging.loadbalancer.server.port=80"
#EntryPoints
- "traefik.http.routers.slimfitcenteropvolging-http.entrypoints=http"
- "traefik.http.routers.slimfitcenteropvolging-http.rule=Host(${SITE_HOST})"
- "traefik.http.routers.slimfitcenteropvolging-http.middlewares=slimfitcenteropvolging-redirect"
- "traefik.http.routers.slimfitcenteropvolging-https.entrypoints=https"
- "traefik.http.routers.slimfitcenteropvolging-https.rule=Host(${SITE_HOST})"
- "traefik.http.routers.slimfitcenteropvolging-https.tls=true"
- "traefik.http.routers.slimfitcenteropvolging-https.tls.certresolver=le"
volumes: postgres-data: driver_opts: type: nfs o: addr=10.0.105.1,rw device: ":/DockerClusterData/SlimFitCenter/Wger/POSTGRES" celery-beat: driver_opts: type: nfs o: addr=10.0.105.1,rw device: ":/DockerClusterData/SlimFitCenter/Wger/CELERY" static: driver_opts: type: nfs o: addr=10.0.105.1,rw device: ":/DockerClusterData/SlimFitCenter/Wger/STATIC" media: driver_opts: type: nfs o: addr=10.0.105.1,rw device: ":/DockerClusterData/SlimFitCenter/Wger/MEDIA" nginxconfig: driver_opts: type: nfs o: addr=10.0.105.1,rw device: ":/DockerClusterData/SlimFitCenter/Wger/NGINXCONFIG" redis-data: driver_opts: type: nfs o: addr=10.0.105.1,rw device: ":/DockerClusterData/SlimFitCenter/Wger/REDIS" caddy: driver_opts: type: nfs o: addr=10.0.105.1,rw device: ":/DockerClusterData/SlimFitCenter/Wger/CADDY" caddy-data: driver_opts: type: nfs o: addr=10.0.105.1,rw device: ":/DockerClusterData/SlimFitCenter/Wger/CADDYDATA" caddy-logs: driver_opts: type: nfs o: addr=10.0.105.1,rw device: ":/DockerClusterData/SlimFitCenter/Wger/CADDYLOGS" caddy-config: driver_opts: type: nfs o: addr=10.0.105.1,rw device: ":/DockerClusterData/SlimFitCenter/Wger/CADDYCONFIG"
networks: wger: driver: overlay attachable: true ipam: config: - subnet: 10.250.12.0/24 traefik: external: name: traefik_traefik-public
conflicting access rights for ngnx vs wweb service
conflicting access rights for ngnx vs wweb service
hi! yes, if there you mount folders you will get problems when accessing these files (that's why we're using the volumes). However, this should be fixable with some chown and chmod. If you manage to fix this, tell us what you did you I can mention this in a comment in the readme
Dear,
I did but the web lost access
Sent from my Galaxy
-------- Original message -------- From: Roland Geider @.> Date: 10/26/24 09:59 (GMT+01:00) To: wger-project/docker @.> Cc: ReaperOfSouls @.>, Author @.> Subject: Re: [wger-project/docker] issue with web ui (Issue #106)
conflicting access rights for ngnx vs wweb service
hi! yes, if there you mount folders you will get problems when accessing these files (that's why we're using the volumes). However, this should be fixable with some chown and chmod. If you manage to fix this, tell us what you did you I can mention this in a comment in the readme
— Reply to this email directly, view it on GitHubhttps://github.com/wger-project/docker/issues/106#issuecomment-2439422815, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AR3INHC6HH4XA3HEEFRFNATZ5NDXBAVCNFSM6AAAAABQSWD3CKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMZZGQZDEOBRGU. You are receiving this because you authored the thread.Message ID: @.***>