🌐 CMS & Hosting

Guida: Creare una Web App con WordPress e Database su NAS QNAP

⚡ In Sintesi (TL;DR Tecnico per Developer & AI)
  • Obiettivo Infrastrutturale: Deployment di WordPress self-hosted con database relazionale MariaDB/MySQL su storage locale NAS QNAP (QTS).
  • Stack & Requisiti: Web Server integrato QTS, Container Station o MariaDB Server nativo, phpMyAdmin per gestione schema e interprete PHP 8+.
  • Best Practice di Produzione: Utente database a privilegi minimi con password crittograficamente forte, backup automatici dello snapshot LUN e reverse proxy protetto per l'accesso esterno.

Questa guida ti mostra come installare e configurare WordPress utilizzando un database MySQL/MariaDB ospitato su una NAS QNAP. Perfetta per portare il tuo sito o web app su un'infrastruttura locale, sicura e scalabile.


Requisiti


1. Installazione del Database su QNAP

1.1 Utilizza il QNAP App Center

  1. Apri il QTS (interfaccia web della NAS).
  2. Vai su App Center.
  3. Cerca e installa:
    • MariaDB (consigliato) oppure MySQL Server
    • phpMyAdmin per la gestione del database

1.2 Configura il Database

  1. Apri phpMyAdmin.
  2. Accedi con le credenziali di root o utente amministrativo.
  3. Crea un nuovo database (esempio: wordpressdb).
  4. Crea un utente dedicato e assegna permessi al database.

2. Scarica e Prepara WordPress

  1. Vai su wordpress.org e scarica l'ultima versione.
  2. Estrai la cartella wordpress sul tuo computer.
  3. Modifica il file wp-config-sample.php:
    // Sostituisci i valori secondo la tua configurazione
    define('DB_NAME', 'wordpressdb');
    define('DB_USER', 'tuo_utente_db');
    define('DB_PASSWORD', 'tua_password_db');
    define('DB_HOST', 'ip_della_nas:3306');
  4. Salva come wp-config.php.

3. Carica WordPress sulla NAS QNAP

3.1 Opzione: Web Server Integrato (QNAP)

  1. Dal QTS, vai su App Center > Web Server (o QApache, QWeb).
  2. Attiva il server web e PHP.
  3. Copia la cartella wordpress nella directory pubblica, di solito /Web o /Qweb.

3.2 Opzione: Container Station (Docker)

  1. Installa Container Station dal QNAP App Center.
  2. Esegui un container WordPress e collega il database MariaDB/MySQL (puoi usare immagini ufficiali da Docker Hub).
  3. Configura le variabili d'ambiente del container per collegare WordPress al database ospitato sulla NAS.

4. Installazione di WordPress

  1. Accedi dal browser:
    • Se locale: http://<ip_nas>/wordpress
    • Se pubblico: http://<dominio>/wordpress
  2. Segui la procedura guidata di installazione di WordPress.

5. Consigli di Sicurezza


6. Troubleshooting

🏛️ Infrastruttura Server Avanzata: Per un'architettura completa 24/7 con storage resiliente ReFS, auto-healing dei dati e container Docker su hypervisor, scopri il progetto di produzione HP Fortress Homelab.

Confronto: Docker Container vs Pacchetto QTS Nativo

Caratteristica Container Docker (Container Station) Pacchetto Nativo QTS (App Center)
Isolamento Risorse: Totale: filesystem isolato, limiti CPU/RAM configurabili Basso: eseguito direttamente sull'OS del NAS
Ciclo di Vita & Aggiornamenti: Immediato con docker-compose pull alle ultime versioni Dipendente dal rilascio del vendor nel repository QTS
Portabilità & Backup: Elevatissima: volume persistente e file YAML replicabili Complessa: configurazioni legate al database interno del NAS
Impatto Overhead RAM: Ottimizzato: runtime container snello (~150-250 MB) Medio-alto: servizi Apache/PHP di sistema condivisi

🚀 Lo Stack Docker Compose di Produzione: WordPress, MariaDB & Redis Cache

Sebbene l'installazione nativa tramite l'App Center di QTS sia un ottimo punto di partenza didattico, negli ambienti moderni e negli homelab avanzati lo standard de facto consiste nell'orchestrazione tramite Docker Compose (eseguito su QNAP Container Station o via CLI SSH).

1. Architettura e File docker-compose.yml Completo

Questo stack separa nettamente il motore dell'applicazione, il database relazionale MariaDB e la cache volatile in-memory con Redis, garantendo prestazioni elevate e riavvii isolati:

services:
  mariadb:
    image: mariadb:10.11-jammy
    container_name: wp_mariadb
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      MYSQL_DATABASE: wordpress_db
      MYSQL_USER: wp_admin
      MYSQL_PASSWORD: ${DB_PASSWORD}
    volumes:
      - /share/CACHEDEV1_DATA/Container/wordpress/db_data:/var/lib/mysql
    networks:
      - wp_internal

  redis:
    image: redis:7-alpine
    container_name: wp_redis
    restart: unless-stopped
    command: redis-server --maxmemory 256mb --maxmemory-policy allkeys-lru
    networks:
      - wp_internal

  wordpress:
    image: wordpress:6.7-php8.3-apache
    container_name: wp_app
    restart: unless-stopped
    depends_on:
      - mariadb
      - redis
    ports:
      - "8088:80"
    environment:
      WORDPRESS_DB_HOST: mariadb:3306
      WORDPRESS_DB_NAME: wordpress_db
      WORDPRESS_DB_USER: wp_admin
      WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
      WORDPRESS_CONFIG_EXTRA: |
        define('WP_REDIS_HOST', 'redis');
        define('WP_REDIS_PORT', 6379);
        define('WP_CACHE', true);
        define('DISALLOW_FILE_EDIT', true);
    volumes:
      - /share/CACHEDEV1_DATA/Container/wordpress/wp_data:/var/www/html
    networks:
      - wp_internal

networks:
  wp_internal:
    internal: true

2. Strategia di Snapshot e Backup 3-2-1 su Storage ReFS/ZFS

🛡️ Resilienza Homelab a Prova di Guasto
  • Snapshot Automatiche: Configura su QNAP Storage & Snapshots uno snapshot point giornaliero del pool CACHEDEV1_DATA alle ore 03:00 con retention di 14 giorni.
  • Dump SQL Coerente: Prima dello snapshot, programma un cron job con docker exec wp_mariadb mariadb-dump -u wp_admin -p$DB_PASSWORD wordpress_db > dump.sql per evitare corruzioni di tabelle in lock.
  • Offsite Mirroring: Replica i backup compressi su un cloud bucket cifrato (es. Azure Blob o Wasabi) via QNAP HBS 3 (Hybrid Backup Sync).

Se desideri affiancare al tuo backend WordPress un frontend headless statico ultra-veloce o automatizzare i deploy, consulta la nostra guida completa alla creazione di siti web statici moderni con CI/CD e Cloudflare.

Risorse Utili


Hai bisogno di aiuto su un passaggio specifico? Scrivimi!

❓ Domande Frequenti (FAQ Tecniche)

Risposte sintetiche ai dubbi architetturali e operativi più frequenti su questo argomento.

Quali vantaggi offre Docker rispetto all'applicazione nativa QTS di WordPress?

L'isolamento a container permette di gestire più istanze indipendenti con versioni separate di PHP e MariaDB, garantisce portabilità dei volumi e previene conflitti con il sistema operativo del NAS QNAP.

Come garantire la persistenza dei dati e dei file multimediali caricati?

Mappando volumi persistenti su percorsi RAID del NAS (es. /share/Container/wordpress_data) per il database MariaDB e la cartella wp-content.

Come gestire i certificati SSL per l'accesso HTTPS su NAS locale?

Configurando un Reverse Proxy (come Nginx Proxy Manager o Traefik) con rinnovo automatico certificati Let's Encrypt o tramite Cloudflare Tunnel con crittografia end-to-end.