MacOS limits the directories you can write to for bound directories. Assuming you're using this Docker Compose:
services:
fruitdeeplinks:
# 2025.12.22
# GitHub home for this project with setup instructions: https://github.com/kineticman/FruitDeepLinks
# Docker container home for this project: https://github.com/kineticman/FruitDeepLinks/pkgs/container/fruitdeeplinks
image: ghcr.io/kineticman/fruitdeeplinks:${TAG:-latest}
container_name: fruitdeeplinks
hostname: fruitdeeplinks
shm_size: '2gb'
ports:
- ${FRUIT_HOST_PORT:-6655}:6655
environment:
- TZ=${TZ:-America/New_York}
- SERVER_URL=${SERVER_URL:-http://localhost:6655}
- FRUIT_HOST_PORT=${FRUIT_HOST_PORT:-6655}
- CC_SERVER=${CC_SERVER:-localhost}
- CC_PORT=${CC_PORT:-8080}
- CHANNELS_DVR_IP=${CHANNELS_DVR_IP:-}
- CHANNELS_SOURCE_NAME=${CHANNELS_SOURCE_NAME:-fruitdeeplinks}
- FRUIT_DB_PATH=${FRUIT_DB_PATH:-/app/data/fruit_events.db}
- OUT_DIR=${OUT_DIR:-/app/out}
- LOG_DIR=${LOG_DIR:-/app/logs}
- LOG_LEVEL=${LOG_LEVEL:-INFO}
- FRUIT_LANES=${FRUIT_LANES:-50}
- FRUIT_LANE_START_CH=${FRUIT_LANE_START_CH:-9000}
- FRUIT_DAYS_AHEAD=${FRUIT_DAYS_AHEAD:-7}
- FRUIT_PADDING_MINUTES=${FRUIT_PADDING_MINUTES:-45}
- FRUIT_PLACEHOLDER_BLOCK_MINUTES=${FRUIT_PLACEHOLDER_BLOCK_MINUTES:-60}
- FRUIT_PLACEHOLDER_EXTRA_DAYS=${FRUIT_PLACEHOLDER_EXTRA_DAYS:-5}
- CDVR_DVR_PATH=${CDVR_DVR_PATH:-}
- CDVR_SERVER_PORT=${CDVR_SERVER_PORT:-8089}
- CDVR_API_PORT=${CDVR_API_PORT:-57000}
- HEADLESS=${HEADLESS:-true}
- NO_NETWORK=${NO_NETWORK:-false}
- AUTO_REFRESH_ENABLED=${AUTO_REFRESH_ENABLED:-true}
- AUTO_REFRESH_TIME=${AUTO_REFRESH_TIME:-02:30}
volumes:
- ${HOST_DIR:-.}/FruitDeepLinks/data:/app/data
- ${HOST_DIR:-.}/FruitDeepLinks/out:/app/out
- ${HOST_DIR:-.}/FruitDeepLinks/logs:/app/logs
- ${CDVR_DVR_PATH:-/tmp/fruitdeeplinks-novol}:/mnt/dvr
restart: unless-stopped
logging:
driver: json-file
options:
max-size: 10m
max-file: 3
A recommended HOST_DIR value, which goes in the Environment variables section of the Portainer-Stacks Editor (it's not recommended to edit the compose directly -- use the special section just for defining overrides) would be /Users/<your mac username>.
If you switch to advanced mode in the Environment variables section, you can enter override values like this:
FRUIT_HOST_PORT=6655
TZ=US/Mountain
SERVER_URL=http://htpc6:6655
CC_SERVER=cc4c2
CC_PORT=5589
CHANNELS_DVR_IP=media-server8
CHANNELS_SOURCE_NAME=FruitDeepLinks
FRUIT_LANE_START_CH=14001
FRUIT_LANES=100
CDVR_DVR_PATH=
CDVR_SERVER_PORT=8089
CDVR_API_PORT=57000
AUTO_REFRESH_ENABLED=true
AUTO_REFRESH_TIME=02:30
HOST_DIR=/data