오픈 소스 마케팅 자동화가 SaaS 벤더에게 데이터를 넘겨줘야 한다는 것을 의미하지는 않습니다. Mautic은 이메일 캠페인, 연락처 추적, 리드 육성(lead nurturing) 기능을 여러분의 자체 서버에서 관리할 수 있게 해줍니다. Ubuntu 24.04에서 실행하는 것은 HubSpot에 로그인하는 것보다 더 많은 노력이 필요하지만, 그 보상으로 스택, 비용, 고객 데이터에 대한 완전한 제어권을 얻을 수 있습니다. 업데이트 시기, 확장 방법, 정보 저장 위치를 직접 결정할 수 있습니다.

시작하기 전에, 도메인을 서버로 연결하고 Ubuntu 24.04 인스턴스에 최소 2GB의 RAM이 있는지 확인하십시오. Mautic은 가벼운 프로그램이 아닙니다. PHP는 대규모 세그먼트를 재구축하거나 캠페인 로직을 처리할 때 메모리를 많이 소비합니다. 수천 명의 연락처로 메일을 보낼 계획이라면 4GB를 확보하는 것이 훨씬 원활한 환경을 제공합니다.

LEMP 기반 구축하기

Mautic은 LEMP 스택(Nginx, MySQL, PHP)을 필요로 합니다. Ubuntu 24.04의 기본 PHP 버전은 8.3이며, 이는 현재 Mautic 릴리스와 잘 작동합니다. 먼저 패키지 목록을 업데이트한 다음, Nginx와 MySQL Server를 설치하십시오. 그 후, PHP-FPM과 Mautic에 필요한 정확한 확장 모듈들을 설치합니다.

  • php-fpm
  • php-mysql
  • php-imap
  • php-curl
  • php-gd
  • php-xml
  • php-mbstring
  • php-zip
  • php-intl
  • php-bcmath

각 확장 모듈은 고유한 역할을 수행합니다. IMAP 확장 모듈은 반송 메시지와 수신 거부 답장을 읽습니다. GD는 썸네일용 이미지 처리를 담당합니다. Mbstring과 Intl은 다양한 언어의 문자 집합과 번역을 관리합니다. BCMath는 리드 스코어링(lead scoring) 및 통화 계산을 위한 정밀한 수학 연산을 제공합니다. 이 중 하나라도 누락하면 설치 도중 오류가 발생할 수 있습니다.

만약 Apache가 이미 설치되어 있다면 제거하십시오. 두 웹 서버 모두 80번과 443번 포트를 사용하려고 합니다. 두 서버를 동시에 실행하면 디버깅하기 까다로운 조용한 오류가 발생할 수 있습니다. apt remove apache2를 실행한 후 apt autoremove를 수행하면 이러한 문제를 완전히 방지할 수 있습니다.

PHP 및 데이터베이스 최적화

Mautic의 설치 프로그램과 백그라운드 작업은 메모리 소모가 큽니다. /etc/php/8.3/fpm/php.ini에 위치한 PHP-FPM 설정 파일을 열고 memory_limit을 512MB로 높이십시오. 연락처 목록과 에셋 번들을 제한 없이 가져올 수 있도록 업로드 크기를 50MB로 설정하십시오. 저장 후에는 변경 사항을 적용하기 위해 PHP-FPM을 재시작합니다. 이때 post_max_size도 업로드 제한에 맞춰 늘려주십시오. 그렇지 않으면 upload_max_filesize가 올바르게 설정되어 있더라도 PHP가 대규모 멀티파트 폼 제출을 거부할 수 있습니다.

다음으로, 전용 MySQL 데이터베이스와 사용자를 생성하십시오. 데이터베이스 이름은 자유롭게 정하되, 사용자 이름과 비밀번호는 반드시 비밀번호 관리자에 저장해 두십시오. Mautic은 모든 연락처 작업, 캠페인 결정, 이메일 오픈 이벤트를 이 테이블들에 저장합니다. 따라서 단일 목적의 계정에 광범위한 권한을 부여하면, 서버의 다른 부분이 침해되었을 때 피해 범위를 제한할 수 있습니다.

Mautic 및 도구 설치

최신 안정 버전의 Mautic을 다운로드하여 /var/www/html/mautic에 압축을 풉니다. 웹 서버가 캐시 파일, 로그 및 로컬 설정 업데이트를 작성할 수 있도록 디렉토리 소유자를 www-data로 설정하십시오. Ubuntu에서는 chown -R www-data:www-data /var/www/html/mautic 명령어를 실행하면 됩니다.

서버에 Composer와 npm도 설치되어 있어야 합니다. Composer는 PHP 의존성을 해결하며, 미리 빌드된 릴리스 아카이브에서 배포하더라도 나중에 마켓플레이스 플러그인을 추가하거나 수동 업데이트를 실행할 때 필요합니다. 테마를 커스텀하거나 소스에서 프론트엔드 에셋을 빌드할 계획이라면 npm도 중요합니다. 이 두 도구를 미리 준비해 두면 프로젝트가 발전할 때 당황하지 않고 대처할 수 있습니다.

Nginx 설정 및 보안 강화

Nginx 가상 호스트(virtual host)의 루트 디렉토리는 /var/www/html/mautic을 가리켜야 하며, index.php를 기본 인덱스로 처리해야 합니다. PHP 요청은 일반적으로 /run/php/php8.3-fpm.sock에 위치한 PHP-FPM의 Unix 소켓으로 라우팅합니다. 견고한 서버 블록에는 프론트 컨트롤러로 폴백(fallback)하는 try_files 지시어와 점(.)으로 시작하는 숨김 파일에 대한 접근을 거부하는 location 블록이 포함되어야 합니다. Mautic에는 Apache용 .htaccess 파일이 포함되어 있지만 Nginx는 이를 무시하므로, 가상 호스트에 명시적인 거부 규칙을 설정하여 로그와 임시 디렉토리를 비공개로 유지하십시오.

웹 기반 설치 프로그램을 실행하기 전에 TLS 인증서를 확보하십시오. Certbot의 Nginx 플러그인을 사용하여 무료 Let’s Encrypt 인증서를 가져오고 HTTP 트래픽을 HTTPS로 자동 리다이렉트하십시오. Mautic은 로그인 자격 증명과 연락처 데이터를 다룹니다. 이를 평문(plain text)으로 전송하는 것은 결코 용납될 수 없습니다.

크론 잡(Cron Jobs)은 엔진입니다

이 단계는 타협할 수 없는 필수 과정입니다. 예약된 작업(scheduled tasks)이 없다면, Mautic은 아무것도 하지 않는 대시보드에 불과합니다. 애플리케이션은 캠페인 액션, 이메일 발송, 세그먼트 재계산을 데이터베이스에 큐(queue)로 쌓아두고, 이를 처리하기 위해 커맨드 라인에 의존합니다.

다음과 같은 백그라운드 작업을 처리할 수 있도록 Mautic 사용자를 위한 cron 작업을 설정하십시오:

  • 세그먼트 업데이트
  • 캠페인 실행
  • 이메일 발송
  • 바운스(bounces) 가져오기

실제로 이는 다양한 간격으로 Mautic의 콘솔 명령을 호출하는 것을 의미합니다. 세그먼트 재구축은 매시간 실행할 수 있습니다. 캠페인 트리거와 이메일 큐 처리는 일반적으로 볼륨에 따라 5분에서 15분 간격으로 더 짧은 주기가 필요합니다. IMAP을 통한 바운스 가져오기는 확인되지 않은 스팸 신고로 인해 발신자 평판(sender reputation)이 손상되지 않도록 충분히 정기적으로 실행되어야 합니다. syslog 또는 cron 출력을 모니터링하여 메모리 오류 없이 작업이 완료되는지 확인하십시오.

플랫폼 사용하기

설치가 완료되고 cron이 원활하게 작동하면 대시보드에 로그인하십시오. 인터페이스는 연락처(contacts), 세그먼트(segments), 캠페인(campaigns)이라는 세 가지 핵심 요소로 구성됩니다.

드래그 앤 드롭 방식의 캠페인 빌더를 사용하여 이메일 워크플로우를 설계하십시오. 새로운 구독자가 흐름에 진입하여 하루를 기다린 후 환영 메시지를 받고, 링크 클릭 여부에 따라 경로가 나뉩니다. 그동안 Points 시스템은 리드가 가격 페이지를 방문하거나 제품 공지사항을 열람할 때 조용히 점수를 부여합니다. 영업 전화가 필요한 '핫 리드(hot lead)'를 판별하는 임계값은 사용자가 직접 결정합니다.

세그먼트는 사용자가 정의한 규칙에 따라 연락처를 자동으로 그룹화합니다. 지난 30일 동안 캠페인을 열어본 모든 사람을 세그먼트로 나누거나, 특정 국가의 연락처만 분리할 수 있습니다. 랜딩 페이지에 있는 양식(Forms)은 이러한 세그먼트로 직접 데이터를 전달합니다. 이 요소들을 서로 연결하면 전체 리스트에 동일한 메시지를 뿌리는 대신, 사용자의 행동에 반응하는 자동화된 너처(nurture) 시퀀스를 구축할 수 있습니다.

배포 후의 진짜 작업

Ubuntu 24.04에 Mautic을 구축하는 것은 시작일 뿐입니다. 업데이트를 수행하기 전에는 항상 데이터베이스와 /var/www/html/mautic 디렉토리를 백업하십시오. 새로운 플러그인을 설치할 때는 PHP 에러 로그를 확인하십시오. 연락처 리스트 규모가 커지면 cron 출력을 테스트해야 합니다. 연락처가 1,000개일 때 몇 초 만에 끝나는 작업이 50,000개일 때는 타임아웃이 발생할 수 있기 때문입니다.

셀프 호스팅은 관리형 SaaS의 편리함을 포기하는 대신 마케팅 데이터에 대한 주권을 얻는 선택입니다. 벤더 종속(vendor lock-in)도 없고, 연락처 수에 따른 예상치 못한 가격 변동도 없으며, 제3자가 분석 데이터를 인질로 잡는 일도 없습니다. 서버와 데이터베이스, 그리고 고객과의 관계를 직접 소유하게 됩니다. Linux 서버와 몇 가지 cron 표현식을 관리할 의지가 있는 팀에게 이 선택은 대개 충분한 가치가 있습니다.