Blog platform

stephen 8a2e3cc9a5 Merge branch 'captcha' of stephen/Pressr into master 1 day ago
app 7aa3a63c26 Registration captcha 1 day ago
bin 41bed356f4 First commit 4 months ago
config 7aa3a63c26 Registration captcha 1 day ago
db 7aa3a63c26 Registration captcha 1 day ago
lib dfdca2d155 Fixed carrierwave task 1 month ago
log 41bed356f4 First commit 4 months ago
public abb77841cc RSS feeds 1 month ago
storage 41bed356f4 First commit 4 months ago
test 5b5c711ea2 Sign user in when account is first created 1 day ago
tmp 41bed356f4 First commit 4 months ago
util da9f2c71b7 Docker complete! 2 months ago
.browserslistrc 41bed356f4 First commit 4 months ago
.gitignore da21b04895 Updated gitignore 3 weeks ago
.ruby-version 41bed356f4 First commit 4 months ago
Dockerfile da9f2c71b7 Docker complete! 2 months ago
Gemfile 7aa3a63c26 Registration captcha 1 day ago
Gemfile.lock 7aa3a63c26 Registration captcha 1 day ago
README.md a35800bf8c Updated readme 1 month ago
Rakefile 41bed356f4 First commit 4 months ago
babel.config.js 41bed356f4 First commit 4 months ago
config.ru 41bed356f4 First commit 4 months ago
docker-compose.yml da9f2c71b7 Docker complete! 2 months ago
dockerstart.sh da9f2c71b7 Docker complete! 2 months ago
package.json 41bed356f4 First commit 4 months ago
postcss.config.js 41bed356f4 First commit 4 months ago
webapp.conf a35800bf8c Updated readme 1 month ago
yarn.lock 41bed356f4 First commit 4 months ago

README.md

Pressr

Pressr is a multi-user, multi-blog website written in Ruby on Rails. Although it uses Javascript by default, it is still fully functional even when it is turned off.

Sample instance

My blog(Uses Pressr)

Features

  • Comments and comment replies

  • Multi-user support

  • Multi-blog support

  • Multi-page support

  • Automatic pagination

  • Image upload

  • Markdown support

  • Very lightweight

  • StatsD integration

  • Custom per-blog theming

  • RSS feeds

  • Draft posts/pages

Configuration

Database settings are configured in config/database.yml. It defaults to Postgres running on localhost.

Custom settings are configured in config/pressr.yml.

Deployment (Docker)

A sample docker-compose.yml is provided. Make sure to change the SECRET_KEY_BASE ! This is very important!

  1. Run docker-compose once

docker-compose up

  1. Terminate the process and create an admin account

docker-compose run web bash -c 'util/createAdmin.sh'

  1. Start docker compose again

docker-compose up

You will be able to access Pressr at http://localhost:3000

Deployment (Debian 10)

  1. Ensure system is up to date

sudo apt update && sudo apt upgrade

  1. Install dependencies

sudo apt install build-essential dirmngr gnupg ruby ruby-dev zlib1g-dev libruby libssl-dev libpcre3-dev libcurl4-openssl-dev rake ruby-rack dirmngr postgresql-11 nginx apt-transport-https ca-certificates curl git libpq-dev

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

sudo apt update && sudo apt install yarn

  1. Create a new user

sudo adduser deploy

sudo usermod -aG sudo deploy

sudo su deploy

cd ~

  1. Install Ruby via RVM

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

curl -sSL https://get.rvm.io | bash -s stable --ruby

source ~/.rvm/scripts/rvm

rvm install ruby-2.6.4

rvm --default use ruby-2.6.4

gem install bundler -v 2

  1. Configure Postgres

sudo su postgres

createuser deploy

psql

ALTER USER deploy CREATEDB;

exit

exit

  1. Install Pressr

git clone https://git.scd31.com/stephen/Pressr

cd Pressr

export RAILS_ENV=production

export EDITOR=nano

bundle install

rm config/credentials.yml.enc

rails credentials:edit

Edit config/database.yml and comment out username and password under the header production

rake db:create

rake db:migrate

rake assets:precompile

  1. Install Phusion

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7

sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger buster main > /etc/apt/sources.list.d/passenger.list'

sudo apt-get update

sudo apt-get install libnginx-mod-http-passenger

  1. Configure nginx

Open /etc/nginx/conf.d/mod-http-passenger.conf. Verify these lines are present:

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;

passenger_ruby /usr/bin/passenger_free_ruby;

Open /etc/nginx/sites-available/default in a text editor. Remove everything except for:

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	passenger_enabled on;
	passenger_user deploy;
	passenger_min_instances 1;
	client_max_body_size 100M;
	root /home/deploy/Pressr/public;
}

passenger_pre_start http://localhost:3000/;

Restart Nginx

sudo service nginx start

Browse to http://<your server ip> and you should see the web interface!