珂珂的个人博客 - 一个程序猿的个人网站

Windows Docker安装Nextcloud

折腾了黑群辉、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



上一篇:个人代码全部开源

下一篇:j1900 局域网络速度之谜


0 评论

查看所有评论

给个评论吧