CrossbarFX - decentralized data plane for XBR/WAMP built on Crossbar.io
10K+

CrossbarFX is a decentralized data plane for WAMP and XBR that builds on Crossbar.io (OSS) adding enterprise features for:
CrossbarFX also provides an implementation of XBR open data markets which enables a complete new level of multi-stakeholder applications and unlocks networks of digital value chains.
Find out more in the CrossbarFX Documentation.
To pull the latest CrossbarFX image while automatically selecting the right/best image for your CPU architecture:
docker pull crossbario/crossbarfx:latest
Manually select the architecture and flavor:
docker pull crossbario/crossbarfx:pypy-amd64docker pull crossbario/crossbarfx:pypy-i386docker pull crossbario/crossbarfx:cpy-slim-arm64docker pull crossbario/crossbarfx:cpy-slim-arm32To test CrossbarFX and print version information:
docker run -it --rm crossbario/crossbarfx:cpy-slim-amd64 master version
This should look like:
oberstet@matterhorn:~$ docker run -it --rm crossbario/crossbarfx:cpy-slim-amd64 master version
:::::::::::::::::
::::: _____ __ _____ _______
::::: : ::::: / ___/______ ___ ___ / / ___ _____ / __/ |/_/ ___/
::::::: ::::::: / /__/ __/ _ \(_-<(_-</ _ \/ _ `/ __/ / _/_> </ /__
::::: : ::::: \___/_/ \___/___/___/_.__/\_,_/_/ /_/ /_/|_|\___/
:::::
::::::::::::::::: Crossbar.io Fabric XBR Center v19.2.2 [00000]
Copyright (c) 2013-2019 Crossbar.io Technologies GmbH. All rights reserved.
Crossbar.io : 19.2.1
txaio : 18.8.1
Autobahn : 19.2.1
Twisted : 18.9.0-EPollReactor
LMDB : 0.94/lmdb-0.9.22
Python : 3.7.2/CPython
Crossbar.io FX : 19.2.2
NumPy : 1.15.4
zLMDB : 19.2.2
XBR : 19.2.2
Frozen executable : no
Operating system : Linux-4.15.0-43-generic-x86_64-with-debian-9.7
Host machine : x86_64
Release key : RWR2yD4qEkDnHAOwcTx6qTqaTT55n+J5pWez5jXUFT89fwlfVO77nFaV
All images are tagged according to the following scheme
crossbario/crossbarfx:<python>[-slim]-<arch>
where <python> can take
pypy: for a PyPy 3 based CrossbarFX stack: CrossbarFX runs 5-20x faster on PyPy, a tracing JIT compiler for Pythoncpy: for a CPython 3 based CrossbarFX stack: standard CPython based, available on more CPU architectures, quicker startup, potentially less memory consumptionand <arch> can take
amd64: x86 64-bit CPUsi386: x86 32-bit CPUsarm64: ARMv8 64-bit CPUsarm32: ARMv7 32-bit CPUsThe -slim PyPy images are built from PyPy Docker Official Images while the non-slim PyPy images are built directly from the PyPy project binary releases and buildpack-deps:bionic base images.
Not all combinations of above are currently available.
Here is the currently available list of images:
REPOSITORY TAG IMAGE ID CREATED SIZE
crossbario/crossbarfx pypy-amd64 94879ab8fee3 6 hours ago 937MB
crossbario/crossbarfx pypy-i386 96a93f6096ed 6 hours ago 906MB
crossbario/crossbarfx pypy-slim-amd64 8dba32911b06 5 hours ago 498MB
crossbario/crossbarfx pypy-slim-i386 d1530a6a5467 5 hours ago 492MB
crossbario/crossbarfx cpy-slim-amd64 fbd8aa8852de 5 hours ago 540MB
crossbario/crossbarfx cpy-slim-i386 f7a28f354839 4 hours ago 504MB
crossbario/crossbarfx cpy-slim-arm64 acc7f5826f38 3 hours ago 480MB
crossbario/crossbarfx cpy-slim-arm32 8662282adf07 4 hours ago 401MB
To inspect the set of images referred to in the crossbario/crossbarfx multi-arch image:
docker pull crossbario/crossbarfx:latest
export DOCKER_CLI_EXPERIMENTAL=enabled
docker manifest inspect crossbario/crossbarfx:latest
Note: PyPy based images for ARM32 and ARM64 are not yet available.
CrossbarFX can be run as an edge node either standalone or optionally connected to and managed by a CrossbarFX master node. Here is how to create and run a standalone/unmanaged CrossbarFX edge node.
Create a new node application directory on the host:
cd $HOME
mkdir -p nodes/standalone1
Initialize the application directory:
docker run -it --rm \
-v ${HOME}/nodes/standalone1:/node \
crossbario/crossbarfx:cpy-slim-amd64 \
edge init --appdir /node
Start the CrossbarFX edge node from the directory:
docker run -it --rm \
-p 8080:8080 \
-p 8081:8081 \
-v ${HOME}/nodes/standalone1:/node \
crossbario/crossbarfx:cpy-slim-amd64 \
edge start --cbdir=/node/.crossbar
And open the nodes' info page at http://localhost:8080/info. You should see some basic information rendered by the running node.
CrossbarFX can be run as an edge node connected to and managed by a CrossbarFX master node. Here is how to create and run a managed CrossbarFX edge node.
A master node is responsible of managing edge nodes and required for the full feature set. Here is how to run a CrossbarFX master node.
Create a new node application directory on the host:
cd $HOME
mkdir -p nodes/master1
Initialize a superuser profile within the container by running:
docker run -it --rm \
-v ${HOME}/nodes/master1:/node \
-e CROSSBAR_FABRIC_URL="ws://localhost:9000/ws" \
crossbario/crossbarfx:cpy-slim-amd64 \
shell auth --yes
and start the master node:
docker run -d --name cfxmaster \
-p 9000:9000 \
-v ${HOME}/nodes/master1:/node \
-v ${HOME}/nodes/:/nodes \
-e CROSSBAR_FABRIC_URL="ws://localhost:9000/ws" \
-e CROSSBAR_FABRIC_SUPERUSER=/node/.crossbarfx/default.pub \
crossbario/crossbarfx:cpy-slim-amd64 \
master start --cbdir=/nodes/master1/.crossbar
You can now login into the running container and administer the CrossbarFX master node using the CLI from with (using the superuser profile created above for authentication):
docker exec -it cfxmaster bash
Here are a couple of CLI commands
crossbarfx shell show status
crossbarfx shell list mrealms
crossbarfx shell create mrealm mrealm1
crossbarfx shell show mrealm mrealm1
executed inside the running container:
oberstet@intel-nuci7:~$ docker exec -it cfxmaster bash
root@7a75f56f5d13:/# crossbarfx shell show status
{'now': '2019-02-24T14:27:59.616Z',
'realm': 'com.crossbario.fabric',
'started': '2019-02-24T14:26:25.679Z',
'tick': 20,
'type': 'domain',
'uptime': 'a minute'}
root@7a75f56f5d13:/# crossbarfx shell list mrealms
[]
root@7a75f56f5d13:/# crossbarfx shell create mrealm mrealm1
{'cf_container_worker': '00000000-0000-0000-0000-000000000000',
'cf_node': '00000000-0000-0000-0000-000000000000',
'cf_router_worker': '00000000-0000-0000-0000-000000000000',
'created': 1551018503094144,
'name': 'mrealm1',
'oid': 'edac2a4a-fa70-48e8-9f09-b1ddb162ea24',
'owner': '3e30230c-3a48-4ff6-94af-2107f1370891'}
root@7a75f56f5d13:/# crossbarfx shell list mrealms
['edac2a4a-fa70-48e8-9f09-b1ddb162ea24']
root@7a75f56f5d13:/# crossbarfx shell show mrealm mrealm1
{'cf_container_worker': '00000000-0000-0000-0000-000000000000',
'cf_node': '00000000-0000-0000-0000-000000000000',
'cf_router_worker': '00000000-0000-0000-0000-000000000000',
'created': 1551018503094144,
'name': 'mrealm1',
'oid': 'edac2a4a-fa70-48e8-9f09-b1ddb162ea24',
'owner': '3e30230c-3a48-4ff6-94af-2107f1370891'}
root@7a75f56f5d13:/#
Create a new node application directory on the host:
cd $HOME
mkdir -p nodes/edge1
Start the CrossbarFX edge node from the directory:
docker run -it --rm \
--link cfxmaster \
-p 8080:8080 \
-p 8081:8081 \
-v ${HOME}/nodes/edge1:/node \
-e CROSSBAR_FABRIC_URL="ws://cfxmaster:9000/ws" \
crossbario/crossbarfx:cpy-slim-amd64 \
edge start --cbdir=/node/.crossbar
CrossbarFX will start and exit again with log output similar to:
...
2019-02-24T14:54:34+0000 [Controller 1] Node key files exist and are valid. Node public key is 0x5678a ..
...
2019-02-24T14:54:34+0000 [Controller 1] Connecting to Crossbar.io Fabric Center at ws://cfxmaster:9000/ws ..
2019-02-24T14:54:34+0000 [Controller 1] FABRIC.AUTH-FAILED.NODE-UNPAIRED: THIS NODE IS UNPAIRED. PLEASE PAIR ..
...
This is fine! The node has connected to the master node, but the master node does not know the node (it is "unpaired") and the connection is denied.
Go to the terminal attached to the running master node container and pair the node:
crossbarfx shell pair node /nodes/edge1/.crossbar/key.pub mrealm1 edge1
Here is log output:
(cpy372_7) oberstet@intel-nuci7:~$ docker exec -it cfxmaster bash
root@d18cf797a22a:/# crossbarfx shell list mrealms
['af3fabcf-34bb-4b7e-a739-2546d1715f37']
root@d18cf797a22a:/# crossbarfx shell pair node /nodes/edge1/.crossbar/key.pub mrealm1 edge1
{'authextra': None,
'authid': 'edge1',
'mrealm_oid': 'af3fabcf-34bb-4b7e-a739-2546d1715f37',
'oid': 'e716f3ae-6053-4c1b-a511-9914ad9a94fe',
'owner_oid': '68460374-8ab3-4d6d-b547-7791d45dec1b',
'pubkey': '5678aa0a3528d1c0148e7ad93a9ff071c877ea98b8757c3f7a0bdec49c64b331'}
Now start the edge node again, you should see output like:
(cpy372_1) oberstet@intel-nuci7:~$ docker run -it --rm --link cfxmaster -p 8080:8080 -p 8081:8081 -v ${HOME}/nodes/edge1:/node -e CROSSBAR_FABRIC_URL="ws://cfxmaster:9000/ws" crossbario/crossbarfx:cpy-slim-amd64 edge start --cbdir=/node/.crossbar
2019-03-01T12:06:10+0000 [Controller 1]
2019-03-01T12:06:10+0000 [Controller 1] :::::::::::::::::
2019-03-01T12:06:10+0000 [Controller 1] ::::: _____ __ _____ __
2019-03-01T12:06:10+0000 [Controller 1] ::::: : ::::: / ___/______ ___ ___ / / ___ _____ / __/ |/_/
2019-03-01T12:06:10+0000 [Controller 1] ::::::: ::::::: / /__/ __/ _ \(_-<(_-</ _ \/ _ `/ __/ / _/_> <
2019-03-01T12:06:10+0000 [Controller 1] ::::: : ::::: \___/_/ \___/___/___/_.__/\_,_/_/ /_/ /_/|_|
2019-03-01T12:06:10+0000 [Controller 1] :::::
2019-03-01T12:06:10+0000 [Controller 1] ::::::::::::::::: Crossbar Fabric XBR v19.2.2 [00000]
2019-03-01T12:06:10+0000 [Controller 1]
2019-03-01T12:06:10+0000 [Controller 1] Copyright (c) 2013-2019 Crossbar.io Technologies GmbH. All rights reserved.
2019-03-01T12:06:10+0000 [Controller 1]
2019-03-01T12:06:10+0000 [Controller 1] Initializing <crossbarfx.edge.node.node.FabricNode> as node [realm=crossbar, cbdir=/node/.crossbar]
2019-03-01T12:06:10+0000 [Controller 1] Node key files exist and are valid. Node public key is 0xcf8c2ea74058a47ec2c90d8aa0c8e0508d823444003ed60243ddd6887a946c63
2019-03-01T12:06:10+0000 [Controller 1] Node key loaded from /node/.crossbar/key.priv
2019-03-01T12:06:10+0000 [Controller 1] Node configuration loaded [config_source=default, config_path=None]
2019-03-01T12:06:10+0000 [Controller 1] Entering event reactor ...
2019-03-01T12:06:10+0000 [Controller 1] Starting edge node <crossbar.node.node.Node.start>
2019-03-01T12:06:10+0000 [Controller 1] Node ID 90bb13f6ea1a set from hostname
2019-03-01T12:06:10+0000 [Controller 1] RouterServiceAgent ready (realm_name="crossbar", on_ready=None)
2019-03-01T12:06:10+0000 [Controller 1] Docker daemon integration disabled
2019-03-01T12:06:10+0000 [Controller 1] Registered 48 procedures
2019-03-01T12:06:10+0000 [Controller 1] Signal handler installed on process 1 thread 139930718757888
2019-03-01T12:06:10+0000 [Controller 1] Using default node shutdown triggers ['shutdown_on_shutdown_requested']
2019-03-01T12:06:10+0000 [Controller 1] Booting node <crossbarfx.edge.node.node.FabricNode.boot>
2019-03-01T12:06:10+0000 [Controller 1] Using custom fabric controller at URL "ws://cfxmaster:9000/ws" (from envvar)
2019-03-01T12:06:10+0000 [Controller 1] Connecting to Crossbar.io Fabric Center at ws://cfxmaster:9000/ws ..
2019-03-01T12:06:10+0000 [Controller 1] NodeManagementBridgeSession.attach_manager: manager attached as node "c82b34ee-fc5a-4de3-a484-b07720b5db02" on management realm "mrealm1")
2019-03-01T12:06:10+0000 [Controller 1] Connected to Crossbar.io Fabric Center at management realm "mrealm1", set node ID "c82b34ee-fc5a-4de3-a484-b07720b5db02" (extra={'x_cb_node_id': None, 'x_cb_peer': 'tcp4:172.17.0.3:41034', 'x_cb_pid': 17}, session_id=5936774736058267)
2019-03-01T12:06:10+0000 [Controller 1] Applying local node configuration (on_start_apply_config is enabled)
2019-03-01T12:06:10+0000 [Controller 1] Booting node from local configuration .. <crossbar.node.node.Node.boot_from_config>
2019-03-01T12:06:10+0000 [Controller 1] Will start 1 worker ..
2019-03-01T12:06:10+0000 [Controller 1] Order node to start Router worker001
2019-03-01T12:06:10+0000 [Controller 1] Starting router worker worker001 <crossbar.node.controller.NodeController.start_worker>
2019-03-01T12:06:11+0000 [Router 18] Starting worker "worker001" for node "c82b34ee-fc5a-4de3-a484-b07720b5db02" on realm "crossbar" with personality "edge" <crossbarfx.edge.worker.router.ExtRouterController>
2019-03-01T12:06:11+0000 [Router 18] Running as PID 18 on CPython-EPollReactor
2019-03-01T12:06:11+0000 [Router 18] Entering event reactor ...
2019-03-01T12:06:11+0000 [Router 18] Router worker session for "worker001" joined realm "crossbar" on node router <crossbar.worker.router.RouterController.onJoin>
2019-03-01T12:06:11+0000 [Router 18] Registered 53 procedures
2019-03-01T12:06:11+0000 [Router 18] Router worker session for "worker001" ready
2019-03-01T12:06:11+0000 [Controller 1] Ok, node has started Router worker001
2019-03-01T12:06:11+0000 [Controller 1] Configuring Router worker001 ..
2019-03-01T12:06:11+0000 [Controller 1] Order Router worker001 to start Transport transport001
2019-03-01T12:06:11+0000 [Router 18] Starting router transport "transport001" <crossbar.worker.router.RouterController.start_router_transport>
2019-03-01T12:06:11+0000 [Router 18] Creating router transport for "transport001" <crossbar.worker.transport.create_router_transport>
2019-03-01T12:06:11+0000 [Router 18] Router transport created for "transport001" <crossbar.worker.transport.RouterWebTransport>
2019-03-01T12:06:11+0000 [Router 18] Created "pairme" Web service on root path "/" of Web transport "transport001"
2019-03-01T12:06:11+0000 [Router 18] Site starting on 8080
2019-03-01T12:06:11+0000 [Controller 1] Ok, Router worker001 has started Transport transport001
2019-03-01T12:06:11+0000 [Controller 1] Order Transport transport001 to start Web Service webservice001
2019-03-01T12:06:11+0000 [Router 18] Starting "websocket" Web service on path "ws" of transport "transport001" <crossbar.worker.router.RouterController.start_web_transport_service>
2019-03-01T12:06:11+0000 [Controller 1] Ok, Transport transport001 has started Web Service webservice001
2019-03-01T12:06:11+0000 [Controller 1] Ok, Router worker001 configured
2019-03-01T12:06:11+0000 [Controller 1] Ok, local node configuration booted successfully!
2019-03-01T12:06:15+0000 [Controller 1] Starting management heartbeat .. [interval=10.0]
Summary (current as of 02/24/2019): CrossbarFX is free for test and evaluation and there will be a free-tier allowing any use up to a usage limit in terms of number of managed nodes.
Crossbar.io OSS is open-source software published on GitHub in source code and licensed under the AGPL 3.0.
CrossbarFX (the software available packaged in Docker images in the repository here) is commercially licensed software where we share the source code with customers for full transparency and reasons of dependable security and freedom to operate.
Copyright Crossbar.io Technologies GmbH – all rights reserved.
Unless you have received this software under a more specific license from Crossbar.io Technologies GmbH or one of its subsidiaries – e.g. under a license as part of a commercial support package – the following license terms apply:
This software is supplied exclusively for testing and evaluation purposes. It is under development and no warranties or assurances are made regarding its functionality or fitness for any specific purpose. Use at your own risk!
Crossbar.io Technologies GmbH grants you an unpaid, time-limited, non-exclusive, non-transferable license to use this software for testing and evaluation of its present functionality. This licensed use does not include use in production systems.
Crossbar.io Technologies GmbH, or one of its subsidiaries, will from time to time release newer versions of this software. The license granted you for the use of this software expires two weeks after such a release of a newer version.
Content type
Image
Digest
Size
436.3 MB
Last updated
over 5 years ago
docker pull crossbario/crossbarfx:cpy-slim-amd64-