Setup Pageflow Storytelling with NGINX & Lets Encrypt

Es war nicht unbedingt einfach, aber nicht unmöglich. Da die Dokumentionen nicht besten sind, die man findet, oder teilweise auch unvollständig, habe ich hier meine eigene Anleitung für einen eigenen Pageflow-Server:

[protectedContentOpen][/protectedContentOpen]
# SETUP PAGEFLOW - Debian 10
#
# Um pageflow auf einem frisch installierten Debian 10 sind folgende Schritte durchzuführen: 
#
apt update
apt install sudo lsb-release bash-completion htop net-tools aptitude mc rsync screen nload locate wget git build-essential ruby2.5-dev ruby-rails rails redis-server imagemagick imagemagick-common imagemagick-doc libsqlite3-dev libodb-sqlite-dev zlib1g-dev zlibc libghc-bzlib-dev libcrypto++-dev libssl-dev nginx -y
cd /tmp
wget https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb
dpkg -i mysql-apt-config_0.8.13-1_all.deb
apt update
apt install mysql-server default-libmysqlclient-dev default-libmysqld-dev -y
git clone https://github.com/codevise/pageflow.git
mkdir /opt/pageflow
rsync -av pageflow/ /opt/pageflow/
cd /opt/pageflow/

mysql -p

create database ownpageflow;
create user 'ownpageflow'@'localhost' IDENTIFIED BY 'My$secRetPassw0rd';
grant all on *.* TO 'ownpageflow'@'localhost';
flush privileges;
quit;

sudo gem install mysql2 -v '0.5.3'
sudo gem install rake
sudo gem install rainbow -v '2.2.2'
sudo gem install listen
sudo bundle install

# RAILS Starter vorbereiten

echo "cd /opt/pageflow/ownpageflow/ && foreman start" > .foreman.start
echo "cat /opt/pageflow/ownpageflow/tmp/pids/server.pid | xargs kill -9  > /dev/null && rm -rf /opt/pageflow/ownpageflow/tmp/pids/server.pid  > /dev/null" > .foreman.stop
chmod a+x .foreman*

echo '#!/bin/bash

screen -d -m -S pageflow bash /opt/pageflow/ownpageflow/.foreman.start &> /dev/null' > /usr/local/bin/pageflow.start

echo '#!/bin/bash

/opt/pageflow/ownpageflow/.foreman.stop' > /usr/local/bin/pageflow.stop

chmod a+x /usr/local/bin/pageflow*

echo '[Unit]
Description=Advanced key-value store
After=network.target
Documentation=http://redis.io/documentation, man:redis-server(1)

[Service]
Type=forking
ExecStart=/usr/local/bin/pageflow.start
ExecStop=/bin/kill -s TERM $MAINPID
PIDFile=/opt/pageflow/ownpageflow/tmp/pids/server.pid
TimeoutStopSec=0
Restart=always
User=root
Group=root
RuntimeDirectory=redis
RuntimeDirectoryMode=2755

UMask=007
PrivateTmp=yes
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
Alias=pageflow.service' > /lib/systemd/system/pageflow.service

systemctl enable pageflow.service

systemctl start pageflow.service

# NGINX Configuration erstellen

echo 'server {
  listen 80 deferred;
  server_name myhost.de;
  root /opt/pageflow/ownpageflow;

  location / {
    try_files $uri/index.html $uri.html $uri @app;
  }

  location @app {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://localhost:5000;
  }
}' > /etc/nginx/sites-available/myhost.cfg

ln -s /etc/nginx/sites-available/myhost.cfg /etc/nginx/sites-enabled

service restart nginx

# Setup LETS ENCRYPT

cd /usr/local/bin
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto --install-only

# cerbot nun nochmal ausführen und Anweisungen durchlaufen um myhost.de mit lets-encrypt zu verifizieren und anschliessend den Web-Server neu starten

certbot-auto

service nginx restart

# Damit sollte pageflow nun zunächst im Browser unter der eingerichteten Domain myhost.de erreichbar


##############################################
# PERSONALISIERUNG AWS / S3 / Amazon Services
##############################################
#
# Um AWS / S3 / Amazon Services benutzen zu können muss die Datei
#
# ./config/initializers/pageflow.rb
#
# angepasst werden. 
#
# Anschliessend sollte der Pageflow-Service neu gestartet werden.
#
# Wenn alles richtig eingerichtet wurde, kann man nun Medien via Pageflow organisieren. 
[protectedContentClose][/protectedContentClose]