docker内运行nextcloud 备忘录
最近上海封控在家,正好鼓捣下nextcloud,安装视频教程网上很多,但实际使用的视频不多。记录一下备忘,也方便参考的人。
安装nextcloud的docker-compose.yml
运行在X86的CPU上,如需要ARM架构需要替换容器为arm架构的镜像。
需要的自取,可以直接安装,目前运行良好(宿主debian11,omv6),.yml里面的密码请自行调整。
如果希望反向代理(更安全些),则把app
的外接端口去掉,用proxy
设置代理app
的内网IP加80端口即可。如果是局域网内的nextcloud的,直接运行,然后在WAN口用nginx反代即可。
其他compose可参考 https://github.com/nextcloud/docker/tree/master/.examples
version: '3'
volumes:
nextcloud:
db:
redis:
services:
db:
image: mariadb
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=rootpwd
- MYSQL_PASSWORD=userpwd
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
redis:
image: redis
restart: always
command: redis-server --requirepass someredispassword
volumes:
- redis:/var/lib/redis
app:
image: nextcloud:apache
restart: always
ports:
# Public HTTP Port:
- '8080:80'
links:
- db
- redis
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=userpwd
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
- REDIS_HOST=redis
- REDIS_HOST_PASSWORD=someredispassword
depends_on:
- proxy
- db
- redis
proxy:
image: 'jc21/nginx-proxy-manager:latest'
restart: always
ports:
# Public HTTP Port:
# - '80:80'
# Public HTTPS Port:
# - '443:443'
# Admin Web Port:
- '81:81'
# environment:
# These are the settings to access your db
#DB_MYSQL_HOST: "db1"
#DB_MYSQL_PORT: 3306
#DB_MYSQL_USER: "npm"
#DB_MYSQL_PASSWORD: "npm"
#DB_MYSQL_NAME: "npm"
# If you would rather use Sqlite uncomment this
# and remove all DB_MYSQL_* lines above
# DB_SQLITE_FILE: "/data/database.sqlite"
# Uncomment this if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
volumes:
- ./npm_data:/data
- ./letsencrypt:/etc/letsencrypt
cron:
image: nextcloud:apache
restart: always
volumes:
- nextcloud:/var/www/html
entrypoint: /cron.sh
depends_on:
- db
- redis
天气插件显示是℉不是摄氏度
将用户
-个人信息
的本地
地区设置成使用摄氏度的区域即可。
安装外部存储
nextcloud是直接安装在docker的文件夹下的。如果docker本身卷在系统盘下,而系统盘往往不是很大,则需要扩容,另外也涉及持续化的问题。毕竟家用机的主板或者硬盘总是要坏的。
备份、迁徙数据
nextcloud可以看作是私人网盘,实际使用中你可以在网盘里新建文件夹,新建文件,上传照片。从隐私角度,这必然比各种网盘都要优秀。
在网上的网盘我们不需要关心磁盘的问题,可自己的磁盘那必然意味着磁盘的损坏可能带来问题,所以就需要对nextcloud的数据进行备份。
网盘上传的文件在哪里?
docker volume ls
docker volume inspect nextcloud
[
{
"CreatedAt": "2022-04-20T21:02:55+08:00",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "nextcloud",
"com.docker.compose.version": "1.28.4",
"com.docker.compose.volume": "nextcloud"
},
"Mountpoint": "/var/lib/docker/volumes/nextcloud/_data",
"Name": "nextcloud",
"Options": null,
"Scope": "local"
}
]
"/var/lib/docker/volumes/nextcloud/_data"
就是数据的问题了,打开文件夹,找到里面的data
文件夹,沿着用户名,你就会看到该用户的数据了。
迁徙数据
复制粘贴涉及到权限问题,故建议使用命令行。DD命令虽然好用,但无法拷贝文件夹。。
- 同一局域网内:
- docker run –rm -it -v ~/srv/dev-disk-by-uuid-E503F2B75AD697E4/backup-nextcloud:/backup -v /var/lib/docker/volumes/nextcloud_nextcloud:/docker busybox tar cfz /backup/data.tgz /docker/_data/
docker run –rm -it -v ~/home:/backup -v /var/lib/docker/volumes/nextcloud_nextcloud:/docker busybox tar cfz /backup/data.tgz /docker/_data/
docker run --rm -it -v ~/volume-backup:/backup -v /var/lib/docker:/docker busybox tar cfz /backup/volume.tgz /docker/volumes/