0) Prereqs (inside the LXC)
sudo apt update
sudo apt install -y cifs-utils
sudo mkdir -p /data/mediacentarr /data/multimedia
Make sure the credentials file exists and is locked down:
sudo chown root:root /etc/.smbcredentials_plex
sudo chmod 600 /etc/.smbcredentials_plex
1) Create one script that mounts both shares
Create /usr/local/sbin/mount-smb-shares.sh:
sudo nano /usr/local/sbin/mount-smb-shares.sh
Paste this:
#!/usr/bin/env bash
set -euo pipefail
SERVER_IP="172.25.6.21"
CREDS="/etc/.smbcredentials_plex"
# Common mount options (tweak if needed)
COMMON_OPTS="credentials=${CREDS},vers=3.1.1,iocharset=utf8,uid=plex,gid=plex"
# Shares to mount: "UNC|MOUNTPOINT"
SHARES=(
"//${SERVER_IP}/mediacentarr|/data/mediacentarr"
"//${SERVER_IP}/multimedia|/data/multimedia"
)
log() { echo "[mount-smb-shares] $*"; }
# Already mounted?
is_mounted() {
mountpoint -q "$1"
}
# Wait for server to be reachable (up to ~120s)
wait_for_server() {
log "Waiting for SMB server ${SERVER_IP} to be reachable..."
for i in {1..60}; do
if ping -c1 -W1 "${SERVER_IP}" >/dev/null 2>&1; then
log "Server reachable."
return 0
fi
sleep 2
done
log "ERROR: server not reachable after timeout."
return 1
}
mount_one() {
local unc="$1"
local mp="$2"
mkdir -p "$mp"
if is_mounted "$mp"; then
log "Already mounted: $mp"
return 0
fi
log "Mounting ${unc} -> ${mp}"
mount -t cifs "$unc" "$mp" -o "$COMMON_OPTS"
log "Mounted OK: $mp"
}
main() {
# If both are already mounted, exit cleanly
local all_mounted="yes"
for entry in "${SHARES[@]}"; do
IFS="|" read -r _unc mp <<< "$entry"
if ! is_mounted "$mp"; then
all_mounted="no"
break
fi
done
if [[ "$all_mounted" == "yes" ]]; then
log "All shares already mounted."
exit 0
fi
# Wait until SMB server is reachable, then mount missing ones
wait_for_server
for entry in "${SHARES[@]}"; do
IFS="|" read -r unc mp <<< "$entry"
mount_one "$unc" "$mp"
done
log "Done."
}
main "$@"
Make it executable:
sudo chmod 755 /usr/local/sbin/mount-smb-shares.sh
Quick manual test:
sudo /usr/local/sbin/mount-smb-shares.sh
mount | grep -E "mediacentarr|multimedia" || true
2) Create a single systemd service
Create /etc/systemd/system/smb-shares-mount.service:
sudo nano /etc/systemd/system/smb-shares-mount.service
Paste:
[Unit]
Description=Mount SMB shares (mediacentarr, multimedia) after server reachable
After=network.target
Wants=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/mount-smb-shares.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Enable it:
sudo systemctl daemon-reload
sudo systemctl enable --now smb-shares-mount.service
Check status/logs:
systemctl status smb-shares-mount.service --no-pager
journalctl -u smb-shares-mount.service -b --no-pager
3) (Recommended) Add a timer to retry if the server is down at boot
If the SMB server sometimes comes up later, add a timer that retries every minute.
Create /etc/systemd/system/smb-shares-mount.timer:
sudo nano /etc/systemd/system/smb-shares-mount.timer
Paste:
[Unit]
Description=Retry mounting SMB shares until available
[Timer]
OnBootSec=30
OnUnitActiveSec=60
Unit=smb-shares-mount.service
[Install]
WantedBy=timers.target
Enable the timer:
sudo systemctl daemon-reload
sudo systemctl enable --now smb-shares-mount.timer
systemctl list-timers | grep smb-shares || true
Because the script exits cleanly if both mountpoints are already mounted, the timer becomes “no-op” once everything is up.
4) Reboot test
sudo reboot
After reboot:
mount | grep -E "mediacentarr|multimedia" || true
ls /data/mediacentarr | head
ls /data/multimedia | head