• Apparati e reti
  • Aiuto per configurazione visibilità servizi home all'esterno della LAN

Buondì, sono riuscito recentemente a riciclare un vecchio portatile i3 Asus con 4 GB ram da usare come server domestico, ha circa 10 anni ma per gli scopi attuali sembra fare ancora bene la sua parte.

La sua configurazione è questa, non insultatemi troppo perchè è il primo esperimento di home server in assoluto da autodidatta 🤣

  • OS Linux Mint (non ho pensato all'inizio a mettere un gestore VM tipo Proxmox come OS base, quindi mi sono tenuto Mint)
  • 1 HDD esterno che uso per archivio dati/foto/film
  • 1 SSD esterno come backup in mirror
  • Jellyfin server per lo streaming dei film sui tv di casa
  • Portainer + Docker per gestione server Nextcloud

Fin qui funziona tutto bene a livello di LAN, però vorrei riuscire a far vedere Jellyfin e Nextcloud all'esterno per:

  • trasmettere i film del mio archivio sui televisori dei parenti
  • condividere una cartella file con altre persone conoscenti, ma esterne al nucleo famigliare, senza bisogno di andare su google drive

In futuro mi piacerebbe hostare un piccolo game server e un mini sito/forum per hobby, ma per ora le necessità principali sono le due elencate...se però si riesce già a predisporre per tutto è anche meglio 😁

Ho provato a farmi una cultura sulle VPN, IP pubblici, PF, DNS etc. ma sono rimasti diversi dubbi perchè le soluzioni proposte sono anche fin troppe; chiederei aiuto per capire alcuni dettagli ed evitare di aprire porte a caso sul campo minato di internet senza adeguate protezioni:

  • attualmente ho un contratto dimensione standard con ip privato: avere l'ip pubblico è l'unica strada percorribile per poter farsi trovare all'esterno oppure esistono alternative senza doverlo richiedere e/o usare servizi di instradamento DNS? (non so, connessione diretta tramite ipv6?)
  • il container per Nextcloud potrebbe già fungere da prima linea di difesa oppure è meglio abbinarci WireGuard o altri sistemi? Come si può impostare il tutto in modo efficace?
  • generalmente si abbina una VPN solo per gli accessi del proprietario (quindi solo full access alla LAN) oppure è possibile impostare limitazioni/permessi per utenti terzi e solo per l'utilizzo di Nextcloud, se montata dentro un container?

Thanks!

P.S: se c'è qualcosa di nuovo da apprendere non mi tiro indietro, ho un'infarinatura di reti e sistemi ma l'ho avuta più di 15 anni fa e da allora faccio tutt'altro nella vita; dovrei rifare un corso accelerato ma almeno non sono completamente digiuno. Se c'è anche da reimpostare tutto brasando il sistema operativo e resettando tutto per avere una gestione migliore e più sicura sono aperto a suggerimenti, tanto gli archivi sono già esterni.

    cicciput

    Giusto per ricapitolare: hai una macchia Linux con in esecuzione Docker Engine su cui girano tutti i tuoi container; questi container espongono tutti la loro porta via la directive "ports" che sbriga tutto il dramma di configurazione di iptables. Corretto? Tu accedi ai tuoi servizi in LAN come <<MACCHINA>>:<<SERVICE_PORT>>?

    cicciput connessione diretta tramite ipv6?

    Se entrambi gli host hanno connettività IPv6 si. Occhio che Docker ha sempre peccato sul supporto IPv6 (tantè che è disattivato di default), le cose si stanno muovendo adesso - specie con Docker Engine V27 - il grande problema rimasto è la documentazione risicata. Podman (drop-in replacemente per Docker di RedHat) e Kubernets (che però forse è overkill per quello che devi fare) hanno migliore supporto.

    Tolta ovviamente la possibilità la chiedere un IPv4 pubblico all'ISP puoi sempre utilizzare VPN con supporto al NAT-Traversal (eg. Tailscale) .

    cicciput potrebbe già fungere da prima linea di difesa oppure è meglio abbinarci WireGuard o altri sistemi? Come si può impostare il tutto in modo efficace?

    Non ho capito la domanda 👀, perdonami 😅.

    cicciput generalmente si abbina una VPN solo per gli accessi del proprietario (quindi solo full access alla LAN) oppure è possibile impostare limitazioni/permessi per utenti terzi e solo per l'utilizzo di Nextcloud, se montata dentro un container?

    Puoi fare come ti pare a seconda delle necessità. Non c'è una regola fissa.

      cicciput

      Mio parere di passaggio: per la massima comodità/compatibilità lato client io andrei di IPv4 pubblico, ovviamente sarà necessario prevedere opportuna configurazione lato sicurezza.

        Lorenzo1635 Giusto per ricapitolare: hai una macchia Linux con in esecuzione Docker Engine su cui girano tutti i tuoi container; questi container espongono tutti la loro porta via la directive "ports" che sbriga tutto il dramma di configurazione di iptables. Corretto? Tu accedi ai tuoi servizi in LAN come <<MACCHINA>>:<<SERVICE_PORT>>?

        Ni, ho una macchina Linux su cui gira Jellyfin fuori da container e un container che uso solo per Nextcloud, che ho installato giusto qualche giorno fa (magari è una stranezza, ma per ora è così 😅 per questo chiedevo se conviene impostare come OS base un gestore VM su cui successivamente far girare Linux con container separato per Nextcloud, ma per le mie necessità attuali mi sembra un po' eccessiva come soluzione). Jellyfin fa tutto in automatico, per Nextcloud onestamente non ho ancora provato lato client perchè ho solo provato ad impostare il server, ma dopo aver visto un po' di suggerimenti online su come farlo vedere all'esterno ho preferito smantellare temporaneamente il container e rifare da capo chiedendo aiuto qui 😁

        Lorenzo1635 Non ho capito la domanda 👀, perdonami 😅

        Vedevo su alcuni tutorial online che abbinano a Nextcloud su container anche WIreguard passandola come una "linea di difesa" per mascherare il resto del sistema da attacchi esterni, ma onestamente non ho ben capito il nesso tra VPN e programma in dock come difesa (e soprattutto se questa soluzione vale solo se io mi dovessi connettere dall'esterno alla cartella condivisa oppure se, con questo metodo, può connettersi anche altra gente); anzi, se non ho capito male, alcuni dicono che sia già sufficiente solo il dock per proteggere tutto l'archivio qualora qualcuno forasse l'istanza di Nextcloud containerizzata, ma probabilmente sbaglio io

        walt ovviamente sarà necessario prevedere opportuna configurazione lato sicurezza

        che è il mio cruccio 👀

        Un altro dubbio: ma se ora ho ip privato, vale solo per ipv4, giusto? se volessi fare una connessione diretta con ipv6 deve essere comunque settato tutto come pubblico oppure posso essere trovato anche come privato, se lo fornisco a chi deve accedere a Nextcloud? Ammesso che funzioni, leggendo quanto scrive oznoelr

          cicciput per questo chiedevo se conviene impostare come OS base un gestore VM su cui successivamente far girare Linux con container separato per Nextcloud, ma per le mie necessità attuali mi sembra un po' eccessiva come soluzione

          Concordo. Al massimo parti con Ubuntu Server pulito e fai girare tutto nei container. Non penso ti serva un hypervisor. Consiglio: crea un docker-compose a mano invece che usare Portainer. È comodo ma appena devi uscire dal seminato diventa molto più complesso il tutto.

          cicciput Vedevo su alcuni tutorial online che abbinano a Nextcloud su container anche WIreguard passandola come una "linea di difesa"

          "linea di difesa" nel senso che non ci accede più nessuno che non abbia la VPN. Idealmente - non è una soluzione pratica ovviamente - avresti lo stesso risultato facendo una whitelist con gli IP che si collegano.

          cicciput tutto l'archivio qualora qualcuno forasse l'istanza di Nextcloud containerizzata

          Occhio che solo perchè qualcosa gira in un container non è detto che sia inerentemente sicura o totalmente isolata dal resto del sistema. Attacchi - sebbene quelli sofisticati - sono comunque possibili.

          Esempio molto scarno di quello che potresti fare:

          • una rete interna con MariaDB e NextCloud
          • una rete interna con Jellyfin ed eventuale altro gestore libreria
          • una rete interna che fà comunicare Jellyfin e NextCloud con un reverse proxy
          • una rete bridge per dare connettività internet
          version: '3.7'
          
          networks:
            nextcloud_internal:
              internal: true
            jellyfin_internal:
              internal: true
            proxy_network:
              internal: true
            internet_bridge:
              driver: bridge
          
          services:
            nextcloud:
              image: nextcloud
              networks:
                - nextcloud_internal
                - proxy_network
                - internet_bridge
              depends_on:
                - mariadb
          
            mariadb:
              image: mariadb
              environment:
                MYSQL_ROOT_PASSWORD: example
                MYSQL_DATABASE: nextcloud
                MYSQL_USER: nextcloud
                MYSQL_PASSWORD: example
              networks:
                - nextcloud_internal
          
            jellyfin:
              image: jellyfin/jellyfin
              networks:
                - jellyfin_internal
                - proxy_network
                - internet_bridge
          
            caddy:
              image: caddy
              networks:
                - proxy_network
                - internet_bridge
              volumes:
                - ./Caddyfile:/etc/caddy/Caddyfile
              ports:
                - "80:80"
                - "443:443"
            • Modificato

            cicciput ma se ora ho ip privato, vale solo per ipv4, giusto?

            Sì in quanto per definizione in ambito IPv6 semplificando non è prevista la distinzione tra classi pubbliche e private.
            Ovviamente tutti i tuoi client devono nel caso avere disponibilità dello stack IPv6 il ché non è del tutto scontato.

            Lorenzo1635 Occhio che solo perchè qualcosa gira in un container non è detto che sia inerentemente sicura o totalmente isolata dal resto del sistema. Attacchi - sebbene quelli sofisticati - sono comunque possibili.

            Concordo: nel mio piccolo utilizzo i container Docker soltanto per comodità configurativa e gestionale.

              walt Concordo: nel mio piccolo utilizzo i container Docker soltanto per comodità configurativa e gestionale.

              C'è da dire comunque che uscire dal namespace del container non è così banale😅

              Lorenzo1635

              E lato sicurezza, per abilitare Nextcloud all'esterno dovrei implementare anche altro?
              Chiedo più che altro per il futuro (gaming server e server per forum/sito), per Nextcloud inizialmente avrei solo 4-5 persone che dovrebbero connettersi ad una cartella condivisa, ma temo di fare cappellate se apro le porte all'esterno senza configurare nulla nel caso ci fossero problemi di connessione diretta con IPV6

                cicciput ma temo di fare cappellate se apro le porte all'esterno

                Vabbè ma la sicurezza la deve garantire l'applicativo: sicuramente se esponi questo servizio avrai i vari bot che tentano di fare exploiting vari. L'importante che si acceda con username/password sicuri e Nextcloud sia aggiornato.

                Poi puoi fare tutto ciò che ritieni utile: metterci un reverse proxy davanti per centralizzare gestione HTTPS, rate limiting, fail2ban ecc...

                cicciput
                Per evitare di esporre servizi su internet con tutti i rischi che ne derivano, ti consiglio di dare uno sguardo a questo approccio:
                https://docs.zerotier.com/

                Informativa privacy - Informativa cookie - Termini e condizioni - Regolamento - Disclaimer - 🏳️‍🌈
                P.I. IT16712091004 - info@fibraclick.it

                ♻️ Il server di questo sito è alimentato al 100% con energia rinnovabile