以外のlocationで起動する。以外のlocationで起動する。Docsのようにリアルタイムに共同作業できるHackMDが便利なので特定多数しかアクセス出来ない環境に作りたくなった。Basic認証を掛ければ当面は大丈夫そうだがHackMDにはどうやらその機能がない。外からアクセスできてサブドメイン無制限なSSL証明書のある環境を持ってないので、SSL設定済みのnginxの下にlocationを掘ってプロキシさせて走らせる事にした。めんどくさがらずにサブドメイン用の証明書作って解決してもいいのだろうけれど今回は勉強も兼ねている。-dとやればバックエンドのPostgreSQLサーバも含めてガサっと立ち上がって3000番ポートで利用可能になるが、こっちだとlocationを変えた場合の設定変更ができない。(厳密にはスクリプトを書き換えれば何でもできるのだけれどそこまでする元気は無かった)以下の方法ではDockerを使わずに行う。Ubuntu14.04でnginxは既に何らかの方法でSSLの設定を済ませているものとする。EncryptなどでまともにSSLさせる方法はググると山ほど出てくるのでここには書かない。ここではそれ以外で必要な環境を揃える。後で使うPostgreSQLの設定PostgreSQLにhackmdユーザとhackmdデータベースを追加する。ユーザ名・パスワード・データベース名は後で作るhackmd用設定ファイルと一致していれば何でも構わない。以下にHackMDを立てる前提で書くので各自読み替えて欲しい。HackMDをnginxの下でhttpを吐かせて、https化はnginxが行う。HackMDが指定するリソースファイルも全部httpsのURLでアクセスさせたいのだが、HackMDが吐くURLをhttpsで始まらせるにはprotocolusesslオプションを指定する必要があり、その場合はHackMDがhttpsを吐こうとしてしまう。こんな汚い手段に出た。これはHackMDのバージョンアップでいずれ解消される問題かも知れないので、とりあえず読み飛ばして実行して、ダメだったらこれを実行する程度にして欲しい。lib/config.js;強引にURL生成に使う文字列にhttpsと埋め込んでいる。こんなことをせずに素直にhackmdにhttpsを吐かせてそれをルーティングすべきかも知れない。nginxにhttpsクライアントをさせるのはちょっと好かないが。node.jsが起動するが、これに443ポートに居るnginxから中継させてアクセスさせたい。node.jsのhackmdに取り次ぐ設定を書く。宛にアクセスを試みて結果を中継する必要がある。使っているので、WebSocket通信のupgradeも中継する必要があって少し設定が長くなっている。$http_host;実際、冗長な物があるかも知れないのでいくつか消しても動くかも知れない。アクセスしてみてBASIC認証用の小窓が出てくれば成功。豊かなHackMDライフを送ろう。requestStockLike14@kumagiロックフリーです。upLoginユーザーは見つかりませんでした。