BASE/peertube.md
2026-06-05 05:26:23 +02:00

7.3 KiB

Desplegament de PeerTube en LXC no privilegiat amb NFS via Proxmox

Objectiu

Aquest document descriu el desplegament d'un servidor PeerTube sobre un contenidor LXC no privilegiat dins d'un Proxmox.

L'emmagatzematge persistent dels vídeos es proporciona des d'un dataset de TrueNAS exportat per NFS. El muntatge NFS es realitza al host Proxmox i es presenta al contenidor mitjançant un bind mount.

Decisió tècnica: no es munta NFS directament dins del contenidor perquè es vol mantenir el LXC com a no privilegiat.

Punt zero: accés al laboratori amb túnels SSH

0. Objectiu

Abans de començar el desplegament de PeerTube, cal definir com accedirem als diferents serveis interns de la infraestructura.

En aquest escenari, el servidor Proxmox té accés públic per SSH, però alguns serveis interns només són accessibles des de la xarxa privada del laboratori. Per aquest motiu utilitzarem túnels SSH.

Els túnels SSH permeten obrir un port local al nostre ordinador i redirigir-lo cap a un servei remot que només és visible des del servidor al qual ens connectem.

0.1 Arquitectura d'accés

Ordinador local
  │
  │ SSH
  ▼
Host Proxmox amb IP pública
  │
  ├── accés a xarxa privada
  │
  ├── TrueNAS
  │
  ├── contenidors LXC
  │
  └── serveis web interns

Decisió tècnica: no exposarem directament tots els serveis interns a Internet. Accedirem a les interfícies d'administració mitjançant túnels SSH quan sigui necessari.

0.2 Túnel SSH simple

Un túnel local SSH segueix aquesta estructura:

ssh -L PORT_LOCAL:IP_DESTI:PORT_DESTI usuari@servidor_ssh

On:

PORT_LOCAL   → port que obrim al nostre ordinador
IP_DESTI     → IP vista des del servidor SSH
PORT_DESTI   → port real del servei intern
usuari       → usuari SSH
servidor_ssh → màquina pública a la qual sí que podem entrar

0.3 Exemple: accedir a la GUI de Proxmox

Si Proxmox escolta al port 8006, podem crear un túnel així:

ssh -L 8006:127.0.0.1:8006 root@IP_PUBLICA_PROXMOX

Després, al navegador local obrim:

https://localhost:8006

Nota: el navegador pot mostrar un avís de certificat perquè estem entrant per localhost però el certificat no està emès per aquest nom.

0.4 Exemple: accedir a TrueNAS des de fora

Si TrueNAS té la IP privada 192.168.100.101 i la seva interfície web escolta al port 443, podem fer:

ssh -L 8443:192.168.100.101:443 USER@IP_PUBLICA_PROXMOX

Després obrim al navegador:

https://localhost:8443

En aquest cas:

localhost:8443
  │
  ▼
SSH cap a Proxmox
  │
  ▼
192.168.100.101:443

0.5 Exemple: accedir a un servei web dins d'un LXC

Si el contenidor PeerTube té una IP privada, per exemple 192.168.100.150, i el servei web escolta al port 9000:

ssh -L 9000:192.168.100.150:9000 USER@IP_PUBLICA_PROXMOX

Després obrim:

http://localhost:9000

0.6 Exemple: accedir per SSH a un contenidor intern

Si el contenidor no té SSH exposat públicament, però és visible des del host Proxmox, podem fer un túnel cap al seu port 22:

ssh -L 2222:192.168.100.150:22 USER@IP_PUBLICA_PROXMOX

Després, en una altra terminal:

ssh admin@localhost -p 2222

Això equival a entrar per SSH al contenidor passant a través del host Proxmox.

0.7 Mantenir el túnel obert sense shell remota

Si només volem obrir el túnel però no volem quedar-nos dins d'una shell interactiva del servidor, podem afegir -N:

ssh -N -L 8443:192.168.100.101:443 USER@IP_PUBLICA_PROXMOX

Si també volem enviar-lo al background:

ssh -f -N -L 8443:192.168.100.101:443 USER@IP_PUBLICA_PROXMOX

Atenció: si s'envia el túnel al background amb -f, després pot ser menys evident recordar quin procés SSH l'està mantenint obert.

0.8 Veure túnels SSH actius

Per veure processos SSH oberts:

ps aux | grep ssh

Per veure ports locals escoltant:

ss -ltnp

Exemple de sortida esperada:

LISTEN 0 128 127.0.0.1:8443 0.0.0.0:* users:(("ssh",pid=12345,fd=5))

0.9 Tancar un túnel SSH

Si el túnel està obert en una terminal, es pot tancar amb:

CTRL + C

Si està en background, cal localitzar el procés:

ps aux | grep ssh

I matar-lo:

kill PID

Per exemple:

kill 12345

0.10 Recomanació d'ús

Per aquesta documentació utilitzarem túnels SSH per accedir temporalment a serveis interns com:

- interfície web de TrueNAS
- serveis web interns de contenidors LXC
- SSH cap a contenidors sense exposició pública

Aquesta estratègia redueix l'exposició directa de serveis administratius a Internet i permet treballar sobre la xarxa interna del laboratori amb més control.

Arquitectura

TrueNAS
  │
  │ NFS
  ▼
Host Proxmox
  │
  │ bind mount
  ▼
LXC no privilegiat
  │
  ▼
Docker Compose + PeerTube

# Dataset TrueNAS per a PeerTube

## Objectiu

Crear un dataset específic a TrueNAS per emmagatzemar les dades persistents de PeerTube i exportar-lo per NFS cap al host Proxmox.

## Arquitectura

```text
TrueNAS
  │
  │ export NFS
  ▼
Host Proxmox
  │
  │ bind mount
  ▼
LXC Ubuntu no privilegiat

Dataset creat

Pool: AV
Dataset: PeerTube
Path: /mnt/AV/PeerTube

Opcions del dataset

Compression: lz4
Atime: Off
Share type: Generic

Decisió tècnica: el muntatge NFS es farà al host Proxmox, no dins del contenidor LXC, per mantenir el contenidor com a no privilegiat.

Export NFS

Path: /mnt/AV/PeerTube
Authorized host: IP_DEL_PROXMOX

Prova de muntatge des de Proxmox

mkdir -p /mnt/truenas-peertube
mount -t nfs 192.168.100.101:/mnt/AV/PeerTube /mnt/truenas-peertube

Comprovació

df -h | grep peertube
touch /mnt/truenas-peertube/prova-escriptura.txt
ls -lah /mnt/truenas-peertube

## 3. Convencions de documentació

Les comandes executables es mostren en blocs `bash`:

```bash
apt update

Les sessions de terminal amb prompt i sortida es mostren en blocs console:

root@proxmox:~# pct list

Els fitxers de configuració es mostren amb el llenguatge corresponent:

services:
  peertube:
    image: chocobozzz/peertube

Els avisos i decisions tècniques es documenten amb cites destacades:

Atenció: aquest punt pot afectar la seguretat o el funcionament del servei.

túnels SSH cap a TrueNAS amb IP privada

  • IP pública del Proxmox VPS
  • IP privada de TrueNAS
  • usuari SSH del Proxmox ssh -L 8443:IP_PRIVADA_TRUENAS:443 root@IP_PUBLICA_DEL_PROXMOX ssh -L 8443:192.168.10.90:443 root@213.XXX.XXX.XXX

Si el teu SSH usa port diferent, per exemple 2222 : Bash ssh -p 2222 -L 8443:192.168.10.90:443 root@213.XXX.XXX.XXX Deixa aquesta sessió oberta. No la tanquis. Això vol dir: localhost:8443 del teu ordinador → túnel SSH → Proxmox → TrueNAS 192.168.10.90:443 Pas 6. Obre TrueNAS al navegador Ara, al navegador del teu ordinador local, obre: https://localhost:8443 Accepta l'avís de certificat si surt. Hauries de veure la pantalla de login de TrueNAS.

Incidència: el contenidor no pot muntar NFS directament

Símptoma

mount.nfs: Operation not permitted