This commit is contained in:
qiaofeng1227 2021-10-11 14:04:40 +08:00
parent 3440a03a8a
commit 0cb3cda21f
5 changed files with 200 additions and 454 deletions

49
.env
View File

@ -1,33 +1,26 @@
# COMMENT
DB_MYSQL_VERSION=5.7
DB_MYSQL_PORT=3306
DB_MYSQL_PASSWORD=123456
DB_MYSQL_NAME=drupal
DB_MYSQL_USER=drupal
DB_MYSQL_HOST=mysql
# Add this file
# Initial db root password is 123456
# Initial login username: Administrator and login password: admin
# APP_PORT can't set 9001, otherwise container erpnext-python will be error
MQ_KAFKA_PORT=9092
MQ_RABBITMQ_PORT=5672
DB_MRAIADB_USER=root
DB_MARIADB_PASSWORD=123456
DB_MARIADB_HOST=mariadb
DB_MARIADB_PORT=3306
DB_MARIADB_VERSION=10.3
DB_POSTGRESQL_VERSION=9.5
DB_REDIS_VERSION=5.0
APP_VERSION=latest
APP_PORT=9001
# more than two ports
APP_HTTP_PORT=9001
APP_SSH_PORT=9002
APP_PASSWORD_INIT=True
APP_USER=
APP_PASSWORD=
APP_CONTAINER_NAME=onlyoffice
APP_NETWORK=onlyoffice
APP_SITE_NAME=Gost blog
APP_SITE_URL=appname.example.com
DB_REDIS_VERSION=latest
APP_VERSION=v12
APP_PORT=8000
APP_USER=Administrator
APP_PASSWORD=admin
APP_SITE_URL=erp.example.com
APP_SITE_NAME=`erp.example.com`
APP_INSTALL_APPS=erpnext
APP_CONTAINER_NAME=erpnext
APP_NETWORK=erpnext
VOLUMES_PATH_PREFIX=./volumes
DOMAIN=appname.example.com
EMAIL=help@websoft9.com
LETSENCRYPT_EMAIL=email@example.com
SKIP_NGINX_TEMPLATE_GENERATION=0

View File

@ -1,142 +0,0 @@
# {{trademark}} on Docker
![](https://libs.websoft9.com/common/websoft9-cloud-installer.png)
## 简介
[简体中文](/README-zh.md) | [English](/README.md)
本项目是由 [Websoft9](https://www.websoft9.com) 研发的 **云原生程序** ,大大简化 {{trademark}} 复杂的安装及配置。
## 系统要求
安装本项目,确保符合如下的条件([详细参考]({{requirements.url}})
* **操作系统**: Red Hat, CentOS, Debian, Ubuntu 等主流 Linux等 操作系统
* **公有云**: AWS, Azure, Google Cloud, 阿里云, 腾讯云, 华为云等20多个全球主流云
* **私有云**: KVM, VMware, VirtualBox, OpenStack 等主流虚拟化架构
* **CPU架构**: {{requirements.cpu_arch}}
* **内存**: {{requirements.memory}}GB以上
* **CPU**: {{requirements.cpu}}核以上
* **存储**: {{requirements.disk}}GB以上
* **Swap分区**: {{requirements.swap}}GB以上
* **带宽**: 100M以上体验更流畅
## 安装使用
### 自动安装(推荐)
登录 Linux运行下面的**自动化命令**即可启动安装并显示安装结果。
```
sudo wget -N https://raw.githubusercontent.com/Websoft9/StackHub/main/docker-installer.sh; sudo bash docker-installer.sh -r {{name}}
```
### package包安装
1.生成package包
登录 Linux运行下面的**自动化命令**即可生成所需的package包。
```
sudo wget -N https://raw.githubusercontent.com/Websoft9/StackHub/main/docker-installer.sh; sudo bash docker-installer.sh -r {{name}} -p
```
2.复制package包后安装
将压缩的package包复制到想要安装的服务器或虚拟机登录 Linux运行下面的**自动化命令**即可启动安装并显示安装结果。
```
sudo bash install-{{name}}
```
### 手动安装
如果熟悉 Linux 以及 Docker可以采用手动安装的方式
#### 准备 Docker 环境
如果您的服务器尚未安装 Docker请使用如下命令安装它
```
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
ln -sf /usr/local/bin/docker-compose /usr/bin
sudo systemctl start docker
```
#### 安装 {{trademark}}
直接运行下面的命令快速安装应用。如果你熟悉 Docker建议先修改 [docker-compose](docker-compose-production.yml) 文件以满足自己的需求
```
git clone --depth=1 https://github.com/Websoft9/docker-{{name}}
cd docker-{{name}}
{% if command_extra is defined -%}
{% for cmd in command_extra -%}
{{cmd.cmd}}
{% endfor -%}
{% endif -%}
{% if command_comments is defined -%}
{% for comment in command_comments -%}
# {{comment.comment_cn}}
{% endfor -%}
{% endif -%}
sudo docker-compose -f {{compose_file}} {% if env_file is defined -%} --env-file {{env_file}} {% endif -%} up -d
```
### 常见问题
#### 安装 {{trademark}} 前需要更改密码吗?
是的, 在生产环境中,您应该在 docker-compose 文件中修改所有数据库密码和应用程序密码
#### 端口冲突导致无法启动?
修改 [docker-compose]({{compose_file}}) 文件中冲突的端口,然后再启动容器
{% for faq in faqs -%}
#### {{faq.question_cn}}
{{faq.answer_cn}}
{% endfor -%}
### 使用说明
启动应用后,本地浏览器访问 URL: *`http://服务器公网IP:{{services[0].port}}`* 进入应用。
下面是使用过程中可能需要的信息
{% if user is defined -%}
#### 账号
本应用默认安装后的管理员用户名和密码如下:
| 用户名 | 密码 |
| ------- | -------- |
| {{user.username}} | {{user.password}} |
{% endif -%}
#### 服务和端口
| 名称 | 端口号 | 用途 | 必要性 |
| --- | --- | --- | --- |
{% for service in services -%}
| {{service.name}} | {{service.port}} | {{service.description_cn}} | {{service.required}} |
{% endfor -%}
## 文档
[{{trademark}} 管理员手册](https://support.websoft9.com/docs/{{name}})
## 企业级支持
如果需要企业级支持,请订阅我们提供的 [{{trademark}} 企业级支持版](https://apps.websoft9.com/{{name}})
订阅企业级产品后,您可获得:
* 精准知识:产品专家的解答和指导
* 全面支持技术支持所需的一切例如启用HTTPS、升级指南
* 安全顾问:安全服务和工具,可提高您软件的安全性

View File

@ -1,134 +0,0 @@
# {{trademark}} on Docker
![](https://libs.websoft9.com/common/websott9-cloud-installer.png)
## Introduction
[English](/README.md) | [简体中文](/README-zh.md)
This repository is an **Cloud Native solution** powered by [Websoft9](https://www.websoft9.com), it simplifies the complicated installation and initialization process.
## System Requirements
The following are the minimal [recommended requirements]({{requirements.url}}):
* **OS**: Red Hat, CentOS, Debian, Ubuntu or other's Linux OS
* **Public Cloud**: More than 20+ major Cloud such as AWS, Azure, Google Cloud, Alibaba Cloud, HUAWEIClOUD, Tencent Cloud
* **Private Cloud**: KVM, VMware, VirtualBox, OpenStack
* **ARCH**: {{requirements.cpu_arch}}
* **RAM**: {{requirements.memory}} GB or more
* **CPU**: {{requirements.cpu}} cores or higher
* **HDD**: at least {{requirements.disk}} GB of free space
* **Swap file**: at least {{requirements.swap}} GB
* **bandwidth**: more fluent experience over 100M
## QuickStart
### All-in-one Installer
Use SSH to connect your instance and run the automatic installation script below
```
sudo wget -N https://raw.githubusercontent.com/Websoft9/StackHub/main/docker-installer.sh; sudo bash docker-installer.sh -r {{name}}
```
### package install
1.Make package
You can get the package as following script
```
sudo wget -N https://raw.githubusercontent.com/Websoft9/StackHub/main/docker-installer.sh; sudo bash docker-installer.sh -r {{name}} -p
```
2.Install by package
Copy package to your server, Use SSH to connect your instance and run the automatic installation script below
```
sudo bash install-{{name}}
```
### Manual Installation
#### Preparation
If you have not install Docker and Docker-Compose, refer to the following commands to install it:
```
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
ln -sf /usr/local/bin/docker-compose /usr/bin
sudo systemctl start docker
```
#### Install {{trademark}}
We assume that you are already familiar with Docker, and you can modify [docker-compose file]({{compose_file}}) by yourself
```
git clone --depth=1 https://github.com/Websoft9/docker-{{name}}
cd docker-{{name}}
{% if command_extra is defined -%}
{% for cmd in command_extra -%}
{{cmd.cmd}}
{% endfor -%}
{% endif -%}
{% if command_comments is defined -%}
{% for comment in command_comments -%}
# {{comment.comment_en}}
{% endfor -%}
{% endif -%}
docker-compose -f {{compose_file}} {% if env_file is defined -%} --env-file {{env_file}} {% endif -%} up -d
```
### FAQ
#### Do I need to change the password before docker-compose up?
Yes, you should modify all database password and application password at docker-compose file for production
#### Docker runing failed for the reason that port conflict?
You should modify ports at [docker-compose file](docker-compose-production.yml) and docker-compose again
{% for faq in faqs -%}
#### {{faq.question_en}}
{{faq.answer_en}}
{% endfor -%}
### Usage instructions
You can point your browser to: *`http://Instance's Internet IP:{{services[0].port}}`*
The following is the information that may be needed during use
{% if user is defined -%}
#### Credentials
By default, the available users are:
| Username | Password |
| ------- | -------- |
| {{user.username}} | {{user.password}} |
{% endif -%}
#### Services and Ports
| Service | Port | Use | Necessity |
| --- | --- | --- | --- |
{% for service in services -%}
| {{service.name}} | {{service.port}} | {{service.description_en}} | {{service.required}} |
{% endfor -%}
## Documentation
[{{trademark}} Administrator Guide](https://support.websoft9.com/docs/{{name}})
## Enterprise Support
If you want to get our Enterprise Support to ensure high availability of applications, you can subscribe our [{{trademark}} Enterprise Support](https://apps.websoft9.com/{{name}})
What you get with a Enterprise Support subscription?
* Knowledge: Answers and guidance from product experts
* Support: Everything you need for technical support, e.g Enable HTTPS, Upgrade guide
* Security: Security services and tools to protect your software

View File

@ -1,112 +1,154 @@
# this file from docker-compose.workspace, delete mail-server
# default MySQL root password is 123456
# Initial login username: Administrator and login password: admin
version: "3.8"
version: '3.8'
services:
onlyoffice-mysql-server:
container_name: ${APP_CONTAINER_NAME}-mysql
image: mysql:${DB_MYSQL_VERSION}
environment:
- MYSQL_ROOT_PASSWORD=${DB_MYSQL_PASSWORD}
stdin_open: true
user: root
tty: true
erpnext-nginx:
image: frappe/erpnext-nginx:${APP_VERSION}
container_name: ${APP_CONTAINER_NAME}-nginx
restart: always
volumes:
- ${VOLUMES_PATH_PREFIX}/config/mysql/conf.d:/etc/mysql/conf.d
- ${VOLUMES_PATH_PREFIX}/config/mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
- ${VOLUMES_PATH_PREFIX}/mysql_data:/var/lib/mysql
onlyoffice-community-server:
container_name: ${APP_CONTAINER_NAME}
image: onlyoffice/communityserver:11.0.0.1458
depends_on:
- onlyoffice-mysql-server
- onlyoffice-document-server
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=123456
- MYSQL_SERVER_DB_NAME=onlyoffice
- MYSQL_SERVER_HOST=onlyoffice-mysql-server
- MYSQL_SERVER_USER=onlyoffice
- MYSQL_SERVER_PASS=123456
ports:
- '${APP_PORT}:80'
- '443'
- '5222:5222'
stdin_open: true
tty: true
restart: always
privileged: true
volumes:
- ${VOLUMES_PATH_PREFIX}/community_data:/var/www/onlyoffice/Data
- ${VOLUMES_PATH_PREFIX}/community_log:/var/log/onlyoffice
- ${VOLUMES_PATH_PREFIX}/community_letsencrypt:/etc/letsencrypt
- ${VOLUMES_PATH_PREFIX}/document_data:/var/www/onlyoffice/DocumentServerData
- /sys/fs/cgroup:/sys/fs/cgroup:ro
- ${VOLUMES_PATH_PREFIX}/certs:/var/www/onlyoffice/Data/certs
onlyoffice-document-server:
container_name: ${APP_CONTAINER_NAME}-document-server
image: onlyoffice/documentserver:6.0.2
stdin_open: true
tty: true
restart: always
- ${APP_PORT}:80
environment:
- JWT_ENABLED=true
- JWT_SECRET=jwt_secret
- JWT_HEADER=AuthorizationJwt
ports:
- '9002:80'
expose:
- '80'
- '443'
- FRAPPE_PY=erpnext-python
- FRAPPE_PY_PORT=${APP_PORT}
- FRAPPE_SOCKETIO=frappe-socketio
- SOCKETIO_PORT=9000
volumes:
- ${VOLUMES_PATH_PREFIX}/document_data:/var/www/onlyoffice/Data
- ${VOLUMES_PATH_PREFIX}/document_log:/var/log/onlyoffice
- ${VOLUMES_PATH_PREFIX}/document_fonts:/usr/share/fonts/truetype/custom
- .document_forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten
- sites-vol:/var/www/html/sites:rw
- assets-vol:/assets:rw
onlyoffice-control-panel:
container_name: ${APP_CONTAINER_NAME}-control-panel
depends_on:
- onlyoffice-document-server
- onlyoffice-community-server
image: onlyoffice/controlpanel:2.9.0.351
erpnext-python:
image: frappe/erpnext-worker:${APP_VERSION}
container_name: ${APP_CONTAINER_NAME}-worker
restart: always
environment:
- ONLYOFFICE_CORE_MACHINEKEY=core_secret
expose:
- '80'
- '443'
- MARIADB_HOST=${DB_MARIADB_HOST}
- REDIS_CACHE=redis-cache:6379
- REDIS_QUEUE=redis-queue:6379
- REDIS_SOCKETIO=redis-socketio:6379
- SOCKETIO_PORT=9000
- AUTO_MIGRATE=1
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- assets-vol:/home/frappe/frappe-bench/sites/assets:rw
frappe-socketio:
image: frappe/frappe-socketio:${APP_VERSION}
container_name: ${APP_CONTAINER_NAME}-socketio
restart: always
depends_on:
- redis-socketio
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
erpnext-worker-default:
image: frappe/erpnext-worker:${APP_VERSION}
container_name: ${APP_CONTAINER_NAME}-worker-default
restart: always
command: worker
depends_on:
- redis-queue
- redis-cache
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
erpnext-worker-short:
image: frappe/erpnext-worker:${APP_VERSION}
container_name: ${APP_CONTAINER_NAME}-worker-short
restart: always
command: worker
environment:
- WORKER_TYPE=short
depends_on:
- redis-queue
- redis-cache
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
erpnext-worker-long:
image: frappe/erpnext-worker:${APP_VERSION}
container_name: ${APP_CONTAINER_NAME}-worker-long
restart: always
command: worker
environment:
- WORKER_TYPE=long
depends_on:
- redis-queue
- redis-cache
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
erpnext-schedule:
image: frappe/erpnext-worker:${APP_VERSION}
container_name: ${APP_CONTAINER_NAME}-schedule
restart: always
command: schedule
depends_on:
- redis-queue
- redis-cache
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
redis-cache:
image: redis:${DB_REDIS_VERSION}
container_name: ${APP_CONTAINER_NAME}-redis-cache
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${VOLUMES_PATH_PREFIX}/controlpanel_data:/var/www/onlyoffice/Data
- ${VOLUMES_PATH_PREFIX}/controlpanel_log:/var/log/onlyoffice
stdin_open: true
tty: true
- ${VOLUMES_PATH_PREFIX}/redis-cache-vol:/data
redis-queue:
image: redis:${DB_REDIS_VERSION}
container_name: ${APP_CONTAINER_NAME}-redis-queue
restart: always
volumes:
- ${VOLUMES_PATH_PREFIX}/redis-queue-vol:/data
redis-socketio:
image: redis:${DB_REDIS_VERSION}
container_name: ${APP_CONTAINER_NAME}-redis-socketio
restart: always
volumes:
- ${VOLUMES_PATH_PREFIX}/redis-socketio-vol:/data
mariadb:
image: mariadb:${DB_MARIADB_VERSION}
container_name: ${APP_CONTAINER_NAME}-mariadb
restart: always
ports:
- ${DB_MARIADB_PORT}:3306
environment:
- MYSQL_ROOT_PASSWORD=${DB_MARIADB_PASSWORD}
volumes:
- ./installation/frappe-mariadb.cnf:/etc/mysql/conf.d/frappe.cnf
- ${VOLUMES_PATH_PREFIX}/mariadb-vol:/var/lib/mysql
site-creator:
image: frappe/erpnext-worker:${APP_VERSION}
container_name: ${APP_CONTAINER_NAME}-site-creator
restart: "no"
command: new
depends_on:
- erpnext-python
environment:
- SITE_NAME=${APP_SITE_URL}
- SITES=${APP_SITE_NAME}
- DB_ROOT_USER=${DB_MRAIADB_USER}
- MYSQL_ROOT_PASSWORD=${DB_MARIADB_PASSWORD}
- ADMIN_PASSWORD=${APP_PASSWORD}
- INSTALL_APPS=${APP_INSTALL_APPS}
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
volumes:
sites-vol:
assets-vol:
logs-vol:
networks:
default:
name: ${APP_NETWORK}
volumes:
document_data:
driver: local
document_log:
driver: local
document_forgotten:
community_mysql:
community_data:
community_log:
community_letsencrypt:
controlpanel_data:
controlpanel_log:
mysql_data:
name: "${APP_NETWORK}"

View File

@ -1,76 +1,63 @@
{
"name": "template",
"trademark": "ONLYOFFICE",
"installpath": "/data/wwwroot/onlyoffice",
"compose_file": "docker-compose-production.yml",
"env_file": ".env_all",
"name": "erpnext",
"trademark": "ERPNext",
"compose_file": "docker-compose.yml",
"env_file": ".env",
"fork_url": "https://github.com/frappe/frappe_docker.git",
"requirements":{
"cpu_arch": "Linux x86-64, ARM 32/64, Windows x86-64, IBM POWER8, x86/i686",
"cpu": "2",
"memory": "4",
"disk": "20",
"swap": "2",
"url": "https://github.com/onlyoffice/docker#recommended-system-requirements"
"url": "https://github.com/frappe/bench"
},
"user": {
"username": "admin",
"password": "123456"
"username": "Administrator",
"password": "admin"
},
"services":[
{
"name": "onlyoffice-server",
"port": "9002",
"description_cn": "浏览器访问 ONLYOFFICE",
"description_en": "Web-GUI database management tool",
"required": "Y"
},
{
"name": "phpmyadmin",
"port": "9090",
"description_cn": "数据库可视化管理工具",
"description_en": "Web-GUI database management tool",
"required": "Y"
}
],
"command_comments":[
{
"comment_cn": ".env文件的SITE_NAME需要修改成公网IP或者域名才能被外网访问",
"comment_en": ".env file's [SITE_NAME] should be changed to public IP or domain name to be accessed by Internet"
},
{
"comment_cn": "默认启动的是ERPNext12如果您想运行ERPNext13,只需将ERPNEXT_VERSION、FRAPPE_VERSION修改成v13",
"comment_en": "The default startup is erpnext12. If you want to run erpnext13, you only need to change ERPNEXT_VERSION/FRAPPE_VERSIO to V13"
}
],
"command_extra":[
{
"cmd": "echo aaa"
"cmd": "public_ip=`wget -O - https://download.websoft9.com/ansible/get_ip.sh | bash`"
},
{
"cmd": "echo bbb"
"cmd": "sudo sed -i s/APP_SITE_URL.*/APP_SITE_URL=$public_ip/g ./.env"
}
],
"faqs": [
"services":[
{
"question_cn": "问题1",
"answer_cn": "答案1",
"question_en": "question1",
"answer_en": "answer1"
"name": "erpnext",
"port": "8000",
"description_cn": "浏览器访问 ERPNext",
"description_en": "Browser access to ERPNext by http",
"required": "Y"
},
{
"question_cn": "问题2",
"answer_cn": "答案2",
"question_en": "question2",
"answer_en": "answer2"
"name": "mariadb",
"port": "3306",
"description_cn": "TCP 访问MariaDB数据库",
"description_en": "Accessing MySQL database with TCP",
"required": "Y"
}
],
"faqs": [
{
"question_cn": "为什么ERPNext端口用8000这违反了compose文件的编码规范",
"answer_cn": "因为使用9001或其他端口将会导致部分容器发生错误导致应用无法正常访问",
"question_en": "Why does the erptext port use 8000, which violates the encoding specification of the compose file?",
"answer_en": "The use of 9001 or other ports will lead to errors in some containers and make the application unable to access normally"
},
{
"question_cn": "默认启动的ERPNext是v12我想运行其他版本该如何操作",
"answer_cn": "如果您想运行ERPNext13,只需将ERPNEXT_VERSION、FRAPPE_VERSION修改成v13修改前需要删除volumes文件夹",
"question_en": "The default startup is erpnext12, What should I do if I want to run another version?",
"answer_en": " If you want to run erpnext13, you only need to change ERPNEXT_VERSION/FRAPPE_VERSIO to V13;Please delete volumes before edit configure"
}
]
}