1 背景
团队有内部研发环境,需要控制其文件导出能力,故对每次导出操作进行审批,避免关键代码泄漏
经过一番调研没有找到特别好用的开源文件导出系统(之前买过的付费的系统也难用的一匹)
nextcloud作为生态最完善的网盘之一,拥有庞大的社区和开发者/插件,可以支持各种功能
坑爹的Nextcloud All-in-One,部署难搞的一匹,各种卡住/某个服务起不起来,弄了几个晚上没解决,写的真是辣鸡
2 整体方案
手写docker-compose 部署nextcloud
approval插件完成核心审批功能(基于标签)
files_accesscontrol插件用于文件可访问性的控制
files_automatedtagging用于给文件自动大标签
3 快速部署 Nextcloud
services:
nextcloud:
image: nextcloud
container_name: nextcloud_web
restart: always
ports:
- 80:80
- 443:443
volumes:
- ./nextcloud:/var/www/html
links:
- db
- redis
db:
image: mariadb
container_name: nextcloud_mariadb
restart: always
ports:
- 3306:3306
volumes:
- ./mysql:/var/lib/mysql
command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-allowed-packet=10G
environment:
TZ: Asia/Taipei
MYSQL_ROOT_PASSWORD: password1234
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: password1234
phpmyadmin:
image: phpmyadmin
container_name: nextcloud_phpmyadmin
restart: always
ports:
- "8081:80"
environment:
- PMA_HOST=db
- UPLOAD_LIMIT=10G
redis:
image: redis:alpine
container_name: nextcloud_redis
restart: always
environment:
- TZ=Asia/Taipei
volumes:
- ./redis:/data
command: /bin/sh -c "redis-server --requirepass $$REDIS_HOST_PASSWORD"
env_file:
- redis.env
# redis.env文件
REDIS_HOST_PASSWORD=password1234只需要两个文件,pull一下就部署好了,再次提醒避雷Nextcloud AIO(个人部署体验极差)
4 安装插件、修改配置
官网下载插件,压缩包解压到
nextcloud/apps文件中设置
trusted_domains,路径为config/config.phpsudo docker compose down && sudo docker compose up -d重启即可
5 定义(审批)流程
- 核心是通过几个标签:如
通过、审批、拒绝等来控制审批状态

- 然后通过插件完成配套的权限控制
