docs(seedbox): update for dual NFS mounts and storage architecture

This commit is contained in:
2025-12-28 16:49:48 +00:00
parent cca5501b01
commit 9b5942a0e4

View File

@@ -1,17 +1,17 @@
# Seedbox Server # Seedbox Server
Deploys a seedbox with Transmission for maintaining Linux ISO mirrors. Deploys a seedbox with Transmission for maintaining Linux ISO mirrors and OS images.
## Quick Start ## Quick Start
```bash ```bash
NFS_SERVER=nas.tailnet.ts.net curl -fsSL https://gitea.arnodo.fr/Damien/infra-scripts/raw/branch/main/seedbox/install.sh | bash NFS_SERVER=nas curl -fsSL https://gitea.arnodo.fr/Damien/infra-scripts/raw/branch/main/seedbox/install.sh | bash
``` ```
## Components ## Components
- **Transmission**: BitTorrent client with WebUI - **Transmission**: BitTorrent client with WebUI
- **NFS v4.1**: Mount to NAS for ISO storage - **NFS**: Dual mount to NAS for downloads and media storage
- **Tailscale**: Private access to WebUI - **Tailscale**: Private access to WebUI
- **Docker**: Container runtime - **Docker**: Container runtime
- **UFW**: Firewall (only peer port exposed publicly) - **UFW**: Firewall (only peer port exposed publicly)
@@ -22,8 +22,10 @@ NFS_SERVER=nas.tailnet.ts.net curl -fsSL https://gitea.arnodo.fr/Damien/infra-sc
| Variable | Default | Description | | Variable | Default | Description |
|----------|---------|-------------| |----------|---------|-------------|
| `NFS_SERVER` | *required* | NAS hostname/IP (Tailscale) | | `NFS_SERVER` | *required* | NAS hostname/IP (Tailscale) |
| `NFS_SHARE` | `/volume1/iso` | NFS export path on NAS | | `NFS_SHARE_DOWNLOAD` | `/volume2/Downloads` | NFS export for downloads |
| `NFS_MOUNT` | `/mnt/iso` | Local mount point | | `NFS_SHARE_MEDIA` | `/volume2/Multimédia` | NFS export for media/ISOs |
| `NFS_MOUNT_DOWNLOAD` | `/mnt/download` | Local mount for downloads |
| `NFS_MOUNT_MEDIA` | `/mnt/media` | Local mount for media |
| `SEEDBOX_HOSTNAME` | `seedbox` | Server hostname | | `SEEDBOX_HOSTNAME` | `seedbox` | Server hostname |
| `PEER_PORT` | `51413` | BitTorrent peer port | | `PEER_PORT` | `51413` | BitTorrent peer port |
| `TRANSMISSION_USER` | `admin` | WebUI username | | `TRANSMISSION_USER` | `admin` | WebUI username |
@@ -33,10 +35,10 @@ NFS_SERVER=nas.tailnet.ts.net curl -fsSL https://gitea.arnodo.fr/Damien/infra-sc
Example with custom settings: Example with custom settings:
```bash ```bash
NFS_SERVER=nas.tailnet.ts.net \ NFS_SERVER=nas \
NFS_SHARE=/volume1/linux-iso \ NFS_SHARE_DOWNLOAD=/volume1/torrents \
NFS_SHARE_MEDIA=/volume1/iso \
TRANSMISSION_USER=damien \ TRANSMISSION_USER=damien \
TRANSMISSION_PASS=mysecurepass \
curl -fsSL https://gitea.arnodo.fr/Damien/infra-scripts/raw/branch/main/seedbox/install.sh | bash curl -fsSL https://gitea.arnodo.fr/Damien/infra-scripts/raw/branch/main/seedbox/install.sh | bash
``` ```
@@ -49,14 +51,41 @@ curl -fsSL https://gitea.arnodo.fr/Damien/infra-scripts/raw/branch/main/seedbox/
| SSH | ❌ | ✅ Tailscale SSH | | SSH | ❌ | ✅ Tailscale SSH |
| NFS (to NAS) | ❌ | ✅ | | NFS (to NAS) | ❌ | ✅ |
## Storage Architecture
```
NAS (via Tailscale) Seedbox LXC (70GB)
┌─────────────────────┐ ┌─────────────────────┐
│ /volume2/Downloads │◄──── NFS ────►│ /mnt/download │
│ (incomplete + temp) │ │ └► /downloads │
├─────────────────────┤ │ (in container) │
│ /volume2/Multimédia │◄──── NFS ────►│ /mnt/media │
│ (ISOs, VMDK, QCOW) │ │ └► /media │
└─────────────────────┘ │ (in container) │
└─────────────────────┘
```
### Transmission Paths
| Container Path | Host Path | NAS Path | Purpose |
|----------------|-----------|----------|---------|
| `/downloads` | `/mnt/download` | `/volume2/Downloads` | Incomplete + completed torrents |
| `/media` | `/mnt/media` | `/volume2/Multimédia` | Final ISOs, VMDK, QCOW images |
### Recommended Workflow
1. Torrents download to `/downloads` (on NAS via NFS)
2. Once complete, move ISOs to `/media/iso/<distro>/`
3. Proxmox mounts the same NAS share for VM templates
## What it does ## What it does
1. Sets hostname 1. Sets hostname
2. Installs base packages (vim, fail2ban, unattended-upgrades, nfs-common, at) 2. Installs base packages (vim, fail2ban, unattended-upgrades, nfs-common, at)
3. Installs and connects Tailscale 3. Installs and connects Tailscale
4. Installs Docker 4. Installs Docker
5. Configures NFS mount to NAS (via Tailscale) 5. Configures dual NFS mounts to NAS (same as Proxmox)
6. Deploys Transmission container 6. Deploys Transmission container with both mounts
7. Configures UFW (peer port public, WebUI via Tailscale only) 7. Configures UFW (peer port public, WebUI via Tailscale only)
8. Temporarily opens SSH port 22 for 5 minutes (safety net) 8. Temporarily opens SSH port 22 for 5 minutes (safety net)
@@ -77,30 +106,32 @@ sudo ufw delete allow 22/tcp
## Directory Structure ## Directory Structure
Organize your downloads by distribution: Organize your media by type:
``` ```
/mnt/iso/ /mnt/media/
├── debian/ ├── iso/
│ ├── debian-12.7.0-amd64-netinst.iso │ ├── debian/
│ └── debian-11.11.0-amd64-netinst.iso │ └── debian-12.7.0-amd64-netinst.iso
├── ubuntu/ ├── ubuntu/
── ubuntu-24.04.1-live-server-amd64.iso │ └── ubuntu-24.04.1-live-server-amd64.iso
── ubuntu-22.04.5-live-server-amd64.iso ── rhel/
├── rhel/ │ │ └── rocky-9.4-x86_64-minimal.iso
── rocky-9.4-x86_64-minimal.iso ── proxmox/
└── almalinux-9.4-x86_64-minimal.iso └── proxmox-ve_8.2-1.iso
── proxmox/ ── vmdk/
└── proxmox-ve_8.2-1.iso └── windows-server-2022.vmdk
└── qcow/
└── cloud-init-debian-12.qcow2
``` ```
## NAS Configuration (Synology) ## NAS Configuration (Synology)
Ensure your NAS exports the share via NFS v4.1: Ensure your NAS exports both shares via NFS:
1. Control Panel → Shared Folder → Edit → NFS Permissions 1. Control Panel → Shared Folder → Edit → NFS Permissions
2. Add rule: 2. For each share (`Downloads` and `Multimédia`), add rule:
- Hostname/IP: Tailscale IP of seedbox (e.g., `100.x.x.x`) - Hostname/IP: `*` or Tailscale IP of seedbox (e.g., `100.x.x.x`)
- Privilege: Read/Write - Privilege: Read/Write
- Squash: No mapping - Squash: No mapping
- Security: sys - Security: sys
@@ -109,12 +140,15 @@ Ensure your NAS exports the share via NFS v4.1:
## Post-install ## Post-install
```bash ```bash
# Check NFS mount # Check NFS mounts
df -h /mnt/iso df -h /mnt/download /mnt/media
# View Transmission logs # View Transmission logs
cd ~/transmission && docker compose logs -f cd ~/transmission && docker compose logs -f
# Restart Transmission # Restart Transmission
cd ~/transmission && docker compose restart cd ~/transmission && docker compose restart
# Move completed ISO to final location
mv /mnt/download/debian-12.iso /mnt/media/iso/debian/
``` ```