Falconの思うままに

PASCAL好きが、気ままにマニアックなネタを

nextcloudの外部ストレージで苦労

さて、今日はnextcloudと格闘していました。

 

作業は2つです。

1.CODEサーバーが社内から起動しない。

2.外部ストレージにNASを追加

 

1はCODEは外部サイトからCloudflaredで公開したCODEは接続できるのですが、

Cloudflaredの内側(社内LAN)からは接続できないという問題がありました。

CODEはFQDNがついているのですが、nextcloudはついていないのです。

社内用のnextcloudなので公開しないのが理由です。

 

もう面倒な形態確定ですね(笑) 悩みに悩んだのですが、

nextcloudのIP(ローカル)をnextcloudのconfig.phpにtrusted_domainsに

追加することで対処できました。

経験からするとこの設定で解決した例は多々あります。

まずはやってみる価値がある設定と思っていいと思います。

Podの中にapt-getでvimを入れて設定変更を始めてやりました。

勉強になります。

 

2ですがNASのCIFS共有をnextcloudから見たいなという簡単そうな案件でした。

まあpodmanなんでまずは母艦にCIFSマウントするところからです。

それをpodmanでマウント設定をして見えるようにしてローカルストレージとして

マウントしてみました。文字化けがありロケール変数の設定などしたのですが....

いちおう外部ストレージとして現れるのですが、重たい。エラーがでるなど

調子が悪い。AI的にはこの指示なんですが、不安定で使えないことが判明。

困ったのでNAS側の設定を見るとftpとsftpが選択肢にありました。

WebDAVはサポートしていなかった。

枯れた技術のftpかなと思ったのすが、これまた調子が悪い。

フォルダーがほぼ出てこない現象になりました。

ftpコマンドで確認する分には正常なんですがね。

これも使えないということでsftpにしてみました。

sshと同じ22での通信です。

結果これが正解でした。問題ありません。文字化けもないです。

ftpはメンテする人いないということもAIが言うのでまあやっている人少ない

のかもですね。日本語の問題もあるのかもしれないです。

sftpはUTF8が前提なので相性がいいということも納得です。

これでNASのファイルもnextcloudで統合できたので大変便利になります。

 

社内LANでの統合事例として書いておきますので、参考にしてください。

 

ではでは。

 

 

Docker->PodmanでPod化

さて、Podman派の私です。

Podmanって? マイナーですかね。簡単に言うとDockerです。

(言い過ぎ...) 

DockerHubからファイルを取ってくるのは変わらないですが、実行コマンドが

Podmanになります。ほぼコマンド置き換えで使えます。(使ってます)

最大の利点はRootlessということです。まあDockerでもRootlessできますがね。

Daemonを使わないという所がありリソースが優しいかなといったところで

Dockerバリバリの人はPodmanに興味はないかも(笑)

docker-composeはpodman-composeになりまして、compose fileはdockerhubの

fullpathを書かないと駄目とかありますが、基本はdockerの知識で大丈夫という

ものです。なのでPodmanの解説が薄いのも頷けます。同じですからね。

Podmanを使い始めたのはLXCのコンテナ下でDockerが厳しい場合があって

Podmanなら通ったのが始まりです。権限の話ですね。

 

ということで最近は何でもPodmanなんですが、Podという言葉どおりPodで使うのが

運用としてあります。Pod内がlocalhost扱いになりますね。

まあpodman psでみるとcomposeで起動場合たくさんプロセスが出てくるのですが、

pod化するとpodman pod psでpod一覧になり見やすいんです。

まあそんな理由はどうでもいいかもですが...(笑)

Docker-Composeを離れてPod化ができます。Podの定義はk8sとかの定義ファイル

と同じらしい。kubeファイルというやつですか。

そちらの世界はまったく詳しくないのですが、Podの概念がその基本になるようで

composeからpod化してみました。

 

変換はpodman generate kubeというコマンドで変換できます。

それをsystemdで起動するのが簡単です。と書かれていましたが、かなり慣れが

必要だと思いました。でも一通り覚えれば同じ作業になるので、

Pod化はうまくいきました。すべてユーザー権限でdockerイメージを動かせています。

 

そのうちk3sを導入してみようと思っているのでPod化に慣れておかないとね。

何故かというとOcteliumの活用が待っているからです。

またマイナーなものを持ち出しますが、このソフトがk3sベースなので、

docker-> podman -> k3sという流れになります。セルフホストマニアの

必然の流れですかね。

 

ではでは。

 

Headscale運用から1年経過

さて、過去の記事を振り返っていたらHeadscale運用から1年が経過して

いました。

OCI Always Freeは5年程度ですか。アカウントもBANされず細々と

運用させていただいております。

OCI+Cloudflareの組み合わせに自然にたどりついたのですが、この組み合わせで

セルフホストは本当に最強だと思っています。

好きなことがほぼできていますし、環境の組み換えも自在です。

「お一人様サーバー」ですので迷惑もかけませんしね。

自宅はラズパイとManjaro Linuxの老体mini PCで頑張っているのですが、

自宅はIotの基盤として、OCIはnextcloudの基盤として活躍しています。

このネットワークを裏で支えるのがHeadscaleです。

自分ですべてをコントロールできるので快適すぎます。

 

Headscaleの運用ですが、一度証明書が切れるという失態を犯しました。

これは人災です。それ以外は更新はcertbotに任せ安定して運用しています。

OCIはamd64 1Gとarm64 24GをFree枠で持てますので、headscaleはamd64

で動かしてメインのarm64サーバーダウンでも他のマシンに影響しない構成にしています。

これだけでも無料枠を使い倒していますね。

 

安定しすぎていて何もしていません。そろそろversion upでもしますかね。

サーバーのメンテナンスをする裏方として欠かせないですね。

また公開する必要がないサービスはheadscale内の公開というメリットが

あります。そもそもお一人様なのでこれだけでいいのですが。

 

sshポートはheadscale内には公開しているのでいつでも接続できますし

サーバー間のwebhookも問題ありません。

ゼロトラストだが利便性は最大限ですね。クライアントはtailscale依存ですが

Linux,Windows,Androidで運用しています。

 

最近はCloudflareでmTLSに傾倒していますが、副回線としての地位はゆらぎません。

androidでtailscale VPNですと電池の持ちが気になりますので非常用で入れています。

通常はmTLSアクセス運用にしています。

この自由さをぜひ体験してみてください。

簡単なので私がアドバイスするまでもないですが、経験は話せますので

聞いてください。

 

ではでは。

 

mTLSのandroidでの運用トラブル

さて、mTLSをCloudflareのproxyサイトに導入して快適に過ごしています。

ただandroidのchromeからはblockedと表示される場合があり

困っていました。

解決しましたのでnoteにまとめた記事にしました。

ご覧ください。

 

note.com

ではでは

社内リバースProxy&自己証明書不要化

さて、社内用Proxyサーバーが必須になってきました。

社内サービスがPodmanで瞬間に立ち上がるので、もうIPベースでは大変

 

ということでNginxをリバースProxyとして立ててみました。これであれば

DNS名で引けます。無骨にNginxのconfファイルを書こうかと思っていたの

ですが、AIがnpmがあるよというので.... npm ? node.jsのパッケージマネージャー

では?(笑)と思ったら Nginx Proxy Managerでnpmなんですね。

知らないよ〜

そんなでnpmを立ち上げたら.... とっても便利じゃないですかあ。

はやく教えてよ。状態です。

ProxyがGUI操作で一瞬で設定できてSSLファイルも指定すればいい。

WebSocketもONにするだけでいいのか〜〜

いや楽すぎでしょう。

ということで社内にnpmをいれると、別の便利なことができます。

そうCloudflareで社内用のワイルドカード証明書が取れてしまう!!!!

興奮してしまいますね。 そうローカルIPでも証明書がとれるので自己証明書

が不要なんです。本物の証明書が社内で使えるのです。

これはCloudflareがDNSなんでできるんですよね。DNSチャレンジで取ってくれるので

80を空けてやるhttpチャレンジでなくていいので可能なんです。

いや〜〜便利すぎ。

それで目から鱗だったのが社内IP(ローカルIP)をCloudflareに登録しちゃうという

技です。

頭が古い私にはショックでした。あ〜その手があるんだと。

本来は社内DNSを立ち上げてローカルIPを管理するのですが、

もうドメイン管理しているDNSが手中にあるので、そこに書いておけば

社内なら名前解決してくれるんですよね。

やってみました。みごとに解決して画面がでてきます。

ちなみにHeadscaleでサブネットもみれるので、FQDNで指定すれば

解決して無事見えるというお土産つきでした。

社外でもDNSが有効ということです。

 

まあ社内と社外でIPが変わるので社外公開するサービスはローカルDNSを

立てないといけないですが、社内Proxyで受けているのでCloudflaredで公開

すれば証明書は同じにできるのがこの方式の利点です。

社内と社外で違うとトラブルの元らしい。

 

みなさんもぜひ社内でもLet's Encryptをやってみてください。

Cloudflareのサービスを使い倒しましょう。

 

ではでは。

 

Claude使ってますか?

さて、Claude使ってますか?

Geminiが9割ですがClaudeが1割でした。

まあGeminiも悪くないですが嘘が多め。Claudeはお硬いので

「わかりません」というがGeminiは妄想が入る。

ということでClaudeにしたいところですが、無料枠はすぐに到達してしまい

ちょっと待ったないとなということでGeminiに戻っていました。

しかし、私が無知なだけでした。(汗)

モデルを「Haiku]にすれば結構持ちますねえ。

最近ローカルLLMでトークン数とかTPM制限とか学んできたので、

このあたりの消費に敏感になってまして、やっと軽量モデルとの使い分けを

するようになりました。無知は怖い(笑)

ClaudeやるとClaude Desktopとかに興味が湧きますね。

 

もうAI関係に追いつくのが大変。いかに活用するかが肝心ですね。

ローカルLLMも立ち上げたいしなあ。

セルフホストやっていると自由があって楽しいですね。

 

ではでは。

CloudflareでmTLS

さて、CloudflareでmTLSをやってみました。

情報が少なく大変でした。

mTLSとはクライアント側に証明書を置いてそれで認証してもらう

技術です。ユーザー名+パスワードを廃止しても安全性は問題ない

ので利便性が向上します。

 

それで記事をnoteにまとめました。

AIに書いた記事を校正してもらうといい感じになりますね。

活用せねば。

 

note.com

Cloudflare側はmTLSにしてAuthentikはアプリ側のSSOにしようかと。

それがいいのではと思ってきました。

インフラをころころ変えて遊んでいるのが楽しいですな。

 

ではでは。