Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ RUN \
cp index.html vnc.html && \
mkdir Downloads

FROM ghcr.io/linuxserver/baseimage-kasmvnc:debianbookworm-2db38f7a-ls103 AS buildstage
FROM ghcr.io/linuxserver/baseimage-kasmvnc:debianbookworm-7784e3cf-ls114 AS buildstage

# these are specified in Makefile
ARG ARCH
Expand All @@ -47,6 +47,9 @@ ARG YQ_SHA
RUN \
echo "**** install packages ****" && \
apt-get update && \
# remove dunst, we use xfce4-notifyd instead
DEBIAN_FRONTEND=noninteractive \
apt-get remove -y dunst && \
DEBIAN_FRONTEND=noninteractive \
apt-get install -y --no-install-recommends \
exo-utils \
Expand All @@ -65,7 +68,6 @@ RUN \
# desktop notifications
xfce4-notifyd \
libnotify-bin \
notification-daemon \
xclip \
# GPU support
xserver-xorg-video-all \
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
WASABI_VERSION := 2.5.1 # version used to construct download filename
WASABI_VERSION_TAG := 2.5.1 # Github tag
WASABI_VERSION := 2.6.0 # version used to construct download filename
WASABI_VERSION_TAG := 2.6.0 # Github tag
WASABI_PGP_SIG := 856348328949861E
# sha256 hashes can be found in https://github.com/mikefarah/yq/releases/download/v4.40.7/checksums-bsd
YQ_VERSION := 4.40.7
Expand Down
44 changes: 34 additions & 10 deletions docker_entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -38,32 +38,56 @@ mkdir -p /config/.config/openbox
cp /defaults/autostart /config/.config/openbox/autostart
chown -R $PUID:$PGID /config/.config/openbox

# Copy default Wasabi files
mkdir -p /config/.walletwasabi/client/
if [ ! -f /config/.walletwasabi/client/Config.json ]; then
echo "No Wasabi config file found, creating default"
mkdir -p /config/.walletwasabi/client/
cp /defaults/.walletwasabi/client/Config.json /config/.walletwasabi/client/Config.json
chown -R $PUID:$PGID /config/.walletwasabi
fi

if [ ! -f /config/.walletwasabi/client/UiConfig.json ]; then
echo "No Wasabi UI config file found, creating default"
cp /defaults/.walletwasabi/client/UiConfig.json /config/.walletwasabi/client/UiConfig.json
fi

chown -R $PUID:$PGID /config/.walletwasabi

# remove UTF8 BOM character, because yq does not like this
sed -i '1s/^\xEF\xBB\xBF//' /config/.walletwasabi/client/UiConfig.json

# Force windowstate to full-screen. We used to do this through the openbox rc.xml config, but this causes graphical glitches in Wasabi.
yq e -i '.WindowState = "FullScreen"' -o=json /config/.walletwasabi/client/UiConfig.json

# Manage Wasabi settings?
if [ $(yq e '.wasabi.managesettings' /root/data/start9/config.yaml) = "true" ]; then
# remove UTF8 BOM character, because yq does not like this
sed -i '1s/^\xEF\xBB\xBF//' /config/.walletwasabi/client/Config.json

# Force enable GPU rendering
yq e -i '.EnableGpu = true' -o=json /config/.walletwasabi/client/Config.json
yq e -i '.EnableGpu = true' -o=json /config/.walletwasabi/client/Config.json

# Update config version so Wasabi will not try to migrate it
yq e -i '.ConfigVersion = 2' -o=json /config/.walletwasabi/client/Config.json

# private bitcoin server
case "$(yq e '.wasabi.server.type' /root/data/start9/config.yaml)" in
"bitcoind")
echo "Configuring Wasabi for private Bitcoin Core node"
echo "Configuring Wasabi for private Bitcoin node"
BITCOIND_IP=$(getent hosts bitcoind.embassy | awk '{print $1}')
yq e -i ".MainNetBitcoinP2pEndPoint = \"$BITCOIND_IP:8333\"" -o=json /config/.walletwasabi/client/Config.json
BITCOIND_USER=$(yq e '.wasabi.server.user' /root/data/start9/config.yaml)
BITCOIND_PASS=$(yq e '.wasabi.server.password' /root/data/start9/config.yaml)
yq e -i "
.UseBitcoinRpc = true |
.MainNetBitcoinRpcEndPoint = \"$BITCOIND_IP:8332\" |
.MainNetBitcoinRpcCredentialString = \"$BITCOIND_USER:$BITCOIND_PASS\"" -o=json /config/.walletwasabi/client/Config.json
;;
"none")
echo "Configuring Wasabi for public Bitcoin nodes"
# reset it to default (127.0.0.1:8333), an empty string is not allowed
yq e -i '.MainNetBitcoinP2pEndPoint = "127.0.0.1:8333"' -o=json /config/.walletwasabi/client/Config.json
# reset it to default (127.0.0.1:8332), an empty string is not allowed
yq e -i "
.UseBitcoinRpc = false |
.MainNetBitcoinRpcEndPoint = \"127.0.0.1:8332\" |
.MainNetBitcoinRpcCredentialString = \"\"" -o=json /config/.walletwasabi/client/Config.json
;;
*)
echo "Unknown server selected, not configuring Wasabi"
Expand All @@ -87,14 +111,14 @@ if [ $(yq e '.wasabi.managesettings' /root/data/start9/config.yaml) = "true" ];
RPC_ADDRESS=${RPC_TOR_ADDRESS%".onion"}.local
RPC_USER=$(yq e '.wasabi.rpc.username' /root/data/start9/config.yaml)
RPC_PASS=$(yq e '.wasabi.rpc.password' /root/data/start9/config.yaml)

yq e -i "
.JsonRpcServerEnabled = true |
.JsonRpcUser = \"$RPC_USER\" |
.JsonRpcPassword = \"$RPC_PASS\" |
.JsonRpcServerPrefixes = [\"http://+:37128/\"]" -o=json /config/.walletwasabi/client/Config.json
cat << EOF >>/root/data/start9/stats.yaml

cat <<EOF >>/root/data/start9/stats.yaml
"Tor RPC Url":
type: string
value: "http://$RPC_TOR_ADDRESS"
Expand Down
2 changes: 1 addition & 1 deletion instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Now your Wasabi on Webtop is ready to be visited in your browser!

3. Webtop utilizes HTTPS Basic Authentication. When users connect for the first time, their browser will automatically prompt them to log in. Subsequent connections will not require re-entering login credentials, unless the credentials are no longer valid.

4. This version of Webtop is Debian Linux based. A default configuration for Wasabi is installed if none exist in your user (/config) directory. By default it connects to the installed `bitcoin core` instance.
4. This version of Webtop is Debian Linux based. A default configuration for Wasabi is installed if none exist in your user (/config) directory. By default it connects to the installed `bitcoin` instance.

5. Wasabi on Webtop does not support camera's or usb devices. Which is something to remember when setting up wallets.

Expand Down
11 changes: 6 additions & 5 deletions manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
id: wasabi-webtop
title: "Wasabi"
version: 2.5.1
version: 2.6.0
release-notes: |
* Update to Wasabi 2.5.1 - See [full changelog](https://github.com/WalletWasabi/WalletWasabi/releases/tag/v2.5.1)
* Update to Wasabi 2.6.0 - See [full changelog](https://github.com/WalletWasabi/WalletWasabi/releases/tag/v2.6.0)
* NEW! Connect to your StartOS Bitcoin node
license: MIT
wrapper-repo: "https://github.com/remcoros/wasabi-webtop-startos"
upstream-repo: "https://github.com/WalletWasabi/WalletWasabi"
Expand Down Expand Up @@ -83,11 +84,11 @@ interfaces:
- json-rpc
dependencies:
bitcoind:
version: ">=0.21.1.2 <29.0.0"
version: ">=0.21.1.2 <30.0.0"
requirement:
type: "opt-out"
how: "Select 'None' as the server"
description: Used to connect Wasabi to a private Bitcoin Core server
how: "Select 'None'"
description: Used to connect Wasabi to a private Bitcoin node
backup:
create:
type: docker
Expand Down
67 changes: 35 additions & 32 deletions root/defaults/.walletwasabi/client/Config.json
Original file line number Diff line number Diff line change
@@ -1,33 +1,36 @@
{
"Network": "Main",
"MainNetBackendUri": "https://api.wasabiwallet.io/",
"TestNetBackendUri": "https://api.wasabiwallet.co/",
"RegTestBackendUri": "http://localhost:37127/",
"MainNetCoordinatorUri": "",
"TestNetCoordinatorUri": "",
"RegTestCoordinatorUri": "http://localhost:37128/",
"UseTor": "Enabled",
"TerminateTorOnExit": false,
"TorBridges": [],
"DownloadNewVersion": false,
"StartLocalBitcoinCoreOnStartup": false,
"StopLocalBitcoinCoreOnShutdown": true,
"LocalBitcoinCoreDataDir": "/config/.bitcoin",
"MainNetBitcoinP2pEndPoint": "127.0.0.1:8333",
"TestNetBitcoinP2pEndPoint": "127.0.0.1:48333",
"RegTestBitcoinP2pEndPoint": "127.0.0.1:18444",
"JsonRpcServerEnabled": false,
"JsonRpcUser": "",
"JsonRpcPassword": "",
"JsonRpcServerPrefixes": [
"http://127.0.0.1:37128/",
"http://localhost:37128/"
],
"DustThreshold": "0.00005",
"EnableGpu": true,
"CoordinatorIdentifier": "CoinJoinCoordinatorIdentifier",
"MaxCoordinationFeeRate": 0,
"MaxCoinJoinMiningFeeRate": 150.0,
"AbsoluteMinInputCount": 21,
"ConfigVersion": 1
}
"Network": "Main",
"MainNetBackendUri": "https://api.wasabiwallet.io/",
"TestNetBackendUri": "https://api.wasabiwallet.co/",
"RegTestBackendUri": "http://localhost:37127/",
"MainNetCoordinatorUri": "",
"TestNetCoordinatorUri": "",
"RegTestCoordinatorUri": "http://localhost:37128/",
"UseTor": "Enabled",
"TerminateTorOnExit": false,
"TorBridges": [],
"DownloadNewVersion": false,
"UseBitcoinRpc": true,
"MainNetBitcoinRpcCredentialString": "",
"TestNetBitcoinRpcCredentialString": "",
"RegTestBitcoinRpcCredentialString": "",
"MainNetBitcoinRpcEndPoint": "255.255.255.255:8332",
"TestNetBitcoinRpcEndPoint": "255.255.255.255:48332",
"RegTestBitcoinRpcEndPoint": "255.255.255.255:18443",
"JsonRpcServerEnabled": false,
"JsonRpcUser": "",
"JsonRpcPassword": "",
"JsonRpcServerPrefixes": [
"http://127.0.0.1:37128/",
"http://localhost:37128/"
],
"DustThreshold": "0.00005",
"EnableGpu": true,
"CoordinatorIdentifier": "CoinJoinCoordinatorIdentifier",
"ExchangeRateProvider": "MempoolSpace",
"FeeRateEstimationProvider": "MempoolSpace",
"ExternalTransactionBroadcaster": "MempoolSpace",
"MaxCoinJoinMiningFeeRate": 150.0,
"AbsoluteMinInputCount": 21,
"ConfigVersion": 2
}
17 changes: 17 additions & 0 deletions root/defaults/.walletwasabi/client/UiConfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"Oobe": false,
"LastVersionHighlightsDisplayed": "2.3.1",
"WindowState": "FullScreen",
"FeeTarget": 2,
"Autocopy": true,
"AutoPaste": false,
"IsCustomChangeAddress": false,
"PrivacyMode": false,
"DarkModeEnabled": true,
"LastSelectedWallet": "Wallet",
"RunOnSystemStartup": false,
"HideOnClose": false,
"SendAmountConversionReversed": false,
"WindowWidth": 1440,
"WindowHeight": 661
}
3 changes: 2 additions & 1 deletion root/etc/xdg/openbox/rc.xml
Original file line number Diff line number Diff line change
Expand Up @@ -758,7 +758,8 @@
class="Wasabi Wallet"
title="Wasabi Wallet"
type="normal">
<fullscreen>yes</fullscreen>
<!-- forcing fullscreen here causes graphical glitches in wasabi, we do this in docker_entrypoint/UiConfig.json now -->
<!-- <fullscreen>yes</fullscreen> -->
</application>
<!--
# this is an example with comments through out. use these to make your
Expand Down
36 changes: 29 additions & 7 deletions scripts/procedures/getConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export const [getConfig, setConfigMatcher] = compat.getConfigAndMatcher({
name: "Webtop Title",
description:
"This value will be displayed as the title of your browser tab.",
default: "Start9 Wasabi on Webtop",
default: "Wasabi on StartOS",
pattern: '^[^\\n"]*$',
"pattern-description": "Must not contain newline or quote characters.",
masked: false,
Expand Down Expand Up @@ -41,7 +41,8 @@ export const [getConfig, setConfigMatcher] = compat.getConfigAndMatcher({
reconnect: {
type: "boolean",
name: "Automatically reconnect",
description: "Automatically reconnect when the connection to the desktop is lost or the browser tab has been idle for too long.",
description:
"Automatically reconnect when the connection to the desktop is lost or the browser tab has been idle for too long.",
default: false,
},
wasabi: {
Expand All @@ -57,22 +58,43 @@ export const [getConfig, setConfigMatcher] = compat.getConfigAndMatcher({
},
server: {
type: "union",
name: "Bitcoin Core",
name: "Bitcoin Node",
description:
"<p>The Bitcoin Core node to connect to:</p><ul><li><strong>Bitcoin Core</strong>: Use the Bitcoin Core service installed on your server.</li><li><strong>None</strong>: Use public Bitcoin nodes.</li></ul>",
"<p>The Bitcoin node to connect to:</p><ul><li><strong>Bitcoin Node</strong>: Use the Bitcoin service installed on your server.</li><li><strong>None</strong>: Use public Bitcoin nodes.</li></ul>",
tag: {
id: "type",
name: "Bitcoin Node Type",
"variant-names": {
bitcoind: "Bitcoin Core (recommended)",
bitcoind: "Bitcoin Node (recommended)",
none: "None",
},
description:
"<p>The Bitcoin Core node to connect to:</p><ul><li><strong>Bitcoin Core</strong>: Use the Bitcoin Core service installed on your server.</li><li><strong>None</strong>: Use public Bitcoin nodes.</li></ul>",
"<p>The Bitcoin node to connect to:</p><ul><li><strong>Bitcoin Node</strong>: Use the Bitcoin service installed on your server.</li><li><strong>None</strong>: Use public Bitcoin nodes.</li></ul>",
},
default: "bitcoind",
variants: {
bitcoind: {},
bitcoind: {
user: {
type: "pointer",
name: "RPC Username",
description: "The username for Bitcoin's RPC interface",
subtype: "package",
"package-id": "bitcoind",
target: "config",
multi: false,
selector: "$.rpc.username",
},
password: {
type: "pointer",
name: "RPC Password",
description: "The password for Bitcoin's RPC interface",
subtype: "package",
"package-id": "bitcoind",
target: "config",
multi: false,
selector: "$.rpc.password",
},
},
none: {},
},
},
Expand Down
63 changes: 43 additions & 20 deletions scripts/procedures/migrations.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,46 @@
import { compat, types as T } from "../deps.ts";

export const migration: T.ExpectedExports.migration = compat.migrations
.fromMapping({
"2.2.1.1": {
up: compat.migrations.updateConfig(
(config: any) => {
config["reconnect"] = false;
return config;
},
true,
{ version: "2.2.1.1", type: "up" },
),
down: compat.migrations.updateConfig(
(config: any) => {
delete config["reconnect"];
return config;
},
true,
{ version: "2.2.1.1", type: "down" },
),
export const migration: T.ExpectedExports.migration =
compat.migrations.fromMapping(
{
"2.2.1.1": {
up: compat.migrations.updateConfig(
(config: any) => {
config["reconnect"] = false;
return config;
},
true,
{ version: "2.2.1.1", type: "up" }
),
down: compat.migrations.updateConfig(
(config: any) => {
delete config["reconnect"];
return config;
},
true,
{ version: "2.2.1.1", type: "down" }
),
},
"2.6.0": {
up: compat.migrations.updateConfig(
(config: any) => {
// this migration looks like a no-op, but it makes sure that we have the rpc user/pass pointers to bitcoind
return config;
},
true,
{
version: "2.6.0",
type: "up",
}
),
down: compat.migrations.updateConfig(
(config: any) => {
return config;
},
true,
{ version: "2.6.0", type: "down" }
),
},
},
}, "2.5.1");
"2.6.0"
);