OnlyOffice容器化安装 1.创建工作目录 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 sudo mkdir -p "/app/onlyoffice/mysql/conf.d" ;sudo mkdir -p "/app/onlyoffice/mysql/data" ;sudo mkdir -p "/app/onlyoffice/mysql/initdb" ;sudo mkdir -p "/app/onlyoffice/CommunityServer/data" ;sudo mkdir -p "/app/onlyoffice/CommunityServer/logs" ;sudo mkdir -p "/app/onlyoffice/CommunityServer/letsencrypt" ;sudo mkdir -p "/app/onlyoffice/DocumentServer/data" ;sudo mkdir -p "/app/onlyoffice/DocumentServer/logs" ;sudo mkdir -p "/app/onlyoffice/MailServer/data/certs" ;sudo mkdir -p "/app/onlyoffice/MailServer/logs" ;sudo mkdir -p "/app/onlyoffice/ControlPanel/data" ;sudo mkdir -p "/app/onlyoffice/ControlPanel/logs" ;
2.docker创建网络 1 sudo docker network create --driver bridge onlyoffice
3.安装mysql 创建相关文件
1 2 3 4 5 6 7 8 9 10 11 12 13 echo "[mysqld] sql_mode = 'NO_ENGINE_SUBSTITUTION' max_connections = 1000 max_allowed_packet = 1048576000 group_concat_max_len = 2048" > /app/onlyoffice/mysql/conf.d/onlyoffice.cnfecho "ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'my-secret-pw'; CREATE USER IF NOT EXISTS 'onlyoffice_user'@'%' IDENTIFIED WITH mysql_native_password BY 'onlyoffice_pass'; CREATE USER IF NOT EXISTS 'mail_admin'@'%' IDENTIFIED WITH mysql_native_password BY 'Isadmin123'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; GRANT ALL PRIVILEGES ON *.* TO 'onlyoffice_user'@'%'; GRANT ALL PRIVILEGES ON *.* TO 'mail_admin'@'%'; FLUSH PRIVILEGES;" > /app/onlyoffice/mysql/initdb/setup.sql
安装mysql容器
1 2 3 4 5 6 7 sudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-mysql-server \ -v /app/onlyoffice/mysql/conf.d:/etc/mysql/conf.d \ -v /app/onlyoffice/mysql/data:/var/lib/mysql \ -v /app/onlyoffice/mysql/initdb:/docker-entrypoint-initdb.d \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -e MYSQL_DATABASE=onlyoffice \ mysql:8.0.29
等一下后,进入容器内部执行setup.sql(或者连接mysql手动执行sql文件内语句)
1 2 3 4 5 docker exec -it onlyoffice-mysql-server /bin/bash cd /var/lib/mysqlmysql -uroot -p"my-secret-pw" mysql> source setup.sql;
3.创建documentserver容器 1 2 3 4 5 6 7 8 9 sudo docker run --net onlyoffice -i -t -d --restart=always --name "onlyoffice-document-server" \ -e JWT_ENABLED=false \ -e JWT_SECRET=${JWT_SECRET} \ -e JWT_HEADER=AuthorizationJwt \ -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \ -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \ -v /app/onlyoffice/DocumentServer/fonts:/usr/share/fonts/truetype/custom \ -v /app/onlyoffice/DocumentServer/forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten \ onlyoffice/documentserver
3.创建documentserver容器 1 2 3 4 5 6 7 8 9 10 11 sudo docker run --init --net onlyoffice --privileged -i -t -d --restart=always --name onlyoffice-mail-server -p 25:25 -p 143:143 -p 587:587 \ -e MYSQL_SERVER=onlyoffice-mysql-server \ -e MYSQL_SERVER_PORT=3306 \ -e MYSQL_ROOT_USER=root \ -e MYSQL_ROOT_PASSWD=my-secret-pw \ -e MYSQL_SERVER_DB_NAME=onlyoffice_mailserver \ -v /app/onlyoffice/MailServer/data:/var/vmail \ -v /app/onlyoffice/MailServer/data/certs:/etc/pki/tls/mailserver \ -v /app/onlyoffice/MailServer/logs:/var/log \ -h yourdomain.com \ onlyoffice/mailserver
设置MAIL_SERVER_IP地址
1 MAIL_SERVER_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' onlyoffice-mail-server)
4.创建controlpanel容器 1 2 3 4 5 docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-control-panel \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /app/onlyoffice/CommunityServer/data:/app/onlyoffice/CommunityServer/data \ -v /app/onlyoffice/ControlPanel/data:/var/www/onlyoffice/Data \ -v /app/onlyoffice/ControlPanel/logs:/var/log/onlyoffice onlyoffice/controlpanel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 sudo docker run --net onlyoffice -i -t -d --privileged --restart=always --name onlyoffice-community-server -p 8061:80 -p 8443:443 -p 5222:5222 --cgroupns=host \ -e MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw \ -e MYSQL_SERVER_DB_NAME=onlyoffice \ -e MYSQL_SERVER_HOST=onlyoffice-mysql-server \ -e MYSQL_SERVER_USER=onlyoffice_user \ -e MYSQL_SERVER_PASS=onlyoffice_pass \ -e DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-document-server \ -e DOCUMENT_SERVER_JWT_ENABLED=false \ -e DOCUMENT_SERVER_JWT_SECRET=${JWT_SECRET} \ -e DOCUMENT_SERVER_JWT_HEADER=AuthorizationJwt \ -e MAIL_SERVER_API_HOST=${MAIL_SERVER_IP} \ -e MAIL_SERVER_DB_HOST=onlyoffice-mysql-server \ -e MAIL_SERVER_DB_NAME=onlyoffice_mailserver \ -e MAIL_SERVER_DB_PORT=3306 \ -e MAIL_SERVER_DB_USER=root \ -e MAIL_SERVER_DB_PASS=my-secret-pw \ -e CONTROL_PANEL_PORT_80_TCP=80 \ -e CONTROL_PANEL_PORT_80_TCP_ADDR=onlyoffice-control-panel \ -v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data \ -v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice \ -v /app/onlyoffice/CommunityServer/letsencrypt:/etc/letsencrypt \ -v /sys/fs/cgroup:/sys/fs/cgroup:rw \ onlyoffice/communityserver
等待初始化完成后访问web
完
问题 1 Error: DNS lookup xxx.xxx.xxx.xx(family:undefined, host:undefined) is not allowed. Because, It is private IP address.
解决方式:需要编辑配置文件允许私有ip通过
1 2 3 4 5 6 7 8 编辑documentserver容器中/etc/onlyoffice/documentserver/default.json下的内容: 搜索并修改以下字段为true: "request-filtering-agent" : { "allowPrivateIPAddress": true, "allowMetaIPAddress": true },
也可以将文件复制出来再进行编辑
1 docker cp onlyoffice-document-server:/etc/onlyoffice/documentserver/default.json ./
修改文件内容
将文件复制回容器
1 docker cp ./default.json onlyoffice-document-server:/etc/onlyoffice/documentserver/default.json
更改后,需要重启容器后恢复正常。
此文引用自GitHub/ONLYOFFICE