折腾了黑群辉、QNAP ,但是老家用的windows作为NAS,感觉windows也有些优势吧,不用担心驱动问题,就是没好用的手机APP ? J4125的核显安装Jellyfin 硬解mp4好像挺卡的,但h264 貌似没问题。很久以前听说过nextcloud,当时安装成功过后来一直没用,现在还是准备安装这个。好像windows直接安装的资料比较少,那就采用docker来吧,还是遇到不少坑的。
我的想法是在物理机windows上安装mysql和nginx ,docker安装nextcloud
一、安装MySql
下载mysql的windows zip包
在MySQL安装目录的 bin 目录下执行命令:
mysqld --initialize --console
执行完成后,会打印 root 用户的初始默认密码,要是你手贱,关快了,或者没记住,那也没事,删掉初始化的 datadir 目录,再执行一遍初始化命令,又会重新生成的。
然后安装服务mysqld --install [服务名]
然后启动服务就可以了,在本机上用navicat 登录会提示密码已过期更改就可以了
这里我下载了个navicat 15的学习版,windows10总报注册机文件的病毒并且会自动删掉,我的想法是在虚拟机安装个windows7 然后运行注册机,然后把文件烤来烤去,事实证明行不通。。。最后生成active code的时候报错,但是windows7本机上就可以。
二、安装nginx
下载nginx的包后双击nginx.exe就可以运行
结束nginx -s stop(快速关闭nginx)nginx -s quit(完整关闭nginx,保留操作日志)。
有时候会结束不掉,可以用管理员运行cmd,我在任务管理器中结束nignx进程,发现有2个,结束一个又启动起来了,强制结束可以用
taskkill /F /IM nginx.exe > nul
在实际使用中,往往需要开机自动启动nginx,可以把它注册成windows服务
下载注册服务工具https://github.com/winsw/winsw/releases 这里下载WinSW-x64.exe
将其改名为nginx-service.exe 放到nginx的目录,新建服务日志文件夹server-logs文件夹,用来存放nginx服务相关日志
然后新建nginx-service.xml 重点包括三个,日志文件位置、启动命令、关闭命令
我的内容是
<service> <id>nginx</id> <name>nginx</name> <description>nginx</description> <logpath>C:\Data\nginx-1.22.1\server-logs\</logpath> <logmode>roll</logmode> <depend></depend> <executable>C:\Data\nginx-1.22.1\nginx.exe</executable> <stopexecutable>C:\Data\nginx-1.22.1\nginx.exe -s stop</stopexecutable> </service>
然后用管理员运行cmd 执行nginx-service.exe install 接着启动服务设为自动就可以了。
注册系统服务命令: nginx-service.exe install
删除已注册的系统服务命令: nginx-service.exe uninstall
停止对应的系统服务命令: nginx-service.exe stop
启动对应的系统服务命令: nginx-service.exe start
配置IPV6访问,nginx默认好像不能ipv6访问
更改nginx.conf 在server的linsten 80下增加listen [::]:80;
代理的server也加上
三、安装Docker
直接去官网下载Docker Desktop 安装的时候有个WSL 2替换Hyper-v选项,我开始以为替换后hyper-v就不存在了,尝试勾选安装成功后Hyper-v还是没问题。
安装docker desktop成功后在搜索栏输入nextcloud 点击pull发现很久都pull不下来,先点设置加入国内的镜像
然后发现好像在搜索栏还是pull不下来,这时候用cmd吧,输入docker pull nextcloud 发现还是命令好使。
这个docker是在软路由上安装的,NAS是以前的星际蜗牛j1900太差只是作为存储用,所以我还需要访问NAS的硬盘。最开始的想法先映射网络驱动器...
然后再把这个驱动器映射到docker的目录,但发现Nextcloud初始界面提示不能读写。
安装nextcloud后发现还不能挂载NAS的 smb 共享
先要在应用中添加外部存储
然后按网上说的安装smbclient
进入docker 的bash中运行
apt-get update
apt-get upgrade
apt install smbclient libsmbclient-dev
pecl install smbclient 这一步我执行不成功
docker-php-ext-enable smbclient 上一步没执行成功这一步也就没执行了
发现即使没执行成功,外部存储smbclient的提示也没有了,而且可以挂在SMB
如果非localhost访问发现提示不被信任的域名访问,还需要去修改config.php
进入docker的bash中运行 vi config.php 发现没有安装vi
apt install vi 也不好使,但可以运行apt install vim
在trusted_domains中添加IP和域名,起初我加了端口号发现不好使,好像安装后原来的就带端口号
这样网站访问没问题了,nginx访问也可以,但手机APP出现无法登录的情况
还是修改config.php 和overwrite.cli.url overwritehost overwriteprotocol 这三个有关
看到B站方不凡的评论:
添加add 'overwritehost' => '【本电脑IP】'后,只能通过【本电脑IP】访问,不能通过别的IP如127.0.0.1或者外网IP来访问,因为这个参数会强制覆盖自动生成的url里面的IP。替代方案:
注释或者删除add 'overwritehost' => '【本电脑IP】'
添加'trusted_proxies' => ['【Nginx镜像IP】']
我的配置
注释掉的两句会影响手机APP访问nginx的地址登录不上。但如果之前登录过好像仍然可以使用,怀疑APP的登录逻辑有BUG
但好像nginx好像没啥用,局域网可以用物理机的端口访问,而且物理机也有ipv6