npm でインストールした tiddlywiki にプラグインをインストールする

ひじょうに困ったのと、時間を要したので同じようなめにあうことがないように記しておきます。

少ないと思いますけど。

## [tiddlywiki](https://tiddlywiki.com/) a non-linear personal web notebook　(2004-2020) version 5.1.22
 とはどういうものかというと、情報カードみたいにセルを取り出せるブログみたいな wiki みたいな Zettelkasten ていうらしいですが、そういうやつだとおもいます。なぜかキャラとして猫がどーんと推されています。tiddly って猫のことかな ?と思いましたが、たぶん違うでしょう。いつかわかるかもしれないですね、使っていたら。
html ファイル 1 つだけで完結しているものも出来上がるので[このように github pages でおいておく](https://dauuricus.github.io/lua-programing-Wikibooks/)こともできます。

この道しるべは、[Tiddlywiki を android で nodejs の web サーバーを使っている場合](https://www.youtube.com/watch?v=QTrKsHmVSGo&feature=youtu.be)を想定しています。

https://youtu.be/QTrKsHmVSGo

Android タブレットの場合は、npm からサーバーバージョンをインストールするように公式の tiddlywiki のページにありますから、素直にそうしたという初めての npm インストールから、初めての tiddlywiki なあなたです。

そうそれは、5 日以上前のわたし。
そしてついさっきまでかかってようやく、そこに マークダウンのプラグインをインストールできた今のわたしが、ここにいて、やり方が全然わからなかったし、途中で何回か無理かなとあきらめかけたなと思っているわけです。

## そう、 tiddlywiki はマークダウンで書けるわけですが、それには javascript のプラグインをインストールする必要があります。
Nodejs を使わない単体の tiddlywiki であればそのインストールは、なにも知る必要がなくインターネットにつながっていれば、 atom エディターのプラグイン追加のように、例のようにできますし、プラグインのリンクがあれば開いている tiddlywiki の上にドラッグアンドドロップでインストール可能です。それでことたります。

しかし、 npm でインストールした nodejs でコマンドでサーバーによって動いている　tiddlywiki の場合はもうちょっとてがかかります。
わかってしまえばそれまでなんですが、わかるまでに tiddlywiki の特性でもある情報カードみたいに細切れにいくつあるのかもしれない公式ドキュメントの断片や github ページをぐるぐる見回ることになります。

という前置き。

みるべきところは 2 つだけ、でした。
そして、それも片方だけです。
これ、
[Installing custom plugins on Node.js](https://tiddlywiki.com/static/Installing%2520custom%2520plugins%2520on%2520Node.js.html)
と

### これ。（ **こっちダ** ）
## [Installing a plugin from the plugin library](https://tiddlywiki.com/static/Installing%2520a%2520plugin%2520from%2520the%2520plugin%2520library.html)

tiddlywiki.info を探して書き加える。

何を、
`"tiddlywiki/markdown"`
を。

**前提として、プラグインの名称を前もって知っている必要があります。**

どうやって ?

**サーバーなしの tiddlywiki を開いてプラグインのライブラリーにアクセスして調べます。**

npm からインストールした tiddlywiki ではプラグインのライブラリーになーんにも表示されませんので不可能です。ここで android だけで ローカルホストからでしか tiddlywiki を見たことないで何とかしようとするとな、謎が深まるのです。
謎がなぞをよびます。
いや、見えないんだからおかしいやろ、と思わないともうそこでつんでしまいです。

[https://tiddlywiki.com/](https://tiddlywiki.com/)　
ここにアクセスして `tools` のタブをクリックし、`control
panel` のなかの `plugins` のなかの `Get more plugins` でプラグインを検索できます。
このように。
![Screenshot_20201213-120453.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225786/4c181d69-afab-6489-8cde-cdb4a424ea01.png)

Nodejs によってローカルホストでたちあがっている tiddlywiki だとアクセスできませんから、プラグインの検索画面でもなーんにも表示されませんから注意してください。



[前者のリンク](https://tiddlywiki.com/static/Installing%2520custom%2520plugins%2520on%2520Node.js.html)には

>Note that including a plugin as an ordinary tiddler (e.g. by dragging and dropping a plugin into the browser) will result in the plugin only being active in the browser, and not available under Node.js. 

とあります。

これは、
「プラグインを通常の tiddler として含めると（たとえば、プラグインをブラウザーにドラッグアンドドロップすることにより）、プラグインはブラウザーでのみアクティブになり、 Node.js では使用できないことに注意してください。」
ということですが、じゃあ、だからどうするのよ、とよく読んでもわからないのです。

なので、わかんないわー、どこに実例あるの? [youtube](https://www.youtube.com/watch?v=itoK6sxzDP0&feature=youtu.be) でチュートリアルは ? 

とならないために実例で、
##プラグインの名前は markdown という実在のプラグインを追加する事だけを説明します。
markdown プラグインは先程見たプラグインライブラリーに登録されているものです。カスタムプラグインはプラグインライブラリーに登録されていないものを含むので、登録されていないものは別に探しだしてダウンロードする必要があります。

Termux のコマンドライン
`ctrl + c`
で サーバーを止めます。（ [codeboard](https://github.com/gazlaws-dev/codeboard) や [hackerskeyboard]( https://github.com/klausw/hackerskeyboard) などのプログラミングに使える仮想キーボードアプリを使ってコマンドのキーを使えるようにしておく必要があります。）

Termux のコマンドラインで `cd` を駆使して（ `cd` と `ls` ）探しだした `tiddlywiki.info` ファイルに nano とか vi や vim 等のテキストエディターを使ってファイルを開いて、


```
$ vim tiddlywiki.info
```

Plugins の　項目のなかに

```
"plugins": [

		"tiddlywiki/markdown"
	],
```

というように一行を書き足して、保存。
tidlywiki.info の中はこのように。
![Screenshot_20201213-125149.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225786/43d055b2-d3b3-d366-f040-16c80f38718a.png)

Plugins のディレクトリを mkdir でつくる。（カスタムプラグインファイルをダウンロード可能な場合はここにプラグインファイルを配置するが、 markdown プラグインに関してはここにインストールされるわけではないので必要ない。）

```
├── plugins
│ 
├── tiddlers
└── tiddlywiki.info
```

そうして


```

Tiddlywiki mynewwiki --init server
```


でサーバーを再稼働させて、127.0.0.1:8080
をブラウザーで開くとプラグインが読み込まれている。
![Screenshot_20201213-000132.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225786/4d325ef4-75d3-bed0-d99e-addd81a41591.png)

#### 文章で分かりやすく書けたような気がしないので、[youtubeで見る](https://www.youtube.com/watch?v=_0wJYkqbAXk&feature=youtu.be)のがいいと思います。こういうことです。

以上です。

# もうひとつ。
npm でインストールした tiddlywiki を 127.0.0.1:8080 で起動しようとして port 8080 が address alredy in use となっている場面。

![IMG_20201207_141856_230.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225786/0c31b896-c65a-f972-a0bf-09450046ada6.jpeg)


これは、rootじゃない android で nodejs のサーバーが動いている状態で、バッテリー切れになり、再度電源を入れてみると、8080番ポートが何かに占有されています、いました。
２日経ってもおなじです。おなじでした。
リブートしてもおなじです。

root ではないのでプロセスを探そうにもプロセス番号を知ることができませんでした。
これは root 権限のない android だと困る問題です。たぶん。
 
![Screenshot_20201207-142359.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225786/72db04ba-9895-a34d-3751-acc011a4db2d.png)

## プロセス番号のわからない、ローカルホストの 8080 番ポートの何かを解放する方法。



```
$fuser -k -n tcp 8080
```

これで見えない、なぞの8080ポートのなにかを kill できました。

〈追記〉
が、ダメなときもある。8080ポートに kill は有効に働いているが、すぐに tcp6 で使われている。
何が有効な方法なのか、今のところわかっていません。よく起こるみたい。

![Screenshot_20201216-163242.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225786/4c46b2ab-434d-5cc6-caca-48f79f785ac0.png)

解決としては、 wi-fi の接続を切ります。つまりデバイスのインターネット接続を切ります。 
wi-fi 接続がない状態で、再度 127.0.0.1:8080 に tiddlywiki をたちあげるとエラーなしに起動します。