All pages
Powered by GitBook
1 of 8

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Configurator

Bitcart Configurator allows you to easily deploy new Bitcart instances, or re-configuring existing ones, with ease and no technical skills.

Configurator demo is accessible at https://configurator.bitcart.ai

You can access it from your admin by clicking the configurator button.

It allows you to easily deploy a new instance by just answering a few questions.

Configurator is designed for ease of onboarding and works only with one domain mode.

If you have more complex setup, check out full .

Deployment destination

There are 3 deployment destinations available: remote, manual, and current instance.

Remote

By entering the server credentials, the Configurator will automagically connect to your server and deploy the instance, while you drink a cup of coffee!

For an example of successful deployment, watch the video above.

Manual

If you don't trust the configurator's server, or you just need a copiable script you can run yourself, you can use the manual mode. It generates a script for you to copy, based on selected settings.

Current instance

If you are the server admin, you will have access to the current instance mode. You can change settings of your current instance without logging in to your server. By clicking current instance button Bitcart loads all current settings which you can customize.

Domains

On this page you can enter your domain where to deploy (using ), and optionally disable https support. If you don't have a domain, you can enable tor support in the later pages.

Coins

On this page you can configure and enable all the coins you want. For each coin you may enable lightning with just one click, or change network settings. Note that you must select at least one coin.

Additional

On the additional page, you may enable additional plugin packs, for example, Tor support.

Advanced

On this page you can configure advanced parameters. If you don't need to edit them, skip to the next page.

You can choose an installation pack (all, backend, frontend or none), and add more custom components, or edit the bitcart-docker repository URL.

Summary

On this page you can preview settings used. If something is wrong, you will see warnings.

When you are ready, click continue.

Deploy stage

After clicking continue, you will either see a ready script, or a progress bar, while configurator is deploying a new instance. Refer to each deployment destination for more details.

docker deployment guide
one domain mode
SSH settings
Deployment progress
Failed deployment
Copiable script
Domains page
Coins page
Select network
Enable lightning in one click!
Tor support
Advanced page
Additional components
Summary
Warnings

Deployment

Bitcart is extremely easy to deploy on your own server!

We have the minimal requirements ever possible:

  • 1 GB RAM (2 GB if enabling ETH)

  • 10 GB disk

  • Unix-based operating systems (something common like ubuntu is recommended)

Please refer to this diagram to choose your deployment method (you can see their descriptions in navigation sidebar at left):

In case you're not yet ready to choose where or how to host (it can cost as little as 3.5$ a month), you can try using Bitcart using or .

Docker Deployment

You may check out an easier method: Configurator

Bitcart uses docker for deployment. This allows us to simplify the installation and make Bitcart installable in almost any environment.

Currently Bitcart runs on 2 architectures: amd64 (most PC and servers), arm64 (raspberry pi). Arm32 is not supported officially anymore.

Almost every docker deployment starts like that:

Note the minus sign after su. It is required. If you are deploying on mac os, you don't need to enter the first command. This is to load all settings

There are different environment variables available in order to customize the deployment

In order for Bitcart to work, if you use BITCART_HOST, you should create a DNS A record from your domain registar, pointing to your current server

Environment variables are set like so:

Here are the main ones:

  • BITCART_HOST configures on which domain Bitcart should run. It is required unless you use any of the methods from . It works in . Your Bitcart Store will be accessible at BITCART_HOST, admin panel at /admin and Merchants API at /api. For other ways of configuration (for example different servers), check the one domain guide

  • BITCART_CRYPTOS configures which coins to enable. It is a list of coin symbols separated by commas. By default only btc is enabled. For example, to enable btc and eth, you would run export BITCART_CRYPTOS=btc,eth

There are also quite a few settings related to configuring coins in Bitcart. Each coin has the same set of settings you can configure:

  • COIN_NETWORK changes on which network the coin runs. For example: export BTC_NETWORK=testnet would enable testnet in BTC coin with no other changes required!

  • COIN_LIGHTNING enables lightning network for coins which support it (BTC-based). For BTC you would do: export BTC_LIGHTNING=true

For the complete list of configuration settings you can use (to e.g. open some ports, change networks used or anything else), check out full configuration description at .

sudo su -
git clone https://github.com/bitcart/bitcart-docker
cd bitcart-docker
# export needed settings, for example
export BITCART_HOST=yourdomain.tld
./setup.sh
our demo
third-party hosts

BITCART_REVERSEPROXY - configures the reverse proxy used. By default nginx-https is used (with automatic ssl certificates generation). It might be useful to disable it to access your services directly or you can set it to nginx to disable ssl

  • BITCART_ADDITIONAL_COMPONENTS - you can add additional components to your deployment. For example, using export BITCART_ADDITIONAL_COMPONENTS=tor enables tor.

  • COIN_DEBUG enables debug mode for daemons to log more information. For example export BCH_DEBUG=true
  • COIN_SERVER configures the daemon to use exact server you specify instead of connecting to many servers at once. For example export BNB_SERVER=https://bsc-dataseed.binance.org For btc-based coins, you can set up your own ElectrumX or Fulcrum server with your own full node. For eth-based coins, server is your full node's RPC url.

  • local deployment
    one domain mode
    bitcart-docker github
    export VARIABLE_NAME=value

    Raspberry Pi Deployment

    Raspberry Pi is a good low-power solution to host Bitcart at home. It is quite cheap and you can use it to build a lot of custom stuff.

    We recommend using the latest RPI4, but RPI3 would be good too.

    What's good is: Bitcart can work with any RPI flavour, even 1 GB RAM is enough to run Bitcart. Though we recommend picking up a bit more (2 GB) just to avoid slowdowns.

    As for the disk, SD card, USB memory or SSD - it doesn't matter, just know that SSD is usually faster. Basically any disk on the market should have enough space (10 GB)

    Important note about 32-bit operating systems

    Third-Party Hosting

    A third-party host is someone who runs Bitcart instance and enables registration for other users. They might be free (but could accept donations) or with paid access.

    Sometimes it's hard for users to deploy a new instance, but they want to try right away. That's what third-party hosts are for.

    In general, it's not recommended to use them especially if you plan to scale your business, but it's great for testing.

    Our demo at https://admin.bitcart.ai showcases all coins Bitcart supports, but we don't recommend using it for commercial purposes.

    There are some hosts ran by others

    Local Deployment

    If you want to try out Bitcart on your local machine, it is also possible. If you don't have a domain name, Bitcart provides a way to test in a local-only deployment.

    The setup is almost the same as always (see ), the catch is: the domain name must end with .local. Bitcart then modifies your host machines' /etc/hosts file to make it work.

    This only works from the computer on which you install Bitcart directly. To access it from outside, you should either use Tor or your own domain name + static ip

    Here and later we assume that you've cloned the bitcart-docker repository, entered that directory and entered root shell by using sudo su - (note that minus at the end, it's important!). If you're on mac os, use the scripts as your current user and don't enter root shell.

    It is recommended that you install 64-bit version of raspberry pi OS, as it is tested natively via our CI systems. 32 bit version is obsolete and is no longer officially supported. But if you want to stay 32 bits, note that on debian modern docker images may fail to start, although we try to fix that bug in our setup scripts.

    Setup

    We won't provide the details of how to install OS on your RPI, but raspbian should work fine. Check those guides for getting started and downloading an OS image

    Open a terminal on your RPI if you have connected a display to it, or ssh to your RPI.

    Start a root shell: sudo su -

    • Upgrade your system, install firewall and secure your pi from unnecessary ssh spam:

    You should replace 192.168.1.0/24 with your own subnet. This is to allow ssh connections only from your local network. You may not need it.

    • Clone and install Bitcart

    Ensure that your local computer you'll be accessing your Bitcart from /etc/hosts entry for raspberry pi matches BITCART_HOST. Or instead set BITCART_HOST to your raspberry pi ip address directly.

    • That's it! You can now access Bitcart store at http://raspberrypi.local, admin at http://raspberrypi.local/admin, api at https://raspberrypi.local/api. For other ways of deployment (your own domain/tor) check docker deployment and tor support

    Local setup (.local domains, only current PC)

    You will get the admin panel running at http://bitcart.local/admin, store at http://bitcart.local and api at http://bitcart.local/api. Good for testing locally/developing without all the hassles of manual deployment. Note that if you don't use one domain mode, it will still work.

    Tor setup (everywhere, requires tor browser)

    It isn't even required to set BITCART_HOST if tor is enabled. You can get onion addresses generated from the compose_tor_servicesdir docker volume. For more details check our tor guide.

    It is even possible to combine both ways to be able to access both locally and from anywhere!

    docker deployment
    export BITCART_HOST=bitcart.local
    export BITCART_REVERSEPROXY="nginx"
    ./setup.sh
    apt update && apt upgrade -y && apt autoremove
    apt install -y ufw fail2ban git
    sudo ufw allow from 192.168.1.0/24 to any port 22
    ufw allow 80, 443
    ufw status
    ufw enable
    git clone https://github.com/bitcart/bitcart-docker
    cd bitcart-docker
    export BITCART_HOST="raspberrypi.local"
    export BITCART_REVERSEPROXY="nginx"
    ./setup.sh
    export BITCART_ADDITIONAL_COMPONENTS=tor
    ./setup.sh
    List of third-party hosts
    • admin.bsty.business (BTC, BSTY, free)

    How do I get added to that list?

    You can contact us in one of our communities. Your server should have enabled server registration in server management settings.

    Disable server registration checkbox is off

    What are the limitations of this?

    The only limitation is that you won't be able to access server management pages. Other than that, it's pretty much the same unless server owner has forked Bitcart. Check this guide for details on server management settings.

    Is it safe?

    Well, in most cases yes, but you should be aware of scams! People might fork Bitcart and customize it to be malicious. We never intercept the payment process and never require a private key (except for lightning network). Also, watch your wallet to check if the host replaced your public key with their own! Some public hosts also handle a lot of customers of different services, so if you self-host one yours won't be that loaded.

    Hardware Deployment

    Sometimes you might want to run Bitcart on your own hardware. This is a bit more complicated than using a VPS. But in the end you will get way better security and control over your data.

    Note that no matter where you host Bitcart, as your private keys are never required, your data is always safe, you can export and move the data to any server. So if you started on a VPS, you can use our backups feature to create a backup of all your data and restore on your own hardware.

    Requirements

    Here are the requirements for running Bitcart on your own hardware:

    1. High-speed internet connection. The faster the better. This is to ensure the speed of invoice detection

    2. Any hardware ever. Yes, that's right! You can use your old PC or basically anything for that. Our minimal requirements are 1 GB RAM and around 10 GB disk. AMD64 hardware is the most tested one, but if needed, refer to our

    3. Any linux-based OS would suffice, but using something like Ubuntu 20.04 is the most common choice.

    4. (Optional) Static ip - that's required only if your setting up with your own domain name. If you only plan to use bitcart locally/via tor, this is not needed

    5. (Optional) Domain name - see the note above

    Setup

    This guide assumes that you have static ip set up and your own domain name. If not, refer to the .

    • Configure static IP in ubuntu via something like

    • If you have a domain name, create a DNS A record pointing to your static ip address (tip: you can get it if you type whatsmyip in google)

    • Set up port forwarding on your router for ports 80 and 443 to your machine ip address. Every router is different, usually there are guides existing on any model

    You should replace 192.168.1.0/24 with your own subnet. This is to allow ssh connections only from your local network. You may not need it.

    • Clone and install Bitcart (replace bitcart.yourdomain.com with the actual domain name):

    You may customize additional settings by export'ing more things. For example, use BITCART_CRYPTOS to customize the list of coins enabled. For the full list, see

    • All done! Enjoy your Bitcart instance! If needed, check out on how to restore the data from your previous instance.

    Recommended: install ssh server, configure firewall and fail2ban (to prevent excessive failed logins from random ips on the internet):

    raspberry pi guide
    local setup guide
    this guide
    docker deployment page
    backups support
    sudo apt update
    sudo apt install -y openssh-server fail2ban git ufw
    sudo ufw allow from 192.168.1.0/24 to any port 22
    sudo ufw allow 80, 443
    sudo ufw status
    sudo ufw enable
    sudo su -
    git clone https://github.com/bitcart/bitcart-docker
    export BITCART_HOST=bitcart.yourdomain.com
    ./setup.sh

    Manual Deployment

    The process is basically the following:

    1. Install OS required libraries

    2. Install python3 (3.11+)

    3. Install nodejs (20) and yarn

    4. Install postgresql

    5. Install redis (6.2.0+)

    6. Clone and run all parts of Bitcart

    7. (Optional) Open Firewall Ports and Access the Sites

    Warning: Not recommended to use in production

    Manual installation is NOT recommended in production. It should be only used for learning purpose.

    Instead you should use the .

    The docker deployment will provide you easy update system and make sure that all moving parts are wired correctly without any technical knowledge. It will also setup HTTPS for you.

    Typical manual installation

    This steps have been done on ubuntu 22.04, adapt for your own install.

    1) Install OS required libraries

    Or the equivalent for your os package manager

    More info on libsecp256k1 in or

    2) Install Python 3

    Usually it might have already been installed, but we also need pip3 and dev packages, so:

    3) Install uv

    uv is a fast Python package manager used to manage dependencies in Bitcart. Install it by following the official .

    4) Install Node.JS and Yarn

    If nodejs from your distro is not at least the version we require, then you should install it via

    Using a nodejs version higher than specified way work, but we officially support only 1 release series (usually current LTS)

    5) Install PostgresSQL

    Note, replace REPLACEME with your new postgres password.

    6) Install Redis

    Ensure that your redis version is > 6.2.0. Check with redis-server -v.

    If redis from your distro is too old, install from

    7) Clone and prepare Bitcart components

    Bitcart core(daemons) & Merchants API:

    For any other daemon(coin) you want to use, run:

    Where coin_name is coin code(btc, ltc, eth, etc.).

    Ensure that you include all the needed groups when running uv sync. It doesn't remember the old state, so each time you run uv sync you need to include all the needed groups. E.g. for btc and eth, you need to run uv sync --no-dev --group web --group production --group btc --group eth.

    If you are met with the following error during launch of the app/alembic: ModuleNotFoundError: No module named 'sqlalchemy.cutils'

    It means that your system is missing python development packages or a compiler. On ubuntu python3-dev does exactly that.

    Create a file conf/.env It contains all the settings. For now, we just need to set database password and enabled cryptos.

    Apply database migrations:

    Bitcart admin panel

    Bitcart store

    Run everything

    Bitcart core(daemons) & Merchants API:

    Start daemons from the bitcart repo directory:

    For any other coin, do the similar procedure:

    Start api:

    Start background worker:

    If you want to run a specific coin on a test network or change other environment settings you can update the .env file in the

    Bitcart admin panel

    Bitcart store

    Default ports

    • The Bitcart API runs on port 8000.

    • Daemons on ports 5000-500X

    • The Bitcart Admin panel runs on port 3000

    (Optional) Open Firewall Ports and Access the Sites

    If you are running Bitcart on your local machine - you will not need to do these steps. You can go ahead and access the system with:

    • Bitcart Admin Panel: http://127.0.0.1:3000/

    • Bitcart Store: http://127.0.0.1:4000/

    • Bitcart Merchants API: http://127.0.0.1:8000/

    If you are running Bitcart on a remote machine, you will need to do additional things to access them.

    Option 1: Nginx proxy (Recommended)

    This option is recommended to proxy secure incoming requests to the correct bitcart process.

    Install Nginx

    Add configuration for each component: bitcart-store, bitcart and bitcart-admin

    Enable the config

    Add DNS records for your server names to point to your VM's ip

    Check the config and reload nginx

    Add TLS certificates with the letsencrypt CA for the sites

    Now you should be able to access the components over TLS. You can then also enable http2 in your nginx configuration if you want.

    You might want to look at the

    Option 2: No proxy

    If you have a firewall, you will want to open ports 3000, 4000 and 8000. Using ufw as an example:

    yarn is listening on localhost 127.0.0.1 by default and you won't be able to access it over the internet unless you reverse proxy it with nginx. If you want to expose it without reverse proxy, use the environment variable: NUXT_HOST=0.0.0.0 to listen on all interfaces.

    The store and admin site need public access to the bitcart api (URL should be resolvable both client and server side).

    Using the manual method you need to set that with environment variables. The complete setup of the Bitcart Admin Panel and Store may look like this:

    Note: The above is the minimum to make it work and not a production grade solution. We still recommend to use docker deployment unless you really know what you're doing.

    Access the site remotely

    • Bitcart Admin Panel: http://my-bitcart-admin-ip:3000/

    • Bitcart Store: http://my-bitcart-store-ip:4000/

    • Bitcart Merchants API: http://my-bitcart-store-ip:8000/

    Continue with:

    (Optional) Managing Processes

    If you want the procaesses: bitcart api, daemons, worker and frontend (bitcart admin and bitcart store) to be managed with automatic startup, error reporting etc then consider using or to manage the processes.

    Upgrading manual deployment

    Note: it is recommended to use docker deployment for easy upgrades.

    To upgrade manually, follow the following steps:

    1) Stop everything already running

    Merchants API, workers, daemons, Admin panel and Store should be stopped

    2) Pull latest changes

    Run :

    For every Bitcart component directory (Merchants API, Admin Panel, Store).

    3) Upgrade dependencies

    Bitcart core(daemons) & Merchants API:

    For any other daemon(coin) you want to use, run:

    Where coin_name is coin code(btc, ltc, eth, etc.).

    Ensure that you include all the needed groups when running uv sync. It doesn't remember the old state, so each time you run uv sync you need to include all the needed groups. E.g. for btc and eth, you need to run uv sync --no-dev --group web --group production --group btc --group eth.

    Bitcart admin

    Bitcart store

    4) Apply new database migrations

    In Bitcart core(daemons) & Merchants API directory, run:

    5) Rebuild store and admin

    For Bitcart Admin Panel and Store, run:

    6) Start everything again

    Follow instructions

    The Bitcart Store runs on port 4000.

    docker deployment
    electrum docs
    bitcoin core docs
    uv installation guide
    nodesource
    official redis repository
    bitcart conf/ directory
    FAQ for more detailed info on the Nginx configuration options
    Your first invoice
    supervisord
    systemd
    here
    sudo apt install libsecp256k1-dev
    sudo apt install python3 python3-pip python3-dev
    curl -LsSf https://astral.sh/uv/install.sh | sh
    sudo apt install nodejs
    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
    echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
    sudo apt update && sudo apt install yarn
    sudo apt install postgresql postgresql-contrib
    sudo -u postgres createdb bitcart
    sudo -u postgres psql -U postgres -d postgres -c "alter user postgres with password 'REPLACEME';"
    sudo apt install redis-server
    git clone https://github.com/bitcart/bitcart
    cd bitcart
    # uv creates a virtual environment in .venv for us automatically
    uv sync --no-dev --group web --group production --group btc
    source .venv/bin/activate
    uv sync --no-dev --group coin_name
    # Replace REPLACEME with your database password
    # specify used cryptocurrencies with BITCART_CRYPTOS
    
    cat > conf/.env << EOF
    DB_PASSWORD=REPLACEME
    BITCART_CRYPTOS=btc,ltc
    EOF
    alembic upgrade head
    git clone https://github.com/bitcart/bitcart-admin
    cd bitcart-admin
    yarn
    yarn build
    git clone https://github.com/bitcart/bitcart-store
    cd bitcart-store
    yarn
    yarn build
    python3 daemons/btc.py
    python3 daemons/coin_name.py
    gunicorn -c gunicorn.conf.py main:app
    python3 worker.py
    cd bitcart-admin
    yarn start
    cd bitcart-store
    NUXT_PORT=4000 yarn start
    sudo apt install nginx
    vim /etc/nginx/sites-available/bitcart-admin.conf
    
    server {
        server_name bitcart-admin.<mysite>.com;
        access_log /var/log/nginx/bitcart-admin.access.log;
        error_log /var/log/nginx/bitcart-admin.error.log;
    
        location / {
            proxy_pass http://localhost:3000;
        }
    }
    sudo ln -s /etc/nginx/sites-available/bitcart-admin.conf /etc/nginx/sites-enabled
    sudo nginx -t
    sudo systemctl reload nginx
    sudo apt install certbot
    sudo certbot --nginx
    sudo ufw allow 3000
    sudo ufw allow 4000
    sudo ufw allow 8000
    # bitcart-admin
    NUXT_HOST="0.0.0.0" BITCART_ADMIN_API_URL="http://bitcart-api-ip:8000" yarn start
    # bitcart-store
    NUXT_PORT=4000 NUXT_HOST="0.0.0.0" BITCART_STORE_API_URL="http://bitcart-api-ip:8000" yarn start
    git pull
    uv sync --group web --group production --group btc
    uv sync --group coin_name
    yarn
    yarn
    alembic upgrade head
    yarn build