本文的需求背景
- 如果你有多余的机械硬盘,想要备份 照片
- 如果你有多余的老旧笔记本 当服务器,或者其他机器也可以
- 如果你还想 外网能够访问 家庭网络
- 你不考虑NAS的情况下
- 既不想买 腾讯或者阿里云服务器,又不想买域名的
而且我的意图是,我的硬盘里有资料了,只是想把硬盘作为挂载的工具放到nextcloud
如果不想折腾的,嗯,到了这一步,你和我说你不想折腾
如果不想麻烦的,嗯,还是上NAS。 虽然我没用过
技能要求或者工具
- 需要对linux 有一定的操作水平,文章中使用 ubuntu桌面版。就是有图形界面的哈
- 能够基础使用docker,docker-compose
- 能够关闭ipv6防火墙功能的 路由器
使用到的软件
- 个人网盘: nextcloud
- 容器: docker
- 免费域名解析: ddns-go
- 动态dns: dynv6 ,官网: https://dynv6.com
由于 这几款软件都是 开源软件,所以并不需要收费哈
第一步,docker
针对自己的操作系统,安装 docker ,以及 docker-compose
这一步 可以百度解决
第二步,安装nextcloud
docker 方式
参考文档: https://www.cnblogs.com/xwgli/p/16512462.html
内容分为几步:
-
安装redis,用于缓存 (参考上面文档的安装命令)
-
安装mysql,用于存储数据(参考上面文档的安装命令)
下面的mysql配置项,填入的是安装mysql时的内容
对不住,照片用的其他兄弟的哈 -
安装nextcloud
docker run -d -p 8080:80 \
--restart=always \
-v /home/nextcloud/html:/var/www/html \
--link nextcloud-mysql:mysql \
--link nextcloud-redis:redis \
--name nextcloud nextcloud:latest
解释下命令:
-d 后台启动
-p 端口映射,将docker 80端口映射到 宿主机的9090端口
-v 将docker /var/www/html 目录映射到 宿主机的 /home/nextcloud/html
因为nextcloud再docker 是安装到 /var/www/html 目录下的,那么你以后往网盘上传东西的时候,数据也都在这个目录下。
所以得把这个 目录映射出来,否则,你重新创建container后,数据是没了的
–link 链接 MySQL 和 Redis 到 nextcloud 容器,使用别名访问
注意: nextcoud配置文件 可以暂时先不修改
此方法适用于docker启动, 比较方便快捷
docker compose方式
为啥要使用docker compose方式呢,因为配置文件的方式,比较好记,也比较好修改。
基于前面的参考文档,redis 和mysql 不变,当然 你也可以换个方式安装。
我是为了 学习下 docker compose 并且要用于工作的
找个目录, 创建 docker-compose.yml 配置文件
services:
app:
image: nextcloud #使用的镜像名
restart: always
ports:
- 9090:80 #端口
networks:
- nextcloud_netbridge #使用的网络方式
external_links: # 关联的外部容器应用。这里就是前面创建好的 mysql 和 redis
- nextcloud-mysql:mysql
- nextcloud-redis:redis
volumes: # 映射主机的路径到 docker容器内
- /home/xxxxx/nextcloud/html:/var/www/html
- /mnt/testmount:/mnt/testmount2
environment:
- MYSQL_ROOT_PASSWORD=xxx
- MYSQL_DATABASE=nextcloud
privileged: true # 给nextcloud root权限
#devices:
# - "/dev/sdb1:/dev/xvda:rwm"
# 网络方式
networks:
nextcloud_netbridge:
driver: bridge
配置完成后,执行
docker-compose up -d
如果后续这个配置文件不改动,那么不要使用 up -d 启动
尽量使用下面的命令
docker-compose restart
注意:
如果配置文件改动,则需要使用 up -d 启动,会重新创建container,你容器里修改的内容将会丢失
采用 restart 方式,则只是重启 容器里的服务
启动nextcloud
ip地址查看,找到你的wifi网卡或者有线网卡
ip addr
或者
ifconfig
接着浏览器输入: 你的ip地址:8080
这样, 搭建nextcloud 就完成了