Auto-proxy - Docker mod for SWAG
This mod gives SWAG the ability to auto-detect running containers via labels and automatically enable reverse proxy for them.
Requirements:
- This mod needs the
universal-dockermod installed and set up with either mappingdocker.sockor setting the environment variableDOCKER_HOST=remoteaddress. - Other containers to be auto-detected and reverse proxied should be in the same user defined bridge network as SWAG.
- Containers to be auto-detected and reverse proxied must have a label
swag=enableat a minimum. - To benefit from curated preset proxy confs we provide, the container name must match the container names that are suggested in our readme examples (ie.
radarrand notRadarr-4K).
Labels:
swag=enable- required for auto-detectionswag_port=80- optional - overrides internal exposed portswag_proto=http- optional - overrides internal proto (defaults to http)swag_url=containername.domain.com- optional - overrides server_name (defaults tocontainername.*)swag_auth=authelia- optional - enables auth methods (options areauthelia,ldapandhttpfor basic http auth)swag_auth_bypass=/api,/othersubfolder- optional - bypasses auth for selected subfolders. Comma separated, no spaces.
In SWAG docker arguments, set an environment variable DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-proxy and either add a volume mapping for /var/run/docker.sock:/var/run/docker.sock:ro, or set an environment var DOCKER_HOST=remoteaddress.
Security Consideration:
Mapping the docker.sock, especially in a publicly accessible container is a security liability. Since this mod only needs read-only access to the docker api, the recommended method is to proxy the docker.sock via a solution like tecnativa/docker-socket-proxy, limit the access, and set DOCKER_HOST= to point to the proxy address.
Here's a sample compose yaml snippet for tecnativa/docker-socket-proxy:
dockerproxy:
image: ghcr.io/tecnativa/docker-socket-proxy:latest
container_name: dockerproxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped
environment:
- CONTAINERS=1
- POST=0
Then the env var in SWAG can be set as DOCKER_HOST=dockerproxy. This will allow docker cli in SWAG to be able to retrieve info on other containers, but it won't be allowed to spin up new containers.