mirror of
https://github.com/RoboSats/robosats-startos.git
synced 2026-01-09 03:19:33 +00:00
Compare commits
41 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6ed4be029a | |||
|
f1e4731cbf
|
|||
| 8d6966233f | |||
|
79eab20760
|
|||
| 1b2ca3f28a | |||
| 12a62f896f | |||
| 0fdee03050 | |||
| d6f1fac86c | |||
|
beba7b49e7
|
|||
| c5d6bda9cb | |||
|
4dc34563f2
|
|||
| b147abd08d | |||
|
f9c5a41c45
|
|||
| 3f1d2fff07 | |||
| 1227f95d29 | |||
|
57404e40ad
|
|||
| a8860d82b7 | |||
| d247820324 | |||
| 884eb2ec3d | |||
| 325a171934 | |||
|
79e5cc8d57
|
|||
| 46449095f3 | |||
| 9b26310671 | |||
| f61aac128f | |||
| 8a3532bdcd | |||
| cd55317960 | |||
| 80a8f6a46b | |||
| b1d403e7b5 | |||
|
e2bd51aee7
|
|||
| 26b5d8af91 | |||
| a6af49c26f | |||
| 2e67f21f23 | |||
| 11bcf2b40e | |||
| bb155f78c0 | |||
| 415289caf4 | |||
| 44676a5f4e | |||
| 5937808858 | |||
| 407dd513c2 | |||
| 5aaf5c60bd | |||
| 087b0b5419 | |||
| a44b3f5036 |
37
.github/workflows/buildService.yml
vendored
Normal file
37
.github/workflows/buildService.yml
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
name: Build Service
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths-ignore: ['*.md']
|
||||
branches: ['main', 'master']
|
||||
push:
|
||||
paths-ignore: ['*.md']
|
||||
branches: ['main', 'master']
|
||||
|
||||
jobs:
|
||||
BuildPackage:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Prepare StartOS SDK
|
||||
uses: Start9Labs/sdk@v1
|
||||
|
||||
- name: Checkout services repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Build the service package
|
||||
id: build
|
||||
run: |
|
||||
git submodule update --init --recursive
|
||||
start-sdk init
|
||||
make
|
||||
PACKAGE_ID=$(yq -oy ".id" manifest.*)
|
||||
echo "package_id=$PACKAGE_ID" >> $GITHUB_ENV
|
||||
printf "\n SHA256SUM: $(sha256sum ${PACKAGE_ID}.s9pk) \n"
|
||||
shell: bash
|
||||
|
||||
- name: Upload .s9pk
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.package_id }}.s9pk
|
||||
path: ./${{ env.package_id }}.s9pk
|
||||
72
.github/workflows/releaseService.yml
vendored
Normal file
72
.github/workflows/releaseService.yml
vendored
Normal file
@ -0,0 +1,72 @@
|
||||
name: Release Service
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*.*'
|
||||
|
||||
jobs:
|
||||
ReleasePackage:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- name: Prepare StartOS SDK
|
||||
uses: Start9Labs/sdk@v1
|
||||
|
||||
- name: Checkout services repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Build the service package
|
||||
run: |
|
||||
git submodule update --init --recursive
|
||||
start-sdk init
|
||||
make
|
||||
|
||||
- name: Setting package ID and title from the manifest
|
||||
id: package
|
||||
run: |
|
||||
echo "package_id=$(yq -oy ".id" manifest.*)" >> $GITHUB_ENV
|
||||
echo "package_title=$(yq -oy ".title" manifest.*)" >> $GITHUB_ENV
|
||||
shell: bash
|
||||
|
||||
- name: Generate sha256 checksum
|
||||
run: |
|
||||
PACKAGE_ID=${{ env.package_id }}
|
||||
printf "\n SHA256SUM: $(sha256sum ${PACKAGE_ID}.s9pk) \n"
|
||||
sha256sum ${PACKAGE_ID}.s9pk > ${PACKAGE_ID}.s9pk.sha256
|
||||
shell: bash
|
||||
|
||||
- name: Generate changelog
|
||||
run: |
|
||||
PACKAGE_ID=${{ env.package_id }}
|
||||
echo "## What's Changed" > change-log.txt
|
||||
yq -oy '.release-notes' manifest.* >> change-log.txt
|
||||
echo "## SHA256 Hash" >> change-log.txt
|
||||
echo '```' >> change-log.txt
|
||||
sha256sum ${PACKAGE_ID}.s9pk >> change-log.txt
|
||||
echo '```' >> change-log.txt
|
||||
shell: bash
|
||||
|
||||
- name: Create GitHub Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
tag_name: ${{ github.ref_name }}
|
||||
name: ${{ env.package_title }} ${{ github.ref_name }}
|
||||
prerelease: true
|
||||
body_path: change-log.txt
|
||||
files: |
|
||||
./${{ env.package_id }}.s9pk
|
||||
./${{ env.package_id }}.s9pk.sha256
|
||||
|
||||
- name: Publish to Registry
|
||||
env:
|
||||
S9USER: ${{ secrets.S9USER }}
|
||||
S9PASS: ${{ secrets.S9PASS }}
|
||||
S9REGISTRY: ${{ secrets.S9REGISTRY }}
|
||||
run: |
|
||||
if [[ -z "$S9USER" || -z "$S9PASS" || -z "$S9REGISTRY" ]]; then
|
||||
echo "Publish skipped: missing registry credentials."
|
||||
else
|
||||
start-sdk publish https://$S9USER:$S9PASS@$S9REGISTRY ${{ env.package_id }}.s9pk
|
||||
fi
|
||||
11
Dockerfile
11
Dockerfile
@ -1,12 +1,13 @@
|
||||
FROM recksato/robosats-client:v0.5.2-alpha
|
||||
FROM recksato/robosats-client:v0.8.1-alpha
|
||||
RUN apk add bash curl sudo tini wget yq; \
|
||||
rm -f /var/cache/apk/*
|
||||
|
||||
ENV APP_HOST robosats.embassy
|
||||
ENV APP_PORT 12596
|
||||
ENV TOR_PROXY_IP embassy
|
||||
ENV TOR_PROXY_PORT 9050
|
||||
ENV APP_HOST=robosats.embassy
|
||||
ENV APP_PORT=12596
|
||||
ENV TOR_PROXY_IP=embassy
|
||||
ENV TOR_PROXY_PORT=9050
|
||||
|
||||
ADD ./docker_entrypoint.sh /usr/local/bin/docker_entrypoint.sh
|
||||
RUN chmod a+x /usr/local/bin/*.sh
|
||||
RUN chmod a+x *.sh
|
||||
|
||||
|
||||
2
LICENSE
2
LICENSE
@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 Start9 Labs
|
||||
Copyright (c) 2025 Start9 Labs
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
18
Makefile
18
Makefile
@ -8,10 +8,10 @@ TS_FILES := $(shell find ./ -name \*.ts)
|
||||
all: verify
|
||||
|
||||
verify: $(PKG_ID).s9pk
|
||||
embassy-sdk verify s9pk $(PKG_ID).s9pk
|
||||
start-sdk verify s9pk $(PKG_ID).s9pk
|
||||
|
||||
install: $(PKG_ID).s9pk
|
||||
embassy-cli package install $(PKG_ID).s9pk
|
||||
start-cli package install $(PKG_ID).s9pk
|
||||
|
||||
clean:
|
||||
rm -rf docker-images
|
||||
@ -19,8 +19,16 @@ clean:
|
||||
rm -f $(PKG_ID).s9pk
|
||||
rm -f scripts/*.js
|
||||
|
||||
# for rebuilding just the arm image. will include docker-images/x86_64.tar into the s9pk if it exists
|
||||
arm: docker-images/aarch64.tar scripts/embassy.js
|
||||
start-sdk pack
|
||||
|
||||
# for rebuilding just the x86 image. will include docker-images/aarch64.tar into the s9pk if it exists
|
||||
x86: docker-images/x86_64.tar scripts/embassy.js
|
||||
start-sdk pack
|
||||
|
||||
scripts/embassy.js: $(TS_FILES)
|
||||
deno bundle scripts/embassy.ts scripts/embassy.js
|
||||
deno run --allow-read --allow-write --allow-env --allow-net scripts/bundle.ts
|
||||
|
||||
docker-images/x86_64.tar: Dockerfile docker_entrypoint.sh
|
||||
mkdir -p docker-images
|
||||
@ -30,5 +38,5 @@ docker-images/aarch64.tar: Dockerfile docker_entrypoint.sh
|
||||
mkdir -p docker-images
|
||||
docker buildx build --tag start9/$(PKG_ID)/main:$(PKG_VERSION) --platform=linux/arm64 --build-arg PLATFORM=arm64 -o type=docker,dest=docker-images/aarch64.tar .
|
||||
|
||||
$(PKG_ID).s9pk: manifest.yaml instructions.md LICENSE icon.png scripts/embassy.js docker-images/aarch64.tar docker-images/x86_64.tar
|
||||
embassy-sdk pack
|
||||
$(PKG_ID).s9pk: manifest.yaml instructions.md LICENSE icon.png scripts/embassy.js docker-images/x86_64.tar docker-images/aarch64.tar
|
||||
start-sdk pack
|
||||
|
||||
14
README.md
14
README.md
@ -1,5 +1,5 @@
|
||||
# Wrapper for RoboSats
|
||||
RoboSats is a simple and private bitcoin exchange
|
||||
A simple and private Lightning P2P exchange you can use directly from StartOS.
|
||||
|
||||
## Dependencies
|
||||
- [docker](https://docs.docker.com/get-docker)
|
||||
@ -7,7 +7,7 @@ RoboSats is a simple and private bitcoin exchange
|
||||
- [yq](https://mikefarah.gitbook.io/yq)
|
||||
- [deno](https://deno.land/)
|
||||
- [make](https://www.gnu.org/software/make/)
|
||||
- [embassy-sdk](https://github.com/Start9Labs/start-os/tree/master/backend)
|
||||
- [start-sdk](https://github.com/Start9Labs/start-os/tree/master/backend)
|
||||
|
||||
## Build enviroment
|
||||
Prepare your StartOS build enviroment. In this example we are using Ubuntu 20.04.
|
||||
@ -46,12 +46,12 @@ curl https://sh.rustup.rs -sSf | sh
|
||||
# Choose nr 1 (default install)
|
||||
source $HOME/.cargo/env
|
||||
```
|
||||
8. Build and install embassy-sdk
|
||||
8. Build and install start-sdk
|
||||
```
|
||||
cd ~/ && git clone --recursive https://github.com/Start9Labs/start-os.git
|
||||
cd start-os/backend/
|
||||
./install-sdk.sh
|
||||
embassy-sdk init
|
||||
start-sdk init
|
||||
```
|
||||
Now you are ready to build your **robosats** service
|
||||
|
||||
@ -59,7 +59,7 @@ Now you are ready to build your **robosats** service
|
||||
Clone the project locally.
|
||||
|
||||
```
|
||||
git clone https://github.com/kn0wmad/robosats-wrapper.git
|
||||
git clone https://github.com/Start9Labs/robosats-startos.git
|
||||
cd robosats-wrapper
|
||||
```
|
||||
|
||||
@ -75,9 +75,9 @@ Run the following commands to determine successful install:
|
||||
> :information_source: Change <SERVER-NAME>.local to your Start9 server address
|
||||
|
||||
```
|
||||
embassy-cli auth login
|
||||
start-cli auth login
|
||||
#Enter your Start9 server master password
|
||||
embassy-cli --host https://<SERVER-NAME>.local package install robosats.s9pk
|
||||
start-cli --host https://<SERVER-NAME>.local package install robosats.s9pk
|
||||
```
|
||||
**Tip:** You can also install the robosats.s9pk using **Sideload Service** under the **System > Settings** section.
|
||||
## Verify Install
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
# Welcome to RoboSats!
|
||||
A simple and private Lightning P2P exchange you can use directly from StartOS.
|
||||
|
||||
A simple and private bitcoin exchange you can use right here on your Embassy.
|
||||
|
||||
You can find detailed documentation on how to use RoboSats by [Clicking here](https://learn.robosats.com/)
|
||||
## Basic Usage Instructions
|
||||
|
||||
You can find a quick start guide, tutorial videos, and detailed documentation at [Learn RoboSats](https://learn.robosats.org/).
|
||||
## Basic Use
|
||||
1. Open RoboSats by using the `LAUNCH UI` button.
|
||||
2. For the first time using RoboSats, you will be provided a robot token.
|
||||
3. You can save this token on the RoboSats service config screen if you need to persist your session.
|
||||
2. For the first time using RoboSats, you will be provided a robot token (a unique, transient identifier) - you can create as many of these as you'd like.
|
||||
|
||||
**Note: It is strongly recommended to use a new robot every time when using RoboSats.**
|
||||
**Note: Robots are saved in your "garage." It is strongly recommended to use a new robot every time you start a new exchange.**
|
||||
@ -1,24 +1,27 @@
|
||||
id: robosats
|
||||
id: robosats
|
||||
title: "RoboSats"
|
||||
version: 0.5.2
|
||||
version: 0.8.1
|
||||
release-notes: |
|
||||
* Updated to v0.5.2-alpha [Release Notes](https://github.com/Reckless-Satoshi/robosats/releases/tag/v0.5.2-alpha)
|
||||
* Updated to RoboSats v0.8.1-alpha [Release Notes](https://github.com/RoboSats/robosats/releases/tag/v0.8.1-alpha)
|
||||
* Brand new mobile view
|
||||
* New in-app private notifications system using nostr
|
||||
* Revertible payments warning
|
||||
license: mit
|
||||
wrapper-repo: "https://github.com/kn0wmad/robosats-wrapper"
|
||||
upstream-repo: "https://github.com/Reckless-Satoshi/robosats"
|
||||
support-site: "https://github.com/Reckless-Satoshi/robosats/issues"
|
||||
marketing-site: "https://learn.robosats.com/"
|
||||
donation-url: "https://learn.robosats.com/contribute/donate/"
|
||||
wrapper-repo: "https://github.com/Start9Labs/robosats-startos"
|
||||
upstream-repo: "https://github.com/RoboSats/robosats"
|
||||
support-site: "https://github.com/Start9Labs/robosats-startos/issues"
|
||||
marketing-site: "https://learn.robosats.org/"
|
||||
donation-url: "https://robosats.org/contribute/donate/"
|
||||
# The series of commands to build the project into an s9pk for arm64/v8. In this case we are using a Makefile with the simple build command "make".
|
||||
build: ["make"]
|
||||
# Human readable descriptors for the service. These are used throughout the StartOS user interface, primarily in the marketplace.
|
||||
description:
|
||||
# This is the first description visible to the user in the marketplace.
|
||||
short: A simple and private bitcoin exchange
|
||||
short: A simple and private p2p bitcoin exchange
|
||||
# This description will display with additional details in the service's individual marketplace page
|
||||
long: |
|
||||
RoboSats is a simple and private way to exchange bitcoin for national currencies. Robosats simplifies the peer-to-peer user experience and uses lightning hold invoices to minimize custody and trust requirements. The deterministically generated avatars help users stick to best privacy practices.
|
||||
# These assets are static files necessary for packaging the service for Start9 (into an s9pk). Each value is a path to the specified asset. If an asset is missing from this list, or otherwise denoted, it will be defaulted to the values denoted below.
|
||||
# These assets are static files necessary for packaging the service for Start9 (into an s9pk). Each value is a path to the specified asset. If an asset is missing from this list, or otherwise denoted, it will be defaulted to the values denoted below.
|
||||
assets:
|
||||
# Default = LICENSE.md
|
||||
license: LICENSE
|
||||
@ -34,18 +37,14 @@ main:
|
||||
args: []
|
||||
mounts:
|
||||
main: /root
|
||||
# Health checks
|
||||
health-checks:
|
||||
# Health checks
|
||||
health-checks:
|
||||
web-ui:
|
||||
name: Web Interface
|
||||
success-message: The RoboSats UI is ready to visit in a web browser
|
||||
success-message: The RoboSats UI is ready
|
||||
type: script
|
||||
config:
|
||||
get:
|
||||
type: script
|
||||
set:
|
||||
type: script
|
||||
# properties:
|
||||
config: ~
|
||||
# properties:
|
||||
# type: script
|
||||
# This denotes any data, asset, or pointer volumes that should be connected when the "docker run" command is invoked
|
||||
volumes:
|
||||
@ -59,11 +58,15 @@ interfaces:
|
||||
# A human readable name for display in the UI
|
||||
name: User Interface
|
||||
# A descriptive description of what the interface does
|
||||
description: A simple user interface that is expected to display the text "Hello Word"
|
||||
description: Your RoboSats Tor Hidden Service address
|
||||
tor-config:
|
||||
# Port mappings are from the external port to the internal container port
|
||||
# Port mappings are from the external port to the internal container port
|
||||
port-mapping:
|
||||
80: "12596"
|
||||
lan-config:
|
||||
443:
|
||||
ssl: true
|
||||
internal: 12596
|
||||
# Port mappings are from the external port to the internal container port
|
||||
# Denotes if the service has a user interface to display
|
||||
ui: true
|
||||
@ -73,8 +76,8 @@ interfaces:
|
||||
- http
|
||||
dependencies: {}
|
||||
alerts:
|
||||
start: |
|
||||
ATTENTION: Your browser must have Tor support to use this service.
|
||||
start: #|
|
||||
#ATTENTION: Your browser must have Tor support to use this service.
|
||||
# Specifies how backups should be run for this service. The default EmbassyOS provided option is to use the duplicity backup library on a system image (compat)
|
||||
backup:
|
||||
create:
|
||||
@ -82,10 +85,10 @@ backup:
|
||||
type: docker
|
||||
# The docker image to use. In this case, a pre-loaded system image called compat
|
||||
image: compat
|
||||
# Required if the action uses a system image. The default value is false.
|
||||
system: true
|
||||
# Required if the action uses a system image. The default value is false.
|
||||
system: true
|
||||
# The executable to run the command to begin the backup create process
|
||||
entrypoint: compat
|
||||
entrypoint: compat
|
||||
# Arguments to pass into the entrypoint executable. In this example, the full command run will be: `compat duplicity hello-world /mnt/backup /root/data`
|
||||
args:
|
||||
- duplicity
|
||||
@ -94,9 +97,9 @@ backup:
|
||||
# For duplicity, the backup mount point needs to be something other than `/root`, so we default to `/root/data`
|
||||
- /root/data
|
||||
mounts:
|
||||
# BACKUP is the default volume that is used for backups. This is whatever backup drive is mounted to the device, or a network filesystem.
|
||||
# BACKUP is the default volume that is used for backups. This is whatever backup drive is mounted to the device, or a network filesystem.
|
||||
# The value here donates where the mount point will be. The backup drive is mounted to this location.
|
||||
BACKUP: "/mnt/backup"
|
||||
BACKUP: "/mnt/backup"
|
||||
main: "/root/data"
|
||||
# The action to execute the backup restore functionality. Details for the keys below are the same as above.
|
||||
restore:
|
||||
|
||||
@ -1,8 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# install yq
|
||||
wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq &&\
|
||||
chmod +x /usr/bin/yq
|
||||
|
||||
# install deno
|
||||
cargo install deno
|
||||
3
scripts/bundle.ts
Normal file
3
scripts/bundle.ts
Normal file
@ -0,0 +1,3 @@
|
||||
import { bundle } from "https://deno.land/x/emit@0.40.0/mod.ts";
|
||||
const result = await bundle("scripts/embassy.ts");
|
||||
await Deno.writeTextFile("scripts/embassy.js", result.code);
|
||||
@ -1 +1,2 @@
|
||||
export * from "https://deno.land/x/embassyd_sdk@v0.3.3.0.9/mod.ts";
|
||||
export * from "https://deno.land/x/embassyd_sdk@v0.3.3.0.11/mod.ts";
|
||||
export * from "https://deno.land/x/embassyd_sdk@v0.3.3.0.11/util.ts";
|
||||
|
||||
@ -21,12 +21,4 @@ export const getConfig: T.ExpectedExports.getConfig = compat.getConfig({
|
||||
"target": "lan-address",
|
||||
"interface": "main",
|
||||
},
|
||||
"rs-hash": {
|
||||
"type": "string",
|
||||
"name": "Robosats Unique Token",
|
||||
"description": "This is just a place that you can store your unique token if you choose. This is the nym identity that is randomly generated at boot for you on each startup.",
|
||||
"nullable": true,
|
||||
"copyable": true,
|
||||
"masked": false,
|
||||
}
|
||||
});
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { compat, types as T } from "../deps.ts";
|
||||
|
||||
export const migration: T.ExpectedExports.migration = compat.migrations
|
||||
.fromMapping({}, "0.5.2" );
|
||||
export const migration: T.ExpectedExports.migration =
|
||||
compat.migrations.fromMapping({}, "0.8.1");
|
||||
|
||||
Reference in New Issue
Block a user