mirror of
https://github.com/RoboSats/robosats-startos.git
synced 2026-01-27 05:05:41 +00:00
Compare commits
3 Commits
Update/v0.
...
update/v0.
| Author | SHA1 | Date | |
|---|---|---|---|
| dd634e36ce | |||
| c100ea824a | |||
| 8e230aa0a8 |
37
.github/workflows/buildService.yml
vendored
37
.github/workflows/buildService.yml
vendored
@ -1,37 +0,0 @@
|
|||||||
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
72
.github/workflows/releaseService.yml
vendored
@ -1,72 +0,0 @@
|
|||||||
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,13 +1,12 @@
|
|||||||
FROM recksato/robosats-client:v0.7.7-alpha
|
FROM recksato/robosats-client:v0.5.3-alpha
|
||||||
RUN apk add bash curl sudo tini wget yq; \
|
RUN apk add bash curl sudo tini wget yq; \
|
||||||
rm -f /var/cache/apk/*
|
rm -f /var/cache/apk/*
|
||||||
|
|
||||||
ENV APP_HOST=robosats.embassy
|
ENV APP_HOST robosats.embassy
|
||||||
ENV APP_PORT=12596
|
ENV APP_PORT 12596
|
||||||
ENV TOR_PROXY_IP=embassy
|
ENV TOR_PROXY_IP embassy
|
||||||
ENV TOR_PROXY_PORT=9050
|
ENV TOR_PROXY_PORT 9050
|
||||||
|
|
||||||
ADD ./docker_entrypoint.sh /usr/local/bin/docker_entrypoint.sh
|
ADD ./docker_entrypoint.sh /usr/local/bin/docker_entrypoint.sh
|
||||||
RUN chmod a+x /usr/local/bin/*.sh
|
RUN chmod a+x /usr/local/bin/*.sh
|
||||||
RUN chmod a+x *.sh
|
RUN chmod a+x *.sh
|
||||||
|
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2025 Start9 Labs
|
Copyright (c) 2022 Start9 Labs
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
13
Makefile
13
Makefile
@ -14,22 +14,13 @@ install: $(PKG_ID).s9pk
|
|||||||
start-cli package install $(PKG_ID).s9pk
|
start-cli package install $(PKG_ID).s9pk
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
docker run --rm -it -v "$(shell pwd)"/configurator:/home/rust/src messense/rust-musl-cross:x86_64-musl cargo clean -q
|
|
||||||
rm -rf docker-images
|
rm -rf docker-images
|
||||||
rm -f image.tar
|
rm -f image.tar
|
||||||
rm -f $(PKG_ID).s9pk
|
rm -f $(PKG_ID).s9pk
|
||||||
rm -f scripts/*.js
|
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)
|
scripts/embassy.js: $(TS_FILES)
|
||||||
deno run --allow-read --allow-write --allow-env --allow-net scripts/bundle.ts
|
deno bundle scripts/embassy.ts scripts/embassy.js
|
||||||
|
|
||||||
docker-images/x86_64.tar: Dockerfile docker_entrypoint.sh
|
docker-images/x86_64.tar: Dockerfile docker_entrypoint.sh
|
||||||
mkdir -p docker-images
|
mkdir -p docker-images
|
||||||
@ -39,5 +30,5 @@ docker-images/aarch64.tar: Dockerfile docker_entrypoint.sh
|
|||||||
mkdir -p docker-images
|
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 .
|
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/x86_64.tar 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
|
||||||
start-sdk pack
|
start-sdk pack
|
||||||
|
|||||||
@ -59,7 +59,7 @@ Now you are ready to build your **robosats** service
|
|||||||
Clone the project locally.
|
Clone the project locally.
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/Start9Labs/robosats-startos.git
|
git clone https://github.com/kn0wmad/robosats-wrapper.git
|
||||||
cd robosats-wrapper
|
cd robosats-wrapper
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,7 @@ A simple and private Lightning P2P exchange you can use directly from StartOS.
|
|||||||
You can find a quick start guide, tutorial videos, and detailed documentation at [Learn RoboSats](https://learn.robosats.com/).
|
You can find a quick start guide, tutorial videos, and detailed documentation at [Learn RoboSats](https://learn.robosats.com/).
|
||||||
## Basic Use
|
## Basic Use
|
||||||
1. Open RoboSats by using the `LAUNCH UI` button.
|
1. Open RoboSats by using the `LAUNCH UI` button.
|
||||||
|
|
||||||
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.
|
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: Robots are saved in your "garage." It is strongly recommended to use a new robot every time you start a new exchange.**
|
**IMPORTANT: Robots are saved in your "Garage." It is strongly recommended to use a new robot every time you start a new exchange! Please be aware that your Robot Garage will be different on the Tor (`.onion`) and LAN (`.local`) interfaces. Be sure to follow your trade to completion on the same interface, as it will not be synced between the two.**
|
||||||
@ -1,14 +1,17 @@
|
|||||||
id: robosats
|
id: robosats
|
||||||
title: "RoboSats"
|
title: "RoboSats"
|
||||||
version: 0.7.7
|
version: 0.5.3
|
||||||
release-notes: |
|
release-notes: |
|
||||||
* Updated to RoboSats v0.7.7-alpha [Release Notes](https://github.com/RoboSats/robosats/releases/tag/v0.7.6-alpha)
|
* Updated to v0.5.3-alpha [Release Notes](https://github.com/RoboSats/robosats/releases/tag/v0.5.3-alpha)
|
||||||
|
* IMPORTANT: Versions previous to v0.5.1 will no longer be compatible
|
||||||
|
* Remove old naming conventions
|
||||||
|
* Remove redundant config option (replaced by Robot Garage in UI)
|
||||||
license: mit
|
license: mit
|
||||||
wrapper-repo: "https://github.com/Start9Labs/robosats-startos"
|
wrapper-repo: "https://github.com/kn0wmad/robosats-wrapper"
|
||||||
upstream-repo: "https://github.com/RoboSats/robosats"
|
upstream-repo: "https://github.com/Reckless-Satoshi/robosats"
|
||||||
support-site: "https://github.com/Start9Labs/robosats-startos/issues"
|
support-site: "https://github.com/Reckless-Satoshi/robosats/issues"
|
||||||
marketing-site: "https://learn.robosats.org/"
|
marketing-site: "https://learn.robosats.com/"
|
||||||
donation-url: "https://robosats.org/contribute/donate/"
|
donation-url: "https://learn.robosats.com/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".
|
# 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"]
|
build: ["make"]
|
||||||
# Human readable descriptors for the service. These are used throughout the StartOS user interface, primarily in the marketplace.
|
# Human readable descriptors for the service. These are used throughout the StartOS user interface, primarily in the marketplace.
|
||||||
@ -18,7 +21,7 @@ description:
|
|||||||
# This description will display with additional details in the service's individual marketplace page
|
# This description will display with additional details in the service's individual marketplace page
|
||||||
long: |
|
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.
|
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:
|
assets:
|
||||||
# Default = LICENSE.md
|
# Default = LICENSE.md
|
||||||
license: LICENSE
|
license: LICENSE
|
||||||
@ -34,14 +37,14 @@ main:
|
|||||||
args: []
|
args: []
|
||||||
mounts:
|
mounts:
|
||||||
main: /root
|
main: /root
|
||||||
# Health checks
|
# Health checks
|
||||||
health-checks:
|
health-checks:
|
||||||
web-ui:
|
web-ui:
|
||||||
name: Web Interface
|
name: Web Interface
|
||||||
success-message: The RoboSats UI is ready
|
success-message: The RoboSats UI is ready
|
||||||
type: script
|
type: script
|
||||||
config: ~
|
config: ~
|
||||||
# properties:
|
# properties:
|
||||||
# type: script
|
# type: script
|
||||||
# This denotes any data, asset, or pointer volumes that should be connected when the "docker run" command is invoked
|
# This denotes any data, asset, or pointer volumes that should be connected when the "docker run" command is invoked
|
||||||
volumes:
|
volumes:
|
||||||
@ -55,16 +58,15 @@ interfaces:
|
|||||||
# A human readable name for display in the UI
|
# A human readable name for display in the UI
|
||||||
name: User Interface
|
name: User Interface
|
||||||
# A descriptive description of what the interface does
|
# A descriptive description of what the interface does
|
||||||
description: Your RoboSats Tor Hidden Service address
|
description: Your RoboSats UI addresses
|
||||||
tor-config:
|
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:
|
port-mapping:
|
||||||
80: "12596"
|
80: "12596"
|
||||||
#lan-config:
|
lan-config:
|
||||||
# 443:
|
443:
|
||||||
# ssl: true
|
ssl: true
|
||||||
# internal: 12596
|
internal: 12596
|
||||||
# Port mappings are from the external port to the internal container port
|
|
||||||
# Denotes if the service has a user interface to display
|
# Denotes if the service has a user interface to display
|
||||||
ui: true
|
ui: true
|
||||||
# Denotes the protocol specifications used by this interface
|
# Denotes the protocol specifications used by this interface
|
||||||
@ -72,9 +74,7 @@ interfaces:
|
|||||||
- tcp
|
- tcp
|
||||||
- http
|
- http
|
||||||
dependencies: {}
|
dependencies: {}
|
||||||
alerts:
|
# alerts:
|
||||||
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)
|
# 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:
|
backup:
|
||||||
create:
|
create:
|
||||||
@ -82,10 +82,10 @@ backup:
|
|||||||
type: docker
|
type: docker
|
||||||
# The docker image to use. In this case, a pre-loaded system image called compat
|
# The docker image to use. In this case, a pre-loaded system image called compat
|
||||||
image: compat
|
image: compat
|
||||||
# Required if the action uses a system image. The default value is false.
|
# Required if the action uses a system image. The default value is false.
|
||||||
system: true
|
system: true
|
||||||
# The executable to run the command to begin the backup create process
|
# 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`
|
# 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:
|
args:
|
||||||
- duplicity
|
- duplicity
|
||||||
@ -94,9 +94,9 @@ backup:
|
|||||||
# For duplicity, the backup mount point needs to be something other than `/root`, so we default to `/root/data`
|
# For duplicity, the backup mount point needs to be something other than `/root`, so we default to `/root/data`
|
||||||
- /root/data
|
- /root/data
|
||||||
mounts:
|
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.
|
# 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"
|
main: "/root/data"
|
||||||
# The action to execute the backup restore functionality. Details for the keys below are the same as above.
|
# The action to execute the backup restore functionality. Details for the keys below are the same as above.
|
||||||
restore:
|
restore:
|
||||||
|
|||||||
8
prepare.sh
Executable file
8
prepare.sh
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/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
|
||||||
@ -1,3 +0,0 @@
|
|||||||
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,2 +1 @@
|
|||||||
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.9/mod.ts";
|
||||||
export * from "https://deno.land/x/embassyd_sdk@v0.3.3.0.11/util.ts";
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { compat, types as T } from "../deps.ts";
|
import { compat, types as T } from "../deps.ts";
|
||||||
|
|
||||||
export const migration: T.ExpectedExports.migration =
|
export const migration: T.ExpectedExports.migration = compat.migrations
|
||||||
compat.migrations.fromMapping({}, "0.7.7");
|
.fromMapping({}, "0.5.3" );
|
||||||
|
|||||||
Reference in New Issue
Block a user