环境准备:docker(本次搭建版本为 24.0.7)
Docker-compose(版本:v2.22.0)
1、创建Docker Compose文件:
在你的项目目录中创建一个名为docker-compose.yml的文件,并添加以下内容:
version: '2'
volumes:
nextcloud:
db:
services:
db:
image: mariadb:10.6
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- /home/zkah/nextcloud/db:/var/lib/mysql //这里用相对路径可能会出bug,最好使用绝对路径
environment:
- MYSQL_ROOT_PASSWORD=your_password
- MYSQL_PASSWORD=your_password
- MYSQL_DATABASE=your_database
- MYSQL_USER=your_name
app:
image: nextcloud
restart: always
ports:
- 6000:80 //可根据服务器内端口占据情况更改,6000端口是保留端口不能用
links:
- db
volumes:
- /home/zkah/nextcloud/nextcloud:/var/www/html //这里用相对路径可能会出bug,最好使用绝对路径
environment:
- MYSQL_PASSWORD=your_password
- MYSQL_DATABASE=your_database
- MYSQL_USER=your_name
- MYSQL_HOST=db
2、启动Docker容器:
打开终端,导航到存放docker-compose.yml文件的目录,然后运行以下命令:
docker-compose up -d
这会下载并启动Nextcloud和MariaDB容器。
3、访问Nextcloud:
打开浏览器,访问 http://localhost:6000。在第一次访问时,你需要设置管理员账户和密码。
## 问题一:网站无法访问
原因一:防火墙的端口策略未放开,打开防火墙(sudo ufw allow 80
)
## 原因二:局域网内可能不能访问,可修改config.php文件
通常此配置文件在/home/zkah/nextcloud/nextcloud/config路径下,
通常情况下此文件的权限属于root,需要更改,否则更改之后数据无法写入
<?php
$CONFIG = array (
'htaccess.RewriteBase' => '/',
'memcache.local' => '\\OC\\Memcache\\APCu',
'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' => 'oc41wr1ir13z',
'passwordsalt' => 'mmgKQ9LnSe1ihCWVXQd6+++vwPW5l5',
'secret' => 'Fhzxg3ppD4OcNxcDwTSRlwJujK9NaUA2sH3ckHSjUxJ4jFla',
'trusted_domains' =>
array (
0 => '192.168.1.123:6000',//这里填写访问的地址
),
'datadirectory' => '/var/www/html/data',
'dbtype' => 'mysql',
'version' => '28.0.1.1',
'overwrite.cli.url' => 'http://192.168.1.123:6000', //这里填写访问的地址
'dbname' => 'your_name',
'dbhost' => 'db',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'user',
'dbpassword' => 'passwd',
'installed' => true,
'appstoreenabled' => true,
'appstoreurl' => 'https://www.orcy.net/ncapps/v2/',
);
#另一种修改方式(不进入此目录修改)
vim config.php
//写入更改后的内容
docker scp /path/to/your/local/config.php CONTAINER_ID:/var/www/html/config/config.php
# 将 /path/to/your/local/config.php 替换为修改后的文件路径,CONTAINER_ID 替换为 Nextcloud 容器的 ID。您可以使用 docker ps 命令查看运行中的容器及其 ID。
docker ps //查看对应docker id
#修改权限
Sudo chown www-data:www-data /path/to/your/local/config.php/config.php
Chmod 740 /path/to/your/local/config.php/config.php
docker-compose restart app //重启docker 容器
## 问题三:nextcloud应用商城无法访问的情况,此两行为应用商店加速服务
'appstoreenabled' => true,
'appstoreurl' => 'https://www.orcy.net/ncapps/v1/',
# 问题四:若是还是不能访问,可关闭服务(进入docker-compose.yml所在的文件夹)
docker-compose down //关闭
docker-compose up -d //开启
4、通常在nextcloud的创建用户界面会选择数据库,将docker-compose.yml文件中所创建的数据库用户和密码填入其中就行。
数据迁移
步骤1:备份数据
1、备份 Nextcloud 数据目录:
tar czf nextcloud_data_backup.tar.gz -C /path/to/your/local/nextcloud .
2、备份数据库
docker exec -i nextcloud_db_1 mysqldump -u dbuser -pyou_passwd dbname > nextcloud_db_backup.sql
步骤2:传输备份文件到新服务器
将上述备份文件传输到新服务器,例如使用 scp 或其他文件传输工具。
步骤3:在新服务器上准备 Nextcloud
1、在新服务器上安装 Docker 和 Docker Compose:
根据新服务器的操作系统,安装 Docker 和 Docker Compose。
2、创建新的目录用于 Nextcloud 数据和数据库:
mkdir -p /path/to/your/local/nextcloud /path/to/your/local/db
步骤4:编辑新的 docker-compose.yml 文件(可于迁移之前的一样,之后就没有创建账户这一步填写数据库密码和之前一样就行)
步骤5:在新服务器上启动 Nextcloud
在新服务器上运行以下命令以启动 Nextcloud:
docker-compose up -d
步骤6:导入备份数据
1、将数据目录导入:
tar xzf nextcloud_data_backup.tar.gz -C /path/to/your/local/nextcloud
2、将数据库导入:
docker exec -i new_nextcloud_db_1 mysql -u dbuser -pyou_passwd dbname < nextcloud_db_backup.sql
步骤7:验证和测试
在浏览器中访问新服务器的 Nextcloud 实例,确保能够登录,并且用户数据和应用程序都可用。
问题五:不联网之后,点击应用界面一直转圈圈
解决方法:
禁用或修改设置检查: 在 config/config.php 中,你可以尝试禁用互联网连接检查。在配置中添加以下行:
'appstoreenabled' => false,
'appstoreurl' => '',
'check_for_working_internet_connection' => false,
这将禁用应用商店和互联网连接检查。