Menu Home

为知笔记私有部署

1. 为知笔记功能简介

您可以直接使用docker运行为知笔记服务端,不需要有任何IT知识。为知笔记私有部署Docker镜像,包含有完整的为知笔记服务端以及所需的各种环境,同时还包含了为知笔记网页版。您只需要启用为知笔记服务端,就可以利用自带的为知笔记网页版,在局域网内无限制使用为知笔记各种功能了。

  • 先安装 Docker 应用,获取镜像,启动即可
  • 运行成功后,通过域名访问,可自行创建团队、群组,注册用户
  • 免费版本,最多支持 5 个用户进行使用,不包含管理员账号
  • 授权付费版,价格为199 元/用户/年
  • 没有功能,使用时间等限制
  • 可以使用为知笔记官方桌面/手机客户端访问私有部署的为知笔记服务
  • 可以禁止客户端访问,保证所有数据只能在公司网络内访问

2. 私有部署步骤详解

安装DOCKER容器

magth@storage:~/share$ sudo apt-get udpate
magth@storage:~/share$ sudo aptg-get upgrade
magth@storage:~/share$ sudo apt-get install docker.io
magth@storage:~/share$ sudo systemctl start docker
magth@storage:~/share$ sudo systemctl enable docker

安装为知笔记服务器

magth@storage:~/share$ cd ~
magth@storage:~/share$ mkdir wizdata
magth@storage:~/share$ sudo docker run \
--name wiz \                           # docker 容器名
--restart=always -it -d \              # 自动重启                             
-v  ~/wizdata:/wiz/storage \           # 笔记存储位置及容器内外映射目录
-v  /etc/localtime:/etc/localtime \    # 时区配置
-p 8025:80 -p 9269:9269/udp  \         # 注:8025客户端访问端口,可自行修改
wiznote/wizserver

更新为知笔记服务器

magth@storage:~/share$ docker stop wiz
magth@storage:~/share$ docker rm wiz
magth@storage:~/share$ docker pull wiznote/wizserver:latest
magth@storage:~/share$ sudo docker run \
--name wiz \
--restart=always -it -d \
-v  ~/wizdata:/wiz/storage \
-v  /etc/localtime:/etc/localtime \
-p 8025:80 -p 9269:9269/udp  \
wiznote/wizserver

配置NGINX反向代理

server {

    listen 80;

    server_name yourdomain.com;

    rewrite ^ https://$http_host$request_uri? permanent;

    server_tokens off;

}

server {

    listen 443;

    server_name youdomain.com;

    # SSL证书配置,如无证书可注释掉本段
    ssl on;
    ssl_certificate conf.d/ca/ca.crt;      # 改为你的证书
    ssl_certificate_key conf.d/ca/ca.key;  # 改为你的证书KEY
    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!aNULL:!aNULL:!MD5:!ADM:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    # NGINX 反向代理需要配置 proxy_set_header
    proxy_http_version 1.1;
    proxy_set_header Upgrade %http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header x-wiz-real-ip $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    # 通过这种方式配置,客户端可以使用http或者https协议,为知笔记服务能够自动获取客户端使用的协议。
    proxy_set_header X-Forwarded-Proto "$scheme";

    # 服务器本地代理端口,与启动命令处端口保持一致
    location / {
        proxy_pass http://127.0.0.1:8025;
    }

    # 禁止访问的资源
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) {
        return 404;
    }

    # 图片资源访问代理
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        proxy_pass http://127.0.0.1:8025;
        error_log off;
        access_log off;
    }

    # 样式文件访问代理
    location ~ .*\.(js|css) {
        proxy_pass http://127.0.0.1:8025;
    }
}

如果您的nginx有多层,那么,您可能还需要额外的配置: 在http 模块中加入以下配置:

http {
    map $http_x_forwarded_proto $thescheme {
          default $scheme;
          https https;
    }
   ...
}

然后在server模块(或者http模块)里面,将前面配置中的

proxy_set_header X-Forwarded-Proto $scheme;

替换为下面的代码:

server {
    ...
    proxy_set_header X-Forwarded-Proto $thescheme;
    ...
}

如果您的nginx服务,并没有直接面向最终用户,而是在某些负载均衡/cdn后面,并且您的ssl证书是在这些负载均衡/cdn上面配置的,那么有可能会导致nginx无法正确获取客户端所使用的协议,从而导致无法将客户端使用的协议传递给为知笔记服务。在这种情况下,您可以修改nginx配置,强制通知服务使用https协议。

修改前面的配置,直接将proxy_set_header X-Forwarded-Proto $scheme修改成

server {
    ...
    proxy_set_header X-Forwarded-Proto "https";
    ...
}

测试配置

正常情况下,会返回一个json数据,检查第一个key wizas的值,应该是https开头。如果是http开头,则说明配置没有生效。

https://youdomain.com/?p=wiz&c=endpoints

Categories: 工具技巧

Tagged as:

RoyAkon