windows系统,家庭自用NAS。本地局域网 Docker安装nextcloud
1、docker安装
太简单了,直接去搜一搜。
docker-compose 相关命令
docker-compose down
docker compose up -d
2、还是使用老的
在你需要挂载的目录下,新建一个文件,文件名为:docker-compose.yaml
docker-compose.yaml
复制下面的内容
version: '3.2'
networks:
default:
name: nextcloud
services:
app:
image: nextcloud:latest
restart: unless-stopped
volumes:
- ./opt/Nextcloud_docker/app:/var/www/html
environment:
- MYSQL_PASSWORD=123456 # 按需修改
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
- TZ=Asia/Shanghai
ports:
- 8888:80 # 按需修改
networks:
- default
cache:
image: redis:latest
restart: unless-stopped
expose:
- "6379" # 可用此默认。因为这是暴露而不是映射
volumes:
- ./opt/Nextcloud_docker/cache:/data
command: redis-server --requirepass '123456' # 按需修改
environment:
- TZ=Asia/Shanghai
networks:
- default
db:
image: mariadb:latest
restart: unless-stopped
# 下面的command与官网略有不同。它将有助于避免MYSQL数据库的4047报错。
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed
volumes:
- ./opt/Nextcloud_docker/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=123456 # 按需修改
- MYSQL_PASSWORD=123456 # 按需修改
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- TZ=Asia/Shanghai
networks:
- default
这个最好放到你要挂载的盘和目录,然后进行docker-compose up -d
3、配置nextcloud的config
这个就是在T:\nextcloud\opt\Nextcloud_docker\app\config\config.php
自己找找看吧
config.php
<?php
$CONFIG = array (
'htaccess.RewriteBase' => '/',
'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => array(
'host' => 'cache',
'port' => '6379',
'password' => '123456',
),
'default_phone_region' => 'CN',
'apps_paths' =>
array (
0 =>
array (
'path' => '/var/www/html/apps',
'url' => '/apps',
'writable' => false,
),
1 =>
array (
'path' => '/var/www/html/custom_apps',
'url' => '/custom_apps',
'writable' => true,
),
),
'upgrade.disable-web' => true,
'instanceid' => 'ocx4d6ffgkjy',
'passwordsalt' => 'traaLklgOFTY5ji+aOkkCpW9uOn1CI',
'secret' => 'JuQWPi1iMXPitSfPhReWClkgjiLXXqrDUqHUwJrxgpsvAsPT',
'trusted_domains' =>
array (
0 => 'localhost:8888',
),
'datadirectory' => '/var/www/html/data',
'dbtype' => 'mysql',
'version' => '29.0.1.1',
'overwrite.cli.url' => 'http://localhost:8888',
'dbname' => 'nextcloud',
'dbhost' => 'db',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'nextcloud',
'dbpassword' => '123456',
'installed' => true,
);
执行定时任务
这个东西最好使用ubuntu系统,wsl2 可以搞个,不然windows很麻烦。
下面我是用ubuntu处理的定时任务,这个定时任务主要处理文件扫描,也就是下面直接移动复制文件到容器挂载的目录中,文件扫描就能把这个显示在web上。
docker exec -u www-data nextcloud-app-1 php cron.php
crontab -e
*/5 * * * * docker exec -u www-data nextcloud-app-1 php cron.php
tip: windows下的定时任务脚本
在Windows中使用schtasks
创建每5分钟执行一次的任务,您可以按照以下步骤操作。这里我们使用/MIN
参数来设置任务的频率。由于schtasks
没有直接支持*/5 * * * *
这样的crontab风格的分钟设置,我们将使用一个简单的循环脚本来实现每5分钟执行一次。
-
创建批处理脚本:
首先,创建一个批处理脚本文件,例如run-docker-cron.bat
,并在其中添加以下内容:@echo off docker exec -u www-data nextcloud-app-1 php cron.php
-
使用
schtasks
创建任务:
打开命令提示符或PowerShell,然后使用以下命令创建任务。这个命令将创建一个名为MyDockerCronTask
的任务,它会每5分钟运行一次批处理脚本:schtasks /create /tn "MyDockerCronTask" /tr "C:\Users\67317\Desktop\ai\nextcloud\run-docker-cron.bat" /sc minute /mo 5
请将
C:\path\to\run-docker-cron.bat
替换为您的批处理脚本实际所在的路径。 -
运行任务(测试):
您可以手动运行任务来测试它是否按预期工作:schtasks /run /tn "MyDockerCronTask"
-
查看任务:
使用以下命令来查看任务的详细信息:schtasks /query /tn "MyDockerCronTask"
-
修改任务(如果需要):
如果需要修改任务的触发时间或其他设置,您可以使用schtasks
的/change
选项:schtasks /change /tn "MyDockerCronTask" /mo 5
-
删除任务(如果需要):
如果需要删除任务,可以使用/delete
选项:schtasks /delete /tn "MyDockerCronTask" /f
请注意,schta sks` 命令可能需要管理员权限来执行。如果您在执行上述命令时遇到权限问题,请以管理员身份运行命令提示符或PowerShell。
此外,确保您的批处理脚本文件路径正确,并且您的Docker命令可以在命令行中直接执行。如果Docker命令需要特定的环境变量或工作目录,请确保在批处理脚本中指定这些条件。
5、修改可信域名
解决方法:修改config文件下的config.php
1、修改trusted_domains
'trusted_domains' =>
array (
0 => 'localhost:8888',
1 => '192.168.3.111:8888',
),
6、处理移动文件问题
因为本人这个电脑搞了1个T的固态,5个T的机械硬盘。
所以,在一个备份的1个T的机械硬盘中,使用docker compose up -d命令。将当前目录挂载到了nextcloud服务中。
1、然后将其他之前存储的东西,直接粘贴复制到。
T:\nextcloud\opt\Nextcloud_docker\app\data\root\files
相应的你要修改自己的地址目录。
T:\nextcloud\opt\Nextcloud_docker\app\data\root\files
这个root就是 root用户。
2、然后你就等你的定时任务刷新。
就是上面的定时任务,会进行文件扫描,。那么一切大功告成。
谢谢大家,如果有用可以点个赞或者收藏。
有问题,一起交流。