WordPress — HAOS Supervisor App (Local App)

192.168.219.137의 기존 MySQL 서버를 그대로 사용하는 구성입니다. 새 컨테이너로 DB를 따로 안 띄우고, 이미 있는 서버에 WordPress 전용 DB만 하나 추가합니다.

0. MySQL에 WordPress 전용 DB/계정 생성 (필수, 먼저 할 것)

homeassistant DB/계정을 재사용하지 말고, 반드시 아래처럼 WordPress 전용으로 새로 만드세요. 같은 스키마를 같이 쓰면 HA 자신의 recorder 테이블과 WordPress 테이블(wp_*)이 뒤섞여 충돌할 수 있습니다.

MySQL 서버(192.168.219.137)에 접속해서:

CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress'@'%' IDENTIFIED BY 'kmsrhk3844';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%';
FLUSH PRIVILEGES;
  • MySQL이 외부 접속을 허용하는지(bind-address127.0.0.1로 막혀있지 않은지) 확인
  • 방화벽에서 3306 포트가 HAOS 호스트로부터 허용되는지 확인
  • 위에서 만든 비밀번호를 config.yamlWORDPRESS_DB_PASSWORD에도 동일하게 넣어야 함 (지금은 플레이스홀더로 되어 있음)

1. 설치

  1. 이 폴더(wordpress/, config.yaml 포함)를 HAOS의 /addons/wordpress 경로에 복사
  2. Home Assistant → 설정 → 애드온 → App Store → ⋮ → Check for updates
  3. “Local apps”에 뜨는 WordPress 설치 → 시작

2. 권한(EACCES) 문제 — n8n 때와 동일하게 발생할 수 있음

WordPress 공식 이미지는 **www-data 사용자(uid 33)**로 동작합니다. n8n 때 uid 1000으로 chown 했던 것과 같은 이유로, /var/www/html에 매핑된 호스트 폴더도 처음엔 root 소유라 WordPress가 파일을 못 쓸 수도 있습니다.

# 실제 마운트 경로 확인
docker inspect addon_local_wordpress --format '{{ json .Mounts }}' | python3 -m json.tool

# Destination이 /var/www/html인 항목의 Source 경로를 확인 후
docker run --rm -v /mnt/data/supervisor/apps/data/local_wordpress:/target alpine chown -R 33:33 /target

앱을 처음 시작해서 로그에 Permission denied 계열 에러가 보이면 위 명령어로 해결하세요.

3. NPM(Nginx Proxy Manager) 설정

새 Proxy Host 생성:

항목
Domain Namesw-wordpress.duckdns.org
Schemehttp
Forward Hostname192.168.219.130 (HAOS 호스트 IP)
Forward Port8080
Websockets Support켜기
Force SSL / HTTP2켜기

Custom Nginx Configuration에 아래 한 줄 추가 권장 (WordPress가 HTTPS 뒤에 있음을 확실히 인식하게):

proxy_set_header X-Forwarded-Proto $scheme;

(config.yamlWORDPRESS_CONFIG_EXTRA에서 이미 이 헤더를 보고 HTTPS로 인식하도록 처리해뒀으므로, NPM이 이 헤더를 실제로 보내주기만 하면 됩니다.)

4. 접속 및 온보딩

  1. n8n 때처럼 도메인의 DNS/포트포워딩이 NPM으로 향하는지 확인
  2. https://w-wordpress.duckdns.org/ 접속
  3. WordPress 최초 설치 화면(사이트 제목, 관리자 계정 등)이 뜨면 정상

5. 버전 업그레이드

version:WORDPRESS_DB_HOST처럼 실제 이미지 태그(7.0-php8.3-apache 등)와 정확히 일치해야 합니다.
새 버전 나오면 Docker Hub 태그 목록에서 확인 후 config.yamlversion 값을 바꾸고 Rebuild하세요.

참고: 왜 PostgreSQL(TimescaleDB)이 아니라 MySQL을 쓰는지

WordPress 코어는 MySQL/MariaDB 전용으로 설계되어 있고, PostgreSQL 지원은 비공식·비추천 플러그인에 의존합니다. 이미 갖고 계신 두 DB 중 MySQL(192.168.219.137)이 WordPress에 정석적으로 맞는 선택입니다. HA 자신의 TimescaleDB는 그대로 HA 전용으로 남겨두세요.