Nextcloudをたててくそでかファイルサーバーつくった
乳は控えめな方が良いが、ストレージはデカいほうが良い。
動機
Microsoft 365 Personal(旧Office 365 Solo)を年間契約してて、ストレージ1TBとMS Officeのサブスクが降ってきてるんですけど、最近Officeで資料を作ることが増えてきて、かつ、デスクトップとThinkPadの同期が割と遅い(同期タイミング、通信速度もろもろ)のが気になってきたので、前から挫折してたNextcloud鯖を生やすことにしました。
要件
- 宅内、宅外の両方で使えること
- 宅内、宅外を気にしないでドメインで接続したい
- 宅内の場合はGbEで通信すること(NAS的な運用もしたい)
- Nextcloud以外にもGRAV(Flat-File CMS)も同居させたいので、サブドメイン切ってポートも変えたい
実際にやってみた
Nextcloudのインストールにはzip版、Snap版、Docker版があるが、結局Zip版にした。
DockerはさわったことないのでDockerとはなんぞやだったし、Snap版は入れるのはかんたんだったけどWebrootがどこなのか結局わからなくてNginxの設定ファイルの書き方で詰まったので。
Zip版はMariaDBを触る必要があり、DB触りたくねえ~~ってGRAVを選んだので手が出せなかったけど、他に選択肢がなくなったので仕方なく私がやりました。
nginxの設定
https://docs.nextcloud.com/server/20/admin_manual/installation/nginx.html を
server_name drive.home.neso.tech
root /var/www/nextcloud
に書き換え。
そういえばnginxといえば、設定ファイルを /sites-available
に置く派と /conf.d
に置く派があるみたいなんですが、どっちが正統(?)なんでしょうか。
個人的にはavailableにおいといてenableにシンボリックリンク貼るほうが有効無効と過去のconfも取っておけて分かりやすいように思うんですが。
LEの取り方が変わってた
SSLはみんな大好きLet's Encryptで取った。
新規取得でcertbotを触るのは久しぶりで、
$ certbot --nginx -d drive.home.neso.tech
では取れなかったので、
$certbot ceronly --manual --preferred-challenge dns -d drive.home.neso.tech
で取った。
- Let’s EncryptのTLS-SNI-01認証のバリデーションに伴う対応策まとめ | オウンドメディア | 大阪市天王寺区SOHOホームページ制作 | デザインサプライ-DesignSupply. https://designsupply-web.com/media/developmentlab/4485/
conoha-dnsがクソ便利でした。 -> conoha-dns
$ conoha-dns add _acme-challenge.drive.home.neso.tech -t TXT -d hogehogehogehogehogehoge
でDNS APIが叩けて非常に楽。
外出先と家の中で同じホスト名を使って接続する
外出先からだけ、家の中でだけ、のどちらかなら簡単だったのだけどネットワークのこと理解してなくて時間かかった。
v4とv6の両方をDNSレコードにかく
これなら内側からでもv6を通って一意にNextcloud鯖までいけるのでよかった。
最初は宅内DNSサーバーを作って、家にいるときにはルーターのDNS設定をそこに向けて、宅内宅外の判別をさせようかと思っていたのだけど、IPv4+IPv6でなんかうまくいった。
WAN側からはv4(v6も可)を経由して名前解決ができるが、LAN内ではv4だけではルーターがNextcloud鯖へパケットを向けてくれないらしいのでv6でいい感じになれているらしい。
v6のことよくわからなくて敬遠してたけど、LANの内外を関係なく一意に特定できるのでクソ強いですね...
図
自分で理解するために図を書いたらなるほどLANの内側からは名前解決できないのがなんとなく理解できた。
確かにルーターの設定画面は「WAN側から指定のポートにパケットがきたらLAN側のhogeというホストに流す」としか書いてなかった。
HELP
そういやこんな警告出てるんですけど、どこ直したら良いんですか
PHPのシステム環境変数が正しく設定されていないようです。getenv("PATH") コマンドでテストして何も値を返さないことを確認してください。 PHP設定の注意事項と php-fpmを利用する場合のサーバー向け設定をインストールドキュメント↗で確認してください。
PHPのメモリ制限が推奨値の512MB以下です。
"Strict-Transport-Security" HTTPヘッダが最低でも "15552000" 秒に設定されていません。セキュリティを強化するには、セキュリティTips ↗で解説しているHSTSを有効にすることを推奨します。 メモリキャッシュが設定されていません。可能であれば、パフォーマンスを向上するため、memcacheを設定してください。より詳しい情報はドキュメントで参照できます。
おわり
100MB/sでファイルが転送されるの楽しくて無駄に転送して遊んでる。
そのうちNICとルーター変えて10GbEやりたいな...
おわり。