忍者ブログ

れおのら備忘録

アドベンターカレンダー書くのに、まずブログがないのに気づいてしまったため、取り急ぎ作りました。

[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

インスタンスを鯖知識皆無の僕が建ててみた話
これはmastodon adventar calendar21日目の記事です。他にも書きたかった人がいたろうにこんな素人が枠取ってしまって申し訳ありません。
自分のmastodonアカウントは 音ゲ丼にあります。



サーバー経験は皆無と書きましたが、少しだけあります。昔MinecraftPEサーバをCentOSで建ててました。(全部コピペコマンドで建てた(´・_・`))
iptablesの弄り方も知らなくて、ufwのインストール方法調べて一々インストールしてたガイジです。はい。firewalldはカス
なので、今回はCentOS7.5でサーバを建てたいと思います。firewalldの使い方必死に覚えました。


環境

CentOS 7.5(64bit)
このはたんのぶいぴーえす♡ 1Gプラン
docker使用
star domainでjpドメインとった
sparkpost使用

今回は身内サーバを建てます。(でも登録は自由)

失敗したあれこれ

途中でDBが崩壊
let's encryptの認証ファイルが取得できない
Conohaのテンプレート使ってみたらバージョン古すぎて使い物にならない

うん。正直無駄なことし過ぎた。このミスのせいでこのはちゃんに無駄に500円お布施しちゃった。まぁ可愛いから許す。ただ、DDoS受けたら「お兄ちゃんが攻撃受けちゃってる大変!お兄ちゃんは私のものなんだから!誰にも渡さないもん...」って言うて全通信遮断するの許して

更なる挫折劇を見たい方は 末代鯖のアカウントをさかのぼって頂ければだいたい分かります。

実践編


leaf47様のサイトを参考に作りました。
忍者ブログはソースコード埋込みをするにはかなり手間がかかるのでこの書き方になります、申し訳ないです

*まずはDNSレコード設定
こんな感じで


#まずはユーザー作成
#useradd mastodon
#passwd mastodon

#sudoの許可
#usermod -G wheel mastodon

#nginxをCentOS仕様でインストール
# vi /etc/yum.repos.d/nginx.repo 


[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/

gpgcheck=0

enabled=1
















これができたらやっとこさインストール。
# yum -y install nginx

ここから一般ユーザーに切り替えてdockerをインストール。
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum makecache fast
$ sudo yum install docker-ce
$ sudo systemctl start docker
$ sudo systemctl enable docker
$ sudo usermod -aG docker $USER

次にdocker-composeのインストール
$ sudo -i
# curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# exit

ここでmastodonのインストール
$ git clone https://github.com/tootsuite/mastodon
$ cd mastodon/

ここから色々編集していきます。

$ vi docker-compose.yml
ーーーーーーーーー
db:
restart: always
image: postgres:alpine
### Uncomment to enable DB persistance
volumes:
- ./postgres:/var/lib/postgresql/data

redis:
restart: always
image: redis:alpine
### Uncomment to enable REDIS persistance
volumes:
- ./redis:/data
こんな感じでアンコメントしていってください。


余談ですがここでこれより先に書いてた内容が吹っ飛んでもうやだマリカチャンカワイイヤッターってなってたのは内緒



.env.productionの整備
$ cp .env.production.sample .env.production
$ vi .env.production

# Federation
LOCAL_DOMAIN=mstdn.ler.jp ←自分のドメインに置き換え
LOCAL_HTTPS=true ←httpsを使用しないならtrue

# Application secrets
# Generate each with the `rake secret` task (`docker-compose run --rm web rake secret` if you use docker compose)
PAPERCLIP_SECRET=x ← あとで書き換える
SECRET_KEY_BASE=xx ← あとで書き換える
OTP_SECRET=xxx ← あとで書き換える
SMTP整備は今回は省きます。

dockerのビルド
$ docker-compose build
$ docker-compose run --rm web rake secret
run~の方は、3快実行し、その都度でてきた暗号を記録しましょう!
記録できたら、.env.productionでさっきxxxって書いてたとこに上から順に記入していってください。

ここでプリコンパイル&起動
$ docker-compose run --rm web rails db:migrate
$ docker-compose run --rm web rails assets:precompile
$ docker-compose up -d
これでmastodonが起動したよ!俺やったよ!やったね!たえちゃん!インスタンスが増えるよ!
...とは行きません。このままだとアクセスできないので、色々設定していきます。


let's encryptで証明書取得
$ sudo yum install certbot
$ sudo systemctl stop nginx
$ sudo certbot certonly --standalone -d mstdn.ler.jp
このあとは指示に従って入力してね♪お兄ちゃんっ♪

nginxのデフォルトファイルをなかったことにする
$ sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.orig

nginxの設定ファイル編集
$ sudo vi /etc/nginx/conf.d/mastodon.conf

-----
server {
listen 80;
listen [::]:80;
server_name mstdn.ler.jp; ← 取得したドメインに書き換える
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
listen [::]:443 ssl;
server_name mstdn.ler.jp; ← 取得したドメインに書き換える
~~~~~~~~
root /home/mastodon/mastodon/public; ←自分のmastodonのpublicディレクトリに書き換え

ここで保存...ん?なんか変だ!(わかる人にしかわからないネタ)

...は?もうマヂ無理…ミュゼカしょ...ルールヲマモッテタノシクミュゼカ!

調べて見たら、変なcomitがあったせいで、使えなくなったらしいです。
githubのこのコミットを見て、212〜218行目で-になってるとこをmastodon.confに追加しないとダメみたいです。このコミット入れたヤツぶん殴ったるからなとか思ったんだけどアイコンの狐可愛くてなにもできない

あとエラー起こらないでね、っていうおまじない
sudo chown -R 991:991 public/system
これをしてなかったせいで、こうなりました

まぁなんとか完成!
こうして完成したのが、私の丼なのです。
よし、やろうっておもってから1ヶ月かかりましたね...いやぁ、コピペマンの自分には難しかった...,mastodonに今一番思うことは、

につきます。
まぁでもそこまで簡単にしてしまうと、学校裏インスタンスとかできて社会問題になってしまう(名推理)
とにかく楽しようとconohaのテンプレートとか使ってみたのですが、バージョンが古くて使い物にならず。このはちゃんやっぱり鬼畜じゃないか結局は今回の件で学んだことは、急がば回れですね。
あと個人用インスタンス作っても結局は末代だとか、音ゲ丼だとか眺めてるので正直使わないし1ヶ月以内にサービス終了してそうですね()
まぁゆるーく頑張ってみようと思います
PR

コメント

コメントを書く