Bitcoin Forum
September 17, 2024, 05:17:44 AM *
News: Latest Bitcoin Core release: 27.1 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: docker images of most (historical) bitcoin core versions back to v0.3.3 in 2010  (Read 79 times)
mocacinno (OP)
Legendary
*
Offline Offline

Activity: 3514
Merit: 5105


https://merel.mobi => buy facemasks with BTC/LTC


View Profile WWW
September 13, 2024, 06:21:10 AM
Last edit: September 13, 2024, 12:17:36 PM by mocacinno
Merited by ABCbits (9), vapourminer (5), NeuroticFish (5)
 #1

A while ago, i built a docker image for those wanting to run bitcoin core v27.1 with the testnet4 patch (which now has been merged into v28.0rc1). For fun, i also compiled the last couple of "actual" releases.
I basically got obsessed with how far back i could go, so i got to the v26.x, then v25.x... And a couple of days later, i was knee-deep into v0.9.x,...

Then, i realised a lot of people actually asked questions about old versions... Either because they had an old wallet they needed to manipulate, because of curiosity, because they wanted to learn, because they wanted to see the size of those binary's, because they wanted to know when a certain feature was implemented (or deprecated).... So i started pushing the docker images to dockerhub.

At this moment, i'm up to version v0.3.3 (released in June 25, 2010).
For transparency, i added all Dockerfiles, bitcoin.conf's, patches, entrypoint.sh's in a git repo. Each branch is a version... So if you checkout the v26.0 branch, you'll see the dockerfile to build bitcoin core v26.0. If you pull the docker image with tag v26.0 from either dockerhub or ghcr.io, you'll get the docker image built by using the Dockerfile you can get from my git repo in branch v26.0.
Around v21, the version scheme was altered... Pre v22.x versions, there was an extra "zero"... So instead of v21.0, they version scheme actually indicated this version as being v0.21.0. For simplicity's sake, i have omitted this... v0.21.0 was branched and tagged as v21.0 (same for all earlier versions aswell)

I'm waaaaay behind on documentation... It'll get updated once i'm completely "finished"... Altough the v0.3.x is giving my quite a lot of problems... This historical sourcecode on github is incomplete, and i basically feel like a jurassic park scientist puzzling files from different sources together to make a working end result Smiley

Now, for the url's:

Dockerfiles
You can get the actual Dockerfiles (so you can build the images yourself) from my git repo:
https://github.com/mocacinno/bitcoin_core_docker/
the repo has loads of branches, each branch contains the Dockerfiles for one specific version...
You can visit the branches directly like this: https://github.com/mocacinno/bitcoin_core_docker/tree/v3.6  => for example, the Dockerfile to build v3.6 (v0.3.6 if you want to be completely correct).

Docker images
https://hub.docker.com/r/mocacinno/btc_core/tags
or
https://github.com/mocacinno/bitcoin_core_docker/pkgs/container/mocacinno%2Fbitcoin_core_docker/versions?filters%5Bversion_type%5D=tagged

the images hosted on github are built using a github action (which is also described right into the branches!!!), each time i push changes, a new image gets built and uploaded. You should be able to verify the process yourself if you want to... Just fork my repo and push any change, and the image should build in your very own namespace!!!

Help me
for now, a lot of work is quick and dirty... Basically, i was working backwards from the most recent version (which is very easy to compile) all the way back to 2011 (and digging deeper as we speak). Each time a new problem popped up, i tought about the quickest way to fix the problem at hand... Sometimes it was by actually pulling the "good" dependency into my build process, or by downgrading gcc, but sometimes it was faster just to write a little patch, or quickly modify some lines in the sourcecode with sed... This way, i postponed "problems" untill later on. In time, i might go trough all the dockerfiles again, and try to fix the problems in the "right" way instead of using sed and patches... If you want to help in this process, just fork my repo, fix a certain branch and create a pull request Smiley.

In time, i might seek some volunteers that i trust and give them access to my github project, or maybe even my dockerhub project, so they can help clean things up (or help with the documentation). For now, pull requests will do tough...

Help you + disclaimer
More recent versions should be OK to run (even in production), i compiled the actual sourcecode from bitcoin's github repo and put it in a very minimal container, so there should be hardly any vulnerability's. If you're not that technically inclined, it might even be safer to run the image i made vs trying to compile core yourself and run it on a full OS. This being said: if you're actually going to use this node for production (or to actually use the wallet functionality), i implore you to read the Dockerfile, sign off on what i did and build the image yourself. I'm a strong believer in the "don't trust, verify" motto!
If you run the image in production, don't forget to actually map the /root/.bitcoin container folder to a physical folder on your filesystem so you get a persistent setup!!!

Don't run older versions in production tough... I've actually played around with this stuff, and since v0.5.0, it looks like bitcoind actually starts syncing (early) blocks... However, it's a very, very, very bad idear to actually run these old versions!!! if you want to play around with them, i suggest you start the docker container with a "--network none" flag, so they are isolated. Old versions have vulnerability's... Using them, especially in production or by actually funding the wallet will probably end up with loss of your funds!!!

I will not take any responsability for loss of funds, even with new versions!!! Also, i do not commit myself to giving support... I compiled these versions, i did not write the sourcecode... I'm not a specialist on the features included (or removed from) these versions.... If you have a question, feel free to ask. If i know the answer, i'll answer you (but if i don't know the answer, you're on your own)

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
mocacinno (OP)
Legendary
*
Offline Offline

Activity: 3514
Merit: 5105


https://merel.mobi => buy facemasks with BTC/LTC


View Profile WWW
September 13, 2024, 06:21:26 AM
Last edit: September 13, 2024, 12:17:02 PM by mocacinno
 #2

Currently, i have worked back in a "clean" way up to v0.3.4 (or v0.3.5, versioning wasn't really consistent in the olden days).
v0.3.4 is the oldest version that can be compiled without wxbase and wxwidgets. Earlyer versions had this nasty quirck: even if you wanted to compile bitcoind without a gui, you still needed to compile wxwidgets on your system, it needed to be availabe or bitcoind wouldn't build (eventough bitcoind without gui has no use for wx)...

I have actually looked at the diff between the commit made to release v0.3.4 and one commit before this commit. I have made a patch including all changes needed to compile bitcoind without wxwidgets. v0.3.3 was patched with said patch, and afterwards it compiled just fine.

Please be advised that v0.3.3 was heavily patched...

If anybody wants to spend a couple of "fun" days, feel free to find out how to get a 14 year old wxwidgets sourcecode compiled on a modern OS... I don't want to invest the time and energy... It needs so many prereqs, many of whom are very hard to come by... They'll need to be compiled manually, and these prereqs potentially have prereqs on their own, so it's well possible you'll end up compiling a complete library of dozens lib's from ~2010 just to get this working... For now, i'll pass Smiley
I WILL however try how far i can go back using the patch i just made... If the patch no longer works, it might be possible to create a new patch by hand, but as it stands, the current patch is over 50 kb in size, and i really don't want to create one by hand...

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
mocacinno (OP)
Legendary
*
Offline Offline

Activity: 3514
Merit: 5105


https://merel.mobi => buy facemasks with BTC/LTC


View Profile WWW
September 13, 2024, 06:21:38 AM
 #3

reserved for future collaborators

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
mocacinno (OP)
Legendary
*
Offline Offline

Activity: 3514
Merit: 5105


https://merel.mobi => buy facemasks with BTC/LTC


View Profile WWW
September 13, 2024, 06:45:25 AM
 #4

reserved for the most common usecase scenario's

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
ABCbits
Legendary
*
Offline Offline

Activity: 2996
Merit: 7875


Crypto Swap Exchange


View Profile
September 14, 2024, 09:15:56 AM
Merited by vapourminer (1)
 #5

Don't run older versions in production tough... I've actually played around with this stuff, and since v0.5.0, it looks like bitcoind actually starts syncing (early) blocks... However, it's a very, very, very bad idear to actually run these old versions!!!

It's worth to mention that version 0.7 and older cannot process block after certain height[1], which means you can't finish IBD.

If anybody wants to spend a couple of "fun" days, feel free to find out how to get a 14 year old wxwidgets sourcecode compiled on a modern OS... I don't want to invest the time and energy... It needs so many prereqs, many of whom are very hard to come by... They'll need to be compiled manually, and these prereqs potentially have prereqs on their own, so it's well possible you'll end up compiling a complete library of dozens lib's from ~2010 just to get this working... For now, i'll pass Smiley

It's not my idea of "fun" either, but this is when people should consider using older version Debian or Ubuntu. Although i expect it's still tricky to find repository/website which host legacy package.

[1] https://blog.lopp.net/running-bitcoin-core-v0-7-and-earlier/

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
mocacinno (OP)
Legendary
*
Offline Offline

Activity: 3514
Merit: 5105


https://merel.mobi => buy facemasks with BTC/LTC


View Profile WWW
September 16, 2024, 05:18:40 AM
 #6

--snip--

It's worth to mention that version 0.7 and older cannot process block after certain height[1], which means you can't finish IBD.

Thanks for the notice... I honestly did not wait untill IBD finished. versions pre 0.5.x simply don't start syncing (eventough the link you provided talks about v0.3 being able to verify at least ~124.000 blocks) , but it's possible the versions simply don't find any peers or something? I don't really remember Smiley. Version 0.5.x does at least start to sync without having to manually define any nodes to connect to.

--snip--

It's not my idea of "fun" either, but this is when people should consider using older version Debian or Ubuntu. Although i expect it's still tricky to find repository/website which host legacy package.

[1] https://blog.lopp.net/running-bitcoin-core-v0-7-and-earlier/

True. The problem tough is that such old ubuntu (or debian) base images contain a ton of vulnerability's... I basically got obsessed with building these old versions into a lean, up-to-date basic container, so the user wouldn't have to worry about any potential vulnerability's in system library's or binary's (however, the bitcoind binary will contain vulnerability's itself, and the number of those vulnerability's will rise the older the bitcoin core version)

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Mashufad
Newbie
*
Online Online

Activity: 9
Merit: 0


View Profile
September 16, 2024, 05:23:22 AM
 #7

I advise against running older versions. Stick to the latest Bitcoin Core for security, performance, and peace of mind to protect your assets.
mocacinno (OP)
Legendary
*
Offline Offline

Activity: 3514
Merit: 5105


https://merel.mobi => buy facemasks with BTC/LTC


View Profile WWW
September 16, 2024, 05:55:50 AM
 #8

I advise against running older versions. Stick to the latest Bitcoin Core for security, performance, and peace of mind to protect your assets.
As you can see in the original post, i did already state this pretty clearly:

--snip--
Don't run older versions in production tough... I've actually played around with this stuff, and since v0.5.0, it looks like bitcoind actually starts syncing (early) blocks... However, it's a very, very, very bad idear to actually run these old versions!!! if you want to play around with them, i suggest you start the docker container with a "--network none" flag, so they are isolated. Old versions have vulnerability's... Using them, especially in production or by actually funding the wallet will probably end up with loss of your funds!!!
--snip--


These older container images are here for stuff like very old wallet file manipulation, learning, seeing when certain features were implemented or removed, curiosity, settling disucssions,... they're not here for people to run a full node using bitcoin core v0.19.0 (unless it's on an isolated machine and without using the actual wallet functionality... This usecase might be OK... Eventough the actual usecase for this would probably still be learning about stuff like soft forks or something). I hope this was clear to everybody from the get-go (or should i put some more emphasis on this in my opening post?)

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!