仮想通貨の取引を全部無料で自動化する! (Gekko + Google Cloud Platform + Freenom + MyDNS + Let's Encrypt) その六 Gekkoのインストール
おれぁおせっかい焼きの子熊のゾルバ!皆さんの仮想通貨取引を手伝うぜ!
今日でようやくGekkoのインストールが完了します。もう少しお付き合い下さい。
前回の記事はこちら
- node(nodejs)と関連パッケージのインストール
- Gekkoのインストール
- Gekkoの動作確認
- うまく動作しない時は
- このサイトにアクセスできません hogehoge.gaのサーバーのDNSアドレスが見つかりませんでした。 DNS_PROBE_FINISHED_NXDOMAIN
- このサイトにアクセスできません hogehoge.gaからの応答時間が長すぎます。 ERR_CONNECTION_TIMED_OUT
- このサイトにアクセスできません hogehoge.gaで接続が拒否されました ERR_CONNECTION_REFUSED
- このページは動作していません hogehoge.gaからデータが送信されませんでした。
- 401 Authorization Required
- 502 Bad Gateway
- Disconnected
- 参考サイト
node(nodejs)と関連パッケージのインストール
Gekkoを動かすにはnodejsのバージョン6以上が必要です。前回の記事でapt-getでインストールしたnodejsとnpmのバージョンは古いので、アップグレードします。
$ nodejs -v v4.2.6
前回の記事を参考に、SSHでアクセスします。
以下のコマンドを入力し、rootで作業します。プロンプトが"$"から"#"に変わったことを確認します。
sudo su -
npmのキャッシュを削除します。
npm cache clean
n packageをインストールします。
npm install n -g
インストールが成功すればこのように表示されます。
# npm install n -g /usr/local/bin/n -> /usr/local/lib/node_modules/n/bin/n /usr/local/lib └── n@2.1.8
node(nodejs)をインストールします。
n stable
インストールが成功すればこのように表示されます。バージョンはv8.6.0ですね。
# n stable install : node-v8.6.0 mkdir : /usr/local/n/versions/node/8.6.0 fetch : https://nodejs.org/dist/v8.6.0/node-v8.6.0-linux-x64.tar.gz ######################################################################## 100.0% installed : v8.6.0
apt-getでインストールしたnodejsとnpmは削除しておきます。
apt-get purge -y nodejs npm
Gekkoのインストール
お待たせしました。ようやくGekkoをインストールします!
Gekko用のグループ、ユーザーを作成します。(rootで動作させると、アプリケーションの脆弱性によってはシステムの乗っ取りにつながるため)
groupadd gekko useradd -g gekko --shell /usr/sbin/nologin gekko
Gekko用の作業用ディレクトリを作成します。
cd /home/ mkdir gekko chown gekko:gekko gekko
/usr/local/bin/ディレクトリの下に移動します。
cd /usr/local/bin/
Gekkoをダウンロードします。
git clone git://github.com/askmike/gekko.git
成功すればこのように表示されます。
# git clone git://github.com/askmike/gekko.git Cloning into 'gekko'... remote: Counting objects: 9036, done. remote: Compressing objects: 100% (24/24), done. remote: Total 9036 (delta 10), reused 12 (delta 3), pack-reused 9008 Receiving objects: 100% (9036/9036), 2.84 MiB | 0 bytes/s, done. Resolving deltas: 100% (5844/5844), done. Checking connectivity... done.
Gekkoのアプリケーションの所有者をgekkoユーザーに変更します。
chown -R gekko:gekko gekko
Gekkoのディレクトリに移動します。
cd gekko
Gekkoに必要なパッケージをインストールします。
npm install --only=production
成功すればこのように表示されます。
# npm install --only=production npm WARN deprecated crypto@0.0.3: This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in. npm WARN deprecated node-uuid@1.4.8: Use uuid module instead npm WARN deprecated tough-cookie@2.2.2: ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130 > bufferutil@1.2.1 install /usr/local/bin/gekko/node_modules/bufferutil > node-gyp rebuild make: Entering directory '/usr/local/bin/gekko/node_modules/bufferutil/build' CXX(target) Release/obj.target/bufferutil/src/bufferutil.o SOLINK_MODULE(target) Release/obj.target/bufferutil.node COPY Release/bufferutil.node make: Leaving directory '/usr/local/bin/gekko/node_modules/bufferutil/build' > utf-8-validate@1.2.2 install /usr/local/bin/gekko/node_modules/utf-8-validate > node-gyp rebuild make: Entering directory '/usr/local/bin/gekko/node_modules/utf-8-validate/build' CXX(target) Release/obj.target/validation/src/validation.o SOLINK_MODULE(target) Release/obj.target/validation.node COPY Release/validation.node make: Leaving directory '/usr/local/bin/gekko/node_modules/utf-8-validate/build' > websocket@1.0.24 install /usr/local/bin/gekko/node_modules/websocket > (node-gyp rebuild 2> builderror.log) || (exit 0) make: Entering directory '/usr/local/bin/gekko/node_modules/websocket/build' CXX(target) Release/obj.target/bufferutil/src/bufferutil.o SOLINK_MODULE(target) Release/obj.target/bufferutil.node COPY Release/bufferutil.node CXX(target) Release/obj.target/validation/src/validation.o SOLINK_MODULE(target) Release/obj.target/validation.node COPY Release/validation.node make: Leaving directory '/usr/local/bin/gekko/node_modules/websocket/build' > sqlite3@3.1.13 install /usr/local/bin/gekko/node_modules/sqlite3 > node-pre-gyp install --fallback-to-build [sqlite3] Success: "/usr/local/bin/gekko/node_modules/sqlite3/lib/binding/node-v57-linux-x64/node_sqlite3.node" is installed via remote > relieve@2.2.1 postinstall /usr/local/bin/gekko/node_modules/relieve > node links.js npm notice created a lockfile as package-lock.json. You should commit this file. added 574 packages in 46.167s
Gekkoの設定ファイルを作成します。(設定例のファイルをコピー)
cp -p sample-config.js config.js
Gekkoのもう1つの設定ファイルを編集します。ディレクトリに移動します。
cd web/vue
初期設定のファイルのバックアップを取ります。
mv UIconfig.js UIconfig.js.default
以下のコマンドを全てコピー&ペーストします。この例ではuiのhostにhogehoge.gaを入れていますが、Freenomで取得したドメイン名に置き換えてください。
cat << '__EOF__' > UIconfig.js // This config is used in both the // frontend as well as the web server. // see https://gekko.wizb.it/docs/installation/installing_gekko.html const CONFIG = { headless: true, api: { host: '127.0.0.1', port: 3000, }, ui: { ssl: true, host: 'hogehoge.ga', port: 443, path: '/' }, adapter: 'sqlite' } if(typeof window === 'undefined') module.exports = CONFIG; else window.CONFIG = CONFIG; __EOF__
起動用の設定ファイルを準備します。以下のコマンドを全てコピー&ペーストします。
cat << '__EOF__' > /etc/systemd/system/gekko.service [Unit] Description=Gekko After=syslog.target network.target [Service] Type=simple User=gekko Group=gekko Environment=PATH=/usr/local/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin ExecStart=/usr/local/bin/node /usr/local/bin/gekko/gekko.js --ui WorkingDirectory=/home/gekko KillMode=process [Install] WantedBy=multi-user.target __EOF__
Gekkoを起動します。
systemctl start gekko
GekkoがOS起動時に自動的に立ち上がるようにします。
systemctl enable gekko
状態を確認します。
systemctl status gekko
以下のように、loaded (/etc/systemd/system/gekko.service; enabledのようにenabledと表示されていればOS起動時に立ち上がります。
active (running)と表示されていれば現在起動しています。
# systemctl status gekko ● gekko.service - Gekko Loaded: loaded (/etc/systemd/system/gekko.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2017-10-03 14:00:48 UTC; 11s ago Main PID: 8718 (node) Tasks: 6 Memory: 21.0M CPU: 304ms CGroup: /system.slice/gekko.service └─8718 /usr/local/bin/node /usr/local/bin/gekko/gekko.js --ui Oct 03 14:00:48 gekko node[8718]: $$ | _$$/ $$ |__ $$ |/$$/ $$ |/$$/ $$ | $$ | Oct 03 14:00:48 gekko node[8718]: $$ |/ |$$ | $$ $$< $$ $$< $$ | $$ | Oct 03 14:00:48 gekko node[8718]: $$ |$$$$ |$$$$$/ $$$$$ \ $$$$$ \ $$ | $$ | Oct 03 14:00:48 gekko node[8718]: $$ \__$$ |$$ |_____ $$ |$$ \ $$ |$$ \ $$ \__$$ | Oct 03 14:00:48 gekko node[8718]: $$ $$/ $$ |$$ | $$ |$$ | $$ |$$ $$/ Oct 03 14:00:48 gekko node[8718]: $$$$$$/ $$$$$$$$/ $$/ $$/ $$/ $$/ $$$$$$/ Oct 03 14:00:48 gekko node[8718]: Gekko v0.5.7 Oct 03 14:00:48 gekko node[8718]: I'm gonna make you rich, Bud Fox. Oct 03 14:00:49 gekko node[8718]: TAlib is disabled Oct 03 14:00:49 gekko node[8718]: Serving Gekko UI on https://hogehoge.ga:443/
Gekkoの動作確認
それではではブラウザでGekkoにアクセスしてみましょう。
https://hogehoge.ga/
私の場合、hogehoge.gaですがFreenomで取得したドメイン名に置き換えてください。
nginxが正しく動いていれば認証画面が表示されます。htpasswdコマンドで設定したユーザー名、パスワードを入力します。
Gekkoが正しく動いていれば、以下の画面が表示されます。
おめでとうございます!
慣れていない人は全体的に少し難しかったかもしれません。ご不明な点、うまくいかない点があればお気軽にコメントを頂ければと思います。
うまく動作しない時は
Google Chromeでアクセスすると、このようなエラーが表示されます。
このサイトにアクセスできません hogehoge.gaのサーバーのDNSアドレスが見つかりませんでした。 DNS_PROBE_FINISHED_NXDOMAIN
以下の点を確認します。
- FreenomのChange Nameserversで、正しくMyDNSのDNSサーバーを設定しているか
- MyDNSに正しくドメインを入力しているか
- crontabに正しくMyDNSサーバーへのIPアドレス通知を設定しているか
MyDNSサーバーへのIPアドレス通知が成功しているかログで確認します。
cat /var/log/mydns.log
以下のように、サーバーから200 OKが応答されている事、正しいユーザー名を使用している事、サーバーの外部IPが応答されている事を確認します。
< HTTP/1.1 200 OK <=== ココ < Date: Tue, 03 Oct 2017 15:27:58 GMT < Server: Apache/2.2.15 (CentOS) < X-Powered-By: PHP/5.3.3 < Vary: Accept-Encoding,User-Agent < Content-Length: 608 < Content-Type: text/html; charset=UTF-8 < <html> <head> <title>Free Dynamic DNS (DDNS) for Home Server and VPS etc | MyDNS.JP</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <LINK href="./site.css" rel=stylesheet type=text/css> </head> <BODY BGCOLOR="#FFFFFF" TEXT="#304040" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" > Login and IP address notify OK.<BR> login_status = 1.<BR> <BR> <DT>MASTERID :</DT><DD>mydnsXXXXXX</DD> <=== ココ <DT>REMOTE ADDRESS:</DT><DD>xxx.xxx.xxx.xxx</DD> <=== ココ <DT>ACCESS DAYTIME:</DT><DD>2017/10/03 17:27</DD> <DT>SERVER ADDRESS:</DT><DD>46.19.34.8</DD> <BR> </body> </html> * Connection #0 to host www.mydns.jp left intact
このサイトにアクセスできません hogehoge.gaからの応答時間が長すぎます。 ERR_CONNECTION_TIMED_OUT
以下の点を確認します。
- VMインスタンスが起動しているか
- ファイアウォールルールのdefault-allow-httpsであなたのIPアドレスが許可されているか
このサイトにアクセスできません hogehoge.gaで接続が拒否されました ERR_CONNECTION_REFUSED
nginxが起動しているか確認します。
起動していない場合、設定ファイル(/etc/nginx/sites-available/default)が正しいか確認し、systemctl start nginxで起動します。
もしOS起動時に自動的に起動しない場合、systemctl enable nginxで自動起動を有効にします。
このページは動作していません hogehoge.gaからデータが送信されませんでした。
HTTPでアクセスしていませんか?URLに「https://」を指定してアクセスしている事を確認します。
(セキュリティ上不要なアクセスを防ぐため、nginxでLet's Encrypt以外からのHTTPアクセスはコネクションを切断(RSTを応答)するように設定しています。)
401 Authorization Required
nginxのユーザー認証に失敗しています。パスワードを忘れた時は、以下のファイルを削除します。
rm -f /etc/nginx/.htpasswd
改めて認証設定を作成します。
htpasswd -bc /etc/nginx/.htpasswd USERNAME PASSWORD
nginxに設定を読み込ませます。
systemctl reload nginx
Disconnected
Gekkoの設定が間違っているかもしれません。
改めて本記事で設定したUIconfig.jsが正しいか確認します。
参考サイト
Ubuntuに最新のNode.jsを難なくインストールする - Qiita
centos7で標準のsystemdを使いnode.js製サーバーをデーモン化する - Qiita
____________________
以下、アフィリエイトです。もしこの記事がお役に立ちましたら、こちらから取引所口座を開設頂けると励みになります。(私のお小遣いになります)
日本では以下の3つが主要な仮想通貨取引所となります。
コインチェック
初心者でも簡単に仮想通貨が購入できます。また、ビットコイン以外の仮想通貨(オルトコイン)も12種取り扱っているのも高ポイントです。ただし、購入手数料が高いのが難点。
bitFlyer
日本で最もビットコインの取引量が多い(=売買が成立しやすい)取引所です。多額の取引をする場合におすすめ。 無難ですが、特に突出した特徴が無いのが難点と言えば難点。
私がメインで使っている取引所。手数料がマイナスなので、取引すればするほど得をします。 XEMを購入するならここ。サーバーが貧弱なのかたまに応答しなくなるのが難点。