ConoHaWING もしかしたら色々と凄いかもしれないのでMisskey入れようとしてみた

---
# TL;DR

ConoHa WING でWordpressでのCRM構築やPHPプログラミング以外にも
RubyとかPython出来るって言っている人いたので
こいつヤベェじゃないのか結構色々出来ちゃうんじゃないかひょっとしたらこんなこともできるんじゃないのか
よしっそれなら、Node.js を入れて Misskeyをインストールできるのか？って疑問に思ったので
実際に試してみた

結果としては
無理やりとも言える方法でConoHa WINGにnode.jsとMongoDB入れれたけどやっぱり通信で躓いた
でも外に出なければ色々できそう感ある。

## Misskeyとは
種別的にはMastodonと同じの分散マイクロブログSNSです。 言語はNode.js
![image.png](https://qiita-image-store.s3.amazonaws.com/0/187514/5ab63bc0-729f-518f-8c96-87422b92220f.png)
---

---
# 環境構築
(バージョン書き忘れました)

ConoHa WING
https://www.conoha.jp/wing/

portable-node
https://github.com/dmrub/portable-node

Misskey
https://joinmisskey.github.io/ja/
---
---
## ConoHa WING を立ち上げる

ちゃちゃっとConoHaWINGを立ち上げちゃいます。
まずはサーバを追加して... 
![1.PNG](https://qiita-image-store.s3.amazonaws.com/0/187514/82a2beb1-d3da-9b3f-ad25-e63af5442112.png)

好きなドメインを入れて...
![2.PNG](https://qiita-image-store.s3.amazonaws.com/0/187514/d4410817-2bb1-705c-47e4-229f06c16330.png)

はい完成！！ 本当にたった3ステップで出来ちゃいます。
![3.PNG](https://qiita-image-store.s3.amazonaws.com/0/187514/32d14344-e2ba-4808-4fc8-7a7b5539541f.png)

今までのレンタルサーバーとは違い、建てた時間だけ請求ですのでちょっとした調査や
2週間だけ建てたい！！っていう時に使えるのでクラウドとレンタルサーバーのﾟいい所をぶつけた感じが良いですね。
---

私は一応独自ドメインを持っていたのでWINGにDNSを通してSSL設定も自動でやろうと思いましたが
![4.PNG](https://qiita-image-store.s3.amazonaws.com/0/187514/df1e9ca4-2a3d-ab0f-4718-056baf4579eb.png)
ネームサーバーがConoHa宛じゃないとダメみたいですね（まぁ当たり前なんだけどね）


後はSSH設定をすることで外部からサーバコンソールへ接続することができます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/187514/a07bffee-7203-f5a6-2b43-b00f9059d758.png)


設定項目だけはSSH-key 作成のみですので誰でも簡単にSSH接続することができます。
![11.PNG](https://qiita-image-store.s3.amazonaws.com/0/187514/ec7ffde3-6740-aef6-ab80-96f73422849d.png)

## Node.js をインストールする。
サーバにはNode.jsがインストールされていません。
ですのでインストールを行う必要がありますが通常の方法ですとsudo権限が必要となります。

ですがsudo権限はないので、portable-nodeというものを使用します。

https://github.com/dmrub/portable-node

まずは下記のコマンドでNode.js用のディレクトリを作り実行権限を与えて
Node.js v10.0.0 をインストールします。

```
mkdir ~/nodejs && cd ~/nodejs
wget https://raw.github.com/dmrub/portable-node/master/bin/install-node.sh
chmod +x ./install-node.sh
sh install-node.sh --version=10.0.0
```

これで binフォルダの中にNodeとnpm がインストールされます。
ですがこのままだとパスが割り当てられていないのでコマンド使用することはできません。
ですので次は
nodeとnpm のパスを割り当てます。

```
cd /home/$USER/nodejs/share/nodejs/node-v10.0.0-linux-x64/bin
chmod +x *
export PATH="$PATH:/home/$USER/nodejs/share/nodejs/node-v10.0.0-linux-x64/bin"
```

バージョン出力してちゃんと出てこればOK
![image.png](https://qiita-image-store.s3.amazonaws.com/0/187514/641b454b-bde4-7169-3c9b-f97fb72180f5.png)

## MongoDBをインストール

これも先程のNode.jsと同じようにMongoDB Server をPortableインストールします。

MongoDB用フォルダとデータフォルダを作成

```
mkdir ~/mongodb && mkdir ~/mongodb/data && mkdir ~/mongodb/bin
cd ~/mongodb
```

作成し終わったら ```~/mongodb/bin``` の中にMongoとMongodを入れます。
その後さっきと同じくパッチを当て、データフォルダはさっき作ったディレクトリを指定します。

MongoとMongodは他のCentOSでMongoDBをインストールし、```/usr/bin/mongo``` と```/usr/bin/mongod``` を取り出してください。

その後権限とパス設定を行う

```
cd /home/$USER/mongodb/bin
chmod +x *
export PATH="$PATH:/home/$USER/mongodb/bin"
```

最後に ``` mongod --dbpath ~/mongodb/data/ & ```でサーバを立ち上げます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/187514/4ed2f209-88a0-e010-5f3e-879bd90a3b83.png)

終了は ```top``` コマンドでmongod のプロセスを調べて殺してください。



### これで最低限の環境構築は終わりです

# Misskey インストール
Misskeyインストールは基本的にDocに従えばできると思います。

DBあれこいれできたら
![image.png](https://qiita-image-store.s3.amazonaws.com/0/187514/9137f2be-7586-a6b8-99a4-7bb89210acde.png)

Homeディレクトリに移動し...
![image.png](https://qiita-image-store.s3.amazonaws.com/0/187514/b8477b1c-5e5c-89c6-6ff0-69ec85b3a554.png)
ドキュメントどおりに勧めていけば

![image.png](https://qiita-image-store.s3.amazonaws.com/0/187514/14318043-be3d-56b3-9d12-f739c77dd65e.png)

コケました


どうやらgypがPython 3.6.6 には対応していないみたいです
https://sutaba-mac.site/gyp-not-accept-python3/

ですので明示的にPython 2.7 を指定してインストールします。

```
npm install --python=/opt/alt/python27/bin/python2.7
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/187514/8e540b80-6fa6-ea9b-2b53-0430d32048ff.png)

インストールが成功したら、

```cp .config/example.yml .config/default.yml``` で .config/example.ymlをコピーし、
default.yml を自分の環境に編集します。

（だいたいイジらなくてはいけない場所はMongoとURLぐらいです。）

そして最後に

```
npm run build
```
でビルドをし最後に ```Finished 'build' ```が出れば成功です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/187514/1b430620-34ee-8078-a993-b63a837834e6.png)

もし環境不足とかでインストール出来ない場合は下記のコマンドを実行してください。

```
npm install -g node-gyp
node-gyp configure --python=/opt/alt/python27/bin/python2.7
node-gyp build --python=/opt/alt/python27/bin/python2.7
npm run build
```

さてこれで後は
npm start をするだけ！

![image.png](https://qiita-image-store.s3.amazonaws.com/0/187514/0d1d5dd9-2266-f7d5-e661-9191d882aa20.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/187514/e263d9b7-d2a4-20f5-cee6-2103467532e9.png)



無理でした。

やっぱり権限や制限的な問題でMongoDBと繋げられることはできない見たいですね。

まぁもしできたとしても次に
基本的に外部との80，443以外のポート番号通信できない&リバースプロキシできない、という壁があるのでどっちにしろMisskeyを立ち上げられても外部から見れないという問題があります。


ですがnode.js や Python3.6.6 と 2.7 が使えるということがわかったので
バックグラウンドでPHP以外のプログラムに処理させるという使い方はできそうです。（例えば：jwt認証やAPI取得整形など）

後はPort問題で直接デバッグはできないと思いますが、Node.js製フレームワークをインストールし、
distで静的ページにすることによって簡易的な管理ページが作れると思います。

https://github.com/akveo/ngx-admin
![image.png](https://qiita-image-store.s3.amazonaws.com/0/187514/16b732ae-eb96-928e-aa9c-45d40368e16f.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/187514/dd59717d-7d23-d160-1272-d7fbcd060407.png)



ですがそこまでして無理に他の言語のフレームワークや危ない橋をわたる必要はないと思います。
メインはWordpressですので、管理ページやブログなどは素直にWordpressを使いましょう

それでもほかのを使いたい場合はVPSを使いましょう。（常識的に考えて普通の使い方したほうが一番良い）


# 結論

buildまで出来たけどMongoDBに接続することが出来なかった、
最後にNodejs製ダッシュボードフレームワーク ngx-adminを試してみると行けたので大きな収穫ができたかなと、

後他の言語で色々するよりやっぱりWordpressやphp製サイトを作ったほうが良い、
他の言語でいろいろするならVPS使ったほうがいいという超当たり前結果に



みんな聴こう！！！！
https://conoha.mikumo.com/music/
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/187514/3c4a36e4-d24f-7832-5a48-1cfd2c1579f2.png)


削除もワンクリックでできました。（最初から削除保護ついていたほうがいいのではっていう気がする。あとせめて確認が1クッションぐらい欲しい）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/187514/781f515a-09d2-0553-5682-cd4066f6e51a.png)