档案整理云平台的价格主要由存储、计算、网络与软件授权四部分构成。商业SaaS平台通常按存储空间(如每GB/月)和用户数(如每用户/月)阶梯收费,年度费用通常在数千至数十万元不等。对于技术团队,直接使用开源工具链自建是成本最低且可控的方案。
我们将基于完全开源的“MinIO + Nextcloud + OnlyOffice”技术栈,构建一个功能对标商业产品的私有化档案云平台。这套方案将文档存储、在线协作与权限管理完全解耦,部署在您自己的服务器上,实现一次性硬件投入,长期零软件授权费用。
您需要准备一台运行Linux的服务器(物理机或云主机均可)。以下为最低配置要求:
登录服务器,首先更新系统并安装Docker与Docker Compose,这是后续所有服务容器化的基础。
更新系统包索引并升级现有包:
``` sudo apt update && sudo apt upgrade -y ```安装Docker官方仓库所需的依赖包:
``` sudo apt install -y ca-certificates curl gnupg lsb-release ```添加Docker官方GPG密钥:
``` sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg ```设置稳定版仓库:
``` echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ```安装Docker Engine与Compose插件:
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin验证安装:
``` sudo docker run hello-world ```MinIO是高性能的S3兼容对象存储,我们将用它作为档案文件的底层存储引擎,替代昂贵的商业云存储。
创建MinIO的配置与数据目录:
``` sudo mkdir -p /opt/minio/{config,data} ```创建并编辑docker-compose.yml文件:
sudo nano /opt/minio/docker-compose.yml将以下完整配置粘贴进去:
``` version: '3.8' services: minio: image: minio/minio:latest container_name: minio restart: unless-stopped environment: MINIO_ROOT_USER: admin MINIO_ROOT_PASSWORD: YourStrongPassword123! ports: - "9000:9000" - "9001:9001" volumes: - /opt/minio/data:/data - /opt/minio/config:/root/.minio command: server --console-address ":9001" /data ```保存文件(Ctrl+O,回车,Ctrl+X)。启动MinIO服务:
cd /opt/minio && sudo docker compose up -d等待约30秒后,在浏览器访问 http://您的服务器IP:9001 ,使用配置中的用户名(admin)和密码(YourStrongPassword123!)登录MinIO控制台。
登录后,点击左侧“Buckets”,再点击“Create Bucket”。在弹出窗口中:
创建成功后,点击右上角用户图标,选择“Access Keys”,点击“Create Access Key”。务必记录下生成的Access Key和Secret Key,下一步配置Nextcloud时会用到。
Nextcloud提供类网盘的用户界面、权限管理与在线预览功能,我们将配置它使用MinIO作为主存储。
创建Nextcloud的目录:
``` sudo mkdir -p /opt/nextcloud/{html,data,db} ```创建并编辑Nextcloud的docker-compose.yml文件:
sudo nano /opt/nextcloud/docker-compose.yml粘贴以下完整配置,注意将`minio_access_key`和`minio_secret_key`替换为上一步记录的实际值:
``` version: '3.8' services: db: image: mariadb:10.6 container_name: nextcloud_db restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: db_root_pass MYSQL_PASSWORD: nextcloud_pass MYSQL_DATABASE: nextcloud MYSQL_USER: nextcloud volumes: - /opt/nextcloud/db:/var/lib/mysql app: image: nextcloud:latest container_name: nextcloud_app restart: unless-stopped ports: - "8080:80" environment: NEXTCLOUD_TRUSTED_DOMAINS: 您的域名或服务器IP volumes: - /opt/nextcloud/html:/var/www/html - /opt/nextcloud/data:/var/www/html/data depends_on: - db ```保存并启动Nextcloud基础服务:
cd /opt/nextcloud && sudo docker compose up -d等待2分钟让服务完全启动。然后访问 http://您的服务器IP:8080 ,进入Nextcloud初始化页面。
在初始化页面:

安装完成后,以管理员身份登录。点击右上角用户图标,选择“设置”。在左侧菜单选择“外部存储”。在“文件夹名称”输入“档案库”,在“外部存储”下拉菜单中选择“Amazon S3”。填写以下配置:
现在需要让Nextcloud容器能解析`minio`这个主机名。编辑Nextcloud的docker-compose.yml,在`app`服务的`environment`部分添加一行:
``` extra_hosts: - "minio:您的服务器内网IP" ```获取服务器内网IP命令:`hostname -I | awk '{print $1}'`。然后重启Nextcloud服务:
cd /opt/nextcloud && sudo docker compose down && sudo docker compose up -dOnlyOffice提供类Office的在线编辑体验。我们将以Docker容器方式部署它,并与Nextcloud集成。
创建OnlyOffice目录:
``` sudo mkdir -p /opt/onlyoffice/{log,data,db} ```创建并编辑docker-compose.yml:
sudo nano /opt/onlyoffice/docker-compose.yml粘贴以下配置:
``` version: '3.8' services: onlyoffice: image: onlyoffice/documentserver:latest container_name: onlyoffice restart: unless-stopped ports: - "8081:80" environment: JWT_ENABLED: 'true' JWT_SECRET: YourOnlyOfficeSecretKey123! volumes: - /opt/onlyoffice/log:/var/log/onlyoffice - /opt/onlyoffice/data:/var/www/onlyoffice/Data - /opt/onlyoffice/db:/var/lib/postgresql ```保存并启动:
cd /opt/onlyoffice && sudo docker compose up -d返回Nextcloud管理界面。点击右上角用户图标->“应用”,在左侧选择“Office & text”。找到“OnlyOffice”应用,点击“启用”。
启用后,在设置中会出现“ONLYOFFICE”菜单。点击进入后配置:
至此,在Nextcloud中双击Word、Excel、PPT文件,即可在浏览器中直接编辑。
为统一访问入口并启用HTTPS,使用Nginx作为反向代理。
安装Nginx:
sudo apt install -y nginx申请SSL证书(以Let's Encrypt为例):
``` sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d 您的域名 --agree-tos --no-eff-email --register-unsafely-without-email ```编辑Nginx配置文件:
sudo nano /etc/nginx/sites-available/archive-cloud粘贴以下配置,将`your_domain.com`替换为您的实际域名:
``` server { listen 80; server_name your_domain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name your_domain.com; ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem; Nextcloud location / { proxy_pass http://localhost:8080; 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; client_max_body_size 10G; 支持大文件上传 } OnlyOffice WebSocket支持 location /onlyoffice { proxy_pass http://localhost:8081; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } } ```启用站点配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/archive-cloud /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl restart nginx返回Nextcloud设置,在“受信任的域名”中添加您的域名,并配置“重写URL”为`https://您的域名`。
在Nextcloud中点击左上角“用户”进入管理界面:
在Nextcloud文件界面:
创建每日备份脚本:
sudo nano /opt/backup_archive.sh粘贴以下内容:
``` !/bin/bash BACKUP_DIR="/backup/archive_$(date +%Y%m%d)" mkdir -p $BACKUP_DIR 备份Nextcloud数据 docker exec nextcloud_app tar czf - /var/www/html/data > $BACKUP_DIR/nextcloud_data.tar.gz 备份数据库 docker exec nextcloud_db mysqldump -unextcloud -pnextcloud_pass nextcloud > $BACKUP_DIR/nextcloud_db.sql 备份MinIO数据(使用mc客户端) docker run --rm -v /opt/minio/data:/data minio/mc cp --recursive /data $BACKUP_DIR/minio_data/ 保留最近7天备份 find /backup -type d -name "archive_" -mtime +7 -exec rm -rf {} \; ```添加执行权限并设置每日凌晨2点自动执行:
sudo chmod +x /opt/backup_archive.sh sudo crontab -e在末尾添加:`0 2 /opt/backup_archive.sh`
至此,一个功能完整、零授权费用的档案整理云平台已部署完成。总投入仅为服务器硬件或云主机费用,后续可根据业务增长水平扩展存储或计算资源。