初创企业文书档案系统实操:Docker一键部署私有云盘

一、基础环境与依赖安装

在开始部署前,请确保拥有一台安装了 CentOS 7+ 或 Ubuntu 20.04+ 的云服务器,建议配置为 2核4G、硬盘 40GB 以上。我们需要安装 Docker 和 Docker Compose 作为运行环境。

执行以下命令一键安装 Docker:

```bash curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun systemctl start docker systemctl enable docker ```

接着安装 Docker Compose 插件(确保使用最新版 V2):

```bash curl -SL https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ```

二、目录结构规划

为了便于管理,我们将所有数据统一存放在 /data/cloud 目录下。执行以下命令创建完整的目录树:

```bash mkdir -p /data/cloud/{nextcloud,mysql,redis,nginx/conf.d,nginx/logs,nginx/ssl} ```

三、编写 Docker Compose 编排文件

/data/cloud 目录下创建 docker-compose.yml 文件。该文件定义了 MySQL 数据库、Redis 缓存、Nextcloud 主程序以及 Nginx 反向代理服务。

请直接复制以下完整配置,注意修改数据库密码 MYSQL_ROOT_PASSWORDMYSQL_PASSWORD

```yaml version: '3.8' services: db: image: mariadb:10.6 container_name: cloud_db restart: always command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW volumes: - /data/cloud/mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=your_strong_root_password - MYSQL_PASSWORD=your_strong_nc_password - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud networks: - cloud_net redis: image: redis:alpine container_name: cloud_redis restart: always networks: - cloud_net app: image: nextcloud:25 container_name: cloud_app restart: always ports: - 8080:80 volumes: - /data/cloud/nextcloud:/var/www/html environment: - MYSQL_HOST=db - REDIS_HOST=redis - MYSQL_PASSWORD=your_strong_nc_password - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud depends_on: - db - redis networks: - cloud_net web: image: nginx:alpine container_name: cloud_web restart: always ports: - 80:80 - 443:443 volumes: - /data/cloud/nginx/conf.d:/etc/nginx/conf.d - /data/cloud/nginx/logs:/var/log/nginx - /data/cloud/nginx/ssl:/etc/nginx/ssl depends_on: - app networks: - cloud_net networks: cloud_net: driver: bridge ```

四、配置 Nginx 反向代理

为了后续方便配置 HTTPS 和域名访问,我们使用 Nginx 容器进行反向代理。在 /data/cloud/nginx/conf.d 目录下创建 nextcloud.conf 文件:

```nginx server { listen 80; server_name your-domain.com; 请替换为实际域名或服务器IP 强制跳转 HTTPS (配置SSL后取消下面注释) return 301 https://$server_name$request_uri; 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; 解决大文件上传超时问题 proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; 缓冲区设置 client_max_body_size 10G; } } ```

五、启动服务与初始化

配置文件准备就绪后,在 /data/cloud 目录下执行启动命令:

```bash docker-compose up -d ```

等待约 30 秒让容器完全启动,随后查看容器状态确保均为 Up

```bash docker-compose ps ```

打开浏览器,访问 http://服务器IP。你将看到 Nextcloud 初始化界面。

初始化操作步骤:

  1. 创建管理员账号(请牢记密码)。
  2. 点击“存储与数据库”,选择“MySQL/MariaDB”。
  3. 数据库名:nextcloud
  4. 数据库用户:nextcloud
  5. 数据库密码:your_strong_nc_password(必须与 docker-compose.yml 中一致)。
  6. 数据库主机:db:3306(注意这里必须用容器名 db,不能写 localhost)。
  7. 点击“安装完成”。

六、核心性能优化配置

默认配置无法满足企业级的大文件传输需求。我们需要进入 Nextcloud 容器修改 PHP 配置文件。

首先进入容器:

```bash docker exec -it cloud_app bash ```

安装 vim 编辑器(如果没有)并修改配置:

```bash apt-get update && apt-get install vim -y vim /usr/local/etc/php/conf.d/nextcloud.ini ```

在文件中追加以下内容以提升上传限制和内存性能:

```ini upload_max_filesize = 10G post_max_size = 10G memory_limit = 512M max_execution_time = 3600 opcache.enable=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1 ```

初创企业文书档案系统实操:Docker一键部署私有云盘

保存退出后,重启 PHP-FPM 服务使配置生效:

```bash killall php-fpm ```

退出容器:

```bash exit ```

七、配置 SSL 证书(HTTPS)

为了数据传输安全,强烈建议配置 SSL。这里使用 Certbot 获取免费证书。

首先在宿主机安装 Certbot:

```bash Ubuntu/Debian apt-get install certbot CentOS yum install certbot ```

确保域名 your-domain.com 已解析到服务器 IP,且 80 端口可访问。执行以下命令获取证书:

```bash certbot certonly --standalone -d your-domain.com ```

证书生成成功后,路径通常为 /etc/letsencrypt/live/your-domain.com/。我们需要将其复制到 Nginx 挂载目录:

```bash cp /etc/letsencrypt/live/your-domain.com/fullchain.pem /data/cloud/nginx/ssl/ cp /etc/letsencrypt/live/your-domain.com/privkey.pem /data/cloud/nginx/ssl/ ```

修改 /data/cloud/nginx/conf.d/nextcloud.conf,开启 443 监听:

```nginx server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name your-domain.com; ssl_certificate /etc/nginx/ssl/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/privkey.pem; SSL 优化配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; 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 https; client_max_body_size 10G; } } ```

重载 Nginx 配置:

```bash docker-compose restart web ```

八、自动化备份脚本

初创企业数据是核心资产。编写一个简单的 Shell 脚本 /data/cloud/backup.sh 实现自动备份:

```bash !/bin/bash DATE=$(date +%Y%m%d) BACKUP_DIR="/data/backup" mkdir -p $BACKUP_DIR 备份数据库 docker exec cloud_db mysqldump -u nextcloud -pyour_strong_nc_password nextcloud > $BACKUP_DIR/nextcloud_db_$DATE.sql 打包文件数据 tar czf $BACKUP_DIR/nextcloud_data_$DATE.tar.gz /data/cloud/nextcloud 删除7天前的备份 find $BACKUP_DIR -name ".sql" -mtime +7 -exec rm {} \; find $BACKUP_DIR -name ".tar.gz" -mtime +7 -exec rm {} \; ```

赋予执行权限并添加定时任务:

```bash chmod +x /data/cloud/backup.sh crontab -e ```

添加以下行,每天凌晨 2 点执行备份:

```text 0 2 /data/cloud/backup.sh ```

九、常见问题排查

1. 页面提示“内部服务器错误”:
通常是数据库连接失败。检查 docker-compose.yml 中数据库密码是否与初始化界面输入的一致,确保数据库主机名为 db

2. 上传大文件失败:
检查 Nginx 配置中的 client_max_body_size 以及 Nextcloud 容器内的 PHP upload_max_filesize 是否均已修改为 10G。

3. 无法预览文件:
进入 Nextcloud 后台管理界面,在“Office & Text”或“概览”中检查相关服务是否启用,有时需要安装额外的 Collabora 或 OnlyOffice 容器(此处仅部署基础文件系统)。

至此,一套高可用、支持大文件传输且具备自动备份能力的初创企业文书档案系统已部署完成。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统