Ghost on Alpine Linux
別の記事「Nextcloud on Alpine Linux」に引き続き、Ghost を Alpine Linux にインストールします。作業手順は既にここに記載されていましたが、パッケージ shadow をインストールしたくなかったので、少し変更しました。
前提
別の記事「Nextcloud on Alpine Linux」記載の次の作業完了が前提です。
- サーバ証明書
- MariaDB のインストール
システムテーブル生成
セキュリティ初期設定 - NGINX のインストール
Install Node.js & npm
Node.js とパッケージマネージャ npm をインストールします。
root@www:~# apk add nodejs npm fetch http://alpine.cs.nctu.edu.tw/v3.14/main/x86_64/APKINDEX.tar.gz fetch http://alpine.cs.nctu.edu.tw/v3.14/community/x86_64/APKINDEX.tar.gz (1/3) Installing c-ares (1.17.1-r1) (2/3) Installing nodejs (14.17.3-r0) (3/3) Installing npm (7.17.0-r0) Executing busybox-1.33.1-r3.trigger OK: 584 MiB in 209 packages root@www:~#
Install Ghost-CLI
Ghost 管理用のコマンドラインツール Ghost-CLI をインストールします。
root@www:~# npm install ghost-cli@latest -g added 419 packages, and audited 420 packages in 24s 30 packages are looking for funding run `npm fund` for details found 0 vulnerabilities root@www:~#
Create Database & User
mariadb に Ghost 用のデータベースとユーザを作成します。
root@www:~# mysql -u root Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3469 Server version: 10.5.11-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> create database ghost4; Query OK, 1 row affected (0.001 sec) MariaDB [(none)]> grant all on ghost4.* to 'ghost4'@'localhost' identified by 'ghost4'; Query OK, 0 rows affected (0.004 sec) MariaDB [(none)]> exit Bye root@www:~#
Create a new user
Ghost 管理用のユーザとグループを作成します。
root@www:~# adduser -h /var/www/ghost -G gst gst Changing password for gst New password: Retype password: passwd: password for gst changed by root root@www:~# mkdir -p /var/www/ghost root@www:~# chown gst:gst /var/www/ghost root@www:~#
Install Ghost
作成した Ghost 管理用のユーザで Ghost をインストールします。途中 sudo のためのパスワードの入力を求められますが、sudo の設定はしていないのでエラーになります。エラーにはなるものの Ghost は稼働できる状態となります。
root@www:~# sudo -u gst ash
gst@www:/root$ cd
gst@www:~$ ghost install
✔ Checking system Node.js version - found v14.17.3
✔ Checking logged in user
✔ Checking current folder permissions
System checks failed with message: 'Linux version is not Ubuntu 16, 18, or 20'
Some features of Ghost-CLI may not work without additional configuration.
For local installs we recommend using `ghost install local` instead.
? Continue anyway? Yes
System stack check skipped
ℹ Checking system compatibility [skipped]
Local MySQL install was not found or is stopped. You can ignore this if you are using a remote MySQL host.
Alternatively you could:
a) install/start MySQL locally
b) run `ghost install --db=sqlite3` to use sqlite
c) run `ghost install local` to get a development install using sqlite3.
? Continue anyway? Yes
MySQL check skipped
ℹ Checking for a MySQL installation [skipped]
✔ Checking memory availability
✔ Checking free space
✔ Checking for latest Ghost version
✔ Setting up install directory
✔ Downloading and installing Ghost v4.10.2
✔ Finishing install process
? Enter your blog URL: https://www.example.com/gst/
? Enter your MySQL hostname: localhost
? Enter your MySQL username: ghost4
? Enter your MySQL password: ghost4
? Enter your Ghost database name: ghost4
✔ Configuring Ghost
✔ Setting up instance
+ sudo useradd --system --user-group ghost
? Sudo Password [hidden]xxx
? Sudo Password [hidden]xxx
? Sudo Password [hidden]xxx
✖ Setting up "ghost" system user
ℹ Setting up "ghost" mysql user [skipped]
Nginx is not installed. Skipping Nginx setup.
ℹ Setting up Nginx [skipped]
Nginx setup task was skipped, skipping SSL setup
ℹ Setting up SSL [skipped]
? Do you wish to set up Systemd? No
Systemd setup skipped, reverting to local process manager
ℹ Setting up Systemd [skipped]
? Do you want to start Ghost? No
ℹ Starting Ghost [skipped]
One or more errors occurred.
1) undefined
Error: Command failed: /bin/sh -c sudo -S -p '#node-sudo-passwd#' useradd --system --user-group ghost
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
#node-sudo-passwd#Sorry, try again.
#node-sudo-passwd#Sorry, try again.
#node-sudo-passwd#sudo: 3 incorrect password attempts
Debug Information:
OS: Alpine Linux, v3.14.0
Node Version: v14.17.3
Ghost Version: 4.10.2
Ghost-CLI Version: 1.17.3
Environment: production
Command: 'ghost install'
Try running ghost doctor to check your system for known issues.
You can always refer to https://ghost.org/docs/ghost-cli/ for troubleshooting.
config.production.json
UNIXドメインソケットで MariaDB に接続するよう変更しました。
gst@www:~$ cp -p config.production.json config.production.json.original
gst@www:~$ vi config.production.json
gst@www:~$ diff config.production.json.original config.production.json
--- config.production.json.original
+++ config.production.json
@@ -8,6 +8,7 @@
"client": "mysql",
"connection": {
"host": "localhost",
+ "port": "/run/mysqld/mysqld.sock",
"user": "ghost4",
"password": "ghost4",
"database": "ghost4"
Start Ghost
gst@www:~$ ghost start
✔ Checking system Node.js version - found v14.17.3
ℹ Ensuring user is not logged in as ghost user [skipped]
ℹ Checking if logged in user is directory owner [skipped]
✔ Checking current folder permissions
✔ Validating config
✔ Checking memory availability
✔ Checking binary dependencies
✔ Starting Ghost: www-example-com
------------------------------------------------------------------------------
Your admin interface is located at:
https://www.excample.com/gst/ghost/
gst@www:~$
NGINX Reverse Proxy
nginx に次のようなリバースプロクシの設定をして作業完了です。
location /gst {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0,0.1:2368;
proxy_redirect off;
}
Ghost
ブラウザで、次の URL にアクセスし、最後のステップを完了します。
https://www.example.com/gst/ghost/