Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save richardalg/bb9ca80ee851fb792ffd85b9257b189f to your computer and use it in GitHub Desktop.
Save richardalg/bb9ca80ee851fb792ffd85b9257b189f to your computer and use it in GitHub Desktop.
Running Bisq on Raspberry Pi
--- ./bisq.v12.metadata.20230630 2023-06-30 22:55:18.000000000 +0100
+++ ./verification-metadata.xml.working 2023-09-05 18:34:20.230127731 +0100
@@ -503,14 +503,8 @@
</artifact>
</component>
<component group="com.google.protobuf" name="protoc" version="3.19.1">
- <artifact name="protoc-3.19.1-linux-x86_64.exe">
- <sha256 value="0b1099f537d44ee862b0c3708f32f1d66cfd76e2e2c1437f0c57a98476c20605" origin="Generated by Gradle"/>
- </artifact>
- <artifact name="protoc-3.19.1-osx-x86_64.exe">
- <sha256 value="3431ad66f3bb24cd5196e92a561b0e03bf2906c894bc94d131daaa637094abac" origin="Generated by Gradle"/>
- </artifact>
- <artifact name="protoc-3.19.1-windows-x86_64.exe">
- <sha256 value="06f65a95ee0fb212c45473e0e65cca824e4634b291fe8dd666068edf51e6ca4c" origin="Manually computed by Alva"/>
+ <artifact name="protoc-3.19.1-linux-aarch_64.exe">
+ <sha256 value="e18b554834c8c039223b83f3024afb8af9166666b4b9e54d83dcebfe8e28a929" origin="Generated by Gradle"/>
</artifact>
<artifact name="protoc-3.19.1.pom">
<sha256 value="71a3da76c0c3b7bedb71c1e65f18f47193cc73ef1f27fc26b0a70715794019b7" origin="Generated by Gradle"/>
@@ -548,14 +542,6 @@
<sha256 value="c9fa8fc6f158b05a3d6279371c8a3b42f39fed085899a435bf28675d0f3728a3" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="com.jfoenix" name="jfoenix" version="9.0.10">
- <artifact name="jfoenix-9.0.10.jar">
- <sha256 value="8060235fec5eb49617ec8d81d379e8c945f6cc722d0645e97190045100de2084" origin="Generated by Gradle"/>
- </artifact>
- <artifact name="jfoenix-9.0.10.pom">
- <sha256 value="b24601bd9cc1bad8a9a6ca1586715b488cf2d13ea0fce1acb65dd7c73510176a" origin="Generated by Gradle"/>
- </artifact>
- </component>
<component group="com.natpryce" name="make-it-easy" version="4.0.1">
<artifact name="make-it-easy-4.0.1.jar">
<sha256 value="bf28701b65b88532a8bff65a636d7339d6c5db95b2b502799195a15c24fff45b" origin="Generated by Gradle"/>
@@ -698,14 +684,8 @@
</artifact>
</component>
<component group="io.grpc" name="protoc-gen-grpc-java" version="1.42.1">
- <artifact name="protoc-gen-grpc-java-1.42.1-linux-x86_64.exe">
- <sha256 value="5596b69eb69ed508bc69307f14340be702bdee2ff0ed33c1cafde02aefc9faaf" origin="Generated by Gradle"/>
- </artifact>
- <artifact name="protoc-gen-grpc-java-1.42.1-osx-x86_64.exe">
- <sha256 value="f343841e08c9cbffdda92278f01f4ab9c2afb91b6125047e4c8d0aaf59736764" origin="Generated by Gradle"/>
- </artifact>
- <artifact name="protoc-gen-grpc-java-1.42.1-windows-x86_64.exe">
- <sha256 value="cf8a24fd65e2e243aed74f79589d9b0194fd1f7a70063fd523cc0baeb44532a9" origin="Manually computed by Alva"/>
+ <artifact name="protoc-gen-grpc-java-1.42.1-linux-aarch_64.exe">
+ <sha256 value="9da908610c3006b9a8d27d790a93ad961fb881dda3335b4b4a3810425eff913b" origin="Generated by Gradle"/>
</artifact>
<artifact name="protoc-gen-grpc-java-1.42.1.pom">
<sha256 value="9856d0a3e07df312825e698082b6ec6401cd15814ca74092ae58084f4925e784" origin="Generated by Gradle"/>
@@ -1618,74 +1598,62 @@
<sha256 value="0859ba0d5cfeefb13964e5862c036faa48a0bccff4932638fb13fe3445df33f7" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="org.openjfx" name="javafx" version="16">
- <artifact name="javafx-16.pom">
- <sha256 value="18d9784212d04475bfe4a5f4038e0fc78146f9a721eb6b9a52955d3b4b20d3ca" origin="Generated by Gradle"/>
+ <component group="org.openjfx" name="javafx" version="17.0.1">
+ <artifact name="javafx-17.0.1.pom">
+ <sha256 value="4360be61425322ead03681349d99216b5203342a0a07f7a1c486316926661857" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="org.openjfx" name="javafx-base" version="16">
- <artifact name="javafx-base-16-linux.jar">
- <sha256 value="b825e220d685ecbd77e76f2cd52793132e6c9a10e23ee3361673cb29033413c0" origin="Generated by Gradle"/>
+ <component group="org.openjfx" name="javafx-base" version="17.0.1">
+ <artifact name="javafx-base-17.0.1-linux-aarch64.jar">
+ <sha256 value="248d7fa222365d5843a77424c2d0af2d3a660a40995045a53ae151c55710e55d" origin="Generated by Gradle"/>
</artifact>
- <artifact name="javafx-base-16-mac.jar">
- <sha256 value="8cb4a023706d392d0a733aaee41be839e8418448ab0090a8115a9b909d595c77" origin="Generated by Gradle"/>
+ <artifact name="javafx-base-17.0.1-linux.jar">
+ <sha256 value="01d1b7fd8b84e14ad12b54abfcbc41fa8d223757a63bf988b4a33dad1060616e" origin="Generated by Gradle"/>
</artifact>
- <artifact name="javafx-base-16-win.jar">
- <sha256 value="23abcdffb6f92d8b37531080682034d01c177f1229118a2f7646331c51c6ed63" origin="Manually computed by Alva"/>
+ <artifact name="javafx-base-17.0.1.jar">
+ <sha256 value="045700bcabd5441a50964944f38babbee8fc2e8159179b8cb5e64d18274e3853" origin="Generated by Gradle"/>
</artifact>
- <artifact name="javafx-base-16.jar">
- <sha256 value="036955291b3633b6e11106df315f7a561218d31dcb4280078fe4d2414925f557" origin="Generated by Gradle"/>
- </artifact>
- <artifact name="javafx-base-16.pom">
- <sha256 value="09fe0f2eda8b6f3d4c55b28e32b6b7b2782847add96a686d3048753baa781901" origin="Generated by Gradle"/>
+ <artifact name="javafx-base-17.0.1.pom">
+ <sha256 value="0ffb7659dc3aaa7043baa70566da558736614587d41caa0384fad59d7228b30c" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="org.openjfx" name="javafx-controls" version="16">
- <artifact name="javafx-controls-16-linux.jar">
- <sha256 value="fd0aba38a0dde9836845c6d671501f4c30e6cff6f2d72748f75742dbcfc74df9" origin="Generated by Gradle"/>
- </artifact>
- <artifact name="javafx-controls-16-mac.jar">
- <sha256 value="4add6fdf120ab9c784dc6e700c158d411d9371aaba7bbb61ad9f9d016f2cce44" origin="Generated by Gradle"/>
+ <component group="org.openjfx" name="javafx-controls" version="17.0.1">
+ <artifact name="javafx-controls-17.0.1-linux-aarch64.jar">
+ <sha256 value="a27e140ebc3b49289379e54d2d0eb76e42da56645547663f827ed6378ee7f733" origin="Generated by Gradle"/>
</artifact>
- <artifact name="javafx-controls-16-win.jar">
- <sha256 value="a7f6e4757163c38a5e6cf26b426e9daf788ad1b57513111d362b3bbbc298d13b" origin="Manually computed by Alva"/>
+ <artifact name="javafx-controls-17.0.1-linux.jar">
+ <sha256 value="b72463867e5098f8df4a0e4c833331ebfe1553ce37a347a33342343cb028da06" origin="Generated by Gradle"/>
</artifact>
- <artifact name="javafx-controls-16.jar">
- <sha256 value="dfdbe63f9717b2cd84c9fd34b28a8ddffdbe25cc1e4c2ff9f171f07ca725e0f4" origin="Generated by Gradle"/>
+ <artifact name="javafx-controls-17.0.1.jar">
+ <sha256 value="51d698cac8627e221152b4c421900f73f4af5abcd517008e695e43e22c40ec33" origin="Generated by Gradle"/>
</artifact>
- <artifact name="javafx-controls-16.pom">
- <sha256 value="1769aa2547256cfe316387d78375056587283b63f0614fa6e9b59231ef90edd0" origin="Generated by Gradle"/>
+ <artifact name="javafx-controls-17.0.1.pom">
+ <sha256 value="e0542cc8528fe825402c480da2a7e149401bdb3b943849f4a1f46939ff57bdd9" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="org.openjfx" name="javafx-fxml" version="16">
- <artifact name="javafx-fxml-16-linux.jar">
- <sha256 value="65249a5a47357283f21c5fa85b2e91255f7e5b0b86a2ec3dd2cc220541d7ae0b" origin="Generated by Gradle"/>
+ <component group="org.openjfx" name="javafx-fxml" version="17.0.1">
+ <artifact name="javafx-fxml-17.0.1-linux-aarch64.jar">
+ <sha256 value="0d00d7a40b93ca68b2063f450f131cbb9e6a7fe3b98318304c65056f66ab872b" origin="Generated by Gradle"/>
</artifact>
- <artifact name="javafx-fxml-16-mac.jar">
- <sha256 value="b722e590930180ff7c43d34281202251e1fe8d1f81b16098cda78600780b7f46" origin="Generated by Gradle"/>
+ <artifact name="javafx-fxml-17.0.1-linux.jar">
+ <sha256 value="6b64a738afbb5acd100ca4af2f91561525fe812fe4dd39299c52a51af33d1090" origin="Generated by Gradle"/>
</artifact>
- <artifact name="javafx-fxml-16-win.jar">
- <sha256 value="e8313ffb783c26acbbc1267448bbfdf2f05126e5845a06c6f29a43db7483606d" origin="Manually computed by Alva"/>
- </artifact>
- <artifact name="javafx-fxml-16.pom">
- <sha256 value="7b3b1a717f5d3a67f1dadcc880de3677a25a5d4e8004b75c61cec8b044b013cd" origin="Generated by Gradle"/>
+ <artifact name="javafx-fxml-17.0.1.pom">
+ <sha256 value="3c9ed8df3409c3ba570cd0879c31eb560bac3fddb9cd191921af0f3a85fa769b" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="org.openjfx" name="javafx-graphics" version="16">
- <artifact name="javafx-graphics-16-linux.jar">
- <sha256 value="a2f5e1ea5aeb3ae57e63a1c853a4edf1e38b6f2fe76997ab864ad8b3c54bed53" origin="Generated by Gradle"/>
- </artifact>
- <artifact name="javafx-graphics-16-mac.jar">
- <sha256 value="23a67ad877f283039a20dd827f68988c1f952fe4958d039c006762883f1f04ab" origin="Generated by Gradle"/>
+ <component group="org.openjfx" name="javafx-graphics" version="17.0.1">
+ <artifact name="javafx-graphics-17.0.1-linux-aarch64.jar">
+ <sha256 value="816b30d6ced805c18355fb8437903df8e7e6d971e62924ef14c31651933ed24b" origin="Generated by Gradle"/>
</artifact>
- <artifact name="javafx-graphics-16-win.jar">
- <sha256 value="78124668c64db443cf3e105b9c2f6d7061e7c72ad5ad2de63a13adc46ef2ca8c" origin="Manually computed by Alva"/>
+ <artifact name="javafx-graphics-17.0.1-linux.jar">
+ <sha256 value="36b5f99ede138182c08fdff649d68dcbe7681e0cb61ef4bc8367fea8a0118e35" origin="Generated by Gradle"/>
</artifact>
- <artifact name="javafx-graphics-16.jar">
- <sha256 value="77533b2922a853a3e1350c8e6650f6cf746000d20efef69119c6324086883b95" origin="Generated by Gradle"/>
+ <artifact name="javafx-graphics-17.0.1.jar">
+ <sha256 value="53d60cef64ab6a1549da4d0239c009f8ef8084b62ecd18c3bda782b4d6520a8f" origin="Generated by Gradle"/>
</artifact>
- <artifact name="javafx-graphics-16.pom">
- <sha256 value="b8fb99688eccae62be724bd72b34dfff1f8e1cddbe44649f5ef9a082e520c47e" origin="Generated by Gradle"/>
+ <artifact name="javafx-graphics-17.0.1.pom">
+ <sha256 value="5b1ed9d6a7dd5dd20103a4a7fd4c52b462c175c44658eb5b8d7fd5bd92c85231" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.openjfx" name="javafx-plugin" version="0.0.10">
@@ -1696,6 +1664,14 @@
<sha256 value="b3d28522fe9423202d79d1cf87c4afa18ebdd44ea2e9a9dbcf5faf289d65318b" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="org.openjfx" name="javafx-plugin" version="0.0.11">
+ <artifact name="javafx-plugin-0.0.11.jar">
+ <sha256 value="ba87dcbdb74c6e3aa954f621ff5044cfb062a772c3407f39cca7830618c7bef6" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="javafx-plugin-0.0.11.pom">
+ <sha256 value="51f70854b5018be5cfbf13b97d9d3fb207dbe8e52466c2f9d5a91c44b8ff69fa" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="org.opentest4j" name="opentest4j" version="1.2.0">
<artifact name="opentest4j-1.2.0.jar">
<sha256 value="58812de60898d976fb81ef3b62da05c6604c18fd4a249f5044282479fc286af2" origin="Generated by Gradle"/>
@@ -1757,6 +1733,14 @@
<sha256 value="6669bd6674aa9e52a2a97344ab3411b31295b2e64c7881e27c2ed6beb66922c2" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="org.rationalityfrontline.workaround" name="jfoenix" version="17.0.1">
+ <artifact name="jfoenix-17.0.1.jar">
+ <sha256 value="30cabdf875998d0b107e41b051c867cc275003f326c1795f0256f9a900a6d872" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="jfoenix-17.0.1.module">
+ <sha256 value="ad7d70774de3c6866866ae7640a431a9308da32eb347a8cd8246842bedd6658f" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="org.slf4j" name="slf4j-api" version="1.7.30">
<artifact name="slf4j-api-1.7.30.jar">
<sha256 value="cdba07964d1bb40a0761485c6b1e8c2f8fd9eb1d19c53928ac0d7f9510105c57" origin="Generated by Gradle"/>
--- ./bisq.v12.gbuild.20230630 2023-06-30 22:55:18.000000000 +0100
+++ ./build.gradle.working 2023-09-07 11:43:51.420549887 +0100
@@ -3,12 +3,13 @@
mavenCentral()
maven { url "https://jitpack.io" }
maven { url "https://plugins.gradle.org/m2/" }
+ mavenLocal()
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.17'
classpath 'com.google.gradle:osdetector-gradle-plugin:1.6.0'
classpath 'com.github.jengelman.gradle.plugins:shadow:5.2.0'
- classpath 'org.openjfx:javafx-plugin:0.0.10'
+ classpath 'org.openjfx:javafx-plugin:0.0.11'
}
}
@@ -23,15 +24,28 @@
}
configure(subprojects) {
+ apply plugin: 'java'
apply plugin: 'com.google.osdetector'
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
+
ext { // in alphabetical order
grpcVersion = '1.42.1'
- javafxVersion = '16'
+ javafxVersion = '17.0.1'
protocVersion = '3.19.1'
os = osdetector.os == 'osx' ? 'mac' : osdetector.os == 'windows' ? 'win' : osdetector.os
}
+
+ repositories {
+ mavenCentral()
+ maven { url 'https://jitpack.io' }
+ }
+
+ tasks.withType(JavaCompile) {
+ options.encoding = 'UTF-8'
+ }
}
@@ -159,6 +173,7 @@
implementation libs.kotlin.stdlib.jdk8
implementation libs.jetbrains.annotations
implementation libs.slf4j.api
+ testImplementation libs.hamcrest
runtimeOnly(libs.grpc.netty.shaded) {
exclude(module: 'animal-sniffer-annotations')
exclude(module: 'guava')
@@ -210,6 +225,7 @@
testImplementation libs.logback.classic
testImplementation libs.logback.core
testImplementation libs.apache.commons.lang3
+ testImplementation libs.mockito
}
}
@@ -277,6 +293,8 @@
testAnnotationProcessor libs.lombok
testCompileOnly libs.lombok
testImplementation libs.natpryce.make.it.easy
+ testImplementation libs.hamcrest
+ testImplementation libs.mockito
}
test {
@@ -326,7 +344,8 @@
implementation libs.google.guava
implementation libs.protobuf.java
implementation libs.jcsv
- implementation libs.jfoenix
+ // implementation libs.jfoenix // until sshahine/JFoenix#1187
+ implementation("org.rationalityfrontline.workaround:jfoenix:17.0.1") // is fixed
implementation libs.commons.io
implementation libs.fontawesomefx
implementation libs.fontawesomefx.commons
@@ -352,6 +371,7 @@
testAnnotationProcessor libs.lombok
testCompileOnly libs.lombok
testImplementation libs.natpryce.make.it.easy
+ testImplementation libs.mockito
}
test {
@@ -359,7 +379,6 @@
}
}
-
configure(project(':seednode')) {
apply plugin: 'com.github.johnrengelman.shadow'
@@ -404,6 +423,59 @@
}
}
+configure(project(':daemon')) {
+ distTar.enabled = true
+
+ mainClassName = 'bisq.daemon.app.BisqDaemonMain'
+
+ dependencies {
+ implementation project(':proto')
+ implementation project(':common')
+ implementation project(':p2p')
+ implementation project(':core')
+ annotationProcessor libs.lombok
+ compileOnly libs.javax.annotation
+ compileOnly libs.lombok
+ implementation libs.logback.classic
+ implementation libs.logback.core
+ implementation libs.google.gson
+ implementation libs.google.guava
+ implementation libs.protobuf.java
+ implementation libs.apache.commons.lang3
+ implementation libs.jetbrains.annotations
+ implementation libs.slf4j.api
+ implementation(libs.bitcoinj) {
+ exclude(module: 'bcprov-jdk15on')
+ exclude(module: 'guava')
+ exclude(module: 'jsr305')
+ exclude(module: 'okhttp')
+ exclude(module: 'okio')
+ exclude(module: 'protobuf-java')
+ exclude(module: 'slf4j-api')
+ }
+ implementation(libs.google.guice) {
+ exclude(module: 'guava')
+ }
+ implementation(libs.grpc.protobuf) {
+ exclude(module: 'animal-sniffer-annotations')
+ exclude(module: 'guava')
+ }
+ implementation(libs.grpc.stub) {
+ exclude(module: 'animal-sniffer-annotations')
+ exclude(module: 'guava')
+ }
+ runtimeOnly(libs.grpc.netty.shaded) {
+ exclude(module: 'animal-sniffer-annotations')
+ exclude(module: 'guava')
+ }
+ testAnnotationProcessor libs.lombok
+ testCompileOnly libs.lombok
+ testImplementation libs.junit.jupiter.api
+ testImplementation libs.junit.jupiter.params
+ testRuntimeOnly(libs.junit.jupiter.engine)
+ }
+}
+
configure(project(':apitest')) {
mainClassName = 'bisq.apitest.ApiTestMain'
@@ -436,6 +508,7 @@
}
test {
+ useJUnitPlatform()
outputs.upToDateWhen { false } // Don't use previously cached test outputs.
testLogging {
showStackTraces = true // Show full stack traces in the console.
@@ -502,13 +575,9 @@
}
testAnnotationProcessor libs.lombok
testCompileOnly libs.lombok
+ testImplementation libs.junit.jupiter.api
+ testImplementation libs.junit.jupiter.params
testRuntimeOnly libs.javax.annotation
- }
-}
-
-if (hasProperty('buildScan')) {
- buildScan {
- termsOfServiceUrl = 'https://gradle.com/terms-of-service'
- termsOfServiceAgree = 'yes'
+ testRuntimeOnly(libs.junit.jupiter.engine)
}
}

Running Bisq on Raspberry Pi

Working as of 2023-01-13

My setup:

Raspberry Pi 4 Model B Rev 1.5 2GB Raspberry Pi OS 64-bit with Desktop Release Date: September 22nd 2022

Bisq 1.9.9 built from source

Install Java

Build Bisq from source

  • git clone https://github.com/tmakerman/bisq.git
  • cd bisq
  • git checkout bisq-on-rpi-v1.9.9
  • ./gradlew build
    • some artifact dependency verifications fail, this can be ignored
    • build took ~ 26 min on my RPi 4 4GB
    • Bisq is ready to run, however when it initializes it will try to connect to Bitcoin network over Tor using its bundled Tor which fails and it will eventually time out. Instead setup a Tor hidden service and configure Bisq to connect through that…

Setup Tor

deb [arch=arm64] http://deb.torproject.org/torproject.org bullseye main
deb-src [arch=arm64] http://deb.torproject.org/torproject.org bullseye main
  • curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo apt-key add -
  • sudo apt-get update
  • sudo apt-get install tor deb.torproject.org-keyring
  • Edit /etc/tor/torrc adding the following lines to bottom of file:
SOCKSPort 9050
Log notice stdout
ControlPort 9051
CookieAuthentication 1
CookieAuthFileGroupReadable 1
HiddenServiceDir /var/lib/tor/bisq/
HiddenServicePort 8080 127.0.0.1:8080
  • Determine Tor group:
  • grep User /usr/share/tor/tor-service-defaults-torrc
  • sudo usermod -a -G debian-tor satoshi
    • replace satoshi with your username
  • sudo shutdown -r now
  • Wait for system to come back up
  • sudo systemctl enable tor
  • sudo systemctl start tor

Running Bisq

  • from RPi Desktop environment terminal window
  • cd bisq
  • ./bisq-desktop --torControlPort 9051 --torControlCookieFile=/var/run/tor/control.authcookie --torControlUseSafeCookieAuth
@Javihache
Copy link

Javihache commented Jan 6, 2024

Unfortunately when starting Bisq I get:
[JavaFX Application Thread] ERROR bisq.core.app.WalletAppSetup: com.google.protobuf.InvalidProtocolBufferException$InvalidWireTypeException: Protocol message tag had invalid wire type.

I am just gonna get some amd64 mini pc to run bisq in my home lab and be done with this... I find it curious that although the Raspberry Pi is the choice for so many projects related to Bitcoin, Bisq devs do not create arm64 builds for Bisq.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment