Dockerizing Bitcoin
I’m very excited to have finally open-sourced the first part of Satoshi Portal’s custom Bitcoin infrastructure: our repository of Bitcoin-related dockerfiles and configurations upon which our web applications are built and they are the building blocks of our Cyphernode project (more on that in my next post!) Because we love Docker and Bitcoin so much, we decided dockerize all the Bitcoin projects! This includes Bitcoin Core and Lightning Nodes, as well as various utilities like OpenTimestamps and PyCoin.
Bitcoindockers.com
This is the website for our repository: SatoshiPortal/dockers which is where we will publish all the Bitcoin docker container projects that we either coded or reviewed. They each come with a tutorial.
All the current dockerfiles are used in production by Bylls and Bitcoin Outlet, Satoshi Portal’s Bitcoin financial services applications. In other words: they are currently being used to send and receive bitcoins commercially the mainnet.
Docker is an amazing technology which allows developers to build and deploy scalable web applications. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application. Using our dockers will save you a lot of time and effort, but you also benefit from existing best practices and don’t have to reinvent the wheel. We ourselves tried to create the least now code possible, using the best standards and open-source software, and with security-by-default because we are running Bitcoin exchange applications that are an obvious high-value target for attackers.
We spent time to develop our own techniques and configurations for ourselves, embedding our philosophies. If you plan on using Bitcoin dockers, we encourage you to have a look at the work we have done so that you can better allocate your time and ressources.
We hope that by creating docker containers of useful and popular Bitcoin open-source software projects, we will make it easier for developers and project managers to build applications on top of Bitcoin. If you need help or have requests don’t hesitate to reach out using the contribution guidelines below.
We will be continuously adding more Bitcoin Dockers, and maintaining and updating these images. Don’t hesitate to contact us if we haven’t yet done the updates that you need.
Contributions are welcome! We hope you find this useful and we look forward to your feedback, questions and comments (on Github).
Features and philosophy
- Lightweight alpine-based docker containers that were designed to run on small devices with some optimized specifically for Rapsberry Pi.
- Using the least new code possible and re-using existing OS built-in and well-known and review open-source software projects.
- Using container OS as running platform instead of language-based interpreter.
- Security by default: Encrypting everything through Docker Encrypted Overlay Network
- Distributing everything through Docker Swarm to maximize scalability
- Exposing nothing outside the overlay network.
List of existing Dockerfiles
We’re starting out with the software we are using right now. As soon as we have more time we will be adding more.
- HD address derivation (segwit, bech32, etc.): a command-line too to derive bitcoin addresses using master public keys. This is useful for generating Bitcoin receiving addresses.
- Pycoin: a crypto-utility useful for deriving Bitcoin addresses in Python.
- Bitcoin Core x86_64: the Bitcoin reference implementation (full node) of Bitcoin from Bitcoin Core
- Bitcoin Core for Raspberry Pi: the Bitcoin reference implementation (full node) of Bitcoin from Bitcoin Core optmized for running on a Raspberry Pi device
- C-Lightning: one of the major Lightning Network implementations optmized for running on a Raspberry Pi device
- LND Lighnting Network Node one of the major Lightning Network implementations optmized for running on a Raspberry Pi device
- OpenTimestamp Server: a network calendar and aggregation utility service for scalable timestamping of hashed data using the Bitcoin blockchain as a notary, from Open Timestamps
- OpenTimestamp Client: software to communicate with OTS server and Bitcoin Core to generate and verify timestamps compliant with the Open Timestamps protocol
Contributing
We are definitely looking for contributions! Get inspired by the existing work. Don’t be afraid to test, explore, and do pull-requests. We are all learning this as we go along. Don’t just copy-paste: try to understand what you are doing. Ask questions and provide feedback!
If you are running our dockers in your applications you can send us emails at contact@satoshiportal.com for private assistance but making an issue on or pull request on Github is the fastest and most efficient way to reach us.
Wishlist
If you want us to add a docker, please create an issue this way:
- Paste the source code of the repository you want us to add
- Tell us why you think this is useful and/or how you (or you think someone else) may want to use it. This will help us prioritize and think of the actual usage.
- Put the label “wishlist” on the issue.
Special thanks to Kexkey who did all the work.