Update peertube.md
This commit is contained in:
parent
de742d0537
commit
3928b36bce
278
peertube.md
278
peertube.md
@ -1,14 +1,208 @@
|
|||||||
# Desplegament de PeerTube en LXC no privilegiat amb NFS via Proxmox
|
# Desplegament de PeerTube en LXC no privilegiat amb NFS via Proxmox
|
||||||
|
|
||||||
## 1. Objectiu
|
## Objectiu
|
||||||
|
|
||||||
Aquest document descriu el desplegament d'un servidor PeerTube sobre un contenidor LXC no privilegiat en Proxmox.
|
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.
|
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.
|
> **Decisió tècnica:** no es munta NFS directament dins del contenidor perquè es vol mantenir el LXC com a no privilegiat.
|
||||||
|
|
||||||
## 2. Arquitectura
|
# 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
|
||||||
|
|
||||||
|
```text
|
||||||
|
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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh -L PORT_LOCAL:IP_DESTI:PORT_DESTI usuari@servidor_ssh
|
||||||
|
```
|
||||||
|
|
||||||
|
On:
|
||||||
|
|
||||||
|
```text
|
||||||
|
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í:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh -L 8006:127.0.0.1:8006 root@IP_PUBLICA_PROXMOX
|
||||||
|
```
|
||||||
|
|
||||||
|
Després, al navegador local obrim:
|
||||||
|
|
||||||
|
```text
|
||||||
|
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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh -L 8443:192.168.100.101:443 USER@IP_PUBLICA_PROXMOX
|
||||||
|
```
|
||||||
|
|
||||||
|
Després obrim al navegador:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://localhost:8443
|
||||||
|
```
|
||||||
|
|
||||||
|
En aquest cas:
|
||||||
|
|
||||||
|
```text
|
||||||
|
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`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh -L 9000:192.168.100.150:9000 USER@IP_PUBLICA_PROXMOX
|
||||||
|
```
|
||||||
|
|
||||||
|
Després obrim:
|
||||||
|
|
||||||
|
```text
|
||||||
|
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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh -L 2222:192.168.100.150:22 USER@IP_PUBLICA_PROXMOX
|
||||||
|
```
|
||||||
|
|
||||||
|
Després, en una altra terminal:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh -N -L 8443:192.168.100.101:443 USER@IP_PUBLICA_PROXMOX
|
||||||
|
```
|
||||||
|
|
||||||
|
Si també volem enviar-lo al background:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ps aux | grep ssh
|
||||||
|
```
|
||||||
|
|
||||||
|
Per veure ports locals escoltant:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ss -ltnp
|
||||||
|
```
|
||||||
|
|
||||||
|
Exemple de sortida esperada:
|
||||||
|
|
||||||
|
```console
|
||||||
|
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:
|
||||||
|
|
||||||
|
```text
|
||||||
|
CTRL + C
|
||||||
|
```
|
||||||
|
|
||||||
|
Si està en background, cal localitzar el procés:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ps aux | grep ssh
|
||||||
|
```
|
||||||
|
|
||||||
|
I matar-lo:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kill PID
|
||||||
|
```
|
||||||
|
|
||||||
|
Per exemple:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kill 12345
|
||||||
|
```
|
||||||
|
|
||||||
|
## 0.10 Recomanació d'ús
|
||||||
|
|
||||||
|
Per aquesta documentació utilitzarem túnels SSH per accedir temporalment a serveis interns com:
|
||||||
|
|
||||||
|
```text
|
||||||
|
- 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
|
||||||
|
|
||||||
```text
|
```text
|
||||||
TrueNAS
|
TrueNAS
|
||||||
@ -23,6 +217,73 @@ LXC no privilegiat
|
|||||||
│
|
│
|
||||||
▼
|
▼
|
||||||
Docker Compose + PeerTube
|
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
|
||||||
|
|
||||||
|
```text
|
||||||
|
Pool: AV
|
||||||
|
Dataset: PeerTube
|
||||||
|
Path: /mnt/AV/PeerTube
|
||||||
|
```
|
||||||
|
|
||||||
|
## Opcions del dataset
|
||||||
|
|
||||||
|
```text
|
||||||
|
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
|
||||||
|
|
||||||
|
```text
|
||||||
|
Path: /mnt/AV/PeerTube
|
||||||
|
Authorized host: IP_DEL_PROXMOX
|
||||||
|
```
|
||||||
|
|
||||||
|
## Prova de muntatge des de Proxmox
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p /mnt/truenas-peertube
|
||||||
|
mount -t nfs 192.168.100.101:/mnt/AV/PeerTube /mnt/truenas-peertube
|
||||||
|
```
|
||||||
|
|
||||||
|
## Comprovació
|
||||||
|
|
||||||
|
```bash
|
||||||
|
df -h | grep peertube
|
||||||
|
touch /mnt/truenas-peertube/prova-escriptura.txt
|
||||||
|
ls -lah /mnt/truenas-peertube
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 3. Convencions de documentació
|
## 3. Convencions de documentació
|
||||||
@ -82,7 +343,7 @@ localhost:8443 del teu ordinador
|
|||||||
Pas 6. Obre TrueNAS al navegador
|
Pas 6. Obre TrueNAS al navegador
|
||||||
Ara, al navegador del teu ordinador local, obre:
|
Ara, al navegador del teu ordinador local, obre:
|
||||||
https://localhost:8443
|
https://localhost:8443
|
||||||
Accepta l’avís de certificat si surt.
|
Accepta l'avís de certificat si surt.
|
||||||
Hauries de veure la pantalla de login de TrueNAS.
|
Hauries de veure la pantalla de login de TrueNAS.
|
||||||
|
|
||||||
|
|
||||||
@ -94,3 +355,12 @@ Hauries de veure la pantalla de login de TrueNAS.
|
|||||||
mount.nfs: Operation not permitted
|
mount.nfs: Operation not permitted
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user