-
Notifications
You must be signed in to change notification settings - Fork 15
Description
I'm not sure if it's a bug or if I'm just incompetent :)
I have a Quadlet for Podman rootless containers here. I'm trying to create a proxied socket for Podman for Dozzle, Uptime-Kuma, Homepage, etc. for my containers. All these are at a rootless proxy network. These containers should communicate via /run/user/1000/podman/podman-proxy.sock. Unfortunately, I can't get it to work. I'm not sure if I'll end up doing the whole thing via TCP later, but there's no need for that at the moment.
I'm running Fedora CoreOS with recent Podman, and hence I want to stick with SELinux.
BTW, am I right in thinking that Homepage only works via socket?
~/.config/containers/systemd/podman-socket-proxy/podman-socket-proxy.container:
[Unit]
Description=A lightweight and secure unix socket proxy for Podman
Documentation=https://github.com/wollomatic/socket-proxy
After=network-online.target
Requires=podman.socket
[Container]
Image=ghcr.io/wollomatic/socket-proxy:1
ContainerName=podman-socket-proxy
AutoUpdate=registry
Network=proxy.network
DropCapability=all
NoNewPrivileges=true
ReadOnly=true
EnvironmentFile=%h/.config/containers/systemd/podman-socket-proxy/podman-socket-proxy.env
SecurityLabelDisable=true
Volume=%t/podman/podman.sock:/var/run/docker.sock:ro,z
Volume=/etc/localtime:/etc/localtime:ro
[Service]
Restart=always
[Install]
WantedBy=default.target
~/.config/containers/systemd/podman-socket-proxy/podman-socket-proxy.env:
SP_ALLOWBINDMOUNTFROM=/run/user/1000/podman
#SP_ALLOW_GET=/v1\..{2}/(containers/.*|images/.*)
#SP_ALLOW_POST=/v1\..{2}/(containers/.*|images/.*|networks/.*)
#SP_ALLOW_DELETE=/v1\..{2}/(containers/.*|images/.*)
SP_LOGJSON=true
SP_LOGLEVEL=DEBUG
SP_ALLOW_GET=.*
SP_ALLOW_HEAD=.*
SP_ALLOW_POST=.*
SP_ALLOW_PUT=.*
SP_ALLOW_PATCH=.*
SP_ALLOW_DELETE=.*
SP_ALLOW_CONNECT=.*
SP_ALLOW_TRACE=.*
SP_ALLOW_OPTIONS=.*
#SP_ALLOWFROM=dazzle,homepage,uptime-kuma
#SP_LISTENIP=127.0.0.1
#SP_PROXYPORT=2375
SP_ALLOWHEALTHCHECK=yes # 127.0.0.1:55555/health
SP_PROXYSOCKETENDPOINT=yes
SP_PROXYSOCKETENDPOINTFILEMODE=0600
SP_SOCKETPATH=/run/user/1000/podman/podman-proxy.sock
SP_STOPONWATCHDOG=yes # halt program on error and let restart it
SP_WATCHDOGINTERVAL=10 # check for socket availability
SP_SHUTDOWNGRACETIME=10 # wait before shutting down
and here is my socket:
$ ls -laZ /run/user/1000/podman
total 0
drwxr-xr-x. 2 core core unconfined_u:object_r:user_tmp_t:s0 60 Oct 25 11:53 .
drwx------. 9 core core unconfined_u:object_r:user_tmp_t:s0 480 Oct 29 16:58 ..
srw-rw----. 1 core core system_u:object_r:container_file_t:s0 0 Oct 25 11:53 podman.sockFrom journal I get:
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.310131188+01:00","level":"INFO","msg":"configuration info","socketpath":"/run/user/1000/podman/podman-proxy.sock","proxysocketendpoint":"yes","proxysocketendpointfilemode":384,"loglevel":"DEBUG","logjson":true,"shutdowngracetime":10}
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.310311392+01:00","level":"INFO","msg":"proxysocketendpoint is set, so the TCP listener is deactivated"}
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.310331055+01:00","level":"INFO","msg":"watchdog disabled"}
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.31035028+01:00","level":"INFO","msg":"Docker bind mount restrictions enabled","allowbindmountfrom":["/run/user/1000/podman"]}
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.310431882+01:00","level":"INFO","msg":"configured allowed request","method":"GET","regex":"^.*$"}
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.310538609+01:00","level":"INFO","msg":"configured allowed request","method":"POST","regex":"^.*$"}
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.310563922+01:00","level":"INFO","msg":"configured allowed request","method":"PUT","regex":"^.*$"}
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.310588772+01:00","level":"INFO","msg":"configured allowed request","method":"PATCH","regex":"^.*$"}
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.31120126+01:00","level":"INFO","msg":"configured allowed request","method":"DELETE","regex":"^.*$"}
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.311352613+01:00","level":"INFO","msg":"configured allowed request","method":"CONNECT","regex":"^.*$"}
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.311480529+01:00","level":"INFO","msg":"configured allowed request","method":"TRACE","regex":"^.*$"}
Oct 29 17:19:27 coreos-test podman[930674]: @ - - [29/Oct/2025:17:19:27 +0100] "GET /v1.41/containers/6d66c7d955b2/json HTTP/1.1" 200 6120 "" "Docker-Client/Dozzle"
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.312698054+01:00","level":"INFO","msg":"configured allowed request","method":"OPTIONS","regex":"^.*$"}
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.312775843+01:00","level":"INFO","msg":"configured allowed request","method":"HEAD","regex":"^.*$"}
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.312805219+01:00","level":"DEBUG","msg":"checking socket availability","origin":"checkSocketAvailability"}
Oct 29 17:19:27 coreos-test podman-socket-proxy[1097782]: {"time":"2025-10-29T17:19:27.313186815+01:00","level":"ERROR","msg":"socket not available","error":"dial unix /run/user/1000/podman/podman-proxy.sock: connect: no such file or directory"}
Oct 29 17:19:27 coreos-test podman[930674]: 2025-10-29 17:19:27.416152459 +0100 CET m=+78481.122679349 container died 6d66c7d955b273a17c8e15029dfe2d6fd3a4a4311151744f5c94a0dd57888886 (image=ghcr.io/wollomatic/socket-proxy:1, name=podman-socket-proxy, org.opencontainers.image.source=https://github.com/wollomatic/socket-proxy, io.containers.autoupdate=registry, org.opencontainers.image.description=A lightweight and secure unix socket proxy, org.opencontainers.image.licenses=MIT)