王锐
王锐
发布于 2026-01-08 / 3 阅读
0
0

通过docker安装部署onlyoffice

  1. 首先通过onlyoffice仓

git clone https://github.com/ONLYOFFICE/Docker-CommunityServer.git onlyoffice
cd onlyoffice
cp docker-compose.workspace.yml docker-compose.yml
  1. 将下述的mail配置删除,准备使用外部邮件服务器

services:
  onlyoffice-mysql-server:
    container_name: onlyoffice-mysql-server
    image: mysql:8.0.29
    environment:
     - MYSQL_ROOT_PASSWORD=my-secret-pw
    networks:
     - onlyoffice
    stdin_open: true
    tty: true
    restart: always
    volumes:
     - ./config/mysql/conf.d:/etc/mysql/conf.d
     - ./config/mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
     - mysql_data:/var/lib/mysql
  onlyoffice-community-server:
    container_name: onlyoffice-community-server
    image: onlyoffice/communityserver:12.6.0.1900
    depends_on:
     - onlyoffice-mysql-server
     - onlyoffice-document-server
    #  - onlyoffice-mail-server
     - onlyoffice-elasticsearch
    environment:
     - ONLYOFFICE_CORE_MACHINEKEY=core_secret
     - CONTROL_PANEL_PORT_80_TCP=80
     - CONTROL_PANEL_PORT_80_TCP_ADDR=onlyoffice-control-panel
     - DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-document-server
     - DOCUMENT_SERVER_JWT_ENABLED=true
     - DOCUMENT_SERVER_JWT_SECRET=jwt_secret
     - DOCUMENT_SERVER_JWT_HEADER=AuthorizationJwt
     - MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw
     - MYSQL_SERVER_DB_NAME=onlyoffice
     - MYSQL_SERVER_HOST=onlyoffice-mysql-server
     - MYSQL_SERVER_USER=onlyoffice_user
     - MYSQL_SERVER_PASS=onlyoffice_pass
    #  - MAIL_SERVER_API_PORT=8081
    #  - MAIL_SERVER_API_HOST=onlyoffice-mail-server
    #  - MAIL_SERVER_DB_HOST=onlyoffice-mysql-server
    #  - MAIL_SERVER_DB_PORT=3306
    #  - MAIL_SERVER_DB_NAME=onlyoffice_mailserver
    #  - MAIL_SERVER_DB_USER=mail_admin
    #  - MAIL_SERVER_DB_PASS=Isadmin123
     - ELASTICSEARCH_SERVER_HOST=onlyoffice-elasticsearch
     - ELASTICSEARCH_SERVER_HTTPPORT=9200
    networks:
     - onlyoffice
    ports:
     - '11080:80'
     - '11443:443'
     - '5222:5222'
    stdin_open: true
    tty: true
    restart: always
    privileged: true
    cgroup: host
    volumes:
     - community_data:/var/www/onlyoffice/Data
     - community_log:/var/log/onlyoffice
     - community_letsencrypt:/etc/letsencrypt
     - document_data:/var/www/onlyoffice/DocumentServerData
     - /sys/fs/cgroup:/sys/fs/cgroup:rw
     - ./certs:/var/www/onlyoffice/Data/certs
  onlyoffice-elasticsearch:
    image: onlyoffice/elasticsearch:7.16.3
    container_name: onlyoffice-elasticsearch
    restart: always
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g -Dlog4j2.formatMsgNoLookups=true"
      - "indices.fielddata.cache.size=30%"
      - "indices.memory.index_buffer_size=30%" 
      - "ingest.geoip.downloader.enabled=false"
    networks:
    - onlyoffice    
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65535
        hard: 65535
    volumes:
      - es_data:/usr/share/elasticsearch/data
    expose:
      - "9200"
      - "9300"
  onlyoffice-document-server:
    container_name: onlyoffice-document-server
    image: onlyoffice/documentserver:8.1
    stdin_open: true
    tty: true
    restart: always
    environment:
     - JWT_ENABLED=true
     - JWT_SECRET=jwt_secret
     - JWT_HEADER=AuthorizationJwt
    networks:
      - onlyoffice
    expose:
      - '80'
      - '443'
    volumes:
       - document_data:/var/www/onlyoffice/Data
       - document_log:/var/log/onlyoffice
       - ./document_fonts:/usr/share/fonts/truetype/custom
       - document_forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten
  # onlyoffice-mail-server:
  #   container_name: onlyoffice-mail-server
  #   image: onlyoffice/mailserver:1.6.75
  #   depends_on:
  #     - onlyoffice-mysql-server
  #   hostname: ${MAIL_SERVER_HOSTNAME}
  #   environment:
  #      - MYSQL_SERVER=onlyoffice-mysql-server
  #      - MYSQL_SERVER_PORT=3306
  #      - MYSQL_ROOT_USER=mail_admin
  #      - MYSQL_ROOT_PASSWD=Isadmin123
  #      - MYSQL_SERVER_DB_NAME=onlyoffice_mailserver
  #   networks:
  #     - onlyoffice
  #   restart: always
  #   privileged: true
  #   ports: ['25:25','143:143','587:587']
  #   stdin_open: true
  #   tty: true
  #   expose:
  #     - '8081'
  #     - '3306'
  #   volumes:
  #     - mail_data:/var/vmail
  #     - mail_certs:/etc/pki/tls/mailserver
  #     - mail_log:/var/log
  onlyoffice-control-panel:
    container_name: onlyoffice-control-panel
    depends_on:
     - onlyoffice-document-server
    #  - onlyoffice-mail-server
     - onlyoffice-community-server
    image: onlyoffice/controlpanel:3.5.2.530
    environment:
     - ONLYOFFICE_CORE_MACHINEKEY=core_secret
    expose:
      - '80'
      - '443'
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - controlpanel_data:/var/www/onlyoffice/Data
      - controlpanel_log:/var/log/onlyoffice
    networks:
      - onlyoffice
    stdin_open: true
    tty: true
networks:
  onlyoffice:
    driver: 'bridge'
volumes:
  # mail_data:
  # mail_certs:
  # mail_log:
  # mail_mysql:
  document_data:
  document_log:
  document_forgotten:
  community_mysql:
  community_data:
  community_log:
  community_letsencrypt:
  controlpanel_data:
  controlpanel_log:
  mysql_data:
  es_data:

配置邮件服务器

按照一下配置STMP邮件服务器

Docker 重新部署完成后,OnlyOffice 并不自动知道你的 Mailcow 存在,你需要手动配置 SMTP 以便系统发送通知邮件:

  1. 登录 OnlyOffice 门户: 以管理员身份登录。

  2. 进入设置: 点击顶部的“设置”图标(齿轮),选择 系统设置 (System Management) -> SMTP 设置 (SMTP Settings)

  3. 填写 Mailcow 信息:

    • Host: 填写 Mailcow 服务器的 IP 或域名(如果 Mailcow 在同一台宿主机的 Docker 网络中,请使用 Mailcow 的内部网络 IP 或确保网络互通;如果是公网域名,直接填域名)。

    • Port: 通常是 587 (STARTTLS) 或 465 (SSL)。

    • Authentication: 开启。

    • Login/Password: 输入 Mailcow 中创建的一个用来发信的邮箱账号和密码。

    • Sender Email: 与 Login 保持一致。

    • Sender Name: 自定义(如 "OnlyOffice Notification")。

  4. 测试: 点击“发送测试邮件”确保配置成功,然后保存。

配置demo:

主机: mail.hopo.dev  端口: 587         ----邮件服务器域名地址
身份验证: 对勾
主机登录: office@hopo.dev              ------ 创建的邮件账号名
主机密码: ***********                   ------ 创建的邮件密码
Auth via NTLM: 不勾选
发件人显示名称:按需修改
发件人电邮地址: office@hopo.dev            ------ 创建的邮件账号名
启动SSL: 打对勾

完成上述配置后,保存并发送测试邮件完成配置


评论