De la Blogger la WordPress Self-Hosted: Ghid complet de migrare

Dacă mi-ar fi spus cineva acum câteva luni că o să renunț la liniștea și confortul de pe Blogger ca să-mi mut tot blogul pe propriul meu hardware de acasă, i-aș fi spus că are prea mult timp liber. Dar nah, când ești pasionat de self-hosting și Linux, nicio soluție “de-a gata” nu se compară cu sentimentul de a-ți rula propriul stack. Așa că iată povestea completă despre cum am trecut la un sistem WordPress Self-Hosted pe o infrastructură locală de producție.

De ce am migrat de pe Blogger pe WordPress Self-Hosted?

Blogger e excelent pentru simplitate — dai click, scrii, publici, zero bătăi de cap cu mentenanța. Dar pe măsură ce comunitatea a crescut și am vrut să bag interactivitate, widget-uri personalizate de sysadmin și control total pe baze de date, m-am lovit de zid. Simțeam că stau în chirie într-o garsonieră în care n-am voie să schimb nici măcar culoarea la zugrăveală. Decizia a fost clară: trecem la o platformă WordPress Self-Hosted pe propria infrastructură.

Infrastructura Hardware, Stocare & Securitatea pe 2 Firewall-uri

În loc să plătesc un VPS extern, am decis să folosesc resursele brute din propriul homelab pentru proiectul WordPress Self-Hosted. Serverul principal rulează pe o configurație puternică și eficientă:

  • Procesor & Memorie: Un monstru de calcul echipat cu AMD Ryzen 9 3950X (16 nuclee / 32 fire de execuție) și 64 GB RAM. În idle, tot sistemul consumă în jur de doar 20W, rulând rece pe Ubuntu Server.
  • Matricea de Stocare (Storage Array): Un array masiv format din 10x HDD Seagate de 500GB (5TB Array Total) dedicat pentru stocarea datelor, backup-uri, containere și volume persistente, combinat cu SSD-uri rapide pentru sistemul de operare și cache.
  • Cluster-ul Secundar de Redundanță (High Availability): Pentru o disponibilitate de 99.9%, am legat în rețea un Cluster de 8x Raspberry Pi (fiecare cu 8GB RAM). Acesta comunică non-stop cu serverul principal. Când Ryzen-ul este solicitat la maxim — cum ar fi când Immich face procesare AI/Machine Learning pe poze, când se rulează backup-urile programate sau când toată familia face streaming de filme 4K prin Jellyfin — traficul web al blogului este mutat automat și fluid pe cluster-ul de Raspberry Pi, astfel încât vizitatorii să nu simtă nicio întrerupere sau sacadare.

Pentru că expunerea unui server de acasă în internet poate fi riscantă, am configurat un sistem de Securitate în Cascadă cu două Firewall-uri (Dual-Firewall System):

  • Firewall-ul Perimetric (HW / Rețea): Prima linie de apărare la nivel de router (UFW + reguli stricte IP/tables și Cloudflare Tunnels). Toate porturile standard de inbound (80, 443) sunt închise complet spre exterior. Traficul trece exclusiv prin tunel criptat, mascând IP-ul real de acasă.
  • Firewall-ul de Aplicație (WAF): Al doilea strat care filtrează traficul la nivel de cod HTTP/HTTPS. Acesta scanează cererile în timp real pentru atacuri de tip SQL Injection, Cross-Site Scripting (XSS) și bots suspecți.

Stiva de Docker: Containerele din spatele serverului WordPress Self-Hosted

Blogul nu e izolat, ci face parte dintr-un ecosistem complet de servicii auto-găzduite în Docker, orchestrate impecabil:

A. Rețea, Routing & Securitate

  • Nginx Proxy Manager: Reverse proxy-ul principal cu interfață grafică. Direcționează domeniile către containerele potrivite și emite certificate SSL automate.
  • Traefik: Edge router secundar, folosit pentru descoperirea automată a containerelor noi și rutare dinamică prin etichete (labels).
  • HAProxy: Load balancer de înaltă performanță, responsabil de distribuirea traficului intensiv și failover automat între Ryzen și cluster-ul de Pi-uri.
  • Pi-hole: DNS sinkhole care blochează reclamele și trackerii la nivel de rețea întreagă.
  • AdGuard Home: Al doilea resolver DNS cu filtrare avansată, cenzură de malware și criptare DoH/DoT.

B. Management, Automatizare & CI/CD

  • Portainer: Dashboard-ul vizual din care controlez, repornesc și monitorizez starea tuturor containerelor Docker.
  • Ansible: Unealta de automatizare prin care aplic configurații, update-uri de securitate și scripturi pe server dintr-o singură comandă.
  • Jenkins: Serverul de CI/CD care automatizează testarea și deploy-ul de cod când fac modificări pe blog.
  • Python / Node Environments: Containere izolate pentru mediile de dezvoltare și scripturile de fundal.
  • BusyBox: Setul minimal de utilitare UNIX într-un container microscopic, util pentru sarcini rapide de mentenanță.

C. Productivitate, Date & Search

  • Vaultwarden: Managerul de parole personal (server lightweight compatibil Bitwarden), complet privat.
  • Linkwarden: Arhiva mea privată de bookmark-uri, resurse web și articole tehnice salvate offline.
  • SearXNG: Un metasearch engine privat care adună rezultate de pe multiple motoare de căutare fără să-mi urmărească datele.
  • Duplicati: Modulul automatizat de backup criptat care trimite copii ale bazei de date și fișierelor către stocări externe.

D. Media, Poze & Download

  • Jellyfin: Serverul media privat pentru streaming de filme și muzică pe toate dispozitivele din casă.
  • Immich: Alternativa self-hosted la Google Photos, pentru backup automat și organizare cu AI a fotografiilor de pe telefon.
  • qBittorrent (Seedbox): Client de torrenting izolat într-un mediu securizat pentru descărcare de imagini ISO și resurse.

E. Performanță, Event Streaming & Monitorizare

  • Redis: Bază de date in-memory folosită pentru Object Cache pe platforma WordPress Self-Hosted. Reduce numărul de interogări către SQL și face paginile să se încarce instant.
  • Kafka: Broker de mesaje pentru procesarea asincronă a fluxurilor mari de date și evenimente între servicii.
  • Logstash: Componenta din stack-ul ELK care colectează, filtrează și formatează jurnalele (logs) de pe tot serverul.
  • Prometheus: Baza de date de tip time-series care colectează metricile de consum (CPU, RAM, rețea, temperaturi).
  • Grafana: Dashboard-ul spectaculos în care vizualizez graficele și metricele trimise de Prometheus.
  • Zabbix-Server-MySQL: Sistemul industrial de monitorizare și alertare care mă anunță pe telefon dacă un serviciu a picat sau dacă spațiul pe disc scade periculos.

Probleme întâmpinate în timpul migrării pe server local

Nicio migrare serioasă nu scapă fără momente de depanare la 2 noaptea:

  • Permisiunile pe directoare (Chmod/Chown): WordPress nu mă lăsa să urc imagini pentru că fișierele aparțineau utilizatorului root din container. Am rezolvat rapid din terminal cu chown -R www-data:www-data /var/www/html/wp-content.
  • Limita de Upload (Eroarea 413 Payload Too Large): Nginx și PHP aveau limita implicită de 2MB per fișier. A trebuit să cresc parametrii în php.ini și să adaug client_max_body_size 50M; în Nginx Proxy Manager.
  • Diacriticele și UTF-8: Importul vechi din Blogger stricase diacriticele în articole. Am refăcut baza de date MariaDB folosind encoding-ul corect utf8mb4_unicode_ci. Vezi și istoricul proiectului pe pagina de Changelog.

Concluzie

Se merită efortul? Fără îndoială! Am control complet pe date, resurse masive pe Ryzen 3950X, redundanță pe cluster-ul de 8x Raspberry Pi, stocare din plin pe matricea de 5TB, securitate pe două straturi de firewall și satisfacția imensă de a avea un site WordPress Self-Hosted complet independent de platforme terțe.

☕ Ți-a fost de folos articolul?

Dacă ți-a plăcut ce ai citit sau te-a salvat din vreo problemă de Linux/IT, poți să-mi cinstești nopțile albe cu o cafea pe Revolut!

Lasă un comentariu

Your email address will not be published. Required fields are marked *