Tailscale - Rețeaua ta privată, oriunde în lume

Cuprins

Tailscale - Rețeaua ta privată, oriunde în lume

Tutorial complet: de la zero la self-hosting securizat.

1. Ce este Tailscale?

Imaginează-ți că ai mai multe dispozitive - un calculator acasă, un laptop la serviciu, un telefon mobil și un server acasă. Toate aceste dispozitive sunt conectate la internet, dar fiecare are adresa sa proprie, se află în rețele diferite și, în mod normal, nu pot „vorbi„ direct între ele fără trucuri complicate.

Tailscale rezolvă exact această problemă. El creează o rețea privată virtuală (VPN) mesh între toate dispozitivele tale, indiferent unde se află pe glob. Odată instalat, calculatorul tău de acasă și laptopul de la serviciu se comportă ca și cum ar fi conectate la același router, la aceeași rețea locală.

Explicat pentru un copil:

Gândește-te la Tailscale ca la un tunel magic. Dacă tu ești în camera ta și fratele tău e în altă cameră, poți să-i dai o jucărie printr-un tunel care trece prin perete - fără să ieși afară. Tailscale face exact asta pentru calculatoare: le conectează printr-un tunel secret, chiar dacă sunt în orașe diferite sau țări diferite.

1.1 De ce Tailscale și nu alt VPN?

Există multe soluții VPN tradiționale (OpenVPN, WireGuard manual, Cisco), dar toate au un mare dezavantaj: necesită un server central prin care trece tot traficul. Asta înseamnă latență mai mare și un singur punct de eșec.

Tailscale este diferit - el folosește o arhitectură numită mesh VPN. Asta înseamnă că dispozitivele tale se conectează direct între ele (peer-to-peer), fără să treacă printr-un server intermediar. Tailscale folosește WireGuard ca protocol de transport - unul dintre cele mai rapide și sigure protocoale VPN existente.

Caracteristică VPN tradițional Tailscale
Configurare Complexă, ore de muncă Simplu, 5 minute
Arhitectură Centralizată (un server central) Mesh (direct între dispozitive)
Protocol OpenVPN, IPSec etc. WireGuard (modern, rapid)
NAT traversal Necesită port forwarding Automat, fără config router
Autentificare Certificate manuale Google, GitHub, Email (OAuth)
Plan gratuit De obicei nu Da - 1 user, 100 dispozitive

1.2 Cum funcționează (tehnic)

Tailscale folosește un server de coordonare (control plane) care rulează pe serverele Tailscale. Acesta nu vede traficul tău - el doar ajută dispozitivele să se găsească și să schimbe cheile criptografice. Odată ce dispozitivele se cunosc, traficul curge direct între ele, criptat cu WireGuard.

Fiecare dispozitiv primește o adresă IP din blocul 100.64.0.0/10 (CGNAT space). Aceste adrese sunt unice în rețeaua ta Tailscale (numită tailnet) și nu se schimbă niciodată - chiar dacă dispozitivul e la un alt ISP sau în altă țară.

Securitate: Toate conexiunile sunt criptate end-to-end cu WireGuard. Nici măcar serverele Tailscale nu pot vedea traficul dintre dispozitivele tale. Cheile criptografice sunt generate local pe fiecare dispozitiv și nu sunt trimise niciodată la Tailscale.

2. Creare cont pe Tailscale

Primul pas este să îți creezi un cont pe site-ul Tailscale. Procesul este simplu și nu necesită un card de credit pentru planul gratuit.

2.1 Înregistrare

  1. Mergi la https://tailscale.com și apasă butonul Get started sau Sign up
  2. Alege un provider de autentificare. Tailscale nu are parole proprii - folosești un cont existent:
    • Google - recomandat dacă ai cont Google
    • GitHub - recomandat pentru utilizatorii tehnici
    • Microsoft - pentru conturi Microsoft / Azure AD
    • Apple - pentru utilizatorii de macOS / iOS
    • Email magic link - dacă nu vrei să folosești niciun provider de mai sus
  3. Autorizează Tailscale să acceseze informațiile minime necesare din contul ales
  4. Ești redirecționat automat la admin console: https://login.tailscale.com/admin
Ce plan să alegi?
  • Personal (gratuit): 1 utilizator, până la 100 dispozitive, subrețele, MagicDNS, exit nodes. Mai mult decât suficient pentru self-hosting personal.
  • Plus ($6/lună): suport pentru utilizatori multipli cu permisiuni granulare.
  • Business ($18/user/lună): pentru echipe și companii.

2.2 Interfața admin console

Odată autentificat, vei vedea panoul de control Tailscale. Cele mai importante secțiuni:

  • Machines - lista tuturor dispozitivelor conectate la tailnet
  • DNS - configurarea MagicDNS și a serverelor DNS personalizate
  • Access Controls - regulile ACL care controlează cine accesează ce
  • Settings - setări generale ale tailnet-ului
  • Auth Keys - chei de autentificare pentru automatizare (Docker, servere)

3. Instalare Tailscale

Tailscale are clienți pentru practic orice sistem de operare. O să acoperim cele mai importante platforme.

3.1 Linux (Ubuntu, Debian, Linux Mint)

Instalarea pe sistemele bazate pe Debian/Ubuntu este simplă și se face printr-un script oficial sau manual prin apt. Ambele metode sunt sigure.

Metoda 1: Script oficial (recomandat)

Cel mai simplu mod este să folosești scriptul de instalare furnizat de Tailscale:

curl -fsSL https://tailscale.com/install.sh | sh
Atenție la scripturi din internet!

Înainte să rulezi orice script de pe internet, este bună practică să îl verifici întâi. Poți face asta cu:

curl -fsSL https://tailscale.com/install.sh | less

Scriptul oficial Tailscale adaugă repository-ul APT și instalează pachetul - nimic mai mult.

Metoda 2: Manual cu APT

Dacă preferi mai mult control sau dacă scriptul automat nu funcționează, poți instala manual:

# Pasul 1: Adaugă cheia GPG a Tailscale
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg \
  | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
 
# Pasul 2: Adaugă repository-ul APT
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list \
  | sudo tee /etc/apt/sources.list.d/tailscale.list
 
# Pasul 3: Actualizează lista de pachete și instalează
sudo apt update && sudo apt install tailscale
Distribuții și repository-uri - înlocuiește noble cu versiunea ta:
Distribuție Cod versiune
Ubuntu 24.04 (Noble) noble
Ubuntu 22.04 (Jammy) jammy
Ubuntu 20.04 (Focal) focal
Debian 12 (Bookworm) bookworm
Linux Mint 22 (bazat pe Noble) noble

Pentru alte distribuții (Fedora, Arch, openSUSE): https://tailscale.com/download/linux

Pornirea și autentificarea

După instalare, serviciul Tailscale trebuie pornit și autentificat cu contul tău:

# Pornește Tailscale și autentifică-te
sudo tailscale up
 
# Sau cu opțiuni avansate (recomandate pentru servere):
sudo tailscale up --advertise-tags=tag:server --ssh

La rularea comenzii vei primi un URL de forma https://login.tailscale.com/a/XXXX. Deschide-l în browser, loghează-te cu contul tău Tailscale, și dispozitivul va fi adăugat automat în rețeaua ta.

Verificare instalare

# Verifică statusul
tailscale status
 
# Află adresa ta IP în rețeaua Tailscale
tailscale ip -4
 
# Ping un alt dispozitiv Tailscale
tailscale ping nume-dispozitiv

3.2 Windows

  1. Descarcă installerul (.exe) și rulează-l
  2. Tailscale va apărea în system tray (bara de notificări, lângă ceas)
  3. Click pe iconița Tailscale → Log in
  4. Se deschide browserul - autentifică-te cu contul tău
  5. Dispozitivul apare automat în admin console

3.3 macOS

  1. Instalare prin App Store: caută „Tailscale“ sau mergi la https://tailscale.com/download/mac
  2. Alternativ, cu Homebrew: brew install –cask tailscale
  3. Deschide aplicația și loghează-te

3.4 Android

  1. Caută Tailscale în Google Play Store sau F-Droid
  2. Instalează aplicația, deschide-o și apasă Sign in
  3. Activează VPN-ul din aplicație

3.5 iOS

  1. Caută Tailscale în App Store
  2. Instalează și deschide aplicația
  3. Apasă Sign in și autentifică-te
  4. iOS va cere permisiunea de a adăuga o configurație VPN - acceptă

3.6 Instalare pe server (non-interactiv cu Auth Key)

Când configurezi un server la distanță sau un container Docker, nu poți deschide un browser pentru autentificare. Pentru aceasta folosești un Auth Key generat din admin console.

Generare Auth Key

  1. Apasă Generate auth key
  2. Setează opțiunile:
    • Reusable - permite folosirea cheii pentru mai multe dispozitive
    • Expiry - data la care cheia expiră (1 oră până la 90 zile)
    • Ephemeral - dispozitivele se șterg automat când se deconectează (util pentru containere)
    • Pre-authorized - dispozitivele sunt aprobate automat fără confirmare manuală
  3. Copiază cheia generată (o vezi o singură dată!)
# Autentificare non-interactivă cu Auth Key
sudo tailscale up --authkey=tskey-auth-XXXXX
 
# Cu opțiuni suplimentare
sudo tailscale up \
  --authkey=tskey-auth-XXXXX \
  --hostname=server-nuc \
  --advertise-tags=tag:server

4. Configurare pe admin console

Admin console (https://login.tailscale.com/admin) este locul unde controlezi tot ce ține de rețeaua ta Tailscale. Hai să explorăm fiecare secțiune importantă.

4.1 Machines - Gestionarea dispozitivelor

Secțiunea Machines îți arată toate dispozitivele conectate. Pentru fiecare dispozitiv poți vedea și configura:

  • Adresa IP Tailscale (ex: 100.64.x.x) - permanentă, nu se schimbă niciodată
  • MagicDNS hostname - un nume de genul laptop.tail12345.ts.net
  • OS și versiunea clientului Tailscale
  • Ultima conexiune
  • Subroute-urile anunțate

Din meniul cu trei puncte al fiecărui dispozitiv poți:

  • Dezactiva / activa temporar un dispozitiv
  • Redenumi dispozitivul
  • Aproba subrețele (subnet routes)
  • Șterge dispozitivul din rețea

4.2 DNS - MagicDNS

Una dintre cele mai utile funcții din Tailscale este MagicDNS. În loc să memorezi adrese IP de genul 100.64.23.45, poți accesa dispozitivele tale folosind nume ca server-nuc sau laptop-mint.

Activare MagicDNS

  1. Mergi la secțiunea DNS din admin console
  2. Activează butonul Enable MagicDNS
  3. Gata! Acum toate dispozitivele tale au un hostname DNS automat

Formatul numelui DNS este: hostname.tailnet-name.ts.net. De exemplu, dacă tailnet-ul tău se numește „tail12345„ și dispozitivul se numește „server-nuc“, poți accesa https://server-nuc.tail12345.ts.net.

DNS Override

Poți adăuga și servere DNS personalizate pentru întregul tailnet. De exemplu, poți seta Quad9 (9.9.9.9) sau AdGuard DNS (94.140.14.14) ca server DNS implicit pentru toate dispozitivele tale conectate la Tailscale.

Secțiunea NameserversAdd nameserver → introdu IP-ul serverului DNS dorit.

Dacă activezi opțiunea Override local DNS, toate dispozitivele vor folosi serverul DNS specificat, ignorând cel setat local.

4.3 Access Controls (ACL-uri)

ACL-urile (Access Control Lists) controlează cine poate accesa ce în rețeaua ta. Implicit, Tailscale permite tuturor dispozitivelor să se conecteze la orice alt dispozitiv - ceea ce e perfect pentru uz personal.

Configurarea ACL se face printr-un fișier JSON/HuJSON în secțiunea Access Controls din admin console.

Configurare implicită (permite totul)

{
  "acls": [
    {
      "action": "accept",
      "src": ["*"],
      "dst": ["*:*"]
    }
  ]
}

ACL cu tag-uri (recomandat pentru servere)

Tag-urile îți permit să grupezi dispozitivele și să definești reguli clare. De exemplu: device-urile cu tag-ul server pot fi accesate doar de device-urile tale personale.

{
  "tagOwners": {
    "tag:server": ["autogroup:owner"],
    "tag:client": ["autogroup:owner"]
  },
  "acls": [
    {
      "action": "accept",
      "src": ["tag:client"],
      "dst": ["tag:server:*"]
    },
    {
      "action": "accept",
      "src": ["autogroup:owner"],
      "dst": ["*:*"]
    }
  ]
}

Activare tag pe un dispozitiv

# La pornirea Tailscale, specifică tag-urile
sudo tailscale up --advertise-tags=tag:server
 
# Sau din linia de comandă (fără restart)
sudo tailscale set --advertise-tags=tag:server

4.4 Subnet Routes (Subrețele)

Subnet routes îți permit să expui întreaga rețea locală printr-un singur dispozitiv Tailscale. De exemplu, dacă serverul tău de acasă are Tailscale instalat și anunță subrețeaua 192.168.1.0/24, vei putea accesa orice dispozitiv din rețeaua ta de acasă (inclusiv routerul, NAS-ul, televizorul smart) de pe orice dispozitiv Tailscale - chiar dacă acel dispozitiv nu are Tailscale instalat.

Configurare subnet route pe server

# Anunță subrețeaua locală (înlocuiește cu IP-ul rețelei tale)
sudo tailscale up --advertise-routes=192.168.1.0/24
 
# Activează IP forwarding (necesar pentru subnet routes)
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

Aprobare subnet în admin console

  1. Mergi la secțiunea Machines din admin console
  2. Găsește dispozitivul care anunță subnet-ul
  3. Meniu cu trei puncte → Edit route settings
  4. Activează subrețeaua dorită
Subnet routes sunt extrem de utile dacă ai un router sau NAS care nu poate rula Tailscale. Instalezi Tailscale pe un Raspberry Pi sau pe un server din rețeaua ta, iar acela devine „gateway„ pentru întreaga rețea.

4.5 Exit Nodes

Un exit node este un dispozitiv Tailscale prin care poți ruta TOT traficul tău internet. Dacă ești la o cafenea cu Wi-Fi nesigur și activezi serverul tău de acasă ca exit node, tot traficul tău va trece prin conexiunea ta de acasă - ca un VPN tradițional.

Configurare exit node

# Pe dispozitivul care va fi exit node (serverul de acasă)
sudo tailscale up --advertise-exit-node
 
# Activare IP forwarding (necesar)
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

Aprobare și utilizare exit node

  1. Aprobă exit node-ul din admin console (MachinesEdit route settingsUse as exit node)
  2. Pe dispozitivul client, activează exit node-ul:
# Pe Linux
sudo tailscale up --exit-node=server-nuc
 
# Dezactivare exit node
sudo tailscale up --exit-node=

Pe Windows / macOS / mobile: meniul Tailscale → Use exit node → selectează dispozitivul.

4.6 Tailscale SSH

Tailscale SSH este o funcție care îți permite să te conectezi prin SSH la dispozitivele tale fără să gestionezi chei SSH și fără să deschizi portul 22. Autentificarea se face prin identitatea Tailscale.

# Activează Tailscale SSH pe server
sudo tailscale up --ssh
 
# Conectare de pe orice dispozitiv Tailscale
ssh user@server-nuc
 
# Sau folosind adresa Tailscale
ssh user@100.64.x.x
Cu Tailscale SSH activat, poți dezactiva complet SSH tradițional (portul 22) din firewall. Conexiunile SSH prin Tailscale sunt deja criptate de WireGuard și autentificate prin identitatea Tailscale.

5. HTTPS automat pentru servicii self-hosted

Una dintre cele mai impresionante funcții ale Tailscale este posibilitatea de a obține certificate HTTPS valide pentru serviciile tale self-hosted - fără să deții un domeniu propriu, fără Nginx, fără Certbot, fără configurații complicate.

5.1 Cum funcționează

Tailscale colaborează cu Let's Encrypt pentru a emite certificate TLS valide pentru hostname-urile tale MagicDNS. De exemplu, poți obține un certificat valid pentru server-nuc.tail12345.ts.net. Certificatele sunt emise automat și reînnoite fără nicio intervenție din partea ta.

De ce HTTPS contează pentru self-hosting

Fără HTTPS, browserele moderne afișează avertizări de securitate și blochează unele funcții (notificări push, clipboard, cameră web). Aplicații precum Vaultwarden (managerul de parole) necesită HTTPS pentru a funcționa corect, deoarece extensia de browser nu se conectează la site-uri HTTP.

5.2 Emitere certificat

Înainte de a obține un certificat, asigură-te că MagicDNS este activat (secțiunea 4.2).

# Obține certificatul pentru dispozitivul curent
sudo tailscale cert server-nuc.tail12345.ts.net
 
# Sau mai simplu, Tailscale detectează automat hostname-ul
sudo tailscale cert $(tailscale status --json | jq -r .Self.DNSName | sed 's/\.$//')
 
# Certificatele sunt salvate în:
# /var/lib/tailscale/certs/server-nuc.tail12345.ts.net.crt
# /var/lib/tailscale/certs/server-nuc.tail12345.ts.net.key

5.3 Configurare Nginx cu certificat Tailscale

Odată ce ai certificatul, poți configura Nginx ca reverse proxy cu HTTPS pentru serviciile tale:

# /etc/nginx/conf.d/vaultwarden.conf
server {
    listen 443 ssl;
    server_name server-nuc.tail12345.ts.net;
 
    ssl_certificate /var/lib/tailscale/certs/server-nuc.tail12345.ts.net.crt;
    ssl_certificate_key /var/lib/tailscale/certs/server-nuc.tail12345.ts.net.key;
 
    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
 
server {
    listen 80;
    server_name server-nuc.tail12345.ts.net;
    return 301 https://$host$request_uri;
}

5.4 Tailscale Serve - reverse proxy built-in

Tailscale are și un reverse proxy integrat, numit Tailscale Serve, care nu necesită Nginx sau Apache. Poți expune un serviciu local direct prin HTTPS cu o singură comandă:

# Expune serviciul de pe portul 8080 prin HTTPS
tailscale serve https / http://localhost:8080
 
# Verifică ce servezi
tailscale serve status
# Rezultat: https://server-nuc.tail12345.ts.net/ proxied from http://localhost:8080
Tailscale Funnel (acces public)

Tailscale Funnel este o extensie a Serve care face serviciul tău accesibil de pe internet, nu doar din rețeaua Tailscale. Util pentru teste sau webhook-uri temporare:

tailscale funnel https / http://localhost:8080

ATENȚIE: Funnel face serviciul tău public! Folosiți cu grijă și doar temporar.

6. Configurare pentru servicii self-hosted

Acum că știm cum funcționează Tailscale, hai să vedem cum îl integrăm cu servicii concrete self-hosted. Vom folosi ca exemple Vaultwarden (manager de parole) și Paperless-ngx (gestionare documente), dar principiile se aplică pentru orice serviciu.

6.1 Scenariul tipic

Ai un server acasă (un Intel NUC, un Raspberry Pi, un PC vechi) care rulează mai multe servicii în Docker. Vrei să accesezi aceste servicii de pe telefon sau de pe laptopul de la serviciu, dar fără să expui porturile pe internet.

Soluția cu Tailscale este elegantă: instalezi Tailscale pe server, iar serviciile rulează în continuare pe localhost - accesibile doar prin rețeaua Tailscale.

6.2 Instalare Tailscale pe serverul Docker

# Pe serverul Ubuntu/Debian
curl -fsSL https://tailscale.com/install.sh | sh
 
# Pornire cu opțiunile recomandate pentru server
sudo tailscale up \
  --hostname=server-nuc \
  --advertise-tags=tag:server \
  --ssh
 
# Verifică că e conectat
tailscale status

6.3 Exemplu: Vaultwarden cu HTTPS

Vaultwarden este un server compatibil Bitwarden, scris în Rust. Este ușor, rapid și perfect pentru self-hosting. Necesită HTTPS pentru a funcționa cu extensia de browser.

docker-compose.yml pentru Vaultwarden

# /opt/services/vaultwarden/docker-compose.yml
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: https://server-nuc.tail12345.ts.net
      WEBSOCKET_ENABLED: "true"
      SIGNUPS_ALLOWED: "false"   # dezactivează înregistrările noi
    volumes:
      - ./data:/data
    ports:
      - "127.0.0.1:8082:80"     # accesibil DOAR pe localhost!
      - "127.0.0.1:3012:3012"   # WebSocket

Obținere certificat și configurare Nginx

# Obține certificatul Tailscale
sudo tailscale cert server-nuc.tail12345.ts.net
 
# Creează configurația Nginx
sudo nano /etc/nginx/conf.d/vaultwarden.conf
# Conținut /etc/nginx/conf.d/vaultwarden.conf
server {
    listen 443 ssl http2;
    server_name server-nuc.tail12345.ts.net;
 
    ssl_certificate /var/lib/tailscale/certs/server-nuc.tail12345.ts.net.crt;
    ssl_certificate_key /var/lib/tailscale/certs/server-nuc.tail12345.ts.net.key;
    ssl_protocols TLSv1.2 TLSv1.3;
 
    # Vaultwarden principal
    location / {
        proxy_pass http://127.0.0.1:8082;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
 
    # WebSocket pentru notificări în timp real
    location /notifications/hub {
        proxy_pass http://127.0.0.1:3012;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
 
server {
    listen 80;
    server_name server-nuc.tail12345.ts.net;
    return 301 https://$host$request_uri;
}
# Testează configurația și reîncarcă Nginx
sudo nginx -t && sudo systemctl reload nginx

6.4 Exemplu: Servicii multiple cu porturi diferite

Dacă ai mai multe servicii (Paperless, FreshRSS, Linkding etc.), poți fie să le expui pe subdomenii diferite (necesită configurații DNS suplimentare), fie să le accesezi direct pe portul specific prin Tailscale.

Acces direct prin port (simplu, fără Nginx)

# Serviciile sunt legate pe toate interfețele sau pe interfața Tailscale
 
# În docker-compose, schimbă binding-ul:
# ÎN LOC DE: "127.0.0.1:8080:80"  (doar localhost)
# FOLOSEȘTE: "100.64.x.x:8080:80"  (doar pe IP-ul Tailscale)
 
# Sau lasă portul deschis pe toate interfețele și restricționează cu firewall:
# "0.0.0.0:8080:80"
 
# Adaugă reguli UFW pentru a permite acces DOAR din rețeaua Tailscale
sudo ufw allow in on tailscale0 to any port 8080
sudo ufw allow in on tailscale0 to any port 9090
sudo ufw allow in on tailscale0 to any port 6500
 
# Blochează accesul de pe alte interfețe
sudo ufw deny 8080
sudo ufw deny 9090
sudo ufw deny 6500

Acces cu Tailscale Serve (fără Nginx)

# Paperless pe portul 8000
tailscale serve https:8000 / http://localhost:8000
 
# FreshRSS pe portul 8080
tailscale serve https:8080 / http://localhost:8080
 
# Verifică toate serviciile configurate
tailscale serve status

6.5 Reînnoire automată a certificatelor

Certificatele Tailscale expiră la 90 de zile. Poți automatiza reînnoirea cu un cronjob sau un systemd timer:

# Adaugă în crontab (rulează în fiecare zi la 3 AM)
sudo crontab -e
 
# Adaugă linia:
0 3 * * * tailscale cert server-nuc.tail12345.ts.net && systemctl reload nginx

Un script mai robust care verifică dacă certificatul expiră în mai puțin de 30 de zile:

#!/bin/bash
CERT=/var/lib/tailscale/certs/server-nuc.tail12345.ts.net.crt
DOMAIN=server-nuc.tail12345.ts.net
DAYS=$(( ($(openssl x509 -noout -enddate -in $CERT \
  | cut -d= -f2 | date -f - +%s) - $(date +%s)) / 86400 ))
if [ $DAYS -lt 30 ]; then
    tailscale cert $DOMAIN && systemctl reload nginx
fi

7. Configurări avansate

7.1 Tailscale în Docker (sidecar pattern)

O abordare elegantă pentru containerizare este să rulezi Tailscale ca sidecar - un container separat care gestionează rețeaua pentru întregul stack Docker.

# docker-compose.yml cu Tailscale ca sidecar
services:
  tailscale:
    image: tailscale/tailscale:latest
    container_name: tailscale
    hostname: server-nuc
    environment:
      TS_AUTHKEY: tskey-auth-XXXXX
      TS_STATE_DIR: /var/lib/tailscale
      TS_SERVE_CONFIG: /config/serve.json
    volumes:
      - tailscale-state:/var/lib/tailscale
      - ./tailscale-config:/config
      - /dev/net/tun:/dev/net/tun
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    restart: unless-stopped

  vaultwarden:
    image: vaultwarden/server:latest
    network_mode: service:tailscale   # folosește rețeaua containerului Tailscale
    volumes:
      - ./vw-data:/data
    depends_on:
      - tailscale

volumes:
  tailscale-state:

7.2 Gestionarea dispozitivelor cu Taildrop

Taildrop este funcția de transfer de fișiere din Tailscale - similar cu AirDrop de la Apple, dar cross-platform și fără fir. Poți trimite fișiere direct între dispozitivele tale fără niciun server intermediar.

# Trimite un fișier pe alt dispozitiv Tailscale
tailscale file cp document.pdf laptop-mint:
 
# Trimite mai multe fișiere
tailscale file cp *.jpg server-nuc:
 
# Primește fișierele pe destinatar
tailscale file get ~/Downloads/

7.3 Key expiry - managementul cheilor

Implicit, cheile de autentificare ale dispozitivelor expiră la 180 de zile. Asta înseamnă că la fiecare 6 luni trebuie să re-autentifici fiecare dispozitiv. Pentru servere, asta poate fi inconvenient.

Poți dezactiva expirarea cheilor pentru dispozitive specifice:

  1. Mergi la Machines în admin console
  2. Click pe meniul cu trei puncte al dispozitivului
  3. Selectează Disable key expiry
Securitate vs Conveniență

Dezactivarea expirării cheilor este comodă pentru servere, dar reduce securitatea. Un compromis echilibrat: activează expirarea pentru dispozitive mobile/laptopuri și dezactiveaz-o pentru serverele din rețeaua ta de acasă pe care le controlezi fizic.

7.4 Comenzi utile tailscale CLI

# Status detaliat al rețelei
tailscale status --json | jq
 
# Vizualizează adresa IP Tailscale
tailscale ip
 
# Test latență și calitate conexiune
tailscale ping --until-direct server-nuc
 
# Informații debug
tailscale debug derp-map
 
# Deconectare temporară (fără a șterge configurația)
sudo tailscale down
 
# Reconectare
sudo tailscale up
 
# Actualizare la ultima versiune
sudo tailscale update
 
# Logout (șterge autentificarea)
sudo tailscale logout

8. Troubleshooting - rezolvarea problemelor comune

8.1 Dispozitivul nu apare în admin console

  • Verifică dacă Tailscale rulează: systemctl status tailscaled
  • Verifică dacă ai finalizat autentificarea în browser
  • Verifică conexiunea la internet
  • Rulează sudo tailscale up –reset pentru a reseta configurația

8.2 Nu pot accesa un serviciu prin Tailscale

  • Verifică IP-ul Tailscale al serverului: tailscale ip -4
  • Testează conectivitatea: tailscale ping server-nuc
  • Verifică că serviciul ascultă pe portul corect: netstat -tlnp sau ss -tlnp
  • Verifică dacă portul este permis în firewall: sudo ufw status
  • Verifică ACL-urile din admin console - poate o regulă blochează accesul

8.3 Conexiunea este lentă

Dacă conexiunea merge prin relay (DERP servers) în loc să fie directă, poate fi mai lentă:

# Verifică dacă conexiunea e directă sau prin relay
tailscale ping --until-direct server-nuc
 
# Dacă scrie "via DERP"  → conexiunea nu e directă
# Dacă scrie "direct"    → conexiunea e optimă

Conexiunile prin DERP apar când routerul blochează conexiunile directe UDP. Soluții:

  • Activează UPnP pe router
  • Adaugă o regulă de port forwarding pentru UDP pe portul 41641 (cel implicit)
  • Pe server, activează: sudo tailscale up –advertise-exit-node –stateful-filtering=false

8.4 Certificatul HTTPS nu este valid

# Verifică data expirării certificatului
openssl x509 -noout -dates \
  -in /var/lib/tailscale/certs/server-nuc.tail12345.ts.net.crt
 
# Reînnoire manuală
sudo tailscale cert server-nuc.tail12345.ts.net
 
# Reîncarcă Nginx după reînnoire
sudo systemctl reload nginx

9. Rezumat și pași următori

Ce ai învățat Detaliu
Creare cont Gratuit, autentificare prin Google/GitHub, plan personal suficient pentru self-hosting
Instalare Linux curl -fsSL https://tailscale.com/install.sh | sh + sudo tailscale up
MagicDNS Hostname-uri automate de forma dispozitiv.tailnet.ts.net
ACL-uri Control granular al accesului cu tag-uri
Subnet routes Acces la întreaga rețea locală fără Tailscale pe fiecare dispozitiv
HTTPS automat Certificat valid Let's Encrypt cu sudo tailscale cert
Exit node Transformă orice server într-un VPN tradițional
Tailscale SSH SSH securizat fără chei și fără portul 22 expus

Resurse utile