Prismo

Posted on
Prisom Reddit clone

Prismo をインストールしてみたが、ドキュメントが腐っているという、オープンソースフリーソフトにありがちなものだったので、インストール手順をまとめておく。

  • ソースgit clone https://gitlab.com/prismosuite/prismoとかして ダウンロードする。
  • ruby 2.5.1 が必要なので、rvm なり、rbenv なりで環境を整えておく。おすすめは、rbenv。
  • Node.JS 10.x と yarn が必要なので、インストールしておく。
  • bundler をインストール。gem isntall bundler
  • sidekiq をインストール。gem install sidekiq
  • Gemfile を修正する。
--- Gemfile.orig	2019-06-26 09:30:35.440184122 -0700
+++ Gemfile	2019-06-26 06:50:29.313718143 -0700
@@ -77,17 +77,19 @@
 gem 'webmention'
 gem 'webmention-endpoint'
 gem 'doorkeeper'
+gem 'listen', '>= 3.0.5', '< 3.2'
+gem 'bullet'

 group :development, :test do
   gem 'dotenv-rails'
   gem 'byebug', platforms: %i[mri mingw x64_mingw]
-  gem 'bullet'
+  # gem 'bullet'
   gem 'rspec-rails', '~> 3.7'
 end

 group :development do
   gem 'web-console', '>= 3.3.0'
-  gem 'listen', '>= 3.0.5', '< 3.2'
+  #gem 'listen', '>= 3.0.5', '< 3.2'
   gem 'spring'
   gem 'spring-watcher-listen', '~> 2.0.0'
   gem 'spring-commands-rspec'
@@ -118,4 +120,3 @@

 # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
 gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby]
  • bundle instlal --without development test
  • yarn
  • bundle exec rails assets:precompile RAILS_ENV=production
  • bundle exec rails secret で、SECRET_KEY を取得しておく。
  • 以下の環境変数を設定する。あとで、sidekiq の設定をするので、スクリプトにまとめておくと便利。名前は仮に、sidekiq.env としておく。
#! /bin/bash

export RAILS_ENV=production
export DB_NAME=prismo
export DB_USER=prismo
export DB_PASS=password
export DB_HOST=localhost
export REDIS_URL=redis://localhost:6379/1
export SECRET_KEY_BASE=[`bundle exec rails secret`で取得した値]
export LOCAL_DOMAIN=example.com
export WEB_DOMAIN=example.com
export S3_ENABLED=true
export S3_BUCKET=prosmo
export AWS_ACCESS_KEY_ID=[AWS S3 のアクセスキー]
export AWS_SECRET_ACCESS_KEY=[AWS S3 のシークレットキー]
export S3_REGION=us-east-1
export S3_HOSTNAME=https://s3.amazonaws.com
export SMTP_DOMAIN=example.com
export SMTP_SERVER=example.com
export SMTP_PORT=25
export SMTP_FROM_ADDRESS=no-reply@example.com
  • Passenger を使う場合は、ここでインストールする。ウェブサーバー用のモジュールを作成して、a2enmod で有効にしておくことを忘れない。
  • ウェブサーバーを設定する。例えば、apache なら以下の通り。
<VirtualHost *:80>
	ServerName example.com
	ServerAlias www.example.com
	RewriteEngine on
	RewriteCond %{SERVER_NAME} =example.com [OR]
	RewriteCond %{SERVER_NAME} =www.exmaple.com
	RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>


<IfModule mod_ssl.c>
<VirtualHost *:443>

	ServerName example.com
	ServerAlias www.example.com
	ServerAdmin webmaster@example.com

	Include /etc/letsencrypt/options-ssl-apache.conf
	SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
	SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

	SetEnv NODE_ENV prod
	SetEnv REDIS_URL redis://localhost:6379/1
	SetEnv DB_HOST localhost
	SetEnv DB_USER prismo
	SetEnv DB_NAME prismo
	SetEnv DB_PASS db-password
	SetEnv DB_PORT 5432
	SetEnv SECRET_KEY_BASE (bundle exec rails secret で取得した値)
	SetEnv LOCAL_DOMAIN example.com
	SetEnv S3_ENABLED true
	SetEnv S3_BUCKET prosmo
	SetEnv AWS_ACCESS_KEY_ID (S3のアクセスキー)
	SetEnv AWS_SECRET_ACCESS_KEY (S3 のシークレットキー)
	SetEnv S3_REGION us-east-1
	SetEnv S3_HOSTNAME https://s3.amazonaws.com

	RailsEnv production

	DocumentRoot /srv/prismo/public
	<Directory "/srv/prismo/public">
		Options SymLinksIfOwnerMatch
		AllowOverride All
		Require all granted
	</Directory>

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
  • ここで、指定した URL にアクセスして正常に表示されることを確認する。
  • 次に sidekiq 起動スクリプトを作成する。以下は、rbenv を使って ruby をインストールした場合の例である。
#! /bin/sh

PATH="/srv/prismo/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

source /srv/prismo/sidekiq.env

bundle exec sidekiq -q default -q mailers -q pull -q push
  • OS 起動時に自動的に起動するよう、systemd のサービスファイルを作成する。名前は、仮に、/lib/systemd/system/prismo.service とする。
[Unit]
Description=Prismo - a link aggregator
After=network.target

[Service]
Type=simple
User=prismo
WorkingDirectory=/srv/prismo
ExecStart=/srv/prismo/sidekiq.sh
Restart=on-abort

[Install]
WantedBy=multi-user.target
  • sidekiq を起動する。
sudo systemctl enable prismo
sudo system start prismo
  • ここでブラウザに戻って、ユーザー登録を行い、確認メールが配送されることを確かめる。
  • 確認メールの confirm my account というリンクをクリックして、ログインする。