docker-ceがUbuntu16.04.2 LTSに入らないとき

wget http://launchpadlibrarian.net/236916213/libltdl7_2.4.6-0.1_amd64.deb
sudo dpkg -i libltdl7_2.4.6-0.1_amd64.deb
sudo add-apt-repository ppa:ubuntu-sdk-team/ppa
sudo apt-get update
sudo apt-get install docker-ce

これでいいみたい。外部のdebパッケージ入れてるみたいなので取扱要注意。

参考とソース元:
ubuntu16.04 安装docker-ce,解决libltdl7版本过低的问题。 – 简书
docker-ce : Depends: libseccomp2 (>= 2.3.0) but 2.2.3-3ubuntu3 is to be installed

起動中のDockerコンテナ内にホストのDNSサーバーを登録する

基本的に異なるDockerコンテナ内でDNSサーバを使う場合は、こちらに書かれているように –link や –dns を使うとよいでしょう。

もしも、この–linkや–dnsを設定し忘れたりした場合に簡単にDNSサーバーを登録する方法をご紹介します。

docker ps -q | xargs -I{} docker exec -i {} sh -c 'echo "nameserver (ここにDNSサーバのIP)" >> /etc/resolv.conf'

はい、お疲れ様でした。
DNSサーバに関してはこちらがおすすめです。

dnsmasqで始めるプライベートDNSサーバ – GeekFactory

なんと! Dockerホストに入れさえすれば、ホストの /etc/hostsを見てくれるようになります。

AWS Lightsail向けのマストドン構築用Ansibleレシピ作ったよ

AWS LightsailというVPS

最近コスパがすごくよくて、立ち上げも簡単なAWS LightsailというVPSがあります。
AWSアカウントがあれば、めんどうなロードバランサの設定やVPCの設定、固定IPの発行も楽に行うことが出来ます。

Ansibleスクリプト

スクリプトはこちらです。

https://github.com/nacika-ins/ansible-mastodon-amznlinux

localhost用になっているので、Lightsail内で実行してみてください。
Amazon Linux 2018.03.0 に対応しています。

途中、certbotの設定などでスクリプトがとまることがあるので、そのときは手動実行をします。

[v2.5.2対応] Macでマストドンの開発環境構築

参考: Vagrant や Docker を使わずに macOS でマストドンの開発環境を構築する – Qiita

まずは開発ガイドラインを読もう

マストドン公式 開発ガイドライン
https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Development-guide.md

.env.productionの修正

マストドンのソースが手元にある状態にしてまず最初にやるのがこのファイルの編集です。
下記の部分を変更していきます。

LOCAL_DOMAIN

localhost:3000

SECRET_KEY_BASE と OTP_SECRET

docker-compose run --rm -e RAILS_ENV=production web bundle exec rake secret

を二回叩いてちゃちゃっと設定します。

VAPID_PRIVATE_KEY と VAPID_PUBLIC_KEY

docker-compose run --rm web rake mastodon:webpush:generate_vapid_key

を一度だけ実行してコピペして貼り付けます。

SINGLE_USER_MODE

おひとりさまインスタンスにしたいときは

SINGLE_USER_MODE=true

複数アカウント作りたいときは

SINGLE_USER_MODE=false

にします。

アカウント新規作成画面やログイン画面にアクセスしようとするとID1番のユーザーのページに飛ぶ挙動になります。

DEFAULT_LOCALE

ja

日本語を使うので日本にします。

SMTP関係

SMTP_SERVER=localhost
SMTP_PORT=587
SMTP_LOGIN=
SMTP_PASSWORD=
SMTP_FROM_ADDRESS=notifications@example.com

使わないのでこうします。

compileをwebpacker-dev-server経由にする

sed -i 's/compile: true/compile: false/' config/webpacker.yml

rubyのインストール

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
# 一度ここでシェルをログインし直す
cd ~/ws/mastodon
RUBY_VERSION=`cat .ruby-version`
echo $RUBY_VERSION
rbenv install $RUBY_VERSION
rbenv rehash
rbenv global $RUBY_VERSION
ruby -v

yarnのインストール

npm i -g n
n stable
npm -v
node -v
npm i -g yarn # brew install yarn でも良いかも

必要ライブラリのインストール

brew install autoconf ffmpeg gcc gdbm imagemagick libffi libidn libxml2 libxslt libyaml openssl pkg-config protobuf readline postgresql

ライブラリを個別インストール

CUR_RUBY_VERSION=`rbenv version | awk '{print $1}'`
echo $CUR_RUBY_VERSION
IDN_VERSION=`idn --version | head -n 1 | awk '{print $4}'`
echo $IDN_VERSION
NOKOGIRI_VERSION=`grep nokogiri Gemfile | egrep -ioh '[0-9\.]+'`
echo NOKOGIRI_VERSION
gem install nokogiri -v "$NOKOGIRI_VERSION" -- --use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2
gem install idn-ruby -- --with-idn-dir=/usr/local/Cellar/libidn/$IDN_VERSION
## cld3のインストールがうまくいかないときは https://github.com/akihikodaki/cld3-ruby#openbsd こちらを試す
gem install cld3

postgres初期化と起動

pg_ctl -D /usr/local/var/postgres start
initdb /usr/local/var/postgres -E utf8
brew services start postgresql

yarn install

yarn install

db:migrate

RAILS_ENV=development rake db:migrate

bundle install

gem install bundler
rbenv rehash
bundle install

高確率でcld3がエラーとなる。こちらを試そう。

install redis

brew install redis
brew services start redis

Railsサーバー起動

RAILS_ENV=development bundle exec rails server

Webpackサーバー起動

RAILS_ENV=development NODE_ENV=development ./bin/webpack-dev-server --listen-host 0.0.0.0

sidekiq 起動

env PORT=3000 RAILS_ENV=development bundle exec sidekiq

streaming 起動

env PORT=4000 NODE_ENV=development RAILS_ENV=development yarn run start

admin作成

> 管理画面からアカウントを作成する
RAILS_ENV=development rails mastodon:confirm_email USER_EMAIL=admin@example.com
RAILS_ENV=development rails mastodon:make_admin USERNAME=admin
RAILS_ENV=development rails mastodon:confirm_email USER_EMAIL=guest@example.com
RAILS_ENV=development rails mastodon:make_admin USERNAME=guest

Macの開発環境でcld3-rubyがコンパイルできない時の対処法

Mastodonでは、 cld3-rubyをがっつり使っているために、これがないとまともに動かない。
実はこの対処方法、公式に載っている。

"pkg-config --exists protobuf"
| pkg-config --libs protobuf
=> "-L/usr/local/Cellar/protobuf/3.6.1/lib -lprotobuf -pthread\n"
"clang -o conftest -I/Users/user/.rbenv/versions/2.5.1/include/ruby-2.5.0/x86_64-darwin17 -I/Users/user/.rbenv/versions/2.5.1/include/ruby-2.5.0/ruby/backward -I/Users/user/.rbenv/versions/2.5.1/include/ruby-2.5.0 -I. -I/Users/user/.rbenv/versions/2.5.1/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -O3 -Wno-error=shorten-64-to-32 -pipe conftest.c -L. -L/Users/user/.rbenv/versions/2.5.1/lib -L. -L/Users/user/.rbenv/versions/2.5.1/lib -fstack-protector -L/usr/local/lib -lruby.2.5.1-static -framework Foundation -lpthread -ldl -lobjc "
ld: warning: text-based stub file /System/Library/Frameworks//Foundation.framework/Foundation.tbd and library file /System/Library/Frameworks//Foundation.framework/Foundation are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//CoreFoundation.framework/Versions/A/CoreFoundation.tbd and library file /System/Library/Frameworks//CoreFoundation.framework/Versions/A/CoreFoundation are out of sync. Falling back to library file for linking.
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main(int argc, char **argv)
4: {
5: return 0;
6: }
/* end */
"clang -o conftest -I/Users/user/.rbenv/versions/2.5.1/include/ruby-2.5.0/x86_64-darwin17 -I/Users/user/.rbenv/versions/2.5.1/include/ruby-2.5.0/ruby/backward -I/Users/user/.rbenv/versions/2.5.1/include/ruby-2.5.0 -I. -I/Users/user/.rbenv/versions/2.5.1/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -O3 -Wno-error=shorten-64-to-32 -pipe conftest.c -L. -L/Users/user/.rbenv/versions/2.5.1/lib -L. -L/Users/user/.rbenv/versions/2.5.1/lib -fstack-protector -L/usr/local/lib -lruby.2.5.1-static -framework Foundation -L/usr/local/Cellar/protobuf/3.6.1/lib -lprotobuf -pthread -lpthread -ldl -lobjc "
ld: warning: text-based stub file /System/Library/Frameworks//Foundation.framework/Foundation.tbd and library file /System/Library/Frameworks//Foundation.framework/Foundation are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//CoreFoundation.framework/Versions/A/CoreFoundation.tbd and library file /System/Library/Frameworks//CoreFoundation.framework/Versions/A/CoreFoundation are out of sync. Falling back to library file for linking.
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main(int argc, char **argv)
4: {
5: return 0;
6: }
/* end */
| pkg-config --cflags-only-I protobuf
=> "-I/usr/local/Cellar/protobuf/3.6.1/include\n"
| pkg-config --cflags-only-other protobuf
=> "-pthread\n"
| pkg-config --libs-only-l protobuf
=> "-lprotobuf\n"
package configuration for protobuf
cflags: -pthread
ldflags: -L/usr/local/Cellar/protobuf/3.6.1/lib -pthread
libs: -lprotobuf

公式リポジトリに書いてあった

これをやるだけでした。

[v2.5.2対応] Dockerでらくらく!マストドンの開発環境構築

タイトルは釣りです。Dockerが入っている環境前提での作業環境構築の備忘録です。

参考: Vagrant や Docker を使わずに macOS でマストドンの開発環境を構築する – Qiita

Docker使わない版も用意しました!

Docker使わない環境構築はこちら

まずは開発ガイドラインを読もう

マストドン公式 開発ガイドライン
https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Development-guide.md

.env.productionの修正

マストドンのソースが手元にある状態にしてまず最初にやるのがこのファイルの編集です。
下記の部分を変更していきます。

LOCAL_DOMAIN

localhost:3000

SECRET_KEY_BASE と OTP_SECRET

docker-compose run --rm -e RAILS_ENV=production web bundle exec rake secret

を二回叩いてちゃちゃっと設定します。

VAPID_PRIVATE_KEY と VAPID_PUBLIC_KEY

docker-compose run --rm web rake mastodon:webpush:generate_vapid_key

を一度だけ実行してコピペして貼り付けます。

SINGLE_USER_MODE

おひとりさまインスタンスにしたいときは

SINGLE_USER_MODE=true

複数アカウント作りたいときは

SINGLE_USER_MODE=false

にします。

アカウント新規作成画面やログイン画面にアクセスしようとするとID1番のユーザーのページに飛ぶ挙動になります。

DEFAULT_LOCALE

ja

日本語を使うので日本にします。

SMTP関係

SMTP_SERVER=localhost
SMTP_PORT=587
SMTP_LOGIN=
SMTP_PASSWORD=
SMTP_FROM_ADDRESS=notifications@example.com

使わないのでこうします。

docker-compose.ymlの編集

web

command: tail -f /mastodon/README.md
volumes: - ./:/mastodon
ports: - "127.0.0.1:3000:3000"

commandの行を書き換えておきます。
こうすることで、コンテナが落ちなくなります。
volumesはソースファイルをコンテナ内外から直接編集できるようにするためです。

ここまできたら

docker-compose up -d

で起動します。

コンテナに入るには、

docker-compose exec web bash

これで入ります。

rootで入りたい場合は、

docker-compose exec --user root web bash

で入ります。

migrate

dbのセットアップをします。

docker-compose run -e RAILS_ENV=development --rm web rake db:migrate

これだけでOK。

[webコンテナ内] yarn

yarn
yarn install --dependencies
yarn add webpack-dev-server --dependencies

基本的にはyarnだけでOKですが、トラブルシュート的に3行

[webコンテナ内] development許可

sed -i 's|BUNDLE_WITHOUT: "test:development"||g' /usr/local/bundle/config

[webコンテナ内] Rails側でアセットのコンパイルをしない

sed -i 's/compile: true/compile: false/' config/webpacker.yml

[webコンテナ内] bundle install

bundle install

[webコンテナ内] webpacker:install

RAILS_ENV=development rails webpacker:install

不要かもしれませんが念の為・・・。
全てnで解答します。

[webコンテナ内] 環境設定

echo 'export RAILS_ENV=development' >> ~/.bashrc
echo 'export NODE_ENV=development' >> ~/.bashrc
source ~/.bashrc

[webコンテナ内] rails起動

RAILS_ENV=development bundle exec rails server

[webコンテナ内] webpack –watch起動

vim config/webpack/development.js

してから、

watchOptions: { poll: 1000
}

を追加、これで1秒ごとにファイルの変更を監視します。

NODE_ENV=development RAILS_ENV=development yarn build:development --watch

こちらで監視のスタートとアセットのコンパイルをするようになります。
差分変更に対応しているのでファイル変更時はコンパイルが早いです。

localhost:3000にアクセス

http://localhost:3000 にアクセスして起動していることを確認します。

[webコンテナ内] admin作成

まずはじめに、管理画面からアカウントを作成します。

RAILS_ENV=development rails mastodon:confirm_email USER_EMAIL=admin@example.com
RAILS_ENV=development rails mastodon:make_admin USERNAME=admin

[webコンテナ内] alpine linuxの環境改善

docker-compose exec --user root web bash

でrootでログイン後、

apk update
apk add --update alpine-sdk
apk add vim tmux wget curl lsof tree sudo

を実行しておくと使いやすくなると思います。

LiveReload

コンテナの外での作業です。ファイルが変更されたら、自動的にブラウザをリロードします。
LiveReload というChrome拡張をインストールします。

livereload本体は、下記URLの手順でインストールします。

Winの場合: http://livereload.com/
Macの場合: http://macappstore.org/livereload/

Mac版は App Storeでは有料ですが、それ以外のインストール手段では無料です。npm版もあります。

アセットコンパイルに時間がかかるので3秒後にブラウザをリロードするようにしてlivereloadを起動します。

livereload . --wait 3000

1分でわかるMastodon入門

この記事は、はじめてMastodonを始めようとしている人のための記事です。

インスタンスの選び方

マストドン流速計 というサイトがあります。 このサイトでは、インスタンスがアクティブな順で並んでいるのでインスタンスを選びやすいです。

各リンクからはローカルタイムラインの(インスタンスの中のタイムラインのこと)を覗き見ることができるので、インスタンスの雰囲気をアカウントを作らなくても知ることが出来ます。

アプリ

アプリは、様々な種類があります。

Tootdon

対応OS: iOS, Android

音声読み上げにも対応している安定しているクライアントです。

Pawoo

iOS: https://itunes.apple.com/jp/app/id1229070679
Android: https://play.google.com/store/apps/details?id=jp.pxv.pawoo&hl=ja

Pixivが作ったマストドンクライアントアプリです。

friends.nico

iOS: https://itunes.apple.com/jp/app/friends-nico/id1230158182?mt=8
Android: https://play.google.com/store/apps/details?id=nico.friends.android&hl=en

ドワンゴが開発したマストドンクライアントアプリです。

SubwayTooter

対応OS: Android

Androidのみですが、人気が高いクライアントアプリです。開発者自身も積極的にマストドンを利用しているようです。
マルチカラムタイムラインが非常に良い。

Tusky

対応OS: Android

使い勝手が良いマストドンのクライアントアプリです。
Androidで軽快に動作します。

Tootle

対応OS: iOS

なかなかこちらも人気のクライアントアプリで名前がよく出てきます。
色のカスタマイズが可能。

ニュース系アカウント

マストドンは、自分が参加しているインスタンス以外の投稿も連合タイムラインから流れてきます。
そこからおすすめのアカウントを紹介していきます。

地震・津波情報

全国の震度1以上の地震をお知らせしてくれます。

RSS Feeeder/LTL News

・JPNIC
・週刊アスキー
・Cisco
・WWW.BLUECORE.NET
・Yahooニュース/地方&IT
・CNET ネットワーク・ブログ
・Homenoc Operator’s Group
のニュースが流れていきます。

ねとらぼ(RSSfeed)

ITMediaのねとらぼの新着ニュースが流れます。

ニュース速報

普通のニュースが流れています。

NHK NEWS(非公式)

NHK NEWSのリンクが流れます。

hotentry

はてなブックマークのホッテントリが流れます。

画像収集

マストドン検索ポータルで Pawoo を検索するといったスタイルで画像検索ができるようです。
ここからお気に入りの絵描きさんをフォローしたりすることができます。

リモートフォローの仕方

検索窓に、フォローしたいアカウントのURLを入れるとフォローすることができます。

[WIP] Google+閉鎖騒動時系列まとめ

この記事ではGoogle+の閉鎖における流れをまとめていきます。
基本的に日本界隈で観測した事象です。

2018-08-24

2018-10-08

  • 米国時間10月8日
  • Google Cloud Next カンファレンスで 個人情報の流出を理由として Google+の終了が宣言された

2018-10-09

  • 移民先(Google+民)候補として、「pluspora.com」があげられ、お試しでアカウントを登録する人が続出
  • Twitterへの移動が大部分を占め、pluspora.comもそれなりにアクティブなユーザーがいた
  • また一部ユーザーはmastodonに定着している

2018-10-10

  • pluspora.com がアクティブ化よりユーザーが増える

2018-10-12

  • pluspora.com は diaspora* であるため、他のPod(別サーバーのこと)からGoogle+からたくさん人が公開投稿したことにより公開アクテビティがの投稿数が増加し「騒がしくするな」「diasporaらしく振る舞ってほしい」「diasporaはGoogle+ではない」「ラベルをつけてくれ」とのお願いが散見された
  • それを気にして、限定公開の投稿になるものの限定公開では「リシェア」機能がつかえないため移動ユーザーの間で不満が募る
  • 制限されることを望んでいないため、公開投稿に戻し投稿する人が増える

2018-10-13

  • pluspora.com微妙・・・みたいな声が聞こえ始める
  • 新たな移民先として「www.mewe.com/」が発見される
    • G+と似ているかんじ
    • エロ禁止のため見送る人多数
    • 15:47 人が急に増えたことが原因なのかサービスが落ちてしまう
    • 16:00 急に軽くなった。サーバーが増えたのかもしれない

2018-10-14

2018-10-15

  • MeWeのグループがたくさんできはじめる

Dockerをアップデートした

何をしたのか

docker-engine から docker-ce へのアップデートです。結構一気に上げました。

はじめに

sudo apt-get remove docker docker-engine docker.io

もう消してしまいます。スッカラカン。
でも永続化データは、 ちゃんとDockerコンテナも使わずにエイリアスでディレクトリ指定していました。なのでファイルが消えることはありませんでした!

残作業

apt-get update
apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
apt-get update
apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
apt-get update
apt-get install docker-ce
apt-get install docker-ce=18.06.1~ce~3-0~ubuntu

あとはもうこれで動いているみたいです。
もちろん中のコンテナは空。docker-compose up -d し直します。

気をつけること

volumesでエイリアス指定してるからと安心しきってたら、実はコンテナ作り直してなくてずっとコンテナの中に永続化するはずのデータが閉じこもっているかもしれないので気をつける。

Google+が終わるかもしれない

Project Strobe: Protecting your data, improving our third-party APIs, and sunsetting consumer Google+ https://www.blog.google/technology/safety-security/project-strobe/

Action 1: We are shutting down Google+ for consumers.

なぜ終了に・・

原因は、人気の無さ・・というのは建前だろう。もしそういう理由ならGoogleはもっと早くに潰していた。
情報が一番の収益だったGoogleも、今では様々な領域で急雨成長を遂げデータだけが全ての企業ではなくなってしまった。

それでもデータを大事にする企業感がGoogleにはまだあると思っているし、そのためにもSNSは続けていったのだと思う。それでも、Google+のAPIは大規模なものになっていて、メンテもしずらくなり情報漏洩の原因になってしまったことが今回の原因だろう。

移行先

実は、Google+のようなゾーニングができるSNSはFacebookくらいしかない。しかしFacebookは、投稿が見える見えないというゾーニングのロジックが「いいね」などの別な意味合いのものに置き換えられて表現されている。実際どの投稿が見えて、どの投稿を見せなくしているのかという設定がよくわからない状態になっていて、そういったわかりやすさの面ではGoogle+のほうが良かった。そして、Facebookは実名登録、昔もGoogle+も実名登録だったけど今では大丈夫になった。

匿名性がない以上、移行先として検討はできない。
つまり、ないのです。

ないのです。。