How to seize the FSMO roles on a DC, Microsoft Windows Server 2008 R2

Login as the domain administrator
Run CMD.EXE with an administrator privilege
C:\> ntdsutil
ntdsutil: roles

(connect the utility to the server)
fsmo maintenance: connections
(make sure your credential is the domain administrator)
server connections: set creds domain.lan administrator Password@123
server connections: connect to server site-dc-1
Binding to site-dc-1 as domain.lan\administrator...
Connected to site-dc-1 as domain.lan\administrator.
server connections: quit

(typing ? will show all the seizing options)
fsmo maintenance: ?

(seizing schema master role)
fsmo maintenance: seize schema master

f:id:haramAB:20170607140300p:plain

(Click Yes.)

Attempting safe transfer of schema FSMO before seizure.
(This fails if the current FSMO holder is down)

Sever "site-dc-1" knows about 5 roles
(All FSMO variable values will be displayed. See and verify that the value has been changed correctly)

(repeat this with other FSMOs)

fsmo maintenance: quit
ntdsutil: quit

(check roles)
C:\> dcdiag /test:KnowsOfRoleHolders /v
C:\>netdom query fsmo

VPSが可愛すぎて死ぬ

労働からかえってきました。こんばんは☆

最近時給が上がりました。労働して賃金を受け取るとまるで自分が真人間であるかのように錯覚できるのでniceです。

 

ぼくのおよめさん(VPS)

マストドンのためにさくらVPSやFC2 VPSを借りようとしたところ、海外住所のためにリジェクトされ、怒りと悲しみに打ちひしがれつつネットの海を彷徨ったところvultr.comというサービスを見つけました。

このvultr、つまるところ怪しげなアメリカンITベンチャーがやってるAWSのパクリなんですが、明朗会計でまあまあ安くてデプロイがクソ早くディスクも全SSDとクラウド界における安い・早い・うまいを目指したような仕様。まあSSDなぶん容量は価格にしては比較的小さめですがそこはご愛嬌。

最小構成ならなんと月々USD2.5!ですが、最小構成は売り切れらしいので最安でもUSD5からです。それでもRAM1GBだからまあ安い。

AWSの最小構成なら12ヶ月無料だったらしかったこと(契約するまで全然知らなかった)を無視すればそれなりに満足です。AWS無料なのなんで。頭おかしい。

ちなみに仮想化技術はKVMではなくQemuです。いいのか悪いのかとかは知らないです。ふつうにつかえるよ!

 

そんな感じで借りたVPSですが、まあ〜可愛い。嫁です。

まず、常にインターネットに繋がって動いてくれてるのが可愛い。すごい。ぼくは今携帯の回線しかインターネットがないのでこれはでかいです。どこからでもLinux資源にアクセスできるのがありがたい。なんでもし放題だし自由度がパない。「レンタルサーバ完全解説」みたうなあやしい場末のアフィサイトで語られていたroot権限ってやっぱスゲー!

無料ドメイン(.tk)の作り方も発見したのでぼくは今理論上無限にWebサイトを作れます。Nginxとdockerが高機能すぎる。コンテナ化とリバースプロキシがつよい。

そもそもRAMが1024MBしかないのがかわいい。ちいさい。ストレージも25GBしかないのよ。なのに動く。Linuxだから。これがWinSvだったらこうは行かないです。Macは論外ですね。極小のリソースでメッチャクチャ仕事します。

SSHでダウンロードしまくっても携帯回線がパケ死しないのでかわいい。最高。VPSでISOダウンロードしてから学校でWeb介してダウンロードしたけどすごい。

自分しか使ってないから軽くてすごい。転送速度早くないですか。いいんですかそんなに早くて。RAM1GBですよ。

 

とにかくかわいいVPS。みんなもVPSを飼おう。マストドンは立てなくてもいいし。

最高すぎるので、今は中古PCに16GBぐらいRAM刺しておばあちゃん家においてESXiかKVMのサーバ動かして自前のVPSサービスを構築することすら検討してます。そしたらばあちゃんには悪いがタダだしリソースの量がダンチなのですごくすごい。たぶん動画をどうこうできるレベル。もはやえっちだ。実質的にセックス。常時接続なので常時セックスですね。クラウドばんざい

 

マストドンの完成

完成しました。以下は教訓の羅列です。役立ててください。

 

Ubuntu LXDコンテナ上にdocker敷いてmastodon立てるのは無理。いや無理じゃないかもしれないけど、その環境に入るdockerエンジンはおそらくdocker.ioだ。最新バージョンのmastodonとは相性が悪いぞ。俺みたいな素人がやるんだったら、素直に生dockerでやったほうが早いし確実。どうしても物理マシンから分離したいなら仮想化してしまったほうがマシでは?

 

ぜんぶリセットしたいときでもdocker-compose downだけはマジでやめろ。まずnginx -s reload。次にup -dをしてみてダメならbuildしてからup -dをしろ。それでダメならdbコンテナのリビルドとasset:precompileをやれ。downだけはするなこわれる

 

関係ファイルが保存されるパス、つまり画像とか永続化されたDBデータとかはdocker-compose.ymlにぜんぶ載ってる。落ち着いて読め。

 

2017年5月30日現在のtootsuite/mastodon最新バージョンである1.4.1において、cronタスクはSSL証明書更新以外必要ないと思われる。キャッシュ削除も購読更新もぜんぶsidekiqがやってる。recurring_jobsをみてみろ

 

画像がアップロードできないときは(かつマストドンを/var/www/とかに置いてる場合)、mastodon/public/systemとかのパーミッションに問題がある。chmod 777しないでchownで所有者をそれっぽいやつにかえろ(992みたいな)

 

マストドンにサービス管理者としてログインしてsidekiqをみよう

 

SMTPサーバはGmailの普通のパスワードでやろうとすると無理。横着せず2段階認証とアプリパスワードをとろう。.env.productionのSMTP認証関係の設定もちゃんと確認しよう。

 

連合タイムラインが寂しい時。連合タイムラインに表示される(他インスタンスから購読する)のは、ローカルユーザがフォローしているユーザすべて。誰かがリモートフォローしまくればタイムラインは見かけ上だけでも賑わうぞ。

 

以上です。

忘れがちコマンドメモ集

 

sudo su -c "command && command"とかするといい時があるらしいよ

 

nohup commandってやるとSSH切ってもプロセスが続くよ

Mastodon新規構築3 ダメだったらやり直す、やり直しだ!

やり直す

lxc init ubuntu:16.04 mastodon1 -p default -p docker

で、なんかここには書いてないけど水曜夜にたぶんdockerとdockerのインスコまでやったんですよね。でもダメ。docker-compose buildできない。

で今日戻ってきてやったらコレ。

 

f:id:haramAB:20170525213152p:image

 

「お前のdocker engine古すぎ」とお怒りのようです。最低でも1.13.0をよこせと。この時点で再びのやり直しが決定しました。

 

やり直しびより りぴーと

というわけでやり直しです。まあ、LXDコンテナをまた作り直すのはなんかヤバそうで怖いから最終手段とするとして、まずはdockerエンジンのアップグレードを試みましょう。

頑張れ!土曜の俺!

 

//土曜に更新なければどう見てもおわりです。本当にありがとうございました。

 

 

Mastodonの新規構築 EPISODEⅡ メモリ不足の凱旋

先日、デレステのイベ曲のバカさにTwitterのTLが騒然としましたが、本日ついに今回のイベも後半戦モードに入ったので溜め込んだエンブレムを一気に消費してきました。

 

エンブレム4倍でぶん回すのじゃああ

 

だいたい二時間ぐらい前に6500程度あったんでしたかね。それをまあ10回程度4倍でぶん回して、一夜にして一気に7000点弱から20000点超えを達成。カタルシスがすごいです。これだから(後半戦モード実装後の)アタポンイベはやめられねえぜ!

 

f:id:haramAB:20170524225451p:image

ユッコ。

 

もうすでにユッコは一枚持っているので、MV的には何のプラスにもなりませんが、まあ雫さんも来たのでいいかな。最近はMVに凝って主要キャラのNを溜め込んでいるので所有枠が明らかに足りません。デフォで80とか埋まってる。

 

 

閑話休題。デレステイベも無事、僕の中では終了しましたのでMastodonの設定に移りましょう。めざせインフラエンジニア!

 

自宅。家はTelstra Velocityの利権による犠牲となった地域なので安定したインターネット接続はありませんが(!)、テザリングしなけなしの通信量を割いてサーバ管理します。

学校と違い上流ファイヤウォールによるブロックがないので端末からSSHできます。SSHできるとコピペができます。コピペができるとできないとでは実は雲泥の差です。ちゃんとUnix系が使える人ならばパイプとかwgetとかsedとかawkとかgrepとかを組み合わせ気持ち悪く長いシェルスクリプトを書いて魔法のように全てを解決するのでしょうが、僕はパイプは覚えたて、lessかgrepに渡すのが精一杯です。GUIの恩恵に預かってコピペさせてもらいます。

 

* .env.productionに鍵を入力

.env.productionには鍵が三つ必要ですが、前に何回も失敗しながら何回も使いまわしている鍵を今回も使います。(多分本当はダメ) テキストファイルからSSHによりテキストファイルへコピペする。

 

まずはlxc exec mastodon /bin/bashしてコンテナに入ります。

前回の記事で書いてなかった気がするけど、mastodonはrootの~/mastodonフォルダにクローンされてます。だからcd mastodonしてからvi .env.production。鍵をコピペ。

 

docker-compose.ymlの永続化設定もついでに確認しておきます。ここ失敗してる人いっぱいいるみたいだから怖い。

設定されてない。どうしてだ数時間前の僕。

 

でまあdocker-compose build。これが怖い。こいつすぐメモリ不足になるから。

でも今回はdockerがさらにまたコンテナの中で動いてるんで、壊れたり謎の謎のpostgresプロセスが大量に動いてメモリを圧迫してても、クリーンインストールしなくてもLXDをやり直せばいいだけ。これはいいかもしんない。

 

毎回毎回「fsevents1.0.14がインストールできないけど大丈夫!これどうせ要らねえから!」って言うのビビるからやめろ。本当に大丈夫なのかよ。てか時間を返せ。

 

 で成功する。でもまだbuildだけ、まだまだ油断はできません。

ここでもう一回元記事を確認しておきましょうかね。。。

 

言語設定を忘れた以外大丈夫そうなんで、DBを構築。成功。続いてフロントエンドのアセットを生成。成功。

インストールが終わったのでコンテナを起動します。docker-compose up -d。

curl -o /dev/null http://localhost:3000/してみる。エラーなく100%まで行くので、とりあえずインストールは成功です。

 

* ホストでnginxを設定

ホストでnginxにTCP80やら443やら3000やらを聴かせておいて、リクエスト来たらLXDコンテナ(の中のdockerコンテナ)を叩かせます(nginxをプロキシにする)。

 

今回の元記事によればsudo apt install nginx letsencryptをホストで実行だそうで。その通りにします。

ふたつパッケージあったのに一回プロンプトされただけで終了。不安だ。

 

次にsudo letsencrypt certonly --standalone --standalone-supported-challenges tls-sni-01 -d example.comします。Webを介したチャレンジアンドレスポンスによってSSL証明書を作ってるんでしょう。UFWが弾くと思いますがまずはやってみましょ。

案の定connect errorされたのでsudo ufw status。Webがやっぱり開いてないので80と443を開けておきましょう。

$ sudo ufw allow 443

$ sudo ufw allow 80

$ sudo ufw reload

$ suso ufw status

念のためwgetからもアクセスをチェック。wget http://example.com/は成功するがwget https://example.com:443/はダメ。つまりポートは開いている。

ダメ元で証明書をもう一回試すと成功する。やったぜ。

 

nginxにmastodon用の設定を流しましょう。/etc/nginx/conf.d/mastodon.confを新規作成します。sudoがいるよ。

そしてそこにhttps://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md:マストドン公式のドキュメントにある設定をコピペ。

:%s/example.com/your.domain/しておく。

あとlocalhostとか127.0.0.1をLXDのアドレスに変えておく。

$ lxc listして出てくるeth0のやつね。

 

ここで元記事が「では、よいマストドンライフを!」とか言ってぶん投げます。おいもうちょっとお願いできませんか。

仕方がないのでここからは他の文献も参考にしつつ自前で行きましょう。まずはnginxのリロードです。sudo nginx -s reload。ここでnginxからdhparam.pemがないと怒られます。

 

ググる。

robmclarty.com

ここによると、$ openssl dhparam -out /etc/letsencrypt/certs/dhparam.pem 4096すればいいらしいです。やってみる。めちゃくちゃ時間かかる。

 

 dhparam.pem - no such file or directoryって言われる。は?

 

sudo つけて4096を2048に減らし再挑戦する。がダメ。

普通にディレクトリがなかった。sudo mkdir certsする。それからもっかい例のコマンド。成功。

改めてnginxをreload。こいつ、/etc/sslを読んでる。mastodon.confの中のdhparamのパスを変えてからやると成功した。

早速端末側のブラウザから確認する。動いた!

 

* Mastodonのサービス管理初期設定

ブラウザからユーザを作る。メールが来ることを期待して。。。たぶんこないけど

 

コンテナ内でユーザを追加しようとするとメモリが足りないとnodeに憤怒されたので、プランをアップグレードすることにします。月$10ぐらい払ってやらあ

アップグレードのためスナップショットを取って、それが60分かかるとか言われたところで今日はおしまいです。

 

と、思ったらスワップ領域を作ればいい話のようなのでそうする。

http://qlita.com/scleen_x_x/items/f3fc492bcbf0f6c2896cqlita.com

ここを参考に。

sudo cat /proc/swapsによるとswapは今の状態だとなし。

sudo mkdir /var/swap

sudo dd if=/dev/zero of=/var/swap/swap0 bs=2M count=2048

sudo chmod 600 /var/swap/swap0

sudo mkswap /var/swap/swap0

sudo vi /etc/fstab

/var/swap/swap0 swap swap defaults 0 0を最終行に追加。sudo cat /proc/swapsを見ると追加されてます。これで4GBものスワップ領域を作ったことになります。多すぎない?RAM1024MBだよ?

もう一回ユーザ追加してみましょう。できた!アップグレードなんて要らんかったんや!

 

管理者権限もつけておく。

 

otya.me

 

あとこれの最後の方のcrontabのやつをLXDコンテナで実行しておく。

 テキストエディタを選べって聞いてくるから3のVimBasicにする。他のは使い方がよくわからん。

 

 42 */12 * * * cd /root/mastodon/mastodon-1.1.2/ && docker-compose run --rm web rake mastodon:media:remove_remote

無事crontabには読み込まれたが、実際に実行してみるとエラーになる。mastodon:remove_remoteの部分がダメらしい。

そこを--tasksに置き換えてみる。mastodon:media:clearが一番それっぽいな。まあいいや放置で。

 

諦めて管理者権限でブラウザからログインする。何も表示されない。このパターンはまずいぞ。

とりあえずdbとassetsを再準備する。swapがあるから怖いものなしである。

 

 

まあ色々やったんですけど、全然ダメなんでLXDコンテナの作り直しからやってみましょう。

ログ書いててよかった。

lxc stop mastodon

lxc delete mastodon

lxc list

これで前回の最初の方からやり直しになりました。いえーい

Mastodonインスタンスの新規構築

問題発生時のためのログです。またしても自分用。。。

qiita.com

この記事に従ってやっていきます。環境はUbuntu 16.04 Server on vultr.com, RAM1024MB, 1 vCore.

LXD関係

明示的にAPTでインストールしてみると入ってました。当然。
$ sudo lxd initしてみる。ここで参考文献が追加。

gihyo.jp

前やってグジャグジャになったのも確かLXDだったので熟読しなければ。。。

続きを読む