searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

本地化部署开源思维导图工具--draw.io

2023-10-07 07:39:05
137
0

前言

在日常工作中, 经常需要画一些拓扑图或者关系图,最常使用的工具可能是微软的visio,这个工具虽然强大,但是是一个收费软件;或者使用xmind的免费版本,但是在功能上受到一定的限制。 这里介绍一款优秀的在线绘图软件--draw.io, 这个软件同时提供了桌面应用,支持windows/MacOS等多种操作系统; 同时还提供了docker镜像,实现本地化部署。 本文将介绍使用docker进行本地化部署。

安装docker

在linux环境下安装docker及docker-compose工具,这里参考docker文档在ubuntu下部署:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo usermod -aG docker $USER

curl -SL github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

启动docker实例

使用docker-compose 启动实例,需准备docker-compose.yml 配置文件:

services:
  drawio:
    image: jgraph/drawio:21.0.2
    container_name: drawio
    environment:
      - LETS_ENCRYPT_ENABLED=false
    restart: always
    network_mode: host
    healthcheck:
      test: ["CMD-SHELL", "curl -f 127.0.0.1:8080 || exit 1"]
      interval: 1m30s
      timeout: 10s
      retries: 5
      start_period: 10s
    volumes:
      - /home/user/draw.io/data:/opt/data
    deploy:
      replicas: 1
      resources:
        limits:
          cpus: "2"
          memory: 1G

使用docker-compose 启动docker 实例

docker-compose up -d

配置nginx

docker镜像本身包含tomcat web服务器,但是这里使用nginx作为web服务器,并配置自签名证书使用https 连接。

sudo apt install -y nginx

# cat code.ctyun.dev.ext
[req]
default_bits = 1024
distinguished_name = req_distinguished_name
req_extensions = san
extensions = san
[req_distinguished_name]
countryName = CN
stateOrProvinceName = Definesys
localityName = Definesys
organizationName = Definesys
[SAN]
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @SubjectAlternativeName

[SubjectAlternativeName]
DNS.1 = code.ctyun.dev
IP.1 = 192.168.1.9
[root@code ssl]# cat gen.sh
#/bin/bash

# Root CA
#openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -subj "/C=CN/ST=Zhejiang/L=Hangzhou/O=CTYUN" -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca

# Private Key
openssl genrsa -out code.ctyun.dev.key 2048

#Private Cert with Signature
openssl req -new -key code.ctyun.dev.key -subj "/C=CN/ST=Zhejiang/L=Hangzhou/O=CTYUN/CN=code.ctyun.dev" -sha256 -out code.ctyun.dev.csr
openssl x509 -req -days 3650 -in code.ctyun.dev.csr -CA CA-certificate.crt -CAkey CA-private.key -CAcreateserial -sha256 -out code.ctyun.dev.crt -extfile code.ctyun.dev.ext -extensions SAN

配置nginx.conf

map $http_upgrade $connection_upgrade {
    default Upgrade;
    '' close;
}

server {
        listen 443 ssl default_server;
        ssl_certificate /etc/ssl/certs/code.ctyun.dev.pem;
        ssl_certificate_key /etc/ssl/private/code.ctyun.dev.key;
        server_name code.ctyun.dev;

        proxy_read_timeout 3600;
        proxy_connect_timeout 3600;
        proxy_send_timeout 3600;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        ssl_prefer_server_ciphers   on;

        location / {
                sendfile off;
                proxy_pass 127.0.0.1:8080;
                proxy_redirect default;
                proxy_http_version 1.1;

                proxy_set_header Connection $connection_upgrade;
                proxy_set_header Upgrade $http_upgrade;

                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_max_temp_file_size 0;

                client_max_body_size 1024m;
                client_body_buffer_size 128k;

                proxy_buffering off;
                proxy_request_buffering off;
                proxy_set_header Connection "";
        }
}

启动nginx, 就能够在浏览器里面访问draw.io 进行正常绘图啦, 看起来是不是官网一模一样:)

0条评论
0 / 1000