I hosted searxng on portainer and receive PermissionError
and no python application found
error
Log:
PermissionError: [Errno 13] Permission denied: '/etc/searxng/settings.yml'
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
--- no python application found, check your startup logs for errors ---
[pid: 19|app: -1|req: -1/1] 127.0.0.1 () {28 vars in 330 bytes} [Sat May 17 05:06:00 2025] HEAD /healthz => generated 21 bytes in 0 msecs (HTTP/1.1 500) 3 headers in 102 bytes (0 switches on core 0)
I tried removing cap_drop (as instructed on https://github.com/searxng/searxng-docker/issues/115) but no luck
version: "3.7"
services:
# caddy:
# container_name: caddy
# image: docker.io/library/caddy:2-alpine
# network_mode: host
# restart: unless-stopped
# volumes:
# - ./Caddyfile:/etc/caddy/Caddyfile:ro
# - caddy-data:/data:rw
# - caddy-config:/config:rw
# environment:
# # - SEARXNG_HOSTNAME=${SEARXNG_HOSTNAME:-http://localhost/}
# - SEARXNG_TLS=${LETSENCRYPT_EMAIL:-internal}
# cap_drop:
# - ALL
# cap_add:
# - NET_BIND_SERVICE
# logging:
# driver: "json-file"
# options:
# max-size: "1m"
# max-file: "1"
redis:
container_name: redis
image: docker.io/valkey/valkey:8-alpine
command: valkey-server --save 30 1 --loglevel warning
restart: unless-stopped
networks:
- searxng
volumes:
- valkey-data2:/data
# cap_drop:
# - ALL
cap_add:
- SETGID
- SETUID
- DAC_OVERRIDE
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
searxng:
container_name: searxng
image: docker.io/searxng/searxng:latest
restart: unless-stopped
networks:
- searxng
ports:
# - "127.0.0.1:8080:8080"
- "20054:8080"
volumes:
- ./searxng:/etc/searxng:rw
environment:
# - SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/
- SEARXNG_BASE_URL="http://mydomain:20054/"
- UWSGI_WORKERS=${SEARXNG_UWSGI_WORKERS:-4}
- UWSGI_THREADS=${SEARXNG_UWSGI_THREADS:-4}
# cap_drop:
# - ALL
cap_add:
- CHOWN
- SETGID
- SETUID
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
networks:
searxng:
volumes:
# caddy-data:
# caddy-config:
valkey-data2:
thx a lot!
Yep Probably you need to change ownership and/or permissions of the files outside of docker.
I dont want to give the wrong suggestion from memory so hopefully thats enough info to get you going in the direction of a fix. Basically see what user id owns the files inside of docker, make it the same uid outside of docker in the folder you are bind mounting.
SN_FR_@SN:~$ sudo docker exec -it searxng sh -c "id" uid=0(root) gid=0(root) groups=0(root)
container is running as root, so there shouldn’t be any permission error?
I’m opening those files with windows but the user permission inside docker shouldn’t cause that problem.
I’m scratching my head nw
The problem is that while docker is running as root (0) the searxng process internally runs as a user searxng with id 977
So your filesystem outside of docker needs to have those files assigned the right ownership.
This thread has a more detailed discussion that you might find helpful. https://forums.truenas.com/t/how-to-install-searxng-app-docker-permissions-issue/14049/10