티스토리에서 이사갈 집 보는중입니다
어쩌면 티스토리로 올리는 마지막 글이 될지도 모르겠네요.
관리자 화면 말고는 제 블로그에 잘 들어가 보지는 않는데 티스토리가 자기들 광고 걸거라고 으름장 놓은게 있어서 오랜만에 들어가봤습니다. 모바일 화면에 못보던게 좀 많아졌네요. 가뜩이나 구글놈들도 지네 맘대로 광고넣어서 지저분해졌는데 카카오에서도 스토리인가 뭐시기인가 미는 모양입니다.
카카오는 티스토리에 댓글달면 카카오톡으로 알림 가는 기본적인 기능하나 안만들어주면서 운영방향이 아쉽습니다. 더 쎈 워딩을 쓰고 싶지만 분명히 운영진들중 누군가는 개고생을 했을테고, 그동안 잘 사용한 감사함이 더 크기에 자제해야겠습니다.
새롭게 이사갈 집을 최종적으로 추려본 결과 Wordpress와 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로 설치하는 어플은 /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 으로 접속하면 고스트화면을 볼 수 있습니다.
일단 접속은 잘됩니다. 이제, 최초 설정을 위해 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