feat(seedbox): use dual NFS mounts (download + media) matching Proxmox

This commit is contained in:
2025-12-28 16:49:09 +00:00
parent 300a832e28
commit cca5501b01

View File

@@ -47,8 +47,13 @@ generate_password() {
# Configuration variables (can be overridden via environment) # Configuration variables (can be overridden via environment)
HOSTNAME="${SEEDBOX_HOSTNAME:-seedbox}" HOSTNAME="${SEEDBOX_HOSTNAME:-seedbox}"
NFS_SHARE="${NFS_SHARE:-/volume1/iso}" # NFS shares configuration
NFS_MOUNT="${NFS_MOUNT:-/mnt/iso}" NFS_SHARE_DOWNLOAD="${NFS_SHARE_DOWNLOAD:-/volume2/Downloads}"
NFS_SHARE_MEDIA="${NFS_SHARE_MEDIA:-/volume2/Multimédia}"
NFS_MOUNT_DOWNLOAD="${NFS_MOUNT_DOWNLOAD:-/mnt/download}"
NFS_MOUNT_MEDIA="${NFS_MOUNT_MEDIA:-/mnt/media}"
# NFS mount options (same as Proxmox)
NFS_OPTS="defaults,_netdev,nofail,x-systemd.automount,x-systemd.mount-timeout=30s"
PEER_PORT="${PEER_PORT:-51413}" PEER_PORT="${PEER_PORT:-51413}"
TIMEZONE="${TZ:-Europe/Paris}" TIMEZONE="${TZ:-Europe/Paris}"
TRANSMISSION_USER="${TRANSMISSION_USER:-admin}" TRANSMISSION_USER="${TRANSMISSION_USER:-admin}"
@@ -86,15 +91,22 @@ main() {
log_info "Adding current user to docker group..." log_info "Adding current user to docker group..."
sudo usermod -aG docker "$USER" sudo usermod -aG docker "$USER"
log_info "Configuring NFS mount: ${NFS_SERVER}:${NFS_SHARE} -> ${NFS_MOUNT}" log_info "Configuring NFS mounts..."
sudo mkdir -p "$NFS_MOUNT" sudo mkdir -p "$NFS_MOUNT_DOWNLOAD" "$NFS_MOUNT_MEDIA"
# Add to fstab if not already present # Add download share to fstab if not already present
if ! grep -q "${NFS_SERVER}:${NFS_SHARE}" /etc/fstab; then if ! grep -q "${NFS_SERVER}:${NFS_SHARE_DOWNLOAD}" /etc/fstab; then
echo "${NFS_SERVER}:${NFS_SHARE} ${NFS_MOUNT} nfs4 rw,soft,intr,timeo=150,retrans=3,_netdev 0 0" | sudo tee -a /etc/fstab > /dev/null log_info "Adding NFS mount: ${NFS_SERVER}:${NFS_SHARE_DOWNLOAD} -> ${NFS_MOUNT_DOWNLOAD}"
echo "${NFS_SERVER}:${NFS_SHARE_DOWNLOAD} ${NFS_MOUNT_DOWNLOAD} nfs ${NFS_OPTS} 0 0" | sudo tee -a /etc/fstab > /dev/null
fi fi
# Mount NFS # Add media share to fstab if not already present
if ! grep -q "${NFS_SERVER}:${NFS_SHARE_MEDIA}" /etc/fstab; then
log_info "Adding NFS mount: ${NFS_SERVER}:${NFS_SHARE_MEDIA} -> ${NFS_MOUNT_MEDIA}"
echo "${NFS_SERVER}:${NFS_SHARE_MEDIA} ${NFS_MOUNT_MEDIA} nfs ${NFS_OPTS} 0 0" | sudo tee -a /etc/fstab > /dev/null
fi
# Mount NFS shares
sudo mount -a || log_warn "NFS mount failed - ensure NAS is accessible via Tailscale" sudo mount -a || log_warn "NFS mount failed - ensure NAS is accessible via Tailscale"
log_info "Creating Transmission stack..." log_info "Creating Transmission stack..."
@@ -117,7 +129,10 @@ services:
- "${TS_IP}:9091:9091" - "${TS_IP}:9091:9091"
volumes: volumes:
- ./config:/config - ./config:/config
- ${NFS_MOUNT}:/downloads # Downloads: incomplete and complete torrents
- ${NFS_MOUNT_DOWNLOAD}:/downloads
# Media: final destination for completed ISOs and images
- ${NFS_MOUNT_MEDIA}:/media
environment: environment:
- PUID=1000 - PUID=1000
- PGID=1000 - PGID=1000
@@ -172,11 +187,12 @@ echo " • SSH : Tailscale only"
echo " • Seeding : Public port ${PEER_PORT}" echo " • Seeding : Public port ${PEER_PORT}"
echo "" echo ""
echo "Storage:" echo "Storage:"
echo " • NFS Mount : ${NFS_MOUNT}" echo " • Downloads : ${NFS_MOUNT_DOWNLOAD}"
echo " • Media : ${NFS_MOUNT_MEDIA}"
echo "" echo ""
echo "Useful commands:" echo "Useful commands:"
echo " cd ~/transmission && docker compose logs -f" echo " cd ~/transmission && docker compose logs -f"
echo " df -h ${NFS_MOUNT}" echo " df -h ${NFS_MOUNT_DOWNLOAD} ${NFS_MOUNT_MEDIA}"
echo "─────────────────────────────────────────" echo "─────────────────────────────────────────"
echo "" echo ""
MOTD MOTD
@@ -192,9 +208,13 @@ MOTD
echo " Username : ${TRANSMISSION_USER}" echo " Username : ${TRANSMISSION_USER}"
echo " Password : ${TRANSMISSION_PASS}" echo " Password : ${TRANSMISSION_PASS}"
echo "" echo ""
echo "Storage:" echo "Storage (NFS mounts):"
echo " NFS : ${NFS_SERVER}:${NFS_SHARE}" echo " Downloads : ${NFS_SERVER}:${NFS_SHARE_DOWNLOAD} -> ${NFS_MOUNT_DOWNLOAD}"
echo " Mount : ${NFS_MOUNT}" echo " Media : ${NFS_SERVER}:${NFS_SHARE_MEDIA} -> ${NFS_MOUNT_MEDIA}"
echo ""
echo "Transmission paths:"
echo " /downloads -> ${NFS_MOUNT_DOWNLOAD} (incomplete + complete torrents)"
echo " /media -> ${NFS_MOUNT_MEDIA} (final destination for ISOs)"
echo "" echo ""
echo "Peer port : ${PEER_PORT} (public)" echo "Peer port : ${PEER_PORT} (public)"
echo "" echo ""