출처 : https://www.freeimages.com

티스토리에서 이사갈 집 보는중입니다

Web, 인터넷 2023년 7월 10일
출처 : https://www.freeimages.com (제목에 exodus가 들어가길래 ㅋ)

어쩌면 티스토리로 올리는 마지막 글이 될지도 모르겠네요.

관리자 화면 말고는 제 블로그에 잘 들어가 보지는 않는데 티스토리가 자기들 광고 걸거라고 으름장 놓은게 있어서 오랜만에 들어가봤습니다. 모바일 화면에 못보던게 좀 많아졌네요. 가뜩이나 구글놈들도 지네 맘대로 광고넣어서 지저분해졌는데 카카오에서도 스토리인가 뭐시기인가 미는 모양입니다.

카카오는 티스토리에 댓글달면 카카오톡으로 알림 가는 기본적인 기능하나 안만들어주면서 운영방향이 아쉽습니다. 더 쎈 워딩을 쓰고 싶지만 분명히 운영진들중 누군가는 개고생을 했을테고, 그동안 잘 사용한 감사함이 더 크기에 자제해야겠습니다.

새롭게 이사갈 집을 최종적으로 추려본 결과 Wordpress와 Ghost가 최종 후보가 되었습니다.


Wordpress vs Ghost-

전통의 강자 워드프레스 (Wordpress)와 홀란드급 신인 고스트(Ghost) 사이에서 갈등하고 있습니다. 한참 전이긴 하지만 Wordpress는 설치해봤기 때문에 Ghost를 새로 설치해봤습니다.

워드프레스와 고스트 모두 호스팅 서비스(유료) 자체호스팅+자체설치를 지원합니다. 저는 일본은 안가봤지만 오사카에 제 오라클 클라우드 A1서버가 놀고 있기에 거기에 설치해 봤습니다. 도메인은 blog.XX.net으로 기존 도메인에 서브도메인 넣어서 사용하려고 합니다. 두 개 다 docker-compose 로 쉽게 설치할 수 있습니다. (철권고수 무릎의 연속기처럼 우분투, 도커 써본 사람한테만 쉬운 거 맞습니다.)

cloudflare에서 A레코드 설정해주고, 오라클 A1에 설치한 npm(Nginx Proxy Manager)에서 blog.XX.net을 도커 네트워크 게이트웨이(저의 경우는 172.30.0.1)로 연결해주고, ghost에서 사용하는 port는 2368이니 172.30.0.1:2368로 연결해주면 됩니다. SSL은 cloudflare에서 wildcard 인증서 받은게 있어서 그거 재활용했습니다.

그 담에는 오라클 A1에 SSH로 연결해서 docker-compose.yml을 작성하고, docker-compose up -d로 도커 실행하면 끝입니다.

[ghost 도커 설치시 참고]

Docker

GitHub - docker-library/ghost: Docker Official Image packaging for Ghost
Docker Official Image packaging for Ghost. Contribute to docker-library/ghost development by creating an account on GitHub.

저는 docker로 설치하는 어플은 /home/docker안에 두고 쓰기 때문에 아래와 같은 과정으로 작업했습니다.

# ghost폴더 생성
mkdir /home/docker/ghost

# ghost폴더로 이동
cd /home/docker/ghost

# nano에디터로 docker-compose.yml 생성
nano docker-compose.yml

제가 사용한 docker-compose.yml은 다음과 같습니다. 다른 곳에서 본 docker-compose.yml명령과 좀 다른 부분은 아래 설명합니다.

version: '3.1'

services:

  ghost:
    image: ghost:latest
    restart: always
    ports:
      - 2368:2368
    environment:
      # see https://ghost.org/docs/config/#configuration-options
      database__client: mysql
      database__connection__host: db
      database__connection__database: ghost
      database__connection__user: ghost
      database__connection__password: ghostpassword            
      url: https://blog.XX.net
      # contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired)
      #NODE_ENV: development
    volumes:
      - ./content:/var/lib/ghost/content	  

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: ghost
      MYSQL_USER: ghost
      MYSQL_PASSWORD: ghostpassword
    volumes:
      - ./ghost-db:/var/lib/mysql
     
  • image: ghost:alpine 으로 해도 됩니다. alpine이 좀 더 용량이 적고 가볍습니다만 별 차이 안나길래 저는 그냥 latest로 했습니다.
  • mariadb를 더 좋아하지만 ghost에서는 공식적으로 mysql 8.0만 지원합니다. 이런 걸로 객기부리면 안된다는 정도의 깨달음은 있기 때문에 고분고분 mysql 8.0으로 했습니다.
  • 테마 등을 관리하기 위해 content폴더에 볼륨을 설정해주었습니다. docker exec나 copy로 관리하는 거 더럽게 귀찮습니다.

docker-compose.yml 작성이 끝났으니 docker-compose up -d 로 실행하고 나서, https://blog.XX.net 으로 접속하면 고스트화면을 볼 수 있습니다.

Ghost 첫 접속화면

일단 접속은 잘됩니다. 이제, 최초 설정을 위해 https://blog.XXx.net/ghost로 접속합니다. 최초 설정은 안내따라 대충 하면 됩니다. 나중에 정식오픈할 때 바꿔도 되니까요.

그 담에 오류는 없는지 portainer에서 확인 해봤습니다.

[2023-07-09 20:44:14] INFO "PUT /ghost/api/admin/users/1/?include=roles" 200 46ms

[2023-07-09 20:49:51] ERROR Failed to send email. Reason: Email has been temporarily rejected.

Failed to send email. Reason: Email has been temporarily rejected.

"Unable to send welcome email, your site will continue to function."

"Please see https://ghost.org/docs/config/#mail for instructions on configuring email."

Error ID:

    267c9600-1e9a-11ee-a51f-07115c3bb4d6

----------------------------------------

EmailError: Failed to send email. Reason: Email has been temporarily rejected.

    at createMailError (/var/lib/ghost/versions/5.53.4/core/server/services/mail/GhostMailer.js:68:12)

    at GhostMailer.handleDirectTransportResponse (/var/lib/ghost/versions/5.53.4/core/server/services/mail/GhostMailer.js:158:19)

    at GhostMailer.send (/var/lib/ghost/versions/5.53.4/core/server/services/mail/GhostMailer.js:120:25)

    at processTicksAndRejections (node:internal/process/task_queues:96:5)

    at async /var/lib/ghost/versions/5.53.4/core/server/services/auth/setup.js:186:17

[2023-07-09 21:27:43] INFO Worker for job "mentions-email-report" online

[2023-07-09 21:27:43] INFO Worker for job mentions-email-report sent a message: done

이메일 전송실패로 오류가 떠 있군요. 뭐 이메일 설정한 적 없으니 당연한거겠죠. 설치는 잘 됐으니 테마 찾고 이것저것 해보면서 테스트 해봐야겠네요.


#Wordpress #티스토리 #ghost #워드프레스 #고스트 #GoodBye

태그

BoniK

협업, 의뢰, 레슨 등 문의 : mail@bonik.me, open.kakao.com/me/bonik