Linux 서버에 Ghost를 자체 호스팅하고 설치하는 방법

Linux 서버에 Ghost를 자체 호스팅하고 설치하는 방법

Ghost는 블로그와 뉴스레터 서비스를 쉽게 만들 수 있는 오픈 소스 콘텐츠 관리 프로그램입니다. CMS를 사용하기 위해 Ghost(Pro) 서비스에 가입하거나, 기술적으로 더 관심이 있는 경우 서버에서 자체 호스팅하도록 선택할 수 있습니다. 여기에서는 후자인 Linux 서버의 자체 호스트 Ghost를 보여줍니다.

서버에서 Ghost를 자체 호스팅해야 하는 이유

Ghost 블로그 의 장점 중 하나는 바로 사용할 수 있는 기능이 가득한 통합 플랫폼을 제공한다는 것입니다. 여기에는 분석 추적, 게시물 수익 창출, 구독자를 위한 자동 뉴스레터 생성 기능이 포함됩니다.

Ghost 대시보드의 스크린샷.

서버에 Ghost를 설치하면 제3자에게 데이터 관리를 의뢰하지 않고도 게시자가 될 수 있습니다. 논쟁의 여지가 있는 주제에 대해 비판적인 기사를 게재하는 저널리스트라면 이 방법이 도움이 될 수 있습니다.

마지막으로, Ghost는 기술적인 지식이 없는 사용자라도 배포 및 유지 관리가 쉽습니다. 기존 CMS 플랫폼과 달리 Ghost는 호스팅 시스템에 “설정하고 잊어버릴” 수 있는 올인원 솔루션을 제공합니다.

서버에 Ghost 설치하기

가정 : 시작하기 전에 이미 사용 가능한 Linux 서버와 Ghost 설치를 호스팅할 도메인 이름이 있다고 가정합니다. Linux 서버를 임대해야 하는 경우 DigitalOcean 또는 Linode를 권장합니다 .

Docker를 사용할 것이기 때문에 먼저 서버에 Docker를 설치해야 합니다.

1. Docker 프로젝트의 저장소 공개 키를 설치합니다.

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

2. 컴퓨터의 apt config 디렉터리에 새 저장소 파일을 만듭니다.

sudo nano /etc/apt/sources.list.d/docker.list

3. 새 저장소 파일 안에 다음 코드 줄을 붙여넣습니다.

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable

4. 시스템의 저장소 목록을 새로 고치고 시스템의 기존 바이너리를 업그레이드합니다.

sudo apt updatesudo apt upgrade

5. Docker 및 Docker Compose를 해당 종속성과 함께 설치합니다.

sudo apt install wget docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin

6. Docker 그룹에 사용자 추가

sudo usermod -aG docker $USER

7. 시작 시 실행되도록 Docker 서비스를 설정합니다.

sudo systemctl enable docker.service

8. 서버를 재부팅합니다.

sudo reboot

SMTP 전달을 위한 Gmail 설정

Ghost에는 자체 이메일 전달 클라이언트가 제공되지 않으므로 이메일 전달을 위해 Gmail에 연결해야 합니다.

1. 웹 브라우저를 열고 Ghost 인스턴스에 연결하려는 Gmail 계정에 로그인하십시오.

2. 계정의 프로필 아이콘을 클릭한 다음 ‘Google 계정 관리’를 클릭하세요.

3. “보안” 카테고리를 선택한 다음 “Google에 로그인하는 방법” 하위 카테고리 아래의 “2단계 인증” 옵션을 클릭하세요.

Gmail 계정의 2단계 인증 프로세스를 강조하는 스크린샷.

4. 전화번호를 확인하고 2단계 인증을 활성화하세요 .

5. “보안” 카테고리로 돌아가서 “2단계 인증” 옵션을 다시 클릭하세요. 그러면 계정에 대한 새로운 보조 키를 설정할 수 있는 새 메뉴 화면이 열립니다. 페이지 하단으로 스크롤한 다음 ‘앱 비밀번호’를 클릭하세요.

다음을 보여주는 스크린샷

6. 첫 번째 드롭다운 목록에서 “메일”을 선택한 다음 두 번째 드롭다운 목록에서 “기타”를 선택합니다.

7. 텍스트 상자에 “Gmail for Ghost”라고 쓴 다음 “생성”을 클릭하십시오. 그러면 사용자 정의 애플리케이션 비밀번호가 포함된 노란색 텍스트 상자가 있는 창이 열립니다.

생성된 Ghost용 응용 프로그램 비밀번호를 보여주는 스크린샷.

Docker 컨테이너 구축

1. Ghost 설치의 dockerfile을 위한 새 디렉터리를 생성하십시오:

mkdir ~/ghost
cd ~/ghost

2. 선호하는 텍스트 편집기를 사용하여 새 docker-compose.yml 파일을 생성합니다.

nano. /docker-compose.yml

3. 새 docker-compose.yml 파일 안에 다음 코드 블록을 붙여넣고 저장합니다.

---
version: "3"
services:
ghost:
image: ghost:latest
restart: always
ports:
- 8080:2368
environment:
database__client: mysql
database__connection__host: db
database__connection__database: ghost
database__connection__user: ghost
database__connection__password: ghost
url: ${GHOST_URL}
mail__transport: ${MAIL_TRANSPORT}
mail__options__host: ${MAIL_HOST}
mail__options__port: ${MAIL_PORT}
mail__options__secureConnection: ${MAIL_SECURE_CONNECTION}
mail__options__auth__user: ${MAIL_USER}
mail__options__auth__pass: ${MAIL_PASSWORD}
volumes:
- ghost-data:/var/lib/ghost/content
links:
- db
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ghost
MYSQL_USER: ghost
MYSQL_PASSWORD: ghost
cap_add:
- SYS_NICE
volumes:
- ghost-db:/var/lib/mysql
volumes:
ghost-data: null
ghost-db: null

4. Ghost docker 디렉토리 내에 “.env” 파일을 생성하십시오:

nano. /.env

5. 새 코드 안에 다음 코드 블록을 붙여넣습니다. 환경 파일:

# URLGHOST_URL="#REPLACE_ME_WITH_DOMAIN_NAME#"# DatabaseMYSQL_ROOT_PASSWORD="#REPLACE_ME_WITH_SECURE_PASSWORD#"# SMTP variablesMAIL_SERVICE="Gmail"MAIL_TRANSPORT="SMTP"MAIL_USER="#REPLACE_ME_WITH_YOUR_GMAIL_ADDRESS#"MAIL_PASSWORD="#REPLACE_ME_WITH_YOUR_APP_PASSWORD#"MAIL_HOST="smtp.gmail.com"MAIL_PORT="465"MAIL_SECURE_CONNECTION="true"

  • “GHOST_URL” 변수 값을 “#REPLACE_ME_WITH_DOMAIN_NAME#”에서 전체 도메인 이름으로 변경합니다.
원격 Ghost 인스턴스의 URL을 표시하는 터미널.
  • “MYSQL_ROOT_PASSWORD”의 값을 충분히 임의의 비밀번호로 바꾸십시오.
  • Gmail 계정의 이메일 주소와 애플리케이션 비밀번호로 “MAIL_USER”와 “MAIL_PASSWORD”의 값을 모두 변경하세요.

6. 다음 명령을 실행하여 Ghost Docker 컨테이너를 구축하십시오.

sudo docker compose up -d

역방향 프록시 설정

백엔드에서 Ghost가 실행 중인 경우 Ghost에 공개적으로 액세스할 수 있도록 역방향 프록시를 설정해야 합니다. 이 경우 Nginx의 역방향 프록시를 사용합니다 .

1. Nginx 웹 서버 패키지를 설치합니다. 이는 인터넷에서 연결을 가져와 Ghost로 리디렉션하는 역방향 프록시 데몬 역할을 합니다.

sudo apt install nginx

2. 원하는 텍스트 편집기를 사용하여 새 Nginx 사이트 구성 파일을 만듭니다.

sudo nano /etc/nginx/sites-available/ghost

3. 새 사이트 구성 파일에 다음 코드 블록을 붙여넣습니다.

server {
listen 80;
listen [::]:80;

root /var/www/html;
server_name ghost.myvpsserver.top;


location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8080;
}}

4. Ghost 사이트 구성에 대한 심볼릭 링크를 생성하십시오:

sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/

5. systemctl을 사용하여 Nginx 웹 서버 서비스를 활성화합니다.

sudo systemctl enable --now nginx.service

Nginx 역방향 프록시에서 SSL 활성화

1. “코어” 스냅 패키지가 시스템에 있는지 확인합니다.

sudo snap install core

2. certbot 스냅 패키지를 설치합니다:

sudo snap install certbot --classic

3. 다음 명령을 실행하여 certbot 설치를 이메일 주소에 등록합니다.

sudo certbot register --agree-tos --email ramces@email.invalid

4. Ghost 블로그에 대한 새 SSL 인증서를 요청하십시오.

sudo certbot --nginx -d ghost.myvpsserver.top

5. 웹 브라우저를 열고 도메인 이름을 로드하여 SSL을 통해 새 Ghost 인스턴스에 액세스할 수 있는지 테스트합니다.

원격 서버에서 작동하는 Ghost 인스턴스를 보여주는 스크린샷.

로컬 시스템에서 Ghost 실행

서버가 없고 로컬 시스템에 Ghost를 설치하려는 경우에도 가능합니다. 또한 Tailscale을 사용하여 브라우저 어디에서나 액세스할 수 있습니다.

1. 컴퓨터에 Tailscale VPN 데몬을 설치 하고 Tailscale 계정에 연결합니다. Tailscale 관리자 콘솔로 이동하여 콘솔 상단 표시줄에 있는 “DNS” 탭을 클릭하세요.

Tailscale 관리 콘솔의 DNS 탭을 강조하는 스크린샷.

2. “Tailnet 이름” 하위 범주 아래의 “Tailnet 이름 바꾸기…” 버튼을 클릭합니다.

강조 표시된 스크린샷

3. 컴퓨터의 호스트 이름을 “ghost”로 설정하고 그 뒤에 Tailscale 네트워크의 새 하위 도메인을 입력합니다.

sudo hostnamectl set-hostname ghost.your-tailnet.ts.net

Tailscale Funnel 활성화

1. Tailscale 관리자 콘솔을 열고 “DNS” 탭을 클릭합니다.

2. 페이지 하단까지 아래로 스크롤한 다음 ‘HTTPS 활성화…’를 클릭하세요.

Tailscale 호스트의 HTTPS 옵션을 보여주는 스크린샷.

3. 페이지 상단으로 다시 스크롤한 다음 ‘액세스 제어’ 탭을 클릭하세요.

강조 표시된 스크린샷

4. ‘정책에 유입경로 추가’ 버튼을 클릭하세요.

강조 표시된 스크린샷

5. 다음 명령을 실행하여 Tailscale과 로컬 Docker 컨테이너 사이에 역방향 프록시를 만듭니다.

sudo tailscale serve https / http://127.0.0.1:8080

6. 다음 명령을 실행하여 역방향 프록시에 대한 Tailscale 깔때기를 활성화합니다.

sudo tailscale funnel 443 on

7. 웹 브라우저를 열고 Tailscale 주소를 로드하여 Tailscale 퍼널을 통해 새 Ghost 인스턴스에 액세스할 수 있는지 테스트합니다.

Tailscale을 통해 작동하는 Ghost 설치를 보여주는 스크린샷.

처음으로 Ghost 사용하기

1. 웹 브라우저를 열고 Ghost 설치 URL과 하위 디렉터리 “/ghost”로 이동하십시오.

Ghost 설정 페이지의 올바른 URL을 보여주는 웹 브라우저 주소 표시줄의 스크린샷.

2. 첫 번째 필드를 클릭하고 새 Ghost 블로그의 이름을 입력하십시오. 관리자에 대한 세부 정보로 나머지 필드를 채운 다음 ‘계정 만들기 및 게시 시작’을 클릭하세요.

다음을 보여주는 스크린샷

Ghost에서 첫 번째 게시물 만들기

1. Ghost 온보딩 페이지에서 “첫 번째 게시물 작성” 버튼을 클릭하세요.

Ghost의 첫 번째 온보딩 페이지를 보여주는 스크린샷.

2. 그러면 간단한 텍스트 게시물을 작성할 수 있는 일반 텍스트 편집기가 나타납니다. 새 테스트 게시물을 작성하려면 완료되면 “게시”를 클릭하세요.

3. Ghost 첫 페이지를 확인하여 새 게시물이 전달되었는지 확인하세요.

Ghost에 새 사용자 추가

1. Ghost 관리자 콘솔로 돌아가서 페이지 왼쪽 사이드바에서 “구성원”을 클릭하십시오.

2. 페이지 오른쪽 상단에 있는 ‘새 회원’ 버튼을 클릭하세요.

현재 Ghost 인스턴스의 구성원 목록을 보여주는 스크린샷.

3. 새 회원의 세부 정보를 입력한 다음 “저장”을 클릭하여 블로그 뉴스레터 피드에 추가하세요.

자주 묻는 질문

Tailscale Funnel에는 제한 사항이 있나요?

예. 기본적으로 Tailscale의 트래픽은 443, 8443, 10000의 세 포트를 통해서만 TCP를 사용하여 노출할 수 있습니다. 즉, VoIP, 게임 서버 등 실시간 온라인 서비스를 노출할 수 없습니다.

Tailscale 도메인 이름을 개인화할 수 있습니까?

아니요. 이는 각 Tailscale DNS 주소가 귀하의 특정 계정에 맞춰져 있기 때문입니다. 이를 통해 서비스는 더 큰 Tailscale 네트워크 내부의 다른 컴퓨터로부터 귀하의 컴퓨터를 식별할 수 있습니다.

내 컴퓨터가 오프라인일 때 내 Ghost 블로그 실행이 중지됩니까?

예. 자체 하드웨어에서 호스팅할 때의 단점 중 하나는 웹 사이트의 가동 시간이 컴퓨터의 가동 시간에 따라 달라진다는 것입니다. 이는 호스트 시스템이 다운될 때마다 Ghost 블로그도 다운된다는 의미입니다.

이미지 출처: 컴퓨터 블로그 컨셉 과 123RF의 전통적인 할로윈 유령 쿠키를 사용하여 사무실에서 일하는 사람들 .

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다