dockerでホームネットワーク nextcloud
編集:2021.11.18
経緯
共有レンタルサーバーにnextcloudにインストール(保存暗号化設定)していますが 処理が遅すぎて実用できるものではありません。
スマホで使えるようにしていますが全然利用していません。
格安インターネットでのクラウドでは遅くて使い物にならないので ホームネットワークで立ち上げ直すことにしました。
筆者の場合、基本 外出先で同期して使うことはない + 外出先なら同期するにしても数個程度なので googledriveとonedriveで十分です。
ローカルマシンにインストールしてアクセスしたところ、デフォルト状態で、フォルダをクリックで表示に10秒もかかりました。
共有サーバーが遅いのではなく、 Nextcloud本体自体がとても無駄な処理をしすぎていて遅いようです。
webページは基本的にレスポンスを1秒以内に終了してすべてのコンテンツを返さないといけないですがwebコンテンツとしての基本を守っていないようです。
docker上ではなく、aptなどでネイティブにサーバーに押し込んだほうがいいかもです。
とにかく表示が遅くてイライラしますので、健康上よくないと思います。
docker
dockerは仮想マシン群なので 立ち上がりと処理が遅いですが、一度設定するとサーバーを引越しする際に楽です
基本ホストマシンに直接いれたほうがいいようです。
仮想マシンにさらにdockerをいれると仮想マシンの多重化になるのでとても遅くなります。
起動して数分して安定すると、そこそこストレスのない いい感じでレスポンスくるようです。
dockerのデメリット
- すこしのサービスでもGB単位で消費する
- 立ち上がりが遅い
- 配布imageのセキュリティが不安
- 配布imageの不具合に遭遇すると原因の特定が困難
dockerの注意点:不正なイメージを取得するとデータ漏洩やマルウェアの危険がある。
検索ワード: docker マルウェア
検索ワード: docker 脆弱性
dockerでnextcloudを利用する際の構成
image: mariadb
image: nextcloud
image: steveltn/https-portal
で 構成できます。
スマホ
ホームネットワークのdnsを常時適用させるのは難しいのと
非暗号での通信は 外出先でフリーWIFIに接続した際に危険です。
バックグラウンドでアプリが通信してしまうため危険です。
家庭内で利用する前提としても、https化が必須です。
ここで問題が生じます
ホームネットワークのDNSの設定ができる場合は、
https://ドメインネーム でアクセスできるので問題ないのですが
IPベースだと https-portal で、はじかれてしまいます。
原因の特定がなかなかできないので
apt つかって設定したほうが早いので、docker使うのやめようかとおもいました。
結局 特定に2日かかりました。
おかげで、dockerの仕組み、build、内部に入り方、設定ファイルの構造を おぼえましたけど。
開発などで同じサービスを複数起動して違いを確認したい場合は、便利かもしれないですね
原因
1.IP証明書の不具合(証明書の要件を満たしていない)
2.既存のnginxの設定ファイルがIPベースのアクセスに対応していない
ということで、
1.証明書ソースコード(rb)の修正, カスタムイメージを利用、docker build .
fs_overlay/opt/certs_manager/lib/open_ssl.rb
2..erbを配置して、nginx関連のconfを修正
volumes: - ローカルパス:/var/lib/nginx-conf
3. 必要なIPの数だけ https-portal ports アダプターのIP制限をかけて書き込む
IP:443:443
4. 対応させるIPの数だけ、https-portalの配置が必要なので効率が悪い
https://example.com/
複数の https://IP1/ https://IP2/でアクセスできるようにできました。
まとめ
公式サイトのhttps-portal で[できること/できないこと]
できること
http://example.com/
http://ipアドレス/
https://example.com/
できないこと
IPベースのhttpsアクセス
https://ipアドレス/
https-portalに修正を加えると新たにでできること
https://ipアドレス/
難易度(中)
最後に
希望通りに
https://でアクセスできるようになりましたら
安全のため
http:// でのアクセスは https へリダイレクトするように設定を変更しましょう