Skip to content

issue with web ui #106

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

Open
ReaperOfTheSoul opened this issue Oct 25, 2024 · 3 comments
Open

issue with web ui #106

ReaperOfTheSoul opened this issue Oct 25, 2024 · 3 comments

Comments

@ReaperOfTheSoul
Copy link

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

@ReaperOfTheSoul
Copy link
Author

conflicting access rights for ngnx vs wweb service

@rolandgeider
Copy link
Member

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

@ReaperOfTheSoul
Copy link
Author

ReaperOfTheSoul commented Oct 27, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants