• Installera och Konfigurera Ghost CMS på Debian 12 med Nginx och MySQL

    Installera och Konfigurera Ghost CMS på Ubuntu, Debian, Fedora och openSUSE med Nginx och MySQL

    Ghost är en öppen källkodsbloggplattform som hjälper dig att skapa en professionell blogg. Den lanserades 2013 som ett alternativ till WordPress och är skriven i JavaScript, drivs av Node.js-biblioteket. I denna artikel kommer vi att gå igenom hur man installerar Ghost CMS med hjälp av Nginx och MySQL på servrar som kör Ubuntu, Debian, Fedora och openSUSE, samt hur man säkrar installationen med ett Let’s Encrypt SSL-certifikat.

    Förutsättningar

    • En server som kör Ubuntu, Debian, Fedora eller openSUSE med minst 2GB RAM.
    • En icke-root-användare med sudo-rättigheter.
    • Ett Fullständigt Kvalificerat Domännamn (FQDN) som exempel.com pekar mot din server.
    • Se till att allt är uppdaterat:
      sudo apt update && sudo apt upgrade      # För Ubuntu och Debian
      sudo dnf update                         # För Fedora
      sudo zypper refresh && sudo zypper update # För openSUSE
    • Flera paket som ditt system behöver:
      sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release unzip -y # För Ubuntu och Debian
      sudo dnf install wget curl nano firewall-config dnf-plugins-core gnupg2 ca-certificates lsb-release unzip -y                            # För Fedora
      sudo zypper install wget curl nano firewalld software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release unzip -y # För openSUSE

    Steg 1 – Konfigurera Brandvägg

    Det första steget är att konfigurera brandväggen. Alla nämnda distributioner kommer med en brandvägg som standard.

    1. Kontrollera om brandväggen är aktiv och tillåt nödvändiga portar: Ubuntu och Debian:
       sudo ufw status
       sudo ufw allow OpenSSH
       sudo ufw allow http
       sudo ufw allow https
       sudo ufw enable
       sudo ufw status

    Fedora:

       sudo systemctl start firewalld
       sudo firewall-cmd --permanent --add-service=ssh
       sudo firewall-cmd --permanent --add-service=http
       sudo firewall-cmd --permanent --add-service=https
       sudo firewall-cmd --reload
       sudo firewall-cmd --list-all

    openSUSE:

       sudo systemctl start firewalld
       sudo firewall-cmd --permanent --add-service=ssh
       sudo firewall-cmd --permanent --add-service=http
       sudo firewall-cmd --permanent --add-service=https
       sudo firewall-cmd --reload
       sudo firewall-cmd --list-all

    Steg 2 – Installera Nginx

    Installationen av Nginx kan variera något beroende på distribution.

    1. Installera Nginx: Ubuntu och Debian:
       sudo apt install nginx -y
       sudo systemctl start nginx
       sudo systemctl enable nginx
       sudo nginx -v

    Fedora:

       sudo dnf install nginx -y
       sudo systemctl start nginx
       sudo systemctl enable nginx
       sudo nginx -v

    openSUSE:

       sudo zypper install nginx -y
       sudo systemctl start nginx
       sudo systemctl enable nginx
       sudo nginx -v

    Steg 3 – Installera Node.js

    Ghost Installer behöver Nodejs för att fungera. Här är hur du installerar Node.js på olika distributioner.

    1. Installera Node.js: Ubuntu och Debian:
       curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg
       NODE_MAJOR=18
       echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x focal main" | sudo tee /etc/apt/sources.list.d/nodesource.list
       sudo apt update
       sudo apt install nodejs -y
       node --version

    Fedora:

       curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
       sudo dnf install nodejs -y
       node --version

    openSUSE:

       curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
       sudo zypper install nodejs -y
       node --version

    Steg 4 – Installera MySQL med Docker

    Ghost stöder bara MySQL, så vi kommer att använda Docker för att installera MySQL.

    1. Installera Docker: Ubuntu och Debian:
       sudo apt install docker.io -y
       sudo systemctl start docker
       sudo systemctl enable docker
       sudo usermod -aG docker $USER
       newgrp docker

    Fedora:

       sudo dnf install docker-ce docker-ce-cli containerd.io -y
       sudo systemctl start docker
       sudo systemctl enable docker
       sudo usermod -aG docker $USER
       newgrp docker

    openSUSE:

       sudo zypper install docker -y
       sudo systemctl start docker
       sudo systemctl enable docker
       sudo usermod -aG docker $USER
       newgrp docker
    1. Skapa en katalog för MySQL och en docker-compose.yml fil:
       mkdir ~/mysql
       nano ~/mysql/docker-compose.yml
    1. Klistra in följande kod i docker-compose.yml-filen:
       services:
         database:
           image: container-registry.oracle.com/mysql/community-server:latest
           container_name: mysql
           restart: always
           environment:
             MYSQL_ROOT_PASSWORD: rootpassword
             MYSQL_USER: ghost
             MYSQL_PASSWORD: ghostpassword
             MYSQL_DATABASE: ghostdb
           ports:
             - "3306:3306"
           volumes:
             - ./mysql:/var/lib/mysql
    1. Starta MySQL-containern:
       cd ~/mysql
       docker compose up -d
       docker ps

    Steg 5 – Installera Ghost

    1. Installera Ghost-CLI:
       sudo npm install ghost-cli@latest -g
    1. Förbered Ghost-katalogen:
       sudo mkdir -p /var/www/html/ghost
       sudo chown $USER:$USER /var/www/html/ghost
       sudo chmod 755 /var/www/html/ghost
       cd /var/www/html/ghost
    1. Installera Ghost:
       ghost install

    Steg 6 – Installera SSL

    1. Installera Certbot: Ubuntu och Debian:
       sudo apt install snapd -y
       sudo snap install core
       sudo snap refresh core
       sudo snap install --classic certbot
       sudo ln -s /snap/bin/certbot /usr/bin/certbot
       certbot --version

    Fedora:

       sudo dnf install snapd -y
       sudo ln -s /var/lib/snapd/snap /snap
       sudo snap install core
       sudo snap refresh core
       sudo snap install --classic certbot
       sudo ln -s /snap/bin/certbot /usr/bin/certbot
       certbot --version

    openSUSE:

       sudo zypper install snapd -y
       sudo systemctl enable snapd
       sudo systemctl start snapd
       sudo snap install core
       sudo snap refresh core
       sudo snap install --classic certbot
       sudo ln -s /snap/bin/certbot /usr/bin/certbot
       certbot --version
    1. Generera ett SSL-certifikat:
       sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d example.com
    1. Generera ett Diffie-Hellman gruppcertifikat:
       sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
    1. Kontrollera Certbot förnyelseschemaläggningstjänst:
       sudo systemctl status certbot.timer

    Steg 7 – Konfigurera Nginx

    1. Skapa och öppna filen /etc/nginx/conf.d/ghost.conf för redigering:
       sudo nano /etc/nginx/conf.d/ghost.conf
    1. Klistra in följande kod i ghost.conf-filen:
       server {
         listen 80;
         listen [::]:80;
         server_name example.com;
         location / {
    
    
           return 301 https://$server_name$request_uri; 
         }
       }
    
       server {
         listen 443 ssl http2;
         listen [::]:443 ssl http2;
         server_name example.com;
    
         access_log /var/log/nginx/ghost.access.log;
         error_log /var/log/nginx/ghost.error.log;
         client_max_body_size 20m;
    
         ssl_protocols TLSv1.2 TLSv1.3;
         ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
         ssl_prefer_server_ciphers off;
         ssl_session_timeout 1d;
         ssl_session_cache shared:SSL:10m;
         ssl_dhparam /etc/ssl/certs/dhparam.pem;
         ssl_stapling on;
         ssl_stapling_verify on;
         resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
         resolver_timeout 2s;
    
         ssl_certificate         /etc/letsencrypt/live/example.com/fullchain.pem;
         ssl_certificate_key     /etc/letsencrypt/live/example.com/privkey.pem;
         ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    
         location / {
           proxy_set_header Host $http_host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-Proto https;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass http://localhost:2368;
         }
       }
    1. Spara filen genom att trycka på Ctrl + X och sedan Y när du uppmanas.
    2. Öppna filen /etc/nginx/nginx.conf för redigering:
       sudo nano /etc/nginx/nginx.conf
    1. Lägg till följande rad före raden include /etc/nginx/conf.d/*.conf;.
       server_names_hash_bucket_size  64;
    1. Spara filen genom att trycka på Ctrl + X och sedan Y när du uppmanas.
    2. Verifiera din Nginx-konfiguration:
       sudo nginx -t
    1. Om du inte ser några fel betyder det att allt är korrekt. Starta om Nginx-servern för att tillämpa konfigurationen:
       sudo systemctl restart nginx

    Steg 8 – Kör webbplatsen

    Nu kan du verifiera din installation genom att öppna https://example.com i din webbläsare. Du kommer att få följande sida som indikerar en lyckad installation.

    Steg 9 – Slutför installationen

    För att slutföra inställningen av din Ghost-blogg, besök https://example.com/ghost i din webbläsare. Den extra /ghost i slutet av din bloggs domän omdirigerar dig till Ghosts Admin Panel eller i detta fall inställningssidan eftersom du öppnar den för första gången.

    Här kommer du att bli ombedd att skapa ditt administratörskonto och välja en bloggtitel.

    .https://ghost.org

    Innehållet ovan är delvis baserad på data ifrån

    https://www.howtoforge.com/how-to-deploy-ghost-blog-with-nginx-on-debian-12

Installera och Konfigurera Ghost CMS på Debian 12 med Nginx och MySQL

Installera och Konfigurera Ghost CMS på Ubuntu, Debian, Fedora och openSUSE med Nginx och MySQL

Ghost är en öppen källkodsbloggplattform som hjälper dig att skapa en professionell blogg. Den lanserades 2013 som ett alternativ till WordPress och är skriven i JavaScript, drivs av Node.js-biblioteket. I denna artikel kommer vi att gå igenom hur man installerar Ghost CMS med hjälp av Nginx och MySQL på servrar som kör Ubuntu, Debian, Fedora och openSUSE, samt hur man säkrar installationen med ett Let’s Encrypt SSL-certifikat.

Förutsättningar

  • En server som kör Ubuntu, Debian, Fedora eller openSUSE med minst 2GB RAM.
  • En icke-root-användare med sudo-rättigheter.
  • Ett Fullständigt Kvalificerat Domännamn (FQDN) som exempel.com pekar mot din server.
  • Se till att allt är uppdaterat:
  sudo apt update && sudo apt upgrade      # För Ubuntu och Debian
  sudo dnf update                         # För Fedora
  sudo zypper refresh && sudo zypper update # För openSUSE
  • Flera paket som ditt system behöver:
  sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release unzip -y # För Ubuntu och Debian
  sudo dnf install wget curl nano firewall-config dnf-plugins-core gnupg2 ca-certificates lsb-release unzip -y                            # För Fedora
  sudo zypper install wget curl nano firewalld software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release unzip -y # För openSUSE

Steg 1 – Konfigurera Brandvägg

Det första steget är att konfigurera brandväggen. Alla nämnda distributioner kommer med en brandvägg som standard.

  1. Kontrollera om brandväggen är aktiv och tillåt nödvändiga portar: Ubuntu och Debian:
   sudo ufw status
   sudo ufw allow OpenSSH
   sudo ufw allow http
   sudo ufw allow https
   sudo ufw enable
   sudo ufw status

Fedora:

   sudo systemctl start firewalld
   sudo firewall-cmd --permanent --add-service=ssh
   sudo firewall-cmd --permanent --add-service=http
   sudo firewall-cmd --permanent --add-service=https
   sudo firewall-cmd --reload
   sudo firewall-cmd --list-all

openSUSE:

   sudo systemctl start firewalld
   sudo firewall-cmd --permanent --add-service=ssh
   sudo firewall-cmd --permanent --add-service=http
   sudo firewall-cmd --permanent --add-service=https
   sudo firewall-cmd --reload
   sudo firewall-cmd --list-all

Steg 2 – Installera Nginx

Installationen av Nginx kan variera något beroende på distribution.

  1. Installera Nginx: Ubuntu och Debian:
   sudo apt install nginx -y
   sudo systemctl start nginx
   sudo systemctl enable nginx
   sudo nginx -v

Fedora:

   sudo dnf install nginx -y
   sudo systemctl start nginx
   sudo systemctl enable nginx
   sudo nginx -v

openSUSE:

   sudo zypper install nginx -y
   sudo systemctl start nginx
   sudo systemctl enable nginx
   sudo nginx -v

Steg 3 – Installera Node.js

Ghost Installer behöver Nodejs för att fungera. Här är hur du installerar Node.js på olika distributioner.

  1. Installera Node.js: Ubuntu och Debian:
   curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg
   NODE_MAJOR=18
   echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x focal main" | sudo tee /etc/apt/sources.list.d/nodesource.list
   sudo apt update
   sudo apt install nodejs -y
   node --version

Fedora:

   curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
   sudo dnf install nodejs -y
   node --version

openSUSE:

   curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
   sudo zypper install nodejs -y
   node --version

Steg 4 – Installera MySQL med Docker

Ghost stöder bara MySQL, så vi kommer att använda Docker för att installera MySQL.

  1. Installera Docker: Ubuntu och Debian:
   sudo apt install docker.io -y
   sudo systemctl start docker
   sudo systemctl enable docker
   sudo usermod -aG docker $USER
   newgrp docker

Fedora:

   sudo dnf install docker-ce docker-ce-cli containerd.io -y
   sudo systemctl start docker
   sudo systemctl enable docker
   sudo usermod -aG docker $USER
   newgrp docker

openSUSE:

   sudo zypper install docker -y
   sudo systemctl start docker
   sudo systemctl enable docker
   sudo usermod -aG docker $USER
   newgrp docker
  1. Skapa en katalog för MySQL och en docker-compose.yml fil:
   mkdir ~/mysql
   nano ~/mysql/docker-compose.yml
  1. Klistra in följande kod i docker-compose.yml-filen:
   services:
     database:
       image: container-registry.oracle.com/mysql/community-server:latest
       container_name: mysql
       restart: always
       environment:
         MYSQL_ROOT_PASSWORD: rootpassword
         MYSQL_USER: ghost
         MYSQL_PASSWORD: ghostpassword
         MYSQL_DATABASE: ghostdb
       ports:
         - "3306:3306"
       volumes:
         - ./mysql:/var/lib/mysql
  1. Starta MySQL-containern:
   cd ~/mysql
   docker compose up -d
   docker ps

Steg 5 – Installera Ghost

  1. Installera Ghost-CLI:
   sudo npm install ghost-cli@latest -g
  1. Förbered Ghost-katalogen:
   sudo mkdir -p /var/www/html/ghost
   sudo chown $USER:$USER /var/www/html/ghost
   sudo chmod 755 /var/www/html/ghost
   cd /var/www/html/ghost
  1. Installera Ghost:
   ghost install

Steg 6 – Installera SSL

  1. Installera Certbot: Ubuntu och Debian:
   sudo apt install snapd -y
   sudo snap install core
   sudo snap refresh core
   sudo snap install --classic certbot
   sudo ln -s /snap/bin/certbot /usr/bin/certbot
   certbot --version

Fedora:

   sudo dnf install snapd -y
   sudo ln -s /var/lib/snapd/snap /snap
   sudo snap install core
   sudo snap refresh core
   sudo snap install --classic certbot
   sudo ln -s /snap/bin/certbot /usr/bin/certbot
   certbot --version

openSUSE:

   sudo zypper install snapd -y
   sudo systemctl enable snapd
   sudo systemctl start snapd
   sudo snap install core
   sudo snap refresh core
   sudo snap install --classic certbot
   sudo ln -s /snap/bin/certbot /usr/bin/certbot
   certbot --version
  1. Generera ett SSL-certifikat:
   sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d example.com
  1. Generera ett Diffie-Hellman gruppcertifikat:
   sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
  1. Kontrollera Certbot förnyelseschemaläggningstjänst:
   sudo systemctl status certbot.timer

Steg 7 – Konfigurera Nginx

  1. Skapa och öppna filen /etc/nginx/conf.d/ghost.conf för redigering:
   sudo nano /etc/nginx/conf.d/ghost.conf
  1. Klistra in följande kod i ghost.conf-filen:
   server {
     listen 80;
     listen [::]:80;
     server_name example.com;
     location / {


       return 301 https://$server_name$request_uri; 
     }
   }

   server {
     listen 443 ssl http2;
     listen [::]:443 ssl http2;
     server_name example.com;

     access_log /var/log/nginx/ghost.access.log;
     error_log /var/log/nginx/ghost.error.log;
     client_max_body_size 20m;

     ssl_protocols TLSv1.2 TLSv1.3;
     ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
     ssl_prefer_server_ciphers off;
     ssl_session_timeout 1d;
     ssl_session_cache shared:SSL:10m;
     ssl_dhparam /etc/ssl/certs/dhparam.pem;
     ssl_stapling on;
     ssl_stapling_verify on;
     resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
     resolver_timeout 2s;

     ssl_certificate         /etc/letsencrypt/live/example.com/fullchain.pem;
     ssl_certificate_key     /etc/letsencrypt/live/example.com/privkey.pem;
     ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

     location / {
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-Proto https;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_pass http://localhost:2368;
     }
   }
  1. Spara filen genom att trycka på Ctrl + X och sedan Y när du uppmanas.
  2. Öppna filen /etc/nginx/nginx.conf för redigering:
   sudo nano /etc/nginx/nginx.conf
  1. Lägg till följande rad före raden include /etc/nginx/conf.d/*.conf;.
   server_names_hash_bucket_size  64;
  1. Spara filen genom att trycka på Ctrl + X och sedan Y när du uppmanas.
  2. Verifiera din Nginx-konfiguration:
   sudo nginx -t
  1. Om du inte ser några fel betyder det att allt är korrekt. Starta om Nginx-servern för att tillämpa konfigurationen:
   sudo systemctl restart nginx

Steg 8 – Kör webbplatsen

Nu kan du verifiera din installation genom att öppna https://example.com i din webbläsare. Du kommer att få följande sida som indikerar en lyckad installation.

Steg 9 – Slutför installationen

För att slutföra inställningen av din Ghost-blogg, besök https://example.com/ghost i din webbläsare. Den extra /ghost i slutet av din bloggs domän omdirigerar dig till Ghosts Admin Panel eller i detta fall inställningssidan eftersom du öppnar den för första gången.

Här kommer du att bli ombedd att skapa ditt administratörskonto och välja en bloggtitel.

.https://ghost.org

Innehållet ovan är delvis baserad på data ifrån

https://www.howtoforge.com/how-to-deploy-ghost-blog-with-nginx-on-debian-12