OpenMediaVault+Nextcloud搭建私有云盘

安装omv

下载镜像

macOS制作启动盘

1
2
3
4
5
diskutil list 
#确定是disk3
diskutil unmountDisk /dev/disk3
# 将镜像写入U盘
dd if=openmediavault.iso of=/dev/disk3

然后将U盘插入主机并调整开机引导选项,安装过程的提示都很显而易见。

安装完成后终端会显示IP地址,直接在浏览器中输入相应的IP就可以打开管理页面。默认用户名和密码在终端中也有显示。

默认用户名 admin

默认密码 openmediavault

安装插件

1
2
# 安装Omg-extras
wget http://omv-extras.org/openmediavault-omvextrasorg_latest_all5.deb

按照以下步骤安装:插件->上传-〉弹出选择文件框选,选中文件并上传->选中openmediavault-omvextrasorg(点击方框打勾)->安装

安装docker

点击侧边栏OMV-Extras -> docker-〉安装

镜像加速

1
2
3
4
5
6
7
ssh root@ip
vim /etc/systemd/system/multi-user.target.wants/docker.service
# ------
ExecStart=/usr/bin/dockerd --registry-mirror=https://docker.mirrors.ustc.edu.cn  -H fd://
#   http://hub-mirror.c.163.com/
# ------
systemctl daemon-reload 或者 service docker restart 或者reboot

安装硬盘

创建文件系统

挂载文件系统

启用SMB/CIFS

添加共享

使用Docker安装nextcloud

参考这篇文档不过我先拉取了一个portainer镜像,然后基于此通过图形界面安装nextcloud mariadb

数据库

mariadb没有配置成功,直接使用了sqlite

遇到的问题

nextcloud通过不被信任的域名访问

vim path_to_nextcloud_html/config/config.php

1
2
3
4
5
  'trusted_domains' =>
  array (
    0 => '192.168.1.140:8888',
    1 => '域名',
  ),

OMV启用rc-local

起因是因为OMV设置的静态IP无效,每次开机都需要进入终端使用dhclient命令去获取IP,实在没办法了,就像写一个开机启动脚本在每次开机的时候去执行dhclient命令。

Debian 10默认禁用了rc-local可以通过systemctl status rc-local查看。

1
2
3
4
5
6
7
8
9
vim /etc/rc.local
# --- 写入以下内容
#!/bin/bash
/usr/sbin/dhclient
echo "hello" > /root/log # 这行是为了重启后检查配置是否生效用的,配置好后可以删掉这一行。
exit 0
# --- end
chmod 755 /etc/rc.local
systemctl start rc-local

nextcloud 文件锁定

nextclouddata目录还可以通过smb访问,所以从nextcloud上传了一个文件,又在smb中把上传的文件给删除了。然后造成nextcloud中显示有所上传的文件,删除的时候报错,重复上传的时候显示"文件被锁定了",删也删不掉。

google了一下,都说先开启“维护模式”(maintenance:mode),然后进数据库删掉“锁定标记”,最后再关闭“维护模式“。但是实际部署时候的一些细节不一样,所以具体操作也不一样。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 首先登陆`portainer`,
# 找到nextcloud的contianer点击`Exec Console` 
# `User`处填入`www-data`点击`Connect`

# 进入nextcloud的data所在目录
cd nextcloud/data/
# 查看以下php可执行程序的路径
which php
# /usr/local/bin/php 是我机器的响应
/usr/local/bin/php ./occ  files:scan --all
/usr/local/bin/php ./occ  files:cleanup
# 打开“维护模式”
/usr/local/bin/php ./occ  maintenance:mode --on

# 然后ssh到omv上
apt update 
apt install sqlite3
cd /srv/xxxx/nextcloud/data
sqlite3 nextcloud.db
# 在数据中执行
delete from oc_file_locks where 1
.exit # 退出数据库

# 关闭“维护模式”
# 还回到'portainer'的nextcloud container的console执行下边命令
/usr/local/bin/php ./occ  maintenance:mode --off

# 最后重启一下nextcloud的container