A NodeJS proxy server for doip.js
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
Yarmo Mackenbach 48390b858b Add deprecation notice 10 months ago
api/v1 Accept matrix room id in url 2 years ago
src Apply changes made by prettier 2 years ago
.gitignore Ignore .env 2 years ago
.licenseignore Fix licenseignore 2 years ago
.prettierignore Add prettier 2 years ago
.prettierrc.yaml Apply changes made by prettier 2 years ago
Dockerfile Fix production flag in dockerfile 2 years ago
LICENSE Initial commit 2 years ago
LICENSE.HEADER Add project files 2 years ago
README.md Add deprecation notice 10 months ago
license-checker-config.json Add project files 2 years ago
package.json Release 1.3.0 2 years ago
yarn.lock Add proxy for IRC 2 years ago




The proxy functionality has been integrated in the doip.js project.


This is a proxy server written in Node.js for the doip.js library.

When doip.js is run in a Node.js environment, it can function completely autonomously. When run in a browser, some proofs can't be verified due to CORS restrictions or lack of Node.js tools like DNS resolvers. In these cases, the requests will need to be routed to a proxy server running this project.

Currently, doip-proxy handles:

  • REST queries (GET, result in JSON or text)
  • DNS resolving
  • XMPP vCard data fetching

Please note that XMPP functionality is disabled by default. Information on how to enable it is found below.

Getting started

Installing the server using plain Node.js

git clone git@codeberg.org:keyoxide/doip-proxy.git
yarn --production
yarn start

Doip-proxy is now available at http://localhost:3000

Installing the server using docker

git clone git@codeberg.org:keyoxide/doip-proxy.git
docker build -t doip-proxy .
docker container run -p 3000:3000 doip-proxy

Doip-proxy is now available at http://localhost:3000.


Get JSON document via REST


The url needs to be encoded (in js: encodeURIComponent(url)).

Get text document via REST


The url needs to be encoded (in js: encodeURIComponent(url)).

Resolve DNS


hostname means just the domain without https://.

Fetch XMPP vCard data


xmppid is also known as jabberid and looks like an email address: user@domain.org.

xmppdata is the specific vCard entry that you are requesting. For DOIP proof verification, you will need DESC. Possible values are: FN, NUMBER, USERID, URL, BDAY, NICKNAME, DESC.


Enabling XMPP functionality

Enabling XMPP functionality requires an XMPP account. Please note that after some testing, it turns out not all XMPP instances work equally well with doip-proxy. If XMPP continues to fail, please try a different XMPP instance.

XMPP account credentials are passed to the library using environment variables.

For example, with docker:

docker container run -p 3000:3000 -e XMPP_SERVICE=domain.org -e XMPP_USERNAME=username -e XMPP_PASSWORD=password doip-proxy



  • improve documentation