背景
↑にも書いた通り、産休に入って時間ができたので、以前から政策評価とか、政治参加を可能にするcivic tech的なものに興味があったので、Decidimに手を出してみた。DecidimそのものはOSSだが、国内だと一般社団法人 Code For Japanが自治体など向け(?)にDecidimを提供しているようだが、とりあえず個人でサイトを立ち上げてみる。
Decidimがどんなものが触ってみたい人はオンラインのデモもある ※スペイン語なのでちょっとビビるけど → https://try.decidim.org/
今回作ったサイトはこちら ※レンタルサーバー代がかかるようになったらcloseするかも
断り書き
筆者は元々はソフトウェアエンジニアとして新卒で採用されたものの、産休に入る直前はデータサイエンティストやML Opsに関する業務がメインだったため、業務外でレンタルサーバーを借りてサービスを運用するのは実は初めてなので、下記の手順書の中には間違っていたり不正確な記述がありえる。発見された方はコメントでお知らせいただけるとうれしい。
公式ドキュメント
ローカルでDecidimのインスタンスを動かすだけならばともかく、プロダクション環境でDecidimをインストールするためのドキュメントは結構探すのが大変だった。
試行錯誤の末、Decidim installation scriptを参考にするとうまくいった。
レンタルサーバーとしては、Install Decidim on Ubuntu 20.04の記述を参考に、DigitalOceanを利用した。上記リンクから新規ユーザ登録すると60日間有効な$200 creditが手に入るので当面実験する分には十分そう。業務外でレンタルサーバーを利用するのは初めての経験だが、AWSと比べて機能が絞り込まれているからなのか、DigitalOceanはシンプルなUIで結構使いやすい印象。
詳細な手順
- まずはDigitalOceanで4Gのメモリを持つdroplet(仮想マシン)を作成する
- Install Decidim on Ubuntu 20.04に記述通りメモリを1Gではなく4Gにしたのは、チャットルーム で質問したところメモリが足りないとbundle installするときやnpm installするときに失敗するよとアドバイスしてくれた人がいたため
- imageとしてはUbuntu 20.04を選択。Ubuntu 18.04 にするとRubyのバージョンとかで後段の処理で失敗した...
wget -O install-decidim.sh https://raw.githubusercontent.com/Platoniq/decidim-install/master/script/install-decidim.sh
chmod +x install-decidim.sh
./install-decidim.sh -h
./install-decidim.sh my-decidim
# rootとして実行すんなと怒られる
-
Initial Server Setup with Ubuntu 20.04に従って
sammy
の代わりにdecidim
というユーザを作成してスクリプトを実行 - 結構待つとインストールが終わるので、system adminとしてログインして、適切なorganizationを作成
-
Basic configuration of Decidimに従って
Email configuration
とEnabling SSL (with Let’s encrypt)
を済ませる-
Setting up Oauth authentication
以降はまだできていない
-
- 結局実行したコマンドをまとめると
wget -O install-decidim.sh https://raw.githubusercontent.com/Platoniq/decidim-install/master/script/install-decidim.sh
chmod +x install-decidim.sh
./install-decidim.sh my-decidim
vim my-decidim/config/application.yml #4行追加
cd my-decidim/
vim config/initializers/decidim.rb
sudo vim /etc/sysctl.conf
sudo sysctl -p
sudo passenger-config restart-app ~/my-decidim
- ここでエラー
- 途中でつまった気もするがHow To Secure Nginx with Let's Encrypt on Ubuntu 20.04をみて解決できた記憶...
- ドメイン名を購入し、Point to DigitalOcean Nameservers From Common Domain Registrars を参考にnameserverなどの設定をする ※IONOSの旧名称の1&1の説明に従う
- 初めてのユーザーは最初の1年1ドルだったのでIONOSを利用することに
- 独自ドメインにDigitalOcean DNSを使用する の説明もわかりやすかった
- とりあえずAレコードが反映されるまで一晩待った
sudo apt install -y python3-certbot-nginx
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo ufw status
sudo certbot --nginx -d suginami-unofficial.com # これは自分で契約したドメイン
日本語化
vim ~/my-decidim/config/initializers/decidim.rb #:ja 追加
cd my-decidim/
bin/rails c
# データベース操作画面で
o=Decidim::Organization.find(1)
o.available_locales
o.available_locales += ["ja"]
o.default_locale = "ja"
o.save!
sudo passenger-config restart-app ~/my-decidim
今後のTODO
- https://platoniq.github.io/decidim-install/basic-config/#setting-up-oauth-authentication を設定してtwitterとかでログインできるようにしたい...