MastodonインスタンスをHerokuだけで立てる

最近Mastdonが流行っているらしいので
お金をかけずにMastdonインスタンスをHerokuのみで立ててみます。

注意

  • 本手順ではS3(ストレージ)を利用しないので、アイコンやヘッダーなどは保存されません。
  • 自分1人用のインスタンスにするつもりで作ってます。
  • 「Herokuのみ」に拘っており、他の無料ツールと組み合わせることもできますが、やってません。

■参考にしたサイト

■手順(インスタンス生成編)

Herokuのアカウントを持っていなければアカウント作成します。
アカウント作成はコチラから。

mastodon公式のHerokuページにて「Deploy to Heroku」ボタンをクリックする。

Herokuのアプリ新規作成画面が開くので、以下を入力します。

  • AppName: 作成するアプリ名
  • LOCAL_DOMAIN: {上記のAppName}.herokuapp.com
  • S3_ENABLED: false
  • SINGLE_USER_MODE: true

上記入力が完了したら『Deploy』ボタンをクリックします。

私の場合はここでクレジットカード情報を入力する画面が出ましたが、既にHerokuを使っていて無料枠を使い切っていたから出たのかもしれません。
ど新規でHeroku登録していれば、何も出ないかもしれません。

Deployが完了したら、Heroku管理画面の「Resources」画面にて「worker」をONにします。
右側のエンピツマークをクリックしたらON/OFFを切り替えできるようになります。

ここまでで、マストドンのインスタンス生成は完了です。

■手順(アカウント登録編)

普通ならアカウント登録をし、登録したメールアドレスに届いたメールのリンクをクリックすれば
アカウント登録は完了なのですが、今回はメールサーバーの設定もしてないので、
無理やりDBを参照して進めます。

まず、Heroku管理画面の「Resources」画面にて、『Heroku Postgres :: Database』をクリックします。
するとPostgreSQLの管理画面へ遷移するので、『View Credentials』をクリックし、
「Heroku CLI」(heroku pg:psql〜)を確認しておきます。
※後ほど利用するHeroku CLIのコマンドです。

ブラウザで『{AppName}.herokuapp.com』へアクセスするとアカウント作成画面が開くので
普通にアカウント登録します。

次に、Heroku CLIをインストールします。
インストール手順はコチラにまとまってます。

ローカルPCにPostgreSQLが入っていないなら、インストールしておきます。
Macなら以下コマンドでインストールできます。

brew install postgresql

PostgreSQLが使える状態になったら、HerokuのDBへ接続して
メールアドレス確認用のtokenを確認します。

# ローカルPCのターミナルにて、確認した「Heroku CLI」コマンドを実行
heroku pg:psql postgresql-fitted-xxxxxx --app {AppName}
# DB操作モードに切り替わるので、DBよりtokenをselectする
select email, confirmation_token from users;

上記コマンドでtokenが表示されるので、それを含めた以下のURLへブラウザでアクセスします。
https://{AppName}.herokuapp.com/auth/confirmation?confirmation_token={上記で確認したtoken}

これでメールアドレスの確認も完了し、Mastdonを利用開始できます。

Share

Redmine2.3.2にグループ管理プラグインを入れる

redmineにグループ管理のプラグインを入れたが、ちゃんと動かなかったので
つまづいた所をメモする。
※補足
Ruby on Railsを全然知らないPHPerがちょちょっと修正しているので、
Railsに詳しい人から見たらおかしいかも。指摘してくれるとありがたいです。

■環境
CentOS 6.5
Redmine 2.3.2
ruby 2.0.0
rails 3.2.13

https://github.com/fathomssen/redmine_group_manager
基本的なインストール方法はREADME.rdoc通り

①order by句がおかしい

オーダー句がおかしいとエラーになったので、app/models/gmanager.rbの9行目を修正した
【修正前】

mem = Member.where(:project_id => pid).order(user_id: :asc)

【修正後】

mem = Member.where(:project_id => pid).order("user_id asc")

②オーナー未指定のグループがあると動かない

まあ、インストール直後は全てのグループにオーナーが指定されていないのですが、
オーナーが未指定の場合はユーザテーブルのID=1のユーザがオーナーになるそうです。
(app/helpers/gmanagers_helper.rbの28行目参照)

私の環境ではID=1のユーザが既に削除されていたので、
新しくID=1で絶対的管理者的存在のユーザを作成しました。
別IDで絶対的管理者がいるなら、上記のヘルパーを修正するのでも良いと思います。
(個人のIDにしてしまうと退職した際などに困るのでオススメしません)

③グループ編集タグがredmine管理者にしかでない

各プロジェクトページにてグループ編集タブが表示されるはずなのですが、
プラグインを入れた時点ではredmineの管理者でなければタブが表示されていませんでした。
プロジェクトの管理者にグループ編集機能を使わせたい場合は、redmine管理者メニューの
『管理 > ロールと権限』からグループ編集権限を予め付与しておかなければなりません。
説明をよく読めば書いてあるのかもしれませんが、英語辛いので斜め読みしてました。すみません。

④グループメンバー一覧の項目順がおかしい

各プロジェクトのグループ編集タブよりグループメンバー一覧を表示すると、
カスタムフィールドの項目名と値の並び順が一致していませんでした。
なので、一致するようソート処理を入れます。

app/models/gmanager.rbの34行目と48行目に同じ修正を入れる。
【修正前】

keys = CustomField.where(:type => 'UserCustomField')

【修正後】

keys = CustomField.where(:type => 'UserCustomField').order(:id)

app/models/gmanager.rbの49行目も修正する。
【修正前】

values = User.find(id).custom_values

【修正後】

values = User.find(id).custom_values.order(:custom_field_id)

これで動くようになりました。

〜番外編〜

このプラグインはプロジェクトに所属している人をグループに追加することしかできません。
私はプロジェクトに所属していないユーザもグループ追加できるようにしたかったので、
プラグインを大幅に修正しました。

プロジェクトに未所属のメンバーもグループに追加できるようにしたプラグインは
こちらです。
https://github.com/mildjester/redmine_group_manager

Share