https://docs.nextcloud.com/server/21/admin_manual/installation/index.html
树莓派安装 docker 和 docker-compose(镜像快速安装)
参考文档:http://www.jianshu.com/p/f57390c9b68b
在用户目录下新建文件夹 nextcloud
mkdir ~/nextcloud
在新建的 nextcloud 下新建 docker-compose.yml 文件
vim ~/nextcloud/docker-compose.yml
docker-compose.yml 配置如下
version: '2'
services:
db:
image: ibex/debian-mysql-server-5.7 # mysql 镜像文件
restart: always
volumes:
- ./cloud/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=123456 # root 账号密码,根据需要更改
- MYSQL_PASSWORD=123456 # 普通账号密码,根据需要更改
- MYSQL_DATABASE=nextcloud # 数据库名
- MYSQL_USER=nextcloud # 普通用户名
app:
image: arm32v7/nextcloud # nextcloud 镜像文件
privileged: true # 拥 有root 权限
ports:
- 8888:80 # 端口映射,将 Docker 的80端口,映射成主机的 8888 端口,根据需要更改
links:
- db # db 是别名,使用该别名访问 前面定义的 db。nextcloud 启动时数据库的链接填 db。
volumes:
- ./cloud/config:/var/www/html/config
- /root/disk/nextCloud:/var/www/html/data # 因为树莓派本身存储太小,这里是映射到一个外置硬盘
- ./cloud/apps:/var/www/html/apps
restart: always
redis:
image: arm32v7/redis # arm32 架构的 redis
container_name: redis-d # 别名
privileged: true # 拥有 root 权限
restart: always
command: --appendonly yes --requirepass password # appendonly 持久化的模式, requirepass 设置密码 password
# command: redis-server /usr/local/etc/redis/redis.conf # 如果使用配置文件,requirepass password 需要写在配置文件中
ports:
- 16379:6379 # redis 6379 映射到主机的 16379 端口
volumes:
- ./cloud/redis/data:/data # 数据目录映射点
- ./cloud/redis/config/redis.conf:/usr/local/etc/redis/redis.conf # 配置文件映射点
liunx 查看端口的使用情况
# 如果显示 LISTEN , 说明已经被占用
netstat -anp | grep 端口号
# 查看所有已经被使用的端口
netstat -nultp
docker 源官方地址
运行 docker 程序:
在当前目录下(nextcloud
文件夹)执行 docker-compose up -d 命令,Docker 会根据我们的配置,自动下载镜像并启动程序,可能要稍微等会。如果启动容器配置数据有误,在当前文件夹运行 docker-compose down 移除容器,再次编辑 yml 文件后重新执行 docker-compose up -d。
docker-compose up -d # 以后台的方式运行容器,没有容器就会新建,不会在终端上打印运行日志
docker-compose up # 以前台的方式运行容器,本质是 docker-compose logs -f,它会收集所有容器的日志输出直到退出命令,或者容器都停止运行
docker-compose down # 移除生成的容器,不会移除镜像文件,yml 数据配置有误时,可能需要
docker-compose restart # 重启容器,不会加载新的 docker-compose 相关文件的新的改动。解决问题:在 ‘请确定在根目录下有一个名为".ocdata"的文件’ 需要,根目录指的挂在目录
docker-compose 相关命令,查看更多命令
docker container ls # 查看容器信息,主要看它的名称 NAMES,方便进入容器内部
docker exec -it nextcloud_app_1 bash # 进入容易内部,nextcloud_app_1 是容器的名称,上面那个命令查出来的
exit # 进入容器内部后,要退出的话 输入 exit 即可
docker ps -a # 查看所有 docker 容器
docker ps # 查看正在运行 docker 容器
docker stop 容器名称或者ID # 停止正在运行的容器
docker rm 容器名称或者ID #移除容器,移除前先停止容器
root@raspberrypi:~/nextcloud# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
136b42366301 arm32v7/nextcloud "/entrypoint.sh apac…" 4 hours ago Up 2 hours 0.0.0.0:8888->80/tcp nextcloud_app_1
f8a05c22c936 ibex/debian-mysql-server-5.7 "/entrypoint.sh mysq…" 4 hours ago Up 2 hours (healthy) 3306/tcp, 33060/tcp nextcloud_db_1
root@raspberrypi:~/nextcloud# docker exec -it nextcloud_app_1 bash
root@136b42366301:/var/www/html# exit
exit
root@raspberrypi:~/nextcloud# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
136b42366301 arm32v7/nextcloud "/entrypoint.sh apac…" 4 hours ago Up 2 hours 0.0.0.0:8888->80/tcp nextcloud_app_1
f8a05c22c936 ibex/debian-mysql-server-5.7 "/entrypoint.sh mysq…" 4 hours ago Up 2 hours (healthy) 3306/tcp, 33060/tcp nextcloud_db_1
server{
listen 10000; # 访问站点监听的端口
client_max_body_size 10G;
access_log /root/yzq/logs/nextcloud.access.log;
error_log /root/yzq/logs/nextcloud.error.log;
location / {
proxy_pass http://127.0.0.1:8888; # docker-compose.yml 映射的本地端口
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
}
假如 树莓派的 局域网 IP 是:10.0.0.2 浏览器打开: 10.0.0.2:10000 就能打开首次进入 nextcloud 的配置页面,注意: hostname 填 yml 文件的 db 就行了。
配置完成后,稍等片刻正常的话,就能进入到仪表盘页面
安卓客户端
因为树莓派是 基于 ARM 架构,所以很多镜像无法正常使用。
如果按照上面的配置就是执行此命令:
vim /root/nextcloud/cloud/config/config.php
'htaccess.RewriteBase' => '/',
# 'memcache.local' => '\\OC\\Memcache\\APCu', # APCu 缓存模式
'memcache.local' => '\\OC\\Memcache\\Redis', # 缓存模式:添加 redis 缓存
# 'memcache.locking' => '\OC\Memcache\Redis',
# 'memcache.distributed' => '\OC\Memcache\Redis',
'filelocking.enabled' => 'true',
'redis' => # redis 缓存连接信息
array (
'host' => '127.0.0.1',
'port' => 16379, # docker 中 redis 映射主机的端口
),
'trusted_domains' =>
array (
0 => '127.0.0.1',
1 => 'xxx.yyyyy.com', # 将这个自定义域名添加到配置中,才可以通过域名访问哦
2 => '10.0.0.11',
),
不想使用 MySQL,或者个人使用时,可以使用 sqlite 数据库,配置更简单。docker-compose.yml 文件内容修改如下:
version: '2'
app:
image: arm32v7/nextcloud
ports:
- 8888:80
volumes:
- ./cloud/config:/var/www/html/config
- /home/pi/disk/nextCloud:/var/www/html/data
- ./cloud/apps:/var/www/html/apps
restart: always
sudo fdisk -l # 列出硬盘硬件的相关信息
sudo blkid # 查看硬盘 uuid
sudo dumpe2fs -h /dev/sda1 # 查看硬盘 label 和 uuid
sudo mount /dev/sda ~/disk # 挂载 sda 硬盘到 ~/disk 目录下
sudo umount -v /dev/sda # 通过设备卸载
sudo umount -v ~/disk # 通过挂载点卸载
因为 mount 命令在系统重启以后会失效。
所以要通过配置文件,来让硬盘开机自动挂载。
首先,打开文件 /etc/fstab:
sudo vi /etc/fstab
将下面配置,添加在文件的最后(两句话是一个意思,随意使用一句就行):
# /dev/sda /root/disk ext4 defaults 0 0 # 使用设备名挂载
UUID=fsdfs-fsdf-werwerw-343-wer-aada /root/disk ext4 defaults 0 0 # 使用UUID挂载,推荐
其中 /dev/sda
为设备的名字。
其中 /root/disk
为挂载点。
参考文档:https://ggg.re/macos-mkfs-ext4
如果没有 Homebrew 的话,需要先安装 Homebrew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装 e2fsprogs:
brew install e2fsprogs
把 U 盘插到 Mac 上,执行:
diskutil list
找到自己 U 盘的盘符,比如我这里是:/dev/disk2s1,
/dev/disk2 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *31.0 GB disk2
1: DOS_FAT_32 KINGSTON 31.0 GB disk2s1
然后执行格式化:
diskutil unmountdisk /dev/disk2s1
sudo $(brew --prefix e2fsprogs)/sbin/mkfs.ext4 /dev/disk2s1
执行命令后会要求输入用户密码,然后输入 y 确认,等待一会儿就可以了。
docker 卸载不干净
例如:
官网介绍docker卸载的方法一般为
1> yum remove docker-ce -y
2> rm -fr /var/lib/docker*
但试过后你依然无法安装新版本,尤其是高版本降到低版本 docker,问题在于 docker 你并没有卸载干净
正确的卸载方法如下:
1> yum list installed | grep docker 查看
2> yum remove [docker 名称]
注:上述命令可以查询到未删除干净的 docker 残留,一般这种情况出现于 docker 18.09.3 版本上
[root@izj6c5nf8w ~]# yum list installed|grep docker
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
containerd.io.x86_64 1.2.13-3.2.el7 @docker-ce-stable
docker-ce.x86_64 3:19.03.12-3.el7 @docker-ce-stable
docker-ce-cli.x86_64 1:19.03.12-3.el7 @docker-ce-stable
[root@izj6c5nf8w ~]#
[root@izj6c5nf8w ~]# yum remove docker-ce.x86_64