Netcloud可支持自建私人网盘,核心能力有文件存储、在线预览、生成公开分享链接、密码保护链接、过期链接、文件夹分享、多用户、同步客户端(Windows/Mac/ 手机)、离线下载、相册、Office 在线编辑。
本文简要记录Netcloud部署流程。
首先需要一台服务器用于搭建Netcloud,这里我以一台8核16G内存500GB硬盘的Ubuntu 22.04虚拟机作为系统配置,采用docker方式进行部署。后续具体步骤如下:
- 安装docker并更改镜像源
具体安装步骤可参考Docker安装与镜像修改 - 使用docker compose部署
mkdir-p/opt/nextcloud&&cd/opt/nextcloudnanodocker-compose.ymlyaml文件内容如下:
services:db:image:mariadb:10.11restart:alwaysvolumes:-./db:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD:NCroot123456MYSQL_DATABASE:nextcloudMYSQL_USER:nextcloudMYSQL_PASSWORD:NCuser123456command:--transaction-isolation=READ-COMMITTED--binlog-format=ROWredis:image:redis:alpinerestart:alwaysapp:image:nextcloud:apacherestart:alwaysports:-"8080:80"# 访问端口,可改成80/其他volumes:-./html:/var/www/html-./data:/var/www/html/data# 文件存储目录(你的网盘文件)environment:MYSQL_HOST:dbMYSQL_DATABASE:nextcloudMYSQL_USER:nextcloudMYSQL_PASSWORD:NCuser123456REDIS_HOST:redisdepends_on:-db-redis运行并打开界面
运行docker compose up -d, 完成后即可打开服务器IP:8080访问界面并使用
打开界面后,初次访问可以设置管理员账号密码,设置完成即可进入网盘进行使用
后续即可在网盘创建文件并进行共享:配置ssl
上述的方式只能访问http://服务器IP:8080,如果想设置ssl证书,可以通过以下方式:
在docker-compose.yml文件中添加如下内容
nginx: image: nginx:alpine restart: always ports: - "80:80" - "443:443" volumes: - ./nginx/conf:/etc/nginx/conf.d - ./ssl:/etc/nginx/ssl depends_on: - app并将原docker-compose.yml中的app 端口映射注释掉:
#ports:#- "8080:80"然后
mkdir-p/opt/netcloud/nginx/confmkdir-p/opt/netcloud/sslcd/opt/netcloud/nginx/confnanonetcloud.conf输入以下内容:
server { listen 80; return 301 https://$host$request_uri; } server { listen 443 ssl; ssl_certificate /etc/nginx/ssl/client-server.crt; ssl_certificate_key /etc/nginx/ssl/client-server.key; location / { proxy_pass http://app:80; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }将申请好的证书放入/opt/netcloud/ssl,分别为client-server.crt,client-server.key。重启容器:
dockercompose downdockercompose up-d重启后,打开 https://服务器IP, 会出现提示“通过不被信任的域名访问“,这是因为Nextcloud 有安全机制,不在 trusted_domains 列表里的域名 / IP 会直接拦截访问,需要将域名或IP将入信任列表。
dockerexec-itnextcloud-app-1bashphp occ config:system:set trusted_domains0--value="你的域名"php occ config:system:set trusted_domains1--value="你的服务器IP"然后刷新页面即可访问。