Skip to content

Install Stackyard with Docker Compose

Stackyard is one image for linux/amd64 and linux/arm64. On Unraid, use the Unraid template.

services:
stackyard:
image: ghcr.io/sandobserver/stackyard:latest
container_name: stackyard
restart: unless-stopped
ports:
- "8700:80"
volumes:
- ./data:/data
- ./icons:/icons
docker compose up -d

Open http://<host>:8700.

/data holds the config file. /icons holds uploaded icons and wallpapers. The container runs as UID 1000 and must be able to write both.

The compose file in the repository adds hardening and lists every variable below.

docker run -d --name stackyard --restart unless-stopped \
-p 8700:80 -v ./data:/data -v ./icons:/icons \
ghcr.io/sandobserver/stackyard:latest

All optional.

Network

  • ALLOW_PRIVATE_IPSSet true to let badges and widgets reach LAN and loopback addresses. Most homelabs need it. Read Security first.
  • TRUST_PROXYSet true behind a TLS proxy you control. See Reverse proxy.
  • TRUSTED_PROXYThe proxy address or CIDR, for per-client rate limiting.
  • SOCKET_PROXY_URLA Docker socket proxy, for container health checks.

Sessions and logs

  • SESSION_MAX_AGE_DAYSIdle session lifetime. Default 0.5, 12 hours.
  • PASSWORD_HASH_MEMORYMemory per password hash: 8mib to 128mib. Default 16mib.
  • LOG_LEVELdebug, info, warn or error. Default info. The General setting overrides it.

Paths and runtime

  • CONFIG_PATHDefault /data/apps.json.
  • ICONS_PATHDefault /icons.
  • WIDGETS_PATHDefault /usr/share/nginx/html/widgets. A wrong path loads no widgets.
  • NODE_OPTIONSDefault --max-old-space-size=192. Keep near half the container memory limit.
  • PORTOnly for platforms that route by PORT. Must be 80.
  • DEMO_MODERuns a read-only public demo.

ghcr.io/sandobserver/stackyard, mirrored to Docker Hub as sandobserver/stackyard. The release signature covers ghcr.io.