Cellframe Node: Launch Instructions
Cellframe Node on Gitlab: https://gitlab.demlabs.net/cellframe/cellframe-node
This is the direct link to this article on Gitlab: https://gitlab.demlabs.net/cellframe/cellframe-node/blob/master/README.md
Special page in our Wiki documentation (will be translated ASAP): https://wiki.cellframe.net/index.php/Node_usage
Build it from sources:
Prerequisites:
To complete the build, you must have following prerequisites preinstalled (packages are named as in Debian GNU/Linux 10 “buster,” please find the corresponding packages for your distribution kit):
- libjson-c-dev
- libsqlite3-dev
- libmemcached-dev
- libev-dev
- libmagic-dev
- libcurl4-openssl-dev | libcurl4-nss-dev | libcurl4-gnutls-dev (deprecated modules, will be removed soon)
- libldb-dev
- libtalloc-dev
- libtevent-dev
Prepare the system
Run the command to install it with build tools:
sudo apt-get install build-essential cmake cpack dpkg-dev libjson-c-dev libsqlite3-dev libmemcached-dev libev-dev libmagic-dev libcurl4-gnutls-dev libldb-dev libtalloc-dev libtevent-dev
Get all the sources
Run this command to fetch sources from Gitlab and then build it:
git clone https://gitlab.demlabs.net/cellframe/cellframe-node.git
cd cellframe-node
git submodule init
git submodule update
Build the sources
Get into the directory with cellframe-node and run following commands:
mkdir build
cd build
cmake ../
make -j 8
This will compose everything in build/subdirectory.
Install the package
Prepare it for installation (Debian/Ubuntu)
To prepare the node for installation, you need to produce a package. Or –runsudo make install
from the build directory, then get config template from dist/share/configs
and produce proper one in any way/opt/cellframe-node/etc
. Anyway, we suggest you create the package with a command cpack
from the build directory.
Install from the local package
If you downloaded or built from the sources a Debian package like cellframe-node_2.11-4-buster_amd64.deb
you need to install it by means of running dpkg
command. Example:
dpkg -i -plow ./cellframe-node_2.11-4-buster_amd64.deb
Install from DemLabs official public repository
- Create file /etc/apt/sources.list.d/demlabs.list with one line below for Debian 10:
deb https://debian.pub.demlabs.net/ buster main
- Command for Ubuntu 18 (Bionic):
deb https://debian.pub.demlabs.net/ bionic main universe
- Then download the public signature and install it:
wget https://debian.pub.demlabs.net/debian.pub.demlabs.net.gpg
apt-key add demlabskey.asc
- Then update your apt cache and install the package:
apt-get update
apt-get install cellframe-node
During installation, it will ask the questions which are listed below.
Debian package questions
Note, that all of this can be changed afterward in configs.
- Auto online. If true, the node goes online after the start and then tries to keep this state automatically.
- Debug mode. If true it – would produce more log output in files. Suggested to set
true
true until the testing period - Debug stream headers. Dump stream headers in logs, set
true
only if you want to get more debug information about stream packages passing through. Suggestedfalse
for almost everybody - Accept connections. Enable/disable listening to the state of the network address. Set
false
if you don’t want to accept network connections to your node. - Server address. Network addresses used for listening. Set
0.0.0.0
if you want to listen to all network interfaces on your computer. - Server port (optional, usually not required). Server port is 8079 by default, but sometimes it is better to set it to
80
or443
to masquerade a service as a web service. - Kelvin-testnet: Enable network Set to
true
if you want to connect your node withkelvin-testnet
- Kelvin-testnet: Node type (role) Select node type (or node role) from the suggested list with short descriptions. By default suggested selecting
full
How to configure VPN service node
Node basic configuration
Open /opt/cellframe-node/etc/cellframe-node.conf
with command sudo nano /opt/cellframe-node/etc/cellframe-node.conf
and find next section:
# VPN stream channel processing module
[srv_vpn]
# Turn to true if you want to share VPN service from you node
enabled=false
# List of loca security access groups. Built in: expats,admins,services,nobody,everybody
network_address=10.11.12.0
network_mask=255.255.255.0
#pricelist=[kelvin-testnet:0.00001:KELT:3600:SEC:mywallet0,kelvin-testnet:0.00001:cETH:3600:SEC:mywallet1,private:1:WOOD:10:SEC:mywallet0]
Turn enabled
parameter to true
and that will enable VPN service on your node. The next lines, such asnetwork_address
and network_mask
you don't need to touch. Note, that the default configuration reserves network addresses for 254 connections at one time, and if you have more — you need to change network mask to smth like 255.255.0.0
and network address to 10.11.0.0
that will provide gives you 4095 local addresses. This is important – all the addresses are local and used only inside a virtual private network (VPN). OS should be configured for this address and mask – present DNS server, switched on IP4 forwarding and configured NAT. Examples of such configurations are below: Next line pricelist
if commented out it shares service for free.
Configuration of a pricelist
Pricelist line has a list of values, split with :
symbol. Let’s see the example kelvin-testnet:0.00001:KELT:3600:SEC:mywallet0
:
kelvin-testnet
it is the name of the network chain where the token is issued0.00001
price per units. Important: not for one unit but for all the units, in our example – for 1 hour.KELT
token ticker which is used for payments3600
units number that means a costs price0.00001
SEC
unit type, could beSEC
for seconds,DAY
for days,MB
for megabyte. IMPORTANT: if selectedMB
accounting, it would enable another billing logic — it will be based not on time, but passed amount of trafficmywallet
wallet name for accommodation of payments. It should be created preliminary withcellframe-node-cli
. It is used for signing conditioned transactions with receipts.
You could enter any values of prices.
DNS server installation
You need to install DNS server. It could be any other than Bind9, but for example, we will use this one
sudo apt-get install bind9
Switch on IPv4 forwarding
Open /etc/sysctl.conf
with command sudo nano /etc/sysctl.conf
and find line
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
It is at 27–28 line in config. Uncomment net.ipv4.ip_forward=1
. After you've changed it and saved changes, implement it with:
sudo sysctl -p
The operation is complete. After the reboot it will be implemented automatically
Configuring firewall with NAT
The simplest way is to install arno-iptables-firewall
is by running the next command:
sudo apt-get install arno-iptables-firewall
The following questions will be asked during the installation:
External network interfaces
answer with your network interface that is used for internet access. Usually, itseth0
orwifi0
but could be different, examine your network configuration firstDo you want to manage the firewall setup with debconf
answerYes
External network interfaces
answertun0
if you haven't configured any other VPN servers. If you had – find what the tunnel number is biggest and list all of them here with your tunnel name (tun<max number plus 1>
)Open external TCP-ports
answer8079
or whatever the port you used to configured the Cellframe node when it was installedOpen external UDP-ports:
answer the same as in previousInternal network interfaces
answertun0
if you haven't configured any other VPN servers. If they are – find what the tunnel number is biggest and list all of them here with your tunnel name (tun<max number plus 1>
)Internal subnets
here should be network_address/network_mask from VPN service configuration,10.11.12.0/255.255.255.0
in our exampleShould be restarted
answerNo
because we need some more configs
Now, let’s increase config ask level and reconfigure the package with the next command:
sudo dpkg-reconfigure -plow arno-iptables-firewall
For answers where you’ll see the right answers just press enter to skip them. Then, the next questions should appear:
Is DHCP used on external interfaces?
usually answerYes
, answerNo
only if you have static network configuration for external connectionsShould the machine be pingable from the outside world?
answerYes
because we use pings for network speed measurementsDo you want to enable NAT?
answerYes
Internal networks with access to external networks:
here is your list of internal networks again,10.11.12.0/255.255.255.0
in our exampleShould the firewall be (re)started now?
now answerYes
and have everything ready for routing
How to run
Debian/Ubuntu
If the node is installed in your system, you need to check if it runs properly.
sudo service cellframe-node status
And if it is doesn’t run properly — start it. Right after the reboot it should be executed automatically.
sudo service cellframe-node start
To stop it use the next command:
sudo service cellframe-node start
It is not a rocket science, isn’t it?!
Instruction to launch a Cellframe node.
Telegram group where you can ask your questions directly to CTO: https://t.me/cellframe