Skip to content

Instantly share code, notes, and snippets.

@mamemomonga
Last active August 21, 2019 09:24
Show Gist options
  • Save mamemomonga/858c441d585da548a60d2ff4a52dffbc to your computer and use it in GitHub Desktop.
Save mamemomonga/858c441d585da548a60d2ff4a52dffbc to your computer and use it in GitHub Desktop.
PleromaをGCE Allways Freeで使いたい。

PleromaをGCE Allways Freeで使いたい。

まめもま2と名付けたPleromaをタダでつかいたい。

まめもまGCE: Pleromaのインストール

mamemoma2.mamemo.online 、PleromaをGCEのf1-microで動かすメモです。

とりあえず動いた、というところまでです。

ヒアドキュメントのペーストについて

sudo sh -xe << 'EOS'
echo "Hello"
EOS

みたいな部分は、EOSを含む最初の行から最後のEOSまでをまるっとコピペすると一気に動きます。

2つのユーザ

GCEに直接ログインできるユーザはsudoでrootになれます。この先の作業でそれとは別に「pleromaユーザ」をつくります。 「rootになれるユーザ」と「pleromaユーザ」をいったりきたりするので、ターミナルやPuTTYを2つひらいて作業するとよいとおもいます。

Always Free

一定条件を満たせば、GCPはずっと無料になるみたいです。その条件とは

  • 1 f1-micro インスタンス(1 か月あたり、バージニア州北部を除く米国リージョンのみ)
  • 30 GB の HDD(期間合計)、5 GB のスナップショット(期間合計)
  • 1 GB の北米から全リージョン宛ての下りネットワーク(1 か月あたり、中国とオーストラリアを除く)

らしいです。ただ、外国からSSH攻撃とかあると若干カウントされるみたいなので、多少課金される場合があるみたいです。

くわしくはこちら

準備

ひとまず GCEで オレゴン(us-west1)にf1-micro, Debian9でVMインスタンスをつくります。ブートディスクは標準の永続ディスクで、30GBの無料枠一杯でわりあてます。外部 IPは静的にします。(VMを破棄した場合このIPの解放を忘れると課金されるので注意)

アップデート

アップデートして再起動する

sudo sh -xe << 'EOS'
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get -y dist-upgrade
apt-get -y autoremove
apt-get autoclean
reboot
EOS

しばらくまって再度SSHで接続します。次に、elixirなどを導入

sudo sh -xe << 'EOS'
export DEBIAN_FRONTEND=noninteractive
apt-get -y install git build-essential openssl ssh sudo postgresql-9.6 postgresql-contrib-9.6
wget -P /tmp/ https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i /tmp/erlang-solutions_1.0_all.deb
apt-get update
apt-get -y install elixir erlang-dev erlang-parsetools erlang-xmerl erlang-tools
EOS

ユーザの作成します

sudo groupadd -g 10000 pleroma
sudo useradd -g 10000 -u 10000 -s /bin/bash -m pleroma

もうひとつターミナルを開いて、SSH接続します。そのあと、以下のコマンドでpleromaユーザになります。

sudo su - pleroma

以下、sudoでootになれるユーザを「rootになれるユーザ」、pleromaユーザを「pleromaユーザ」としてすすめます。

pleromaユーザでpleromaをビルド

cd ~

sh -xe << 'EOS'
git clone https://git.pleroma.social/pleroma/pleroma
cd ~/pleroma
mix local.hex --force
mix local.rebar --force
mix deps.get
mix generate_config
EOS

mix generate_config がエラーになってしまうので、再度実行します。ここで、サイト情報を設定します。

mix generate_config

configをコピーします

cp config/generated_config.exs config/prod.secret.exs

rootになれるユーザでDBを作成します

sudo su postgres -c 'psql -f /home/pleroma/pleroma/config/setup_db.psql'

pleromaユーザでマイグレーション実行します

cd pleroma
MIX_ENV=prod mix ecto.migrate

nginx導入からLet's Encrypt適用まで にすすみます。

まめもまGCE: nginx導入からLet's Encrypt適用

以下、rootになれるユーザですすめます。

nginxとcertbotの導入

sudo apt-get install -y nginx certbot

Web認証用のディレクトリをつくる

sudo mkdir -p /etc/letsencrypt/webroot/mamemoma2.mamemo.online

認証用のnginx設定をつくる

sudo sh -c 'cat > /etc/nginx/sites-available/mamemoma2.conf' << 'EOS'
server {
  listen 80;
  server_name mamemoma2.mamemo.online;
  location /.well-known {
     root /etc/letsencrypt/webroot/mamemoma2.mamemo.online;
   }
   location / {
      return 404;
   }
}
EOS

デフォルトの設定を無効にする

sudo rm /etc/nginx/sites-enabled/default

認証用のnginx設定を有効にする

sudo ln -s /etc/nginx/sites-available/mamemoma2.conf /etc/nginx/sites-enabled/mamemoma2.conf

nginx再起動

sudo systemctl restart nginx

http://mamemoma2.mamemo.online/ が 404になるのを確認

証明書を取得する

[email protected] は自分のアドレスに書き換えてください。

sudo certbot certonly \
  -d mamemoma2.mamemo.online \
  -m [email protected] \
  --webroot \
  --webroot-path /etc/letsencrypt/webroot/mamemoma2.mamemo.online

なんか確認がでるので Agree する。Congratulations!っていわれたらできあがり。

次にhttpsを有効にする

sudo sh -c 'cat > /etc/nginx/sites-available/mamemoma2.conf' << 'EOS'
server {
  listen 80;
  server_name mamemoma2.mamemo.online;
  location /.well-known {
     root /etc/letsencrypt/webroot/mamemoma2.mamemo.online;
   }
   location / {
      return 404;
   }
}
server {
   listen 443 ssl http2;
   server_name mamemoma2.mamemo.online;
   ssl_protocols TLSv1.2;
   ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:10m;
   ssl_certificate     /etc/letsencrypt/live/mamemoma2.mamemo.online/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/mamemoma2.mamemo.online/privkey.pem;
   location / {
      root   /usr/share/nginx/html;
      index  index.html index.htm;
   }
}
EOS

nginx再起動

sudo systemctl restart nginx

https://mamemoma2.mamemo.online/ で WelcomeがでればOK

Pleroma向けnginxの設定に進みます

Pleroma向けnginxの設定

rootになれるユーザで pleroma用のnginx設定で上書き

sudo sh -c "cat /home/pleroma/pleroma/installation/pleroma.nginx | perl -nle 's#example.tld#mamemoma2.mamemo.online#; print' > /etc/nginx/sites-available/mamemoma2.conf"

nginx再起動

sudo systemctl restart nginx

pleromaの起動

systemctl Unit ファイルを作成して、起動の設定をします

rootになれるユーザで

sudo sh -c 'cat > /etc/systemd/system/pleroma.service' << 'EOS'
[Unit]
Description=Pleroma social network
After=network.target postgresql.service

[Service]
User=pleroma
WorkingDirectory=/home/pleroma/pleroma
Environment="HOME=/home/pleroma"
Environment="MIX_ENV=prod"
ExecStart=/usr/local/bin/mix phx.server
ExecReload=/bin/kill $MAINPID
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=pleroma.service
EOS

つぎは自動起動有効化

sudo systemctl enable pleroma

なんかでてきた

Failed to enable unit: File /etc/systemd/system/pleroma.service already exists.

たけど大丈夫っぽい

起動!

sudo systemctl start pleroma

状態確認!

sudo systemctl status pleroma

なんかでてきた

Active: active (running)

うまくいってるっぽい

https://mamemoma2.mamemo.online/ をみたらきちんとページでてくる

お一人様モード

(設定にはvimエディタをつかいます。vimはちょっと慣れが必要ですので、nanoエディタのほうがつかいやすいかもしれません。vimってところをnanoにかえてください)

つぎにふつーにユーザ登録してお一人様モードに切り替える。 ユーザ登録が完了したら

pleromaユーザで

cd ~/pleroma
vim config/prod.secret.exs

registrations_open: true を registrations_open: false

にして、sudoできるユーザで

sudo systemctl restart  pleroma

をする。再起動には時間かかるので、

journalctl -fu pleroma

でログをモニタして

Running Pleroma.Web.Endpoint with Cowboy using http://0.0.0.0:4000

とかでてくれば起動してる、ログの閲覧は CTRL+Cで中断

参考URL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment