首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wiki.js不能通过公司代理

Wiki.js不能通过公司代理
EN

Stack Overflow用户
提问于 2020-06-15 07:15:55
回答 2查看 6.2K关注 0票数 5

我是Ubuntu的新手,但我有一份工作要用码头安装Wiki.JS。它可以工作,服务器正在运行,但由于某种原因,它无法到达GraphQL API。

我遇到了以下问题:

服务器:

2020-06-14T11:43:53.980Z主错误:从图形端点获取最新更新:失败

2020-06-14T11:43:53.980Z主错误:请求https://graph.requarks.io失败,原因:连接ETIMEDOUT 104.26.14.122:443

2020-06-14T11:43:56.028Z主错误:将地区与图形端点同步:失败

2020-06-14T11:43:56.028Z主错误:请求https://graph.requarks.io失败,原因:连接ETIMEDOUT 104.26.15.122:443

客户端:

错误: GraphQL错误:无效的区域设置或命名空间

堆栈跟踪:

代码语言:javascript
复制
n@http://server.mydomain.test/_assets/js/app.js?1591384357:2:125092
["./node_modules/apollo-client/bundle.umd.js"]/i/k</e.prototype.queryListenerForObserver/<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:146832
["./node_modules/apollo-client/bundle.umd.js"]/i/k</e.prototype.broadcastQueries/</<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:153007
["./node_modules/apollo-client/bundle.umd.js"]/i/k</e.prototype.broadcastQueries/<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:152971
["./node_modules/apollo-client/bundle.umd.js"]/i/k</e.prototype.broadcastQueries@http://server.mydomain.test/_assets/js/app.js?1591384357:2:152920
["./node_modules/apollo-client/bundle.umd.js"]/i/k</e.prototype.fetchRequest/</b<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:154884
["./node_modules/zen-observable/lib/Observable.js"]/j</<.value/</<.next@http://server.mydomain.test/_assets/js/app.js?1591384357:333:17099
b@http://server.mydomain.test/_assets/js/app.js?1591384357:333:14921
y@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15429
["./node_modules/zen-observable/lib/Observable.js"]/w</<.value@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15982
w/</n<.next/<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:140468
w/</n<.next@http://server.mydomain.test/_assets/js/app.js?1591384357:2:140430
b@http://server.mydomain.test/_assets/js/app.js?1591384357:333:14921
y@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15429
["./node_modules/zen-observable/lib/Observable.js"]/w</<.value@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15982
o/</</r<.next@http://server.mydomain.test/_assets/js/app.js?1591384357:2:169810
b@http://server.mydomain.test/_assets/js/app.js?1591384357:333:14921
y@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15429
["./node_modules/zen-observable/lib/Observable.js"]/w</<.value@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15982
["./node_modules/apollo-link-batch/lib/batching.js"]/o</e.prototype.consumeQueue/<.next/</<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:168733
["./node_modules/apollo-link-batch/lib/batching.js"]/o</e.prototype.consumeQueue/<.next/<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:168700
["./node_modules/apollo-link-batch/lib/batching.js"]/o</e.prototype.consumeQueue/<.next@http://server.mydomain.test/_assets/js/app.js?1591384357:2:168669
b@http://server.mydomain.test/_assets/js/app.js?1591384357:333:14921
y@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15429
["./node_modules/zen-observable/lib/Observable.js"]/w</<.value@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15982
t/n.batcher<.batchHandler/</<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:165472
["./node_modules/core-js/modules/es.promise.js"]/J/<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:450433
["./node_modules/core-js/internals/microtask.js"]/i@http://server.mydomain.test/_assets/js/app.js?1591384357:2:412213

请记住,我以前曾在Windows和Linux上测试过它。只要虚拟机没有代理,两者都能工作。我试图为机器设置代理并设置环境变量,但它似乎仍然不起作用。

我怎么才能解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-08 08:21:58

您无法让Wiki.JS在公司防火墙后面工作的原因是该功能没有实现。

基于这个GitHub问题,您可以投票支持此特性这里

问题(1.)中提到了一个解决办法,但是您也可以副业丢失的文件(2.)。

1.变通办法

我想出了一个解决办法:将https://github.com/rofl0r/proxychains-ng与LD_PRELOAD结合使用。在我的例子中,我使用的是码头写作。

你必须:

  • 将编译好的proxychains4.so合并到/lib/并设置环境变量
  • 创建自己的proxychains.conf

下面是一个示例:

代码语言:javascript
复制
Dockerfile

FROM requarks/wiki:2

USER root

ADD ./libproxychains4.so /lib/

RUN echo -e 'localnet 192.168.0.0/255.255.0.0\n\
[ProxyList]\n\
http <YOUR PROXY> <PROXY PORT>\n'\
> /etc/proxychains.conf

USER node

docker-compose.yaml

代码语言:javascript
复制
version: "3"
services:

  db:
    image: postgres:11-alpine
    environment:
      POSTGRES_DB: wiki
      POSTGRES_PASSWORD: wikijsrocks
      POSTGRES_USER: wikijs
    restart: unless-stopped
    volumes:
      - /data/wikijs/postgresql/data:/var/lib/postgresql/data

  wiki:
    image: wikijs-proxychains:1
    depends_on:
      - db
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: wikijs
      DB_PASS: wikijsrocks
      DB_NAME: wiki
      LD_PRELOAD: /lib/libproxychains4.so
    restart: unless-stopped
    ports:
      - "80:3000"

2.副业

如果您的wiki安装在一个与互联网隔离的环境中,您可以将通常从互联网下载的数据旁置一边。

这是通过手动下载一组文件并将它们放在wiki安装中的特定目录中实现的。这些文件将在初始化期间导入。

开始在您的Wiki.js安装文件夹内的path数据/副业中创建一个新文件夹。例如,如果您的wiki安装在path /home/wiki上,则需要在path /home/wiki/data/sideload创建一个文件夹。

为了安装地区包,您需要主区域设置文件+至少一个locale包文件。

这些文件可以从https://github.com/Requarks/wiki-localization下载。这些文件每晚都是最新的。

1 -主文件

主文件locales.json包含关于所有可用语言的信息,并且需要安装任何区域设置。

将此文件放置在先前创建的边框文件夹中。

2 -地区包

locale包文件xx.json或xx-zz.json包含您选择的语言的所有翻译。您可以在同一时间对任意数量的地区进行旁听。

英语包en.json是必需的,因为这是安装过程中的默认语言。之后你可以改变语言。

将该文件放置在前面创建的旁文件夹中,与主文件并排。您现在应该在文件夹中有locales.json、en.json和任何其他语言。

3 - Sideload

运行Wiki.js (如果进程已经在运行,则重新启动进程),以自动对数据/旁目录中的文件进行旁置处理。

由于2.5之前版本中存在错误,因此加载区域设置文件的顺序不正确,导致客户端无法获取翻译。

作为解决办法,一旦Wiki.js完全启动,再次重新启动服务器。区域设置数据(现在在数据库中)将正确加载。我也遇到了同样的问题,只要这个特性还没有实现,我就会使用BlueSpice MediaWiki,因为Wiki.JS的路线图上有“从MediaWiki导入”。

票数 4
EN

Stack Overflow用户

发布于 2020-11-07 14:15:16

要用@GanjalfTheGreen,提供的Docker解释副业解决方案,您首先需要克隆Wiki.js本地化存储库 (或从该存储库下载选定的本地化;只需确保您的locales.jsonen.json与所选项一起)。然后,需要将包含本地化文件的文件夹绑定到容器内的/wiki/data/sideload目录。

此外,您还需要在offline文件中设置config.yml参数,以便让wiki.js知道它应该使用旁置的本地化文件。为此,您需要在主机中创建一个config.yml文件,并将其绑定到容器配置文件。

下面是一个示例:

docker-compose.json

代码语言:javascript
复制
version: "3"
services:

  db:
    image: postgres:11-alpine
    environment:
      POSTGRES_DB: wiki
      POSTGRES_PASSWORD: wikijsrocks
      POSTGRES_USER: wikijs
    logging:
      driver: "none"
    restart: unless-stopped
    volumes:
      - db-data:/var/lib/postgresql/data

  wiki:
    image: requarks/wiki:2
    depends_on:
      - db
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: wikijs
      DB_PASS: wikijsrocks
      DB_NAME: wiki
      OFFLINE_ACTIVE: 1
    restart: unless-stopped
    ports:
      - "80:3000"
    volumes:
      - ./sideload:/wiki/data/sideload
      - ./config.yml:/wiki/config.yml

volumes:
  db-data:

config.yml

代码语言:javascript
复制
port: 3000
bindIP: 0.0.0.0
db:
  type: $(DB_TYPE)
  host: '$(DB_HOST)'
  port: $(DB_PORT)
  user: '$(DB_USER)'
  pass: '$(DB_PASS)'
  db: $(DB_NAME)
  storage: $(DB_FILEPATH)
  ssl: $(DB_SSL)
ssl:
  enabled: $(SSL_ACTIVE)
  port: 3443
  provider: letsencrypt
  domain: $(LETSENCRYPT_DOMAIN)
  subscriberEmail: $(LETSENCRYPT_EMAIL)
logLevel: info
ha: $(HA_ACTIVE)
offline: $(OFFLINE_ACTIVE)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62383153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档