How to Install Ghost/Gatsby on Debian 10
10 Jan 2021 #ghost #gatsby
Create a new user
adduser user
usermod - aG sudo user
Install and configure Firewall
apt install - y ufw
ufw default allow outgoing
ufw default deny incoming
ufw allow ssh / tcp
ufw allow http / tcp
ufw allow https / tcp
systemctl enable ufw
ufw enable
Install Nginx
apt install nginx
Install and configure Maria DB
apt - get install mariadb - server
mysql_secure_installation
mysql - u root - p
ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'password' ;
exit
Install Node.js and Ghost-cli
apt install curl
curl - sL https :/ / deb . nodesource . com / setup_15 . x | sudo - E bash -
apt - get install - y nodejs
npm install ghost - cli @latest - g
Setup directories
mkdir - p /var/ www / ghost
chmod 775 / var / www / ghost
chown user :user / var / www / ghost
cd /var/ www / ghost
User + install
sudo user
PATH = "$PATH:/usr/sbin" ghost install
dd an A record “www” with your vps’s ip as value
ghost config url https://www.mydomain.com
Generate a ssl ghost setup nginx ssl
Set again ghost config url https://mydomain.com
edit the nginx config files for your second domain to redirect to your main domain: edit both: /system/files/my-second-domain.com.conf and /system/files/my-second-domain.com-ssl.conf , replacing the content of the first location block (leave the .well-known location block - this is used for renewing certificates) with:
return 301 https://my-canonical-domain.com$request_uri;
to finish run sudo nginx -t and then sudo nginx -s reload
Disable access $domain/ghost/#/signin
location ~ /ghost/ {
rewrite ^ (\ /(.*\/)?ghost\/)(.*)$ $1 redirect;
Gatsby cli:
apt install build - essential git
npm install - g gatsby - cli
Gatsby folder
gatsby new foder - name GIT
cd foder - name
gatsby develop - H IP
gatsby build
SSL
apt install certbot certbot
certbot certonly -- standalone - d $website
vi /etc/nginx/sites-enabled/$website.conf
server {
listen 80 default_server ;
listen [ :: ]: 80 default_server ;
root /var/ www / gatsby / site / public ;
index index . html index . htm index . nginx - debian . html ;
server_name $WEBSITE www . $WEBSITE ;
}
server {
listen 443 ssl http2 ;
server_name $WEBSITE www . $WEBSITE ;
root /var/ www / gatsby / site / public ;
index index . php index . htm index . html ;
ssl_certificate /etc/ letsencrypt / live / $WEBSITE / fullchain . pem ;
ssl_certificate_key /etc/ letsencrypt / live / $WEBSITE / privkey . pem ;
location / {
alias /var/ www / gatsby / site / public ;
index index . html ;
#multidomain
#location / {
#proxy_pass http://localhost:4000;
#proxy_http_version 1.1;
#proxy_set_header Upgrade $http_upgrade;
#proxy_set_header Connection 'upgrade';
#proxy_set_header Host $host;
#proxy_cache_bypass $http_upgrade;
#}
}
}
Troubleshooting
npm cache clean
npm cache clean --force
rm -rf node_modules package-lock.json
npm install
npm run develop