Ghost: Difference between revisions

From Newroco Tech Docs
Jump to navigationJump to search
(Created page with "==Installation== First install mysql <pre>apt-get install mysql-server</pre> Open mysql and set a password for root <pre>mysql -u root ALTER USER 'root'@'localhost' IDENTI...")
 
No edit summary
Line 85: Line 85:


Now you can go to the link provided by the ghost installer at the end and finish the installation on the web interface
Now you can go to the link provided by the ghost installer at the end and finish the installation on the web interface
==Theme development==

Revision as of 09:21, 17 January 2022

Installation

First install mysql

apt-get install mysql-server

Open mysql and set a password for root

mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

And put the password in /root/.my.cnf

Install postfix

apt-get install mailutils

Install Node.js

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash
apt-get install -y nodejs

Install Ghost-CLI

npm install ghost-cli@latest -g

Install Ghost

mkdir -p /var/www/sitename
chown <user>:<user> /var/www/sitename
chmod 775 /var/www/sitename
cd /var/www/sitename
ghost install

Instalation questions:

  • Blog URL: http://blog.mydomain.com   (NOTE: I've used http because the encryption is done one the proxy, otherwise it will end up in a redirect loop)
  • MySQL hostname: localhost
  • MySQL username / password: root and password   (NOTE: it will use the root only to create a DB and a user with rights for that DB)
  • Ghost database name: blog
  • Set up a ghost MySQL user?: yes
  • Set up NGINX?: no   (NOTE: nginx will be used to proxy pass to the ghost port, but since we already have a proxy no need to use nginx)
  • Set up SSL?: no   (SSL is handled on the proxy)
  • Set up systemd?: yes
  • Start Ghost?: yes

The installer will give you a link to visit so you can finish the installation, but hold on that just a bit.

Edit /var/www/blog/config.production.json to make it listen on the VM's IP instead of just local

  "server": {
    "port": 2368,
    "host": "0.0.0.0"
  },

Edit the same file and configure ghost to use the local SMTP server to send emails

  "mail": {
    "transport": "SMTP",
    "options": {
       "hosts": "127.0.0.1",
       "port": 25,
       "tls": {
           "rejectUnauthorized": false
       }
    }
  },

Restart the ghost service

systemctl restart ghost_blog-mydomain-com.service

On the proxy point the domain to port 2368 instead of the default 80/443. The proxy vhost should look like this:

<VirtualHost *:443>
        ServerName blog.mydomain.com

        ProxyPreserveHost On

        RequestHeader set X-Forwarded-Proto "https"
        <Location />
            SSLRequireSSL
        </Location>

        ProxyPass / http://ip.add.rr.ess:2368/
        ProxyPassReverse / http://ip.add.rr.ess:2368/

        CustomLog /var/log/apache2/blog.mydomain.access.log combined
        ErrorLog /var/log/apache2/blog.mydomain.error.log

SSLCertificateFile /etc/letsencrypt/live/blog.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/blog.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

Now you can go to the link provided by the ghost installer at the end and finish the installation on the web interface

Theme development